All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/12] cxl: Add support for Restricted CXL hosts (RCD mode)
@ 2022-11-24 18:34 Dan Williams
  2022-11-24 18:34 ` [PATCH v4 01/12] cxl/acpi: Simplify cxl_nvdimm_bridge probing Dan Williams
                   ` (13 more replies)
  0 siblings, 14 replies; 51+ messages in thread
From: Dan Williams @ 2022-11-24 18:34 UTC (permalink / raw)
  To: linux-cxl
  Cc: Terry Bowman, Rafael J. Wysocki, Robert Richter, rrichter,
	terry.bowman, bhelgaas, dave.jiang, nvdimm

Changes since v3 [1]:
- Rework / simplify CXL to LIBNVDIMM coordination to remove a
  flush_work() locking dependency from underneath the root device lock.
- Move the root device rescan to a workqueue
- Connect RCDs directly as endpoints reachable through a CXL host bridge
  as a dport, i.e. drop the extra dport indirection from v3
- Add unit test infrastructure for an RCD configuration

[1]: http://lore.kernel.org/r/20221109104059.766720-1-rrichter@amd.com/

---

>From [PATCH v4 10/12] cxl/port: Add RCD endpoint port enumeration

Unlike a CXL memory expander in a VH topology that has at least one
intervening 'struct cxl_port' instance between itself and the CXL root
device, an RCD attaches one-level higher. For example:

               VH
          ┌──────────┐
          │ ACPI0017 │
          │  root0   │
          └─────┬────┘
                │
          ┌─────┴────┐
          │  dport0  │
    ┌─────┤ ACPI0016 ├─────┐
    │     │  port1   │     │
    │     └────┬─────┘     │
    │          │           │
 ┌──┴───┐   ┌──┴───┐   ┌───┴──┐
 │dport0│   │dport1│   │dport2│
 │ RP0  │   │ RP1  │   │ RP2  │
 └──────┘   └──┬───┘   └──────┘
               │
           ┌───┴─────┐
           │endpoint0│
           │  port2  │
           └─────────┘

...vs:

              RCH
          ┌──────────┐
          │ ACPI0017 │
          │  root0   │
          └────┬─────┘
               │
           ┌───┴────┐
           │ dport0 │
           │ACPI0016│
           └───┬────┘
               │
          ┌────┴─────┐
          │endpoint0 │
          │  port1   │
          └──────────┘

So arrange for endpoint port in the RCH/RCD case to appear directly
connected to the host-bridge in its singular role as a dport. Compare
that to the VH case where the host-bridge serves a dual role as a
'cxl_dport' for the CXL root device *and* a 'cxl_port' upstream port for
the Root Ports in the Root Complex that are modeled as 'cxl_dport'
instances in the CXL topology.

Another deviation from the VH case is that RCDs may need to look up
their component registers from the Root Complex Register Block (RCRB).
That platform firmware specified RCRB area is cached by the cxl_acpi
driver and conveyed via the host-bridge dport to the cxl_mem driver to
perform the cxl_rcrb_to_component() lookup for the endpoint port
(See 9.11.8 CXL Devices Attached to an RCH for the lookup of the
upstream port component registers).

---

Dan Williams (9):
      cxl/acpi: Simplify cxl_nvdimm_bridge probing
      cxl/region: Drop redundant pmem region release handling
      cxl/pmem: Refactor nvdimm device registration, delete the workqueue
      cxl/pmem: Remove the cxl_pmem_wq and related infrastructure
      cxl/acpi: Move rescan to the workqueue
      tools/testing/cxl: Make mock CEDT parsing more robust
      cxl/mem: Move devm_cxl_add_endpoint() from cxl_core to cxl_mem
      cxl/port: Add RCD endpoint port enumeration
      tools/testing/cxl: Add an RCH topology

Robert Richter (2):
      cxl/ACPI: Register CXL host ports by bridge device
      cxl/acpi: Extract component registers of restricted hosts from RCRB

Terry Bowman (1):
      cxl/acpi: Set ACPI's CXL _OSC to indicate CXL1.1 support


 drivers/acpi/pci_root.c       |    1 
 drivers/cxl/acpi.c            |  105 +++++++++---
 drivers/cxl/core/core.h       |    8 -
 drivers/cxl/core/pmem.c       |   94 +++++++----
 drivers/cxl/core/port.c       |  111 +++++++------
 drivers/cxl/core/region.c     |   54 ++++++
 drivers/cxl/core/regs.c       |   56 +++++++
 drivers/cxl/cxl.h             |   46 +++--
 drivers/cxl/cxlmem.h          |   15 ++
 drivers/cxl/mem.c             |   72 ++++++++
 drivers/cxl/pci.c             |   13 +-
 drivers/cxl/pmem.c            |  351 +++++------------------------------------
 tools/testing/cxl/Kbuild      |    1 
 tools/testing/cxl/test/cxl.c  |  241 ++++++++++++++++++++++------
 tools/testing/cxl/test/mem.c  |   40 ++++-
 tools/testing/cxl/test/mock.c |   19 ++
 tools/testing/cxl/test/mock.h |    3 
 17 files changed, 712 insertions(+), 518 deletions(-)

