From nobody Tue Nov 11 07:09:25 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1568807934; cv=none; d=zoho.com; s=zohoarc; b=bq6p3Pv4Qyf05krUN0/JB6MNWpwxnECeO7H35RihHEt/tjH9B+91rILBc2hy7QmhWWFPEOKuguSPVfdCXSeDTewNP1d3gCxW2MESUQTTVtKS9Ol/o+asG0Sl9yRIXKtKyywTHrZb7OBjhHSNbhYMJMNvxd4+AZh2pAvdvVhU+zU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568807934; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To:ARC-Authentication-Results; bh=m4rVEX0NoPoOz7RwdGmsLTtQVXZdnROwx0DyqTX3kP4=; b=FZ7IXHw8BEPEmk/L8t+hBjLjflp4yTqmxFXogO9aUrGFuD92j4ZqoFTCdA3GPkfMLRCOJUIqlw4Sb0Wd/2MHv8n+Ft9NcX1LdTjb8QQQMIl7RzEXNmqjtnfdBeAOkISMvzKnjxXi1A/lGvMZhFK41nA5euQIhPjpbJIvAiL0qsI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1568807934295214.41504226434586; Wed, 18 Sep 2019 04:58:54 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iAYaq-0000Na-Hc; Wed, 18 Sep 2019 11:57:56 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iAYap-0000Ms-0h for xen-devel@lists.xenproject.org; Wed, 18 Sep 2019 11:57:55 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 88a12ddc-da0b-11e9-962f-12813bfff9fa; Wed, 18 Sep 2019 11:57:48 +0000 (UTC) X-Inumbo-ID: 88a12ddc-da0b-11e9-962f-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1568807868; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=aPsmKiHtye2Xrg7pQcqeyGPyIVJnXtNBUKlRejZK/IQ=; b=a3gm0PVE62wsMaNUlLIz+W6aNIsKQBxBAtb8zm7sgUOx165CaPXy67Qj DC7LmvBndRpuc9NaZlDq7wGDnZuX1XbWilOeqV2PXPXlLR/+FLGmEqi4n RlB/400FVS3arkV2NRqx+hGb0evLgqSbS/7kmFhpuJDHKy9kciuFqMzRg 0=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=paul.durrant@citrix.com; spf=Pass smtp.mailfrom=Paul.Durrant@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of paul.durrant@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="paul.durrant@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa5.hc3370-68.iphmx.com: domain of Paul.Durrant@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="Paul.Durrant@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: irxgnCJQB21rk51r5OjEcjMnOjAkol6pP/3RKTGsPDLYXV1Ekd1b4JXRnVoG18Z7W6gzRBpV7U D9gkkd7EP9bpitJAFRlXpxV1ZjQuQLGoxH+XxW6Uv5FJwTdlhV+QVN6jRHw0X6t9PqihhzVM9O jFTN3kEtbDEHHqYI8FAdLHG3+zq3+LQK2+caBdL3H6A0FrNzRRtFzLJ/mcMbj/pBRlib/IsfWh rN9cGPscvrQyUGSIF8xXyIAcUn7zxzm+pqvn1MyHwO+aRBKovpYJH6M8/y5ZCJ2HQ8x+mSk2O2 PNA= X-SBRS: 2.7 X-MesageID: 5924842 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,520,1559534400"; d="scan'208";a="5924842" From: Paul Durrant To: , Date: Wed, 18 Sep 2019 12:57:44 +0100 Message-ID: <20190918115745.39006-1-paul.durrant@citrix.com> X-Mailer: git-send-email 2.20.1.2.gb21ebb671 MIME-Version: 1.0 Subject: [Xen-devel] [PATCH] xen-bus: only set the xen device frontend state if it is missing X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony Perard , Paul Durrant , Stefano Stabellini , Mark Syms Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Mark Syms Some toolstack implementations will set the frontend xenstore keys to Initialising which will then trigger the in guest PV drivers to begin initialising and some implementations will then set their state to Closing. If this has occurred then device realize must not overwrite the frontend keys as then the handshake will stall. Signed-off-by: Mark Syms Also avoid creating the frontend area if it already exists. Signed-off-by: Paul Durrant Reviewed-by: Anthony PERARD --- Cc: Stefano Stabellini Cc: Anthony Perard --- hw/xen/xen-bus.c | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index 55c157393d..c2ad22a42d 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -857,6 +857,13 @@ static void xen_device_frontend_changed(void *opaque) } } =20 +static bool xen_device_frontend_exists(XenDevice *xendev) +{ + enum xenbus_state state; + + return (xen_device_frontend_scanf(xendev, "state", "%u", &state) =3D= =3D 1); +} + static void xen_device_frontend_create(XenDevice *xendev, Error **errp) { XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); @@ -865,19 +872,25 @@ static void xen_device_frontend_create(XenDevice *xen= dev, Error **errp) =20 xendev->frontend_path =3D xen_device_get_frontend_path(xendev); =20 - perms[0].id =3D xendev->frontend_id; - perms[0].perms =3D XS_PERM_NONE; - perms[1].id =3D xenbus->backend_id; - perms[1].perms =3D XS_PERM_READ | XS_PERM_WRITE; + /* + * The frontend area may have already been created by a legacy + * toolstack. + */ + if (!xen_device_frontend_exists(xendev)) { + perms[0].id =3D xendev->frontend_id; + perms[0].perms =3D XS_PERM_NONE; + perms[1].id =3D xenbus->backend_id; + perms[1].perms =3D XS_PERM_READ | XS_PERM_WRITE; =20 - g_assert(xenbus->xsh); + g_assert(xenbus->xsh); =20 - xs_node_create(xenbus->xsh, XBT_NULL, xendev->frontend_path, perms, - ARRAY_SIZE(perms), &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to create frontend: "); - return; + xs_node_create(xenbus->xsh, XBT_NULL, xendev->frontend_path, perms, + ARRAY_SIZE(perms), &local_err); + if (local_err) { + error_propagate_prepend(errp, local_err, + "failed to create frontend: "); + return; + } } =20 xendev->frontend_state_watch =3D @@ -1290,12 +1303,14 @@ static void xen_device_realize(DeviceState *dev, Er= ror **errp) xen_device_backend_set_online(xendev, true); xen_device_backend_set_state(xendev, XenbusStateInitWait); =20 - xen_device_frontend_printf(xendev, "backend", "%s", - xendev->backend_path); - xen_device_frontend_printf(xendev, "backend-id", "%u", - xenbus->backend_id); + if (!xen_device_frontend_exists(xendev)) { + xen_device_frontend_printf(xendev, "backend", "%s", + xendev->backend_path); + xen_device_frontend_printf(xendev, "backend-id", "%u", + xenbus->backend_id); =20 - xen_device_frontend_set_state(xendev, XenbusStateInitialising, true); + xen_device_frontend_set_state(xendev, XenbusStateInitialising, tru= e); + } =20 xendev->exit.notify =3D xen_device_exit; qemu_add_exit_notifier(&xendev->exit); --=20 2.20.1.2.gb21ebb671 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel