Commit Graph

11013 Commits

Author SHA1 Message Date
Linus Torvalds
e3e15872e7 ACPI support fixes for 7.4-rc1
- Separate handler locking from sysfs lifetime in the ACPI platform
    profile driver to avoid possible deadlocks due to sysfs accesses
    during driver removal (Daniel Lezcano)
 
  - Introduce additional locking around the evaluation of selected ACPI
    control methods in a few places to work around issues related to
    concurrency in AML on some platforms (Ali Ahmet Memiş)
 
  - Address two issues reported by Sashiko in the ACPI table data sysfs
    interface (Jamie Nguyen)
 
  - Initialize parser_state.aml_end in acpi_install_method() properly to
    avoid out-of-bounds accesses during control method installation (Ivan
    Hu)
 -----BEGIN PGP SIGNATURE-----
 
 iQFGBAABCAAwFiEEcM8Aw/RY0dgsiRUR7l+9nS/U47UFAmrk+i0SHHJqd0Byand5
 c29ja2kubmV0AAoJEO5fvZ0v1OO1BKUIAIvsvGOzWnUBWGY2GN9umZfNbEFnYrXH
 7mbAzDTP5lDjyqnrod7eSjXAATxWISxupR7qVPSbqjqGURwzMCZsPeX4ZRd5pUTZ
 THA0KTeE57hMKj/dvzvFQKIswGUkruQ09NZ3J6KZ514CJJ7SgSOilbUDf+7xzbLZ
 yLDDBc0POqhZaKIuAYSFsoRw+D7PB2q/k5Hvv8VVhumDgl2YcCLcpQSG4lftqdxn
 R6bjVAQaKJj/nArxwdQRt/LdNSQu1WQgnLkq57Ewwd4tORBlgMsGP9GrR/9QaQqY
 E6VINShueGRnDNIMAzb4imbXVsfE+gtoyYdAffCTV3HXy8aoJ95OwGA=
 =04kC
 -----END PGP SIGNATURE-----

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

Pull ACPI support fixes from Rafael Wysocki:
 "These address assorted issues in ACPI support code and work around
  concurrency-related issues in AML on some platforms:

   - Separate handler locking from sysfs lifetime in the ACPI platform
     profile driver to avoid possible deadlocks due to sysfs accesses
     during driver removal (Daniel Lezcano)

   - Introduce additional locking around the evaluation of selected ACPI
     control methods in a few places to work around issues related to
     concurrency in AML on some platforms (Ali Ahmet Memiş)

   - Address two issues reported by Sashiko in the ACPI table data sysfs
     interface (Jamie Nguyen)

   - Initialize parser_state.aml_end in acpi_install_method() properly
     to avoid out-of-bounds accesses during control method installation
     (Ivan Hu)"

* tag 'acpi-7.4-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: sysfs: Finish sysfs init when creating a table file fails
  ACPI: sysfs: Map only the requested range in acpi_data_show()
  ACPICA: Initialize parser_state.aml_end in acpi_install_method()
  ACPI: platform_profile: Separate handler locking from sysfs lifetime
  platform/x86: ideapad-laptop: Evaluate ACPI methods exclusively
  thermal: intel: int340x: Evaluate _TMP exclusively
  ACPI: battery: Evaluate battery methods exclusively
  ACPI: utils: Add exclusive AML evaluation helpers
2026-10-30 13:10:30 -10:00
Linus Torvalds
780cb2a5fd LoongArch changes for v7.4
1, Add LoongArch-specific ACPI initialization;
 2, Set NX compat flag in PE/COFF efi header;
 3, Use pa_to_nid()/nid_to_addrbase() rather than hard-code;
 4, Detect and expose LAMCAS/DIV32 feature existence;
 5, Fix and improve perf hardware breakpoints;
 6, Fix and improve BPF JIT (trampoline and 32-bit operations);
 7, Add arch_crash_save_vmcoreinfo() support;
 8, Some bug fixes and other small changes.
 -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCAA0FiEEzOlt8mkP+tbeiYy5AoYrw/LiJnoFAmrh/wMWHGNoZW5odWFj
 YWlAa2VybmVsLm9yZwAKCRAChivD8uImeuBhD/0dznfX3XCSm1tqHMRIf3olKUw/
 WbXJXg+ZOpOrgrb9O14FBj92KhdaYyf5WZpFHnpuf1YtfX2WR5kMOVyOHabM5nWa
 nOMaLRaIqollC9kMX2hOkktGe6WnJBwfe8pNbnmYemcpJPbZEEPxeFycx7EMNKBf
 b6sXOcZWu05alLkeVgYlVdMQsJOhUq/dNwcmBLBfP8tWnv8HcCvSjryJAAgZb+1T
 UGXxEjOxingXi3JVUbbRaQTfjV2cho1PLIVd76JdKyUpAByMPV7hzkKU+lhMRaVq
 WFhVMDghshuNjwTapcRH2BwIT49/pNZXtcpnWo7H0fEjzyqz4HYPGm888WLeRYWN
 yFAZ6FgYo0S6CX4qkZnN4aWHK7zraqqsjQK33JzJBXhJUzwgTuKowrgHN9c+/FC9
 88VvAS8aGxrrMd74pR5PO5jzP0lMhaCViVxqgrnRNf7TZtqMS40Q6rg+0YhTZWG8
 KgkwVJ3pYqFUG2LLepKX9PmEngblNf3ajWn7EyiQ+5djktc/KSxEo5mwYLBEn8hk
 gMFTY2QEO1gH5hSHhxbYhRPtpQG0v4fBAZJ+Yo8kxTuQkEILD2200LDrvQiBnYF2
 eWcp5TXQMdG3VjVd250S1NCqx06VyKSQOH5RqopTPk7Rh93hV8QCVxvat1/3jyAK
 rC9vLYjoxS8H3/wSng==
 =k2V9
 -----END PGP SIGNATURE-----

Merge tag 'loongarch-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson

Pull LoongArch updates from Huacai Chen:

 - Add LoongArch-specific ACPI initialization

 - Set NX compat flag in PE/COFF efi header

 - Use pa_to_nid()/nid_to_addrbase() rather than hard-code

 - Detect and expose LAMCAS/DIV32 feature existence

 - Fix and improve perf hardware breakpoints

 - Fix and improve BPF JIT (trampoline and 32-bit operations)

 - Add arch_crash_save_vmcoreinfo() support

 - Some bug fixes and other small changes

* tag 'loongarch-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson: (24 commits)
  soc: loongson: loongson2_guts: Use of_root instead of own reference
  soc: loongson: loongson2_pm: Fix build warnings for 32BIT
  LoongArch: dts: loongson-2k0500: Drop unsupported bus_id in DWMAC
  LoongArch: BPF: Optimize 32-bit operations using native instructions
  LoongArch: BPF: Clean up and decouple is32 parameter from move_imm()
  LoongArch: BPF: Fix stack arguments for indirect trampolines
  LoongArch: Add arch_crash_save_vmcoreinfo() support
  LoongArch: Fix one-shot limitation for perf hardware breakpoints
  LoongArch: Fix perf hardware breakpoint failure via installation
  LoongArch: Only send SIGTRAP signal if necessary in do_watch()
  LoongArch: Fix architectural naming typo for CSR_FWPS_SKIP
  LoongArch: Fix bitmask corruption in update_bp_registers()
  LoongArch: Remove redundant call in update_bp_registers()
  LoongArch: Remove arch-specific __smp_mb__{before,after}_atomic()
  LoongArch: Detect and expose DIV32 feature existence
  LoongArch: Detect and expose LAMCAS feature existence
  LoongArch: Use pa_to_nid()/nid_to_addrbase() rather than hard-code
  LoongArch: Don't init & online empty nodes
  LoongArch: Call cpu_final_simd() with pure_initcall()
  LoongArch: Use assign_bit() API where applicable
  ...
2026-10-30 09:44:29 -10:00
Rafael J. Wysocki
3f971ee94f Merge branches 'acpi-driver' and 'acpi-sysfs'
Merge additional updates related to ACPI support in device drivers and
ACPI sysfs interface fixes for 7.4-rc1:

 - Separate handler locking from sysfs lifetime in the ACPI platform
   profile driver (Daniel Lezcano)

 - Introduce additional locking around the evaluation of selected ACPI
   control methods in a few places to work around issues related to
   concurrency in AML on some platforms (Ali Ahmet Memiş)

 - Address two issues reported by Sashiko in the ACPI table data sysfs
   interface (Jamie Nguyen)

* acpi-driver:
  ACPI: platform_profile: Separate handler locking from sysfs lifetime
  platform/x86: ideapad-laptop: Evaluate ACPI methods exclusively
  thermal: intel: int340x: Evaluate _TMP exclusively
  ACPI: battery: Evaluate battery methods exclusively
  ACPI: utils: Add exclusive AML evaluation helpers

* acpi-sysfs:
  ACPI: sysfs: Finish sysfs init when creating a table file fails
  ACPI: sysfs: Map only the requested range in acpi_data_show()
2026-10-30 20:25:24 +01:00
Linus Torvalds
1b8b675037 RISC-V updates for v7.4
- Add support for crash hotplug
 
 - Improve user copy performance on cores with fast misaligned
   accesses
 
 - Optimize code paths involving pgtable_l{4,5}_enabled() by patching
   in the return values during early boot (since these don't change
   during runtime), or by specifying the return values directly in
   Kconfig files (for purpose-built kernels)
 
 - Change the PCIe bus reassignment behavior to depend on the
   PCI_REASSIGN_ALL_BUS PCI flag (as ARM64 does)
 
 - Avoid an unnecessary sstatus CSR read during context switch
 
 - Make the sbi_ecall() macro variadic, improving code clarity
 
 - Refactor __switch_to_vector() to prepare for upcoming vector context
   switch optimizations
 
 - Add a kselftest for vectorized user copy
 
 - Add bounds checking on the shadow stack restore token address to
   avoid it being used as an attack vector
 
 - Fix the shadow stack and indirect branch landing pad control functions to
   only update the CPU's envcfg CSR when operating on the current task
 
 - For MIPS RISC-V systems, add support for early boot-applied errata;
   and for P8700 RISC-V systems, avoid WFI usage in the kernel (since
   it is buggy)
 
 - Add the "B" RISC-V ISA extension to hwcap and hwprobe reporting
 
 - Add support for specifying and reporting the "Zic64b" RISC-V ISA
   extension, and add it to the SpacemiT K1, K3, and Sophgo SG2044 DT
   files
 
 - Require the block size of cache management operations to be
   specified in DT schema validation for the RISC-V ISA extensions
   Zicbom, Zicbop, and Zicboz
 
 - Some miscellaneous fixes: fix an incorrect bitfield width in the
   RVG_SYSTEM_CSR_MASK bitmask macro; make RISCV_ALTERNATIVE mandatory,
   now that XIP kernel support has been removed; and remove some
   unnecessary includes in kernel/smp.c
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEElRDoIDdEz9/svf2Kx4+xDQu9KksFAmrivM8ACgkQx4+xDQu9
 KkubQw//ann5hPn4CqJh4UjYlhbHM4QxaVpYs6i9fTGdyw1R+JcWxglcAuCkuEHl
 At5BFt2aR5y1FQwJqbVUYI0nxJCVCQNPf+6aormHtWnCrxM+9e5jE4Wqhae9BDpB
 yUNjRixJVU2Fz8O4WTeJBYsPaOguZXLNltlt5Oi14Zw85hCOX71bSkrORToY3CfQ
 L3FLe1gvGfeZyr6jj3c5RkcLHW01zrR0H3/dOcy8T+rEfVLHp90/fUufZPnrW5rj
 fIlbDRpQ5ZRlYr5hZ8X+U6Zs6qThGV5LX00wPghrfzdCiD6X7EnYNtmMaTV9aLlS
 UZSNrOCHf8lwogvwxYhdQuO+6F72Vj38Y/3CYjwi1+1FuukDlT2mejsXXU3JN8T/
 8tCY7zAB0KpTDK1N2Udr+zDXKCQuZ7YYpQJ9UxKjMAn7NwZKB4PmUjfXfSIsKLps
 FtzGWa8OM8a5GagpSHewA5c/SVLlkmrlE/0/GtzA4DfVMJyNt37OUWfEogXT7A8A
 9neAIgG8K1Dhq8U20scDmDKyZHobOX7+nsVohUiduZgfSgL2P/qHuWhkjNeACliK
 FhJcwtGITsF/lrUUBBoAnSYjZwkytaoOwA8eSnNRRxrfzYCgQWCxyYcXqMKI2KyK
 FQQlKbEm8eML88f+E9W0t6QqeFMtq6h8GXU8+B0TvrVz0DGfoH0=
 =Vdpl
 -----END PGP SIGNATURE-----

Merge tag 'riscv-for-linus-7.4-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux

Pull RISC-V updates from Paul Walmsley:

 - Add support for crash hotplug

 - Improve user copy performance on cores with fast misaligned accesses

 - Optimize code paths involving pgtable_l{4,5}_enabled() by patching in
   the return values during early boot (since these don't change during
   runtime), or by specifying the return values directly in Kconfig
   files (for purpose-built kernels)

 - Change the PCIe bus reassignment behavior to depend on the
   PCI_REASSIGN_ALL_BUS PCI flag (as ARM64 does)

 - Avoid an unnecessary sstatus CSR read during context switch

 - Make the sbi_ecall() macro variadic, improving code clarity

 - Refactor __switch_to_vector() to prepare for upcoming vector context
   switch optimizations

 - Add a kselftest for vectorized user copy

 - Add bounds checking on the shadow stack restore token address to
   avoid it being used as an attack vector

 - Fix the shadow stack and indirect branch landing pad control
   functions to only update the CPU's envcfg CSR when operating on the
   current task

 - For MIPS RISC-V systems, add support for early boot-applied errata;
   and for P8700 RISC-V systems, avoid WFI usage in the kernel (since it
   is buggy)

 - Add the "B" RISC-V ISA extension to hwcap and hwprobe reporting

 - Add support for specifying and reporting the "Zic64b" RISC-V ISA
   extension, and add it to the SpacemiT K1, K3, and Sophgo SG2044 DT
   files

 - Require the block size of cache management operations to be specified
   in DT schema validation for the RISC-V ISA extensions Zicbom, Zicbop,
   and Zicboz

 - Some miscellaneous fixes: fix an incorrect bitfield width in the
   RVG_SYSTEM_CSR_MASK bitmask macro; make RISCV_ALTERNATIVE mandatory,
   now that XIP kernel support has been removed; and remove some
   unnecessary includes in kernel/smp.c

* tag 'riscv-for-linus-7.4-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (28 commits)
  riscv: mm: unexport _pgtable_l4_enabled and _pgtable_l5_enabled
  riscv: introduce RISCV_ISA_SV48 and RISCV_ISA_SV57
  riscv: support early isa ext and use it to optimize pgtable_l4|l5_enabled
  riscv: convert pgtable_l4|l5_enabled to inline function
  riscv: remove RISCV_ALTERNATIVE Kconfig option
  riscv: Add a getter for user PMLEN support
  riscv: dts: sophgo: sg2044: Add Zic64b ISA extension
  riscv: dts: spacemit: k1: Add Zic64b ISA extension
  riscv: dts: spacemit: k3: Add Zic64b ISA extension
  riscv: Add Zic64b to cpufeature and hwprobe
  dt-bindings: riscv: Add Zic64b extension description
  dt-bindings: riscv: Require block-size for Zicbom, Zicbop, and Zicboz
  riscv: Add B to hwcap and hwprobe
  riscv: remove unused profile.h includes
  riscv: cfi: Only write envcfg CSR when task is current
  riscv: cfi: Bounds check restore token before swap
  riscv: Add ERRATA_MIPS_P8700_WFI to replace WFI with mips.pause
  selftest: riscv: test vectorized user copy
  riscv: vector: refactor context switch for kernel-mode vector
  riscv: do not read csr in vector context switch
  ...
