hw/cxl/events: discard all event records during sanitation
Per CXL r3.1 Section 8.2.9.9.5.1: Sanitize (Opcode 4400h), the sanitize command should delete all event logs. Introduce cxl_discard_all_event_logs() and call this in __do_sanitization(). Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net> Link: https://lore.kernel.org/r/20231222090051.3265307-5-42.hyeyoo@gmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20240705120643.959422-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
75b800dd3b
commit
7d65874ba0
@ -139,6 +139,19 @@ bool cxl_event_insert(CXLDeviceState *cxlds, CXLEventLogType log_type,
|
||||
return cxl_event_count(log) == 1;
|
||||
}
|
||||
|
||||
void cxl_discard_all_event_records(CXLDeviceState *cxlds)
|
||||
{
|
||||
CXLEventLogType log_type;
|
||||
CXLEventLog *log;
|
||||
|
||||
for (log_type = 0; log_type < CXL_EVENT_TYPE_MAX; log_type++) {
|
||||
log = &cxlds->event_logs[log_type];
|
||||
while (!cxl_event_empty(log)) {
|
||||
cxl_event_delete_head(cxlds, log_type, log);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CXLRetCode cxl_event_get_records(CXLDeviceState *cxlds, CXLGetEventPayload *pl,
|
||||
uint8_t log_type, int max_recs,
|
||||
size_t *len)
|
||||
|
@ -949,6 +949,7 @@ static void __do_sanitization(CXLType3Dev *ct3d)
|
||||
memset(lsa, 0, memory_region_size(mr));
|
||||
}
|
||||
}
|
||||
cxl_discard_all_event_records(&ct3d->cxl_dstate);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -562,6 +562,7 @@ CXLRetCode cxl_event_get_records(CXLDeviceState *cxlds, CXLGetEventPayload *pl,
|
||||
size_t *len);
|
||||
CXLRetCode cxl_event_clear_records(CXLDeviceState *cxlds,
|
||||
CXLClearEventPayload *pl);
|
||||
void cxl_discard_all_event_records(CXLDeviceState *cxlds);
|
||||
|
||||
void cxl_event_irq_assert(CXLType3Dev *ct3d);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user