[3/3] cxl/mem: Demarcate vendor specific capability IDs

Message ID 20210415232750.604112-1-ben.widawsky@intel.com
State Superseded
Headers show
Series
  • Untitled series #120540
Related show

Commit Message

Ben Widawsky April 15, 2021, 11:27 p.m.
Vendor capabilities occupy 0x8000 to 0xFFFF according to CXL 2.0 spec
8.2.8.2.1 CXL Device Capabilities. While they are not defined by the
spec, they are allowed and not "unknown". Call this detail out in the
logs to let users easily distinguish the difference.

v2: Should be greater than or equal to (Ben)

Fixes: 8adaf747c9f0b ("cxl/mem: Find device capabilities")
Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
---
 drivers/cxl/mem.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Dan Williams May 19, 2021, 8:01 p.m. | #1
On Thu, Apr 15, 2021 at 4:27 PM Ben Widawsky <ben.widawsky@intel.com> wrote:
>

> Vendor capabilities occupy 0x8000 to 0xFFFF according to CXL 2.0 spec

> 8.2.8.2.1 CXL Device Capabilities. While they are not defined by the

> spec, they are allowed and not "unknown". Call this detail out in the

> logs to let users easily distinguish the difference.

>

> v2: Should be greater than or equal to (Ben)

>

> Fixes: 8adaf747c9f0b ("cxl/mem: Find device capabilities")

> Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>

> ---

>  drivers/cxl/mem.c | 5 ++++-

>  1 file changed, 4 insertions(+), 1 deletion(-)

>

> diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c

> index c05617b0ba4b..28c7c29567b3 100644

> --- a/drivers/cxl/mem.c

> +++ b/drivers/cxl/mem.c

> @@ -939,7 +939,10 @@ static int cxl_mem_setup_regs(struct cxl_mem *cxlm)

>                         cxlm->memdev_regs = register_block;

>                         break;

>                 default:

> -                       dev_dbg(dev, "Unknown cap ID: %x (0x%x)\n", cap_id, offset);

> +                       if (cap_id >= 0x8000)

> +                               dev_dbg(dev, "Vendor cap ID: %x (0x%x)\n", cap_id, offset);

> +                       else

> +                               dev_dbg(dev, "Unknown cap ID: %x (0x%x)\n", cap_id, offset);


This wants the same %#x fixup that Vishal noted on patch2 [1], and I
think it would be useful to clarify that the second number is indeed
an offset: "Unknown cap_id: %#x offset: %#x\n"

[1]: http://lore.kernel.org/r/40063fe52fcaa066a42d352b13128b6762277542.camel@intel.com

Patch

diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c
index c05617b0ba4b..28c7c29567b3 100644
--- a/drivers/cxl/mem.c
+++ b/drivers/cxl/mem.c
@@ -939,7 +939,10 @@  static int cxl_mem_setup_regs(struct cxl_mem *cxlm)
 			cxlm->memdev_regs = register_block;
 			break;
 		default:
-			dev_dbg(dev, "Unknown cap ID: %x (0x%x)\n", cap_id, offset);
+			if (cap_id >= 0x8000)
+				dev_dbg(dev, "Vendor cap ID: %x (0x%x)\n", cap_id, offset);
+			else
+				dev_dbg(dev, "Unknown cap ID: %x (0x%x)\n", cap_id, offset);
 			break;
 		}
 	}