2026-10-29 12:33:25 -10:00
Linus Torvalds
c339f4010d platform-drivers-x86 for v7.4-1
Highlights:
 
 - acer-wmi:
   - Add HWMON support for Aspire A315-58G
   - Add platform profile, HWMON, and fan control support for Nitro
     ANV15-51
   - Add support for mode key on some models (e.g. Nitro AN16-41)
 
 - acer-wmi-battery: Add battery control driver
 
 - ACPI: video: Remove CONFIG_X86 dependency as WMI now supports non-X86
                archs
 
 - alienware-wmi-wmax: Add support for Alienware Area-51 AAT2250
 
 - amd/hsmp: Add support for Family 1Ah client platforms
 
 - amd/pmc:
   - Do not rely on intermediate cycle counting in the wakeup delay logic
   - Make HP Laptop 14-fq1xxxx and Thinkpad L14 Gen3 (21C5) use s2idle
     quirk
   - Make Asus ROG Flow Z13 use spurious_8042 quirk
   - Add support for AMD 1Ah Family DCh SoC
 
 - amd/pmf:
   - Add support for AMDI0112
   - Fix compat ioctl handling
 
 - arm64: asus-glymur-ec: Add support
 
 - arm64: lenovo-yoga-slim7x-gen11-ec: Add support
 
 - arm64: qcom-hamoa-ec: Disable SCI IRQ during suspend
 
 - arm64: thinkpad-t14s-ec: Do not send KEY_KBDILLUMTOGGLE on FN + Space
                            as EC already steps keyboard backlight
 
 - asus-armoury:
   - Add discrete GPU power state attribute
   - Add support for discrete GPU disable on ProArt H7606
   - Support tunables with more models
 
 - asus-nw-wmi: Make ROG Flow X13 GV302X use the tablet-mode switch quirk
 
 - asus-wmi:
   - Make ASUS ProArt PX13 use the tablet-mode switch quirk
   - Add support for mute LED
   - Fix screenpad backlight problems
   - Correct kbd_rgb_state_index description (keyboard -> shutdown)
 
 - ayaneo-ec: Add support for AYANEO 2S
 
 - bitland-mifs-wmi: Correct interpretation of WMI call output
 
 - dell-dw5826e: Add support for _DSM with revision 0 (Slate PTL CS 14,
                 Yukon PTL CSLW 14, Yukon PTL 360 14)
 
 - hp-bioscfg: Many fixes
 
 - hp-wmi:
   - Add change control support for HP Spectre x360 16-aa0xxx
   - Do not show any fan attribute when no fans are available
   - Add support for OMEN 16-am0xxx, OMEN 16-am2xxx, OMEN 17-ck1xxx, OMEN
     MAX 16-ah0xxx, OMEN Slim 16t-an000, OMEN Transcend 14-fb1xxx
   - Add HP Laptop 15-fd1xxx support
   - Add Victus 15-fb3xxx, Victus 16-d1xxx (8A26), Victus 16-e0xxx support
 
 - huawei-wmi: Add support for Honor MagicBook camera privacy toggle key
 
 - ideapad-laptop:
   - Add support for Mode key and Phone Link key found on some Yoga Pro
     7 models
   - Add support for camera switch on some Yoga Pro 7 and Legion Pro 7
     models
 
 - intel/hid: Support 5-button array on HP EliteBook x360 1030 G2
 
 - intel/pmc:
   - Add rugged Panther Lake support
   - Fix Nova Lake PCD-S telemetry constants
 
 - intel/pmt:
   - Block mmap when read_telem() callback is present
   - Fix PCI device to device generalization
 
 - intel/speed-select-if: Always enumerate on recent server CPUs
                          (Family 19, i.e., Diamond Rapids and onwards)
 
 - intel/tpmi: Prepare for enumerating non-PCI devices
 
 - intel-uncore-freq:
   - Restore limits properly also on sparse setups
   - Add rugged Panther Lake support
 
 - intel/vsec:
   - Reset state properly before re-enumeration
   - Fix inverted logic in get features function
 
 - lenovo-wmi-capdata: Support non-supported, stubbed WMI query method
                       for capdata device
 
 - msi-ec:
   - Prevent out of bounds charge thresholds
   - Add support for MSI Creator Z16 A11UE, MSI GL65 Leopard 9SCXK,
     MSI Katana 15 B13VFK
 
 - msi-wmi: Ignore key events for keys already handled by atkbd
 
 - oxpec:
   - Add support for charge limit on OneXPlayer Apex
   - Add OneXPlayer 3 support
 
 - panasonic-laptop:
   - Add support for FN key
 
 - surface: aggregator_registry:
   - Remove non-existing sensors device and fix tablet-mode detection on
     Surface Pro 11
   - Add performance profile and fan support for Surface Pro 11
 
 - thinkpad_acpi:
   - Add keyboard attachment detection and reporting found on Thinkpad
     X1 Fold
   - Add support for Thinkpad L440 fan speed reporting
 
 - tools/power/x86/intel-speed-select:
   - Correct make clean
   - Increase wait time after SST PP level switch to prevent stale
     capability readings
 
 - tuxedo:
   - Fix keyboard LED map ordering
   - Correct interpreting intensity vs RGB levels
 
 - uniwill-laptop:
   - Correct brightness handling for 3 level keyboard
   - Add keyboard backlight support for TUXEDO devices
   - Add support for PCSpecialist Recoil 16 AMD
   - Add support for screen rotation key found on PCSpecialist Recoil 16
     AMD and TUXEDO Stellaris 16 Gen7
   - Implement rainbow animation as trigger
   - Correct led labels to match LED subsystem conventions
   - Add support for LAPKC71E Intel NUC x15
 
 - wmi:
   - Remove X86 dependency to allow supporting arm64 laptops in future
   - wmi-bmof: Move under drivers/platform/wmi/
 
 - Miscellaneous cleanups / refactoring / improvements
 
 The following is an automated shortlog grouped by driver:
 
 acer-wmi:
  -  Add support for Acer Nitro AN16-41
  -  Add support for Acer Nitro ANV15-51
  -  Cycle platform profile on mode key 0x4
  -  enable hwmon on Aspire A315-58G
  -  Remove unused platform_profile_support variable
  -  split hwmon from platform profile quirk
  -  use bool for boolean quirk fields
 
 ACPI: video:
  -  Remove CONFIG_X86 handling from nvidia_wmi_ec_supported()
 
 add Acer battery control driver:
  - add Acer battery control driver
 
 Add ACPI_COMPANION() NULL check in topstar_acpi_probe:
  - Add ACPI_COMPANION() NULL check in topstar_acpi_probe
 
 amd: hfi:
  -  Fix a use-after-free when unloading the driver
  -  Fix out-of-bounds reads when parsing ranking data
  -  Rely on ACPI enumeration instead of a dummy device
 
 amd/hsmp:
  -  Add HSMP client support for Family 1Ah
  -  Document and expose client telemetry table in UAPI
  -  Recognize Family 1Ah client platforms and hide server-only paths
  -  Route metric table through the client messages
 
 amd/pmc:
  -  Add HP Laptop 14-fq1xxx to s2idle quirk list
  -  Add PMC driver support for AMD 1Ah Family DCh SoC
  -  Add spurious_8042 to ASUS ROG Flow Z13 GZ302EA
  -  Add Thinkpad L14 Gen3 (21C5) to quirk_s2idle_bug
  -  clear devm-managed pointers on remove to prevent stale reuse
 
 amd: pmc:
  -  Drop scratch_reg from amd_1ah_m80_cpu_info
  -  Only create amd_pmc_idlemask if scratch defined
 
 amd/pmf:
  -  Add AMDI0112 ACPI ID
  -  fix compat ioctl handling
  -  Fix power_supply refcount leak in amd_pmf_get_battery_prop()
  -  Inline !AMD_PMF_DEBUG stub
  -  Inline simple helper function of Smart PC TA interfaces
  -  Inline simple helper function of SPS Layer
  -  Inline simple helper functions of Core Layer
  -  Inline wrappers of ap{mf,ts}_if_call_store_buffer()
  -  Validate the APTS state index
 
 amd:
  -  Stop counting intermediate cycles with metrics table
 
 arm64:
  -  Add a driver for the EC found on ASUS Glymur machines
  -  add Lenovo Yoga Slim 7x Gen 11 EC driver
 
 arm64: qcom-hamoa-ec:
  -  Disable the SCI IRQ during suspend
 
 arm64:
  -  Remove redundant dev_err_probe()
 
 arm64: thinkpad-t14s-ec:
  -  don't send KEY_KBDILLUMTOGGLE on Fn+Space
 
 asus-armoury:
  -  add dGPU disable fallback DEVID for ProArt H7606 series
  -  Add dgpu_power_state attribute
  -  add power limits quirk for FA608PM
  -  add power limits quirk for FA608UH
  -  add power limits quirk for FA608UP
  -  add power limits quirk for G533QS
  -  add power limits quirk for G614FM
  -  add power limits quirk for G713QR
  -  Add power limits quirk for GA401IHR
  -  add power limits quirk for GA402NV
  -  add power limits quirk for GU605CM
  -  add support for GX651AR
  -  Add XBOX ROG Ally X 20 Tunables
  -  let attribute groups decide their own visibility
  -  move has_valid_limit() above the attribute declarations
  -  Prevent disabling dGPU when in use
  -  use sysfs_create_groups() and sysfs_remove_groups()
 
 asus-laptop:
  -  Fix typo in infos_show() comment
 
 asus-nb-wmi:
  -  add tablet mode quirk for ROG Flow X13 GV302X
  -  Fix typo in asus_nb_wmi_quirks() comment
 
 asus-wmi:
  -  Add ASUS_WMI_DEVID_DGPU_POWER_STATE define
  -  Add mute LED support
  -  add tablet-mode switch quirk for ASUS ProArt PX13
  -  don't warn when LPS0 is unavailable
  -  fix screenpad power state detection
  -  fix TUF keyboard power state shutdown naming
  -  fix unclear usage of bd->props.power
  -  fix use-after-free unregistering kbd_led led
  -  name the TUF keyboard RGB state and speed codes
  -  Remove redundant per-device wmi_lock and duplicate rfkill ops
  -  Remove unused platform_profile_support member
  -  remove unused screenpad_brightness
  -  rename TUF RGB state DEVID to _CMD
  -  Serialize WMI method evaluations with a mutex
  -  use backlight_is_blank() for screenpad power
  -  validate custom fan curves on enable
 
 ayaneo-ec:
  -  Add AYANEO 2S charge control
 
 bitland-mifs-wmi:
  -  Detect failed function calls
  -  Treat WMI_FN_SYSTEM_AC_TYPE as optional
 
 dell: alienware-wmi-wmax:
  -  add Alienware Area-51 AAT2250
 
 dell-dw5826e:
  -  Extend _DSM support to revision 0
 
 dell-wmi-aio:
  -  Convert to use the bus-based WMI API
  -  Use named defines for event types
 
 docs: TPMI:
  -  use literal block for commands
 
 gpd pocket fan:
  -  Cancel work before releasing GPIOs
 
 hp_accel:
  -  Fix typo in lis3lv02d_acpi_write() comment
 
 hp-bioscfg:
  -  allow clearing current_password
  -  consolidate common package-element parsing
  -  fix 16-byte heap overflow for empty auth token
  -  fix non-ASCII truncation in hp_get_string_from_buffer()
  -  fix off-by-one in password length check
  -  fix OOB reads in hp_get_string_from_buffer()
  -  fix oops on short integer attribute buffer
  -  fix slab-out-of-bounds write in hp_convert_hexstr_to_str()
  -  NUL-terminate the SPM auth token
  -  remove dead bounds check in audit_log_entries_show
  -  return -E2BIG from validate_password_input()
  -  Support allocating large number of BIOS vars
  -  validate SPM state returned by firmware
  -  zero the hex-string decode buffer in hp_convert_hexstr_to_str()
 
 hp-wmi:
  -  Add board 8E41 (OMEN Transcend 14) to feature board list
  -  add charge_behaviour support for Spectre 8C15/8C17
  -  Add OMEN board 8A17 thermal profile support
  -  Add OMEN board 8A18 thermal profile support
  -  Add OMEN board 8D40 thermal profile support
  -  Add OMEN board 8D42 thermal profile support
  -  Add support for HP Laptop 15-fd1xxx (board 8DE1)
  -  Add support for Omen 16-am0xxx (8D3F)
  -  add support for OMEN 16-am2xxx boards
  -  Add Victus 15-fb3xxx support
  -  Add Victus 16-d1xxx board 8A26 support
  -  Add Victus 16-e0xxx board 88EE support
  -  Disable hwmon attributes when no fans are usable
  -  fix heap OOB read and memory corruption in hp_wmi_perform_query()
  -  Fix hwmon keep-alive teardown
  -  Remove unused platform_profile_support variable
 
 huawei-wmi:
  -  add camera toggle keycode
 
 ibm_rtl:
  -  Fix potential OOB read at signature search
 
 ideapad-laptop:
  -  Add Yoga Pro 7 14IAH10 Mode key
  -  Map Smart Connect hotkey to KEY_LINK_PHONE
  -  Report camera switch as SW_CAMERA_LENS_COVER
 
 int1092:
  -  Mark as orphan
 
 intel/hid:
  -  Enable 5 button array on HP EliteBook x360 1030 G2
 
 intel/pmc:
  -  Add rugged Panther Lake support to intel_pmc_core
  -  Fix stale NVL PCD-S S0ix_LPM telemetry constants
 
 intel/pmt:
  -  Add register access callbacks
  -  Block mmap when callback is present
  -  complete pcidev to device update
  -  Do not remap when using callbacks
  -  refactor rc with a return value
  -  refactor rmw with a return value
 
 intel: power-domains:
  -  Handle failed init in tpmi_get_linux_die_id()
  -  Handle failed init in tpmi_get_power_domain_mask()
 
 intel_telemetry:
  -  initialize default trace verbosity
 
 intel/tpmi:
  -  Build the TPMI control words in one expression
  -  Declare the loop counters in their loops
  -  Describe a TPMI instance by its two devices
  -  Describe the device creation policy on the function
  -  Do not assume TPMI is enumerated from PCI
  -  Drop unused arg from tpmi_set_control_base()
  -  Fix typo in TPMI_FEATURE_NAME_LEN comment
  -  Get tpmi_info directly from the parent device
  -  Include the headers tpmi_common.c relies on
  -  Keep the feature resources in intel_tpmi_info
  -  Remove unused vsec_dev from intel_tpmi_pm_feature
  -  Split off the PCI VSEC enumeration
  -  Split out enumeration independent init and exit
  -  Turn TPMI_GET_SINGLE_ENTRY_SIZE() into a function
  -  Use DEFINE_RES_MEM() for the feature resources
  -  Use DEFINE_SHOW_STORE_ATTRIBUTE() for mem_write
  -  Use guard() for tpmi_dev_lock in the status read
  -  Use scnprintf() to build the debugfs names
  -  Use scope based cleanup in the memory dump
  -  Use static strings for the feature device names
 
 intel-uncore-freq:
  -  Add support for rugged Panther Lake
  -  Continue restoring limits on resume
 
 intel/vsec:
  -  Fix inverted walk_header() test in get_features()
  -  Pass a struct device to intel_vsec_set_mapping()
  -  reset state before re-enumerating
  -  Use bool for run_once
 
 intel: wmi:
  -  Remove redundant callbacks
  -  Use sysfs_emit in sbl-fw-update
 
 ISST:
  -  Avoid model check for recent servers
 
 lenovo-wmi-capdata:
  -  Adopt new WMI API
  -  Defer mutex initialization
  -  Detect stubbed capdata device
  -  Do not match missing components
  -  Do not stop the AC notifier chain on error
  -  Only allocate sub-master info when necessary
 
 lenovo-wmi-{capdata,other}:
  -  Only allocate capdata list when necessary
 
 lenovo-wmi-capdata:
  -  Register component even on WMI error
  -  Store a pointer to component info
 
 lenovo-wmi-helpers:
  -  Adopt new WMI API
 
 lib/string_choices:
  -  Add str_supported_unsupported() helper
 
 MAINTAINERS:
  -  Add Aaron Erhardt as maintainer of TUXEDO DRIVERS
  -  Add myself as a LENOVO drivers co-maintainer
 
 mellanox:
  -  Remove redundant dev_err()
 
 msi-ec:
  -  Add MSI Creator Z16 A11UE EC firmware
  -  Add MSI GL65 Leopard 9SCXK EC firmware
  -  Add MSI Katana 15 B13VFK EC firmware
  -  Report valid charge thresholds when unset
 
 msi-laptop:
  -  Fix typo in struct quirk_entry comment
 
 msi-wmi:
  -  Fix hotkeys dropped with vendor backlight
  -  Ignore WMI events for keys also handled by atkbd
  -  Sort scancodes numerically
 
 olpc:
  -  Reserve space for a string terminator
 
 oxpec:
  -  Add OneXPlayer 3 quirk
  -  Fix Apex charge limit control
 
 panasonic-laptop:
  -  Fix typo in the file history comment
  -  register FN key up/down events
 
 Remove redundant dev_err()/dev_err_probe():
  - Remove redundant dev_err()/dev_err_probe()
 
 platform/x86: thinkpad_acpi:
  - Revert: Add X9-14 Gen 1 to non-standard thermal/fan quirk tables
 
 samsung-laptop:
  -  Fix typo in sabi_configs comment
 
 simatic-ipc:
  -  fix platform device leak on registration failure
 
 surface: aggregator_registry:
  -  Add performance profile and fan support for Surface Pro 11
  -  Add Surface Laptop 8th Edition
  -  Fix tablet-mode detection on Surface Pro 11
  -  Remove sensors device for Surface Pro 11
 
 think-lmi:
  -  Use ARRAY_SIZE() in tlmi_errstr_to_err()
  -  Use scnprintf() in new_password_store()
  -  Use sysfs_emit() in pending_reboot_show()
 
 thinkpad-acpi:
  -  Add X1 Fold keyboard attachment detection
 
 thinkpad_acpi:
  -  Add X9-14 Gen 1 to non-standard thermal/fan quirk tables
  -  convert conditional mutex locks to ACQUIRE_ERR()
  -  convert mutex_lock() to guard(mutex)
  -  fix deadlock in hotkey input open/close
  -  Fix fan speed reporting on ThinkPad L440
  -  fix typos in comments
  -  Remove unreachable code in beep_read()
  -  Use bool for local is_thinkpad variable
  -  use __free(kfree) for automatic cleanup
  -  Use input_device_enabled()
  -  Use str_supported_unsupported() helper
 
 tools/power/x86/intel-speed-select:
  -  Clean all the produced files
  -  Correct macro name in debug output
  -  Fix signed shift UB in BIT() macro
  -  Increase wait time after SST PP level switch
  -  v1.27 release
 
 toshiba_haps:
  -  Remove unnecessary ret in toshiba_haps_resume()
 
 tuxedo:
  -  Don't use device driver data
  -  Fix keyboard LED map ordering
  -  Set HID report ID on success
  -  Update and extend documentation
  -  Use intensity according to HID spec
 
 uniwill-laptop:
  -  Add PCSpecialist Recoil 16 AMD
  -  Enable kb backlight and lightbar for TUXEDO
  -  Extend support for the Intel NUC x15
  -  Fix breathing animation on Intel QC
  -  Fix brightness notify for 3 level keyboards
  -  Fix typo in the kbd LED brightness comment
  -  Implement rainbow animation as trigger
  -  Label multicolor LEDs correctly
  -  Map the screen rotation key
  -  Report correct lightbar brightness
 
 wmi-bmof:
  -  Move to generic WMI code
 
 wmi:
  -  Introduce wmidev_exists()
  -  Remove dependency on CONFIG_X86
 
 yogabook:
  -  use assign_bit()/change_bit() where applicable
 
 Merges:
  -  Merge branch 'fixes' into review-ilpo-next
  -  Merge branch 'platform-drivers-x86-intel-pmt' into for-next
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQSCSUwRdwTNL2MhaBlZrE9hU+XOMQUCauHB9QAKCRBZrE9hU+XO
 MZV2AQCkkN0AWkpcntUWH2Ocw4fxIkGGGit7runnoFMsO0OApgEAtYECez8g+lbW
 UHrOn4M0tqqGx6qcj0/isbJP6TApGwI=
 =cGZu
 -----END PGP SIGNATURE-----

