Re: [PATCH v4 5/8] cxl/acpi: Introduce ACPI0017 driver and cxl_root

From: Dan Williams
Date: Fri May 14 2021 - 16:29:48 EST


On Fri, May 14, 2021 at 2:19 AM Jonathan Cameron
<Jonathan.Cameron@xxxxxxxxxx> wrote:
>
> On Thu, 13 May 2021 22:22:10 -0700
> Dan Williams <dan.j.williams@xxxxxxxxx> wrote:
>
> > While CXL builds upon the PCI software model for dynamic enumeration and
> > control, a static platform component is required to bootstrap the CXL
> > memory layout. In addition to identifying the host bridges ACPI is
> > responsible for enumerating the CXL memory space that can be addressed
> > by decoders. This is similar to the requirement for ACPI to publish
> > resources reported by _CRS for PCI host bridges.
> >
> > Introduce the cxl_root object as an abstract "port" into the CXL.mem
> > address space described by HDM decoders identified by the ACPI
> > CEDT.CHBS.
> >
> > For now just establish the initial boilerplate and sysfs attributes, to
> > be followed by enumeration of the ports within the host bridge.
> >
> > Note the allocation of CXL core device objects is split into separate
> > alloc and add steps in order to separate the alloc error path (kfree())
> > from the device add error path (put_device()).
> >
> > Cc: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
> > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
>
> A few really minor editorial things in the docs that need tidying up.

Sure, I'm going to see if b4 can follow a v5 reply to just this one
patch, or otherwise hack it to support that flow so I don't need to
resend the full series.

> With that done
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
>
> I'll make the bold assumption that this is going to get applied
> before the DOE series and base that on top of this one.

Yes, the plan is to make the 'next' branch of:

git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git

...the stable non-rebasing development branch for contributions. bf gntcbttttt

>
> Thanks,
>
> Jonathan
>
> > ---
> > Documentation/ABI/testing/sysfs-bus-cxl | 78 +++++++
> > drivers/cxl/Kconfig | 14 +
> > drivers/cxl/Makefile | 2
> > drivers/cxl/acpi.c | 39 +++
> > drivers/cxl/core.c | 360 +++++++++++++++++++++++++++++++
> > drivers/cxl/cxl.h | 65 ++++++
> > 6 files changed, 558 insertions(+)
> > create mode 100644 drivers/cxl/acpi.c
> >
> > diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl
> > index 2fe7490ad6a8..d21469e2bf8b 100644
> > --- a/Documentation/ABI/testing/sysfs-bus-cxl
> > +++ b/Documentation/ABI/testing/sysfs-bus-cxl
> > @@ -24,3 +24,81 @@ Description:
> > (RO) "Persistent Only Capacity" as bytes. Represents the
> > identically named field in the Identify Memory Device Output
> > Payload in the CXL-2.0 specification.
> > +
> > +What: /sys/bus/cxl/devices/address_spaceX/start
> > +Date: May, 2021
> > +KernelVersion: v5.14
> > +Contact: linux-cxl@xxxxxxxxxxxxxxx
> > +Description:
>
> I'm not that fussy about this, but others may comment on wrapping lines around 70 chars
> whereas can at least go to 80 for docs.

Sure I can reflow.

>
> > + (RO) System-physical base address for an address range
> > + that supports CXL.mem targets. A CXL address space can
> > + be optionally populated with endpoints that decode that
> > + range, similar to how devices behind a PCI bridge can
> > + decode a portion of the bridge's secondary bus address
> > + space.
> > +
> > +What: /sys/bus/cxl/devices/address_spaceX/end
> > +Date: May, 2021
> > +KernelVersion: v5.14
> > +Contact: linux-cxl@xxxxxxxxxxxxxxx
> > +Description:
> > + (RO) System-physical end address for an address range
> > + that supports CXL.mem targets. A CXL address space can
> > + be optionally populated with endpoints that decode that
> > + range, similar to how devices behind a PCI bridge can
> > + decode a portion of the bridge's secondary bus address
> > + space.
> > +
> > +What: /sys/bus/cxl/devices/address_spaceX/supports_ram
>
> Inconsistent tabs vs spaces.

ok.