Commit 4df4d2a577db for kernel

commit 4df4d2a577db2d3d57b888bcfb1206fc74661d16
Merge: ccc4d9f8912a 84c4409e8566
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Oct 21 12:08:18 2026 -1000

    Merge tag 'acpi-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

    Pull ACPI support updates from Rafael Wysocki:
     "The most significant change here is the rework of the core ACPI device
      enumeration code to avoid initializing ACPI power management
      prematurely for devices with unmet dependencies. This essentially is a
      problem fix, but it requires taking PCI device enumeration ordering
      into account among other things, so it is far from straightforward.
      There was an attempt to do this in the 7.3 time frame that had to be
      reverted, so this time it is done much more carefully.

      There is also an ACPI thermal control update rearranging the code to
      register thermal class cooling devices under specific parents, which
      is visible in sysfs. This helps to figure out what is represented by
      those devices much more easily, but it also allows the binding of
      cooling devices to trip points in thermal zones to be adjusted so it
      need not rely on specific cooling device data usage in thermal
      drivers.

      From the number of commits perspective, the most visible part is the
      one replacing acpi_get_first_physical_node() with
      acpi_bus_get_primary_device() everywhere and dropping the former that
      was inherently racy and generally unsafe to use. Fortunately, the
      maintainers involved responded timely and all of that could be done
      within one development cycle.

      Another quite visible part is Dave Jiang's series fixing multiple
      issues reported by Sashiko in the ACPI APEI support code with a PCI
      AER improvement on top. It took several iterations of this to make
      Sashiko happy and the code in question should be much more robust
      going forward.

      One other thing worth mentioning separately is that the ACPI bus type
      is now going to be registered as a "companion" one and it will not be
      possible to register a driver binding directly to a struct
      acpi_device. All of the existing users of those drivers in the tree
      were converted to platform drivers in the previous cycles, so this is
      just a final step in a longer journey.

      Apart from the above, there are many fixes, mostly in drivers, with a
      noticeable exception of a fix in the code binding devices to their
      ACPI companions, new IOVT IOMMU support in ACPICA, new _Ixx object
      support for suspend-to-idle on x86, multiple new quirks, mostly
      related to unused ACPI power resources and backlight handling, and
      assorted cleanups.

      Specifics:

       - Make the core ACPI device enumeration code stop attempting to
         initialize ACPI power management for devices before they are known
         to be present and functional (Rafael Wysocki)

       - Simplify and clean up the core ACPI device enumeration code on top
         of the previous adjustment and reduce debug noise coming from it
         (Rafael Wysocki)

       - Fix locking in the code binding devices to their ACPI companions,
         prevent it from replacing a valid ACPI companion pointer with NULL
         incidentally, improve its messaging (including debug noise
         reduction), and reduce its overhead by making it skip the cases in
         which no ACPI companion may exist early (Rafael Wysocki)

       - Reduce runtime memory footprint of struct acpi_device by
         rearranging fields in it (Andy Shevchenko)

       - Update the driver core to allow bus types without drivers to be
         registered as "companion bus types" without driver-related sysfs
         attributes and register the ACPI bus type as a companion one
         (Rafael Wysocki)

       - Use strscpy() instead of strcpy() in the ACPI sysfs interface
         (Ruslan Vagner)

       - Remove __meminitdata from hmat_adist_nb declaration preserving it
         even when CONFIG_MEMORY_HOTPLUG is not set to prevent notifier
         chain corruption in some cases (Alejandro Lucero)

       - Prevent a NULL pointer dereference when attempting to read the
         table length after a mapping bookkeeping failure during an initrd
         override invocation with permanent table mappings enabled (Slavin
         Liu)

       - Use for_each_populated_zone() in get_node_num() in the MRRM table
         pareser (Sang-Heon Jeon)

       - Use vsnprintf() in acpi_os_vprintf() to prevent memory corruption
         resulting from overly long diagnostic messages that may not fit
         into a static buffer used by ACPICA and may be produced by a
         malformed ACPI table (Vlatko Kosturjak)

       - Ignore leading root scope prefix in string _UID match to allow AMD
         IOMMU matching to work as expected in some cases (Mario
         Limonciello)

       - Adjust message printing macros for ACPI objects to use dev_fmt()
         for more consistency with the analogous dev_*() macros (Rafael
         Wysocki)

       - Add _Ixx GPE wake indicator support to the x86 suspend-to-idle
         handling code (Saranya Gopal)

       - Clear driver_data before free in the ACPI PCI Link driver to
         prevent a dangling pointer from being used later (Jiale Yao)

       - Accumulate the queued flag across error sections of a CPER record
         in ghes_do_proc() to prevent it from being cleared by a later
         section or entry that does not queue memory-failure work (Breno
         Leitao)

       - Map a raw PCI AER Capability image field by field to prevent
         information loss from occurring while processing it (Dave Jiang)

       - Update a stale driver source reference in the ACPI APEI EINJ driver
         documentation (Prabhakar Pujeri)

       - Reject CPER records with an out-of-range error_data_length or an
         error status block length wrapping a u32 in the EFI CPER driver
         (Dave Jiang)

       - Address multiple assorted issues in the ACPI extlog driver (Dave
         Jiang)

       - Address two issues related to CXL in the ACPI APEI GHES driver
         (Dave Jiang)

       - Read only validated fields in cper_mem_err_pack() (Dave Jiang)

       - Validate memory error section length before payload access, prevent
         writes past array bounds from occurring and sanitize software
         metadata in the ACPI APEI GHES driver (Dave Jiang)

       - Make cxl_cper_handle_prot_err() static (Dave Jiang)

       - Add IOVT IOMMU support to ACPICA (Bibo Mao)

       - Fix PCC OperationRegion command offsets in ACPICA (Sudeep Holla)

       - Fix memory leak in acpi_ds_create_field() related to the handling
         of internal_pcc_buffer allocations (Breno Leitao)

       - Fix memory leak due to leftover devm_kcalloc() argument in the ACPI
         fan driver (Rafael Wysocki)

       - Fix backlight unregistration ordering in the ACPI video bus device
         driver (Rafael Wysocki)

       - Update the thermal core to allow the registration of thermal class
         cooling devices under specific parents and convert the ACPI fan,
         ACPI processor, and ACPI video bus device drivers to do so (Rafael
         Wysocki)

       - Adjust the ACPI thermal zone driver to use thermal class cooling
         device parent information for binding cooling devices to trip
         points in thermal zones (Rafael Wysocki)

       - Use cooling device data that is a better match for a given driver
         instead of a struct acpi_device pointer that had to be used for
         this purpose previously in the ACPI fan and processor drivers
         (Rafael Wysocki)

       - Fix acpi_thermal_guess_offset() in the ACPI thermal zone driver for
         thermal zone devices with a 273.0°K offset (Hans de Goede)

       - Define a free for ACPI objects allocated by ACPICA helpers and use
         it to simplify AML error handling in the ACPI fan driver (Rafael
         Wysocki)

       - Switch over the users of acpi_get_first_physical_node(), that was
         inherently racy and therefore not really safe to use, to use its
         replacement acpi_bus_get_primary_device(), and eliminate the former
         (Rafael Wysocki)

       - Add !CONFIG_ACPI stubs for acpi_find_child_device() and
         acpi_device_uid() (Mario Limonciello and Robin Murphy)

       - Fix bogus cycle count values on systems without _BIX in the ACPI
         battery driver (Armin Wolf)

       - Fix NULL pointer dereference on allocation failure and report
         relative state of charge as CAPACITY in the ACPI SBS driver (Itay
         Shem-tov and Guangshuo Li)

       - Add lid_init_state quirk for Razer Blade Stealth 13 (Early 2020)
         RZ09-0310 to the ACPI button driver (Ian Gallagher)

       - Add new quirks to force the native backlight on Dell OptiPlex AIO
         7410 35W and Acer Nitro AN515-58 in the ACPI video bus device
         driver (Chitransh Mandhaniya and Dirga Yuza)

       - Fix the shared memory signature handling in the ACPI PCC address
         space handler, free the PCC mailbox channel on operation region
         deactivation, and avoid unnecessary repeated computations of the
         PCC operation region command timeout (Sudeep Holla)

       - Fix a log message typo in the ACPI NUMA support code (Hemanth
         Selam)

       - Zero-initialize capability query result in the ACPI Platform
         Firmware Runtime Update and Telemetry driver to avoid disclosure of
         kernel stack data to user space (Karl Mehltretter)

       - Replace the remaining built-in/module check for CONFIG_ACPI_WMI in
         a header file with IS_ENABLED() macro (Lalit Shankar Chowdhury)

       - Retry probing battery docks after hotplug in the ACPI docking
         station driver to avoid missing ACPI add notifications (Vibhor
         Goel)

       - Detach device after resource transition failure in
         pnp_device_probe() to avoid blocking later manual PNP configuration
         attempts (Myeonghun Pak)"

    * tag 'acpi-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (90 commits)
      ACPI: PM: Add Acer Aspire A515-53G to dmi_leave_unused_power_resources_on[]
      ACPI: video: force native backlight on Dell OptiPlex AIO 7410 35W
      ACPI: PM: sleep: Drop unused sleep_no_lps0 define
      ACPI: PM: Add unused power resource quirk for Casper Excalibur G900
      ACPI: dock: Retry probing battery docks after hotplug
      ACPI: PCI: pci_link: clear driver_data before free
      ACPI: APEI: accumulate the queued flag across error sections
      ACPICA: actbl2.h: Add bit constants of the Flags field in the IOVT IOMMU structure
      ACPI: bus: Drop acpi_get_first_physical_node()
      efi/dev-path-parser: Switch to use acpi_bus_get_primary_device()
      ALSA: hda: tas2781: Switch to use acpi_bus_get_primary_device()
      ALSA: hda: cs35l41: Switch to use acpi_bus_get_primary_device()
      iommu/arm-smmu-v3: Switch to use acpi_bus_get_primary_device()
      PCI/AER: Map a raw AER Capability image field by field
      ACPI: NUMA: fix typo in log message
      ACPI: Add stub for acpi_find_child_device()
      driver core/ACPI: Introduce companion_bus_register()
      ACPI: PCC: Cache OpRegion command timeout
      ACPI: PCC: Free channel on OpRegion deactivation
      ACPI: PCC: Preserve shared memory signature in OpRegion handler
      ...