[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 3/4] hw/acpi/vmgenid: prevent device realization
From: |
Laszlo Ersek |
Subject: |
Re: [Qemu-devel] [PULL 3/4] hw/acpi/vmgenid: prevent device realization on pre-2.5 machine types |
Date: |
Wed, 22 Mar 2017 17:19:28 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 |
On 03/22/17 17:01, Michael S. Tsirkin wrote:
> From: Laszlo Ersek <address@hidden>
>
> The WRITE_POINTER linker/loader command that underlies VMGENID depends on
> commit baf2d5bfbac0 ("fw-cfg: support writeable blobs", 2017-01-12), which
> in turn depends on fw_cfg DMA.
>
> DMA for fw_cfg is enabled in 2.5+ machine types only (see commit
> e6915b5f3a87, "fw_cfg: unbreak migration compatibility for 2.4 and earlier
> machines", 2016-02-18).
>
> Cc: "Michael S. Tsirkin" <address@hidden>
> Cc: Ben Warren <address@hidden>
> Cc: Igor Mammedov <address@hidden>
> Cc: Paolo Bonzini <address@hidden>
> Signed-off-by: Laszlo Ersek <address@hidden>
> Reviewed-by: Michael S. Tsirkin <address@hidden>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
Can you please add the feedback tags from Ben and Igor?
http://mid.mail-archive.com/address@hidden
http://mid.mail-archive.com/address@hidden
Thanks,
Laszlo
> ---
> include/hw/acpi/vmgenid.h | 1 +
> include/hw/compat.h | 4 ++++
> hw/acpi/vmgenid.c | 14 ++++++++++++++
> 3 files changed, 19 insertions(+)
>
> diff --git a/include/hw/acpi/vmgenid.h b/include/hw/acpi/vmgenid.h
> index db7fa0e..8578476 100644
> --- a/include/hw/acpi/vmgenid.h
> +++ b/include/hw/acpi/vmgenid.h
> @@ -21,6 +21,7 @@ typedef struct VmGenIdState {
> DeviceClass parent_obj;
> QemuUUID guid; /* The 128-bit GUID seen by the guest */
> uint8_t vmgenid_addr_le[8]; /* Address of the GUID (little-endian) */
> + bool write_pointer_available;
> } VmGenIdState;
>
> static inline Object *find_vmgenid_dev(void)
> diff --git a/include/hw/compat.h b/include/hw/compat.h
> index fc8c3e0..5d5be91 100644
> --- a/include/hw/compat.h
> +++ b/include/hw/compat.h
> @@ -131,6 +131,10 @@
> .driver = "fw_cfg_io",\
> .property = "dma_enabled",\
> .value = "off",\
> + },{\
> + .driver = "vmgenid",\
> + .property = "x-write-pointer-available",\
> + .value = "off",\
> },
>
> #define HW_COMPAT_2_3 \
> diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
> index 7a3ad17..c3ddcc8 100644
> --- a/hw/acpi/vmgenid.c
> +++ b/hw/acpi/vmgenid.c
> @@ -205,9 +205,22 @@ static void vmgenid_handle_reset(void *opaque)
> memset(vms->vmgenid_addr_le, 0, ARRAY_SIZE(vms->vmgenid_addr_le));
> }
>
> +static Property vmgenid_properties[] = {
> + DEFINE_PROP_BOOL("x-write-pointer-available", VmGenIdState,
> + write_pointer_available, true),
> + DEFINE_PROP_END_OF_LIST(),
> +};
> +
> static void vmgenid_realize(DeviceState *dev, Error **errp)
> {
> VmGenIdState *vms = VMGENID(dev);
> +
> + if (!vms->write_pointer_available) {
> + error_setg(errp, "%s requires DMA write support in fw_cfg, "
> + "which this machine type does not provide",
> VMGENID_DEVICE);
> + return;
> + }
> +
> qemu_register_reset(vmgenid_handle_reset, vms);
> }
>
> @@ -218,6 +231,7 @@ static void vmgenid_device_class_init(ObjectClass *klass,
> void *data)
> dc->vmsd = &vmstate_vmgenid;
> dc->realize = vmgenid_realize;
> dc->hotpluggable = false;
> + dc->props = vmgenid_properties;
>
> object_class_property_add_str(klass, VMGENID_GUID, NULL,
> vmgenid_set_guid, NULL);
>
- [Qemu-devel] [PULL 0/4] virtio, pc: fixes, Michael S. Tsirkin, 2017/03/22
- [Qemu-devel] [PULL 3/4] hw/acpi/vmgenid: prevent device realization on pre-2.5 machine types, Michael S. Tsirkin, 2017/03/22
- Re: [Qemu-devel] [PULL 3/4] hw/acpi/vmgenid: prevent device realization on pre-2.5 machine types,
Laszlo Ersek <=
- [Qemu-devel] [PULL 1/4] virtio: Fix error handling in virtio_bus_device_plugged, Michael S. Tsirkin, 2017/03/22
- [Qemu-devel] [PULL 2/4] virtio: always use handle_aio_output if registered, Michael S. Tsirkin, 2017/03/22
- [Qemu-devel] [PULL 4/4] hw/acpi/vmgenid: prevent more than one vmgenid device, Michael S. Tsirkin, 2017/03/22
- Re: [Qemu-devel] [PULL 0/4] virtio, pc: fixes, Michael S. Tsirkin, 2017/03/22
- Re: [Qemu-devel] [PULL 0/4] virtio, pc: fixes, Peter Maydell, 2017/03/23