From nobody Tue Nov 11 08:50:49 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=1569324826; cv=none; d=zoho.com; s=zohoarc; b=hO2zrXtFssSKOPEv1xsUPycilt0oGCL16gUShm1tOWoov6z0eWy53haQzKBRn1RezaGgg8EFL8Heg4i0ag0pWiPrBiuYc2XkYn32hVJ6MDmIN0dSvSJgcZezKb84v5SQzOxVDQ7zJ7Dhigpp0bX6WQPMSzHwT0nZ6GaAmHkklEg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569324826; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=njOOqtqS3fHCw8LapiLvTM54vzVEBhfSmgdkNMXquCI=; b=ZE84gWRX7FrwUeifSa2rumUNBImx8nFX1KXrjDaUSSyoosceUcvOTudk1V6dAQgJ/06c6NGWniUGAD/058c/jlrFCUc6ylDCFG9RQPX8GtqG0+4Omz7wgG4DEGmeKx6S83t81yV6cHL5OC06OBQbYTS73oTwnPhKW29qN724FpA= 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 156932482607549.510362096274775; Tue, 24 Sep 2019 04:33:46 -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 1iCj2N-00074o-1B; Tue, 24 Sep 2019 11:31:19 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iCj2L-00073x-Dz for xen-devel@lists.xenproject.org; Tue, 24 Sep 2019 11:31:17 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by localhost (Halon) with ESMTPS id d21338e0-debe-11e9-8c01-bc764e2007e4; Tue, 24 Sep 2019 11:31:16 +0000 (UTC) X-Inumbo-ID: d21338e0-debe-11e9-8c01-bc764e2007e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1569324677; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4DlM4GRbNaYBiA0hfv5e/nizzIbkDO3SKOfE5q0RfJQ=; b=HC9HkKheUmzAStW/gFErAYnNVhsovCNTvOzvHfVKjV58bTdyDdthW3XR VWp8NpcdWCNS93zwru1XkZnms+O+Cen2F3AJGsIC7TozNGNDiDdTqFd4H Dz6NiFxHHSeswljHNQt+7b7NdV97bhg3VJfl99KK5YRjtT4G8FoOwefam E=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@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 (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@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 (esa2.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=esa2.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: 1XRKyC5jpJskBf3BmVHmqckP+HFJpoLHcRBZj09B9rUkoWyO61tZYq/rjJ1wWmylTj9dpfsT+q 1h0AslIyvDt+/Xh4TEXaZUT9WfjoiJtgZr/AxUi3RFLy/kN5hkZLz2AZZbZLWWAh4nRT5l8q7G p4aaCyoshFtDo6jhq0ZV8eef7SSDWQDhHIn2aVU+hCaPPtBS05J4ol7oydPZ4os4GdI88ga4wV McEUZh2y3mIuGmptqkkncJlMz+e5298KDkDzVsPXfo7Xg/uTm1ARMidzXAJSs13oJd4acjbRTS lis= X-SBRS: 2.7 X-MesageID: 5977602 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,543,1559534400"; d="scan'208";a="5977602" From: Anthony PERARD To: Date: Tue, 24 Sep 2019 12:30:26 +0100 Message-ID: <20190924113026.255634-8-anthony.perard@citrix.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190924113026.255634-1-anthony.perard@citrix.com> References: <20190924113026.255634-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PULL 7/7] 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 , xen-devel@lists.xenproject.org, Peter Maydell 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 Message-Id: <20190918115745.39006-1-paul.durrant@citrix.com> Signed-off-by: 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 Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel