On Wed, Apr 17, 2024 at 03:50:52PM +0800, Shiyang Ruan wrote:
The length of Physical Address in General Media Event Record/DRAM Event Record is 64-bit, so the field mask should be defined as such length. Otherwise, this causes cxl_general_media and cxl_dram tracepoints to mask off the upper-32-bits of DPA addresses. The cxl_poison event is unaffected.
If userspace was doing its own DPA-to-HPA translation this could lead to incorrect page retirement decisions, but there is no known consumer (like rasdaemon) of this event today.
So, an invalid DPA is emitted in the trace event log and that could lead to 'incorrect page retirement decisions...'
Fixes: d54a531a430b ("cxl/mem: Trace General Media Event Record") Cc: stable@vger.kernel.org Cc: Dan Williams dan.j.williams@intel.com Cc: Davidlohr Bueso dave@stgolabs.net Cc: Jonathan Cameron Jonathan.Cameron@huawei.com Cc: Ira Weiny ira.weiny@intel.com Signed-off-by: Shiyang Ruan ruansy.fnst@fujitsu.com
drivers/cxl/core/trace.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/cxl/core/trace.h b/drivers/cxl/core/trace.h index e5f13260fc52..cdfce932d5b1 100644 --- a/drivers/cxl/core/trace.h +++ b/drivers/cxl/core/trace.h @@ -253,7 +253,7 @@ TRACE_EVENT(cxl_generic_event,
- DRAM Event Record
- CXL rev 3.0 section 8.2.9.2.1.2; Table 8-44
*/ -#define CXL_DPA_FLAGS_MASK 0x3F +#define CXL_DPA_FLAGS_MASK 0x3FULL #define CXL_DPA_MASK (~CXL_DPA_FLAGS_MASK) #define CXL_DPA_VOLATILE BIT(0)
This works but I'm thinking this is the time to convene on one CXL_EVENT_DPA_MASK for both all CXL events, rather than having cxl_poison event be different.
I prefer how poison defines it:
cxlmem.h:#define CXL_POISON_START_MASK GENMASK_ULL(63, 6)
Can we rename that CXL_EVENT_DPA_MASK and use for all events?
--Alison
-- 2.34.1