diff mbox series

cxl: Rename ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3

Message ID 20241104084110.583710-1-ying.huang@intel.com
State New
Headers show
Series cxl: Rename ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3 | expand

Commit Message

Huang, Ying Nov. 4, 2024, 8:41 a.m. UTC
According to the description of the "Window Restrictions" field of
"CFMWS Structure" in the CXL spec v3.1 section 9.18.1.3: CXL Fixed
Memory Window Structure (CFMWS), the bit 0 of "Window Restrictions" is
formerly known as "CXL Type 2 Memory" and renamed to "Device
Coherent", while the bit 1 is formerly known as "CXL Type 3 Memory"
and renamed to "Host-only Coherent".  Because type 3 memory can only
be host-only coherent before, while it can be host-only coherent or
device coherent with "Back-Invalidate" now.

To avoid confusion about type 2/3 memory and device/host-only coherent
in Linux kernel, the patch renames corresponding bit definition from
ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3 to
ACPI_CEDT_CFMWS_RESTRICT_DEVMEM/HOSTONLYMEM.  This makes the kernel
code consistent with the spec too.

The patch also renames the corresponding cxl_decoder flags
CXL_DECODER_F_TYPE2/TYPE3 to CXL_DECODER_F_DEVMEM/HOSTONLYMEM.

No functionality change is expected.

Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
Suggested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
Reviewed-by: Gregory Price <gourry@gourry.net>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Dave Jiang <dave.jiang@intel.com>
Cc: Alison Schofield <alison.schofield@intel.com>
Cc: Vishal Verma <vishal.l.verma@intel.com>
Cc: Ira Weiny <ira.weiny@intel.com>
Cc: Alejandro Lucero <alucerop@amd.com>
Cc: Ben Cheatham <benjamin.cheatham@amd.com>
---
 drivers/cxl/acpi.c           |  8 ++++----
 drivers/cxl/core/port.c      |  8 ++++----
 drivers/cxl/cxl.h            | 14 +++++++-------
 include/acpi/actbl1.h        | 10 +++++-----
 tools/testing/cxl/test/cxl.c | 18 +++++++++---------
 5 files changed, 29 insertions(+), 29 deletions(-)

Comments

Ira Weiny Nov. 5, 2024, 3:17 p.m. UTC | #1
Huang Ying wrote:
> According to the description of the "Window Restrictions" field of
> "CFMWS Structure" in the CXL spec v3.1 section 9.18.1.3: CXL Fixed
> Memory Window Structure (CFMWS), the bit 0 of "Window Restrictions" is
> formerly known as "CXL Type 2 Memory" and renamed to "Device
> Coherent", while the bit 1 is formerly known as "CXL Type 3 Memory"
> and renamed to "Host-only Coherent".  Because type 3 memory can only
> be host-only coherent before, while it can be host-only coherent or
> device coherent with "Back-Invalidate" now.
> 
> To avoid confusion about type 2/3 memory and device/host-only coherent
> in Linux kernel, the patch renames corresponding bit definition from
> ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3 to
> ACPI_CEDT_CFMWS_RESTRICT_DEVMEM/HOSTONLYMEM.  This makes the kernel
> code consistent with the spec too.
> 
> The patch also renames the corresponding cxl_decoder flags
> CXL_DECODER_F_TYPE2/TYPE3 to CXL_DECODER_F_DEVMEM/HOSTONLYMEM.
> 
> No functionality change is expected.
> 
> Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
> Suggested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
> Reviewed-by: Gregory Price <gourry@gourry.net>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Cc: Dave Jiang <dave.jiang@intel.com>
> Cc: Alison Schofield <alison.schofield@intel.com>
> Cc: Vishal Verma <vishal.l.verma@intel.com>
> Cc: Ira Weiny <ira.weiny@intel.com>

Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Fan Ni Nov. 5, 2024, 10:25 p.m. UTC | #2
On Mon, Nov 04, 2024 at 04:41:10PM +0800, Huang Ying wrote:
> According to the description of the "Window Restrictions" field of
> "CFMWS Structure" in the CXL spec v3.1 section 9.18.1.3: CXL Fixed
> Memory Window Structure (CFMWS), the bit 0 of "Window Restrictions" is
> formerly known as "CXL Type 2 Memory" and renamed to "Device
> Coherent", while the bit 1 is formerly known as "CXL Type 3 Memory"
> and renamed to "Host-only Coherent".  Because type 3 memory can only
> be host-only coherent before, while it can be host-only coherent or
> device coherent with "Back-Invalidate" now.
> 
> To avoid confusion about type 2/3 memory and device/host-only coherent
> in Linux kernel, the patch renames corresponding bit definition from
> ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3 to
> ACPI_CEDT_CFMWS_RESTRICT_DEVMEM/HOSTONLYMEM.  This makes the kernel
> code consistent with the spec too.
> 
> The patch also renames the corresponding cxl_decoder flags
> CXL_DECODER_F_TYPE2/TYPE3 to CXL_DECODER_F_DEVMEM/HOSTONLYMEM.
> 
> No functionality change is expected.
> 
> Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
> Suggested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
> Reviewed-by: Gregory Price <gourry@gourry.net>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Cc: Dave Jiang <dave.jiang@intel.com>
> Cc: Alison Schofield <alison.schofield@intel.com>
> Cc: Vishal Verma <vishal.l.verma@intel.com>
> Cc: Ira Weiny <ira.weiny@intel.com>
> Cc: Alejandro Lucero <alucerop@amd.com>
> Cc: Ben Cheatham <benjamin.cheatham@amd.com>
> ---

Reviewed-by: Fan Ni <fan.ni@samsung.com>

>  drivers/cxl/acpi.c           |  8 ++++----
>  drivers/cxl/core/port.c      |  8 ++++----
>  drivers/cxl/cxl.h            | 14 +++++++-------
>  include/acpi/actbl1.h        | 10 +++++-----
>  tools/testing/cxl/test/cxl.c | 18 +++++++++---------
>  5 files changed, 29 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c
> index 82b78e331d8e..aca8cbb7540d 100644
> --- a/drivers/cxl/acpi.c
> +++ b/drivers/cxl/acpi.c
> @@ -115,10 +115,10 @@ static unsigned long cfmws_to_decoder_flags(int restrictions)
>  {
>  	unsigned long flags = CXL_DECODER_F_ENABLE;
>  
> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE2)
> -		flags |= CXL_DECODER_F_TYPE2;
> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE3)
> -		flags |= CXL_DECODER_F_TYPE3;
> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_DEVMEM)
> +		flags |= CXL_DECODER_F_DEVMEM;
> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM)
> +		flags |= CXL_DECODER_F_HOSTONLYMEM;
>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_VOLATILE)
>  		flags |= CXL_DECODER_F_RAM;
>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_PMEM)
> diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c
> index a5e6f3d23cfb..8524714968fd 100644
> --- a/drivers/cxl/core/port.c
> +++ b/drivers/cxl/core/port.c
> @@ -125,8 +125,8 @@ static DEVICE_ATTR_RO(name)
>  
>  CXL_DECODER_FLAG_ATTR(cap_pmem, CXL_DECODER_F_PMEM);
>  CXL_DECODER_FLAG_ATTR(cap_ram, CXL_DECODER_F_RAM);
> -CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_TYPE2);
> -CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_TYPE3);
> +CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_DEVMEM);
> +CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_HOSTONLYMEM);
>  CXL_DECODER_FLAG_ATTR(locked, CXL_DECODER_F_LOCK);
>  
>  static ssize_t target_type_show(struct device *dev,
> @@ -326,14 +326,14 @@ static struct attribute *cxl_decoder_root_attrs[] = {
>  
>  static bool can_create_pmem(struct cxl_root_decoder *cxlrd)
>  {
> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_PMEM;
> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_PMEM;
>  
>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
>  }
>  
>  static bool can_create_ram(struct cxl_root_decoder *cxlrd)
>  {
> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_RAM;
> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_RAM;
>  
>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
>  }
> diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
> index 0fc96f8bf15c..b9083ce1cf74 100644
> --- a/drivers/cxl/cxl.h
> +++ b/drivers/cxl/cxl.h
> @@ -315,13 +315,13 @@ resource_size_t cxl_rcd_component_reg_phys(struct device *dev,
>   * Additionally indicate whether decoder settings were autodetected,
>   * user customized.
>   */
> -#define CXL_DECODER_F_RAM   BIT(0)
> -#define CXL_DECODER_F_PMEM  BIT(1)
> -#define CXL_DECODER_F_TYPE2 BIT(2)
> -#define CXL_DECODER_F_TYPE3 BIT(3)
> -#define CXL_DECODER_F_LOCK  BIT(4)
> -#define CXL_DECODER_F_ENABLE    BIT(5)
> -#define CXL_DECODER_F_MASK  GENMASK(5, 0)
> +#define CXL_DECODER_F_RAM         BIT(0)
> +#define CXL_DECODER_F_PMEM        BIT(1)
> +#define CXL_DECODER_F_DEVMEM      BIT(2)
> +#define CXL_DECODER_F_HOSTONLYMEM BIT(3)
> +#define CXL_DECODER_F_LOCK        BIT(4)
> +#define CXL_DECODER_F_ENABLE      BIT(5)
> +#define CXL_DECODER_F_MASK        GENMASK(5, 0)
>  
>  enum cxl_decoder_type {
>  	CXL_DECODER_DEVMEM = 2,
> diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
> index 199afc2cd122..e195909928df 100644
> --- a/include/acpi/actbl1.h
> +++ b/include/acpi/actbl1.h
> @@ -551,11 +551,11 @@ struct acpi_cedt_cfmws_target_element {
>  
>  /* Values for Restrictions field above */
>  
> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2      (1)
> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3      (1<<1)
> -#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE   (1<<2)
> -#define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
> -#define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
> +#define ACPI_CEDT_CFMWS_RESTRICT_DEVMEM        (1)
> +#define ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM   (1<<1)
> +#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE      (1<<2)
> +#define ACPI_CEDT_CFMWS_RESTRICT_PMEM          (1<<3)
> +#define ACPI_CEDT_CFMWS_RESTRICT_FIXED         (1<<4)
>  
>  /* 2: CXL XOR Interleave Math Structure */
>  
> diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c
> index 90d5afd52dd0..9d919fc99f6b 100644
> --- a/tools/testing/cxl/test/cxl.c
> +++ b/tools/testing/cxl/test/cxl.c
> @@ -209,7 +209,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 4UL,
> @@ -224,7 +224,7 @@ static struct {
>  			},
>  			.interleave_ways = 1,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -239,7 +239,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 4UL,
> @@ -254,7 +254,7 @@ static struct {
>  			},
>  			.interleave_ways = 1,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -269,7 +269,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 4UL,
> @@ -284,7 +284,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M,
> @@ -301,7 +301,7 @@ static struct {
>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -317,7 +317,7 @@ static struct {
>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>  			.interleave_ways = 1,
>  			.granularity = 0,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -333,7 +333,7 @@ static struct {
>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>  			.interleave_ways = 2,
>  			.granularity = 0,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 16UL,
> -- 
> 2.39.2
>
Alison Schofield Nov. 6, 2024, 2:27 a.m. UTC | #3
On Mon, Nov 04, 2024 at 04:41:10PM +0800, Ying Huang wrote:
> According to the description of the "Window Restrictions" field of
> "CFMWS Structure" in the CXL spec v3.1 section 9.18.1.3: CXL Fixed
> Memory Window Structure (CFMWS), the bit 0 of "Window Restrictions" is
> formerly known as "CXL Type 2 Memory" and renamed to "Device
> Coherent", while the bit 1 is formerly known as "CXL Type 3 Memory"
> and renamed to "Host-only Coherent".  Because type 3 memory can only
> be host-only coherent before, while it can be host-only coherent or
> device coherent with "Back-Invalidate" now.
> 
> To avoid confusion about type 2/3 memory and device/host-only coherent
> in Linux kernel, the patch renames corresponding bit definition from
> ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3 to
> ACPI_CEDT_CFMWS_RESTRICT_DEVMEM/HOSTONLYMEM.  This makes the kernel
> code consistent with the spec too.
> 
> The patch also renames the corresponding cxl_decoder flags
> CXL_DECODER_F_TYPE2/TYPE3 to CXL_DECODER_F_DEVMEM/HOSTONLYMEM.
> 
> No functionality change is expected.
> 
> Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
> Suggested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
> Reviewed-by: Gregory Price <gourry@gourry.net>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Cc: Dave Jiang <dave.jiang@intel.com>
> Cc: Alison Schofield <alison.schofield@intel.com>
> Cc: Vishal Verma <vishal.l.verma@intel.com>
> Cc: Ira Weiny <ira.weiny@intel.com>
> Cc: Alejandro Lucero <alucerop@amd.com>
> Cc: Ben Cheatham <benjamin.cheatham@amd.com>
> ---
>  drivers/cxl/acpi.c           |  8 ++++----
>  drivers/cxl/core/port.c      |  8 ++++----
>  drivers/cxl/cxl.h            | 14 +++++++-------
>  include/acpi/actbl1.h        | 10 +++++-----
>  tools/testing/cxl/test/cxl.c | 18 +++++++++---------
>  5 files changed, 29 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c
> index 82b78e331d8e..aca8cbb7540d 100644
> --- a/drivers/cxl/acpi.c
> +++ b/drivers/cxl/acpi.c
> @@ -115,10 +115,10 @@ static unsigned long cfmws_to_decoder_flags(int restrictions)
>  {
>  	unsigned long flags = CXL_DECODER_F_ENABLE;
>  
> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE2)
> -		flags |= CXL_DECODER_F_TYPE2;
> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE3)
> -		flags |= CXL_DECODER_F_TYPE3;
> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_DEVMEM)
> +		flags |= CXL_DECODER_F_DEVMEM;
> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM)
> +		flags |= CXL_DECODER_F_HOSTONLYMEM;
>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_VOLATILE)
>  		flags |= CXL_DECODER_F_RAM;
>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_PMEM)
> diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c
> index a5e6f3d23cfb..8524714968fd 100644
> --- a/drivers/cxl/core/port.c
> +++ b/drivers/cxl/core/port.c
> @@ -125,8 +125,8 @@ static DEVICE_ATTR_RO(name)
>  
>  CXL_DECODER_FLAG_ATTR(cap_pmem, CXL_DECODER_F_PMEM);
>  CXL_DECODER_FLAG_ATTR(cap_ram, CXL_DECODER_F_RAM);
> -CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_TYPE2);
> -CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_TYPE3);
> +CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_DEVMEM);
> +CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_HOSTONLYMEM);
>  CXL_DECODER_FLAG_ATTR(locked, CXL_DECODER_F_LOCK);
>  
Hi Ying,

The commit log explains that type3 can now be 'either/or', so does
cap_type3_show() need to emit true for either:
	(flags & CXL_DECODER_F_HOSTONLYMEM)
	or
	(flags & CXL_DECODER_F_DEVMEM) & 'back invalidate')

Does this explanation in the ABI need updating:
What:           /sys/bus/cxl/devices/decoderX.Y/cap_{pmem,ram,type2,type3}
Date:           June, 2021
KernelVersion:  v5.14
Contact:        linux-cxl@vger.kernel.org
Description:
                (RO) When a CXL decoder is of devtype "cxl_decoder_root", it
                represents a fixed memory window identified by platform
                firmware. A fixed window may only support a subset of memory
                types. The 'cap_*' attributes indicate whether persistent
                memory, volatile memory, accelerator memory, and / or expander
                memory may be mapped behind this decoder's memory window.

--Alison


>  static ssize_t target_type_show(struct device *dev,
> @@ -326,14 +326,14 @@ static struct attribute *cxl_decoder_root_attrs[] = {
>  
>  static bool can_create_pmem(struct cxl_root_decoder *cxlrd)
>  {
> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_PMEM;
> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_PMEM;
>  
>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
>  }
>  
>  static bool can_create_ram(struct cxl_root_decoder *cxlrd)
>  {
> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_RAM;
> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_RAM;
>  
>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
>  }
> diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
> index 0fc96f8bf15c..b9083ce1cf74 100644
> --- a/drivers/cxl/cxl.h
> +++ b/drivers/cxl/cxl.h
> @@ -315,13 +315,13 @@ resource_size_t cxl_rcd_component_reg_phys(struct device *dev,
>   * Additionally indicate whether decoder settings were autodetected,
>   * user customized.
>   */
> -#define CXL_DECODER_F_RAM   BIT(0)
> -#define CXL_DECODER_F_PMEM  BIT(1)
> -#define CXL_DECODER_F_TYPE2 BIT(2)
> -#define CXL_DECODER_F_TYPE3 BIT(3)
> -#define CXL_DECODER_F_LOCK  BIT(4)
> -#define CXL_DECODER_F_ENABLE    BIT(5)
> -#define CXL_DECODER_F_MASK  GENMASK(5, 0)
> +#define CXL_DECODER_F_RAM         BIT(0)
> +#define CXL_DECODER_F_PMEM        BIT(1)
> +#define CXL_DECODER_F_DEVMEM      BIT(2)
> +#define CXL_DECODER_F_HOSTONLYMEM BIT(3)
> +#define CXL_DECODER_F_LOCK        BIT(4)
> +#define CXL_DECODER_F_ENABLE      BIT(5)
> +#define CXL_DECODER_F_MASK        GENMASK(5, 0)
>  
>  enum cxl_decoder_type {
>  	CXL_DECODER_DEVMEM = 2,
> diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
> index 199afc2cd122..e195909928df 100644
> --- a/include/acpi/actbl1.h
> +++ b/include/acpi/actbl1.h
> @@ -551,11 +551,11 @@ struct acpi_cedt_cfmws_target_element {
>  
>  /* Values for Restrictions field above */
>  
> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2      (1)
> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3      (1<<1)
> -#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE   (1<<2)
> -#define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
> -#define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
> +#define ACPI_CEDT_CFMWS_RESTRICT_DEVMEM        (1)
> +#define ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM   (1<<1)
> +#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE      (1<<2)
> +#define ACPI_CEDT_CFMWS_RESTRICT_PMEM          (1<<3)
> +#define ACPI_CEDT_CFMWS_RESTRICT_FIXED         (1<<4)
>  
>  /* 2: CXL XOR Interleave Math Structure */
>  
> diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c
> index 90d5afd52dd0..9d919fc99f6b 100644
> --- a/tools/testing/cxl/test/cxl.c
> +++ b/tools/testing/cxl/test/cxl.c
> @@ -209,7 +209,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 4UL,
> @@ -224,7 +224,7 @@ static struct {
>  			},
>  			.interleave_ways = 1,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -239,7 +239,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 4UL,
> @@ -254,7 +254,7 @@ static struct {
>  			},
>  			.interleave_ways = 1,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -269,7 +269,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 4UL,
> @@ -284,7 +284,7 @@ static struct {
>  			},
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M,
> @@ -301,7 +301,7 @@ static struct {
>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>  			.interleave_ways = 0,
>  			.granularity = 4,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -317,7 +317,7 @@ static struct {
>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>  			.interleave_ways = 1,
>  			.granularity = 0,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 8UL,
> @@ -333,7 +333,7 @@ static struct {
>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>  			.interleave_ways = 2,
>  			.granularity = 0,
> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>  			.qtg_id = FAKE_QTG_ID,
>  			.window_size = SZ_256M * 16UL,
> -- 
> 2.39.2
>
Huang, Ying Nov. 6, 2024, 2:43 a.m. UTC | #4
Alison Schofield <alison.schofield@intel.com> writes:

> On Mon, Nov 04, 2024 at 04:41:10PM +0800, Ying Huang wrote:
>> According to the description of the "Window Restrictions" field of
>> "CFMWS Structure" in the CXL spec v3.1 section 9.18.1.3: CXL Fixed
>> Memory Window Structure (CFMWS), the bit 0 of "Window Restrictions" is
>> formerly known as "CXL Type 2 Memory" and renamed to "Device
>> Coherent", while the bit 1 is formerly known as "CXL Type 3 Memory"
>> and renamed to "Host-only Coherent".  Because type 3 memory can only
>> be host-only coherent before, while it can be host-only coherent or
>> device coherent with "Back-Invalidate" now.
>> 
>> To avoid confusion about type 2/3 memory and device/host-only coherent
>> in Linux kernel, the patch renames corresponding bit definition from
>> ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3 to
>> ACPI_CEDT_CFMWS_RESTRICT_DEVMEM/HOSTONLYMEM.  This makes the kernel
>> code consistent with the spec too.
>> 
>> The patch also renames the corresponding cxl_decoder flags
>> CXL_DECODER_F_TYPE2/TYPE3 to CXL_DECODER_F_DEVMEM/HOSTONLYMEM.
>> 
>> No functionality change is expected.
>> 
>> Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
>> Suggested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
>> Reviewed-by: Gregory Price <gourry@gourry.net>
>> Cc: Dan Williams <dan.j.williams@intel.com>
>> Cc: Dave Jiang <dave.jiang@intel.com>
>> Cc: Alison Schofield <alison.schofield@intel.com>
>> Cc: Vishal Verma <vishal.l.verma@intel.com>
>> Cc: Ira Weiny <ira.weiny@intel.com>
>> Cc: Alejandro Lucero <alucerop@amd.com>
>> Cc: Ben Cheatham <benjamin.cheatham@amd.com>
>> ---
>>  drivers/cxl/acpi.c           |  8 ++++----
>>  drivers/cxl/core/port.c      |  8 ++++----
>>  drivers/cxl/cxl.h            | 14 +++++++-------
>>  include/acpi/actbl1.h        | 10 +++++-----
>>  tools/testing/cxl/test/cxl.c | 18 +++++++++---------
>>  5 files changed, 29 insertions(+), 29 deletions(-)
>> 
>> diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c
>> index 82b78e331d8e..aca8cbb7540d 100644
>> --- a/drivers/cxl/acpi.c
>> +++ b/drivers/cxl/acpi.c
>> @@ -115,10 +115,10 @@ static unsigned long cfmws_to_decoder_flags(int restrictions)
>>  {
>>  	unsigned long flags = CXL_DECODER_F_ENABLE;
>>  
>> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE2)
>> -		flags |= CXL_DECODER_F_TYPE2;
>> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE3)
>> -		flags |= CXL_DECODER_F_TYPE3;
>> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_DEVMEM)
>> +		flags |= CXL_DECODER_F_DEVMEM;
>> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM)
>> +		flags |= CXL_DECODER_F_HOSTONLYMEM;
>>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_VOLATILE)
>>  		flags |= CXL_DECODER_F_RAM;
>>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_PMEM)
>> diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c
>> index a5e6f3d23cfb..8524714968fd 100644
>> --- a/drivers/cxl/core/port.c
>> +++ b/drivers/cxl/core/port.c
>> @@ -125,8 +125,8 @@ static DEVICE_ATTR_RO(name)
>>  
>>  CXL_DECODER_FLAG_ATTR(cap_pmem, CXL_DECODER_F_PMEM);
>>  CXL_DECODER_FLAG_ATTR(cap_ram, CXL_DECODER_F_RAM);
>> -CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_TYPE2);
>> -CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_TYPE3);
>> +CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_DEVMEM);
>> +CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_HOSTONLYMEM);
>>  CXL_DECODER_FLAG_ATTR(locked, CXL_DECODER_F_LOCK);
>>  
> Hi Ying,

