mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
hw/cxl/cxl-mailbox-utils: Add dynamic capacity region representative and mailbox command support
Per cxl spec r3.1, add dynamic capacity (DC) region representative based on Table 8-165 and extend the cxl type3 device definition to include DC region information. Also, based on info in 8.2.9.9.9.1, add 'Get Dynamic Capacity Configuration' mailbox support. Note: we store region decode length as byte-wise length on the device, which should be divided by 256 * MiB before being returned to the host for "Get Dynamic Capacity Configuration" mailbox command per specification. Reviewed-by: Gregory Price <gregory.price@memverge.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Fan Ni <fan.ni@samsung.com> Message-Id: <20240523174651.1089554-5-nifan.cxl@gmail.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
7a21e5dedb
commit
0f0f140b10
2 changed files with 112 additions and 0 deletions
|
@ -422,6 +422,17 @@ typedef struct CXLPoison {
|
|||
typedef QLIST_HEAD(, CXLPoison) CXLPoisonList;
|
||||
#define CXL_POISON_LIST_LIMIT 256
|
||||
|
||||
#define DCD_MAX_NUM_REGION 8
|
||||
|
||||
typedef struct CXLDCRegion {
|
||||
uint64_t base; /* aligned to 256*MiB */
|
||||
uint64_t decode_len; /* aligned to 256*MiB */
|
||||
uint64_t len;
|
||||
uint64_t block_size;
|
||||
uint32_t dsmadhandle;
|
||||
uint8_t flags;
|
||||
} CXLDCRegion;
|
||||
|
||||
struct CXLType3Dev {
|
||||
/* Private */
|
||||
PCIDevice parent_obj;
|
||||
|
@ -454,6 +465,11 @@ struct CXLType3Dev {
|
|||
unsigned int poison_list_cnt;
|
||||
bool poison_list_overflowed;
|
||||
uint64_t poison_list_overflow_ts;
|
||||
|
||||
struct dynamic_capacity {
|
||||
uint8_t num_regions; /* 0-8 regions */
|
||||
CXLDCRegion regions[DCD_MAX_NUM_REGION];
|
||||
} dc;
|
||||
};
|
||||
|
||||
#define TYPE_CXL_TYPE3 "cxl-type3"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue