Commit graph

1,385,397 commits

Author SHA1 Message Date
Matthew Wilcox (Oracle)
71e5066738 f2fs: Pass a folio to recover_quota_data()
The only caller has a folio, so pass it in.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2025-07-22 15:55:26 +00:00
Matthew Wilcox (Oracle)
7872c71e64 f2fs: Pass a folio to recover_inode()
The only caller has a folio, so pass it in.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2025-07-22 15:55:23 +00:00
Matthew Wilcox (Oracle)
9050cabbe1 f2fs: Pass a folio to recover_dentry()
The only caller has a folio, so pass it in.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2025-07-22 15:55:19 +00:00
Rafael J. Wysocki
c4930d6dba Merge branch 'pm-sleep'
Merge updates related to system sleep for 6.17-rc1:

 - Extend the asynchronous suspend and resume of devices to handle
   suppliers like parents and consumers like children (Rafael Wysocki)

 - Make pm_runtime_force_resume() work for drivers that set the
   DPM_FLAG_SMART_SUSPEND flag and allow PCI drivers and drivers that
   collaborate with the general ACPI PM domain to set it (Rafael
   Wysocki)

 - Add kernel parameter to disable asynchronous suspend/resume of
   devices (Tudor Ambarus)

 - Drop redundant might_sleep() calls from some functions in the device
   suspend/resume core code (Zhongqiu Han)

 - Fix the handling of monitors connected right before waking up the
   system from sleep (tuhaowen)

 - Clean up MAINTAINERS entries for suspend and hibernation (Rafael
   Wysocki)

 - Fix error code path in the KEXEC_JUMP flow and drop a redundant
   pm_restore_gfp_mask() call from it (Rafael Wysocki)

 - Rearrange suspend/resume error handling in the core device suspend
   and resume code (Rafael Wysocki)

 - Fix up white space that does not follow coding style in the
   hibernation core code (Darshan Rathod)

* pm-sleep:
  PM: hibernate: Fix up white space that does not follow coding style
  PM: sleep: Rearrange suspend/resume error handling in the core
  kexec_core: Drop redundant pm_restore_gfp_mask() call
  kexec_core: Fix error code path in the KEXEC_JUMP flow
  PM: sleep: Clean up MAINTAINERS entries for suspend and hibernation
  PM: sleep: add kernel parameter to disable asynchronous suspend/resume
  PCI/PM: Set power.strict_midlayer in pci_pm_init()
  ACPI: PM: Set/clear power.strict_midlayer in prepare/complete
  PM: sleep: Add strict_midlayer flag to struct dev_pm_info
  PM: runtime: Introduce __rpm_get_driver_callback()
  PM: Check power.needs_force_resume in pm_runtime_force_suspend()
  PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit()
  PM: Make pm_runtime_force_resume() work with DPM_FLAG_SMART_SUSPEND
  PM: Move two sleep-related functions under CONFIG_PM_SLEEP
  PM: Use true/false as power.needs_force_resume values
  PM: sleep: Make async suspend handle suppliers like parents
  PM: sleep: Make async resume handle consumers like children
  PM: sleep: Drop superfluous might_sleep() calls
  PM: sleep: console: Fix the black screen issue
2025-07-22 17:49:34 +02:00
Rafael J. Wysocki
987c420c2e Merge branches 'pm-cpuidle', 'pm-qos', 'pm-devfreq' and 'pm-opp'
Merge a cpuidle update, a PM QoS update, devfreq updates, and an OPP
(operating performance points) update for 6.17-rc1:

 - Fix opencoded for_each_cpu() in idle_state_valid() in the DT cpuidle
   driver (Yury Norov)

 - Remove info about non-existing QoS interfaces from the PM QoS
   documentation (Ulf Hansson)

 - Use c_* types via kernel prelude in Rust for OPP (Abhinav Ananthu)

 - Add HiSilicon uncore frequency scaling driver to devfreq (Jie Zhan)

 - Allow devfreq drivers to add custom sysfs ABIs (Jie Zhan)

 - Simplify the sun8i-a33-mbus devfreq driver by using more devm
   functions (Uwe Kleine-König)

 - Fix an index typo in trans_stat() in devfreq (Chanwoo Choi)

 - Check devfreq governor before using governor->name (Lifeng Zheng)

 - Remove a redundant devfreq_get_freq_range() call from
   devfreq_add_device() (Lifeng Zheng)

 - Limit max_freq with scaling_min_freq in devfreq (Lifeng Zheng)

 - Replace sscanf() with kstrtoul() in set_freq_store() (Lifeng Zheng)

* pm-cpuidle:
  cpuidle: dt: fix opencoded for_each_cpu() in idle_state_valid()

* pm-qos:
  Documentation: power: Remove info about non-existing QoS interfaces

