Skip to content
  • David Hildenbrand's avatar
    pc-dimm: factor out MemoryDevice interface · 2cc0e2e8
    David Hildenbrand authored
    
    
    On the qmp level, we already have the concept of memory devices:
        "query-memory-devices"
    Right now, we only support NVDIMM and PCDIMM.
    
    We want to map other devices later into the address space of the guest.
    Such device could e.g. be virtio devices. These devices will have a
    guest memory range assigned but won't be exposed via e.g. ACPI. We want
    to make them look like memory device, but not glued to pc-dimm.
    
    Especially, it will not always be possible to have TYPE_PC_DIMM as a parent
    class (e.g. virtio devices). Let's use an interface instead. As a first
    part, convert handling of
    - qmp_pc_dimm_device_list
    - get_plugged_memory_size
    to our new model. plug/unplug stuff etc. will follow later.
    
    A memory device will have to provide the following functions:
    - get_addr(): Necessary, as the property "addr" can e.g. not be used for
                  virtio devices (already defined).
    - get_plugged_size(): The amount this device offers to the guest as of
                          now.
    - get_region_size(): Because this can later on be bigger than the
                         plugged size.
    - fill_device_info(): Fill MemoryDeviceInfo, e.g. for qmp.
    
    Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20180423165126.15441-2-david@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    2cc0e2e8