[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 14/20] memory-device: ids of virtio based dev
From: |
David Hildenbrand |
Subject: |
Re: [Qemu-devel] [PATCH v2 14/20] memory-device: ids of virtio based devices are special |
Date: |
Fri, 31 Aug 2018 13:26:03 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 31.08.2018 13:23, Eduardo Habkost wrote:
> On Wed, Aug 29, 2018 at 05:36:18PM +0200, David Hildenbrand wrote:
>> When reporting the id of virtio-based memory devices, we always have to
>> take the one of the proxy device (parent).
>>
>> Expose the function, so especially virtio-based memory devices can
>> reuse the function when filling out the id in MemoryDeviceInfo.
>>
>> Details:
>>
>> When the user creates a virtio device (e.g. virtio-balloon-pci), two
>> devices are actually created.
>>
>> 1. Virtio proxy device (e.g. TYPE_VIRTIO_BALLOON_PCI)
>> 2. The "real" virtio device (e.g. TYPE_VIRTIO_BALLOON).
>>
>> 1. aliases all properties of 2, so 2. can be properly configured using 1.
>> 1. gets the device ID set specified by the user. 2. gets no ID set.
>>
>> If we want to make 2. a MemoryDevice but report errors/information to the
>> user, we always have to report the id of 1. (because that's the device the
>> user instantiated and configured).
>>
>> Signed-off-by: David Hildenbrand <address@hidden>
>> ---
>> hw/mem/memory-device.c | 21 +++++++++++++++++++--
>> include/hw/mem/memory-device.h | 1 +
>> 2 files changed, 20 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c
>> index a31ba73ea7..89a0c584be 100644
>> --- a/hw/mem/memory-device.c
>> +++ b/hw/mem/memory-device.c
>> @@ -19,6 +19,22 @@
>> #include "sysemu/kvm.h"
>> #include "trace.h"
>>
>> +const char *memory_device_id(const MemoryDeviceState *md)
>> +{
>> + Object *obj = OBJECT(md);
>> +
>> + /* always use the ID of the proxy device for virtio devices */
>> + if (object_dynamic_cast(obj, TYPE_VIRTIO_DEVICE)) {
>> + if (obj->parent && object_dynamic_cast(obj->parent, TYPE_DEVICE)) {
>> + const DeviceState *parent_dev = DEVICE(obj->parent);
>> +
>> + return parent_dev->id;
>> + }
>> + return NULL;
>
> I don't like having virtio-specific code on memory-device.c.
> What about making it generic? Let device 2 register a read-only
> property for the user-visible ID, and make memory_device_id() use
> that property if it's present.
Valid point. Or avoid properties and add a function to the memory-device
class?
--
Thanks,
David / dhildenb
- [Qemu-devel] [PATCH v2 12/20] memory-device: trace when pre_assigning/assigning/unassigning addresses, (continued)
Re: [Qemu-devel] [PATCH v2 14/20] memory-device: ids of virtio based devices are special, Eduardo Habkost, 2018/08/31
[Qemu-devel] [PATCH v2 15/20] virtio-pmem: prototype, David Hildenbrand, 2018/08/29
[Qemu-devel] [PATCH v2 17/20] hmp: handle virtio-pmem when printing memory device infos, David Hildenbrand, 2018/08/29
[Qemu-devel] [PATCH v2 16/20] virtio-pci: proxy for virtio-pmem, David Hildenbrand, 2018/08/29
[Qemu-devel] [PATCH v2 18/20] numa: handle virtio-pmem in NUMA stats, David Hildenbrand, 2018/08/29
[Qemu-devel] [PATCH v2 19/20] virtio-pmem: hotplug support functions, David Hildenbrand, 2018/08/29
[Qemu-devel] [PATCH v2 20/20] pc: support for virtio-pmem, David Hildenbrand, 2018/08/29