* pm-devfreq:
  PM / devfreq: Add HiSilicon uncore frequency scaling driver
  PM / devfreq: Allow devfreq driver to add custom sysfs ABIs
  PM / devfreq: sun8i-a33-mbus: Simplify by using more devm functions
  PM / devfreq: Fix a index typo in trans_stat
  PM / devfreq: Check governor before using governor->name
  PM / devfreq: Remove redundant devfreq_get_freq_range() calling in devfreq_add_device()
  PM / devfreq: Limit max_freq with scaling_min_freq
  PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()

* pm-opp:
  rust: opp: use c_* types via kernel prelude
2025-07-22 17:40:32 +02:00
Ada Couprie Diaz
d42e6c20de arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack()
`cpu_switch_to()` and `call_on_irq_stack()` manipulate SP to change
to different stacks along with the Shadow Call Stack if it is enabled.
Those two stack changes cannot be done atomically and both functions
can be interrupted by SErrors or Debug Exceptions which, though unlikely,
is very much broken : if interrupted, we can end up with mismatched stacks
and Shadow Call Stack leading to clobbered stacks.

In `cpu_switch_to()`, it can happen when SP_EL0 points to the new task,
but x18 stills points to the old task's SCS. When the interrupt handler
tries to save the task's SCS pointer, it will save the old task
SCS pointer (x18) into the new task struct (pointed to by SP_EL0),
clobbering it.

In `call_on_irq_stack()`, it can happen when switching from the task stack
to the IRQ stack and when switching back. In both cases, we can be
interrupted when the SCS pointer points to the IRQ SCS, but SP points to
the task stack. The nested interrupt handler pushes its return addresses
on the IRQ SCS. It then detects that SP points to the task stack,
calls `call_on_irq_stack()` and clobbers the task SCS pointer with
the IRQ SCS pointer, which it will also use !

This leads to tasks returning to addresses on the wrong SCS,
or even on the IRQ SCS, triggering kernel panics via CONFIG_VMAP_STACK
or FPAC if enabled.

This is possible on a default config, but unlikely.
However, when enabling CONFIG_ARM64_PSEUDO_NMI, DAIF is unmasked and
instead the GIC is responsible for filtering what interrupts the CPU
should receive based on priority.
Given the goal of emulating NMIs, pseudo-NMIs can be received by the CPU
even in `cpu_switch_to()` and `call_on_irq_stack()`, possibly *very*
frequently depending on the system configuration and workload, leading
to unpredictable kernel panics.

Completely mask DAIF in `cpu_switch_to()` and restore it when returning.
Do the same in `call_on_irq_stack()`, but restore and mask around
the branch.
Mask DAIF even if CONFIG_SHADOW_CALL_STACK is not enabled for consistency
of behaviour between all configurations.

Introduce and use an assembly macro for saving and masking DAIF,
as the existing one saves but only masks IF.

Cc: <stable@vger.kernel.org>
Signed-off-by: Ada Couprie Diaz <ada.coupriediaz@arm.com>
Reported-by: Cristian Prundeanu <cpru@amazon.com>
Fixes: 59b37fe52f ("arm64: Stash shadow stack pointer in the task struct on interrupt")
Tested-by: Cristian Prundeanu <cpru@amazon.com>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20250718142814.133329-1-ada.coupriediaz@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
2025-07-22 16:39:30 +01:00
Rafael J. Wysocki
caf4427d8a Merge branch 'pm-cpufreq'
Merge cpufreq updates for 6.17-rc1:

 - Fix two initialization ordering issues in the cpufreq core and a
   governor initialization error path in it, and clean it up (Lifeng
   Zheng)

 - Add Granite Rapids support in no-HWP mode to the intel_pstate cpufreq
   driver (Li RongQing)

 - Make intel_pstate always use HWP_DESIRED_PERF in passive mode (Rafael
   Wysocki)

 - Allow building the tegra124 cpufreq driver as a module (Aaron Kling)

 - Do minor cleanups for Rust cpufreq and cpumask APIs and fix MAINTAINERS
   entry for cpu.rs (Abhinav Ananthu, Ritvik Gupta, Lukas Bulwahn)

 - Clean up assorted cpufreq drivers (Arnd Bergmann, Dan Carpenter,
   Krzysztof Kozlowski, Sven Peter, Svyatoslav Ryhel, Lifeng Zheng)

 - Add the NEED_UPDATE_LIMITS flag to the CPPC cpufreq driver (Prashant
   Malani)

 - Fix minimum performance state label error in the amd-pstate driver
   documentation (Shouye Liu)

 - Add the CPUFREQ_GOV_STRICT_TARGET flag to the userspace cpufreq
   governor and explain HW coordination influence on it in the
   documentation (Shashank Balaji)

* pm-cpufreq: (27 commits)
  cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag
  Documentation: amd-pstate:fix minimum performance state label error
  drivers: cpufreq: add Tegra114 support
  rust: cpumask: Replace `MaybeUninit` and `mem::zeroed` with `Opaque` APIs
  cpufreq: Exit governor when failed to start old governor
  cpufreq: Move the check of cpufreq_driver->get into cpufreq_verify_current_freq()
  cpufreq: Init policy->rwsem before it may be possibly used
  cpufreq: Initialize cpufreq-based frequency-invariance later
  cpufreq: Remove duplicate check in __cpufreq_offline()
  cpufreq: Contain scaling_cur_freq.attr in cpufreq_attrs
  cpufreq: intel_pstate: Add Granite Rapids support in no-HWP mode
  cpufreq: intel_pstate: Always use HWP_DESIRED_PERF in passive mode
  cpufreq: tegra124: Allow building as a module
  cpufreq: dt: Add register helper
  cpufreq: Export disable_cpufreq()
  cpufreq: armada-8k: Fix off by one in armada_8k_cpufreq_free_table()
  cpufreq: armada-8k: make both cpu masks static
  rust: cpufreq: use c_ types from kernel prelude
  rust: cpufreq: Ensure C ABI compatibility in all unsafe
  cpufreq: brcmstb-avs: Fully open-code compatible for grepping
  ...
2025-07-22 17:24:59 +02:00
Tanmay Shah
1c20224123 remoteproc: xlnx: Fix kernel-doc warnings
Fix kernel-doc warnings generated by following command:

`scripts/kernel-doc -Werror -Wshort-desc -Wall \
drivers/remoteproc/xlnx_r5_remoteproc.c > /dev/null`

warning: missing initial short description on line:
 * struct mbox_info

...

Total 8 warnings fixed

Signed-off-by: Tanmay Shah <tanmay.shah@amd.com>
Link: https://lore.kernel.org/r/20250716213048.2316424-3-tanmay.shah@amd.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
2025-07-22 09:13:38 -06:00
Rafael J. Wysocki
ea34e67ae7 Merge branch 'acpi-misc'
Merge an update fixing typos in ACPI documentation and comments for
6.17-rc1 (Bjorn Helgaas).

* acpi-misc:
  ACPI: Fix typos
2025-07-22 17:12:57 +02:00
Thomas Huth
fc9ed2f658 um: Replace __ASSEMBLY__ with __ASSEMBLER__ in the usermode headers
While the GCC and Clang compilers already define __ASSEMBLER__
automatically when compiling assembly code, __ASSEMBLY__ is a
macro that only gets defined by the Makefiles in the kernel.
This can be very confusing when switching between userspace
and kernelspace coding, so let's standardize on the __ASSEMBLER__
macro that is provided by the compilers now.

This is a completely mechanical patch (done with a simple "sed -i"
statement).

Cc: Richard Weinberger <richard@nod.at>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-um@lists.infradead.org
Signed-off-by: Thomas Huth <thuth@redhat.com>
Link: https://patch.msgid.link/20250314071013.1575167-36-thuth@redhat.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2025-07-22 17:12:45 +02:00
Bjorn Helgaas
f9db1fc562 ACPI: Fix typos
Fix typos in documentation and comments.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20250722132653.GA2781885@bhelgaas
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2025-07-22 17:12:41 +02:00
Arnd Bergmann
73bcce043f MediaTek mach ARM32 updates
This adds support for the MediaTek MT6572 SoC, found in various
 old smartphones and tablets from various manufacturers.
 
 In particular, this adds a board_dt_compat entry for this SoC
 and its SMP bring up sequence to enable secondary cores.
 -----BEGIN PGP SIGNATURE-----
 
 iJ4EABYKAEYWIQQn3Xxr56ypAcSHzXSaNgTPrZeEeAUCaHDF+ygcYW5nZWxvZ2lv
 YWNjaGluby5kZWxyZWdub0Bjb2xsYWJvcmEuY29tAAoJEJo2BM+tl4R4uv0A+wSL
 qpWtHB7dD8/uGvXBrAsMN32DufgtEXLsfGFpLkABAQCdwG8rt/KXcLpfUtsla6MA
 xqdHYp9kgHaT5cNoa2uUDA==
 =QURi
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmh/pJ0ACgkQmmx57+YA
 GNn2MxAAwqJOTpTCi+HxIdYpvpZxDySnbi8Oan0O+fDrvI1AfUVoAuzenXdKbHlt
 VYR0+lEqeoxQMwn4im9obdMuuUwlHO4T52hhmxGvz6IpTXSRNz96D7QDU3UMhmSs
 evmZSk6iWLWd0v+tdMCWFi3MoEXECHuFZAzlEVIvt475m4KLWZ59x+Y6oHLXroo4
 8/wxXWUX0aOLB98N0CecmXasi/Mk1Ew4hD7JZ/xqA1dgIG49pqaupWKYzCMY/Ij2
 WcF2JPma+UG5TBC+K7XvG4Xy63yr9xCxklTLwaP4DD/KsLHNgh9hBNJszH+wdo8q
 hRiLuiCOP2EuHhRpADulQmiXyutKo9KGQMTlHAQr1CKSnJVFPFqYzZ1514eJpuLs
 paQKjxfwy/pcnnIR836ptp4qELNTBSKxjZPbCQnJ+GeUxT0lf3e+RlHXs9ra567z
 Ro0IKGKVxdXa+cfvLYMfMoxBIay5Y4fKISDHvCDPKZ6i4P6/XYLM+3aeXM90bVy+
 m3Gwudffom/CDYAYUWCRYLi0YZ88hLfYwNKB3EKgpYyk7CYbQxg+tRCvY1iFrsbW
 bDvfG30oB82pHbUlMd6dqkKoOgzp03Rld++zqS2tGE7zPhEz0RWYdl44P/LnYIM6
 MxsYLvmKumN4BqCY42qC92LVllfLkfuSTAlRPlryKRLIVV6VQlY=
 =axmc
 -----END PGP SIGNATURE-----

Merge tag 'mtk-arm32-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/arm

MediaTek mach ARM32 updates

This adds support for the MediaTek MT6572 SoC, found in various
old smartphones and tablets from various manufacturers.

In particular, this adds a board_dt_compat entry for this SoC
and its SMP bring up sequence to enable secondary cores.

* tag 'mtk-arm32-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux:
  ARM: mediatek: add MT6572 smp bring up code
  ARM: mediatek: add board_dt_compat entry for the MT6572 SoC

Link: https://lore.kernel.org/r/20250711083656.33538-1-angelogioacchino.delregno@collabora.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-07-22 16:47:57 +02:00
Bartosz Golaszewski
5d3aeecc26 ARM: sa110/gpio: convert set_multiple() to returning an integer
The conversion to using the new GPIO line setter callbacks missed the
set_multiple() in this file. Convert it to using the new callback.

Fixes: 9c3782118a ("ARM: sa1100/gpio: use new line value setter callbacks")
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-07-22 16:47:26 +02:00
Douglas Anderson
15a7ca747d drm/bridge: ti-sn65dsi86: Remove extra semicolon in ti_sn_bridge_probe()
As reported by the kernel test robot, a recent patch introduced an
unnecessary semicolon. Remove it.

Fixes: 55e8ff8420 ("drm/bridge: ti-sn65dsi86: Add HPD for DisplayPort connector type")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202506301704.0SBj6ply-lkp@intel.com/
Reviewed-by: Devarsh Thakkar <devarsht@ti.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20250714130631.1.I1cfae3222e344a3b3c770d079ee6b6f7f3b5d636@changeid
2025-07-22 07:46:34 -07:00
Antheas Kapenekakis
1798561bef
platform/x86: oxpec: Add support for OneXPlayer X1 Mini Pro (Strix Point)
The OneXPlayer X1 Mini Pro (which is the Strix Point variant of the Mini)
uses the same registers as the X1 Mini, so re-use the quirk.

Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
Link: https://lore.kernel.org/r/20250718163305.159232-2-lkml@antheas.dev
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:45:37 +03:00
Antheas Kapenekakis
232b41d3c2
platform/x86: oxpec: Fix turbo register for G1 AMD
Turns out that the AMD variant of the G1 uses different EC registers
than the Intel variant. Differentiate them and apply the correct ones
to the AMD variant.

Fixes: b369395c89 ("platform/x86: oxpec: Add support for the OneXPlayer G1")
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
Link: https://lore.kernel.org/r/20250718163305.159232-1-lkml@antheas.dev
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:45:34 +03:00
Slark Xiao
ad1244e1ce USB: serial: option: add Foxconn T99W709
T99W709 is designed based on MTK T300(5G redcap) chip. There are
7 serial ports to be enumerated: AP_LOG, GNSS, AP_META, AT,
MD_META, NPT, DBG. RSVD(5) for ADB port.

test evidence as below:
T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  7 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0489 ProdID=e15f Rev=00.01
S:  Manufacturer=MediaTek Inc.
S:  Product=USB DATA CARD
S:  SerialNumber=355511220000399
C:  #Ifs=10 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:  If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
I:  If#=0x6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x9 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

Signed-off-by: Slark Xiao <slark_xiao@163.com>
Cc: stable@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
2025-07-22 16:42:22 +02:00
Michael J. Ruhl
2c402a801c
platform/x86/intel/pmt: support BMG crashlog
The Battlemage GPU has the type 1 version 2 crashlog feature.

Update the crashlog driver to support this crashlog version.

Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-14-michael.j.ruhl@intel.com
[ij: make crashlog_type1_ver2 static]
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:39:13 +03:00
Michael J. Ruhl
5623fa6859
platform/x86/intel/pmt: use a version struct
In preparation for supporting multiple crashlog versions, use a struct
to keep bit offset info for the status and control bits.

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-13-michael.j.ruhl@intel.com
[ij: move crashlog_type1_ver0 to its final place & add consts to crashlog_info]
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:39:10 +03:00
Michael J. Ruhl
66df9fa783
platform/x86/intel/pmt: refactor base parameter
To support an upcoming crashlog change, use the parent of
struct intel_pmt_entry, struct crashlog_entry, as a main parameter.

Using struct crashlog_entry will allow for a more flexible interface
to control the crashlog feature.

- Refactor to use struct crashlog_entry in place of
  struct intel_pmt_entry
- Rename variables from "entry" to "crashlog"

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-12-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:39:08 +03:00
Michael J. Ruhl
f57b32cb4a
platform/x86/intel/pmt: add register access helpers
The control register is used in a read/modify/write pattern.
The status register is used in a read/check bit pattern.

Add helpers to eliminate common code.

Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-11-michael.j.ruhl@intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:39:06 +03:00
Michael J. Ruhl
8ab4f88d46
platform/x86/intel/pmt: decouple sysfs and namespace
The PMT namespace includes the crashlog sysfs attribute information.
Other crashlog version/types may need different sysfs attributes.
Coupling the attributes with the namespace blocks this usage.

Decouple sysfs attributes from the name space and add them to the
specific entry.

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-10-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:39:03 +03:00
Michael J. Ruhl
5c7bfa1088
platform/x86/intel/pmt: correct types
A couple of local variables do not match the return types of some of
the functions.

Update the mismatched types to match.

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-9-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:39:01 +03:00
Michael J. Ruhl
147c18d8ef
platform/x86/intel/pmt: re-order trigger logic
Setting the clear bit or checking the complete bit before checking to
see if crashlog is disabled seems incorrect.

Check disable before accessing any other bits.

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-8-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:58 +03:00
Michael J. Ruhl
4f8fa22d10
platform/x86/intel/pmt: use guard(mutex)
Update the mutex paths to use the new guard() mechanism.

With the removal of goto, do some minor cleanup of the current logic
path.

Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-7-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:56 +03:00
Michael J. Ruhl
75a496aa05
platform/x86/intel/pmt: mutex clean up
The header file for mutex usage and mutex_destroy() cleanup code is
absent from the crashlog.c module.

Add the header file and mutex_destroy().

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-6-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:54 +03:00
Michael J. Ruhl
ba22fe0cff
platform/x86/intel/pmt: white space cleanup
Noticed two white space issues; cleaned them.

Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-5-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:51 +03:00
Michael J. Ruhl
5b27388171
drm/xe: Correct BMG VSEC header sizing
The intel_vsec_header information for the crashlog feature is
incorrect.

Update the VSEC header with correct sizing and count.

Since the crashlog entries are "merged" (num_entries = 2), the
separate capabilities entries must be merged as well.

Fixes: 0c45e76fcc ("drm/xe/vsec: Support BMG devices")
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-4-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:49 +03:00
Michael J. Ruhl
0ba9e9cf76
drm/xe: Correct the rev value for the DVSEC entries
By definition, the Designated Vendor Specific Extended Capability
(DVSEC) revision should be 1.

Add the rev value to be correct.

Fixes: 0c45e76fcc ("drm/xe/vsec: Support BMG devices")
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-3-michael.j.ruhl@intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:47 +03:00
Michael J. Ruhl
54d5cd4719
platform/x86/intel/pmt: fix a crashlog NULL pointer access
Usage of the intel_pmt_read() for binary sysfs, requires a pcidev. The
current use of the endpoint value is only valid for telemetry endpoint
usage.

Without the ep, the crashlog usage causes the following NULL pointer
exception:

BUG: kernel NULL pointer dereference, address: 0000000000000000
Oops: Oops: 0000 [#1] SMP NOPTI
RIP: 0010:intel_pmt_read+0x3b/0x70 [pmt_class]
Code:
Call Trace:
 <TASK>
 ? sysfs_kf_bin_read+0xc0/0xe0
 kernfs_fop_read_iter+0xac/0x1a0
 vfs_read+0x26d/0x350
 ksys_read+0x6b/0xe0
 __x64_sys_read+0x1d/0x30
 x64_sys_call+0x1bc8/0x1d70
 do_syscall_64+0x6d/0x110

Augment struct intel_pmt_entry with a pointer to the pcidev to avoid
the NULL pointer exception.

Fixes: 045a513040 ("platform/x86/intel/pmt: Use PMT callbacks")
Cc: stable@vger.kernel.org
Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-2-michael.j.ruhl@intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:44 +03:00
Jelle van der Waa
de2884c6cd
platform/x86: samsung-laptop: Expose charge_types
Support the newly introduced charge_types sysfs attribute as a
replacement for the custom `battery_life_extender` attribute. Setting
charge_types to `Long Life` enables battery life extending mode.

This change is similar to the recent Ideapad patch adding support for
charge_types.

Signed-off-by: Jelle van der Waa <jvanderwaa@redhat.com>
Link: https://lore.kernel.org/r/20250702182844.107706-1-jvanderwaa@redhat.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-07-22 17:38:39 +03:00
Charles Keepax
246570cd35
ASoC: SDCA: Fix implicit cast from le16
As the HID wDescriptorLength is explicitly marked as little endian it
should be converted to host endian before being used.

Fixes: ac558015df ("ASoC: SDCA: add a HID device for HIDE entity")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202507221024.M18hWD6q-lkp@intel.com/
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://patch.msgid.link/20250722114705.2816910-1-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2025-07-22 15:34:08 +01:00
Tanmay Shah
699cdd7062 remoteproc: xlnx: Disable unsupported features
AMD-Xilinx platform driver does not support iommu or recovery mechanism
yet. Disable both features in platform driver.

Signed-off-by: Tanmay Shah <tanmay.shah@amd.com>
Link: https://lore.kernel.org/r/20250716213048.2316424-2-tanmay.shah@amd.com
Fixes: 6b291e8020 ("drivers: remoteproc: Add Xilinx r5 remoteproc driver")
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
2025-07-22 08:26:18 -06:00
Rafael J. Wysocki
a78dfdb6e8 Merge branches 'acpi-debug' and 'acpi-docs'
Merge an update related to ACPI debugging and ACPI documentation updates
for 6.17-rc1:

 - Enable CONFIG_ACPI_DEBUG by default to make it easier to get ACPI
   debug messages from OEM platforms (Mario Limonciello)

 - Fix parent device references in ASL examples in the ACPI
   documentation and fix spelling and style in the gpio-properties
   documentation in firmware-guide (Andy Shevchenko)

* acpi-debug:
  ACPI: Enable CONFIG_ACPI_DEBUG by default

* acpi-docs:
  Documentation: ACPI: Fix parent device references
  Documentation: firmware-guide: gpio-properties: Spelling and style fixes
2025-07-22 16:02:02 +02:00
Rafael J. Wysocki
c58364ac07 Merge branches 'acpi-soc', 'acpi-fan', 'acpi-dptf', 'acpi-pfrut', 'acpi-prm' and 'acpi-tad'
Merge updates of assorted ACPI drivers for 6.17-rc1:

 - Remove an AudioDSP-related ID from the ACPI LPSS driver (Andy
   Shevchenko)

 - Replace sprintf()/scnprintf() with sysfs_emit() in the ACPI fan
   driver and update a debug message in fan_get_state_acpi4() (Eslam
   Khafagy, Abdelrahman Fekry, Sumeet Pawnikar)

 - Add Intel Wildcat Lake support to the ACPI DPTF driver (Srinivas
   Pandruvada)

 - Add more debug information regarding failing firmware updates to the
   ACPI pfr_update driver (Chen Yu)

 - Reduce the verbosity of the ACPI PRM (platform runtime mechanism)
   driver to avoid user confusion (Zhu Qiyu)

 - Replace sprintf() with sysfs_emit() in the ACPI TAD (time and alarm
   device) driver (Sukrut Heroorkar)

* acpi-soc:
  ACPI: LPSS: Remove AudioDSP related ID

* acpi-fan:
  ACPI: fan: Update debug message in fan_get_state_acpi4()
  ACPI: fan: Replace sprintf() with sysfs_emit()
  ACPI: fan: Replace sprintf()/scnprintf() with sysfs_emit() in show() functions

* acpi-dptf:
  ACPI: DPTF: Support for Wildcat Lake

* acpi-pfrut:
  ACPI: pfr_update: Add more debug information when firmware update failed

* acpi-prm:
  ACPI: PRM: Reduce unnecessary printing to avoid user confusion

* acpi-tad:
  ACPI: TAD: Replace sprintf() with sysfs_emit()
2025-07-22 15:59:47 +02:00
Trond Myklebust
ef93a685e0 NFS: Fix filehandle bounds checking in nfs_fh_to_dentry()
The function needs to check the minimal filehandle length before it can
access the embedded filehandle.

Reported-by: zhangjian <zhangjian496@huawei.com>
Fixes: 20fa190272 ("nfs: add export operations")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
2025-07-22 09:50:56 -04:00
Rafael J. Wysocki
6984f941f4 Merge branch 'acpi-apei'
Merge ACPI APEI updates for 6.17-rc1:

 - Fix iomem-related sparse warnings in the APEI EINJ driver (Zaid
   Alali, Tony Luck)

 - Add EINJv2 error injection support to the APEI EINJ driver (Zaid
   Alali)

 - Fix memory corruption in error_type_set() in the APEI EINJ driver (Dan
   Carpenter)

 - Fix less than zero comparison on a size_t variable in the APEI EINJ
   driver (Colin Ian King)

 - Fix check and iounmap of an uninitialized pointer in the APEI EINJ
   driver (Colin Ian King)

 - Add TAINT_MACHINE_CHECK to the GHES panic path in APEI to improve
   diagnostics and post-mortem analysis (Breno Leitao)

 - Update APEI reviewer records in MAINTAINERS (Rafael Wysocki)

 - Fix the handling of synchronous uncorrected memory errors in APEI
   (Shuai Xue)

* acpi-apei:
  ACPI: APEI: handle synchronous exceptions in task work
  ACPI: APEI: send SIGBUS to current task if synchronous memory error not recovered
  ACPI: APEI: MAINTAINERS: Update reviewers for APEI
  ACPI: APEI: EINJ: Fix trigger actions
  ACPI: APEI: GHES: add TAINT_MACHINE_CHECK on GHES panic path
  ACPI: APEI: EINJ: Fix check and iounmap of uninitialized pointer p
  ACPI: APEI: EINJ: Fix less than zero comparison on a size_t variable
  ACPI: APEI: EINJ: prevent memory corruption in error_type_set()
  ACPI: APEI: EINJ: Update the documentation for EINJv2 support
  ACPI: APEI: EINJ: Enable EINJv2 error injections
  ACPI: APEI: EINJ: Create debugfs files to enter device id and syndrome
  ACPI: APEI: EINJ: Discover EINJv2 parameters
  ACPI: APEI: EINJ: Add einjv2 extension struct
  ACPI: APEI: EINJ: Enable the discovery of EINJv2 capabilities
  ACPI: APEI: EINJ: Fix kernel test sparse warnings
2025-07-22 15:50:20 +02:00
Rafael J. Wysocki
114048179f Merge branches 'acpica', 'acpi-proc', 'acpi-processor' and 'acpi-pm'
Merge an ACPICA update, ACPI proc interface updates, ACPI processor
driver updates, and ACPI power management updates for 6.17-rc1:

 - Printing the address in acpi_ex_trace_point() is either incorrect
   during early kernel boot or not really useful later when pathnames
   resolve properly, so stop doing it (Mario Limonciello)

 - Address several minor issues in the legacy ACPI proc interface (Andy
   Shevchenko)

 - Fix acpi_object union initialization in the ACPI processor driver to
   avoid using memory that contains leftover data (Sebastian Ott).

 - Make the ACPI processor perflib driver take the initial _PPC limit
   into account as appropriate (Jiayi Li).

 - Fix message formatting in the ACPI processor throttling driver (Colin
   Ian King).

 - Clean up general ACPI PM domain handling (Rafael Wysocki)

* acpica:
  ACPICA: Decrease `AcpiExTracePoint` verbosity

* acpi-proc:
  ACPI: proc: Prefer to use octal permission
  ACPI: proc: Use str_enabled_disabled() helper
  ACPI: proc: Remove unused header
  ACPI: proc: Use correct format specifier and drop casting
  ACPI: wakeup: Drop unneeded casting for sleep_state

* acpi-processor:
  ACPI: processor: throttling: Remove space before newline
  ACPI: processor: perflib: Fix initial _PPC limit application
  ACPI: processor: fix acpi_object initialization

* acpi-pm:
  ACPI: PM: Set .detach in acpi_general_pm_domain definition
2025-07-22 15:48:55 +02:00
Paolo Abeni
391daec35b Merge branch 'octeontx2-af-rpm-misc-feaures'
Hariprasad Kelam says:

====================
Octeontx2-af: RPM: misc feaures

This series patches adds different features like debugfs
support for shared firmware structure and DMAC filter
related enhancements.

Patch1: Saves interface MAC address configured from DMAC filters.

Patch2: Disables the stale DMAC filters in driver initialization

Patch3: Configure dma mask for CGX/RPM drivers

Patch4: Debugfs support for shared firmware data.
====================

Link: https://patch.msgid.link/20250720163638.1560323-1-hkelam@marvell.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-07-22 15:36:41 +02:00
Hariprasad Kelam
49f02e6877 Octeontx2-af: Debugfs support for firmware data
MAC address, Link modes (supported and advertised) and eeprom data
for the Netdev interface are read from the shared firmware data.
This patch adds debugfs support for the same.

Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Link: https://patch.msgid.link/20250720163638.1560323-5-hkelam@marvell.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-07-22 15:36:39 +02:00
Hariprasad Kelam
f5295b5a58 Octeontx2-af: RPM: Update DMA mask
CGX/RPM driver supports 48 bits of DMA addressing. Update
the DMA mask accordingly.

Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250720163638.1560323-4-hkelam@marvell.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-07-22 15:36:39 +02:00
Subbaraya Sundeep
83d17aba92 Octeontx2-af: Disable stale DMAC filters
During driver initialization disable stale DMAC filters
in CGX/RPM set by firmware.

Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250720163638.1560323-3-hkelam@marvell.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-07-22 15:36:39 +02:00
Hariprasad Kelam
dd47fc6769 Octeontx2-af: Add programmed macaddr to RVU pfvf
Octeontx2/CN10k MAC block supports DMAC filters. DMAC filters
can be installed on the interface through ethtool.

When a user installs a DMAC filter, the interface's MAC address
is implicitly added to the filter list. To ensure consistency,
this MAC address must be kept in sync with the pfvf->mac_addr field,
which is used to install MAC-based NPC rules.

This patch updates the pfvf->mac_addr field with the programmed MAC
address and also enables VF interfaces to install DMAC filters.

Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250720163638.1560323-2-hkelam@marvell.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-07-22 15:36:39 +02:00
Kathiravan Thirumoorthy
4a3556b81b phy: qcom: phy-qcom-m31: Update IPQ5332 M31 USB phy initialization sequence
The current configuration used for the IPQ5332 M31 USB PHY fails the
Near End High Speed Signal Quality compliance test. To resolve this,
update the initialization sequence as specified in the Hardware Design
Document.

Fixes: 08e49af507 ("phy: qcom: Introduce M31 USB PHY driver")
Cc: stable@kernel.org
Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250630-ipq5332_hsphy_complaince-v2-1-63621439ebdb@oss.qualcomm.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2025-07-22 19:00:06 +05:30
Rob Herring (Arm)
4c3d05da59 dt-bindings: phy: Convert brcm,sr-usb-combo-phy to DT schema
Convert the Broadcom Stingray USB PHY binding to DT schema format. It's
a straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://lore.kernel.org/r/20250627220126.214577-1-robh@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2025-07-22 18:58:31 +05:30
Rob Herring (Arm)
99dd7faeb7 dt-bindings: phy: Convert ti,da830-usb-phy to DT schema
Convert the TI DA830 USB PHY binding to DT schema format. Add "clocks"
and "clock-names" which are already in use. As they are always present,
make them required as well.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: David Lechner <david@lechnology.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20250627220107.214162-1-robh@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2025-07-22 18:58:02 +05:30
Krzysztof Kozlowski
a91ec5efde dt-bindings: phy: marvell,mmp2-usb-phy: Drop status from the example
Examples should not have the 'status' property and 'okay' is anyway by
default.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250701063636.23872-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2025-07-22 18:49:00 +05:30
Liu Ying
429efeb190 dt-bindings: phy: mixel, mipi-dsi-phy: Allow assigned-clock* properties
assigned-clock* properties can be used by default now, so allow them.

Signed-off-by: Liu Ying <victor.liu@nxp.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250707-dt-bindings-phy-mixel-mipi-dsi-phy-allow-assign-clock-properties-v1-1-5e34b257e1ef@nxp.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2025-07-22 18:48:31 +05:30
Kaustabh Chakraborty
f31ac39c03 phy: exynos-mipi-video: correct cam0 sysreg property name for exynos7870
Fix the cam0 sysreg property name (samsung,cam0-sysreg), which has been
erroneously declared as samsung,cam-sysreg. This follows the same name
used in Exynos5433 PHY.

Fixes: 543f5e3142 ("phy: exynos-mipi-video: introduce support for exynos7870")
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
Link: https://lore.kernel.org/r/20250710-exynos7870-mipi-phy-fix-v2-1-5cf50d69c9d7@disroot.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2025-07-22 18:44:51 +05:30
Mingming Cao
2094200b5f ibmveth: Add multi buffers rx replenishment hcall support
This patch enables batched RX buffer replenishment in ibmveth by
using the new firmware-supported h_add_logical_lan_buffers() hcall
 to submit up to 8 RX buffers in a single call, instead of repeatedly
calling the single-buffer h_add_logical_lan_buffer() hcall.

During the probe, with the patch, the driver queries ILLAN attributes
to detect IBMVETH_ILLAN_RX_MULTI_BUFF_SUPPORT bit. If the attribute is
present, rx_buffers_per_hcall is set to 8, enabling batched replenishment.
Otherwise, it defaults to 1, preserving the original upstream behavior
 with no change in code flow for unsupported systems.

The core rx replenish logic remains the same. But when batching
is enabled, the driver aggregates up to 8 fully prepared descriptors
into a single h_add_logical_lan_buffers() hypercall. If any allocation
or DMA mapping fails while preparing a batch, only the successfully
prepared buffers are submitted, and the remaining are deferred for
the next replenish cycle.

If at runtime the firmware stops accepting the batched hcall—e,g,
after a Live Partition Migration (LPM) to a host that does not
support h_add_logical_lan_buffers(), the hypercall returns H_FUNCTION.
In that case, the driver transparently disables batching, resets
rx_buffers_per_hcall to 1, and falls back to the single-buffer hcall
in next future replenishments to take care of these and future buffers.

Test were done on systems with firmware that both supports and
does not support the new h_add_logical_lan_buffers hcall.

On supported firmware, this reduces hypercall overhead significantly
over multiple buffers. SAR measurements showed about a 15% improvement
in packet processing rate under moderate RX load, with heavier traffic
seeing gains more than 30%

Signed-off-by: Mingming Cao <mmc@linux.ibm.com>
Reviewed-by: Brian King <bjking1@linux.ibm.com>
Reviewed-by: Haren Myneni <haren@linux.ibm.com>
Reviewed-by: Dave Marquardt <davemarq@linux.ibm.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250719091356.57252-1-mmc@linux.ibm.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-07-22 15:08:23 +02:00