Merge tag 'platform-drivers-x86-v7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver updates from Ilpo Järvinen:
 "The usual updates for laptop quirks from HP, ASUS, Acer, Dell etc:
   - new model names and recent CPU support
   - more special button / function key handling
   - battery and hardware monitoring quirks

  Tool updates to intel-speed-select

  WMI now supports non-x86 architectures

  Miscellaneous cleanups / refactoring / improvements"

* tag 'platform-drivers-x86-v7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (237 commits)
  platform/x86: asus-wmi: name the TUF keyboard RGB state and speed codes
  platform/x86: asus-wmi: fix TUF keyboard power state shutdown naming
  platform/x86: asus-wmi: rename TUF RGB state DEVID to _CMD
  platform/x86: asus-armoury: add power limits quirk for GU605CM
  platform/x86: asus-armoury: add power limits quirk for G533QS
  platform/x86: asus-armoury: add power limits quirk for GA402NV
  platform/x86: asus-armoury: add power limits quirk for FA608UP
  platform/x86: asus-armoury: add power limits quirk for FA608UH
  platform/x86: asus-armoury: add power limits quirk for FA608PM
  platform/x86: asus-armoury: add power limits quirk for G713QR
  platform/x86: ibm_rtl: Fix potential OOB read at signature search
  platform/x86: acer-wmi: Add support for Acer Nitro AN16-41
  platform/x86: acer-wmi: Cycle platform profile on mode key 0x4
  platform/x86: hp-wmi: Disable hwmon attributes when no fans are usable
  platform/x86: gpd pocket fan: Cancel work before releasing GPIOs
  platform/x86: asus-armoury: Add XBOX ROG Ally X 20 Tunables
  platform/x86: msi-wmi: Ignore WMI events for keys also handled by atkbd
  platform/x86: msi-wmi: Sort scancodes numerically
  platform: arm64: Add a driver for the EC found on ASUS Glymur machines
  MAINTAINERS: Add myself as a LENOVO drivers co-maintainer
  ...
2026-10-28 07:36:32 -10:00
Bibo Mao
33e3401608 ACPI: LoongArch: Add support for acpi_iommu_configure_id()
acpi_iommu_configure_id() currently only supports IORT and VIOT. Add
support for LoongArch's IOVT as well.

Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2026-10-27 22:51:12 +08:00
Bibo Mao
a9b0c34507 ACPI: LoongArch: Add acpi_arch_[late]_init()
LoongArch IOMMU scanning flow is similar with virtio-iommu, there is an
early init phase and a late init phase. In the early init function, PCI
ACS is enabled if there is IOMMU table, and the late init function is
called after PCI device scanning, where IOVT table scanning function is
executed.

Here add acpi_arch_init() and acpi_arch_late_init() API for LoongArch:
the acpi_iovt_init() function is to enable PCI ACS function if the IOMMU
device exists in IOVT table; while the acpi_iovt_late_init() function is
to scan IOVT table and add IOMMU devices.

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2026-10-27 22:51:12 +08:00
Linus Torvalds
75c1cb8178 sound updates for 7.4-rc1
The AI flood continues, which brought us a fairly busy development
 cycle again with changes spread across the subsystem, ranging from
 (lots of) core hardening to new platforms and codecs.
 
 Here are some highlights.
 
 * ALSA core:
 - PCM: race fixes around channel-map controls, draining/unlink, drop
   sync-stop handling, and DMA buffer delay sync
 - Compress-offload: state and geometry validations, buffer leak fix,
   and stream/card lifetime management
 - Jack: module pinning during debugfs access, control removal race
   fix, and early injection exposure
 - Timer & sequencer: module pinning for user timers, RCU grace period
   wait on port deletion, UMP bounds fixes
 - Mark OSS sequencer emulation as deprecated
 - RawMIDI: proper disconnect handling and input work drain cleanup
 - Control: fixes for vmaster racy setups and control callback
   serialization, UAF fix on card disconnect
 
 * ASoC core:
 - Continued framework refactoring, deployment of
   auto_selectable_formats across codecs and platform DAIs
 - Generic card cleanup: free jack GPIOs on card remove for simple-card
   and audio-graph-card variants
 - SDCA improvements: SimpleJack function type support, library
   helpers, and non-ACPI build support
 - Conversion of deprecated DMA API calls
 
 * ASoC SOF:
 - Support for compressed audio playback on SOF IPC4 with Intel TGL+
 - AMD ACP 7.B / 7.F SoundWire and PDM controller support, ASP carveout
   firmware loading
 - Function topology support for Intel I2S machines
 
 * ASoC platforms & codecs:
 - Qualcomm: New QAIF driver for Shikra platform, WCD9378 SDCA codec,
   Nord Ride/RRD and Motorola Edge 30 boards, LPASS macro cache
   converted to maple tree
 - New codec drivers: ESS ES9039Q2M, Nuvoton NAU83G60 amplifier, Senary
   SN624x SoundWire SDCA codec
 - MediaTek / Airoha: New Airoha AN7581 AFE and WM8960 machine drivers,
   extensive clock and error-handling cleanups across MediaTek SoCs
 - NVIDIA Tegra: WM8994 machine driver and CS35L45 MDSYNC support
 - Realtek: RT766/RT767, RT721_U, RT718 variants, RT712 GPIO LED
   control
 - Cirrus Logic: CS35L45 MDSYNC support, CS35L56 regmap default tests
 - TI: TAS2573 DSP support in TAS2781, TAS2783 SoundWire fixes
 - Everest Semi: ES8326 standby / HPF controls, ES8389 / ES8375 resume
   fixes
 - Removal of obsolete ST-Ericsson Ux500 MOP500 machine driver
 
 * HD-audio:
 - ACPI controller runtime PM suspend/resume support
 - Controller shutdown and unbind race fixes for unsol events and jack
   polling
 - HDMI: High Bit Rate (HBR) audio capability enabled, ELD proc and
   converter bounds checks
 - AW88399 side codec SSID-specific firmware naming and Lenovo Legion
   R9000P enablement
 - Realtek / Conexant / Cirrus / TI quirks for numerous laptops
  (Lenovo, ASUS, HP, Acer, HONOR, Minisforum, MSI, etc.)
 - Creative CA0132 Sound BlasterX AE-5 external RGB LED strip support
 
 * USB-audio:
 - Dedicated mixer driver for Audient EVO4
 - Native Instruments Kore controller LCD support and keymap fix
 - Pioneer DJ DDJ-SZ and Roland (OCTA-CAPTURE / QUAD-CAPTURE multirate,
   TD-11) support
 - UAC2/3 mixer unit matrix evaluation and bounds checking
 - Hardening for LINE6 and caiaq drivers against malformed packets and
   races
 - Device-specific quirks for PreSonus, TASCAM, Logitech, Mayflower,
   MOONDROP, Yamaha, etc.
 
 Misc:
 - Auto-cleanup conversion for snd_card_free() and devres migration
   across dozens of legacy PCI, ISA, and Sparc drivers
 - ALSA loopback (aloop) timer lifecycle fixes and new aloop selftest
 - pcmtest driver fixes and kselftest updates
 -----BEGIN PGP SIGNATURE-----
 
 iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAmraHJUOHHRpd2FpQHN1
 c2UuZGUACgkQLtJE4w1nLE8lLA//X8tUgUjgWVmO+m95b3B14mcKqne5rFTKV1z0
 tKLUO4AK03oSC025rri6ESpnMyTbAx9Zf40rr4qozvaRNLJS21YX1BB80UXVggxK
 1aecfdREwT23SaHvZGpFUQWUmZo8FFgcCryFv0ZarjmYpF6SqZTjJEpBAZBTGp9v
 p4KVMpFIhtymhe4VOpOKtgO+spFXgeYAaYAV2k3o2X4TOIE8nYFZKKMdby6imxay
 tfZdRZ0MUCylluVJink+Z5ZIPNbH3I/QiezrBR/08UmsMX0KxlBO0+vAUrPYeeo8
 SyZDjaeoRKowNBcH2Q93aOPphHA+1x17K07+pftptOAxbGspIjEBylfZrNHrHS8s
 0xW4yIEjLX2nPioT/hMbsuc4aBHINUVJD6dMT2hws1JDLdkvmieMkRqnrIoDdC6V
 nVVYELDzLfx8B38/UZUXTZC5JzkC8WNazH6EmVKKu8Yn0lLyzJJ8o6aV4QLfmlys
 am6Bi5sks9uPbcSJ6XL9PXFwCsi+HSU2VOJLs3gPvzFAWnRRIHcQFsCL61Ll4qIs
 AOMwDNLsbuVbm4RrOTSBteAuPZIJovRoWmVqd+bvLgfCk3kxA+aQC/OrltpQhaTo
 hw0fSh+i34k5vxdrznOgH18w9xnFwnmQYnL4dqczAPAY5vCuFZixD56Ysvesoz/S
 U/sityw=
 =j/6p
 -----END PGP SIGNATURE-----

Merge tag 'sound-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound updates from Takashi Iwai:
 "The AI flood continues, which brought us a fairly busy development
  cycle again with changes spread across the subsystem, ranging from
  (lots of) core hardening to new platforms and codecs.

  Here are some highlights.

  ALSA core:
   - PCM: race fixes around channel-map controls, draining/unlink, drop
     sync-stop handling, and DMA buffer delay sync
   - Compress-offload: state and geometry validations, buffer leak fix,
     and stream/card lifetime management
   - Jack: module pinning during debugfs access, control removal race
     fix, and early injection exposure
   - Timer & sequencer: module pinning for user timers, RCU grace period
     wait on port deletion, UMP bounds fixes
   - Mark OSS sequencer emulation as deprecated
   - RawMIDI: proper disconnect handling and input work drain cleanup
   - Control: fixes for vmaster racy setups and control callback
     serialization, UAF fix on card disconnect

  ASoC core:
   - Continued framework refactoring, deployment of
     auto_selectable_formats across codecs and platform DAIs
   - Generic card cleanup: free jack GPIOs on card remove for
     simple-card and audio-graph-card variants
   - SDCA improvements: SimpleJack function type support, library
     helpers, and non-ACPI build support
   - Conversion of deprecated DMA API calls

  ASoC SOF:
   - Support for compressed audio playback on SOF IPC4 with Intel TGL+
   - AMD ACP 7.B / 7.F SoundWire and PDM controller support, ASP
     carveout firmware loading
   - Function topology support for Intel I2S machines

  ASoC platforms & codecs:
   - Qualcomm: New QAIF driver for Shikra platform, WCD9378 SDCA codec,
     Nord Ride/RRD and Motorola Edge 30 boards, LPASS macro cache
     converted to maple tree
   - New codec drivers: ESS ES9039Q2M, Nuvoton NAU83G60 amplifier,
     Senary SN624x SoundWire SDCA codec
   - MediaTek / Airoha: New Airoha AN7581 AFE and WM8960 machine
     drivers, extensive clock and error-handling cleanups across
     MediaTek SoCs
   - NVIDIA Tegra: WM8994 machine driver and CS35L45 MDSYNC support
   - Realtek: RT766/RT767, RT721_U, RT718 variants, RT712 GPIO LED
     control
   - Cirrus Logic: CS35L45 MDSYNC support, CS35L56 regmap default tests
   - TI: TAS2573 DSP support in TAS2781, TAS2783 SoundWire fixes
   - Everest Semi: ES8326 standby / HPF controls, ES8389 / ES8375 resume
     fixes
   - Removal of obsolete ST-Ericsson Ux500 MOP500 machine driver

  HD-audio:
   - ACPI controller runtime PM suspend/resume support
   - Controller shutdown and unbind race fixes for unsol events and jack
     polling
   - HDMI: High Bit Rate (HBR) audio capability enabled, ELD proc and
     converter bounds checks
   - AW88399 side codec SSID-specific firmware naming and Lenovo Legion
     R9000P enablement
   - Realtek / Conexant / Cirrus / TI quirks for numerous laptops
     (Lenovo, ASUS, HP, Acer, HONOR, Minisforum, MSI, etc.)
   - Creative CA0132 Sound BlasterX AE-5 external RGB LED strip support

  USB-audio:
   - Dedicated mixer driver for Audient EVO4
   - Native Instruments Kore controller LCD support and keymap fix
   - Pioneer DJ DDJ-SZ and Roland (OCTA-CAPTURE / QUAD-CAPTURE
     multirate, TD-11) support
   - UAC2/3 mixer unit matrix evaluation and bounds checking
   - Hardening for LINE6 and caiaq drivers against malformed packets and
     races
   - Device-specific quirks for PreSonus, TASCAM, Logitech, Mayflower,
     MOONDROP, Yamaha, etc.

  Misc:
   - Auto-cleanup conversion for snd_card_free() and devres migration
     across dozens of legacy PCI, ISA, and Sparc drivers
   - ALSA loopback (aloop) timer lifecycle fixes and new aloop selftest
   - pcmtest driver fixes and kselftest updates"

