|
From: | Shiyang Ruan |
Subject: | Re: [RFC PATCH 1/5] cxl/core: correct length of DPA field masks |
Date: | Mon, 19 Feb 2024 18:49:50 +0800 |
User-agent: | Mozilla Thunderbird |
在 2024/2/10 14:34, Dan Williams 写道:
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.Can you include this user visible side-effect of this change. Looks like this could cause usages of CXL_DPA_FLAGS_MASK to return an incorrect result?
Ok. Will change it to this:The length of Physical Address in General Media Event Record/DRAM Event Record is 64bit, per CXL Spec r3.0 - 8.2.9.2.1.1, Table 8-43. Currently CXL_DPA_FLAGS_MASK is defined as int (32bit), then CXL_DPA_MASK is a int too, it will be 0x00000000FFFFFFC0 while using "->dpa & CXL_DPA_MASK" to obtain real physical address (to drop flags in lower bits), in this case the higher 32bit of ->dpa will be lost.
To avoid this, define CXL_DPA_FLAGS_MASK as 64bit: 0x3FULL. -- Thanks, Ruan.
Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com> --- drivers/cxl/core/trace.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/cxl/core/trace.h b/drivers/cxl/core/trace.h index 89445435303a..388a87d972c2 100644 --- a/drivers/cxl/core/trace.h +++ b/drivers/cxl/core/trace.h @@ -253,11 +253,11 @@ 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)-#define CXL_DPA_NOT_REPAIRABLE BIT(1) +#define CXL_DPA_VOLATILE BIT_ULL(0) +#define CXL_DPA_NOT_REPAIRABLE BIT_ULL(1) #define show_dpa_flags(flags) __print_flags(flags, "|", \ { CXL_DPA_VOLATILE, "VOLATILE" }, \ { CXL_DPA_NOT_REPAIRABLE, "NOT_REPAIRABLE" } \ -- 2.34.1
[Prev in Thread] | Current Thread | [Next in Thread] |