Hi Linus, please pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl tags/cxl-for-6.0
...to receive initial support and infrastructure for dynamic CXL region
provisioning and other updates. The support is considered "initial"
because it only tackles persistent memory provisioning, and only for
the decode setup portion of the process.
This is important to merge in this form because it is foundational for
other development that depends on the new 'struct cxl_region' object.
That follow-on development for features like region assembly from
labels, address translation for error handling, and RAM region
provisioning will play out over the next several development cycles.
Addtionally the recently released CXL 3.0 specification adds more
complexity like "dynamic capacity devices" (think "thin provisioning
for memory") that builds on top of the 'struct cxl_region' object.
There is new core driver infrastructure to note in this pull. First,
alloc_free_mem_region() is introduced as a straightforward enhancement
of request_free_mem_region() as a generic allocator of physical memory
address space. Recall that CXL provides platform "windows" where CXL
regions can be dynamically provisioned, and that provisioning flow
needs an allocator. Related to that is the new export of
insert_resource_expand_to_fit(), but only into the 'CXL' symbol
namespace. That lets the CXL subsystem advertise the platform ranges to
exclude from request_free_mem_region() requests. Lastly, there is a new
PCI core driver service for DOE (Data Object Exchange) mailboxes. This
is a mailbox built over configuration cycles* that has many use cases,
one of which is retrieving the CDAT (Coherent Device Attribute Table)
from CXL endpoints.
This has appeared in linux-next and has attracted several fixes and
cleanups. There is debug in-flight for a recent problem report of
configuring 4-way regions under a single host-bridge, but these commits
have otherwise passed testing on several emulation platforms including
but not limited to QEMU and the in-kernel cxl_test infrastructure.
There are no other known issues or conflicts.
The new driver infrastructure has acks from Greg (resource APIs) and
Bjorn (PCI DOE). A few tags also arrived after the branch was cut for
soaking in linux-next:
910bc55da828 cxl/region: Move HPA setup to cxl_region_attach()
Reviewed-by: Jonathan Cameron
298d44d04b2b cxl/region: Fix x1 interleave to greater than x1 interleave routing
Reviewed-by: Jonathan Cameron
Tested-by: Jonathan Cameron #via qemu
4d8e4ea5bb39 cxl/region: Disallow region granularity != window granularity
Reviewed-by: Jonathan Cameron
Please pull, thanks.
* Note, I am uneasy that DOE seems to have both use cases where a
kernel driver is appropriate, and some where a userspace driver over
PCI-sysfs is sufficient. As DOE proliferates I expect Linux will need
to be more explicit about managing those potential conflicts.
---
The following changes since commit e35f5718903b093be4b1d3833aa8a32f864a3ef1:
cxl/mbox: Fix missing variable payload checks in cmd size validation
(2022-06-28 22:03:18 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl tags/cxl-for-6.0
for you to fetch changes up to 1cd8a2537eb07751d405ab7e2223f20338a90506:
cxl/hdm: Fix skip allocations vs multiple pmem allocations (2022-08-05
16:11:38 -0700)
cxl for 6.0
- Introduce a 'struct cxl_region' object with support for provisioning
and assembling persistent memory regions.
- Introduce alloc_free_mem_region() to accompany the existing
request_free_mem_region() as a method to allocate physical memory
capacity out of an existing resource.
- Export insert_resource_expand_to_fit() for the CXL subsystem to
late-publish CXL platform windows in iomem_resource.
- Add a polled mode PCI DOE (Data Object Exchange) driver service and
use it in cxl_pci to retrieve the CDAT (Coherent Device Attribute
Table).
Bagas Sanjaya (3):
cxl/regions: add padding for cxl_rr_ep_add nested lists
cxl/region: describe targets and nr_targets members of cxl_region_params
Documentation: cxl: remove dangling kernel-doc reference
Ben Widawsky (6):
cxl/hdm: Use local hdm variable
cxl/hdm: Require all decoders to be enumerated
cxl/hdm: Add sysfs attributes for interleave ways + granularity
cxl/region: Add region creation support
cxl/region: Add a 'uuid' attribute
cxl/region: Add interleave geometry attributes
Dan Carpenter (4):
cxl/region: uninitialized variable in alloc_hpa()
cxl/region: prevent underflow in ways_to_cxl()
cxl/region: decrement ->nr_targets on error in cxl_region_attach()
cxl/region: Fix IS_ERR() vs NULL check
Dan Williams (54):
tools/testing/cxl: Fix cxl_hdm_decode_init() calling convention