]> www.infradead.org Git - linux.git/commitdiff
cxl/trace: Correct DPA field masks for general_media & dram events
authorAlison Schofield <alison.schofield@intel.com>
Tue, 30 Apr 2024 17:28:03 +0000 (10:28 -0700)
committerDave Jiang <dave.jiang@intel.com>
Tue, 30 Apr 2024 19:24:26 +0000 (12:24 -0700)
The length of Physical Address in General Media and DRAM event
records is 64-bit, so the field mask for extracting the DPA should
be 64-bit also, otherwise the trace event reports DPA's with the
upper 32 bits of a DPA address masked off. If users do DPA-to-HPA
translations this could lead to incorrect page retirement decisions.

Use GENMASK_ULL() for CXL_DPA_MASK to get all the DPA address bits.

Tidy up CXL_DPA_FLAGS_MASK by using GENMASK() to only mask the exact
flag bits.

These bits are defined as part of the event record physical address
descriptions of General Media and DRAM events in CXL Spec 3.1
Section 8.2.9.2 Events.

Fixes: d54a531a430b ("cxl/mem: Trace General Media Event Record")
Co-developed-by: Shiyang Ruan <ruansy.fnst@fujitsu.com>
Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com>
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/2867fc43c57720a4a15a3179431829b8dbd2dc16.1714496730.git.alison.schofield@intel.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/trace.h

index e5f13260fc524d848f602ca43818929615d97c1d..7c5cd069f10cc5f2908b33e3a2ce2207a33235f4 100644 (file)
@@ -253,8 +253,8 @@ 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_MASK                           (~CXL_DPA_FLAGS_MASK)
+#define CXL_DPA_FLAGS_MASK                     GENMASK(1, 0)
+#define CXL_DPA_MASK                           GENMASK_ULL(63, 6)
 
 #define CXL_DPA_VOLATILE                       BIT(0)
 #define CXL_DPA_NOT_REPAIRABLE                 BIT(1)