Hi, Alison,

>
> The commit log explains that type3 can now be 'either/or', so does
> cap_type3_show() need to emit true for either:
> 	(flags & CXL_DECODER_F_HOSTONLYMEM)
> 	or
> 	(flags & CXL_DECODER_F_DEVMEM) & 'back invalidate')
>
> Does this explanation in the ABI need updating:
> What:           /sys/bus/cxl/devices/decoderX.Y/cap_{pmem,ram,type2,type3}
> Date:           June, 2021
> KernelVersion:  v5.14
> Contact:        linux-cxl@vger.kernel.org
> Description:
>                 (RO) When a CXL decoder is of devtype "cxl_decoder_root", it
>                 represents a fixed memory window identified by platform
>                 firmware. A fixed window may only support a subset of memory
>                 types. The 'cap_*' attributes indicate whether persistent
>                 memory, volatile memory, accelerator memory, and / or expander
>                 memory may be mapped behind this decoder's memory window.

I think so too.  However, I prefer to keep this patch just mechanic
renaming and do these changes in another patch.  Do you agree?

--
Best Regards,
Huang, Ying

>
>>  static ssize_t target_type_show(struct device *dev,
>> @@ -326,14 +326,14 @@ static struct attribute *cxl_decoder_root_attrs[] = {
>>  
>>  static bool can_create_pmem(struct cxl_root_decoder *cxlrd)
>>  {
>> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_PMEM;
>> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_PMEM;
>>  
>>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
>>  }
>>  
>>  static bool can_create_ram(struct cxl_root_decoder *cxlrd)
>>  {
>> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_RAM;
>> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_RAM;
>>  
>>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
>>  }
>> diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
>> index 0fc96f8bf15c..b9083ce1cf74 100644
>> --- a/drivers/cxl/cxl.h
>> +++ b/drivers/cxl/cxl.h
>> @@ -315,13 +315,13 @@ resource_size_t cxl_rcd_component_reg_phys(struct device *dev,
>>   * Additionally indicate whether decoder settings were autodetected,
>>   * user customized.
>>   */
>> -#define CXL_DECODER_F_RAM   BIT(0)
>> -#define CXL_DECODER_F_PMEM  BIT(1)
>> -#define CXL_DECODER_F_TYPE2 BIT(2)
>> -#define CXL_DECODER_F_TYPE3 BIT(3)
>> -#define CXL_DECODER_F_LOCK  BIT(4)
>> -#define CXL_DECODER_F_ENABLE    BIT(5)
>> -#define CXL_DECODER_F_MASK  GENMASK(5, 0)
>> +#define CXL_DECODER_F_RAM         BIT(0)
>> +#define CXL_DECODER_F_PMEM        BIT(1)
>> +#define CXL_DECODER_F_DEVMEM      BIT(2)
>> +#define CXL_DECODER_F_HOSTONLYMEM BIT(3)
>> +#define CXL_DECODER_F_LOCK        BIT(4)
>> +#define CXL_DECODER_F_ENABLE      BIT(5)
>> +#define CXL_DECODER_F_MASK        GENMASK(5, 0)
>>  
>>  enum cxl_decoder_type {
>>  	CXL_DECODER_DEVMEM = 2,
>> diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
>> index 199afc2cd122..e195909928df 100644
>> --- a/include/acpi/actbl1.h
>> +++ b/include/acpi/actbl1.h
>> @@ -551,11 +551,11 @@ struct acpi_cedt_cfmws_target_element {
>>  
>>  /* Values for Restrictions field above */
>>  
>> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2      (1)
>> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3      (1<<1)
>> -#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE   (1<<2)
>> -#define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
>> -#define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
>> +#define ACPI_CEDT_CFMWS_RESTRICT_DEVMEM        (1)
>> +#define ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM   (1<<1)
>> +#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE      (1<<2)
>> +#define ACPI_CEDT_CFMWS_RESTRICT_PMEM          (1<<3)
>> +#define ACPI_CEDT_CFMWS_RESTRICT_FIXED         (1<<4)
>>  
>>  /* 2: CXL XOR Interleave Math Structure */
>>  
>> diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c
>> index 90d5afd52dd0..9d919fc99f6b 100644
>> --- a/tools/testing/cxl/test/cxl.c
>> +++ b/tools/testing/cxl/test/cxl.c
>> @@ -209,7 +209,7 @@ static struct {
>>  			},
>>  			.interleave_ways = 0,
>>  			.granularity = 4,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 4UL,
>> @@ -224,7 +224,7 @@ static struct {
>>  			},
>>  			.interleave_ways = 1,
>>  			.granularity = 4,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 8UL,
>> @@ -239,7 +239,7 @@ static struct {
>>  			},
>>  			.interleave_ways = 0,
>>  			.granularity = 4,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 4UL,
>> @@ -254,7 +254,7 @@ static struct {
>>  			},
>>  			.interleave_ways = 1,
>>  			.granularity = 4,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 8UL,
>> @@ -269,7 +269,7 @@ static struct {
>>  			},
>>  			.interleave_ways = 0,
>>  			.granularity = 4,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 4UL,
>> @@ -284,7 +284,7 @@ static struct {
>>  			},
>>  			.interleave_ways = 0,
>>  			.granularity = 4,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M,
>> @@ -301,7 +301,7 @@ static struct {
>>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>>  			.interleave_ways = 0,
>>  			.granularity = 4,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 8UL,
>> @@ -317,7 +317,7 @@ static struct {
>>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>>  			.interleave_ways = 1,
>>  			.granularity = 0,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 8UL,
>> @@ -333,7 +333,7 @@ static struct {
>>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
>>  			.interleave_ways = 2,
>>  			.granularity = 0,
>> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
>> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
>>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
>>  			.qtg_id = FAKE_QTG_ID,
>>  			.window_size = SZ_256M * 16UL,
>> -- 
>> 2.39.2
>>
Alison Schofield Nov. 7, 2024, 8:36 p.m. UTC | #5
On Wed, Nov 06, 2024 at 10:43:30AM +0800, Ying Huang wrote:
> Alison Schofield <alison.schofield@intel.com> writes:
> 
> > On Mon, Nov 04, 2024 at 04:41:10PM +0800, Ying Huang wrote:
> >> According to the description of the "Window Restrictions" field of
> >> "CFMWS Structure" in the CXL spec v3.1 section 9.18.1.3: CXL Fixed
> >> Memory Window Structure (CFMWS), the bit 0 of "Window Restrictions" is
> >> formerly known as "CXL Type 2 Memory" and renamed to "Device
> >> Coherent", while the bit 1 is formerly known as "CXL Type 3 Memory"
> >> and renamed to "Host-only Coherent".  Because type 3 memory can only
> >> be host-only coherent before, while it can be host-only coherent or
> >> device coherent with "Back-Invalidate" now.
> >> 
> >> To avoid confusion about type 2/3 memory and device/host-only coherent
> >> in Linux kernel, the patch renames corresponding bit definition from
> >> ACPI_CEDT_CFMWS_RESTRICT_TYPE2/TYPE3 to
> >> ACPI_CEDT_CFMWS_RESTRICT_DEVMEM/HOSTONLYMEM.  This makes the kernel
> >> code consistent with the spec too.
> >> 
> >> The patch also renames the corresponding cxl_decoder flags
> >> CXL_DECODER_F_TYPE2/TYPE3 to CXL_DECODER_F_DEVMEM/HOSTONLYMEM.
> >> 
> >> No functionality change is expected.
> >> 
> >> Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
> >> Suggested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> >> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
> >> Reviewed-by: Gregory Price <gourry@gourry.net>
> >> Cc: Dan Williams <dan.j.williams@intel.com>
> >> Cc: Dave Jiang <dave.jiang@intel.com>
> >> Cc: Alison Schofield <alison.schofield@intel.com>
> >> Cc: Vishal Verma <vishal.l.verma@intel.com>
> >> Cc: Ira Weiny <ira.weiny@intel.com>
> >> Cc: Alejandro Lucero <alucerop@amd.com>
> >> Cc: Ben Cheatham <benjamin.cheatham@amd.com>
> >> ---
> >>  drivers/cxl/acpi.c           |  8 ++++----
> >>  drivers/cxl/core/port.c      |  8 ++++----
> >>  drivers/cxl/cxl.h            | 14 +++++++-------
> >>  include/acpi/actbl1.h        | 10 +++++-----
> >>  tools/testing/cxl/test/cxl.c | 18 +++++++++---------
> >>  5 files changed, 29 insertions(+), 29 deletions(-)
> >> 
> >> diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c
> >> index 82b78e331d8e..aca8cbb7540d 100644
> >> --- a/drivers/cxl/acpi.c
> >> +++ b/drivers/cxl/acpi.c
> >> @@ -115,10 +115,10 @@ static unsigned long cfmws_to_decoder_flags(int restrictions)
> >>  {
> >>  	unsigned long flags = CXL_DECODER_F_ENABLE;
> >>  
> >> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE2)
> >> -		flags |= CXL_DECODER_F_TYPE2;
> >> -	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE3)
> >> -		flags |= CXL_DECODER_F_TYPE3;
> >> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_DEVMEM)
> >> +		flags |= CXL_DECODER_F_DEVMEM;
> >> +	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM)
> >> +		flags |= CXL_DECODER_F_HOSTONLYMEM;
> >>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_VOLATILE)
> >>  		flags |= CXL_DECODER_F_RAM;
> >>  	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_PMEM)
> >> diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c
> >> index a5e6f3d23cfb..8524714968fd 100644
> >> --- a/drivers/cxl/core/port.c
> >> +++ b/drivers/cxl/core/port.c
> >> @@ -125,8 +125,8 @@ static DEVICE_ATTR_RO(name)
> >>  
> >>  CXL_DECODER_FLAG_ATTR(cap_pmem, CXL_DECODER_F_PMEM);
> >>  CXL_DECODER_FLAG_ATTR(cap_ram, CXL_DECODER_F_RAM);
> >> -CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_TYPE2);
> >> -CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_TYPE3);
> >> +CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_DEVMEM);
> >> +CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_HOSTONLYMEM);
> >>  CXL_DECODER_FLAG_ATTR(locked, CXL_DECODER_F_LOCK);
> >>  
> > Hi Ying,
> 
> Hi, Alison,
> 
> >
> > The commit log explains that type3 can now be 'either/or', so does
> > cap_type3_show() need to emit true for either:
> > 	(flags & CXL_DECODER_F_HOSTONLYMEM)
> > 	or
> > 	(flags & CXL_DECODER_F_DEVMEM) & 'back invalidate')
> >
> > Does this explanation in the ABI need updating:
> > What:           /sys/bus/cxl/devices/decoderX.Y/cap_{pmem,ram,type2,type3}
> > Date:           June, 2021
> > KernelVersion:  v5.14
> > Contact:        linux-cxl@vger.kernel.org
> > Description:
> >                 (RO) When a CXL decoder is of devtype "cxl_decoder_root", it
> >                 represents a fixed memory window identified by platform
> >                 firmware. A fixed window may only support a subset of memory
> >                 types. The 'cap_*' attributes indicate whether persistent
> >                 memory, volatile memory, accelerator memory, and / or expander
> >                 memory may be mapped behind this decoder's memory window.
> 
> I think so too.  However, I prefer to keep this patch just mechanic
> renaming and do these changes in another patch.  Do you agree?
> 

