linux/tools
Dan Williams 8e4c411c53 cxl: Introduce 'struct cxl_dpa_partition' and 'struct cxl_range_info'
The pending efforts to add CXL Accelerator (type-2) device [1], and
Dynamic Capacity (DCD) support [2], tripped on the
no-longer-fit-for-purpose design in the CXL subsystem for tracking
device-physical-address (DPA) metadata. Trip hazards include:

- CXL Memory Devices need to consider a PMEM partition, but Accelerator
  devices with CXL.mem likely do not in the common case.

- CXL Memory Devices enumerate DPA through Memory Device mailbox
  commands like Partition Info, Accelerators devices do not.

- CXL Memory Devices that support DCD support more than 2 partitions.
  Some of the driver algorithms are awkward to expand to > 2 partition
  cases.

- DPA performance data is a general capability that can be shared with
  accelerators, so tracking it in 'struct cxl_memdev_state' is no longer
  suitable.

- Hardcoded assumptions around the PMEM partition always being index-1
  if RAM is zero-sized or PMEM is zero sized.

- 'enum cxl_decoder_mode' is sometimes a partition id and sometimes a
  memory property, it should be phased in favor of a partition id and
  the memory property comes from the partition info.

Towards cleaning up those issues and allowing a smoother landing for the
aforementioned pending efforts, introduce a 'struct cxl_dpa_partition'
array to 'struct cxl_dev_state', and 'struct cxl_range_info' as a shared
way for Memory Devices and Accelerators to initialize the DPA information
in 'struct cxl_dev_state'.

For now, split a new cxl_dpa_setup() from cxl_mem_create_range_info() to
get the new data structure initialized, and cleanup some qos_class init.
Follow on patches will go further to use the new data structure to
cleanup algorithms that are better suited to loop over all possible
partitions.

cxl_dpa_setup() follows the locking expectations of mutating the device
DPA map, and is suitable for Accelerator drivers to use. Accelerators
likely only have one hardcoded 'ram' partition to convey to the
cxl_core.

Link: http://lore.kernel.org/20241230214445.27602-1-alejandro.lucero-palau@amd.com [1]
Link: http://lore.kernel.org/20241210-dcd-type2-upstream-v8-0-812852504400@intel.com [2]
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Alejandro Lucero <alucerop@amd.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Tested-by: Alejandro Lucero <alucerop@amd.com>
Link: https://patch.msgid.link/173864305827.668823.13978794102080021276.stgit@dwillia2-xfh.jf.intel.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
2025-02-04 13:48:19 -07:00
..
accounting delayacct: add delay min to record delay peak 2025-01-12 20:21:16 -08:00
arch arm64/sysreg/tools: Move TRFCR definitions to sysreg 2025-01-12 12:50:11 +00:00
bootconfig tools/bootconfig: Fix the wrong format specifier 2025-01-28 23:27:01 +09:00
bpf perf-tools changes for v6.14 2025-01-24 05:45:40 -08:00
build perf tools: Expose quiet/verbose variables in Makefile.perf 2025-01-16 10:59:20 -08:00
certs
cgroup
counter
crypto
debugging
firewire
firmware
gpio
hv
iio
include KVM/arm64 updates for 6.14 2025-01-28 09:01:36 -08:00
kvm/kvm_stat
laptop
leds
lib perf-tools changes for v6.14 2025-01-24 05:45:40 -08:00
memory-model
mm
net tools: ynl: c: correct reverse decode of empty attrs 2025-01-27 14:30:23 -08:00
objtool Objtool changes for v6.14: 2025-01-21 10:13:11 -08:00
pcmcia
perf perf-tools fixes for 6.14 2025-01-30 17:38:20 -08:00
power Turbostat 2025.02.02 updates since 2024.11.30 2025-02-02 10:49:13 -08:00
rcu
sched_ext sched_ext: Use time helpers in BPF schedulers 2025-01-10 08:04:40 -10:00
scripts perf tools: Create generic syscall table support 2025-01-09 12:49:49 -03:00
sound
spi
testing cxl: Introduce 'struct cxl_dpa_partition' and 'struct cxl_range_info' 2025-02-04 13:48:19 -07:00
thermal
time
tracing rv: tools/rtla: Updates for 6.14 2025-01-26 14:25:58 -08:00
usb
verification verification/dot2k: Implement event type detection 2024-12-27 14:41:01 -05:00
virtio
wmi
workqueue
writeback
Makefile