[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 13/16] xen: convert "-machine igd-passthru" to an accelerator property
On 14/11/19 10:39, Paul Durrant wrote: > On Wed, 13 Nov 2019 at 14:53, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: >> >> The first machine property to fall is Xen's Intel integrated graphics >> passthrough. The "-machine igd-passthru" option does not set anymore >> a property on the machine object, but desugars to a GlobalProperty on >> accelerator objects. >> >> The setter is very simple, since the value ends up in a >> global variable, so this patch also provides an example before the more >> complicated cases that follow it. >> >> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > > Did something go wrong with get_maintainers here? The Xen maintainers > ought to have been cc-ed. The Xen toolstack will require consequent > modification. No, I just didn't use getmaintainers, my bad. But backwards-compatible syntactic sugar is provided, so no modifications are needed to Xen. See here in the code: + if (g_str_equal(qom_name, "igd-passthru")) { + object_register_sugar_prop(ACCEL_CLASS_NAME("xen"), qom_name, value); + return 0; + } Paolo > Cc-ing (rest of) Xen maintainers and xen-devel manually. > > Paul > >> --- >> hw/core/machine.c | 20 -------------------- >> hw/xen/xen-common.c | 16 ++++++++++++++++ >> include/hw/boards.h | 1 - >> qemu-options.hx | 9 +++++---- >> vl.c | 14 ++++---------- >> 5 files changed, 25 insertions(+), 35 deletions(-) >> >> diff --git a/hw/core/machine.c b/hw/core/machine.c >> index 45ddfb6..d7a0356 100644 >> --- a/hw/core/machine.c >> +++ b/hw/core/machine.c >> @@ -412,20 +412,6 @@ static void machine_set_graphics(Object *obj, bool >> value, Error **errp) >> ms->enable_graphics = value; >> } >> >> -static bool machine_get_igd_gfx_passthru(Object *obj, Error **errp) >> -{ >> - MachineState *ms = MACHINE(obj); >> - >> - return ms->igd_gfx_passthru; >> -} >> - >> -static void machine_set_igd_gfx_passthru(Object *obj, bool value, Error >> **errp) >> -{ >> - MachineState *ms = MACHINE(obj); >> - >> - ms->igd_gfx_passthru = value; >> -} >> - >> static char *machine_get_firmware(Object *obj, Error **errp) >> { >> MachineState *ms = MACHINE(obj); >> @@ -862,12 +848,6 @@ static void machine_class_init(ObjectClass *oc, void >> *data) >> object_class_property_set_description(oc, "graphics", >> "Set on/off to enable/disable graphics emulation", &error_abort); >> >> - object_class_property_add_bool(oc, "igd-passthru", >> - machine_get_igd_gfx_passthru, machine_set_igd_gfx_passthru, >> - &error_abort); >> - object_class_property_set_description(oc, "igd-passthru", >> - "Set on/off to enable/disable igd passthrou", &error_abort); >> - >> object_class_property_add_str(oc, "firmware", >> machine_get_firmware, machine_set_firmware, >> &error_abort); >> diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c >> index 5284b0d..6cba30c 100644 >> --- a/hw/xen/xen-common.c >> +++ b/hw/xen/xen-common.c >> @@ -124,6 +124,16 @@ static void xen_change_state_handler(void *opaque, int >> running, >> } >> } >> >> +static bool xen_get_igd_gfx_passthru(Object *obj, Error **errp) >> +{ >> + return has_igd_gfx_passthru; >> +} >> + >> +static void xen_set_igd_gfx_passthru(Object *obj, bool value, Error **errp) >> +{ >> + has_igd_gfx_passthru = value; >> +} >> + >> static void xen_setup_post(MachineState *ms, AccelState *accel) >> { >> int rc; >> @@ -177,6 +187,12 @@ static void xen_accel_class_init(ObjectClass *oc, void >> *data) >> ac->compat_props = g_ptr_array_new(); >> >> compat_props_add(ac->compat_props, compat, G_N_ELEMENTS(compat)); >> + >> + object_class_property_add_bool(oc, "igd-passthru", >> + xen_get_igd_gfx_passthru, xen_set_igd_gfx_passthru, >> + &error_abort); >> + object_class_property_set_description(oc, "igd-passthru", >> + "Set on/off to enable/disable igd passthrou", &error_abort); >> } >> >> #define TYPE_XEN_ACCEL ACCEL_CLASS_NAME("xen") >> diff --git a/include/hw/boards.h b/include/hw/boards.h >> index 36fcbda..cdcf481 100644 >> --- a/include/hw/boards.h >> +++ b/include/hw/boards.h >> @@ -287,7 +287,6 @@ struct MachineState { >> bool mem_merge; >> bool usb; >> bool usb_disabled; >> - bool igd_gfx_passthru; >> char *firmware; >> bool iommu; >> bool suppress_vmdesc; >> diff --git a/qemu-options.hx b/qemu-options.hx >> index 3931f90..5b43a83 100644 >> --- a/qemu-options.hx >> +++ b/qemu-options.hx >> @@ -37,7 +37,6 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ >> " kvm_shadow_mem=size of KVM shadow MMU in bytes\n" >> " dump-guest-core=on|off include guest memory in a core >> dump (default=on)\n" >> " mem-merge=on|off controls memory merge support >> (default: on)\n" >> - " igd-passthru=on|off controls IGD GFX passthrough >> support (default=off)\n" >> " aes-key-wrap=on|off controls support for AES key >> wrapping (default=on)\n" >> " dea-key-wrap=on|off controls support for DEA key >> wrapping (default=on)\n" >> " suppress-vmdesc=on|off disables self-describing >> migration (default=off)\n" >> @@ -71,8 +70,6 @@ more than one accelerator specified, the next one is used >> if the previous one >> fails to initialize. >> @item kernel_irqchip=on|off >> Controls in-kernel irqchip support for the chosen accelerator when >> available. >> -@item gfx_passthru=on|off >> -Enables IGD GFX passthrough support for the chosen machine when available. >> @item vmport=on|off|auto >> Enables emulation of VMWare IO port, for vmmouse etc. auto says to select >> the >> value based on accel. For accel=xen the default is off otherwise the default >> @@ -118,8 +115,9 @@ Select CPU model (@code{-cpu help} for list and >> additional feature selection) >> ETEXI >> >> DEF("accel", HAS_ARG, QEMU_OPTION_accel, >> - "-accel [accel=]accelerator[,thread=single|multi]\n" >> + "-accel [accel=]accelerator[,prop[=value][,...]]\n" >> " select accelerator (kvm, xen, hax, hvf, whpx or tcg; >> use 'help' for a list)\n" >> + " igd-passthru=on|off (enable Xen integrated Intel >> graphics passthrough, default=off)\n" >> " tb-size=n (TCG translation block cache size)\n" >> " thread=single|multi (enable multi-threaded TCG)\n", >> QEMU_ARCH_ALL) >> STEXI >> @@ -130,6 +128,9 @@ kvm, xen, hax, hvf, whpx or tcg can be available. By >> default, tcg is used. If th >> more than one accelerator specified, the next one is used if the previous >> one >> fails to initialize. >> @table @option >> +@item igd-passthru=on|off >> +When Xen is in use, this option controls whether Intel integrated graphics >> +devices can be passed through to the guest (default=off) >> @item tb-size=@var{n} >> Controls the size (in MiB) of the TCG translation block cache. >> @item thread=single|multi >> diff --git a/vl.c b/vl.c >> index 06c6ad9..7d8fed1 100644 >> --- a/vl.c >> +++ b/vl.c >> @@ -1256,13 +1256,6 @@ static void configure_msg(QemuOpts *opts) >> } >> >> >> -/* Now we still need this for compatibility with XEN. */ >> -bool has_igd_gfx_passthru; >> -static void igd_gfx_passthru(void) >> -{ >> - has_igd_gfx_passthru = current_machine->igd_gfx_passthru; >> -} >> - >> /***********************************************************/ >> /* USB devices */ >> >> @@ -2645,6 +2638,10 @@ static int machine_set_property(void *opaque, >> if (g_str_equal(qom_name, "accel")) { >> return 0; >> } >> + if (g_str_equal(qom_name, "igd-passthru")) { >> + object_register_sugar_prop(ACCEL_CLASS_NAME("xen"), qom_name, >> value); >> + return 0; >> + } >> >> r = object_parse_property_opt(opaque, name, value, "type", errp); >> g_free(qom_name); >> @@ -4449,9 +4446,6 @@ int main(int argc, char **argv, char **envp) >> exit(1); >> } >> >> - /* Check if IGD GFX passthrough. */ >> - igd_gfx_passthru(); >> - >> /* init generic devices */ >> rom_set_order_override(FW_CFG_ORDER_OVERRIDE_DEVICE); >> qemu_opts_foreach(qemu_find_opts("device"), >> -- >> 1.8.3.1 >> >> >> > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |