mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
hw/cxl: Add support for device sanitation
Make use of the background operations through the sanitize command, per CXL 3.0 specs. Traditionally run times can be rather long, depending on the size of the media. Estimate times based on: https://pmem.io/documents/NVDIMM_DSM_Interface-V1.8.pdf Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20231023160806.13206-14-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
43efb0bfad
commit
25a52959f9
3 changed files with 167 additions and 0 deletions
|
@ -343,6 +343,23 @@ REG64(CXL_MEM_DEV_STS, 0)
|
|||
FIELD(CXL_MEM_DEV_STS, MBOX_READY, 4, 1)
|
||||
FIELD(CXL_MEM_DEV_STS, RESET_NEEDED, 5, 3)
|
||||
|
||||
static inline void __toggle_media(CXLDeviceState *cxl_dstate, int val)
|
||||
{
|
||||
uint64_t dev_status_reg;
|
||||
|
||||
dev_status_reg = FIELD_DP64(0, CXL_MEM_DEV_STS, MEDIA_STATUS, val);
|
||||
cxl_dstate->mbox_reg_state64[R_CXL_MEM_DEV_STS] = dev_status_reg;
|
||||
}
|
||||
#define cxl_dev_disable_media(cxlds) \
|
||||
do { __toggle_media((cxlds), 0x3); } while (0)
|
||||
#define cxl_dev_enable_media(cxlds) \
|
||||
do { __toggle_media((cxlds), 0x1); } while (0)
|
||||
|
||||
static inline bool sanitize_running(CXLCCI *cci)
|
||||
{
|
||||
return !!cci->bg.runtime && cci->bg.opcode == 0x4400;
|
||||
}
|
||||
|
||||
typedef struct CXLError {
|
||||
QTAILQ_ENTRY(CXLError) node;
|
||||
int type; /* Error code as per FE definition */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue