[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/2] hw/xen: detect when running inside stubdomain
On 19/2/24 19:16, Marek Marczykowski-Górecki wrote: Introduce global xen_is_stubdomain variable when qemu is running inside a stubdomain instead of dom0. This will be relevant for subsequent patches, as few things like accessing PCI config space need to be done differently. Signed-off-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx> --- hw/xen/xen-legacy-backend.c | 15 +++++++++++++++ include/hw/xen/xen.h | 1 + system/globals.c | 1 + 3 files changed, 17 insertions(+) diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h index 37ecc91fc3..ecb89ecfc1 100644 --- a/include/hw/xen/xen.h +++ b/include/hw/xen/xen.h @@ -36,6 +36,7 @@ enum xen_mode { extern uint32_t xen_domid; extern enum xen_mode xen_mode; extern bool xen_domid_restrict; +extern bool xen_is_stubdomain;int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num);int xen_set_pci_link_route(uint8_t link, uint8_t irq); diff --git a/system/globals.c b/system/globals.c index b6d4e72530..ac27d88bd4 100644 --- a/system/globals.c +++ b/system/globals.c @@ -62,6 +62,7 @@ bool qemu_uuid_set; uint32_t xen_domid; enum xen_mode xen_mode = XEN_DISABLED; bool xen_domid_restrict; +bool xen_is_stubdomain; Note for myself, Paolo and Claudio, IIUC these fields belong to TYPE_XEN_ACCEL in accel/xen/xen-all.c. Maybe resulting in smth like: -- >8 -- diff --git a/accel/xen/xen-all.c b/accel/xen/xen-all.c index 5ff0cb8bd9..fc25d8c912 100644 --- a/accel/xen/xen-all.c +++ b/accel/xen/xen-all.c @@ -24,11 +24,31 @@ #include "migration/global_state.h" #include "hw/boards.h" -bool xen_allowed; +struct XenAccelState +{ + AccelState parent_obj; + + bool xen_allowed; + + enum xen_mode xen_mode; + + uint32_t xen_domid; + bool xen_domid_restrict; xc_interface *xen_xc; xenforeignmemory_handle *xen_fmem; xendevicemodel_handle *xen_dmod; +}; + +struct XenAccelOpsClass +{ + AccelOpsClass parent_class; + + struct evtchn_backend_ops *xen_evtchn_ops; + struct gnttab_backend_ops *xen_gnttab_ops; + struct foreignmem_backend_ops *xen_foreignmem_ops; + struct xenstore_backend_ops *xen_xenstore_ops; +} static void xenstore_record_dm_state(const char *state) { @@ -114,6 +134,13 @@ static int xen_init(MachineState *ms) return 0; } +static void xen_accel_init(Object *obj) +{ + XenAccelState *s = XEN_ACCEL(obj); + + s->xen_mode = XEN_DISABLED; +} + static void xen_accel_class_init(ObjectClass *oc, void *data) { AccelClass *ac = ACCEL_CLASS(oc);@@ -142,6 +169,8 @@ static void xen_accel_class_init(ObjectClass *oc, void *data) static const TypeInfo xen_accel_type = { .name = TYPE_XEN_ACCEL, .parent = TYPE_ACCEL, + .instance_size = sizeof(XenAccelState), + .instance_init = xen_accel_init, .class_init = xen_accel_class_init, }; @@ -157,6 +186,7 @@ static const TypeInfo xen_accel_ops_type = { .parent = TYPE_ACCEL_OPS, .class_init = xen_accel_ops_class_init, + .class_size = sizeof(XenAccelOpsClass), .abstract = true, }; ---
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |