linux/drivers/acpi
Vishal Verma 48d4180939 ACPI: HMAT: Fix initiator registration for single-initiator systems
In a system with a single initiator node, and one or more memory-only
'target' nodes, the memory-only node(s) would fail to register their
initiator node correctly. i.e. in sysfs:

  # ls /sys/devices/system/node/node0/access0/targets/
  node0

Where as the correct behavior should be:

  # ls /sys/devices/system/node/node0/access0/targets/
  node0 node1

This happened because hmat_register_target_initiators() uses list_sort()
to sort the initiator list, but the sort comparision function
(initiator_cmp()) is overloaded to also set the node mask's bits.

In a system with a single initiator, the list is singular, and list_sort
elides the comparision helper call. Thus the node mask never gets set,
and the subsequent search for the best initiator comes up empty.

Add a new helper to consume the sorted initiator list, and generate the
nodemask, decoupling it from the overloaded initiator_cmp() comparision
callback. This prevents the singular list corner case naturally, and
makes the code easier to follow as well.

Cc: <stable@vger.kernel.org>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: Liu Shixin <liushixin2@huawei.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reported-by: Chris Piper <chris.d.piper@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Link: https://lore.kernel.org/r/20221116-acpi_hmat_fix-v2-2-3712569be691@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2022-11-18 23:55:40 -08:00
..
acpica Revert "ACPICA: executer/exsystem: Warn about sleeps greater than 10 ms" 2022-05-21 18:02:26 +02:00
apei ACPI: APEI: Fix integer overflow in ghes_estatus_pool_init() 2022-10-13 20:40:09 +02:00
arm64 iommu: Add gfp parameter to iommu_alloc_resv_region 2022-10-21 10:49:32 +02:00
dptf ACPI: DPTF: Drop stale link from Kconfig help 2022-09-28 17:26:25 +02:00
nfit cxl for 5.19 2022-05-27 21:24:19 -07:00
numa ACPI: HMAT: Fix initiator registration for single-initiator systems 2022-11-18 23:55:40 -08:00
pmic
x86 ACPI: x86: Add another system to quirk list for forcing StorageD3Enable 2022-10-28 17:34:59 +02:00
ac.c ACPI: AC: Remove the leftover struct acpi_ac_bl 2022-09-24 18:22:59 +02:00
acpi_adxl.c
acpi_amba.c Merge branches 'acpi-ec', 'acpi-ac', 'acpi-fan', 'acpi-video' and 'acpi-amba' 2022-10-03 19:59:47 +02:00
acpi_apd.c ACPI: APD: Use the helper acpi_dev_get_memory_resources() 2022-09-10 18:22:24 +02:00
acpi_cmos_rtc.c
acpi_configfs.c
acpi_dbg.c
acpi_extlog.c ACPI: extlog: Handle multiple records 2022-10-13 20:43:10 +02:00
acpi_fpdt.c ACPI: tables: FPDT: Don't call acpi_os_map_memory() on invalid phys address 2022-09-10 18:18:34 +02:00
acpi_ipmi.c
acpi_lpat.c
acpi_lpit.c Revert "ACPI / PM: LPIT: Register sysfs attributes based on FADT" 2022-07-15 20:04:07 +02:00
acpi_lpss.c Merge branch 'acpi-uid' 2022-10-03 20:09:22 +02:00
acpi_memhotplug.c
acpi_pad.c
acpi_pcc.c ACPI: PCC: Fix unintentional integer overflow 2022-10-26 13:33:31 +02:00
acpi_platform.c Merge branches 'acpi-scan', 'acpi-bus' and 'acpi-platform' 2022-09-30 20:28:22 +02:00
acpi_pnp.c
acpi_processor.c
acpi_tad.c
acpi_video.c platform-drivers-x86 for v6.1-1 2022-10-05 10:38:24 -07:00
acpi_watchdog.c
battery.c ACPI: battery: Make "not-charging" the default on no charging or full info 2022-05-06 20:37:51 +02:00
bgrt.c ACPI: BGRT: use static for BGRT_SHOW kobj_attribute defines 2022-04-22 16:55:33 +02:00
blacklist.c
bus.c Merge branches 'acpi-misc', 'acpi-tools' and 'acpi-docs' 2022-10-03 20:03:49 +02:00
button.c
container.c ACPI: container: Use acpi_dev_for_each_child() 2022-06-20 20:33:05 +02:00
cppc_acpi.c ACPI: CPPC: Disable FIE if registers in PCC regions 2022-09-24 18:43:46 +02:00
custom_method.c
debugfs.c
device_pm.c Merge branches 'acpi-apei', 'acpi-wakeup', 'acpi-reboot' and 'acpi-thermal' 2022-10-10 18:11:11 +02:00
device_sysfs.c ACPI: bus: Drop driver member of struct acpi_device 2022-06-30 14:11:21 +02:00
dock.c
ec_sys.c
ec.c ACPI: EC: Drop unneeded result variable from ec_write() 2022-09-03 20:31:26 +02:00
event.c
evged.c
fan_attr.c
fan_core.c ACPI: fan: Reorder symbols to get rid of a few forward declarations 2022-09-24 18:46:52 +02:00
fan.h ACPI: DPTF: Support Meteor Lake 2022-05-25 15:37:07 +02:00
glue.c ACPI: glue: Introduce acpi_find_child_by_adr() 2022-06-20 20:28:48 +02:00
hed.c
internal.h ACPI: scan: Eliminate __acpi_device_add() 2022-08-23 18:19:27 +02:00
ioapic.c
irq.c Merge branches 'acpi-apei', 'acpi-wakeup', 'acpi-reboot' and 'acpi-thermal' 2022-10-10 18:11:11 +02:00
Kconfig platform-drivers-x86 for v6.1-1 2022-10-05 10:38:24 -07:00
Makefile ACPI: processor: Split out thermal initialization from ACPI PSS 2022-06-29 18:51:22 +02:00
nvs.c
osi.c ACPI: OSI: Remove Linux-HPI-Hybrid-Graphics _OSI string 2022-08-25 20:18:17 +02:00
osl.c ACPI: OSL: Remove the helper for deactivating memory region 2022-04-27 20:44:55 +02:00
pci_irq.c
pci_link.c ACPI/PCI: Remove useless NULL pointer checks 2022-07-27 21:21:27 +02:00
pci_mcfg.c PCI: loongson: Add ACPI init support 2022-07-14 15:25:36 -05:00
pci_root.c ACPI: PCI: Fix device reference counting in acpi_get_pci_dev() 2022-10-19 13:28:30 +02:00
pci_slot.c
pfr_telemetry.c
pfr_update.c
platform_profile.c
power.c ACPI: scan: Eliminate __acpi_device_add() 2022-08-23 18:19:27 +02:00
pptt.c ACPI: PPTT: Leave the table mapped for the runtime usage 2022-07-22 10:04:43 +02:00
prmt.c ACPI: PRM: Change handler_addr type to void pointer 2022-06-30 17:35:45 +02:00
proc.c
processor_core.c
processor_driver.c ACPI: processor: Split out thermal initialization from ACPI PSS 2022-06-29 18:51:22 +02:00
processor_idle.c ACPI updates for 6.1-rc1 2022-10-03 13:19:53 -07:00
processor_pdc.c
processor_perflib.c
processor_thermal.c ACPI: processor: Remove freq Qos request for all CPUs 2022-08-23 18:09:06 +02:00
processor_throttling.c
property.c Merge branch 'acpi-dev' 2022-09-30 20:05:16 +02:00
reboot.c
resource.c ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA 2022-10-26 13:41:11 +02:00
sbs.c ACPI: Drop parent field from struct acpi_device 2022-08-24 20:55:24 +02:00
sbshc.c ACPI: Drop parent field from struct acpi_device 2022-08-24 20:55:24 +02:00
sbshc.h
scan.c ACPI: scan: Add LATT2021 to acpi_ignore_dep_ids[] 2022-10-26 13:44:13 +02:00
sleep.c PM: ACPI: reboot: Reinstate S5 for reboot 2022-10-04 15:59:36 +02:00
sleep.h ACPI: s2idle: Add a new ->check() callback for platform_s2idle_ops 2022-09-09 17:37:40 +02:00
spcr.c ACPI: SPCR: Add support for NVIDIA 16550-compatible port subtype 2022-04-13 20:37:29 +02:00
sysfs.c ACPI: sysfs: Fix BERT error region memory mapping 2022-04-13 19:58:14 +02:00
tables.c
thermal.c ACPI: thermal: Drop some redundant code 2022-10-05 17:51:52 +02:00
tiny-power-button.c
utils.c Merge branch 'acpi-uid' 2022-10-03 20:09:22 +02:00
video_detect.c ACPI: video: Add backlight=native DMI quirk for Dell G15 5515 2022-11-07 12:33:28 +01:00
viot.c iommu/dma: Make header private 2022-09-09 09:26:22 +02:00
wakeup.c