* tag 'sound-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (924 commits)
  ALSA: hda/realtek: Add mute and mic-mute LEDs for HP ENVY 16 (103c:8be5)
  selftests: ALSA: pcmtest: Compare all captured bytes in ni_capture
  ALSA: usb-audio: Use strscpy() in append_ctl_name()
  ALSA: caiaq: Use strscpy() in snd_usb_caiaq_input_init()
  ALSA: hiface: Use scnprintf() in hiface_chip_create()
  selftests/alsa: Check the aloop PCM Slave controls for a matching playback
  ALSA: aloop: Update the PCM Slave controls for a matching playback
  selftests: ALSA: pcmtest: Make room for the longest fill pattern
  selftests: ALSA: pcmtest: Check the frame count of each transfer
  ALSA: hda/realtek: Fix speakers on COLORFUL L1 Plus
  ALSA: hda/realtek: enable AW88399 on Lenovo Legion R9000P AFR10
  ALSA: line6: Handle period elapsed calls outside the locks
  ALSA: emux: Stop voices before freeing zones in all cases
  ALSA: emux: Fix UAF of soundfont zones at note-on
  ALSA: mtpav: restore negation dropped in guard() conversion
  ALSA: compress: reject restarting an ACTIVE task via origin_seqno
  ALSA: compress: add missing OPEN-state gate to SET_METADATA
  ALSA: compress: reject buffer geometry change on gapless next_track
  ALSA: compress: fix buffer leak on failed SET_PARAMS
  ALSA: hda/realtek: Enable jack detection on Minisforum AI X1
  ...
2026-10-24 19:16:20 -10:00
Linus Torvalds
cb8fef4b07 TTY/Serial driver updates for 7.4-rc1
Here is the "big" set of tty and serial driver updates for 7.4-rc1.
 It's not really all that big, it's been kind of quiet in this area of
 the tree this development cycle in relation to other parts of the tree.
 But still, included in here are:
   - 8250 port updates and fixes
   - 8250 driver cleanups by Jiri
   - deletion of the obsolete moxa driver (making this pull request
     remove more lines than added!)
   - different serial driver updates for dma and other reported issues
 
 All of these have been in linux-next with no reported problems.
 
 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -----BEGIN PGP SIGNATURE-----
 
 iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCatoTUg8cZ3JlZ0Brcm9h
 aC5jb20ACgkQMUfUDdst+yn+lQCgjA22FwJl7j2xM1aY8Vu80rsr5GwAoIJCzJRD
 k1Y6LzXAZ/kqfJ3YT7w5
 =w/aw
 -----END PGP SIGNATURE-----

Merge tag 'tty-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

Pull tty / serial driver updates from Greg KH:
 "Here is the "big" set of tty and serial driver updates for 7.4-rc1.

  It's not really all that big, it's been kind of quiet in this area of
  the tree this development cycle in relation to other parts of the
  tree. But still, included in here are:

   - 8250 port updates and fixes

   - 8250 driver cleanups by Jiri

   - deletion of the obsolete moxa driver (making this pull request
     remove more lines than added!)

   - different serial driver updates for dma and other reported issues

  All of these have been in linux-next with no reported problems"

* tag 'tty-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (91 commits)
  tty: hvc: dcc: Detect JTAG connection only on CPU core 0
  serial: earlycon: Use isdigit() in earlycon_init()
  serial: core: Use isdigit() in uart_parse_options()
  dt-bindings: serial: snps-dw-apb-uart: Add Synaptics sl2610 uart
  serial: amba-pl011: drive the bus during break in RS485 mode
  serial: mcf: update author email address
  serial: pmac_zilog: report received breaks
  serial: pmac_zilog: push received data to the port that received it
  serial: amba-pl011: keep transmitter enabled when disabling RS485
  serial: ma35d1: Do not force-enable an unselected console
  serial: amba-pl011: honour delay_rts_before_send for every write
  Revert "serial: 8250_port: Drop duplicate NULL check"
  serial: 8250: make port operations work on struct uart_8250_port
  serial: 8250_omap: set priv->line before enabling the IRQ
  serial: 8250_lpss: do not touch uninitialized line in ehl_serial_exit()
  serial: 8250_exar: store the GPIO platform device in struct exar8250
  serial: 8250_exar: remove useless void * casts
  serial: 8250: drop err label from serial8250_register_8250_port()
  serial: core: fix TIOCSSERIAL and TIOCSERCONFIG on uninitialised ports
  serial: max310x: don't transmit while an RS485 reconfigure is pending
  ...
2026-10-24 15:25:54 -10:00
Linus Torvalds
17bb0e2f6c pci-v7.4-changes
-----BEGIN PGP SIGNATURE-----
 
 iQJIBAABCgAyFiEEgMe7l+5h9hnxdsnuWYigwDrT+vwFAmrZFXsUHGJoZWxnYWFz
 QGdvb2dsZS5jb20ACgkQWYigwDrT+vxlSxAAwXOwRpzBXQjGzvpA7usELOuBqUn6
 kToTlY5VHQZ01Iax3IwbENP8DP3Nh4Zmq3GVOwLREdZ6ouAw/jXGfdnAnFgl6EV2
 5m6yW0RXElZgxIbPJZIbGve7UwrpgBIvvsPl6KVZRY/6lzobEU8XLIHWFKi1EF9l
 nicYADjI1gocFaq8GyAqAoh5WpHSpP2rNBY2fQmZSm+ihGBUzvy6inL0f3j19A1G
 L6av4MwpAQQI137oN1WG2tR3Donc1r7bIfsGiYkMg6TjV/yeqNeafCJ3jbZnTUAS
 UHVfnCxImkKmQXYElVXsn93VwigRMbtH3KXaAVjctp6VoUxNCTJRtjvvwrpu1tlp
 92eazDj9BU2SgcHxH5D4TYmWgslp43l8EbnbBgt64lLthsdhv2evOkQbGbMtZwzL
 FnSYG7Y/wfPxM2u3ODFfjXoKBdmbJqKzwmjs1CQFJVrp0TMLUHUpTI2XDxCOYh+J
 HpNSnAevSjUUFaXf+IPvgOnZZanN6K2/ZUns48GIYQruebViTv7RCfPFZKjLI1Ny
 1w5VwUZ9KEEidlB3vAmeAbACWoRGumoeS9AElzuBLRcOWKTiofmupTwO7GoTwqGa
 69SpDgU9t99UK2Q9++NLO+rW1ZwCtdi0ImmJ0t9rZtGPMDR11LZwdIRmMxEjdj3r
 fg+9TQDdxiMF+r0=
 =1Pqr
 -----END PGP SIGNATURE-----

Merge tag 'pci-v7.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci

Pull PCI updates from Bjorn Helgaas:
 "Enumeration:

   - Set supported_speeds in set_pcie_port_type() so sparc64 and
     powerpc, which call it via of_create_pci_dev() instead of the usual
     pci_setup_device(), correctly set the supported PCIe link speeds
     (Stian Halseth)

   - When pcie_set_mps() changes MPS, update the value in the saved
     state so a subsequent restore doesn't restore an invalid value
     (Niklas Cassel)

   - Skip Target Speed quirk on clamped ports with no link (Maciej W.
     Rozycki)

  Driver binding:

   - Assume control of portdrv-related features only when portdrv is
     enabled, since we can't use them without portdrv (Kuppuswamy
     Sathyanarayanan)

   - Centralize feature ownership checking so code only needs to check
     'host->native_X' and doesn't need to also check 'pcie_ports_native'
     (Kuppuswamy Sathyanarayanan)

  Error handling:

   - Fix leaks when ACPI APEI/GHES error events overflow the kfifo or
     mention a device that no longer exists (Priyank Rathod)

   - Fix aer_process_err_devices() leak when a device is recorded as an
     error source purely by being mentioned in the Root Port Error
     Source and the device is inaccessible or logged only masked errors
     (Priyank Rathod)

  ASPM:

   - Disable ASPM when drivers request that, even if the OS doesn't own
     ASPM; otherwise drivers do it on their own, which is worse (Ilpo
     Järvinen)

  Power management:

   - Align hibernate poweroff flow with suspend flow for bridges so they
     can be powered down at hibernate as they are for suspend (Mario
     Limonciello)

   - Restore BARs after powering up during enumeration to fix a
     regression on devices that don't preserve state in D3hot (Keng-Yu
     Lin)

   - Avoid D3 on PLX PEX 8532/8533/8548 downstream ports, where putting
     them in D3hot takes down the whole switch (Imre Kaloz)

  Power control:

   - Add GPIO driver for Toshiba TC9563 embedded GPIO controller (Alex
     Elder)

   - Add DT documentation and pwrctrl driver support for TC9563 embedded
     GPIO controller (Lorenzo Bianconi)

   - Switch the tc9563 per-port reset to use the GPIO descriptor API
     instead of direct regmap accesses (Lorenzo Bianconi)

   - Only destroy devices created by pwrctrl core, so that when removing
     a PCIe controller driver that uses pwrctrl, we don't remove devices
     populated by another mechanism (Shawn Lin)

   - Power off child devices on power-on failure (Lorenzo Bianconi)

  PCIe native device hotplug:

   - Make the 'pciehp_poll_mode' parameter read-only to prevent changes
     via sysfs, which can cause errors when unbinding (Runyu Xiao)

  Virtualization:

   - Read SR-IOV VF Revision ID and Subsystem ID from VF instead of
     assuming they're the same as VF 0; they may differ (Logan Odell)

   - Add ACS quirk for Pericom PI7C9X2G304 switches (Hans de Goede)

  Peer-to-peer DMA:

   - Add Zhaoxin KX-6000, KH-40000, KX-6000G, KX-7000, and KH-50000 host
     bridges to allowlist (LeoLiu-oc)

   - Add Alibaba T-HEAD Yitian 710 host bridge to allowlist (Feng Tang)

   - Add Intel Haswell client host bridge to allowlist (Scott Lee)

   - Intel Xeon E3/E5/E7 0x6f00 host bridge to allowlist (kai zhang)

   - Fix handling of errors in pci_p2pdma_add_resource() to avoid (a)
     unmapping a BAR if registering another fails and (b) use after free
     of p2p_pgmap (Leon Romanovsky)

   - Wait for RCU readers before freeing state to avoid use-after-free
     of pdev->p2pdma (Leon Romanovsky)

   - Restrict pci_p2pmem_find_many() to providers backed by a pool (Leon
     Romanovsky)

   - Safely terminate ACS redirect lists to avoid out-of-bounds access
     to the buffer (Leon Romanovsky)

   - Silence 'Host bridge not in P2PDMA whitelist' warnings unless
     caller, e.g., pci_p2pmem_find_many(), requests 'verbose' (Leon
     Romanovsky)

  Sysfs:

   - Return -ENODEV or -EIO sysfs 'label' or 'acpi_index' attributes
     when Device Name _DSM fails, not -1, which is interpreted as -EPERM
     (Krzysztof Wilczyński)

   - Return valid sysfs 'acpi_index' attribute even if the Device Name
     _DSM returned an invalid 'label' (Krzysztof Wilczyński)

   - Expose sysfs 'acpi_index' and 'label' based on whether the Device
     Name _DSM returns valid data, not merely whether the _DSM is
     implemented (Krzysztof Wilczyński)

   - Avoid out-of-bounds reads of the label returned by the Device Name
     _DSM, which is in UTF-16 characters, not bytes (Krzysztof
     Wilczyński)

   - Reject unaligned resource I/O port accesses, which can oops on
     arm64 (Deepanshu Kartikey)

Endpoint framework:

   - Pass the correct physical and virtual endpoint function numbers
     when setting translation of inbound memory windows (Koichiro Den)

   - Make embedded doorbell IRQ non-shared, since currently only the
     first EPF can allocate doorbells (Koichiro Den)

   - MSI doorbells currently target the first EPF attached to an EPC;
     let other EPFs try the embedded doorbell instead of failing when
     they can't use the MSI doorbell (Koichiro Den)

   - Serialize scan of vNTB virtual PCI bus with other PCI topology
     changes (Koichiro Den)

   - Manage vNTB lifetimes to avoid leaking virtual devices and buses
     and allow removal (Koichiro Den)

   - Track vNTB link state from both sides so both see the same
     effective link state (Koichiro Den)

   - Configure vNTB MSI-X when supported to avoid IOMMU faults and
     failure to deliver doorbell interrupts on RC (Koichiro Den)

  APM X-Gene PCIe controller driver:

   - Use devm for clocks so they're automatically disabled, unprepared,
     and released if errors happen during probe (Yuho Choi)

  ASPEED PCIe controller driver:

   - Fix clk and PHY leaks in aspeed_pcie_port_init() error paths (Liu
     Zhenlong)

  Broadcom iProc PCIe controller driver:

   - Expose devm_pci_alloc_host_bridge_release() so drivers can share a
     devm release function even if they don't need the device tree
     parsing done by devm_pci_alloc_host_bridge() (Bjorn Helgaas)

   - Request only the memory window from BCMA Enumeration ROM and warn
     if it doesn't match the one in DT, which fixes an iproc-bcma probe
     failure (Semih Baskan)

  Broadcom STB PCIe controller driver:

   - Replace bool properties for each SoC configuration with a u32
     bitvector and a BFLAG() helper (Jim Quinlan)

   - Use a similar BQUIRK() helper to test various SoC quirks (Jim
     Quinlan)

  Cadence PCIe controller driver:

   - Remove device links to PHY, which are redundant because the PHY
     core itself adds them (Vladimir Oltean)

   - Return error (not success) from cdns_plat_pcie_probe() if
     pm_runtime_get_sync() or cdns_pcie_ep_setup() failed (Vladimir
     Oltean)

   - Correct the driver data pointer usage; previously .probe() stored
     'struct cdns_plat_pcie *', but .shutdown() used the pointer as
     'struct cdns_pcie *', resulting in accessing garbage (Linmao Li)

  ESWIN PCIe controller driver:

   - Publish the platform driver MODULE_DEVICE_TABLE so the driver can
     be autoloaded when built as a module (Pengpeng Hou)

  Freescale i.MX6 PCIe controller driver:

   - Fix resource and pwrctrl device leaks .probe() (Zhijian Han)

   - Improve i.MX95 Gen3 link stability by changing MPLLB_BANDWIDTH from
     default 120 to 140 (Richard Zhu)

   - Use dev_err_probe() in host init error path to silence
     -EPROBE_DEFER messages (Alexander Stein)

   - Avoid dereferencing NULL clock names when 'clocks' includes more
     phandles than 'clock-names' has names (Rudi Heitbaum)

   - Add suspend_poweroff flag so platforms like i.MX that power off RC
     controllers during suspend can enter L2 so endpoints can get
     PME_Turn_Off notifications before power loss (Richard Zhu)

  Freescale Layerscape PCIe controller driver:

   - Enable PROBE_PREFER_ASYNCHRONOUS to reduce probe time of the four
     controllers on LX2160A (Vincent Jardin)

  Intel VMD host bridge driver:

   - Flush DMA writes before handling MSI on Meteor Lake: MSI may arrive
     before write has completed, resulting in an nvme 30 second stall
     before a QID timeout and possibly other similar problems (Rickey
     Bartlett)

   - Flush DMA writes before handling MSI on Arrow Lake (Vladimir
     Nedoshivin)

  Marvell Aardvark PCIe controller driver:

   - Disable PHY on probe failures (Myeonghun Pak)

  Marvell MVEBU PCIe controller driver:

   - Refcount child OF nodes during .probe() to make a concurrent OF
     overlay removal safe (Krzysztof Kozlowski)

  MediaTek PCIe controller driver:

   - Find INTx DT property by 'interrupt-controller' name instead of
     assuming it's the first child node (Zhengping Zhang)

  MediaTek PCIe Gen3 controller driver:

   - Fix a 64-bit type truncation in mtk_pcie_set_trans_table() to avoid
     issues with windows above or larger than 4GB (Sreeraj S Kurup)

  NVIDIA Tegra264 PCIe controller driver:

   - Fix the Link Capabilities offset so we read the correct register
     (Bjorn Helgaas)

  Qualcomm PCIe controller driver:

   - Only collect reset GPIOs from PCI bridge DT nodes to avoid stealing
     resets used by downstream devices like USB controllers (Christopher
     Obbard)

   - Block accesses to downstream devices on link down to reduce a storm
     of Completion Timeout AER interrupts (Qiang Yu)

   - Skip system suspend/resume for firmware-managed PCIe, where
     firmware manages clocks, regulators, resets, etc (Mrinmay Sarkar)

   - Honor IOMMU provider's #iommu-cells in qcom_pcie_config_sid_1_9_0()
     (Manivannan Sadhasivam)

   - Deinitialize endpoint on remove (Guangshuo Li)

   - Treat Root Port error recovery as successful even if link doesn't
     come up after reset because the device was hot-unplugged (Konrad
     Dybcio)

   - Skip unnecessary iMSI-RX initialization if DT 'msi-map' is present,
     indicating an external MSI controller (Ayiluri Naga Rashmi)

  Renesas R-Car PCIe controller driver:

   - Limit Max_Read_Request_Size to 256 to avoid hardware erratum (Marek
     Vasut)

   - Support PERST# via reset subsystem as well as the existing GPIO
     support to prepare for R-Car Gen5 SoCs (Marek Vasut)

   - Add DT and driver support for the R-Car Gen 5 X5H (R8A78000) PCIe
     Gen 4 core (Marek Vasut)

   - Add Application/Local register reset DT description and driver
     support for both host and endpoint mode (Marek Vasut)

   - Add PM ops so controller works after suspend/resume (Marek Vasut)

  Renesas RZ/G3S PCIe controller driver:

   - Disable refclk on probe failure (Lad Prabhakar)

   - Propagate platform_get_irq_byname() errors so probe deferral works
     correctly (Lad Prabhakar)

   - Tear down INTx handlers if subsequent initialization fails (Lad
     Prabhakar)

   - Add RZ/G3L (R9A08G046) DT and driver support (Biju Das)

  Rockchip PCIe controller driver:

   - Limit host and endpoint controllers to 2.5 GT/s since 5.0 GT/s is
     unsafe per Rockchip (Geraldo Nascimento)

  Synopsys DesignWare PCIe controller driver:

   - Set DMA_BYPASS bit in outbound IATU CTRL2 register to avoid data
     corruption if the iATU translates DMA engine transactions (Sumit
     Kumar)

   - Use FIELD_PREP() to remove need for *_SHIFT definitions (Hans
     Zhang)

  TI DRA7xx PCIe controller driver:

   - Remove device links to PHY, which are redundant because the PHY
     core itself adds them (Vladimir Oltean)

   - Fix optional clock leak when .probe() fails by using
     devm_clk_get_optional_enabled() (Felix Gu)

  TI Keystone PCIe controller driver:

   - Remove device links to PHY, which are redundant because the PHY
     core itself adds them (Vladimir Oltean)

  UltraRISC PCIe controller driver:

   - Allow DWC drivers to skip outbound iATU setup if they don't need
     translation between CPU and PCI addresses (Xincheng Zhang)

   - Skip MEM outbound iATU setup on DP1000 (Xincheng Zhang)

  Xilinx Versal CPM PCIe controller driver:

   - Add DT and driver support for optional PERST# for use in warm reset
     scenarios (Sai Krishna Musham)

  Xilinx XDMA PCIe controller driver:

   - Fix device node reference leak in xilinx_pl_dma_pcie_init_irq_domain()
     (Wentao Liang)"

