mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
hw/cxl: Multi-Region CXL Type-3 Devices (Volatile and Persistent)
This commit enables each CXL Type-3 device to contain one volatile memory region and one persistent region. Two new properties have been added to cxl-type3 device initialization: [volatile-memdev] and [persistent-memdev] The existing [memdev] property has been deprecated and will default the memory region to a persistent memory region (although a user may assign the region to a ram or file backed region). It cannot be used in combination with the new [persistent-memdev] property. Partitioning volatile memory from persistent memory is not yet supported. Volatile memory is mapped at DPA(0x0), while Persistent memory is mapped at DPA(vmem->size), per CXL Spec 8.2.9.8.2.0 - Get Partition Info. Signed-off-by: Gregory Price <gregory.price@memverge.com> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net> Reviewed-by: Fan Ni <fan.ni@samsung.com> Tested-by: Fan Ni <fan.ni@samsung.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20230421160827.2227-4-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
3521176526
commit
adacc814f5
7 changed files with 371 additions and 119 deletions
|
@ -119,8 +119,10 @@ typedef struct cxl_device_state {
|
|||
uint64_t host_set;
|
||||
} timestamp;
|
||||
|
||||
/* memory region for persistent memory, HDM */
|
||||
/* memory region size, HDM */
|
||||
uint64_t mem_size;
|
||||
uint64_t pmem_size;
|
||||
uint64_t vmem_size;
|
||||
} CXLDeviceState;
|
||||
|
||||
/* Initialize the register block for a device */
|
||||
|
@ -245,12 +247,15 @@ struct CXLType3Dev {
|
|||
PCIDevice parent_obj;
|
||||
|
||||
/* Properties */
|
||||
HostMemoryBackend *hostmem;
|
||||
HostMemoryBackend *hostmem; /* deprecated */
|
||||
HostMemoryBackend *hostvmem;
|
||||
HostMemoryBackend *hostpmem;
|
||||
HostMemoryBackend *lsa;
|
||||
uint64_t sn;
|
||||
|
||||
/* State */
|
||||
AddressSpace hostmem_as;
|
||||
AddressSpace hostvmem_as;
|
||||
AddressSpace hostpmem_as;
|
||||
CXLComponentState cxl_cstate;
|
||||
CXLDeviceState cxl_dstate;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue