From: David Woodhouse Date: Sat, 7 Jan 2023 13:54:07 +0000 (+0000) Subject: hw/xen: Map guest XENSTORE_PFN grant in emulated Xenstore X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7ae2ac392135aeaf19db06a1ce397bc46493d83a;p=people%2Fpauldu%2Fqemu.git hw/xen: Map guest XENSTORE_PFN grant in emulated Xenstore Signed-off-by: David Woodhouse --- diff --git a/hw/i386/kvm/xen_xenstore.c b/hw/i386/kvm/xen_xenstore.c index 7bd5970527..a77ab30816 100644 --- a/hw/i386/kvm/xen_xenstore.c +++ b/hw/i386/kvm/xen_xenstore.c @@ -21,6 +21,7 @@ #include "hw/sysbus.h" #include "hw/xen/xen.h" +#include "hw/xen/xen_backend_ops.h" #include "xen_overlay.h" #include "xen_evtchn.h" #include "xen_xenstore.h" @@ -30,13 +31,11 @@ #include "standard-headers/xen/io/xs_wire.h" #include "standard-headers/xen/event_channel.h" +#include "standard-headers/xen/grant_table.h" #define TYPE_XEN_XENSTORE "xen-xenstore" OBJECT_DECLARE_SIMPLE_TYPE(XenXenstoreState, XEN_XENSTORE) -#define XEN_PAGE_SHIFT 12 -#define XEN_PAGE_SIZE (1ULL << XEN_PAGE_SHIFT) - #define ENTRIES_PER_FRAME_V1 (XEN_PAGE_SIZE / sizeof(grant_entry_v1_t)) #define ENTRIES_PER_FRAME_V2 (XEN_PAGE_SIZE / sizeof(grant_entry_v2_t)) @@ -59,6 +58,8 @@ struct XenXenstoreState { evtchn_port_t guest_port; evtchn_port_t be_port; struct xenevtchn_handle *eh; + struct xengntdev_handle *gt; + void *granted_xs; }; struct XenXenstoreState *xen_xenstore_singleton; @@ -461,5 +462,11 @@ int xen_xenstore_reset(void) } s->be_port = err; + s->gt = qemu_xen_gnttab_open(); + uint32_t xs_gntref = GNTTAB_RESERVED_XENSTORE; + s->granted_xs = qemu_xen_gnttab_map_refs(s->gt, 1, xen_domid, + &xs_gntref, PROT_READ|PROT_WRITE); + printf("Granted XS %p\n", s->granted_xs); + return 0; }