I don't know. I was just questioning where and how far the naming scheme
needs to change.

Maybe Jonathan, as the Suggested-by, can chime in and move this ahead.


> --
> Best Regards,
> Huang, Ying
> 
> >
> >>  static ssize_t target_type_show(struct device *dev,
> >> @@ -326,14 +326,14 @@ static struct attribute *cxl_decoder_root_attrs[] = {
> >>  
> >>  static bool can_create_pmem(struct cxl_root_decoder *cxlrd)
> >>  {
> >> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_PMEM;
> >> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_PMEM;
> >>  
> >>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
> >>  }
> >>  
> >>  static bool can_create_ram(struct cxl_root_decoder *cxlrd)
> >>  {
> >> -	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_RAM;
> >> +	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_RAM;
> >>  
> >>  	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
> >>  }
> >> diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
> >> index 0fc96f8bf15c..b9083ce1cf74 100644
> >> --- a/drivers/cxl/cxl.h
> >> +++ b/drivers/cxl/cxl.h
> >> @@ -315,13 +315,13 @@ resource_size_t cxl_rcd_component_reg_phys(struct device *dev,
> >>   * Additionally indicate whether decoder settings were autodetected,
> >>   * user customized.
> >>   */
> >> -#define CXL_DECODER_F_RAM   BIT(0)
> >> -#define CXL_DECODER_F_PMEM  BIT(1)
> >> -#define CXL_DECODER_F_TYPE2 BIT(2)
> >> -#define CXL_DECODER_F_TYPE3 BIT(3)
> >> -#define CXL_DECODER_F_LOCK  BIT(4)
> >> -#define CXL_DECODER_F_ENABLE    BIT(5)
> >> -#define CXL_DECODER_F_MASK  GENMASK(5, 0)
> >> +#define CXL_DECODER_F_RAM         BIT(0)
> >> +#define CXL_DECODER_F_PMEM        BIT(1)
> >> +#define CXL_DECODER_F_DEVMEM      BIT(2)
> >> +#define CXL_DECODER_F_HOSTONLYMEM BIT(3)
> >> +#define CXL_DECODER_F_LOCK        BIT(4)
> >> +#define CXL_DECODER_F_ENABLE      BIT(5)
> >> +#define CXL_DECODER_F_MASK        GENMASK(5, 0)
> >>  
> >>  enum cxl_decoder_type {
> >>  	CXL_DECODER_DEVMEM = 2,
> >> diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
> >> index 199afc2cd122..e195909928df 100644
> >> --- a/include/acpi/actbl1.h
> >> +++ b/include/acpi/actbl1.h
> >> @@ -551,11 +551,11 @@ struct acpi_cedt_cfmws_target_element {
> >>  
> >>  /* Values for Restrictions field above */
> >>  
> >> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2      (1)
> >> -#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3      (1<<1)
> >> -#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE   (1<<2)
> >> -#define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
> >> -#define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
> >> +#define ACPI_CEDT_CFMWS_RESTRICT_DEVMEM        (1)
> >> +#define ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM   (1<<1)
> >> +#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE      (1<<2)
> >> +#define ACPI_CEDT_CFMWS_RESTRICT_PMEM          (1<<3)
> >> +#define ACPI_CEDT_CFMWS_RESTRICT_FIXED         (1<<4)
> >>  
> >>  /* 2: CXL XOR Interleave Math Structure */
> >>  
> >> diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c
> >> index 90d5afd52dd0..9d919fc99f6b 100644
> >> --- a/tools/testing/cxl/test/cxl.c
> >> +++ b/tools/testing/cxl/test/cxl.c
> >> @@ -209,7 +209,7 @@ static struct {
> >>  			},
> >>  			.interleave_ways = 0,
> >>  			.granularity = 4,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 4UL,
> >> @@ -224,7 +224,7 @@ static struct {
> >>  			},
> >>  			.interleave_ways = 1,
> >>  			.granularity = 4,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 8UL,
> >> @@ -239,7 +239,7 @@ static struct {
> >>  			},
> >>  			.interleave_ways = 0,
> >>  			.granularity = 4,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 4UL,
> >> @@ -254,7 +254,7 @@ static struct {
> >>  			},
> >>  			.interleave_ways = 1,
> >>  			.granularity = 4,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 8UL,
> >> @@ -269,7 +269,7 @@ static struct {
> >>  			},
> >>  			.interleave_ways = 0,
> >>  			.granularity = 4,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 4UL,
> >> @@ -284,7 +284,7 @@ static struct {
> >>  			},
> >>  			.interleave_ways = 0,
> >>  			.granularity = 4,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M,
> >> @@ -301,7 +301,7 @@ static struct {
> >>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
> >>  			.interleave_ways = 0,
> >>  			.granularity = 4,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 8UL,
> >> @@ -317,7 +317,7 @@ static struct {
> >>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
> >>  			.interleave_ways = 1,
> >>  			.granularity = 0,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 8UL,
> >> @@ -333,7 +333,7 @@ static struct {
> >>  			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
> >>  			.interleave_ways = 2,
> >>  			.granularity = 0,
> >> -			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
> >> +			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
> >>  					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
> >>  			.qtg_id = FAKE_QTG_ID,
> >>  			.window_size = SZ_256M * 16UL,
> >> -- 
> >> 2.39.2
> >>
Dan Williams Nov. 7, 2024, 9:35 p.m. UTC | #6
Alison Schofield wrote:
[..]
> > I think so too.  However, I prefer to keep this patch just mechanic
> > renaming and do these changes in another patch.  Do you agree?
> > 
> 
> I don't know. I was just questioning where and how far the naming scheme
> needs to change.
> 
> Maybe Jonathan, as the Suggested-by, can chime in and move this ahead.

I feel like we are going to be living with the ghosts of the original
"Type2 / Type3" naming problem for the rest of the subsystem's lifespan
especially since they were encoded in the ABI and ABI is forever.

I am not opposed to this localized rename in drivers/cxl/acpi.c on
principal, but in terms of incremental value relative to the thrash, it's
questionable.

For example changes to include/acpi/actbl1.h need to be chased through
ACPICA, at which point is this rename really worth it?
Huang, Ying Nov. 10, 2024, 6:13 a.m. UTC | #7
Dan Williams <dan.j.williams@intel.com> writes:

> Alison Schofield wrote:
> [..]
>> > I think so too.  However, I prefer to keep this patch just mechanic
>> > renaming and do these changes in another patch.  Do you agree?
>> > 
>> 
>> I don't know. I was just questioning where and how far the naming scheme
>> needs to change.
>> 
>> Maybe Jonathan, as the Suggested-by, can chime in and move this ahead.
>
> I feel like we are going to be living with the ghosts of the original
> "Type2 / Type3" naming problem for the rest of the subsystem's lifespan
> especially since they were encoded in the ABI and ABI is forever.
>
> I am not opposed to this localized rename in drivers/cxl/acpi.c on
> principal, but in terms of incremental value relative to the thrash, it's
> questionable.
>
> For example changes to include/acpi/actbl1.h need to be chased through
> ACPICA, at which point is this rename really worth it?

I think that it's not too hard to change ACPI tables definition.  Added
Bob and Rui for ACPICA related change.

--
Best Regards,
Huang, Ying
Zhang Rui Nov. 12, 2024, 2:37 a.m. UTC | #8
CC Rafael,

On Sun, 2024-11-10 at 14:13 +0800, Huang, Ying wrote:
> Dan Williams <dan.j.williams@intel.com> writes:
> 
> > Alison Schofield wrote:
> > [..]
> > > > I think so too.  However, I prefer to keep this patch just
> > > > mechanic
> > > > renaming and do these changes in another patch.  Do you agree?
> > > > 
> > > 
> > > I don't know. I was just questioning where and how far the naming
> > > scheme
> > > needs to change.
> > > 
> > > Maybe Jonathan, as the Suggested-by, can chime in and move this
> > > ahead.
> > 
> > I feel like we are going to be living with the ghosts of the
> > original
> > "Type2 / Type3" naming problem for the rest of the subsystem's
> > lifespan
> > especially since they were encoded in the ABI and ABI is forever.
> > 
> > I am not opposed to this localized rename in drivers/cxl/acpi.c on
> > principal, but in terms of incremental value relative to the
> > thrash, it's
> > questionable.
> > 
> > For example changes to include/acpi/actbl1.h need to be chased
> > through
> > ACPICA, at which point is this rename really worth it?
> 
> I think that it's not too hard to change ACPI tables definition. 
> Added
> Bob and Rui for ACPICA related change.

For the change below,

diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index 199afc2cd122..e195909928df 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -551,11 +551,11 @@ struct acpi_cedt_cfmws_target_element {
 
 /* Values for Restrictions field above */
 
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2      (1)
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3      (1<<1)
-#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE   (1<<2)
-#define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
-#define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
+#define ACPI_CEDT_CFMWS_RESTRICT_DEVMEM        (1)
+#define ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM   (1<<1)
+#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE      (1<<2)
+#define ACPI_CEDT_CFMWS_RESTRICT_PMEM          (1<<3)
+#define ACPI_CEDT_CFMWS_RESTRICT_FIXED         (1<<4)

This change is made based on the spec update, right?

Do we have any user(other than Linux) for the old version of spec?
If yes, we probably need to keep the old ones. And IMO, if spec changes
and the bit definition changes, we should introduce new Macros for the
new definitions, together with spec revision info, say something like

#define ACPI_CEDT_CFMWS_V2_RESTRICT_DEVMEM        (1)
#define ACPI_CEDT_CFMWS_V2_RESTRICT_HOSTONLYMEM   (1<<1)
#define ACPI_CEDT_CFMWS_V2_RESTRICT_VOLATILE      (1<<2)
#define ACPI_CEDT_CFMWS_V2_RESTRICT_PMEM          (1<<3)
#define ACPI_CEDT_CFMWS_V2_RESTRICT_FIXED         (1<<4)

and make Linux stick with the new Macros?

thanks,
rui
diff mbox series

Patch

diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c
index 82b78e331d8e..aca8cbb7540d 100644
--- a/drivers/cxl/acpi.c
+++ b/drivers/cxl/acpi.c
@@ -115,10 +115,10 @@  static unsigned long cfmws_to_decoder_flags(int restrictions)
 {
 	unsigned long flags = CXL_DECODER_F_ENABLE;
 
-	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE2)
-		flags |= CXL_DECODER_F_TYPE2;
-	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_TYPE3)
-		flags |= CXL_DECODER_F_TYPE3;
+	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_DEVMEM)
+		flags |= CXL_DECODER_F_DEVMEM;
+	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM)
+		flags |= CXL_DECODER_F_HOSTONLYMEM;
 	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_VOLATILE)
 		flags |= CXL_DECODER_F_RAM;
 	if (restrictions & ACPI_CEDT_CFMWS_RESTRICT_PMEM)
diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c
index a5e6f3d23cfb..8524714968fd 100644
--- a/drivers/cxl/core/port.c
+++ b/drivers/cxl/core/port.c
@@ -125,8 +125,8 @@  static DEVICE_ATTR_RO(name)
 
 CXL_DECODER_FLAG_ATTR(cap_pmem, CXL_DECODER_F_PMEM);
 CXL_DECODER_FLAG_ATTR(cap_ram, CXL_DECODER_F_RAM);
-CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_TYPE2);
-CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_TYPE3);
+CXL_DECODER_FLAG_ATTR(cap_type2, CXL_DECODER_F_DEVMEM);
+CXL_DECODER_FLAG_ATTR(cap_type3, CXL_DECODER_F_HOSTONLYMEM);
 CXL_DECODER_FLAG_ATTR(locked, CXL_DECODER_F_LOCK);
 
 static ssize_t target_type_show(struct device *dev,
@@ -326,14 +326,14 @@  static struct attribute *cxl_decoder_root_attrs[] = {
 
 static bool can_create_pmem(struct cxl_root_decoder *cxlrd)
 {
-	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_PMEM;
+	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_PMEM;
 
 	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
 }
 
 static bool can_create_ram(struct cxl_root_decoder *cxlrd)
 {
-	unsigned long flags = CXL_DECODER_F_TYPE3 | CXL_DECODER_F_RAM;
+	unsigned long flags = CXL_DECODER_F_HOSTONLYMEM | CXL_DECODER_F_RAM;
 
 	return (cxlrd->cxlsd.cxld.flags & flags) == flags;
 }
diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
index 0fc96f8bf15c..b9083ce1cf74 100644
--- a/drivers/cxl/cxl.h
+++ b/drivers/cxl/cxl.h
@@ -315,13 +315,13 @@  resource_size_t cxl_rcd_component_reg_phys(struct device *dev,
  * Additionally indicate whether decoder settings were autodetected,
  * user customized.
  */
-#define CXL_DECODER_F_RAM   BIT(0)
-#define CXL_DECODER_F_PMEM  BIT(1)
-#define CXL_DECODER_F_TYPE2 BIT(2)
-#define CXL_DECODER_F_TYPE3 BIT(3)
-#define CXL_DECODER_F_LOCK  BIT(4)
-#define CXL_DECODER_F_ENABLE    BIT(5)
-#define CXL_DECODER_F_MASK  GENMASK(5, 0)
+#define CXL_DECODER_F_RAM         BIT(0)
+#define CXL_DECODER_F_PMEM        BIT(1)
+#define CXL_DECODER_F_DEVMEM      BIT(2)
+#define CXL_DECODER_F_HOSTONLYMEM BIT(3)
+#define CXL_DECODER_F_LOCK        BIT(4)
+#define CXL_DECODER_F_ENABLE      BIT(5)
+#define CXL_DECODER_F_MASK        GENMASK(5, 0)
 
 enum cxl_decoder_type {
 	CXL_DECODER_DEVMEM = 2,
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index 199afc2cd122..e195909928df 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -551,11 +551,11 @@  struct acpi_cedt_cfmws_target_element {
 
 /* Values for Restrictions field above */
 
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2      (1)
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3      (1<<1)
-#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE   (1<<2)
-#define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
-#define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
+#define ACPI_CEDT_CFMWS_RESTRICT_DEVMEM        (1)
+#define ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM   (1<<1)
+#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE      (1<<2)
+#define ACPI_CEDT_CFMWS_RESTRICT_PMEM          (1<<3)
+#define ACPI_CEDT_CFMWS_RESTRICT_FIXED         (1<<4)
 
 /* 2: CXL XOR Interleave Math Structure */
 
diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c
index 90d5afd52dd0..9d919fc99f6b 100644
--- a/tools/testing/cxl/test/cxl.c
+++ b/tools/testing/cxl/test/cxl.c
@@ -209,7 +209,7 @@  static struct {
 			},
 			.interleave_ways = 0,
 			.granularity = 4,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 4UL,
@@ -224,7 +224,7 @@  static struct {
 			},
 			.interleave_ways = 1,
 			.granularity = 4,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 8UL,
@@ -239,7 +239,7 @@  static struct {
 			},
 			.interleave_ways = 0,
 			.granularity = 4,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 4UL,
@@ -254,7 +254,7 @@  static struct {
 			},
 			.interleave_ways = 1,
 			.granularity = 4,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 8UL,
@@ -269,7 +269,7 @@  static struct {
 			},
 			.interleave_ways = 0,
 			.granularity = 4,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 4UL,
@@ -284,7 +284,7 @@  static struct {
 			},
 			.interleave_ways = 0,
 			.granularity = 4,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_VOLATILE,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M,
@@ -301,7 +301,7 @@  static struct {
 			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
 			.interleave_ways = 0,
 			.granularity = 4,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 8UL,
@@ -317,7 +317,7 @@  static struct {
 			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
 			.interleave_ways = 1,
 			.granularity = 0,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 8UL,
@@ -333,7 +333,7 @@  static struct {
 			.interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR,
 			.interleave_ways = 2,
 			.granularity = 0,
-			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_TYPE3 |
+			.restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM |
 					ACPI_CEDT_CFMWS_RESTRICT_PMEM,
 			.qtg_id = FAKE_QTG_ID,
 			.window_size = SZ_256M * 16UL,