* tag 'pci-v7.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci: (139 commits)
  PCI/pwrctrl: Power off child devices on power-on failure
  PCI/pwrctrl: Only destroy devices created by pwrctrl core
  PCI/pwrctrl: generic: Fix leaking array from of_regulator_bulk_get_all()
  PCI/pwrctrl: tc9563: Switch per-port reset to GPIO descriptor API
  PCI/pwrctrl: tc9563: Add GPIO auxiliary device support
  dt-bindings: PCI: toshiba,tc9563: Document embedded GPIO controller
  gpio: tc9563: Add support for the embedded GPIO controller
  PCI: qcom: Skip DWC MSI host initialization when DT 'msi-map' is present
  PCI: qcom: Ignore -ENODEV after Root Port reset
  PCI: qcom-ep: Deinitialize endpoint on remove
  PCI/sysfs: Reject unaligned resource I/O port accesses
  PCI: rcar-gen4: Add missing PM ops
  PCI: endpoint: pci-epf-vntb: Honor MSI-X selection
  PCI: endpoint: pci-epf-vntb: Use a local epf pointer in interrupt setup
  PCI: dwc: imx6: Use regmap_assign_bits() for conditional set/clear
  PCI: dwc: Describe DWC PCIe fields with full masks and FIELD_PREP()
  PCI: dwc: Rename pp->irq_domain to pp->msi_irq_domain
  PCI: dwc: Rename dw_pcie_allocate_domains() to dw_pcie_allocate_msi_domains()
  PCI: dwc: Correct PCIE_DW_PLAT_EP reference in Kconfig help
  PCI/ASPM: Disable ASPM when driver requests it
  ...
2026-10-23 15:34:47 -10:00
Jamie Nguyen
f54ec8af33 ACPI: sysfs: Finish sysfs init when creating a table file fails
If creating the file for a table fails, acpi_tables_sysfs_init()
returns without sending the uevents for the tables directories, and
acpi_sysfs_init() returns before creating the hotplug and pm_profile
files.

Stop creating table files at that point, but finish the rest of the
initialization. Skipping only the failed table would give its file
name to the next table with the same signature, so reading that file
would return the failed table.

Signed-off-by: Jamie Nguyen <jamien@nvidia.com>
Link: https://patch.msgid.link/20261013193900.1258808-1-jamien@nvidia.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-22 20:39:55 +02:00
Jamie Nguyen
4d23d84ef2 ACPI: sysfs: Map only the requested range in acpi_data_show()
acpi_data_show() maps the whole data region on every read(), although
it copies at most count bytes and sysfs passes at most PAGE_SIZE bytes
per call. acpi_os_unmap_iomem() defers the iounmap until after an RCU
grace period, so a process reading one of these files in a loop keeps
many full-size mappings in flight.

Map only the range being read. acpi_os_map_iomem() rounds the mapping
to page boundaries, so each mapping is now at most two pages, whatever
the size of the region.

A malformed table can describe a region that wraps around the end of
the physical address space. acpi_os_map_iomem() doesn't check for that,
and its lookup of existing mappings then matches an unrelated mapping,
with or without this change. Fail reads of such a region before mapping
anything.

Signed-off-by: Jamie Nguyen <jamien@nvidia.com>
Link: https://patch.msgid.link/20261013180728.957618-1-jamien@nvidia.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-22 20:25:49 +02:00
Ivan Hu
ec696f3477 ACPICA: Initialize parser_state.aml_end in acpi_install_method()
In AcpiInstallMethod(), the local ParserState is stack-allocated and
only ParserState.Aml was initialized. Parser helpers called by this path
read ParserState.AmlEnd for bounds checking: AcpiPsPeekOpcode() reads it
before validating the first AML opcode, and AcpiPsGetNextPackageEnd()
reads it indirectly via AcpiPsGetNextPackageLength(). The subsequent
package-limit check also compares against ParserState.AmlEnd. Because
AmlEnd was never set, these checks operated on an uninitialized value,
which Coverity flagged as an uninitialized read (CID 1684785) and which
could lead to incorrect parser bounds decisions.

Coverity report:

*** CID 1684785:         Memory - illegal accesses  (UNINIT)
/src/acpica/source/components/namespace/nsxfname.c: 712             in AcpiInstallMethod()
        ParserState.Aml += AcpiPsGetOpcodeSize (Opcode);
>>>     CID 1684785:         Memory - illegal accesses  (UNINIT)
>>>     Using uninitialized value "ParserState.AmlEnd" when calling
        "AcpiPsGetNextPackageEnd".
        ParserState.PkgEnd = AcpiPsGetNextPackageEnd (&ParserState);

Initialize ParserState.AmlEnd to the end of the table
(Buffer + Table->Length) so the parser bounds checks operate on a valid
limit.

Link: 19429ef91e
Fixes: bdc3575401 ("ACPICA: add boundary checks in two places")
Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Signed-off-by: Leonard Lausen <leonard@lausen.nl>
[ rjw: Subject tweaks ]
Link: https://patch.msgid.link/20261019145421.47181-2-leonard@lausen.nl
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-22 20:07:16 +02:00
Daniel Lezcano
b66621ad2a ACPI: platform_profile: Separate handler locking from sysfs lifetime
Registration and removal currently hold profile_lock across
device_unregister() and sysfs_update_group(). These operations can remove
sysfs attributes and wait for their active callbacks to finish. The
profile read and write callbacks acquire profile_lock themselves, so a
concurrent access can deadlock:

  Removal/update path             Active sysfs callback
  -------------------             ---------------------
  acquire profile_lock            hold kernfs active reference
  remove a sysfs attribute         wait for profile_lock
  wait for its active references

The removal path cannot finish until the callback returns, and the
callback cannot return until the removal path releases profile_lock.
This applies both to per-provider device teardown and to updates of the
legacy aggregate attribute group.

Commit 041142d7d2 ("ACPI: platform-profile: Fix possible deadlock in
platform_profile_remove()") previously fixed this lock ordering by moving
sysfs_remove_group() outside profile_lock. Commit 55b1e68134 ("ACPI:
platform_profile: Use guard(mutex) for register/unregister") reintroduced
the issue by extending the mutex guard over sysfs_remove_group(). Later,
commit 77be5cacb2 ("ACPI: platform_profile: Create class for ACPI
platform profile") replaced that teardown with device_unregister() and
sysfs_update_group(), still under the same mutex, extending the problem
to class-device teardown and aggregate attribute updates.

Simply dropping profile_lock around these operations is insufficient.
Aggregate operations currently discover providers through the class
device list. A provider being unregistered could therefore still be
selected for an aggregate read, write or cycle while its sysfs files are
being torn down. Concurrent registrations and removals would also race
when updating aggregate attribute visibility.

Introduce profile_registration_lock to serialize registration, removal
and aggregate sysfs updates. Sysfs callbacks never acquire this mutex.
Retain profile_lock for profile operations and use it to protect an
explicit list of handlers participating in the aggregate interface.

Add a handler to that list only after device_register() succeeds. On
removal, unlink it under profile_lock before calling device_unregister().
Acquiring profile_lock first waits for any aggregate operation already
using the handler to complete; unlinking prevents later aggregate
operations from finding it. Release profile_lock before draining sysfs
callbacks, allowing active per-provider callbacks to complete before the
device is released. Apply the same unlink-before-unregister ordering to
registration error cleanup.

Walk this list for aggregate reads, writes and profile cycling, and use
its emptiness to determine aggregate attribute visibility. The class
devices remain the per-provider userspace interface.

There can now be an interval between removing the last handler from the
list and removing the aggregate attributes. Explicitly reject choices
reads and writes during that interval: the intersection bitmap starts
with every bit set, so an empty traversal must not advertise all profiles
or report a successful write without updating a provider.

This separates aggregate membership from class device teardown while
preserving the existing class and ACPI sysfs interfaces.

Fixes: 55b1e68134 ("ACPI: platform_profile: Use guard(mutex) for register/unregister")
Fixes: 77be5cacb2 ("ACPI: platform_profile: Create class for ACPI platform profile")
Signed-off-by: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
[ rjw: Subject adjustment, added two empty code lines ]
[ rjw: Renamed profile_walk_handlers() to profile_for_each_handler() ]
Link: https://patch.msgid.link/20261020144525.3265851-1-daniel.lezcano@oss.qualcomm.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-22 19:35:22 +02:00
Ali Ahmet Memiş
645f370c93 ACPI: battery: Evaluate battery methods exclusively
On ThinkPad P1 Gen2 and P53, INT3403 _TMP switches the EC page selector
without taking the AML mutex the battery methods use, so _BIX and _BST
running at the same time can read the wrong page. Since commit d33e89d122
("thermal: core: Suspend thermal zones later and resume them earlier")
this happens on most resumes.

Evaluate the battery methods with acpi_evaluate_object_exclusive().

Fixes: d33e89d122 ("thermal: core: Suspend thermal zones later and resume them earlier")
Reported-by: Charis Stratakis <c.stratakis@proton.me>
Closes: https://lore.kernel.org/all/37N_jFulf7n-Z55NfKfE71C_wVPxYvZ0xD_iRUg2fXu7TypDiF5PStQ6siSfVBih6fThg5WoPes8U5ZQpfVm_teMFcUGXFxz2DdMbfSWuws=@proton.me/
Cc: All applicable <stable@vger.kernel.org> # 80892972ff ACPI: utils: Add exclusive AML evaluation helpers
Signed-off-by: Ali Ahmet Memiş <aliamemis@disroot.org>
Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
Reviewed-by: Rong Zhang <i@rong.moe>
Link: https://patch.msgid.link/20261018122220.678822-3-aliamemis@disroot.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-22 19:05:28 +02:00
Ali Ahmet Memiş
80892972ff ACPI: utils: Add exclusive AML evaluation helpers
ACPICA drops the interpreter lock while AML waits, for example around EC
accesses, so two methods can run interleaved.

Some firmware relies on methods not interleaving, for instance by
switching an EC page selector without taking the AML mutex that the
other users of that page hold.

Add acpi_evaluate_object_exclusive(), acpi_evaluate_integer_exclusive()
and acpi_execute_simple_method_exclusive() which serialize the
evaluation under a global mutex, for callers that are known to be
affected.

Suggested-by: Rafael J. Wysocki <rafael@kernel.org>
Link: https://lore.kernel.org/all/CAJZ5v0gS4agVUkCO6M=VW4Wi2y1-s+k23bpzmX9aAZ0Rsv4z9Q@mail.gmail.com/
Signed-off-by: Ali Ahmet Memiş <aliamemis@disroot.org>
Reviewed-by: Rong Zhang <i@rong.moe>
Link: https://patch.msgid.link/20261018122220.678822-2-aliamemis@disroot.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-22 19:01:52 +02:00
Linus Torvalds
df37e39242 Power management updates for 7.4-rc1
- Fix multiple issues related to input validation, synchronization,
    access safety, memory layout and register field validation, and error
    handling in the ACPI CPPC library (Christian Loehle and Sumit Gupta)
 
  - Select the frequency-invariance callback per CPU in the CPPC cpufreq
    driver and create the FIE worker before enabling PCC callbacks in it
    to avoid queueing work through a missing worker and dereferencing a
    NULL pointer (Christian Loehle)
 
  - Update the CPPC cpufreq driver entry in MAINTAINERS and add a new
    entry for the ACPI CPPC library (Christian Loehle)
 
  - Minor fixes in various cpufreq drivers (Alexander Koskovich, Daniel
    Schwierzeck, Frank Zhang, Haotian Zhang, Kathiravan Thirumoorthy,
    Sumeet Pawnikar, and Xueqin Luo)
 
  - Fix wrong behaviors on multi-node servers in the Loongson cpufreq
    driver (Huacai Chen)
 
  - Reject NULL from cpufreq_cpu_get() in the Rust code (Mehmet Koseoglu)
 
  - Add suspend OPP to mediatek cpufreq driver and DT (Ryan Brue)
 
  - Fixups for a few bugs identified by Sashiko in the amd-pstate cpufreq
    driver (Mario Limoncielloi, Wentao Guan)
 
  - Initial support for maximum frequency capacity handling on Zen6
    client in amd-pstate (Mario Limonciello)
 
  - Fix for amd-pstate-ut with 'Requested CPU Min frequency' BIOS option
    (K Prateek Nayak)
 
  - New Zen6 tuning values for EPP in amd-pstate (Mario Limonciello,
    Vishal Badole)
 
  - amd-pstate documentation fix (Karl Mehltretter)
 
  - Restrict deferred downscaling to low load for shared policies in the
    conservative cpufreq governor to avoid undesirable CPU frequency
    reduction in some cases (Shengming Hu)
 
  - Serialize sugov_start() against rate limit updates in the schedutil
    cpufreq governor to avoid using a stale rate limit value (Hui Su)
 
  - Prevent cpuidle governors menu and teo from returning idle state 0
    after it has been disabled (Xueqin Luo)
 
  - Replace min_t() with the better alternatives in the intel_idle driver
    and make it use 2-argument strscpy() (Andy Shevchenko)
 
  - Fix two repeated phrase instances in cpuidle (Hemanth Selam, Syazwina
    Fazrul)
 
  - Add rugged Panther Lake support to the intel_rapl power capping
    driver and make it use %pe for printing error pointers (Srinivas
    Pandruvada and Sumeet Pawnikar)
 
  - Update and improve runtime PM documentation and add a kunit test for
    supplier idle/suspend (Brian Norris)
 
  - Add a pm_runtime_dont_use_autosuspend() call to pm_runtime_reinit()
    to ensure autosuspend disabling on driver teardown (Joshua Crofts)
 
  - Ignore page-zero RAM in E820 checksum during hibernation on x86 to
    avoid rejecting images created after kexec() (Matthias Goergens)
 
  - Add resume event mapping for PMSG_POWEROFF to the PM core to allow it
    to carry out device shutdown in the future (Mario Limonciello)
 
  - Add DPM watchdog to prepare/late/early/noirq/complete phases of
    device suspend and resume (Mayank Rungta)
 
  - Update swsusp.txt references to swsusp.rst in hibernation
    documentation (Li Jun)
 
  - Fix use-after-free of perf domain in netlink doit handlers for energy
    models (Fan Wu)
 
  - Add synchronize_rcu() back to cpu_pm_unregister_notifier() after it
    was removed inadvertently in previous development cycles to avoid
    use-after-free (Bradley Morgan)
 
  - Unregister CPU PM notifier outside the timer lock in the timer-ti-dm
    clocksource driver (Bradley Morgan)
 
  - Fix typo "sucessfully" in a comment in pm_clk_add_clk() kerneldoc
    comment and typo "hierachy" in a comment in pm-graph (Hemanth Selam)
 
  - Fix the return value in dev_pm_opp_get_of_node() kernel-doc (Karl
    Mehltretter)
 -----BEGIN PGP SIGNATURE-----
 
 iQFGBAABCAAwFiEEcM8Aw/RY0dgsiRUR7l+9nS/U47UFAmrWNkISHHJqd0Byand5
 c29ja2kubmV0AAoJEO5fvZ0v1OO1M7QH/RyTpxMUHI3eLqhPIczecdsQxoJ9gCZS
 wGMQmvBRrNEw/Cp+X+j5Swo8iOJRKQ5Na+h53Ebg4EFJg5Fkh8SDO/VhQDaC0GUp
 t9y9MpVfXq/Fc/gOimzJ/MGhRmBXl5HKva586pg5TdFg4adDs4kPcDj9zDFnKMhf
 Kb0FHgjRjli1iDT1HSOV7KDsH1bZBWD1P04jMaVQ1zJb6Ngwi1msyBaRlE3A1mqX
 W31C3pi7qtfbs1v1JPmrnaVAJEZmv38t7x/G3o5FL35P2bwlgN/KXD0aMNHZ0Rnl
 A6Jz4p5ugop+gBLzyQo4W8SNcLk9cRvlp3FUwuEax4MEPbg+rhfjdDs=
 =4ccu
 -----END PGP SIGNATURE-----

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

Pull power management updates from Rafael Wysocki:
 "This time, the most visible part are the ACPI CPPC updates from
  Christian Loehle, including CPPC cpufreq driver changes, even though
  updates of cpufreq drivers proper are still the largest topic group.
  However, the updates of cpufreq drivers depend on the ACPI CPPC
  updates, so they should really be counted together and that is well
  over 1/2 of the total commit count.

  Interestingly enough, almost all of the updates included here are
  fixes or cleanups, with some new feature support in the amd-pstate
  cpufreq driver and IPQ9650 support in the qcom-nvmem cpufreq driver.
  The runtime PM documentation improvements from Brian Norris can also
  be mostly regarded as fixes, but a new kunit test goes along with
  them.

  Specifics:

   - Fix multiple issues related to input validation, synchronization,
     access safety, memory layout and register field validation, and
     error handling in the ACPI CPPC library (Christian Loehle and Sumit
     Gupta)

   - Select the frequency-invariance callback per CPU in the CPPC
     cpufreq driver and create the FIE worker before enabling PCC
     callbacks in it to avoid queueing work through a missing worker and
     dereferencing a NULL pointer (Christian Loehle)

   - Update the CPPC cpufreq driver entry in MAINTAINERS and add a new
     entry for the ACPI CPPC library (Christian Loehle)

   - Minor fixes in various cpufreq drivers (Alexander Koskovich, Daniel
     Schwierzeck, Frank Zhang, Haotian Zhang, Kathiravan Thirumoorthy,
     Sumeet Pawnikar, and Xueqin Luo)

   - Fix wrong behaviors on multi-node servers in the Loongson cpufreq
     driver (Huacai Chen)

   - Reject NULL from cpufreq_cpu_get() in the Rust code (Mehmet
     Koseoglu)

   - Add suspend OPP to mediatek cpufreq driver and DT (Ryan Brue)

   - Fixups for a few bugs identified by Sashiko in the amd-pstate
     cpufreq driver (Mario Limoncielloi, Wentao Guan)

   - Initial support for maximum frequency capacity handling on Zen6
     client in amd-pstate (Mario Limonciello)

   - Fix for amd-pstate-ut with 'Requested CPU Min frequency' BIOS
     option (K Prateek Nayak)

   - New Zen6 tuning values for EPP in amd-pstate (Mario Limonciello,
     Vishal Badole)

   - amd-pstate documentation fix (Karl Mehltretter)

   - Restrict deferred downscaling to low load for shared policies in
     the conservative cpufreq governor to avoid undesirable CPU
     frequency reduction in some cases (Shengming Hu)

   - Serialize sugov_start() against rate limit updates in the schedutil
     cpufreq governor to avoid using a stale rate limit value (Hui Su)

   - Prevent cpuidle governors menu and teo from returning idle state 0
     after it has been disabled (Xueqin Luo)

   - Replace min_t() with the better alternatives in the intel_idle
     driver and make it use 2-argument strscpy() (Andy Shevchenko)

   - Fix two repeated phrase instances in cpuidle (Hemanth Selam,
     Syazwina Fazrul)

   - Add rugged Panther Lake support to the intel_rapl power capping
     driver and make it use %pe for printing error pointers (Srinivas
     Pandruvada and Sumeet Pawnikar)

   - Update and improve runtime PM documentation and add a kunit test
     for supplier idle/suspend (Brian Norris)

   - Add a pm_runtime_dont_use_autosuspend() call to pm_runtime_reinit()
     to ensure autosuspend disabling on driver teardown (Joshua Crofts)

   - Ignore page-zero RAM in E820 checksum during hibernation on x86 to
     avoid rejecting images created after kexec() (Matthias Goergens)

   - Add resume event mapping for PMSG_POWEROFF to the PM core to allow
     it to carry out device shutdown in the future (Mario Limonciello)

   - Add DPM watchdog to prepare/late/early/noirq/complete phases of
     device suspend and resume (Mayank Rungta)

   - Update swsusp.txt references to swsusp.rst in hibernation
     documentation (Li Jun)

   - Fix use-after-free of perf domain in netlink doit handlers for
     energy models (Fan Wu)

   - Add synchronize_rcu() back to cpu_pm_unregister_notifier() after it
     was removed inadvertently in previous development cycles to avoid
     use-after-free (Bradley Morgan)

   - Unregister CPU PM notifier outside the timer lock in the
     timer-ti-dm clocksource driver (Bradley Morgan)

   - Fix typo "sucessfully" in a comment in pm_clk_add_clk() kerneldoc
     comment and typo "hierachy" in a comment in pm-graph (Hemanth
     Selam)

   - Fix the return value in dev_pm_opp_get_of_node() kernel-doc (Karl
     Mehltretter)"

* tag 'pm-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (89 commits)
  cpufreq: loongson3: Replace IOCSR read/write with MMIO ones
  cpufreq: loongson3: Use global physical CPU ID in get/target callbacks
  cpufreq: loongson3: Replace per-package mutex with per-node
  cpufreq: loongson3: Adjust the width of id and val in smc_message
  cpufreq: loongson3: Make this driver depend on MACH_LOONGSON64
  PM: runtime: Expand introduction with core concepts and structure
  cpufreq: schedutil: Serialize sugov_start() against rate limit updates
  MAINTAINERS: ACPI: Add a separate CPPC entry
  MAINTAINERS: cpufreq: Replace CPPC reviewer
  arm64: dts: mediatek: mt8173: Mark the lowest CPU OPPs for suspend
  cpufreq: mediatek: Enter system sleep at the suspend OPP
  cpufreq: qcom-cpufreq-hw: fix device node refcount leak in phandle parsing
  cpufreq: qcom-nvmem: Add IPQ9650 support
  cpufreq: Add Milos to cpufreq-dt-platdev blocklist
  cpufreq: Use %pe to print error pointers symbolically
  rust: rcpufreq_dt: add module alias
  cpufreq: sti: avoid NULL dereference in dev_err()
  cpufreq: tegra194: fix double-pointer error in get_cpu_ndiv
  cpufreq: sparc-us2e: fix frequency table index copy-paste error
  rust: cpufreq: reject NULL from cpufreq_cpu_get()
  ...
2026-10-21 14:24:26 -10:00
Linus Torvalds
4df4d2a577 ACPI support updates for 7.4-rc1
- 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)
 -----BEGIN PGP SIGNATURE-----
 
 iQFGBAABCAAwFiEEcM8Aw/RY0dgsiRUR7l+9nS/U47UFAmrWLzASHHJqd0Byand5
 c29ja2kubmV0AAoJEO5fvZ0v1OO1tfwH/2mp9begKCySWSt5EDnCvn01sLQtzZGB
 2q5Iv7j6nO83M+CYhDkI9pay3yRnHP4a2PFC0OPez/628PD6EYiDnZHb6/jCA7tP
 ralr+su0PX8sDacysLmbnWe8JLOLfztmsYt+aJjXywypunaZ5FX4O0Ssh7Mx2U5b
 aJWHo6xLUBhUdCWUleEjPLRzhe9Yp9x5XER0XEcgifnqNAxUtRiWJBWGbpk7ObBO
 5QP8hkVmpkiHLvitjdNOeMF1ZvJLFhOK2sSodCaTYIowVmnccgFmb1xKyXsScrv3
 fa+zwCHuwYi1szbPVq6oWB5f3Fyn4S0N0Kajv+qqFLZv5MNXC6/aNsg=
 =Kc4q
 -----END PGP SIGNATURE-----

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
  ...
2026-10-21 12:08:18 -10:00
Linus Torvalds
d4d9eb226e configfs: Updates for v7.4
- Attribute structures can now be const. From Thomas Weißschuh.
 
 - The first selftests for the configfs userspace interface, plus a
   sample subsystem that accepts symlinks to test against. They include
   a race of symlink(2) against rmdir of the target, which exercises
   the use-after-free fixed in v7.3-rc3.
 
 - Rust bindings, merged from Andreas Hindborg's signed tag: fix the
   data offset calculation in subsystem callbacks (marked for stable),
   add the missing Send and Sync bounds, and correct a safety comment.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEErIU5puj0ZwLKSkObNaOTn/x4d20FAmrST7cACgkQNaOTn/x4
 d233CRAAjY+Fnel08/53gzSZ8ArV30k7QV+sbedfq3TvNizkR8WcXd3z/XbcAMaA
 AevQdFcL10Wii6SqZ+mD+zkosbEhfE1w0CZ7ol7jNNdot9LPHE5Ih1T0nHSWKp8n
 ev7OZtGW+UQz7nyaDfzX8ycGlrimb3Rk4S34uP0WqGnftToA3qAnKfmVjF2T4jf2
 QtiP81vp33blKGVF/YbjS4LXzrth2/j1KdlIi0EfIZQPjB/XAYVvjm/8eyEdTquc
 hRCaHUhTtxXNuS6TZBmBpa5UKlgHCZP1vODm/mWp4Cp45lx+YQ+F5ns2OWKbNSEN
 8yx0vV1/oXRdsP9J4WYd4JwOjlhOFBCcP/WkNMr5TWhPw8bjNA2ye61t9Hy0LXSy
 yLJkygB57wuS9X2bIhw5ZJgfsANW4Pj5o2qCtZV68hW1NTClowklK1yE1/Hn1J8E
 kD5gTrT2KL9qqVP6FjYpwkynqfqHeYdy1TlltVvCdnXHY5Jys0ddEBeTaVGVxKuk
 ooqad/W7Q1HoetKVD6Ya6VbV5vSQs7gTX/BmMZLrGipNQQcYNPN3qZMs37K0c4eT
 wYUdlA2ChWF+kcQd0smMl6Ag3fJ9D3MIK/ADAZe1XjgodrSbph5KRLOsLptY1bBU
 bwmdYWtVsOyX0hkI6SdP96GuU30+t/6op9sffkxc74pgYTgoBuc=
 =OmD0
 -----END PGP SIGNATURE-----

Merge tag 'configfs-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/leitao/linux

Pull configfs updates from Breno Leitao:

 - Attribute structures can now be const (Thomas Weißschuh)

 - The first selftests for the configfs userspace interface, plus a
   sample subsystem that accepts symlinks to test against. They include
   a race of symlink(2) against rmdir of the target, which exercises the
   use-after-free fixed in v7.3-rc3.

 - Rust bindings, merged from Andreas Hindborg's signed tag: fix the
   data offset calculation in subsystem callbacks (marked for stable),
   add the missing Send and Sync bounds, and correct a safety comment.

* tag 'configfs-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/leitao/linux:
  samples: configfs: constify the configfs_attribute structures
  configfs: Allow the registration of const struct configfs_attribute
  configfs: Constify configfs_bin_attribute
  configfs: Treat attribute structures as const internally
  configfs: Constify is_visible/is_visible_bin in configfs_group_operations
  rust: configfs: remove mutability from some field initializers
  selftests/configfs: race symlink against rmdir of the target
  selftests/configfs: cover symlink and unlink
  samples/configfs: add a subsystem that accepts symlinks
  selftests/configfs: add tests for the userspace interface
  rust: configfs: fix data offset calculation for subsystem callbacks
  rust: configfs: require thread-safe callback data
  rust: configfs: fix release safety documentation
2026-10-20 16:25:43 -10:00
Rafael J. Wysocki
84c4409e85 Merge branches 'acpi-pcc', 'acpi-numa', 'acpi-pfrut', 'acpi-misc' and 'pnp'
Merge updates of the ACPI PCC (Platform Communications Channel) driver,
ACPI NUMA support code, ACPI Platform Firmware Runtime Update and
Telemetry driver, ACPI WMI support code, and a PNP update for 7.4:

 - 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)

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

* acpi-pcc:
  ACPI: PCC: Cache OpRegion command timeout
  ACPI: PCC: Free channel on OpRegion deactivation
  ACPI: PCC: Preserve shared memory signature in OpRegion handler

* acpi-numa:
  ACPI: NUMA: fix typo in log message

* acpi-pfrut:
  ACPI: pfr_update: zero-initialize capability query result

* acpi-misc:
  ACPI: WMI: use IS_ENABLED() to simplify built-in or module check

* pnp:
  PNP: Detach device after resource transition failure
2026-10-19 13:39:11 +02:00
Rafael J. Wysocki
c0931add63 Merge branches 'acpi-battery', 'acpi-sbs', 'acpi-button' and 'acpi-video'
Merge updates of the ACPI battery, ACPI SBS (Smart Battery System), ACPI
button, and ACPI video bus device drivers for 7.4:

 - 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)

* acpi-battery:
  ACPI: battery: Fix bogus cycle count values on systems without _BIX

* acpi-sbs:
  ACPI: SBS: Fix NULL pointer dereference on allocation failure
  ACPI: SBS: report relative state of charge as CAPACITY

* acpi-button:
  ACPI: button: Add lid_init_state quirk for Razer Blade Stealth 13 (Early 2020) RZ09-0310

* acpi-video:
  ACPI: video: force native backlight on Dell OptiPlex AIO 7410 35W
  ACPI: video: add backlight=native DMI quirk on Acer Nitro AN515-58
2026-10-19 13:36:55 +02:00
Rafael J. Wysocki
8669f2b6c9 Merge branch 'acpi-driver'
Merge changes related to ACPI support in device drivers for 7.4:

 - 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)

* acpi-driver:
  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()
  ACPI: Add stub for acpi_find_child_device()
  ACPI: bus: Provide !ACPI stub for acpi_device_uid()
  ALSA: hda: aw88399: Switch to use acpi_bus_get_primary_device()
  ASoC: loongson: Switch to use acpi_bus_get_primary_device()
  ASoC: intel: boards: Switch to use acpi_bus_get_primary_device()
  ASoC: amd: acp3x-es83xx: Switch to use acpi_bus_get_primary_device()
  ASoC: amd: acp-es8336: Switch to use acpi_bus_get_primary_device()
  thunderbolt: Switch to use acpi_bus_get_primary_device()
  platform/x86: apple-gmux: Switch to use acpi_bus_get_primary_device()
  platform/x86: x86-android-tablets: Use acpi_bus_get_primary_device()
  platform/x86: serdev_helpers: Switch to use acpi_bus_get_primary_device()
  platform/x86: yogabook: Switch to use acpi_bus_get_primary_device()
  ACPI: amba: Switch to use acpi_bus_get_primary_device()
  ACPI: bus: Use acpi/acpi_bus.h without CONFIG_ACPI
2026-10-19 13:32:55 +02:00
Rafael J. Wysocki
5a44bb4863 Merge branches 'acpica' and 'acpi-thermal'
Merge ACPICA updates and ACPI thermal control updates for 7.4:

 - 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
   instread 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)

* acpica:
  ACPICA: actbl2.h: Add bit constants of the Flags field in the IOVT IOMMU structure
  ACPICA: Fix PCC OperationRegion command offsets
  ACPICA: Fix memory leak in acpi_ds_create_field()

* acpi-thermal:
  ACPI: fan: Use __free() to simplify AML error handling
  ACPI: thermal: Fix acpi_thermal_guess_offset() for device with a 273.0°K offset
  ACPI: fan: Use more suitable cooling device data
  ACPI: fan: Store ACPI device pointer in struct acpi_fan
  ACPI: processor: thermal: Use more suitable cooling device data
  ACPI: thermal: Use cooling device parent for thermal zone binding
  ACPI: fan: Use thermal_cooling_device_create()
  ACPI: video: Use thermal_cooling_device_create()
  ACPI: processor: thermal: Use thermal_cooling_device_create()
  thermal: core: Introduce thermal_cooling_device_create()
  ACPI: video: Fix backlight unregistration ordering
  ACPI: fan: Fix memory leak due to leftover devm_kcalloc() argument
2026-10-19 13:30:25 +02:00
Rafael J. Wysocki
d3c11b7a36 Merge an ACPI fan driver cleanup for 7.4 2026-10-16 22:53:38 +02:00
Rafael J. Wysocki
6a71f067f7 Merge branches 'acpi-pci' and 'acpi-apei'
Merge an ACPI support change related to PCI and ACPI APEI support
updates for 7.4:

 - 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)

* acpi-pci:
  ACPI: PCI: pci_link: clear driver_data before free

* acpi-apei:
  ACPI: APEI: accumulate the queued flag across error sections
  PCI/AER: Map a raw AER Capability image field by field
  Documentation: ACPI: EINJ: Update stale driver source reference
  cxl/ras: Make cxl_cper_handle_prot_err() static
  ACPI: APEI: GHES: Bound AER info copy and sanitize software metadata
  ACPI: APEI: GHES: Validate memory error section length before payload access
  efi/cper: Read only validated fields in cper_mem_err_pack()
  ACPI: APEI: GHES: Validate CXL protocol error section length before RAS cap copy
  ACPI: APEI: GHES: Bound CXL event record copy to the firmware section length
  ACPI: extlog: Fix CONFIG_ACPI_APEI_PCIEAER guard typo
  ACPI: extlog: Validate PCIe error section length before payload access
  ACPI: extlog: Avoid populating software AER metadata from raw hardware buffer
  ACPI: extlog: Defer CXL protocol error handling to avoid lock inversion
  ACPI: extlog: Validate elog record length before walking sections
  efi/cper: Reject an error status block length that wraps a u32
  efi/cper: Reject CPER records with an out-of-range error_data_length
2026-10-16 22:13:24 +02:00
Rafael J. Wysocki
52e4ebeee9 Merge branches 'acpi-tables', 'acpi-osl', 'acpi-utils' and 'acpi-pm'
Merge ACPI table parser updates, an ACPI OS services layer (OSL) update,
ACPI utility API updates, and ACPI power management updates for 7.4:

 - 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)

 - Add quirks to avoid turning off unused ACPI power resources on Acer
   Swift 3 SF314-56G (MX250), Casper Excalibur G900, and Acer Aspire
   A515-53G (Matthias Dittrich, Hakan Abay, Krittikun Wongnin)

 - Drop unused sleep_no_lps0 define from the generic ACPI system sleep
   handling code (Riwen Lu)

* acpi-tables:
  ACPI: HMAT: preserve hmat_adist_nb notifier block
  ACPI: tables: handle failed initrd override mappings
  ACPI: MRRM: Use for_each_populated_zone() in get_node_num()

* acpi-osl:
  ACPI: OSL: Use vsnprintf() in acpi_os_vprintf()

* acpi-utils:
  ACPI: utils: Ignore leading root scope prefix in string _UID match
  ACPI: utils: Adjust message printing macros for ACPI objects

* acpi-pm:
  ACPI: PM: Add Acer Aspire A515-53G to dmi_leave_unused_power_resources_on[]
  ACPI: PM: sleep: Drop unused sleep_no_lps0 define
  ACPI: PM: Add unused power resource quirk for Casper Excalibur G900
  ACPI: PM: Add quirk for Acer Swift 3 SF314-56G (MX250)
  ACPI: PM: s2idle: Add _Ixx GPE wake indicator support
2026-10-16 21:42:03 +02:00
Rafael J. Wysocki
253b25cbb3 Merge branches 'acpi-scan', 'acpi-glue', 'acpi-bus' and 'acpi-sysfs'
Merge ACPI support infrastructure changes for 7.4:

 - 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)

* acpi-scan:
  ACPI: scan: Combine two conditionals in acpi_bus_attach()
  ACPI: PM: Move acpi_bus_init_power() declaration to internal header file
  ACPI: scan: Stop calling acpi_bus_init_power() early
  ACPI: PM: Drop parent state update from acpi_device_get_power()
  ACPI: scan: Drop useless and noisy debug statement

* acpi-glue:
  ACPI: glue: Skip devices with no type in acpi_device_notify()
  ACPI: glue: Fix up and adjust acpi_unbind_one()
  ACPI: glue: Rearrange acpi_bind_one() to avoid breakage
  ACPI: glue: Carry out companion lookup under bus_type_sem
  ACPI: glue: Rework the success message in acpi_device_notify()
  ACPI: glue: Reduce debug noise from acpi_device_notify()

* acpi-bus:
  driver core/ACPI: Introduce companion_bus_register()
  ACPI: bus: Reduce runtime memory footprint of struct acpi_device

* acpi-sysfs:
  ACPI: sysfs: use strscpy() instead of strcpy()
2026-10-16 21:17:17 +02:00
Thomas Weißschuh
ee4f267ada configfs: Constify configfs_bin_attribute
The configfs_bin_attribute structures defined by driver are never
modified. Make them const.

As there are only two users of these attributes, adapt them in the same
commit to avoid a phased transition.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Acked-by: Andreas Hindborg <a.hindborg@kernel.org>
Link: https://patch.msgid.link/20260716-configfs-const-base-v1-4-c545a4053cb5@weissschuh.net
Signed-off-by: Breno Leitao <leitao@debian.org>
2026-10-16 09:17:20 -07:00
Krittikun Wongnin
8eb2754ef9 ACPI: PM: Add Acer Aspire A515-53G to dmi_leave_unused_power_resources_on[]
On the Acer Aspire A515-53G (Whiskey Lake + NVIDIA GeForce MX230), the
dGPU behind root port RP05 (00:1c.4) falls off the bus during boot and
is unusable until the next power cycle:

  nvidia 0000:02:00.0: Unable to change power state from D3cold to D0, device inaccessible
  NVRM: The NVIDIA GPU 0000:02:00.0 ... has fallen off the bus

The firmware ships two SSDTs which both provide power management for
the dGPU:

 - One SSDT defines \_SB.PCI0.RP05.PC01 together with
   RP05._PR0/_PR2/_PR3 = { PC01 }.

 - A second SSDT defines \_SB.PCI0.RP05.PCRP (_STA initially One,
   _OFF calls \_SB.PCI0.HGOF, which puts the link into L2/L3 and drops
   the dGPU power enable GPIO) and its own RP05._PR0/_PR2/_PR3/_S0W.
   The latter fail to load:

     ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.RP05._PR0], AE_ALREADY_EXISTS

As a result PCRP is not referenced by any device and
acpi_turn_off_unused_power_resources() turns it off right after the
ACPI namespace scan. This cuts power to the dGPU, but PC01 still
believes it is on, so its _ON method is a no-op when the PCI core later
tries to bring the GPU back to D0.

Windows does not turn off unused power resources, so the dGPU works
there.

Add the machine to dmi_leave_unused_power_resources_on[], like the
THUNDEROBOT ZERO which has a similar SSDT bug. With this change the
dGPU stays on the bus and the nvidia driver binds. Runtime PM of the
dGPU is unaffected, as it is handled through PC01: with no driver
bound and power/control set to auto, RP05 reaches D3cold and the GPU
comes back to D0 on resume.

Link: https://lore.kernel.org/r/CADS-TgDQ1G8vrTQLJeQ3RTBVFTyMe0C+5p2=UBKS=EFCDFuaxw@mail.gmail.com/
Signed-off-by: Krittikun Wongnin <krittikunwongnin@gmail.com>
[ rjw: Subject and changelog tweaks ]
Link: https://patch.msgid.link/20261013074245.4327-1-krittikunwongnin@gmail.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-14 20:23:23 +02:00
Armin Wolf
4ea18e6042
ACPI: video: Remove CONFIG_X86 handling from nvidia_wmi_ec_supported()
The WMI-ACPI driver now supports architectures other than x86.
Remove the CONFIG_X86 handling from video-detect and the associated
drivers to simplify the resulting code.

Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Acked-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Link: https://patch.msgid.link/20260724025959.142826-3-W_Armin@gmx.de
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2026-10-13 12:02:41 +03:00
Chitransh Mandhaniya
5d76269ee7 ACPI: video: force native backlight on Dell OptiPlex AIO 7410 35W
The Dell OptiPlex AIO 7410 35W (board 01KP8D) declares DELL0501 in its
ACPI DSDT (status = 0x0F) even though no UART scalar board is physically
present. This causes acpi_video_get_backlight_type() to return
acpi_backlight_dell_uart, which makes i915 skip registering
intel_backlight. The dell-uart-backlight driver then times out talking
to the absent board and the probe fails, leaving the machine with zero
backlight control.

A BIOS update fixes this on some models (e.g. OptiPlex 7420, board
0914RT) by setting DELL0501 _STA to 0, but Dell has not shipped a
corrected BIOS for the 7410 even in the latest release (1.37.0,
2026-05-28).

Add a DMI quirk to force native backlight on this model so that i915
registers intel_backlight and brightness control works out of the box.

Tested on:
  - OptiPlex AIO 7410 35W (01KP8D, BIOS 1.37.0) -- confirmed
    acpi_backlight=native produces working intel_backlight (raw,
    max=96000), DMI quirk has the same effect.
  - OptiPlex AIO 7420 35W (0914RT, BIOS 1.27.0) -- DELL0501 absent in
    updated BIOS, intel_backlight works natively (no regression).

