From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.223.159.82 with SMTP id f18csp3359061wrg; Sat, 25 Nov 2017 07:16:45 -0800 (PST) X-Google-Smtp-Source: AGs4zMZXuk6KR7+2LjeNtDiq56O9EgOVS4Z80KdZiBnnZdmUojVVb1lIJE4dtn5wL+2bK7n8SHUf X-Received: by 10.13.241.5 with SMTP id a5mr20269287ywf.427.1511623005827; Sat, 25 Nov 2017 07:16:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511623005; cv=none; d=google.com; s=arc-20160816; b=u05mGF7lJnDPEBrvrz7sLNFXsW7xdBfu/wnIRZRmIYeie0NW+L/Klw03ImzCIZO6K3 k0LTex/qaMU92/3G+msEBOxxeE1nDjzwNvCYhzCjOFfHQ3gF1mhk0dPB+bUVpOr+By9R UT6VUAhlj1SbxBLi4osxbefv1pkSwZ0fjM8+m4D+U2jwETeoiqTgN1MZvzEfpzXvXqd1 A/6s6/Zz75VfzkTLgisPdjDAyKO6ef/MkMjF1o/8CjLIwFzEIlrro4sD1OdkYU85bdgb JC3ZKpqjIPWTYXFyzYPYk9aG/KvRRmN+r0cSI5+r16fZlmepGq686iMvW59cKelVllo3 grIw== 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:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=WKi2/1p993c5FbD0ykGNmqhqEm+jjHeNSEXQWvvAIeo=; b=fYod+6nNtZMCNcu+tIaosBIIusXhEzteiaJP+Libd4F/Jy8PhyO+58gJuO09VOiBpT b/nQSKl6WlCZAmnNMwYOPTox8UXWwigUDfO8mrm3rrU8ynSiRUDgAUi2noHeBLLqknB/ keyvOAFB0qt/4BQax5YQj7AGzJ8gphY8DAJ7KMXfRnqGyD4wn1KcQcykHq/+7M+who2n q8DVoVx6I/AZKNMwumYjvjZQElGqO6FDNxvpD60X4xEaM39xokvrnwudFZSERhYBUvjL Wfl0uUVKNh1wjogaKJ3V0ycwd93IdafSY/HGV7qIhWfSYMCOBTf5KllSfw3ft0SMRGav qRxg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id m195si5143024ybf.602.2017.11.25.07.16.45 for (version=TLS1 cipher=AES128-SHA bits=128/128); Sat, 25 Nov 2017 07:16:45 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:53447 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eIcCD-0005OA-4p for alex.bennee@linaro.org; Sat, 25 Nov 2017 10:16:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47650) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eIcBt-0005Nh-Ib for qemu-arm@nongnu.org; Sat, 25 Nov 2017 10:16:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eIcBr-00054m-TT for qemu-arm@nongnu.org; Sat, 25 Nov 2017 10:16:25 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38052) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eIcBr-00054c-Kk; Sat, 25 Nov 2017 10:16:23 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 48B1F37E72; Sat, 25 Nov 2017 15:16:22 +0000 (UTC) Received: from localhost (ovpn-116-25.gru2.redhat.com [10.97.116.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id ABFC75D9CB; Sat, 25 Nov 2017 15:16:18 +0000 (UTC) From: Eduardo Habkost To: qemu-devel@nongnu.org Date: Sat, 25 Nov 2017 13:16:05 -0200 Message-Id: <20171125151610.20547-2-ehabkost@redhat.com> In-Reply-To: <20171125151610.20547-1-ehabkost@redhat.com> References: <20171125151610.20547-1-ehabkost@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Sat, 25 Nov 2017 15:16:22 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-arm] [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" , Alexander Graf , Anthony Perard , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Marcel Apfelbaum , 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: OtwxbVc1nFN9 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 --- 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) -- 2.13.6 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47680) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eIcBz-0005P4-3z for qemu-devel@nongnu.org; Sat, 25 Nov 2017 10:16:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eIcBw-00055Q-Fa for qemu-devel@nongnu.org; Sat, 25 Nov 2017 10:16:31 -0500 From: Eduardo Habkost Date: Sat, 25 Nov 2017 13:16:05 -0200 Message-Id: <20171125151610.20547-2-ehabkost@redhat.com> In-Reply-To: <20171125151610.20547-1-ehabkost@redhat.com> References: <20171125151610.20547-1-ehabkost@redhat.com> Subject: [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: qemu-devel@nongnu.org Cc: jgross@suse.com, Thomas Huth , sstabellini@kernel.org, Laszlo Ersek , Marcel Apfelbaum , Peter Maydell , "Michael S. Tsirkin" , Alexander Graf , David Gibson , Anthony Perard , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, xen-devel@lists.xenproject.org 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 --- 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) -- 2.13.6 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eduardo Habkost Subject: [PATCH v2 1/6] machine: Replace has_dynamic_sysbus with list of allowed devices Date: Sat, 25 Nov 2017 13:16:05 -0200 Message-ID: <20171125151610.20547-2-ehabkost@redhat.com> References: <20171125151610.20547-1-ehabkost@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIcBu-0001Z2-Ca for xen-devel@lists.xenproject.org; Sat, 25 Nov 2017 15:16:26 +0000 In-Reply-To: <20171125151610.20547-1-ehabkost@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: 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 List-Id: xen-devel@lists.xenproject.org VGhlIGV4aXN0aW5nIGhhc19keW5hbWljX3N5c2J1cyBmbGFnIG1ha2VzIHRoZSBtYWNoaW5lIGFj Y2VwdApldmVyeSB1c2VyLWNyZWF0YWJsZSBzeXNidXMgZGV2aWNlIHR5cGUgb24gdGhlIGNvbW1h bmQtbGluZS4KUmVwbGFjZSBpdCB3aXRoIGEgbGlzdCBvZiBhbGxvd2VkIGRldmljZSB0eXBlcywg c28gbWFjaGluZXMgY2FuCmVhc2lseSBhY2NlcHQgc29tZSBzeXNidXMgZGV2aWNlcyB3aGlsZSBy ZWplY3Rpbmcgb3RoZXJzLgoKVG8ga2VlcCBleGFjdGx5IHRoZSBzYW1lIGJlaGF2aW9yIGFzIGJl Zm9yZSwgdGhlIGV4aXN0aW5nCmhhc19keW5hbWljX3N5c2J1cz10cnVlIGFzc2lnbm1lbnRzIGFy ZSByZXBsYWNlZCB3aXRoIGEKVFlQRV9TWVNfQlVTX0RFVklDRSBlbnRyeSBvbiB0aGUgYWxsb3dl ZCBsaXN0LiAgT3RoZXIgcGF0Y2hlcwp3aWxsIHJlcGxhY2UgdGhlIFRZUEVfU1lTX0JVU19ERVZJ Q0UgZW50cmllcyB3aXRoIG1vcmUgc3BlY2lmaWMKbGlzdHMgb2YgZGV2aWNlcy4KCkNjOiBQZXRl ciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+CkNjOiBNYXJjZWwgQXBmZWxiYXVt IDxtYXJjZWxAcmVkaGF0LmNvbT4KQ2M6ICJNaWNoYWVsIFMuIFRzaXJraW4iIDxtc3RAcmVkaGF0 LmNvbT4KQ2M6IEFsZXhhbmRlciBHcmFmIDxhZ3JhZkBzdXNlLmRlPgpDYzogRGF2aWQgR2lic29u IDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNz dGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5wZXJhcmRA Y2l0cml4LmNvbT4KQ2M6IHFlbXUtYXJtQG5vbmdudS5vcmcKQ2M6IHFlbXUtcHBjQG5vbmdudS5v cmcKQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpTaWduZWQtb2ZmLWJ5OiBFZHVh cmRvIEhhYmtvc3QgPGVoYWJrb3N0QHJlZGhhdC5jb20+Ci0tLQpDaGFuZ2VzIHYxIC0+IHYyOgoq IFJlcGxhY2UgImR5bmFtaWMgc3lzYnVzIHdoaXRlbGlzdCIgd2l0aCAiYWxsb3dlZCBzeXNidXMg ZGV2aWNlcyIKKiBTaW1wbHkgYWRkIFRZUEVfU1lTX0JVU19ERVZJQ0UgdG8gdGhlIGxpc3Qgb24g ZXhpc3RpbmcKICBoYXNfZHluYW1pY19zeXNidXM9dHJ1ZSBtYWNoaW5lcywgYW5kIG1ha2UgbWFj aGluZS10eXBlcyBtb3JlCiAgc3RyaWN0IGluIHNlcGFyYXRlIHBhdGNoZXMKLS0tCiBpbmNsdWRl L2h3L2JvYXJkcy5oICB8ICA1ICsrKystCiBody9hcm0vdmlydC5jICAgICAgICB8ICAzICsrLQog aHcvY29yZS9tYWNoaW5lLmMgICAgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tCiBody9pMzg2L3BjX3EzNS5jICAgICB8ICAzICsrLQogaHcvcHBjL2U1MDBw bGF0LmMgICAgfCAgNCArKystCiBody9wcGMvc3BhcHIuYyAgICAgICB8ICAzICsrLQogaHcveGVu L3hlbl9iYWNrZW5kLmMgfCAgNyArKysrKystCiA3IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlv bnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcvYm9hcmRzLmgg Yi9pbmNsdWRlL2h3L2JvYXJkcy5oCmluZGV4IDE1NmIxNmY3YTYuLjA0MWJjMDg5NzEgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvaHcvYm9hcmRzLmgKKysrIGIvaW5jbHVkZS9ody9ib2FyZHMuaApAQCAt NzYsNiArNzYsOSBAQCB2b2lkIG1hY2hpbmVfc2V0X2NwdV9udW1hX25vZGUoTWFjaGluZVN0YXRl ICptYWNoaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENwdUluc3Rh bmNlUHJvcGVydGllcyAqcHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJy b3IgKiplcnJwKTsKIAordm9pZCBtYWNoaW5lX2NsYXNzX2FsbG93X2R5bmFtaWNfc3lzYnVzX2Rl dihNYWNoaW5lQ2xhc3MgKm1jLCBjb25zdCBjaGFyICp0eXBlKTsKKworCiAvKioKICAqIENQVUFy Y2hJZDoKICAqIEBhcmNoX2lkIC0gYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBDUFUgSUQgb2YgcHJl c2VudCBvciBwb3NzaWJsZSBDUFUKQEAgLTE3OSw3ICsxODIsNiBAQCBzdHJ1Y3QgTWFjaGluZUNs YXNzIHsKICAgICAgICAgbm9fZmxvcHB5OjEsCiAgICAgICAgIG5vX2Nkcm9tOjEsCiAgICAgICAg IG5vX3NkY2FyZDoxLAotICAgICAgICBoYXNfZHluYW1pY19zeXNidXM6MSwKICAgICAgICAgcGNp X2FsbG93XzBfYWRkcmVzczoxLAogICAgICAgICBsZWdhY3lfZndfY2ZnX29yZGVyOjE7CiAgICAg aW50IGlzX2RlZmF1bHQ7CkBAIC0xOTcsNiArMTk5LDcgQEAgc3RydWN0IE1hY2hpbmVDbGFzcyB7 CiAgICAgYm9vbCBpZ25vcmVfbWVtb3J5X3RyYW5zYWN0aW9uX2ZhaWx1cmVzOwogICAgIGludCBu dW1hX21lbV9hbGlnbl9zaGlmdDsKICAgICBjb25zdCBjaGFyICoqdmFsaWRfY3B1X3R5cGVzOwor ICAgIHN0ckxpc3QgKmFsbG93ZWRfZHluYW1pY19zeXNidXNfZGV2aWNlczsKICAgICBib29sIGF1 dG9fZW5hYmxlX251bWFfd2l0aF9tZW1ocDsKICAgICB2b2lkICgqbnVtYV9hdXRvX2Fzc2lnbl9y YW0pKE1hY2hpbmVDbGFzcyAqbWMsIE5vZGVJbmZvICpub2RlcywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBuYl9ub2RlcywgcmFtX2FkZHJfdCBzaXplKTsKZGlmZiAtLWdp dCBhL2h3L2FybS92aXJ0LmMgYi9ody9hcm0vdmlydC5jCmluZGV4IDllMThiNDEwZDcuLmZhNmRj MTVmY2QgMTAwNjQ0Ci0tLSBhL2h3L2FybS92aXJ0LmMKKysrIGIvaHcvYXJtL3ZpcnQuYwpAQCAt MTU5MSw3ICsxNTkxLDggQEAgc3RhdGljIHZvaWQgdmlydF9tYWNoaW5lX2NsYXNzX2luaXQoT2Jq ZWN0Q2xhc3MgKm9jLCB2b2lkICpkYXRhKQogICAgICAqIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHBh cnRpY3VsYXIgaW5zdGFuY2UuCiAgICAgICovCiAgICAgbWMtPm1heF9jcHVzID0gMjU1OwotICAg IG1jLT5oYXNfZHluYW1pY19zeXNidXMgPSB0cnVlOworICAgIC8qVE9ETzogYWxsb3cgb25seSBz eXNidXMgZGV2aWNlcyB0aGF0IHJlYWxseSB3b3JrIHdpdGggdGhpcyBtYWNoaW5lICovCisgICAg bWFjaGluZV9jbGFzc19hbGxvd19keW5hbWljX3N5c2J1c19kZXYobWMsIFRZUEVfU1lTX0JVU19E RVZJQ0UpOwogICAgIG1jLT5ibG9ja19kZWZhdWx0X3R5cGUgPSBJRl9WSVJUSU87CiAgICAgbWMt Pm5vX2Nkcm9tID0gMTsKICAgICBtYy0+cGNpX2FsbG93XzBfYWRkcmVzcyA9IHRydWU7CmRpZmYg LS1naXQgYS9ody9jb3JlL21hY2hpbmUuYyBiL2h3L2NvcmUvbWFjaGluZS5jCmluZGV4IDM2YzJm YjA2OWMuLmFiMmVjMjkyZjMgMTAwNjQ0Ci0tLSBhL2h3L2NvcmUvbWFjaGluZS5jCisrKyBiL2h3 L2NvcmUvbWFjaGluZS5jCkBAIC0zMzUsMjkgKzMzNSw0NCBAQCBzdGF0aWMgYm9vbCBtYWNoaW5l X2dldF9lbmZvcmNlX2NvbmZpZ19zZWN0aW9uKE9iamVjdCAqb2JqLCBFcnJvciAqKmVycnApCiAg ICAgcmV0dXJuIG1zLT5lbmZvcmNlX2NvbmZpZ19zZWN0aW9uOwogfQogCi1zdGF0aWMgdm9pZCBl cnJvcl9vbl9zeXNidXNfZGV2aWNlKFN5c0J1c0RldmljZSAqc2JkZXYsIHZvaWQgKm9wYXF1ZSkK K3ZvaWQgbWFjaGluZV9jbGFzc19hbGxvd19keW5hbWljX3N5c2J1c19kZXYoTWFjaGluZUNsYXNz ICptYywgY29uc3QgY2hhciAqdHlwZSkKIHsKLSAgICBlcnJvcl9yZXBvcnQoIk9wdGlvbiAnLWRl dmljZSAlcycgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBtYWNoaW5lIiwKLSAgICAgICAgICAg ICAgICAgb2JqZWN0X2NsYXNzX2dldF9uYW1lKG9iamVjdF9nZXRfY2xhc3MoT0JKRUNUKHNiZGV2 KSkpKTsKLSAgICBleGl0KDEpOworICAgIHN0ckxpc3QgKml0ZW0gPSBnX25ldzAoc3RyTGlzdCwg MSk7CisKKyAgICBpdGVtLT52YWx1ZSA9IGdfc3RyZHVwKHR5cGUpOworICAgIGl0ZW0tPm5leHQg PSBtYy0+YWxsb3dlZF9keW5hbWljX3N5c2J1c19kZXZpY2VzOworICAgIG1jLT5hbGxvd2VkX2R5 bmFtaWNfc3lzYnVzX2RldmljZXMgPSBpdGVtOwogfQogCi1zdGF0aWMgdm9pZCBtYWNoaW5lX2lu aXRfbm90aWZ5KE5vdGlmaWVyICpub3RpZmllciwgdm9pZCAqZGF0YSkKK3N0YXRpYyB2b2lkIHZh bGlkYXRlX3N5c2J1c19kZXZpY2UoU3lzQnVzRGV2aWNlICpzYmRldiwgdm9pZCAqb3BhcXVlKQog ewotICAgIE9iamVjdCAqbWFjaGluZSA9IHFkZXZfZ2V0X21hY2hpbmUoKTsKLSAgICBPYmplY3RD bGFzcyAqb2MgPSBvYmplY3RfZ2V0X2NsYXNzKG1hY2hpbmUpOwotICAgIE1hY2hpbmVDbGFzcyAq bWMgPSBNQUNISU5FX0NMQVNTKG9jKTsKKyAgICBNYWNoaW5lU3RhdGUgKm1hY2hpbmUgPSBvcGFx dWU7CisgICAgTWFjaGluZUNsYXNzICptYyA9IE1BQ0hJTkVfR0VUX0NMQVNTKG1hY2hpbmUpOwor ICAgIGJvb2wgYWxsb3dlZCA9IGZhbHNlOworICAgIHN0ckxpc3QgKndsOwogCi0gICAgaWYgKG1j LT5oYXNfZHluYW1pY19zeXNidXMpIHsKLSAgICAgICAgLyogT3VyIG1hY2hpbmUgY2FuIGhhbmRs ZSBkeW5hbWljIHN5c2J1cyBkZXZpY2VzLCB3ZSdyZSBhbGwgZ29vZCAqLwotICAgICAgICByZXR1 cm47CisgICAgZm9yICh3bCA9IG1jLT5hbGxvd2VkX2R5bmFtaWNfc3lzYnVzX2RldmljZXM7Cisg ICAgICAgICAhYWxsb3dlZCAmJiB3bDsKKyAgICAgICAgIHdsID0gd2wtPm5leHQpIHsKKyAgICAg ICAgYWxsb3dlZCB8PSAhIW9iamVjdF9keW5hbWljX2Nhc3QoT0JKRUNUKHNiZGV2KSwgd2wtPnZh bHVlKTsKICAgICB9CiAKKyAgICBpZiAoIWFsbG93ZWQpIHsKKyAgICAgICAgZXJyb3JfcmVwb3J0 KCJPcHRpb24gJy1kZXZpY2UgJXMnIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgbWFjaGluZSIs CisgICAgICAgICAgICAgICAgICAgICBvYmplY3RfY2xhc3NfZ2V0X25hbWUob2JqZWN0X2dldF9j bGFzcyhPQkpFQ1Qoc2JkZXYpKSkpOworICAgICAgICBleGl0KDEpOworICAgIH0KK30KKworc3Rh dGljIHZvaWQgbWFjaGluZV9pbml0X25vdGlmeShOb3RpZmllciAqbm90aWZpZXIsIHZvaWQgKmRh dGEpCit7CisgICAgTWFjaGluZVN0YXRlICptYWNoaW5lID0gTUFDSElORShxZGV2X2dldF9tYWNo aW5lKCkpOworCiAgICAgLyoKLSAgICAgKiBMb29wIHRocm91Z2ggYWxsIGR5bmFtaWNhbGx5IGNy ZWF0ZWQgZGV2aWNlcyBhbmQgY2hlY2sgd2hldGhlciB0aGVyZQotICAgICAqIGFyZSBzeXNidXMg ZGV2aWNlcyBhbW9uZyB0aGVtLiBJZiB0aGVyZSBhcmUsIGVycm9yIG91dC4KKyAgICAgKiBMb29w IHRocm91Z2ggYWxsIGR5bmFtaWNhbGx5IGNyZWF0ZWQgc3lzYnVzIGRldmljZXMgYW5kIGNoZWNr IGlmIHRoZXkgYXJlCisgICAgICogYWxsIGFsbG93ZWQuICBJZiBhIGRldmljZSBpcyBub3QgYWxs b3dlZCwgZXJyb3Igb3V0LgogICAgICAqLwotICAgIGZvcmVhY2hfZHluYW1pY19zeXNidXNfZGV2 aWNlKGVycm9yX29uX3N5c2J1c19kZXZpY2UsIE5VTEwpOworICAgIGZvcmVhY2hfZHluYW1pY19z eXNidXNfZGV2aWNlKHZhbGlkYXRlX3N5c2J1c19kZXZpY2UsIG1hY2hpbmUpOwogfQogCiBIb3Rw bHVnZ2FibGVDUFVMaXN0ICptYWNoaW5lX3F1ZXJ5X2hvdHBsdWdnYWJsZV9jcHVzKE1hY2hpbmVT dGF0ZSAqbWFjaGluZSkKZGlmZiAtLWdpdCBhL2h3L2kzODYvcGNfcTM1LmMgYi9ody9pMzg2L3Bj X3EzNS5jCmluZGV4IGQ2MDYwMDQzYWMuLmQwYjBlNWI0MjIgMTAwNjQ0Ci0tLSBhL2h3L2kzODYv cGNfcTM1LmMKKysrIGIvaHcvaTM4Ni9wY19xMzUuYwpAQCAtMjk5LDcgKzI5OSw4IEBAIHN0YXRp YyB2b2lkIHBjX3EzNV9tYWNoaW5lX29wdGlvbnMoTWFjaGluZUNsYXNzICptKQogICAgIG0tPmRl ZmF1bHRfbWFjaGluZV9vcHRzID0gImZpcm13YXJlPWJpb3MtMjU2ay5iaW4iOwogICAgIG0tPmRl ZmF1bHRfZGlzcGxheSA9ICJzdGQiOwogICAgIG0tPm5vX2Zsb3BweSA9IDE7Ci0gICAgbS0+aGFz X2R5bmFtaWNfc3lzYnVzID0gdHJ1ZTsKKyAgICAvKlRPRE86IGFsbG93IG9ubHkgc3lzYnVzIGRl dmljZXMgdGhhdCByZWFsbHkgd29yayB3aXRoIHRoaXMgbWFjaGluZSAqLworICAgIG1hY2hpbmVf Y2xhc3NfYWxsb3dfZHluYW1pY19zeXNidXNfZGV2KG0sIFRZUEVfU1lTX0JVU19ERVZJQ0UpOwog ICAgIG0tPm1heF9jcHVzID0gMjg4OwogfQogCmRpZmYgLS1naXQgYS9ody9wcGMvZTUwMHBsYXQu YyBiL2h3L3BwYy9lNTAwcGxhdC5jCmluZGV4IGU1OWU4MGZiOWUuLjQzODExOGMyOWIgMTAwNjQ0 Ci0tLSBhL2h3L3BwYy9lNTAwcGxhdC5jCisrKyBiL2h3L3BwYy9lNTAwcGxhdC5jCkBAIC0xNSw2 ICsxNSw3IEBACiAjaW5jbHVkZSAiaHcvYm9hcmRzLmgiCiAjaW5jbHVkZSAic3lzZW11L2Rldmlj ZV90cmVlLmgiCiAjaW5jbHVkZSAic3lzZW11L2t2bS5oIgorI2luY2x1ZGUgImh3L3N5c2J1cy5o IgogI2luY2x1ZGUgImh3L3BjaS9wY2kuaCIKICNpbmNsdWRlICJody9wcGMvb3BlbnBpYy5oIgog I2luY2x1ZGUgImt2bV9wcGMuaCIKQEAgLTYzLDcgKzY0LDggQEAgc3RhdGljIHZvaWQgZTUwMHBs YXRfbWFjaGluZV9pbml0KE1hY2hpbmVDbGFzcyAqbWMpCiAgICAgbWMtPmRlc2MgPSAiZ2VuZXJp YyBwYXJhdmlydCBlNTAwIHBsYXRmb3JtIjsKICAgICBtYy0+aW5pdCA9IGU1MDBwbGF0X2luaXQ7 CiAgICAgbWMtPm1heF9jcHVzID0gMzI7Ci0gICAgbWMtPmhhc19keW5hbWljX3N5c2J1cyA9IHRy dWU7CisgICAgLypUT0RPOiBhbGxvdyBvbmx5IHN5c2J1cyBkZXZpY2VzIHRoYXQgcmVhbGx5IHdv cmsgd2l0aCB0aGlzIG1hY2hpbmUgKi8KKyAgICBtYWNoaW5lX2NsYXNzX2FsbG93X2R5bmFtaWNf c3lzYnVzX2RldihtYywgVFlQRV9TWVNfQlVTX0RFVklDRSk7CiAgICAgbWMtPmRlZmF1bHRfY3B1 X3R5cGUgPSBQT1dFUlBDX0NQVV9UWVBFX05BTUUoImU1MDB2Ml92MzAiKTsKIH0KIApkaWZmIC0t Z2l0IGEvaHcvcHBjL3NwYXByLmMgYi9ody9wcGMvc3BhcHIuYwppbmRleCBkNjgyZjAxM2Q0Li44 MjA0MGNjNWQxIDEwMDY0NAotLS0gYS9ody9wcGMvc3BhcHIuYworKysgYi9ody9wcGMvc3BhcHIu YwpAQCAtMzYwMyw3ICszNjAzLDggQEAgc3RhdGljIHZvaWQgc3BhcHJfbWFjaGluZV9jbGFzc19p bml0KE9iamVjdENsYXNzICpvYywgdm9pZCAqZGF0YSkKICAgICBtYy0+ZGVmYXVsdF9ib290X29y ZGVyID0gIiI7CiAgICAgbWMtPmRlZmF1bHRfcmFtX3NpemUgPSA1MTIgKiBNX0JZVEU7CiAgICAg bWMtPmt2bV90eXBlID0gc3BhcHJfa3ZtX3R5cGU7Ci0gICAgbWMtPmhhc19keW5hbWljX3N5c2J1 cyA9IHRydWU7CisgICAgLypUT0RPOiBhbGxvdyBvbmx5IHN5c2J1cyBkZXZpY2VzIHRoYXQgcmVh bGx5IHdvcmsgd2l0aCB0aGlzIG1hY2hpbmUgKi8KKyAgICBtYWNoaW5lX2NsYXNzX2FsbG93X2R5 bmFtaWNfc3lzYnVzX2RldihtYywgVFlQRV9TWVNfQlVTX0RFVklDRSk7CiAgICAgbWMtPnBjaV9h bGxvd18wX2FkZHJlc3MgPSB0cnVlOwogICAgIG1jLT5nZXRfaG90cGx1Z19oYW5kbGVyID0gc3Bh cHJfZ2V0X2hvdHBsdWdfaGFuZGxlcjsKICAgICBoYy0+cHJlX3BsdWcgPSBzcGFwcl9tYWNoaW5l X2RldmljZV9wcmVfcGx1ZzsKZGlmZiAtLWdpdCBhL2h3L3hlbi94ZW5fYmFja2VuZC5jIGIvaHcv eGVuL3hlbl9iYWNrZW5kLmMKaW5kZXggMGY4NDlhMjZkMi4uODIzODBlYTllZSAxMDA2NDQKLS0t IGEvaHcveGVuL3hlbl9iYWNrZW5kLmMKKysrIGIvaHcveGVuL3hlbl9iYWNrZW5kLmMKQEAgLTU2 NCw3ICs1NjQsMTIgQEAgc3RhdGljIHZvaWQgeGVuX3NldF9keW5hbWljX3N5c2J1cyh2b2lkKQog ICAgIE9iamVjdENsYXNzICpvYyA9IG9iamVjdF9nZXRfY2xhc3MobWFjaGluZSk7CiAgICAgTWFj aGluZUNsYXNzICptYyA9IE1BQ0hJTkVfQ0xBU1Mob2MpOwogCi0gICAgbWMtPmhhc19keW5hbWlj X3N5c2J1cyA9IHRydWU7CisgICAgLyoKKyAgICAgKiBFbXVsYXRlIG9sZCBtYy0+aGFzX2R5bmFt aWNfc3lzYnVzPXRydWUgYXNzaWdubWVudAorICAgICAqCisgICAgICpUT0RPOiBhZGQgb25seSBY ZW4gZGV2aWNlcyB0byB0aGUgbGlzdAorICAgICAqLworICAgIG1hY2hpbmVfY2xhc3NfYWxsb3df ZHluYW1pY19zeXNidXNfZGV2KG1jLCBUWVBFX1NZU19CVVNfREVWSUNFKTsKIH0KIAogaW50IHhl bl9iZV9yZWdpc3Rlcihjb25zdCBjaGFyICp0eXBlLCBzdHJ1Y3QgWGVuRGV2T3BzICpvcHMpCi0t IAoyLjEzLjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs