From nobody Tue Feb 10 19:49:59 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1678209511; cv=none; d=zohomail.com; s=zohoarc; b=cIbRpnhXZcnbXZV0MoAFku0gtJZ2EuMdOJQDd01tN/5C61Oa5JjJDqlv4OMgrJuHkp6KGlyO6PgsIa3FpgWSvdGUEl1PG4VCRMFH2OucvAUHDWdskpBsKvVPuWBQ4ezioGUGIj+jm8WpLtNjieegL4641ky/JWxGWrUZoScrL3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678209511; h=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; bh=sITHLK7IN7D/Ke5/pulzgo4hxU3UNITjLOK0n4RQKaE=; b=egrmjG+khJgkiskN04164VtuTBiDq8LJx2g32HgAq4d6qxljLa5/W0StfOGs6QSkU352S4RdMeSGM3Ew3ceCPhHQZaFBg+4mYSt8i4AMuxxz1wGoJ+wpUBeVAJKdXfOlHaS/AcxZ+0Yj+zyku2Ytmlv6JfRJttrJ+k6eCkOfs1o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) 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 1678209511424483.15162984653193; Tue, 7 Mar 2023 09:18:31 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.507655.781499 (Exim 4.92) (envelope-from ) id 1pZawz-00029n-UF; Tue, 07 Mar 2023 17:18:09 +0000 Received: by outflank-mailman (output) from mailman id 507655.781499; Tue, 07 Mar 2023 17:18:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pZawz-00026u-Gy; Tue, 07 Mar 2023 17:18:09 +0000 Received: by outflank-mailman (input) for mailman id 507655; Tue, 07 Mar 2023 17:18:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pZawx-0000bA-AF for xen-devel@lists.xenproject.org; Tue, 07 Mar 2023 17:18:07 +0000 Received: from casper.infradead.org (casper.infradead.org [2001:8b0:10b:1236::1]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 03c56814-bd0c-11ed-a550-8520e6686977; Tue, 07 Mar 2023 18:18:02 +0100 (CET) Received: from i7.infradead.org ([2001:8b0:10b:1:21e:67ff:fecb:7a92]) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1pZawk-006ayB-Kf; Tue, 07 Mar 2023 17:17:55 +0000 Received: from dwoodhou by i7.infradead.org with local (Exim 4.96 #2 (Red Hat Linux)) id 1pZawk-009ci9-24; Tue, 07 Mar 2023 17:17:54 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list X-Inumbo-ID: 03c56814-bd0c-11ed-a550-8520e6686977 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=sITHLK7IN7D/Ke5/pulzgo4hxU3UNITjLOK0n4RQKaE=; b=bEe0RiT72oZQRlTpXZ5I6UDLdp rReuFL+E3+REG7gNLUVp91C/JlhSs3MJ2QfwyRcP29BwvLQMqTvthRYqb2dthi5bxoW/DtXMxpUY6 yJbCDNYYiY3bEJMeEGyjZ1LVrK+4LAEsZB1B/A/2XTRhN0CZ3gBx8i5r+jTwea0OqZrxD3mpfagoJ +8yv8VTwhSCCWFHWdCCCl0kfUDf7YxQ4wZXGRTkKcdWFKzze4791sJ/mBk4VGWLkzkj0mFukpwITH z/89HD31QNVbKA5OLTuriygYSX5W175c+hsBlHRxr5+Od54HUGY28OdENK4I6+ZIfG4+ZEIwPWgEf afoEJSwQ==; From: David Woodhouse To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Paul Durrant , Joao Martins , Ankur Arora , Stefano Stabellini , vikram.garhwal@amd.com, Anthony Perard , xen-devel@lists.xenproject.org, Juan Quintela , "Dr . David Alan Gilbert" , Peter Maydell Subject: [PATCH v2 24/27] hw/xen: Implement soft reset for emulated gnttab Date: Tue, 7 Mar 2023 17:17:47 +0000 Message-Id: <20230307171750.2293175-25-dwmw2@infradead.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230307171750.2293175-1-dwmw2@infradead.org> References: <20230307171750.2293175-1-dwmw2@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: David Woodhouse X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html X-ZohoMail-DKIM: pass (identity @infradead.org) X-ZM-MESSAGEID: 1678209512321100001 Content-Type: text/plain; charset="utf-8" From: David Woodhouse This is only part of it; we will also need to get the PV back end drivers to tear down their own mappings (or do it for them, but they kind of need to stop using the pointers too). Some more work on the actual PV back ends and xen-bus code is going to be needed to really make soft reset and migration fully functional, and this part is the basis for that. Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- hw/i386/kvm/xen_gnttab.c | 26 ++++++++++++++++++++++++-- hw/i386/kvm/xen_gnttab.h | 1 + target/i386/kvm/xen-emu.c | 5 +++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/hw/i386/kvm/xen_gnttab.c b/hw/i386/kvm/xen_gnttab.c index 2bf91d36c0..21c30e3659 100644 --- a/hw/i386/kvm/xen_gnttab.c +++ b/hw/i386/kvm/xen_gnttab.c @@ -72,13 +72,11 @@ static void xen_gnttab_realize(DeviceState *dev, Error = **errp) error_setg(errp, "Xen grant table support is for Xen emulation"); return; } - s->nr_frames =3D 0; s->max_frames =3D kvm_xen_get_gnttab_max_frames(); memory_region_init_ram(&s->gnt_frames, OBJECT(dev), "xen:grant_table", XEN_PAGE_SIZE * s->max_frames, &error_abort); memory_region_set_enabled(&s->gnt_frames, true); s->entries.v1 =3D memory_region_get_ram_ptr(&s->gnt_frames); - memset(s->entries.v1, 0, XEN_PAGE_SIZE * s->max_frames); =20 /* Create individual page-sizes aliases for overlays */ s->gnt_aliases =3D (void *)g_new0(MemoryRegion, s->max_frames); @@ -90,8 +88,11 @@ static void xen_gnttab_realize(DeviceState *dev, Error *= *errp) s->gnt_frame_gpas[i] =3D INVALID_GPA; } =20 + s->nr_frames =3D 0; + memset(s->entries.v1, 0, XEN_PAGE_SIZE * s->max_frames); s->entries.v1[GNTTAB_RESERVED_XENSTORE].flags =3D GTF_permit_access; s->entries.v1[GNTTAB_RESERVED_XENSTORE].frame =3D XEN_SPECIAL_PFN(XENS= TORE); + qemu_mutex_init(&s->gnt_lock); =20 xen_gnttab_singleton =3D s; @@ -523,3 +524,24 @@ static struct gnttab_backend_ops emu_gnttab_backend_op= s =3D { .unmap =3D xen_be_gnttab_unmap, }; =20 +int xen_gnttab_reset(void) +{ + XenGnttabState *s =3D xen_gnttab_singleton; + + if (!s) { + return -ENOTSUP; + } + + QEMU_LOCK_GUARD(&s->gnt_lock); + + s->nr_frames =3D 0; + + memset(s->entries.v1, 0, XEN_PAGE_SIZE * s->max_frames); + + s->entries.v1[GNTTAB_RESERVED_XENSTORE].flags =3D GTF_permit_access; + s->entries.v1[GNTTAB_RESERVED_XENSTORE].frame =3D XEN_SPECIAL_PFN(XENS= TORE); + + memset(s->map_track, 0, s->max_frames * ENTRIES_PER_FRAME_V1); + + return 0; +} diff --git a/hw/i386/kvm/xen_gnttab.h b/hw/i386/kvm/xen_gnttab.h index 3bdbe96191..ee215239b0 100644 --- a/hw/i386/kvm/xen_gnttab.h +++ b/hw/i386/kvm/xen_gnttab.h @@ -13,6 +13,7 @@ #define QEMU_XEN_GNTTAB_H =20 void xen_gnttab_create(void); +int xen_gnttab_reset(void); int xen_gnttab_map_page(uint64_t idx, uint64_t gfn); =20 struct gnttab_set_version; diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c index bad3131d08..0bb6c601c9 100644 --- a/target/i386/kvm/xen-emu.c +++ b/target/i386/kvm/xen-emu.c @@ -1406,6 +1406,11 @@ int kvm_xen_soft_reset(void) return err; } =20 + err =3D xen_gnttab_reset(); + if (err) { + return err; + } + err =3D xen_xenstore_reset(); if (err) { return err; --=20 2.39.0