Signed-off-by: Chitransh Mandhaniya <Chitransh_Mandhaniya@dell.com>
Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
Link: https://patch.msgid.link/20261010124830.116750-1-chitranshmandhaniya@gmail.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-12 20:09:13 +02:00
Riwen Lu
f43cdd75b3 ACPI: PM: sleep: Drop unused sleep_no_lps0 define
The sleep_no_lps0 stub define in the !CONFIG_ACPI_SLEEP branch of
sleep.c has no users left in that file: the LPS0 code consuming it
was moved to drivers/acpi/x86/s2idle.c by commit fef9867119 ("ACPI:
PM: s2idle: Move x86-specific code to the x86 directory"), which has
its own static module parameter of the same name, so the define is
no longer used.

Drop it.

Signed-off-by: Riwen Lu <luriwen@kylinos.cn>
Link: https://patch.msgid.link/20261008025152.153073-1-luriwen@kylinos.cn
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-12 20:06:07 +02:00
Hakan Abay
23ec17231c ACPI: PM: Add unused power resource quirk for Casper Excalibur G900
On the Casper Excalibur G900, the NVIDIA discrete GPU and the second
NVMe device become inaccessible when unused ACPI power resources are
turned off during initialization.

The failure is similar to the THUNDEROBOT ZERO case addressed by
commit cd7ef20ba8 ("ACPI: PM: Add unused power resource quirk for THUNDEROBOT ZERO").

Without the quirk, the NVIDIA GPU and the second NVMe device are left
inaccessible in D3cold and attempts to transition them back to D0 fail.

Add a DMI quirk for the affected Casper Excalibur G900 with NLCC 001
mainboard to leave unused ACPI power resources on.

With the quirk applied, the second NVMe device remains accessible. The
NVIDIA GPU can enter D3cold while idle and subsequently return to D0
for accelerated rendering.

Link: https://bugs.kali.org/view.php?id=9891
Signed-off-by: Hakan Abay <hakan.abay84@gmail.com>
Link: https://patch.msgid.link/20261005174939.53873-1-hakan.abay84@gmail.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-12 20:00:43 +02:00
Vibhor Goel
029d11df81 ACPI: dock: Retry probing battery docks after hotplug
On a ThinkPad T480 booted with the removable battery absent, reinserting
that battery can leave BAT1 missing from /sys/class/power_supply even
after firmware sends an ACPI add notification.

The battery dock platform device already exists, but its driver did not
bind while the battery was absent. During hotplug, acpi_bus_scan()
updates the ACPI device and attempts to attach it on the ACPI bus.
acpi_create_platform_device() does not create another platform device
because the existing physical node is still associated with the ACPI
device. Consequently, the existing platform device remains unbound.

Retry probing the battery dock platform device after hotplug_dock_devices()
has refreshed the ACPI state. Restrict this to battery docks. If the
platform device is already bound, device_initial_probe() leaves that
binding in place.

Signed-off-by: Vibhor Goel <vibhor1102@gmail.com>
[ rjw: Add empty code line after a conditional ]
Link: https://patch.msgid.link/20261003164019.11195-1-vibhor1102@gmail.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-12 19:55:53 +02:00
Jiale Yao
691c33289b ACPI: PCI: pci_link: clear driver_data before free
acpi_pci_link_remove() frees the link object without clearing the ACPI
device's driver_data pointer. The ACPI device survives hot-removal and
can later be retrieved by acpi_fetch_acpi_dev(), leaving callers with a
dangling pointer.

Clear driver_data before freeing the link.

Fixes: db89b4f0db ("ACPI: catch calls of acpi_driver_data on pointer of wrong type")
Signed-off-by: Jiale Yao <yaojiale02@163.com>
[ rjw: Subject tweak ]
Link: https://patch.msgid.link/20260925155846.2381956-1-yaojiale02@163.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-12 17:33:52 +02:00
Breno Leitao
f341307a14 ACPI: APEI: accumulate the queued flag across error sections
ghes_do_proc() walks every error section of a CPER record, and
ghes_handle_arm_hw_error() walks every error-info entry of an ARM
processor section.  Both assign to "queued" instead of OR-ing into it,
so only the last iteration counts: a later section or entry that queues
no memory-failure work clears the flag an earlier one set.

Instead of reassigning the variable at every time, just do an `OR`, so,
if there was a single match, it will return "queued" as set.

The comment above the check says "If no memory failure
work is queued", which is the semantics this patch implements. I.e, only
SIGBUS if there are queue was not handled at all. If we want to SIGBUS
if any event was not handled/queued at all, we will need something more
sophisticated.

Fixes: 7f17b4a121 ("ACPI: APEI: Kick the memory_failure() queue for synchronous errors")
Fixes: ccb5ecdc2d ("ACPI: APEI: fix synchronous external aborts in user-mode")
Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Shuai Xue <xueshuai@linux.alibaba.com>
Link: https://patch.msgid.link/20260925-ghes-queued-accumulate-v1-1-df50553957d4@debian.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-12 17:22:50 +02:00
Kuppuswamy Sathyanarayanan
4fe37866b0 PCI/ACPI: Centralize pcie_ports_native checking
If the user booted with "pcie_ports=native", we take control of the PCIe
port services unconditionally, regardless of what _OSC says.

Centralize the testing of pcie_ports_native in acpi_pci_root_create(),
where we interpret the _OSC results, so other places only have to check
host_bridge->native_X and we don't have to sprinkle tests of
pcie_ports_native everywhere.

Rather than overriding the host_bridge->native_X flags after the fact, fold
"pcie_ports=native" into the _OSC control mask we evaluate, i.e., proceed
as though the platform had granted control of the port services.  That way
there is a single mechanism deciding each native_X flag, and we can report
exactly which features we are overriding _OSC for instead of just noting
that we are overriding something:

  acpi PNP0A08:00: _OSC: OS forcing control ("pcie_ports=native") of [PCIeHotplug PME AER DPC]

Forcing host_bridge->native_aer also restores DPC service binding under
"pcie_ports=native", which regressed in commit 97ca178c89 ("PCI/DPC:
Allow DPC on all Downstream Ports when OS controls AER").  That commit
replaced the AER service test in get_port_device_capability() with
host->native_aer, so DPC stayed off when host_bridge->native_aer was not
set.

This also extends "pcie_ports=native" to host_bridge->native_dpc, which had
no pcie_ports_native fallback before.  That effect is narrow.  native_dpc
is only consumed by pci_dpc_recovered(), where with CONFIG_PCIE_EDR=n it
previously gave up immediately and now lets pciehp wait for DPC recovery
before treating a Link Down as a hotplug event.

Fold "pcie_ports=dpc-native" into the control mask the same way, so
host_bridge->native_dpc reflects it as well, with the same narrow effect on
pci_dpc_recovered().  Move the pcie_ports_dpc_native declaration to
<linux/pci.h> so acpi_pci_root_create() can test it.

host_bridge->native_ltr is deliberately not forced.  "pcie_ports=" controls
PCIe port services and LTR is not one.  There is no PCIE_PORT_SERVICE_LTR,
and native_ltr is only used by pci_configure_ltr() to enable ASPM L1.2, so
forcing it would be an ASPM policy decision users did not ask for.

SHPC hotplug is left alone for a simpler reason: SHPC is a conventional PCI
feature rather than a PCIe one, so "pcie_ports=" has no bearing on it.

Fixes: 97ca178c89 ("PCI/DPC: Allow DPC on all Downstream Ports when OS controls AER")
Closes: https://lore.kernel.org/linux-pci/20260901064554.2178688-1-kanie@linux.alibaba.com/
Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Guixin Liu <kanie@linux.alibaba.com>
Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org> # ACPI core
Link: https://patch.msgid.link/20261002211828.1293177-4-sathyanarayanan.kuppuswamy@linux.intel.com
2026-10-06 12:16:17 -05:00
Kuppuswamy Sathyanarayanan
0a1fdf4546 PCI/ACPI: Tidy _OSC control bit checking
Add OSC_OWNER() helper to prettify checking the _OSC control bits to learn
whether the platform has granted us control of PCI features.  No functional
change intended.

Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Link: https://patch.msgid.link/20261002211828.1293177-3-sathyanarayanan.kuppuswamy@linux.intel.com
2026-10-06 12:16:15 -05:00
Radim Krčmář
aa89052e09 RISC-V: make use of variadic sbi_ecall
The new sbi_ecall doesn't have to list all 8 arguments anymore, so only
pass the actual numbers of arguments for each SBI function.

The remaining trailing 0 are intentional as they represent an argument.

SBI 0.1 shouldn't be using the sbi_ecall, because it's only for 0.2+,
but allow it by passing 0 is the reserved register.

Signed-off-by: Radim Krčmář <rkrcmar@ventanamicro.com>
Link: https://patch.msgid.link/20250619190315.2603194-3-rkrcmar@ventanamicro.com
[pjw@kernel.org: updated to apply; fixed rv64 DBCN WRITE/READ per Radim]
Cc: Radim Krčmář <rkrcmar@qti.qualcomm.com>
Signed-off-by: Paul Walmsley <pjw@kernel.org>
2026-10-05 19:02:54 -06:00
Andre Przywara
0ef7c5eb77 arm_mpam: add MPAM-Fb MSC firmware access support
The Arm MPAM Firmware-backed (Fb) Profile document[1] describes an
alternative way of accessing the "Memory System Components" (MSC) in an
MPAM enabled system.

Normally the MSCs are MMIO mapped, but in some implementations this
might not be possible (MSC located outside of the local socket, MSC
mapped secure-only) or desirable (direct MMIO access too slow or needs
to be mediated through a control processor). MPAM-fb standardises a
protocol to abstract MSC accesses, building on the SCMI protocol.

Add functions that do an MSC read or write access by redirecting the
request through a firmware interface. For now this done via an ACPI
PCC shared memory and mailbox combination.

Since the protocol used is only a small subset of the full SCMI spec,
and the SCMI protocol has no full ACPI support anyway, open-code the
(simple) SCMI message generation, for just the fields we need.

[1] https://developer.arm.com/documentation/den0144/latest

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
Tested-by: Ritwick Sharma <ritwick.sharma@arm.com> # on Arm AGI CPU
Reviewed-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Srivathsa L Rao <srivathsa.rao@oss.qualcomm.com>
Reviewed-by: Ben Horgan <ben.horgan@arm.com>
Signed-off-by: James Morse <james.morse@arm.com>
2026-10-02 18:22:55 +01:00
Rafael J. Wysocki
538076b454 ACPI: bus: Drop acpi_get_first_physical_node()
Fold acpi_get_first_physical_node() into acpi_primary_dev_companion()
that is its only remaining caller and drop its signature from the
header file.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Sudeep Holla <sudeep.holla@kernel.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/4537440.ejJDZkT8p0@rafael.j.wysocki
2026-10-01 20:30:39 +02:00
Dave Jiang
1a58c47fae PCI/AER: Map a raw AER Capability image field by field
struct aer_capability_regs is not the hardware layout: the embedded
struct pcie_tlp_log spans 60 bytes where the Header Log it stands in for
is 16, so a flat copy misplaces everything behind it.

extlog_print_pcie(), ghes_handle_aer() and cxl_rch_get_aer_info() work
around that by stopping at the Header Log, dropping everything past
offset 44. Flit mode is never decoded either: the Flit bit and Logged
TLP Size sit at offset 0x18, unread, so the Flit DWORDs at 0x38 are lost
and the log prints as non-Flit.

Add aer_cap_regs_unpack() to map the registers individually, taking the
TLP Log layout from the Flit bit as pcie_read_tlp_log() does. Clamp the
logged length: Logged TLP Size is 5 bits wide, so an untrusted value
reaches 31 where dw[] holds 14 and pcie_print_tlp_log() walks
header_len unbounded.

Take the image little-endian, as both sources are: CPER by definition,
PCIe registers on the wire. Read it with get_unaligned_le32(), since a
CPER section sits wherever firmware put it, and take the two source IDs
out of the Error Source Identification register by bit position rather
than byte offset. cxl_rch_get_aer_info() uses readl(), so it hands back
__le32.

Convert all three callers. cxl_rch_get_aer_info() now reads the whole
MMIO block, so size its ioremap by the hardware registers (96 bytes)
rather than by sizeof(struct aer_capability_regs) (100). Shrinking the
mapping is safe: the read it replaces stopped at 44 bytes.

Reported-by: sashiko-bot@kernel.org
Closes: https://sashiko.dev/#/patchset/20260904172337.1409775-1-dave.jiang@intel.com?part=5
Link: https://lore.kernel.org/linux-cxl/CAJZ5v0hDv11cPuztPZsaDd7uwD_49KznJy=tzuRO+dZc=CnAEQ@mail.gmail.com/
Assisted-by: LLM
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
Link: https://patch.msgid.link/20260911164705.841407-1-dave.jiang@intel.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-10-01 18:42:02 +02:00
Ilya Pavlukhin
e4f960371f ACPI: scan: Add CLSA0102 to the serial bus ignore list
The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0) describes the two CS35L41
amplifiers of its bass speakers as a single ACPI node, HID CLSA0102,
with two I2cSerialBusV2 resources (0x40 and 0x41), like CLSA0100 and
CLSA0101 on the Legion 7. Skip the default I2C enumeration so that
serial-multi-instantiate can create a client for each amplifier.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=215632
Assisted-by: Claude Opus 5
Signed-off-by: Ilya Pavlukhin <i.pavluhin@ya.ru>
Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20260920092808.17234-2-i.pavluhin@ya.ru
2026-09-29 16:42:36 +02:00
Hemanth Selam
c237f6b429 ACPI: NUMA: fix typo in log message
Correct the misspelling in a message the user sees, reported by
scripts/checkpatch.pl using the list in scripts/spelling.txt.

Only the message text changes, no code changes.

Signed-off-by: Hemanth Selam <hemanth.selam@gmail.com>
Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
Link: https://patch.msgid.link/20260907064725.10686-6-hemanth.selam@gmail.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-09-25 19:18:37 +02:00
Rafael J. Wysocki
57c59c0bda driver core/ACPI: Introduce companion_bus_register()
The ACPI bus type does not allow drivers to be matched to devices, so
the sysfs attributes related to drivers created for it are useless and
their existence is confusing.

Moreover, it is better to prevent drivers from being registered and
looked up for a bus like that.

To allow skipping the creation of those sysfs attributes and preventing
driver registration and lookup for the ACPI bus type, introduce a
"companion" bus type concept and add a special registration function
for registering "companion" bus types, companion_bus_register().

The "drivers" directory under the ACPI bus type is still needed because
there are versions of systemd that depend on it [1].

Link: https://lore.kernel.org/linux-acpi/SN6PR02MB41575266A4580339E186E5D9D4812@SN6PR02MB4157.namprd02.prod.outlook.com/ [1]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Tested-by: Michael Kelley <mhklinux@outlook.com>
Reviewed-by: Michael Kelley <mhklinux@outlook.com>
[ rjw: Add comment regarding drivers_kset creation in bus_register_internal() ]
Link: https://patch.msgid.link/12985239.O9o76ZdvQC@rafael.j.wysocki
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-09-25 18:41:48 +02:00
Sudeep Holla
c0232f00f7 ACPI: PCC: Cache OpRegion command timeout
The PCC OperationRegion handler computes the same command completion
wait timeout each time it sends a command. The timeout is derived from
static channel properties, so compute it once when the PCC channel is
set up and store the millisecond value in the mailbox client timeout
field.

Use the cached timeout when waiting for the OperationRegion command to
complete. This keeps the timeout calculation in one place and avoids
recomputing it for every command.

Reviewed-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
Link: https://patch.msgid.link/20260922144302.3847593-5-sudeep.holla@kernel.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-09-25 18:16:26 +02:00
Sudeep Holla
fa9c7ee692 ACPI: PCC: Free channel on OpRegion deactivation
ACPICA calls the address space setup callback with
ACPI_REGION_DEACTIVATE when a PCC OperationRegion is torn down.

The PCC setup callback currently allocates a fresh pcc_data and requests
the mailbox channel before looking at the function argument. If ACPICA
deactivates a region, this can leave the existing region context and
mailbox channel unreleased, and may also request a channel during
teardown.

Handle ACPI_REGION_DEACTIVATE before allocation. Free the PCC mailbox
channel, release the region context and clear the context pointer.

Fixes: 77e2a04745 ("ACPI: PCC: Implement OperationRegion handler for the PCC Type 3 subtype")
Reviewed-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
Link: https://patch.msgid.link/20260922144302.3847593-4-sudeep.holla@kernel.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-09-25 18:16:26 +02:00
Sudeep Holla
46c263c213 ACPI: PCC: Preserve shared memory signature in OpRegion handler
ACPI 6.3 introduced PCC OperationRegions. Section 5.5.2.4.7.3,
"Declaring message fields within a PCC OperationRegion", states that,
for all PCC subspace types, the PCC Operation Region pertains to the
region of PCC subspace that succeeds the PCC signature. Its length
therefore excludes the 4-byte signature.

The PCC address space handler currently copies the OperationRegion
buffer to and from the start of the shared memory. This overwrites or
exposes the platform-populated signature and omits the final four bytes
of the OperationRegion.

Offset the copies by the size of the signature and reject an
OperationRegion that does not fit in the remaining shared memory.

The example added by commit 77e2a04745 ("ACPI: PCC: Implement
OperationRegion handler for the PCC Type 3 subtype") incorrectly
included the signature as an OperationRegion field. A Type 3
OperationRegion containing a 100-byte communication area is declared
as follows:

OperationRegion (PFRM, PCC, 2, 0x70)
Field (PFRM, ByteAcc, NoLock, Preserve)
{
    FLGS,   32,
    LEN,    32,
    CMD,    32,
    DATA,   800
}

This contains three 32-bit fields followed by a 100-byte DATA field.
The fields correspond to the Type 3 shared memory layout in ACPI 6.3,
Table 14-372, after excluding its 4-byte signature.

Fixes: 77e2a04745 ("ACPI: PCC: Implement OperationRegion handler for the PCC Type 3 subtype")
Reviewed-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
Link: https://patch.msgid.link/20260922144302.3847593-3-sudeep.holla@kernel.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-09-25 18:16:25 +02:00
Sudeep Holla
888dab4b04 ACPICA: Fix PCC OperationRegion command offsets
ACPI 6.3, section 5.5.2.4.7.3, states that the PCC Operation
Region is associated with the region of shared memory that follows the
PCC signature.

The generic and extended PCC shared memory layouts include the 4-byte
signature at offset 0, so their raw shared memory COMMAND fields are at
offsets 4 and 12 respectively. Since AML field offsets for the PCC
OperationRegion are relative to the region after that signature, ACPICA
must look for those COMMAND fields at OperationRegion offsets 0 and 8.

Adjust the generic and master subspace command checks to use those
OperationRegion-relative offsets. Otherwise writes to the COMMAND field
can fail to invoke the PCC address space handler at the offset described
by the PCC OperationRegion definition.

Link: https://github.com/open-acpica/acpica/pull/1205
Fixes: aa6ec56b57 ("ACPICA: ACPI 6.3: add PCC operation region support for AML interpreter")
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
[ rjw: Fixed the Fixes: tag ]
Link: https://patch.msgid.link/20260922144302.3847593-2-sudeep.holla@kernel.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-09-25 18:08:21 +02:00
Breno Leitao
dbb3d99ee9 ACPICA: Fix memory leak in acpi_ds_create_field()
acpi_ds_create_field() allocates internal_pcc_buffer for operation
regions in the PCC address space.

The function runs once per field, so a second field on the
same region overwrites the pointer and orphans the previous buffer.

The matching ACPI_FREE() in acpi_ut_delete_internal_obj() only ever sees
the last one.

An arm64 platform whose SSDT declares regions with multiple fields each
leaks two buffers at boot, as detected by kmemleak:

  unreferenced object 0xffff000051e65400 (size 192):
    comm "swapper/0", pid 1, jiffies 4294668436
    backtrace (crc 0):
      __kmalloc_noprof
      acpi_ds_create_field
      acpi_ds_load2_end_op
      acpi_ds_exec_end_op
      acpi_ps_parse_loop
      acpi_ps_parse_aml
      acpi_ns_load_table
      acpi_load_tables
      acpi_init

Do not allocate a region if it was previously allocated before,
preserving the current design, but, not leaking memory.

Fixes: aa6ec56b57 ("ACPICA: ACPI 6.3: add PCC operation region support for AML interpreter")
Link: c71849d476
Signed-off-by: Breno Leitao <leitao@debian.org>
[ rjw: Subject tweak, fixed the Fixes: tag ]
Link: https://patch.msgid.link/20260925-acpica-pcc-field-leak-v2-1-e37008e715af@debian.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-09-25 18:06:39 +02:00