From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.223.159.82 with SMTP id f18csp3452491wrg; Sat, 25 Nov 2017 09:09:55 -0800 (PST) X-Google-Smtp-Source: AGs4zMYbKy05ri7CXyR/XtcDwsG6OE43iyjhkHr/uWz2BoKycZED27vyiJIzyNvuyje90YhzfcmN X-Received: by 10.129.96.86 with SMTP id u83mr12170858ywb.19.1511629795802; Sat, 25 Nov 2017 09:09:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511629795; cv=none; d=google.com; s=arc-20160816; b=Patq2blAbGlYqkEZeInKDs8FwXpDZoXbLIAdFdnYuPsdCI4BRJZZmJOCqpWsV4iZwp EUfaF0M+U5hvg0jofbP+BzPxWLaHsSqKawBTWdPzZVuZIHgivHkUz0r0nrYcDd0gn8ni RDTw9D1w62qF2eX+tNzJ/K0wImERMgDfxr8RlBvChrk62sFsCzdbFW4NelwdfTOxYxzR NzgoiJ8WyIq/dyKE8cHNOPGubq0oyR75zjinqOOew/UGZviBF5BIkXekXLi/QZ9rO/5+ YIQs+mi7LpuO+dEKQ64vxtItRUaG2m48+pVjVXdjc1hFyGExKXRyF6hzri3GxtU5CJy8 Y7Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:to:from:date:arc-authentication-results; bh=ZxXnVIFmrTZDiyidmCv76WXZUULktUj4ulZuKr+AozM=; b=qdJQPzEUmfLBfcLHlqFm6ZF+30gaFVWBFiarvgyUdUpRoQp9OXP5S/7TYIVS/txx+m oa44DtRO5WBW6azOlF40KmH0BXUI51CyaAly7k97WG89sIy5h2rkBgV9P8i2ZPuimSgq XePdFofwt0A7sMp9DTZBGVQ+j59Sfjd1HUuBIm5WrA1lJLa9IQ313VD4CtAqTuZmIj6C pfPrcsgVsaY3MoI3MTdxOrb/pvXoW0F5b6pBXWoWFz7E/S1RrrN9E+QKLCXwvMczXLay XoBWbaGfw45JhWscOZUu1aDP59oYMYBn6lksA25EYhrwHiDUy1qyZObm86WZaUXaUusQ UVBA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id f18si4904290ybn.222.2017.11.25.09.09.55 for (version=TLS1 cipher=AES128-SHA bits=128/128); Sat, 25 Nov 2017 09:09:55 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Received: from localhost ([::1]:53832 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eIdxj-0001km-4K for alex.bennee@linaro.org; Sat, 25 Nov 2017 12:09:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38951) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eIdxN-0001k7-Gl for qemu-arm@nongnu.org; Sat, 25 Nov 2017 12:09:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eIdxJ-0003BY-J1 for qemu-arm@nongnu.org; Sat, 25 Nov 2017 12:09:33 -0500 Received: from 1.mo2.mail-out.ovh.net ([46.105.63.121]:44457) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eIdxJ-00035A-9o for qemu-arm@nongnu.org; Sat, 25 Nov 2017 12:09:29 -0500 Received: from player718.ha.ovh.net (b6.ovh.net [213.186.33.56]) by mo2.mail-out.ovh.net (Postfix) with ESMTP id 86FBECE6DE for ; Sat, 25 Nov 2017 18:09:19 +0100 (CET) Received: from bahia.lan (gar31-1-82-66-74-139.fbx.proxad.net [82.66.74.139]) (Authenticated sender: groug@kaod.org) by player718.ha.ovh.net (Postfix) with ESMTPSA id E03134E0083; Sat, 25 Nov 2017 18:09:00 +0100 (CET) Date: Sat, 25 Nov 2017 18:08:52 +0100 From: Greg Kurz To: Eduardo Habkost Message-ID: <20171125180852.3d4b2a1a@bahia.lan> In-Reply-To: <20171125151610.20547-2-ehabkost@redhat.com> References: <20171125151610.20547-1-ehabkost@redhat.com> <20171125151610.20547-2-ehabkost@redhat.com> X-Mailer: Claws Mail 3.15.1-dirty (GTK+ 2.24.31; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Ovh-Tracer-Id: 11799149552788740438 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedttddrleeggdelkecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 46.105.63.121 Subject: Re: [Qemu-arm] [Qemu-devel] [PATCH v2 1/6] machine: Replace has_dynamic_sysbus with list of allowed devices X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jgross@suse.com, Peter Maydell , Thomas Huth , sstabellini@kernel.org, "Michael S. Tsirkin" , qemu-devel@nongnu.org, Alexander Graf , Marcel Apfelbaum , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Anthony Perard , xen-devel@lists.xenproject.org, Laszlo Ersek , David Gibson Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: mjglHBDikzkL On Sat, 25 Nov 2017 13:16:05 -0200 Eduardo Habkost wrote: > The existing has_dynamic_sysbus flag makes the machine accept > every user-creatable sysbus device type on the command-line. > Replace it with a list of allowed device types, so machines can > easily accept some sysbus devices while rejecting others. > > To keep exactly the same behavior as before, the existing > has_dynamic_sysbus=true assignments are replaced with a > TYPE_SYS_BUS_DEVICE entry on the allowed list. Other patches > will replace the TYPE_SYS_BUS_DEVICE entries with more specific > lists of devices. > > Cc: Peter Maydell > Cc: Marcel Apfelbaum > Cc: "Michael S. Tsirkin" > Cc: Alexander Graf > Cc: David Gibson > Cc: Stefano Stabellini > Cc: Anthony Perard > Cc: qemu-arm@nongnu.org > Cc: qemu-ppc@nongnu.org > Cc: xen-devel@lists.xenproject.org > Signed-off-by: Eduardo Habkost > --- Reviewed-by: Greg Kurz > Changes v1 -> v2: > * Replace "dynamic sysbus whitelist" with "allowed sysbus devices" > * Simply add TYPE_SYS_BUS_DEVICE to the list on existing > has_dynamic_sysbus=true machines, and make machine-types more > strict in separate patches > --- > include/hw/boards.h | 5 ++++- > hw/arm/virt.c | 3 ++- > hw/core/machine.c | 43 +++++++++++++++++++++++++++++-------------- > hw/i386/pc_q35.c | 3 ++- > hw/ppc/e500plat.c | 4 +++- > hw/ppc/spapr.c | 3 ++- > hw/xen/xen_backend.c | 7 ++++++- > 7 files changed, 48 insertions(+), 20 deletions(-) > > diff --git a/include/hw/boards.h b/include/hw/boards.h > index 156b16f7a6..041bc08971 100644 > --- a/include/hw/boards.h > +++ b/include/hw/boards.h > @@ -76,6 +76,9 @@ void machine_set_cpu_numa_node(MachineState *machine, > const CpuInstanceProperties *props, > Error **errp); > > +void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type); > + > + > /** > * CPUArchId: > * @arch_id - architecture-dependent CPU ID of present or possible CPU > @@ -179,7 +182,6 @@ struct MachineClass { > no_floppy:1, > no_cdrom:1, > no_sdcard:1, > - has_dynamic_sysbus:1, > pci_allow_0_address:1, > legacy_fw_cfg_order:1; > int is_default; > @@ -197,6 +199,7 @@ struct MachineClass { > bool ignore_memory_transaction_failures; > int numa_mem_align_shift; > const char **valid_cpu_types; > + strList *allowed_dynamic_sysbus_devices; > bool auto_enable_numa_with_memhp; > void (*numa_auto_assign_ram)(MachineClass *mc, NodeInfo *nodes, > int nb_nodes, ram_addr_t size); > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 9e18b410d7..fa6dc15fcd 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1591,7 +1591,8 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) > * configuration of the particular instance. > */ > mc->max_cpus = 255; > - mc->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > mc->block_default_type = IF_VIRTIO; > mc->no_cdrom = 1; > mc->pci_allow_0_address = true; > diff --git a/hw/core/machine.c b/hw/core/machine.c > index 36c2fb069c..ab2ec292f3 100644 > --- a/hw/core/machine.c > +++ b/hw/core/machine.c > @@ -335,29 +335,44 @@ static bool machine_get_enforce_config_section(Object *obj, Error **errp) > return ms->enforce_config_section; > } > > -static void error_on_sysbus_device(SysBusDevice *sbdev, void *opaque) > +void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type) > { > - error_report("Option '-device %s' cannot be handled by this machine", > - object_class_get_name(object_get_class(OBJECT(sbdev)))); > - exit(1); > + strList *item = g_new0(strList, 1); > + > + item->value = g_strdup(type); > + item->next = mc->allowed_dynamic_sysbus_devices; > + mc->allowed_dynamic_sysbus_devices = item; > } > > -static void machine_init_notify(Notifier *notifier, void *data) > +static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque) > { > - Object *machine = qdev_get_machine(); > - ObjectClass *oc = object_get_class(machine); > - MachineClass *mc = MACHINE_CLASS(oc); > + MachineState *machine = opaque; > + MachineClass *mc = MACHINE_GET_CLASS(machine); > + bool allowed = false; > + strList *wl; > > - if (mc->has_dynamic_sysbus) { > - /* Our machine can handle dynamic sysbus devices, we're all good */ > - return; > + for (wl = mc->allowed_dynamic_sysbus_devices; > + !allowed && wl; > + wl = wl->next) { > + allowed |= !!object_dynamic_cast(OBJECT(sbdev), wl->value); > } > > + if (!allowed) { > + error_report("Option '-device %s' cannot be handled by this machine", > + object_class_get_name(object_get_class(OBJECT(sbdev)))); > + exit(1); > + } > +} > + > +static void machine_init_notify(Notifier *notifier, void *data) > +{ > + MachineState *machine = MACHINE(qdev_get_machine()); > + > /* > - * Loop through all dynamically created devices and check whether there > - * are sysbus devices among them. If there are, error out. > + * Loop through all dynamically created sysbus devices and check if they are > + * all allowed. If a device is not allowed, error out. > */ > - foreach_dynamic_sysbus_device(error_on_sysbus_device, NULL); > + foreach_dynamic_sysbus_device(validate_sysbus_device, machine); > } > > HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine) > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c > index d6060043ac..d0b0e5b422 100644 > --- a/hw/i386/pc_q35.c > +++ b/hw/i386/pc_q35.c > @@ -299,7 +299,8 @@ static void pc_q35_machine_options(MachineClass *m) > m->default_machine_opts = "firmware=bios-256k.bin"; > m->default_display = "std"; > m->no_floppy = 1; > - m->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(m, TYPE_SYS_BUS_DEVICE); > m->max_cpus = 288; > } > > diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c > index e59e80fb9e..438118c29b 100644 > --- a/hw/ppc/e500plat.c > +++ b/hw/ppc/e500plat.c > @@ -15,6 +15,7 @@ > #include "hw/boards.h" > #include "sysemu/device_tree.h" > #include "sysemu/kvm.h" > +#include "hw/sysbus.h" > #include "hw/pci/pci.h" > #include "hw/ppc/openpic.h" > #include "kvm_ppc.h" > @@ -63,7 +64,8 @@ static void e500plat_machine_init(MachineClass *mc) > mc->desc = "generic paravirt e500 platform"; > mc->init = e500plat_init; > mc->max_cpus = 32; > - mc->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30"); > } > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index d682f013d4..82040cc5d1 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -3603,7 +3603,8 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) > mc->default_boot_order = ""; > mc->default_ram_size = 512 * M_BYTE; > mc->kvm_type = spapr_kvm_type; > - mc->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > mc->pci_allow_0_address = true; > mc->get_hotplug_handler = spapr_get_hotplug_handler; > hc->pre_plug = spapr_machine_device_pre_plug; > diff --git a/hw/xen/xen_backend.c b/hw/xen/xen_backend.c > index 0f849a26d2..82380ea9ee 100644 > --- a/hw/xen/xen_backend.c > +++ b/hw/xen/xen_backend.c > @@ -564,7 +564,12 @@ static void xen_set_dynamic_sysbus(void) > ObjectClass *oc = object_get_class(machine); > MachineClass *mc = MACHINE_CLASS(oc); > > - mc->has_dynamic_sysbus = true; > + /* > + * Emulate old mc->has_dynamic_sysbus=true assignment > + * > + *TODO: add only Xen devices to the list > + */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > } > > int xen_be_register(const char *type, struct XenDevOps *ops) From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38944) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eIdxN-0001k6-0z for qemu-devel@nongnu.org; Sat, 25 Nov 2017 12:09:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eIdxI-0003Aq-Tv for qemu-devel@nongnu.org; Sat, 25 Nov 2017 12:09:32 -0500 Received: from 5.mo2.mail-out.ovh.net ([87.98.181.248]:34523) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eIdxI-00035B-K6 for qemu-devel@nongnu.org; Sat, 25 Nov 2017 12:09:28 -0500 Received: from player718.ha.ovh.net (b6.ovh.net [213.186.33.56]) by mo2.mail-out.ovh.net (Postfix) with ESMTP id 8783DCE73C for ; Sat, 25 Nov 2017 18:09:19 +0100 (CET) Date: Sat, 25 Nov 2017 18:08:52 +0100 From: Greg Kurz Message-ID: <20171125180852.3d4b2a1a@bahia.lan> In-Reply-To: <20171125151610.20547-2-ehabkost@redhat.com> References: <20171125151610.20547-1-ehabkost@redhat.com> <20171125151610.20547-2-ehabkost@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 1/6] machine: Replace has_dynamic_sysbus with list of allowed devices List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: qemu-devel@nongnu.org, jgross@suse.com, Peter Maydell , Thomas Huth , sstabellini@kernel.org, "Michael S. Tsirkin" , Alexander Graf , Anthony Perard , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Marcel Apfelbaum , xen-devel@lists.xenproject.org, Laszlo Ersek , David Gibson On Sat, 25 Nov 2017 13:16:05 -0200 Eduardo Habkost wrote: > The existing has_dynamic_sysbus flag makes the machine accept > every user-creatable sysbus device type on the command-line. > Replace it with a list of allowed device types, so machines can > easily accept some sysbus devices while rejecting others. > > To keep exactly the same behavior as before, the existing > has_dynamic_sysbus=true assignments are replaced with a > TYPE_SYS_BUS_DEVICE entry on the allowed list. Other patches > will replace the TYPE_SYS_BUS_DEVICE entries with more specific > lists of devices. > > Cc: Peter Maydell > Cc: Marcel Apfelbaum > Cc: "Michael S. Tsirkin" > Cc: Alexander Graf > Cc: David Gibson > Cc: Stefano Stabellini > Cc: Anthony Perard > Cc: qemu-arm@nongnu.org > Cc: qemu-ppc@nongnu.org > Cc: xen-devel@lists.xenproject.org > Signed-off-by: Eduardo Habkost > --- Reviewed-by: Greg Kurz > Changes v1 -> v2: > * Replace "dynamic sysbus whitelist" with "allowed sysbus devices" > * Simply add TYPE_SYS_BUS_DEVICE to the list on existing > has_dynamic_sysbus=true machines, and make machine-types more > strict in separate patches > --- > include/hw/boards.h | 5 ++++- > hw/arm/virt.c | 3 ++- > hw/core/machine.c | 43 +++++++++++++++++++++++++++++-------------- > hw/i386/pc_q35.c | 3 ++- > hw/ppc/e500plat.c | 4 +++- > hw/ppc/spapr.c | 3 ++- > hw/xen/xen_backend.c | 7 ++++++- > 7 files changed, 48 insertions(+), 20 deletions(-) > > diff --git a/include/hw/boards.h b/include/hw/boards.h > index 156b16f7a6..041bc08971 100644 > --- a/include/hw/boards.h > +++ b/include/hw/boards.h > @@ -76,6 +76,9 @@ void machine_set_cpu_numa_node(MachineState *machine, > const CpuInstanceProperties *props, > Error **errp); > > +void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type); > + > + > /** > * CPUArchId: > * @arch_id - architecture-dependent CPU ID of present or possible CPU > @@ -179,7 +182,6 @@ struct MachineClass { > no_floppy:1, > no_cdrom:1, > no_sdcard:1, > - has_dynamic_sysbus:1, > pci_allow_0_address:1, > legacy_fw_cfg_order:1; > int is_default; > @@ -197,6 +199,7 @@ struct MachineClass { > bool ignore_memory_transaction_failures; > int numa_mem_align_shift; > const char **valid_cpu_types; > + strList *allowed_dynamic_sysbus_devices; > bool auto_enable_numa_with_memhp; > void (*numa_auto_assign_ram)(MachineClass *mc, NodeInfo *nodes, > int nb_nodes, ram_addr_t size); > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 9e18b410d7..fa6dc15fcd 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1591,7 +1591,8 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) > * configuration of the particular instance. > */ > mc->max_cpus = 255; > - mc->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > mc->block_default_type = IF_VIRTIO; > mc->no_cdrom = 1; > mc->pci_allow_0_address = true; > diff --git a/hw/core/machine.c b/hw/core/machine.c > index 36c2fb069c..ab2ec292f3 100644 > --- a/hw/core/machine.c > +++ b/hw/core/machine.c > @@ -335,29 +335,44 @@ static bool machine_get_enforce_config_section(Object *obj, Error **errp) > return ms->enforce_config_section; > } > > -static void error_on_sysbus_device(SysBusDevice *sbdev, void *opaque) > +void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type) > { > - error_report("Option '-device %s' cannot be handled by this machine", > - object_class_get_name(object_get_class(OBJECT(sbdev)))); > - exit(1); > + strList *item = g_new0(strList, 1); > + > + item->value = g_strdup(type); > + item->next = mc->allowed_dynamic_sysbus_devices; > + mc->allowed_dynamic_sysbus_devices = item; > } > > -static void machine_init_notify(Notifier *notifier, void *data) > +static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque) > { > - Object *machine = qdev_get_machine(); > - ObjectClass *oc = object_get_class(machine); > - MachineClass *mc = MACHINE_CLASS(oc); > + MachineState *machine = opaque; > + MachineClass *mc = MACHINE_GET_CLASS(machine); > + bool allowed = false; > + strList *wl; > > - if (mc->has_dynamic_sysbus) { > - /* Our machine can handle dynamic sysbus devices, we're all good */ > - return; > + for (wl = mc->allowed_dynamic_sysbus_devices; > + !allowed && wl; > + wl = wl->next) { > + allowed |= !!object_dynamic_cast(OBJECT(sbdev), wl->value); > } > > + if (!allowed) { > + error_report("Option '-device %s' cannot be handled by this machine", > + object_class_get_name(object_get_class(OBJECT(sbdev)))); > + exit(1); > + } > +} > + > +static void machine_init_notify(Notifier *notifier, void *data) > +{ > + MachineState *machine = MACHINE(qdev_get_machine()); > + > /* > - * Loop through all dynamically created devices and check whether there > - * are sysbus devices among them. If there are, error out. > + * Loop through all dynamically created sysbus devices and check if they are > + * all allowed. If a device is not allowed, error out. > */ > - foreach_dynamic_sysbus_device(error_on_sysbus_device, NULL); > + foreach_dynamic_sysbus_device(validate_sysbus_device, machine); > } > > HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine) > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c > index d6060043ac..d0b0e5b422 100644 > --- a/hw/i386/pc_q35.c > +++ b/hw/i386/pc_q35.c > @@ -299,7 +299,8 @@ static void pc_q35_machine_options(MachineClass *m) > m->default_machine_opts = "firmware=bios-256k.bin"; > m->default_display = "std"; > m->no_floppy = 1; > - m->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(m, TYPE_SYS_BUS_DEVICE); > m->max_cpus = 288; > } > > diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c > index e59e80fb9e..438118c29b 100644 > --- a/hw/ppc/e500plat.c > +++ b/hw/ppc/e500plat.c > @@ -15,6 +15,7 @@ > #include "hw/boards.h" > #include "sysemu/device_tree.h" > #include "sysemu/kvm.h" > +#include "hw/sysbus.h" > #include "hw/pci/pci.h" > #include "hw/ppc/openpic.h" > #include "kvm_ppc.h" > @@ -63,7 +64,8 @@ static void e500plat_machine_init(MachineClass *mc) > mc->desc = "generic paravirt e500 platform"; > mc->init = e500plat_init; > mc->max_cpus = 32; > - mc->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30"); > } > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index d682f013d4..82040cc5d1 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -3603,7 +3603,8 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) > mc->default_boot_order = ""; > mc->default_ram_size = 512 * M_BYTE; > mc->kvm_type = spapr_kvm_type; > - mc->has_dynamic_sysbus = true; > + /*TODO: allow only sysbus devices that really work with this machine */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > mc->pci_allow_0_address = true; > mc->get_hotplug_handler = spapr_get_hotplug_handler; > hc->pre_plug = spapr_machine_device_pre_plug; > diff --git a/hw/xen/xen_backend.c b/hw/xen/xen_backend.c > index 0f849a26d2..82380ea9ee 100644 > --- a/hw/xen/xen_backend.c > +++ b/hw/xen/xen_backend.c > @@ -564,7 +564,12 @@ static void xen_set_dynamic_sysbus(void) > ObjectClass *oc = object_get_class(machine); > MachineClass *mc = MACHINE_CLASS(oc); > > - mc->has_dynamic_sysbus = true; > + /* > + * Emulate old mc->has_dynamic_sysbus=true assignment > + * > + *TODO: add only Xen devices to the list > + */ > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > } > > int xen_be_register(const char *type, struct XenDevOps *ops) From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kurz Subject: Re: [Qemu-devel] [PATCH v2 1/6] machine: Replace has_dynamic_sysbus with list of allowed devices Date: Sat, 25 Nov 2017 18:08:52 +0100 Message-ID: <20171125180852.3d4b2a1a@bahia.lan> References: <20171125151610.20547-1-ehabkost@redhat.com> <20171125151610.20547-2-ehabkost@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIdxD-0001r7-Lw for xen-devel@lists.xenproject.org; Sat, 25 Nov 2017 17:09:23 +0000 Received: from player718.ha.ovh.net (b6.ovh.net [213.186.33.56]) by mo2.mail-out.ovh.net (Postfix) with ESMTP id 9C08ACE7C7 for ; Sat, 25 Nov 2017 18:09:19 +0100 (CET) In-Reply-To: <20171125151610.20547-2-ehabkost@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Eduardo Habkost Cc: jgross@suse.com, Peter Maydell , Thomas Huth , sstabellini@kernel.org, "Michael S. Tsirkin" , qemu-devel@nongnu.org, Alexander Graf , Marcel Apfelbaum , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Anthony Perard , xen-devel@lists.xenproject.org, Laszlo Ersek , David Gibson List-Id: xen-devel@lists.xenproject.org T24gU2F0LCAyNSBOb3YgMjAxNyAxMzoxNjowNSAtMDIwMApFZHVhcmRvIEhhYmtvc3QgPGVoYWJr b3N0QHJlZGhhdC5jb20+IHdyb3RlOgoKPiBUaGUgZXhpc3RpbmcgaGFzX2R5bmFtaWNfc3lzYnVz IGZsYWcgbWFrZXMgdGhlIG1hY2hpbmUgYWNjZXB0Cj4gZXZlcnkgdXNlci1jcmVhdGFibGUgc3lz YnVzIGRldmljZSB0eXBlIG9uIHRoZSBjb21tYW5kLWxpbmUuCj4gUmVwbGFjZSBpdCB3aXRoIGEg bGlzdCBvZiBhbGxvd2VkIGRldmljZSB0eXBlcywgc28gbWFjaGluZXMgY2FuCj4gZWFzaWx5IGFj Y2VwdCBzb21lIHN5c2J1cyBkZXZpY2VzIHdoaWxlIHJlamVjdGluZyBvdGhlcnMuCj4gCj4gVG8g a2VlcCBleGFjdGx5IHRoZSBzYW1lIGJlaGF2aW9yIGFzIGJlZm9yZSwgdGhlIGV4aXN0aW5nCj4g aGFzX2R5bmFtaWNfc3lzYnVzPXRydWUgYXNzaWdubWVudHMgYXJlIHJlcGxhY2VkIHdpdGggYQo+ IFRZUEVfU1lTX0JVU19ERVZJQ0UgZW50cnkgb24gdGhlIGFsbG93ZWQgbGlzdC4gIE90aGVyIHBh dGNoZXMKPiB3aWxsIHJlcGxhY2UgdGhlIFRZUEVfU1lTX0JVU19ERVZJQ0UgZW50cmllcyB3aXRo IG1vcmUgc3BlY2lmaWMKPiBsaXN0cyBvZiBkZXZpY2VzLgo+IAo+IENjOiBQZXRlciBNYXlkZWxs IDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+Cj4gQ2M6IE1hcmNlbCBBcGZlbGJhdW0gPG1hcmNl bEByZWRoYXQuY29tPgo+IENjOiAiTWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+ Cj4gQ2M6IEFsZXhhbmRlciBHcmFmIDxhZ3JhZkBzdXNlLmRlPgo+IENjOiBEYXZpZCBHaWJzb24g PGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KPiBDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPgo+IENjOiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5wZXJh cmRAY2l0cml4LmNvbT4KPiBDYzogcWVtdS1hcm1Abm9uZ251Lm9yZwo+IENjOiBxZW11LXBwY0Bu b25nbnUub3JnCj4gQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IFNpZ25lZC1v ZmYtYnk6IEVkdWFyZG8gSGFia29zdCA8ZWhhYmtvc3RAcmVkaGF0LmNvbT4KPiAtLS0KClJldmll d2VkLWJ5OiBHcmVnIEt1cnogPGdyb3VnQGthb2Qub3JnPgoKPiBDaGFuZ2VzIHYxIC0+IHYyOgo+ ICogUmVwbGFjZSAiZHluYW1pYyBzeXNidXMgd2hpdGVsaXN0IiB3aXRoICJhbGxvd2VkIHN5c2J1 cyBkZXZpY2VzIgo+ICogU2ltcGx5IGFkZCBUWVBFX1NZU19CVVNfREVWSUNFIHRvIHRoZSBsaXN0 IG9uIGV4aXN0aW5nCj4gICBoYXNfZHluYW1pY19zeXNidXM9dHJ1ZSBtYWNoaW5lcywgYW5kIG1h a2UgbWFjaGluZS10eXBlcyBtb3JlCj4gICBzdHJpY3QgaW4gc2VwYXJhdGUgcGF0Y2hlcwo+IC0t LQo+ICBpbmNsdWRlL2h3L2JvYXJkcy5oICB8ICA1ICsrKystCj4gIGh3L2FybS92aXJ0LmMgICAg ICAgIHwgIDMgKystCj4gIGh3L2NvcmUvbWFjaGluZS5jICAgIHwgNDMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICBody9pMzg2L3BjX3EzNS5jICAgICB8ICAz ICsrLQo+ICBody9wcGMvZTUwMHBsYXQuYyAgICB8ICA0ICsrKy0KPiAgaHcvcHBjL3NwYXByLmMg ICAgICAgfCAgMyArKy0KPiAgaHcveGVuL3hlbl9iYWNrZW5kLmMgfCAgNyArKysrKystCj4gIDcg ZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvaHcvYm9hcmRzLmggYi9pbmNsdWRlL2h3L2JvYXJkcy5oCj4gaW5k ZXggMTU2YjE2ZjdhNi4uMDQxYmMwODk3MSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2h3L2JvYXJk cy5oCj4gKysrIGIvaW5jbHVkZS9ody9ib2FyZHMuaAo+IEBAIC03Niw2ICs3Niw5IEBAIHZvaWQg bWFjaGluZV9zZXRfY3B1X251bWFfbm9kZShNYWNoaW5lU3RhdGUgKm1hY2hpbmUsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcHVJbnN0YW5jZVByb3BlcnRpZXMgKnBy b3BzLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJwKTsKPiAg Cj4gK3ZvaWQgbWFjaGluZV9jbGFzc19hbGxvd19keW5hbWljX3N5c2J1c19kZXYoTWFjaGluZUNs YXNzICptYywgY29uc3QgY2hhciAqdHlwZSk7Cj4gKwo+ICsKPiAgLyoqCj4gICAqIENQVUFyY2hJ ZDoKPiAgICogQGFyY2hfaWQgLSBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IENQVSBJRCBvZiBwcmVz ZW50IG9yIHBvc3NpYmxlIENQVQo+IEBAIC0xNzksNyArMTgyLDYgQEAgc3RydWN0IE1hY2hpbmVD bGFzcyB7Cj4gICAgICAgICAgbm9fZmxvcHB5OjEsCj4gICAgICAgICAgbm9fY2Ryb206MSwKPiAg ICAgICAgICBub19zZGNhcmQ6MSwKPiAtICAgICAgICBoYXNfZHluYW1pY19zeXNidXM6MSwKPiAg ICAgICAgICBwY2lfYWxsb3dfMF9hZGRyZXNzOjEsCj4gICAgICAgICAgbGVnYWN5X2Z3X2NmZ19v cmRlcjoxOwo+ICAgICAgaW50IGlzX2RlZmF1bHQ7Cj4gQEAgLTE5Nyw2ICsxOTksNyBAQCBzdHJ1 Y3QgTWFjaGluZUNsYXNzIHsKPiAgICAgIGJvb2wgaWdub3JlX21lbW9yeV90cmFuc2FjdGlvbl9m YWlsdXJlczsKPiAgICAgIGludCBudW1hX21lbV9hbGlnbl9zaGlmdDsKPiAgICAgIGNvbnN0IGNo YXIgKip2YWxpZF9jcHVfdHlwZXM7Cj4gKyAgICBzdHJMaXN0ICphbGxvd2VkX2R5bmFtaWNfc3lz YnVzX2RldmljZXM7Cj4gICAgICBib29sIGF1dG9fZW5hYmxlX251bWFfd2l0aF9tZW1ocDsKPiAg ICAgIHZvaWQgKCpudW1hX2F1dG9fYXNzaWduX3JhbSkoTWFjaGluZUNsYXNzICptYywgTm9kZUlu Zm8gKm5vZGVzLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmJfbm9k ZXMsIHJhbV9hZGRyX3Qgc2l6ZSk7Cj4gZGlmZiAtLWdpdCBhL2h3L2FybS92aXJ0LmMgYi9ody9h cm0vdmlydC5jCj4gaW5kZXggOWUxOGI0MTBkNy4uZmE2ZGMxNWZjZCAxMDA2NDQKPiAtLS0gYS9o dy9hcm0vdmlydC5jCj4gKysrIGIvaHcvYXJtL3ZpcnQuYwo+IEBAIC0xNTkxLDcgKzE1OTEsOCBA QCBzdGF0aWMgdm9pZCB2aXJ0X21hY2hpbmVfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqb2MsIHZv aWQgKmRhdGEpCj4gICAgICAgKiBjb25maWd1cmF0aW9uIG9mIHRoZSBwYXJ0aWN1bGFyIGluc3Rh bmNlLgo+ICAgICAgICovCj4gICAgICBtYy0+bWF4X2NwdXMgPSAyNTU7Cj4gLSAgICBtYy0+aGFz X2R5bmFtaWNfc3lzYnVzID0gdHJ1ZTsKPiArICAgIC8qVE9ETzogYWxsb3cgb25seSBzeXNidXMg ZGV2aWNlcyB0aGF0IHJlYWxseSB3b3JrIHdpdGggdGhpcyBtYWNoaW5lICovCj4gKyAgICBtYWNo aW5lX2NsYXNzX2FsbG93X2R5bmFtaWNfc3lzYnVzX2RldihtYywgVFlQRV9TWVNfQlVTX0RFVklD RSk7Cj4gICAgICBtYy0+YmxvY2tfZGVmYXVsdF90eXBlID0gSUZfVklSVElPOwo+ICAgICAgbWMt Pm5vX2Nkcm9tID0gMTsKPiAgICAgIG1jLT5wY2lfYWxsb3dfMF9hZGRyZXNzID0gdHJ1ZTsKPiBk aWZmIC0tZ2l0IGEvaHcvY29yZS9tYWNoaW5lLmMgYi9ody9jb3JlL21hY2hpbmUuYwo+IGluZGV4 IDM2YzJmYjA2OWMuLmFiMmVjMjkyZjMgMTAwNjQ0Cj4gLS0tIGEvaHcvY29yZS9tYWNoaW5lLmMK PiArKysgYi9ody9jb3JlL21hY2hpbmUuYwo+IEBAIC0zMzUsMjkgKzMzNSw0NCBAQCBzdGF0aWMg Ym9vbCBtYWNoaW5lX2dldF9lbmZvcmNlX2NvbmZpZ19zZWN0aW9uKE9iamVjdCAqb2JqLCBFcnJv ciAqKmVycnApCj4gICAgICByZXR1cm4gbXMtPmVuZm9yY2VfY29uZmlnX3NlY3Rpb247Cj4gIH0K PiAgCj4gLXN0YXRpYyB2b2lkIGVycm9yX29uX3N5c2J1c19kZXZpY2UoU3lzQnVzRGV2aWNlICpz YmRldiwgdm9pZCAqb3BhcXVlKQo+ICt2b2lkIG1hY2hpbmVfY2xhc3NfYWxsb3dfZHluYW1pY19z eXNidXNfZGV2KE1hY2hpbmVDbGFzcyAqbWMsIGNvbnN0IGNoYXIgKnR5cGUpCj4gIHsKPiAtICAg IGVycm9yX3JlcG9ydCgiT3B0aW9uICctZGV2aWNlICVzJyBjYW5ub3QgYmUgaGFuZGxlZCBieSB0 aGlzIG1hY2hpbmUiLAo+IC0gICAgICAgICAgICAgICAgIG9iamVjdF9jbGFzc19nZXRfbmFtZShv YmplY3RfZ2V0X2NsYXNzKE9CSkVDVChzYmRldikpKSk7Cj4gLSAgICBleGl0KDEpOwo+ICsgICAg c3RyTGlzdCAqaXRlbSA9IGdfbmV3MChzdHJMaXN0LCAxKTsKPiArCj4gKyAgICBpdGVtLT52YWx1 ZSA9IGdfc3RyZHVwKHR5cGUpOwo+ICsgICAgaXRlbS0+bmV4dCA9IG1jLT5hbGxvd2VkX2R5bmFt aWNfc3lzYnVzX2RldmljZXM7Cj4gKyAgICBtYy0+YWxsb3dlZF9keW5hbWljX3N5c2J1c19kZXZp Y2VzID0gaXRlbTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgbWFjaGluZV9pbml0X25vdGlmeShO b3RpZmllciAqbm90aWZpZXIsIHZvaWQgKmRhdGEpCj4gK3N0YXRpYyB2b2lkIHZhbGlkYXRlX3N5 c2J1c19kZXZpY2UoU3lzQnVzRGV2aWNlICpzYmRldiwgdm9pZCAqb3BhcXVlKQo+ICB7Cj4gLSAg ICBPYmplY3QgKm1hY2hpbmUgPSBxZGV2X2dldF9tYWNoaW5lKCk7Cj4gLSAgICBPYmplY3RDbGFz cyAqb2MgPSBvYmplY3RfZ2V0X2NsYXNzKG1hY2hpbmUpOwo+IC0gICAgTWFjaGluZUNsYXNzICpt YyA9IE1BQ0hJTkVfQ0xBU1Mob2MpOwo+ICsgICAgTWFjaGluZVN0YXRlICptYWNoaW5lID0gb3Bh cXVlOwo+ICsgICAgTWFjaGluZUNsYXNzICptYyA9IE1BQ0hJTkVfR0VUX0NMQVNTKG1hY2hpbmUp Owo+ICsgICAgYm9vbCBhbGxvd2VkID0gZmFsc2U7Cj4gKyAgICBzdHJMaXN0ICp3bDsKPiAgCj4g LSAgICBpZiAobWMtPmhhc19keW5hbWljX3N5c2J1cykgewo+IC0gICAgICAgIC8qIE91ciBtYWNo aW5lIGNhbiBoYW5kbGUgZHluYW1pYyBzeXNidXMgZGV2aWNlcywgd2UncmUgYWxsIGdvb2QgKi8K PiAtICAgICAgICByZXR1cm47Cj4gKyAgICBmb3IgKHdsID0gbWMtPmFsbG93ZWRfZHluYW1pY19z eXNidXNfZGV2aWNlczsKPiArICAgICAgICAgIWFsbG93ZWQgJiYgd2w7Cj4gKyAgICAgICAgIHds ID0gd2wtPm5leHQpIHsKPiArICAgICAgICBhbGxvd2VkIHw9ICEhb2JqZWN0X2R5bmFtaWNfY2Fz dChPQkpFQ1Qoc2JkZXYpLCB3bC0+dmFsdWUpOwo+ICAgICAgfQo+ICAKPiArICAgIGlmICghYWxs b3dlZCkgewo+ICsgICAgICAgIGVycm9yX3JlcG9ydCgiT3B0aW9uICctZGV2aWNlICVzJyBjYW5u b3QgYmUgaGFuZGxlZCBieSB0aGlzIG1hY2hpbmUiLAo+ICsgICAgICAgICAgICAgICAgICAgICBv YmplY3RfY2xhc3NfZ2V0X25hbWUob2JqZWN0X2dldF9jbGFzcyhPQkpFQ1Qoc2JkZXYpKSkpOwo+ ICsgICAgICAgIGV4aXQoMSk7Cj4gKyAgICB9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1hY2hp bmVfaW5pdF9ub3RpZnkoTm90aWZpZXIgKm5vdGlmaWVyLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAg ICBNYWNoaW5lU3RhdGUgKm1hY2hpbmUgPSBNQUNISU5FKHFkZXZfZ2V0X21hY2hpbmUoKSk7Cj4g Kwo+ICAgICAgLyoKPiAtICAgICAqIExvb3AgdGhyb3VnaCBhbGwgZHluYW1pY2FsbHkgY3JlYXRl ZCBkZXZpY2VzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXJlCj4gLSAgICAgKiBhcmUgc3lzYnVzIGRl dmljZXMgYW1vbmcgdGhlbS4gSWYgdGhlcmUgYXJlLCBlcnJvciBvdXQuCj4gKyAgICAgKiBMb29w IHRocm91Z2ggYWxsIGR5bmFtaWNhbGx5IGNyZWF0ZWQgc3lzYnVzIGRldmljZXMgYW5kIGNoZWNr IGlmIHRoZXkgYXJlCj4gKyAgICAgKiBhbGwgYWxsb3dlZC4gIElmIGEgZGV2aWNlIGlzIG5vdCBh bGxvd2VkLCBlcnJvciBvdXQuCj4gICAgICAgKi8KPiAtICAgIGZvcmVhY2hfZHluYW1pY19zeXNi dXNfZGV2aWNlKGVycm9yX29uX3N5c2J1c19kZXZpY2UsIE5VTEwpOwo+ICsgICAgZm9yZWFjaF9k eW5hbWljX3N5c2J1c19kZXZpY2UodmFsaWRhdGVfc3lzYnVzX2RldmljZSwgbWFjaGluZSk7Cj4g IH0KPiAgCj4gIEhvdHBsdWdnYWJsZUNQVUxpc3QgKm1hY2hpbmVfcXVlcnlfaG90cGx1Z2dhYmxl X2NwdXMoTWFjaGluZVN0YXRlICptYWNoaW5lKQo+IGRpZmYgLS1naXQgYS9ody9pMzg2L3BjX3Ez NS5jIGIvaHcvaTM4Ni9wY19xMzUuYwo+IGluZGV4IGQ2MDYwMDQzYWMuLmQwYjBlNWI0MjIgMTAw NjQ0Cj4gLS0tIGEvaHcvaTM4Ni9wY19xMzUuYwo+ICsrKyBiL2h3L2kzODYvcGNfcTM1LmMKPiBA QCAtMjk5LDcgKzI5OSw4IEBAIHN0YXRpYyB2b2lkIHBjX3EzNV9tYWNoaW5lX29wdGlvbnMoTWFj aGluZUNsYXNzICptKQo+ICAgICAgbS0+ZGVmYXVsdF9tYWNoaW5lX29wdHMgPSAiZmlybXdhcmU9 Ymlvcy0yNTZrLmJpbiI7Cj4gICAgICBtLT5kZWZhdWx0X2Rpc3BsYXkgPSAic3RkIjsKPiAgICAg IG0tPm5vX2Zsb3BweSA9IDE7Cj4gLSAgICBtLT5oYXNfZHluYW1pY19zeXNidXMgPSB0cnVlOwo+ ICsgICAgLypUT0RPOiBhbGxvdyBvbmx5IHN5c2J1cyBkZXZpY2VzIHRoYXQgcmVhbGx5IHdvcmsg d2l0aCB0aGlzIG1hY2hpbmUgKi8KPiArICAgIG1hY2hpbmVfY2xhc3NfYWxsb3dfZHluYW1pY19z eXNidXNfZGV2KG0sIFRZUEVfU1lTX0JVU19ERVZJQ0UpOwo+ICAgICAgbS0+bWF4X2NwdXMgPSAy ODg7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2h3L3BwYy9lNTAwcGxhdC5jIGIvaHcvcHBjL2U1 MDBwbGF0LmMKPiBpbmRleCBlNTllODBmYjllLi40MzgxMThjMjliIDEwMDY0NAo+IC0tLSBhL2h3 L3BwYy9lNTAwcGxhdC5jCj4gKysrIGIvaHcvcHBjL2U1MDBwbGF0LmMKPiBAQCAtMTUsNiArMTUs NyBAQAo+ICAjaW5jbHVkZSAiaHcvYm9hcmRzLmgiCj4gICNpbmNsdWRlICJzeXNlbXUvZGV2aWNl X3RyZWUuaCIKPiAgI2luY2x1ZGUgInN5c2VtdS9rdm0uaCIKPiArI2luY2x1ZGUgImh3L3N5c2J1 cy5oIgo+ICAjaW5jbHVkZSAiaHcvcGNpL3BjaS5oIgo+ICAjaW5jbHVkZSAiaHcvcHBjL29wZW5w aWMuaCIKPiAgI2luY2x1ZGUgImt2bV9wcGMuaCIKPiBAQCAtNjMsNyArNjQsOCBAQCBzdGF0aWMg dm9pZCBlNTAwcGxhdF9tYWNoaW5lX2luaXQoTWFjaGluZUNsYXNzICptYykKPiAgICAgIG1jLT5k ZXNjID0gImdlbmVyaWMgcGFyYXZpcnQgZTUwMCBwbGF0Zm9ybSI7Cj4gICAgICBtYy0+aW5pdCA9 IGU1MDBwbGF0X2luaXQ7Cj4gICAgICBtYy0+bWF4X2NwdXMgPSAzMjsKPiAtICAgIG1jLT5oYXNf ZHluYW1pY19zeXNidXMgPSB0cnVlOwo+ICsgICAgLypUT0RPOiBhbGxvdyBvbmx5IHN5c2J1cyBk ZXZpY2VzIHRoYXQgcmVhbGx5IHdvcmsgd2l0aCB0aGlzIG1hY2hpbmUgKi8KPiArICAgIG1hY2hp bmVfY2xhc3NfYWxsb3dfZHluYW1pY19zeXNidXNfZGV2KG1jLCBUWVBFX1NZU19CVVNfREVWSUNF KTsKPiAgICAgIG1jLT5kZWZhdWx0X2NwdV90eXBlID0gUE9XRVJQQ19DUFVfVFlQRV9OQU1FKCJl NTAwdjJfdjMwIik7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2h3L3BwYy9zcGFwci5jIGIvaHcv cHBjL3NwYXByLmMKPiBpbmRleCBkNjgyZjAxM2Q0Li44MjA0MGNjNWQxIDEwMDY0NAo+IC0tLSBh L2h3L3BwYy9zcGFwci5jCj4gKysrIGIvaHcvcHBjL3NwYXByLmMKPiBAQCAtMzYwMyw3ICszNjAz LDggQEAgc3RhdGljIHZvaWQgc3BhcHJfbWFjaGluZV9jbGFzc19pbml0KE9iamVjdENsYXNzICpv Yywgdm9pZCAqZGF0YSkKPiAgICAgIG1jLT5kZWZhdWx0X2Jvb3Rfb3JkZXIgPSAiIjsKPiAgICAg IG1jLT5kZWZhdWx0X3JhbV9zaXplID0gNTEyICogTV9CWVRFOwo+ICAgICAgbWMtPmt2bV90eXBl ID0gc3BhcHJfa3ZtX3R5cGU7Cj4gLSAgICBtYy0+aGFzX2R5bmFtaWNfc3lzYnVzID0gdHJ1ZTsK PiArICAgIC8qVE9ETzogYWxsb3cgb25seSBzeXNidXMgZGV2aWNlcyB0aGF0IHJlYWxseSB3b3Jr IHdpdGggdGhpcyBtYWNoaW5lICovCj4gKyAgICBtYWNoaW5lX2NsYXNzX2FsbG93X2R5bmFtaWNf c3lzYnVzX2RldihtYywgVFlQRV9TWVNfQlVTX0RFVklDRSk7Cj4gICAgICBtYy0+cGNpX2FsbG93 XzBfYWRkcmVzcyA9IHRydWU7Cj4gICAgICBtYy0+Z2V0X2hvdHBsdWdfaGFuZGxlciA9IHNwYXBy X2dldF9ob3RwbHVnX2hhbmRsZXI7Cj4gICAgICBoYy0+cHJlX3BsdWcgPSBzcGFwcl9tYWNoaW5l X2RldmljZV9wcmVfcGx1ZzsKPiBkaWZmIC0tZ2l0IGEvaHcveGVuL3hlbl9iYWNrZW5kLmMgYi9o dy94ZW4veGVuX2JhY2tlbmQuYwo+IGluZGV4IDBmODQ5YTI2ZDIuLjgyMzgwZWE5ZWUgMTAwNjQ0 Cj4gLS0tIGEvaHcveGVuL3hlbl9iYWNrZW5kLmMKPiArKysgYi9ody94ZW4veGVuX2JhY2tlbmQu Ywo+IEBAIC01NjQsNyArNTY0LDEyIEBAIHN0YXRpYyB2b2lkIHhlbl9zZXRfZHluYW1pY19zeXNi dXModm9pZCkKPiAgICAgIE9iamVjdENsYXNzICpvYyA9IG9iamVjdF9nZXRfY2xhc3MobWFjaGlu ZSk7Cj4gICAgICBNYWNoaW5lQ2xhc3MgKm1jID0gTUFDSElORV9DTEFTUyhvYyk7Cj4gIAo+IC0g ICAgbWMtPmhhc19keW5hbWljX3N5c2J1cyA9IHRydWU7Cj4gKyAgICAvKgo+ICsgICAgICogRW11 bGF0ZSBvbGQgbWMtPmhhc19keW5hbWljX3N5c2J1cz10cnVlIGFzc2lnbm1lbnQKPiArICAgICAq Cj4gKyAgICAgKlRPRE86IGFkZCBvbmx5IFhlbiBkZXZpY2VzIHRvIHRoZSBsaXN0Cj4gKyAgICAg Ki8KPiArICAgIG1hY2hpbmVfY2xhc3NfYWxsb3dfZHluYW1pY19zeXNidXNfZGV2KG1jLCBUWVBF X1NZU19CVVNfREVWSUNFKTsKPiAgfQo+ICAKPiAgaW50IHhlbl9iZV9yZWdpc3Rlcihjb25zdCBj aGFyICp0eXBlLCBzdHJ1Y3QgWGVuRGV2T3BzICpvcHMpCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==