base-commit: 3b39fd6cf12ceda2a2582dcb9b9ee9f4d197b857

^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2022-12-01 23:48 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-24 18:34 [PATCH v4 00/12] cxl: Add support for Restricted CXL hosts (RCD mode) Dan Williams
2022-11-24 18:34 ` [PATCH v4 01/12] cxl/acpi: Simplify cxl_nvdimm_bridge probing Dan Williams
2022-11-24 18:34 ` [PATCH v4 02/12] cxl/region: Drop redundant pmem region release handling Dan Williams
2022-11-24 18:34 ` [PATCH v4 03/12] cxl/pmem: Refactor nvdimm device registration, delete the workqueue Dan Williams
2022-11-25 15:01   ` Jonathan Cameron
2022-11-25 23:58     ` Dan Williams
2022-11-26  0:49   ` [PATCH v5 " Dan Williams
2022-11-24 18:34 ` [PATCH v4 04/12] cxl/pmem: Remove the cxl_pmem_wq and related infrastructure Dan Williams
2022-11-24 18:35 ` [PATCH v4 05/12] cxl/acpi: Move rescan to the workqueue Dan Williams
2022-11-24 18:35 ` [PATCH v4 06/12] tools/testing/cxl: Make mock CEDT parsing more robust Dan Williams
2022-11-28 11:13   ` Robert Richter
2022-11-28 18:20   ` Alison Schofield
2022-11-28 22:10     ` Dan Williams
2022-11-24 18:35 ` [PATCH v4 07/12] cxl/ACPI: Register CXL host ports by bridge device Dan Williams
2022-11-28 11:45   ` Robert Richter
2022-11-24 18:35 ` [PATCH v4 08/12] cxl/acpi: Extract component registers of restricted hosts from RCRB Dan Williams
2022-11-28 14:32   ` Robert Richter
2022-11-28 21:58     ` Dan Williams
2022-11-28 22:56       ` Robert Richter
2022-11-29  0:10         ` Dan Williams
2022-11-30 14:43       ` Robert Richter
2022-11-24 18:35 ` [PATCH v4 09/12] cxl/mem: Move devm_cxl_add_endpoint() from cxl_core to cxl_mem Dan Williams
2022-11-28 19:50   ` Robert Richter
2022-11-28 20:35     ` Robert Richter
2022-11-28 23:42     ` Dan Williams
2022-11-29 20:52       ` Robert Richter
2022-11-24 18:35 ` [PATCH v4 10/12] cxl/port: Add RCD endpoint port enumeration Dan Williams
2022-11-28 16:28   ` Dave Jiang
2022-11-28 18:20     ` Dan Williams
2022-11-28 23:06   ` Robert Richter
2022-11-29  0:25     ` Dan Williams
2022-11-29 21:22       ` Robert Richter
2022-11-30 20:39         ` Dan Williams
2022-12-01 15:23           ` Robert Richter
2022-12-01 22:18             ` Robert Richter
2022-12-01 22:43   ` Robert Richter
2022-12-01 23:48     ` Dan Williams
2022-11-24 18:35 ` [PATCH v4 11/12] tools/testing/cxl: Add an RCH topology Dan Williams
2022-11-28 19:26   ` Alison Schofield
2022-11-28 22:28     ` Dan Williams
2022-11-28 22:41     ` Dan Williams
2022-11-29 12:52       ` Jonathan Cameron
2022-11-29 20:49   ` Robert Richter
2022-11-30 20:24     ` Dan Williams
2022-11-24 18:35 ` [PATCH v4 12/12] cxl/acpi: Set ACPI's CXL _OSC to indicate CXL1.1 support Dan Williams
2022-11-30  8:16   ` Robert Richter
2022-11-30 21:02     ` Dan Williams
2022-11-29 21:26 ` [PATCH v4 00/12] cxl: Add support for Restricted CXL hosts (RCD mode) Robert Richter
2022-11-30 20:59   ` Dan Williams
2022-12-01 22:59     ` Robert Richter
2022-11-30 17:14 ` Robert Richter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.