From nobody Sun Feb 8 23:33:35 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1576671272; cv=none; d=zohomail.com; s=zohoarc; b=N672XKvVWveMbz91kjGZaP3QWtv1NusJD0yhqk/lhqo8kme2mP+FnBPOM2xOqIHSc8uvyhvzCt/M4/5OHSOgQ6CpPQCkxVKOfi3BKxNUlbbgsgwmgmUgwBTbIBqtn6Ado7yt0APG3LpY3GGHUcG3kNvP+c029BkQhC8hr+GY7E8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1576671272; h=Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=qHzAYil75oWgqUim8nsgFtlMQDggWDpdj4zdhH7uJus=; b=YJjQppyrNa4ppxk4D7aLLzm5PrCgcr8wfkksNiaESUTUcX9CNFZfNSn43We3Ba62VRl/YnXzw4bcIRFvMM8J+U2w1YlJLv7kSIZQO1H+2SED/SEVX0Ty4TCDJS54ddFcrO6MgqkO9+DGhBM/P59DBx3ryTXEoKxwUzOQIBNLM9I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1576671272693879.0742252273199; Wed, 18 Dec 2019 04:14:32 -0800 (PST) Received: from localhost ([::1]:53288 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ihYDn-0004hv-77 for importer@patchew.org; Wed, 18 Dec 2019 07:14:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47701) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ihY38-0006Ij-3z for qemu-devel@nongnu.org; Wed, 18 Dec 2019 07:03:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ihY35-0000UK-SR for qemu-devel@nongnu.org; Wed, 18 Dec 2019 07:03:29 -0500 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:42111) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ihY35-0000S2-4b for qemu-devel@nongnu.org; Wed, 18 Dec 2019 07:03:27 -0500 Received: by mail-wr1-x442.google.com with SMTP id q6so1979344wro.9 for ; Wed, 18 Dec 2019 04:03:22 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id n67sm2236838wmf.46.2019.12.18.04.03.20 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Dec 2019 04:03:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=qHzAYil75oWgqUim8nsgFtlMQDggWDpdj4zdhH7uJus=; b=AfwqlyMePoFrXnYTXAao1184Gfqx9QXeSDYt0iZVA3f4JnTa2aCADz9195135gptbp CxnzdtxR9tfynaMgcvdyDTWVxGvBw3un+TRamLKaqDfc01hQQz3CV/UK4OZgMnCowTT7 hBFdl5tKw6yxLHCOfZGTJcySvALWiFa1t5w8D8ixpfRXlaJ9FFdlNoKVDNpoDvgZVl9i yA36IGQSvg7OY4aqgK5pCTuLv3uoFNTx9eNtAsl6eUkBiWAWUHzsVRqWi7gjWp2673lt Q2h9j6ORBucWQmvQ3h2LDjW6ebgY6EtlMRPE8DgA/500W2SUmWGS3m49g4ZMQoEr5glA g7EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=qHzAYil75oWgqUim8nsgFtlMQDggWDpdj4zdhH7uJus=; b=iDSznrG+t6B/KzLaxUVIPKlpjyt0dNrEDXtzi1oabXWg+nCO1Vm9zfKtKejVdBVYdp h5+TiB4Cdt2nZxa5+Q9QHcyRb5oPeeK78jZgo7itI723LK6X1MhsulaZCysqcsV7De6r wkWgFMs9LL9xsqdQgo9DmYplUQkm0YbfHPLG+CbW72EoLFGm2mM6MFSNswcHpKk+gVax qihy4V9iw3gjcVpRAaKIYM4MTdiSltwrR31gDrd1UyTXov2IKkv5jzOsW2zOtVMijmj3 GeprAC+Jik/crYxtJ+pQdh+iEjlQX3HrY9Mxt7WXpALsWNsce2TuGuGMPzSxQiOQ716E 5zwQ== X-Gm-Message-State: APjAAAV9up282XW6yx89IJ0rxbOx4HQvu9EXCv9GfUcpXZSbq6P+MIus IN7El/zoIeuVCVuDFMv1xOHJPGCD X-Google-Smtp-Source: APXvYqzaKKYv15lcGA9UB6z/A+2hptCrImiWFa2PXvjW1SN6deL1S/uI7ODw5jGwQTc6z99kg/+1uQ== X-Received: by 2002:a5d:410e:: with SMTP id l14mr2413681wrp.238.1576670601352; Wed, 18 Dec 2019 04:03:21 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 26/87] xen: convert "-machine igd-passthru" to an accelerator property Date: Wed, 18 Dec 2019 13:01:52 +0100 Message-Id: <1576670573-48048-27-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1576670573-48048-1-git-send-email-pbonzini@redhat.com> References: <1576670573-48048-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 --- hw/core/machine.c | 20 -------------------- hw/xen/xen-common.c | 18 ++++++++++++++++++ hw/xen/xen_pt.c | 2 ++ include/hw/boards.h | 1 - qemu-options.hx | 7 ++++--- vl.c | 14 ++++---------- 6 files changed, 28 insertions(+), 34 deletions(-) diff --git a/hw/core/machine.c b/hw/core/machine.c index e661fa6..05cea3a 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -417,20 +417,6 @@ static void machine_set_graphics(Object *obj, bool val= ue, Error **errp) ms->enable_graphics =3D value; } =20 -static bool machine_get_igd_gfx_passthru(Object *obj, Error **errp) -{ - MachineState *ms =3D MACHINE(obj); - - return ms->igd_gfx_passthru; -} - -static void machine_set_igd_gfx_passthru(Object *obj, bool value, Error **= errp) -{ - MachineState *ms =3D MACHINE(obj); - - ms->igd_gfx_passthru =3D value; -} - static char *machine_get_firmware(Object *obj, Error **errp) { MachineState *ms =3D MACHINE(obj); @@ -867,12 +853,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); =20 - 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..15650d7 100644 --- a/hw/xen/xen-common.c +++ b/hw/xen/xen-common.c @@ -11,7 +11,9 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" #include "qemu/module.h" +#include "qapi/error.h" #include "hw/xen/xen-legacy-backend.h" +#include "hw/xen/xen_pt.h" #include "chardev/char.h" #include "sysemu/accel.h" #include "sysemu/runstate.h" @@ -124,6 +126,16 @@ static void xen_change_state_handler(void *opaque, int= running, } } =20 +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 =3D value; +} + static void xen_setup_post(MachineState *ms, AccelState *accel) { int rc; @@ -177,6 +189,12 @@ static void xen_accel_class_init(ObjectClass *oc, void= *data) ac->compat_props =3D g_ptr_array_new(); =20 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); } =20 #define TYPE_XEN_ACCEL ACCEL_CLASS_NAME("xen") diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c index 8fbaf2e..9e767d4 100644 --- a/hw/xen/xen_pt.c +++ b/hw/xen/xen_pt.c @@ -65,6 +65,8 @@ #include "qemu/range.h" #include "exec/address-spaces.h" =20 +bool has_igd_gfx_passthru; + #define XEN_PT_NR_IRQS (256) static uint8_t xen_pt_mapped_machine_irq[XEN_PT_NR_IRQS] =3D {0}; =20 diff --git a/include/hw/boards.h b/include/hw/boards.h index 96f2084..5025c1a 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 ee1f676..1535390 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -37,7 +37,6 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ " kvm_shadow_mem=3Dsize of KVM shadow MMU in bytes\n" " dump-guest-core=3Don|off include guest memory in a co= re dump (default=3Don)\n" " mem-merge=3Don|off controls memory merge support (def= ault: on)\n" - " igd-passthru=3Don|off controls IGD GFX passthrough su= pport (default=3Doff)\n" " aes-key-wrap=3Don|off controls support for AES key wr= apping (default=3Don)\n" " dea-key-wrap=3Don|off controls support for DEA key wr= apping (default=3Don)\n" " suppress-vmdesc=3Don|off disables self-describing mig= ration (default=3Doff)\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=3Don|off Controls in-kernel irqchip support for the chosen accelerator when availab= le. -@item gfx_passthru=3Don|off -Enables IGD GFX passthrough support for the chosen machine when available. @item vmport=3Don|off|auto Enables emulation of VMWare IO port, for vmmouse etc. auto says to select = the value based on accel. For accel=3Dxen the default is off otherwise the def= ault @@ -120,6 +117,7 @@ ETEXI DEF("accel", HAS_ARG, QEMU_OPTION_accel, "-accel [accel=3D]accelerator[,prop[=3Dvalue][,...]]\n" " select accelerator (kvm, xen, hax, hvf, whpx or tcg; = use 'help' for a list)\n" + " igd-passthru=3Don|off (enable Xen integrated Intel gr= aphics passthrough, default=3Doff)\n" " tb-size=3Dn (TCG translation block cache size)\n" " thread=3Dsingle|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 de= fault, 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=3Don|off +When Xen is in use, this option controls whether Intel integrated graphics +devices can be passed through to the guest (default=3Doff) @item tb-size=3D@var{n} Controls the size (in MiB) of the TCG translation block cache. @item thread=3Dsingle|multi diff --git a/vl.c b/vl.c index 900f97a..774305c 100644 --- a/vl.c +++ b/vl.c @@ -1133,13 +1133,6 @@ static void configure_msg(QemuOpts *opts) } =20 =20 -/* Now we still need this for compatibility with XEN. */ -bool has_igd_gfx_passthru; -static void igd_gfx_passthru(void) -{ - has_igd_gfx_passthru =3D current_machine->igd_gfx_passthru; -} - /***********************************************************/ /* USB devices */ =20 @@ -2517,6 +2510,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, valu= e); + return 0; + } =20 return object_parse_property_opt(opaque, name, value, "type", errp); } @@ -4297,9 +4294,6 @@ int main(int argc, char **argv, char **envp) exit(1); } =20 - /* 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"), --=20 1.8.3.1