Commit graph

1,447,411 commits

Author SHA1 Message Date
谢致邦 (XIE Zhibang)
30fcf28d83 net: stmmac: dwmac-rk: Fix typo in comment
Correct the typo "rk3520" to "rk3528" in comment.

Signed-off-by: 谢致邦 (XIE Zhibang) <Yeking@Red54.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/tencent_833D2AD6577F21CF38ED1C3FE8814EB4B308@qq.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:44:39 -07:00
Jakub Kicinski
e531a08106 Merge branch 'convert-config_ipv6-to-built-in-and-remove-stubs'
Fernando Fernandez Mancera says:

====================
Convert CONFIG_IPV6 to built-in and remove stubs

Historically, the Linux kernel has supported compiling the IPv6 stack as
a loadable module. While this made sense in the early days of IPv6
adoption, modern deployments and distributions overwhelmingly either
build IPv6 directly into the kernel (CONFIG_IPV6=y) or disable it
entirely (CONFIG_IPV6=n). The modular IPv6 use-case offers image size
and memory savings for specific setups, this benefit is outweighed by
the architectural burden it imposes on the subsystems on implementation
and maintenance.

In addition, most of the distributions are already using CONFIG_IPV6=y
by default [1], including openWRT [2] and Android gki_defconfig [3]. So
this won't have an impact on them. The most impacted architecture would
probably be arm64 as their default config is still using CONFIG_IPV6=m.

To allow core networking, BPF, Netfilter, and various device drivers to
safely interact with a potentially unloaded IPv6 module, the kernel
relies on indirect call structures like ipv6_stub, ipv6_bpf_stub, and
nf_ipv6_ops, along with dynamic RCU registrations for things like ICMPv6
senders.

This patch series addresses this by changing CONFIG_IPV6 from a tristate
to a boolean, enforcing that IPv6 is either built-in or disabled. This
allows us to completely rip out the stub infrastructures and safely
replace them with direct function calls.

The bloat-o-meter report the following results for m68k, arm64, x86_64
defconfig.

m68k (keep on mind that CONFIG_IPV6 is disabled now):
add/remove: 65/938 grow/shrink: 36/254 up/down: 3022/-49692 (-46670)

arm64:
add/remove: 1251/265 grow/shrink: 81/46 up/down: 448740/-71519 (377221)

x86_64:
add/remove: 62/98 grow/shrink: 10/39 up/down: 2497/-4357 (-1860)

Considering that each new kernel release increases sizes by 30-40KiB on
average, this size increase isn't a huge jump for the distributions that
are still using CONFIG_IPV6=m. For the ones that are already using
CONFIG_IPV6=y, the size is reduced actually.

All the patches has been independently build tested. With allmodconfig
and allmodconfig + CONFIG_IPV6=n. In addition, net selftest has been run
against them on virtme-ng.

The series applied as a whole as been tested with allyesconfig and also
allyesconfig + CONFIG_IPV6=n but not all patches has been independently
tested this way.

[1] https://github.com/nyrahul/linux-kernel-configs

[2] 832e7b8172

[3] https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/arch/arm64/configs/gki_defconfig
====================

Link: https://patch.msgid.link/20260325120928.15848-1-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:29 -07:00
Fernando Fernandez Mancera
b2c981e7c4 netfilter: remove nf_ipv6_ops and use direct function calls
As IPv6 is built-in only, nf_ipv6_ops can be removed completely as it is
not longer necessary.

Convert all nf_ipv6_ops usage to direct function calls instead. In
addition, remove the ipv6_netfilter_init/fini() functions as they are
not necessary any longer.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Link: https://patch.msgid.link/20260325120928.15848-12-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:24 -07:00
Fernando Fernandez Mancera
964870b4b9 ipv6: remove ipv6_stub infrastructure completely
As IPv6 is built-in only and there are no more users of ipv6_stub, the
ipv6_stub is now entirely obsolete.

Remove all the code related to the definition, initialization and usage.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Link: https://patch.msgid.link/20260325120928.15848-11-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:24 -07:00
Fernando Fernandez Mancera
ad84b1eefe bpf: remove ipv6_bpf_stub completely and use direct function calls
As IPv6 is built-in only, the ipv6_bpf_stub can be removed completely.

Convert all ipv6_bpf_stub usage to direct function calls instead. The
fallback functions introduced previously will prevent linkage errors
when CONFIG_IPV6 is disabled.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://patch.msgid.link/20260325120928.15848-10-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:24 -07:00
Fernando Fernandez Mancera
d76f6b170a net: convert remaining ipv6_stub users to direct function calls
As IPv6 is built-in only, the ipv6_stub infrastructure is no longer
necessary.

Convert remaining ipv6_stub users to make direct function calls. The
fallback functions introduced previously will prevent linkage errors
when CONFIG_IPV6 is disabled.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Link: https://patch.msgid.link/20260325120928.15848-9-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:23 -07:00
Fernando Fernandez Mancera
d98adfbdd5 ipv4: drop ipv6_stub usage and use direct function calls
As IPv6 is built-in only, the ipv6_stub infrastructure is no longer
necessary.

The IPv4 stack interacts with IPv6 mainly to support IPv4 routes with
IPv6 next-hops (RFC 8950). Convert all these cross-family calls from
ipv6_stub to direct function calls. The fallback functions introduced
previously will prevent linkage errors when CONFIG_IPV6 is disabled.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Link: https://patch.msgid.link/20260325120928.15848-8-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:23 -07:00
Fernando Fernandez Mancera
29ae61b2fe drivers: net: drop ipv6_stub usage and use direct function calls
As IPv6 is built-in only, the ipv6_stub infrastructure is no longer
necessary.

Convert all drivers currently utilizing ipv6_stub to make direct
function calls. The fallback functions introduced previously will
prevent linkage errors when CONFIG_IPV6 is disabled.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Antonio Quartulli <antonio@openvpn.net>
Reviewed-by: Edward Cree <ecree.xilinx@gmail.com>
Link: https://patch.msgid.link/20260325120928.15848-7-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:23 -07:00
Fernando Fernandez Mancera
4b70b20215 ipv6: prepare headers for ipv6_stub removal
In preparation for dropping ipv6_stub and converting its users to direct
function calls, introduce static inline dummy functions and fallback
macros in the IPv6 networking headers. In addition, introduce checks on
fib6_nh_init(), ip6_dst_lookup_flow() and ip6_fragment() to avoid a
crash due to ipv6.disable=1 set during booting. The other functions are
safe as they cannot be called with ipv6.disable=1 set.

These fallbacks ensure that when CONFIG_IPV6 is completely disabled,
there are no compiling or linking errors due to code paths not guarded
by preprocessor macro IS_ENABLED(CONFIG_IPV6).

In addition, export ndisc_send_na(), ip6_route_input() and
ip6_fragment().

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Link: https://patch.msgid.link/20260325120928.15848-6-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:23 -07:00
Fernando Fernandez Mancera
d2042d35f4 ipv6: remove dynamic ICMPv6 sender registration infrastructure
As IPv6 is built-in only, there is no need to maintain the sender
registration infrastructure used to allow built-in subsystems to send
ICMPv6 messages when IPv6 was compiled as a module.

Drop the registration mechanism and the __icmpv6_send() sender
implementation. While icmpv6_send() users could be converted to
icmp6_send() that doesn't seems necessary as none of them are using the
force_saddr parameter.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Link: https://patch.msgid.link/20260325120928.15848-5-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:23 -07:00
Fernando Fernandez Mancera
fde39f7df1 ipv6: replace IS_BUILTIN(CONFIG_IPV6) with IS_ENABLED(CONFIG_IPV6)
As IPv6 is built-in only, it does not make sense to continue using
IS_BUILTIN(CONFIG_IPV6). Therefore, replace it with IS_ENABLED() when
necessary and drop it if it isn't valid anymore.

Notice that there is still one instance related to ICMPv6, as it
requires more changes it will be handle separately.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://patch.msgid.link/20260325120928.15848-4-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:23 -07:00
Fernando Fernandez Mancera
0557a34487 net: remove EXPORT_IPV6_MOD() and EXPORT_IPV6_MOD_GPL() macros
As IPv6 is built-in only, the macro is always evaluating to an empty
one. Remove it completely from the code.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Link: https://patch.msgid.link/20260325120928.15848-3-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:22 -07:00
Fernando Fernandez Mancera
309b905dee ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Maintaining a modular IPv6 stack offers image size savings for specific
setups, this benefit is outweighed by the architectural burden it
imposes on the subsystems on implementation and maintenance. Therefore,
drop it.

Change CONFIG_IPV6 from tristate to bool. Remove all Kconfig
dependencies across the tree that explicitly checked for IPV6=m. In
addition, remove MODULE_DESCRIPTION(), MODULE_ALIAS(), MODULE_AUTHOR()
and MODULE_LICENSE().

This is also replacing module_init() by device_initcall(). It is not
possible to use fs_initcall() as IPv4 does because that creates a race
condition on IPv6 addrconf.

Finally, modify the default configs from CONFIG_IPV6=m to CONFIG_IPV6=y
except for m68k as according to the bloat-o-meter the image is
increasing by 330KB~ and that isn't acceptable. Instead, disable IPv6 on
this architecture by default. This is aligned with m68k RAM requirements
and recommendations [1].

[1] http://www.linux-m68k.org/faq/ram.html

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Tested-by: Ricardo B. Marlière <rbm@suse.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org> # arm64
Link: https://patch.msgid.link/20260325120928.15848-2-fmancera@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-03-29 11:21:22 -07:00
Tycho Andersen (AMD)
7b2bc5f0ab x86/sev, crypto/ccp: Move HSAVE_PA setup to arch/x86/
Now that there is snp_prepare() that indicates when the CCP driver wants to
prepare the architecture for SNP_INIT(_EX), move this architecture-specific
bit of code to a more sensible place.

Signed-off-by: Tycho Andersen (AMD) <tycho@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://patch.msgid.link/20260324161301.1353976-6-tycho@kernel.org
2026-03-29 19:59:58 +02:00
Abel Vesa
2200452477 dt-bindings: mailbox: qcom-ipcc: Document the Eliza Inter-Processor Communication Controller
Document the Inter-Processor Communication Controller (IPCC) found in the
Qualcomm Eliza SoC. It is used to route interrupts across various
subsystems.

Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Acked-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 12:09:36 -05:00
Linus Torvalds
f242ac4a09 Miscellaneous x86 fixes:
- Fix an early boot crash in AMD SEV-SNP guests, caused by incorrect
    FSGSBASE init ordering. (Nikunj A Dadhania)
 
  - Remove X86_CR4_FRED from the CR4 pinned bits mask, to fix a race
    window during the bootup of SEV-{ES,SNP} or TDX guests, which
    can crash them if they trigger exceptions in that window.
    (Borislav Petkov)
 
  - Fix early boot failures on SEV-ES/SNP guests, due to incorrect
    early GHCB access. (Nikunj A Dadhania)
 
  - Add clarifying comment to the CRn pinning logic, to avoid
    future confusion & bugs. (Peter Zijlstra)
 
 Signed-off-by: Ingo Molnar <mingo@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmnIudcRHG1pbmdvQGtl
 cm5lbC5vcmcACgkQEnMQ0APhK1jDaA/9GAF9AwwF8Gle0/AbQFjgIG2lA4G1D00q
 bfToKQeCAqBmlro7SP/4h9Kr70/xtnPCRP/BwTWEHHY/2Z5fLJOXcra5FWWPjjA1
 HZE6HHKFDXmPV2BfbdE5ezX8pSwBdGZ/vIykZ+q/q3/P7P/1lmxfFA+rEvbkykFH
 CQwAA3fVQuwQUiBY5eRN+0lwoIKRX3gnREtDflkgoqhhntoJ/hpnoytQAQX5Sb5j
 +MNpy4iIDFYLqRz3GHepcMDUB9W9e+9YvWd1qxsdgxyys5zVW9l7Z1qm3SHXd2uw
 OWAFu/ySKjlage4f8hPUbZHwtllzxM6HfyHcVoxjLnP/sa/9g9kJPhCGz1R1CoyM
 s2/2PM43dKN72IsWThUppa7JUENpaVUqDwOm8mBD07BZVZ7THKS1d4nLqxSyGIaN
 yDcEoH+6sbv0PhqC6GOg3Oi7DW66Q7LPJcf1AsrzW9f7pUBZc+K9KnqvY+U2SewH
 5OS3tzXhTLnRRkvJxLB3EFFSpefOFyEQ6WruZfrbijNVupIZpKpnqrN8xfDvF4p0
 XJ1rw03F1ltV9OO8YDfJfEjav1eJWTZcqGA8ZMnlZTzrB1+oJGw7i4n1rAILJNEF
 77wARixDNiiOsFcvF7dTG7l7HWEx1mWBkn75n+lnMvWqWd1QN4B2z85CIm5PdsnW
 0D0wd6vxUtk=
 =I3Gh
 -----END PGP SIGNATURE-----

Merge tag 'x86-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Ingo Molnar:

 - Fix an early boot crash in AMD SEV-SNP guests, caused by incorrect
   FSGSBASE init ordering (Nikunj A Dadhania)

 - Remove X86_CR4_FRED from the CR4 pinned bits mask, to fix a race
   window during the bootup of SEV-{ES,SNP} or TDX guests, which can
   crash them if they trigger exceptions in that window (Borislav
   Petkov)

 - Fix early boot failures on SEV-ES/SNP guests, due to incorrect early
   GHCB access (Nikunj A Dadhania)

 - Add clarifying comment to the CRn pinning logic, to avoid future
   confusion & bugs (Peter Zijlstra)

* tag 'x86-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/cpu: Add comment clarifying CRn pinning
  x86/fred: Fix early boot failures on SEV-ES/SNP guests
  x86/cpu: Remove X86_CR4_FRED from the CR4 pinned bits mask
  x86/cpu: Enable FSGSBASE early in cpu_init_exception_handling()
2026-03-29 10:04:37 -07:00
Linus Torvalds
47e3f23f0e Fix an argument order bug in the alarm timer forwarding logic,
which may cause missed expirations or incorrect overrun accounting.
 
 Signed-off-by: Ingo Molnar <mingo@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmnIt8IRHG1pbmdvQGtl
 cm5lbC5vcmcACgkQEnMQ0APhK1hogw/+J8ekCjKdzZobEyGAM4fTc0jlOmPiXog3
 yCKEZHnRpTmWskMKhDIqt3TYr9ihzHSWLwgtUpcx5bXO2qyhqVlQtfmSjA0CXeQ9
 DHADtLAsZIg8qpkqur6zGd4icLX5ZoVfiwZdPX3QZMgwAmM0JsqOLOIy8TGvsB2Q
 PWnq4aiTqs3lqA00ehMDR2gSlPfgJKUNgHVyJa0/udHVU81A67vPMbu12sX+Iz25
 ITxOehF32JuEvJUxa/sipjswizYc/bt5qEywn8Xoob99xrkv5vmTQ31sehqovwq/
 xVMaWs+oRj0Ec20E1LWuawnV83b0XR7j8Z2XCVNJHHfys80Hj6Egw7HVctKQq1Tf
 X3bzQMbyaYHWn+Cc7DClexposL3xi76ZPW5VaWcsLs5DA15hGmgY7r2DrlJby7QZ
 isjqsW06NGLM1DFrTEYlwTDKm7vLukFnWX4TXokMHitkSQPcyLa24sgMPFIXY1Pe
 QoY+f9tmIZ5GmA8JA4dgORSQvQEiG8ElToNDfM2Dmk8b69eO+JwdehQfwwGhhemF
 S8VMUMylrk0WOoCxM6peuA0JUMPKsLtg5dWWxsWDOxNUUxs9ujoQBAMYXuRloPUv
 kGV8entjyBZ4Nz1dxxKM1r/J2c7a8IImbQ18AsdPFu4NaRIG6TvYkGP3MGZtMHLe
 iHW5kgvgB5c=
 =hDiV
 -----END PGP SIGNATURE-----

Merge tag 'timers-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull timer fix from Ingo Molnar:
 "Fix an argument order bug in the alarm timer forwarding logic, which
  may cause missed expirations or incorrect overrun accounting"

* tag 'timers-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  alarmtimer: Fix argument order in alarm_timer_forward()
2026-03-29 10:02:38 -07:00
Linus Torvalds
f087b0bad4 Miscellaneous futex fixes:
- Tighten up the sys_futex_requeue() ABI a bit, to disallow
    dissimilar futex flags and potential UaF access. (Peter Zijlstra)
 
  - Fix UaF between futex_key_to_node_opt() and vma_replace_policy()
    (Hao-Yu Yang)
 
  - Clear stale exiting pointer in futex_lock_pi() retry path,
    which bug triggered a warning (and potential misbehavior)
    in stress-testing. (Davidlohr Bueso)
 
 Signed-off-by: Ingo Molnar <mingo@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmnItYsRHG1pbmdvQGtl
 cm5lbC5vcmcACgkQEnMQ0APhK1h0Ow/+O4JG+XMdmTn2OLZQBFVqlt40RG+UAudW
 tLyop+xovbLXk0FbZZen233yrYLnD8Qea9+LSIi1KPOKdklT4fimgDrVhSdZVMcY
 mPJxkZ1NTRDpl3qpjgaT3yXslgpQQlzDLjAkyyC6SWQh7RHlZ9JB4UICei9sOeE8
 WgwBrCfDMJXgjG5sAvkIhQFJaNEb/5HBHJu2Nxldlkl0of+le1e0mGUdY7H0ntxx
 kJ4jCsrpCw+tzhZw7RmGe8ouEDkbt2f7EBT10pjZ1cEP22Rogn1AzgdD7pkbhcU3
 WxbBGjSfm3ziPADELf0IhVYE/s+UXKTK9LfKDt4Q5W7paTV+o4Fllr+sraBmOoxp
 Ova5RZzSdq5NCGAcmFJWg/rxEyZf+uC7GjwPx/80huzgJvBthdjOagdVKm/3BNv8
 4d4H9KX67zWXE/XQHMt3g/7KYlVD9tzcp+v+h/rs8fiwkCkElwbljLISEr1StyOv
 CDaCouu6FQE8MoVTNPPbH1DfEyIgNKHdXfkQbt/OkGVB9/dX71zFmxEXRCYAGMb1
 wZXJ0j/oZZYcapmcb/xk5YjcZEfEU9QnMHHtCdR+dDL56xbsT5cDIzrb09LF6H/9
 WiMxhx2V3RNBNUwbOKGX6vdqa2kXG+Pjp6sq9Af7VB9oy+nbWpfcVFqWbWwKAP1N
 7e/EmnoxPTs=
 =85AU
 -----END PGP SIGNATURE-----

Merge tag 'locking-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull futex fixes from Ingo Molnar:

 - Tighten up the sys_futex_requeue() ABI a bit, to disallow dissimilar
   futex flags and potential UaF access (Peter Zijlstra)

 - Fix UaF between futex_key_to_node_opt() and vma_replace_policy()
   (Hao-Yu Yang)

 - Clear stale exiting pointer in futex_lock_pi() retry path, which
   triggered a warning (and potential misbehavior) in stress-testing
   (Davidlohr Bueso)

* tag 'locking-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  futex: Clear stale exiting pointer in futex_lock_pi() retry path
  futex: Fix UaF between futex_key_to_node_opt() and vma_replace_policy()
  futex: Require sys_futex_requeue() to have identical flags
2026-03-29 09:59:46 -07:00
haoyu.lu
b6b5e0ebd4 bpf,arc_jit: Fix missing newline in pr_err messages
Add missing newline to pr_err messages in ARC JIT.

Fixes: f122668ddc ("ARC: Add eBPF JIT support")
Signed-off-by: haoyu.lu <hechushiguitu666@gmail.com>
Link: https://lore.kernel.org/r/20260324122703.641-1-hechushiguitu666@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2026-03-29 09:59:00 -07:00
Daniel Borkmann
398ad123e8 selftests/bpf: Add few tests for alu32 shift value tracking and zext
Add few more alu32 shift tests using div-by-zero on provably dead paths
to check both verifier and JIT xlation resp. runtime correctness.

If the verifier mistracks the result, it rejects due to the div by 0;
if the JIT computes a wrong value, then runtime hits the dead path and
retval changes.

  # LDLIBS=-static PKG_CONFIG='pkg-config --static' ./vmtest.sh -- ./test_progs -t verifier_subreg
  [...]
  #644/76  verifier_subreg/arsh32_imm1_value:OK
  #644/77  verifier_subreg/lsh32_reg0_zero_extend_check:OK
  #644/78  verifier_subreg/rsh32_reg0_zero_extend_check:OK
  #644/79  verifier_subreg/arsh32_reg0_zero_extend_check:OK
  #644/80  verifier_subreg/lsh32_imm31_value:OK
  #644/81  verifier_subreg/rsh32_imm31_value:OK
  #644/82  verifier_subreg/arsh32_imm31_value:OK
  #644/83  verifier_subreg/lsh32_unknown_precise_bounds:OK
  #644/84  verifier_subreg/rsh32_unknown_bounds:OK
  #644     verifier_subreg:OK
  Summary: 1/84 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/r/20260327220629.343327-1-daniel@iogearbox.net
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2026-03-29 09:57:39 -07:00
Ihor Solodrai
101a9d9df8 selftests/bpf: Update kfuncs using btf_struct_meta to new variants
Update selftests to use the new non-_impl kfuncs marked with
KF_IMPLICIT_ARGS by removing redundant declarations and macros from
bpf_experimental.h (the new kfuncs are present in the vmlinux.h) and
updating relevant callsites.

Fix spin_lock verifier-log matching for lock_id_kptr_preserve by
accepting variable instruction numbers. The calls to kfuncs with
implicit arguments do not have register moves (e.g. r5 = 0)
corresponding to dummy arguments anymore, so the order of instructions
has shifted.

Acked-by: Mykyta Yatsenko <yatsenko@meta.com>
Signed-off-by: Ihor Solodrai <ihor.solodrai@linux.dev>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20260327203241.3365046-2-ihor.solodrai@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2026-03-29 09:56:06 -07:00
Ihor Solodrai
d457072576 bpf: Support struct btf_struct_meta via KF_IMPLICIT_ARGS
The following kfuncs currently accept void *meta__ign argument:
  * bpf_obj_new_impl
  * bpf_obj_drop_impl
  * bpf_percpu_obj_new_impl
  * bpf_percpu_obj_drop_impl
  * bpf_refcount_acquire_impl
  * bpf_list_push_back_impl
  * bpf_list_push_front_impl
  * bpf_rbtree_add_impl

The __ign suffix is an indicator for the verifier to skip the argument
in check_kfunc_args(). Then, in fixup_kfunc_call() the verifier may
set the value of this argument to struct btf_struct_meta *
kptr_struct_meta from insn_aux_data.

BPF programs must pass a dummy NULL value when calling these kfuncs.

Additionally, the list and rbtree _impl kfuncs also accept an implicit
u64 argument, which doesn't require __ign suffix because it's a
scalar, and BPF programs explicitly pass 0.

Add new kfuncs with KF_IMPLICIT_ARGS [1], that correspond to each
_impl kfunc accepting meta__ign. The existing _impl kfuncs remain
unchanged for backwards compatibility.

To support this, add "btf_struct_meta" to the list of recognized
implicit argument types in resolve_btfids.

Implement is_kfunc_arg_implicit() in the verifier, that determines
implicit args by inspecting both a non-_impl BTF prototype of the
kfunc.

Update the special_kfunc_list in the verifier and relevant checks to
support both the old _impl and the new KF_IMPLICIT_ARGS variants of
btf_struct_meta users.

[1] https://lore.kernel.org/bpf/20260120222638.3976562-1-ihor.solodrai@linux.dev/

Signed-off-by: Ihor Solodrai <ihor.solodrai@linux.dev>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20260327203241.3365046-1-ihor.solodrai@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2026-03-29 09:56:06 -07:00
Linus Torvalds
21047b17b3 Miscellaneous irqchip driver fixes:
- Fix TX completion signaling bug in the Qualcomm MPM irqchip driver
 
  - Fix probe error handling in the Renesas RZ/V2H(P) irqchip driver
 
 Signed-off-by: Ingo Molnar <mingo@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmnIsbERHG1pbmdvQGtl
 cm5lbC5vcmcACgkQEnMQ0APhK1j41A//QgxGkveiGrcNIULJvDM8tDwi1KxbQUQT
 DyZXEeimDlbZZm09pU8hQzUV3g3MqFDUV43MURl5wD2iGt3oT29f+hB2hK5fLSv6
 GqXzG48s2u6o+bmIPI+sVhwJ4PoEfCzrnvW/RLhjtnt9FAxd8swGNbiN6owiEtWW
 /s8kY5n7Jf8gQG6hRM4cPv8V2qLOAHGxGqZ2HLu4sBLC7DcBElaaIpigXMzOouU8
 GoRX+b7UH3j/Knm/bdnmTY05bdN588U/WMaqKuPvU6Flk7w2PheA/n4jAIckDlmC
 AbelcFJnD+V/VpXxFV5cJQ3GOD1Tdcp8eWytyYGxYQxaZF5XX0fILdwQ8uDoWegE
 fzWPcqJZ4LTw02J+mtAx7IaQqoaVxQF4wmcQu2owubUJYPkH6tsNvpNinT+IpqI7
 Giz20nNyRrU7lYUx2ha4GjFwf3xldBOJZTssE8iFDx0SJR7DoaiyI1l30mxJ4PGI
 p6XtHrCFTe1yE3k3JcTwktbAnW7Znu5JB3WYP5F7HazMFGYu31duJ89Uc9i58axX
 aOCW27Zhv3oxKgYoKJGKX3Bn37Tldsa5VYN3kq2f53p0G6nbCFDspeXzqiAEd/TY
 tSFdGEKKydKeTCwqFrlHfDUE/XrKgb4sfMjpYewEJdbI/UOvb4ojSYgrChE65eDE
 0ovBNqTVYMA=
 =O4KY
 -----END PGP SIGNATURE-----

Merge tag 'irq-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Ingo Molnar:

 - Fix TX completion signaling bug in the Qualcomm MPM irqchip driver

 - Fix probe error handling in the Renesas RZ/V2H(P) irqchip driver

* tag 'irq-urgent-2026-03-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  irqchip/renesas-rzv2h: Fix error path in rzv2h_icu_probe_common()
  irqchip/qcom-mpm: Add missing mailbox TX done acknowledgment
2026-03-29 09:53:01 -07:00
Linus Torvalds
a3d97d1d3f overlayfs fixes for 7.0-rc6
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE9zuTYTs0RXF+Ke33EVvVyTe/1WoFAmnI69IACgkQEVvVyTe/
 1WqWmxAAn7Bbd9vh6botvvRoMwSlvPOE3oexRbpr+EMCE3Z9mulKi//KoiOk1xxW
 nzg41gXQ2ZvsCys8M/5tloo4U0YRZQthf3SyEyvl/c/wGRWvSZYdv86iV5/Qhkwf
 VaAT0Kh/V5Rffg1f1xYIVlt4TRbcbKTj9lr1bPnPGEbAY96Dav0gYMn2+29I1642
 l6CpWtM2OZCalDK/j0zG6Wxxeko84pT0iv6kxGba3roQVONzYWXycgW3caR4DJq2
 l4D81QCG1NhV984MP3UChHPoTa1gUepE6fOhyyTwXrWn8bEdkFXtHgKaC90PirP0
 OeYYK7sRx4yrsRcpBsuo83lpCP7aMIiGpU9hrbABdQ2qF9o1/hZyggU+FdKv+dri
 6SIw1w+wHpa2gDoSsze9uCsoc/jPflCzBgfo1w1jbGf3kctwmMSnWpkVBhCIwtD4
 ntoTWk2MzmLNXCDCrjb1r6SpYgnxrGDcRf6KikF89hkVmWO3wSYzscbaVQz1+R4b
 QKBF67zmYoubYPPZ503Y5n7S4L3O8kxGMCGCBx10FIvs8Lvf8dGwTBL+gOtmg1VK
 YO99lreo+BN3Q3iui1h2F4wT+XY1Iaq2ORaxi3czjblMfu/rkpcwHS2O6FlecvCQ
 Vfgve+6xGuYHMeziDkSiczA2m+8USIefA0zXzwq+2TA82hs95b4=
 =sSP0
 -----END PGP SIGNATURE-----

Merge tag 'ovl-fixes-7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/overlayfs/vfs

Pull overlayfs fixes from Amir Goldstein:

 - Fix regression in 'xino' feature detection

   I clumsily introduced this regression myself when working on another
   subsystem (fsnotify). Both the regression and the fix have almost no
   visible impact on users except for some kmsg prints.

 - Fix to performance regression in v6.12.

   This regression was reported by Google COS developers.

   It is not uncommon these days for the year-old mature LTS to get
   adopted by distros and get exposed to many new workloads. We made a
   sub-smart move of making a behavior change in v6.12 which could
   impact performance, without making it opt-in. Fixing this mistake
   retroactively, to be picked by LTS.

* tag 'ovl-fixes-7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/overlayfs/vfs:
  ovl: make fsync after metadata copy-up opt-in mount option
  ovl: fix wrong detection of 32bit inode numbers
2026-03-29 09:34:50 -07:00
Dylan Wu
80784b4279 mailbox: cix: Add IRQF_NO_SUSPEND to mailbox interrupt
During the system suspend process, device interrupts are masked in the
noirq phase. However, SCMI often needs to exchange final messages with the
firmware to complete the power-down transition. Without the IRQF_NO_SUSPEND
flag, the mailbox ISR cannot run during this late stage, leading to SCMI
communication timeouts and error messages like "SCMI protocol wait for
resp timeout" during suspend.

Add the IRQF_NO_SUSPEND flag to the interrupt request to ensure the mailbox
can continue to handle responses during the noirq stages of suspend and
resume, thereby ensuring a reliable power state transition.

Signed-off-by: Dylan Wu <fredwudi0305@gmail.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 11:31:58 -05:00
Linus Torvalds
241d4ca15d Update the MAINTAINERS file to add reviewers for the ext4 file system
Add a test issue an ext4 warning (not a WARN_ON) if there are still
 dirty pages attached to an evicted inode.
 
 A lot of ext4 bug fixes including:
    * Fix a number of Syzkaller issues.
    * Fix memory leaks on error paths.
    * Replace some BUG and WARN with EFSCORRUPTED reporting.
    * Fix a potential crash when disabling discard via remount followed
      by an immediate unmount.  (Found by Sashiko)
    * Fix a corner case which could lead to allocating blocks for an
      indirect-mapped inode block numbers > 2**32.
    * Fix a race when reallocating a freed inode that could result in
      a deadlock.
    * Fix a user-after-free in update_super_work when racing with umount.
    * Fix build issues when trying to build ext4's kunit tests as a module
    * Fix a bug where ext4_split_extent_zeroout() could fail to pass
      back an error from ext4_ext_dirty().
    * Avoid allocating blocks from a corrupted block group in
      ext4_mb_find_by_goal().
    * Fix a percpu_counters list corruption BUG triggered by an
      ext4 extents kunit.
    * Fix a potetial crash caused by the fast commit flush path potentially
      accessing the jinode structure before it is fully initialized.
    * Fix fsync(2) in no-journal mode to make sure the dirtied inode is
      write to storage.
    * Fix a bug when in no-journal mode, when ext4 tries to avoid using
      recently deleted inodes, if lazy itable initialization is enabled,
      can lead to an unitialized inode getting skipped and triggering
      an e2fsck complaint.
    * Fix journal credit calculation when setting an xattr when both
      the encryption and ea_inode feeatures are enabled.
    * Fix corner cases which could result in stale xarray tags after
      writeback.
    * Fix generic/475 failures caused by ENOSPC errors while creating
      a symlink when the system crashes resulting to a file system
      inconsistency when replaying the fast commit journal.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEK2m5VNv+CHkogTfJ8vlZVpUNgaMFAmnIo3cACgkQ8vlZVpUN
 gaNu+wf+PyZyRFar37GVcXiMWm8wiBrH7XYhcH1z+uEfjxtWuxUDtKZtF/UZ8FiW
 peRI785hiIW1xjj3efkNlrg4JFPlY+mLlyY8iUabYj6Gt2kddgy7h6gCf2ugM/V9
 1fk9Hf3+QQ38qM9PpBpBVZyhSS7WpafCcUvx622G/+WiQldWAohpfk/KrNQtSWiX
 ZFzJtJ+7jJD6Qo1Pe2Em4khsZK2fsLw1XH9GpUWIdauQV+oXnkp7+kOQIOoT+7RX
 azjAub5b6L3Bf9p/NNvlUCE9VINeqjKHVGI/gesRz9uiQd/zI3/pBQtddMUy8B3k
 buN3uii5iYcLQD8ntX5sTP35PQg4hg==
 =Ew20
 -----END PGP SIGNATURE-----

Merge tag 'ext4_for_linus-7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4

Pull ext4 fixes from Ted Ts'o:

 - Update the MAINTAINERS file to add reviewers for the ext4 file system

 - Add a test issue an ext4 warning (not a WARN_ON) if there are still
   dirty pages attached to an evicted inode.

 - Fix a number of Syzkaller issues

 - Fix memory leaks on error paths

 - Replace some BUG and WARN with EFSCORRUPTED reporting

 - Fix a potential crash when disabling discard via remount followed by
   an immediate unmount. (Found by Sashiko)

 - Fix a corner case which could lead to allocating blocks for an
   indirect-mapped inode block numbers > 2**32

 - Fix a race when reallocating a freed inode that could result in a
   deadlock

 - Fix a user-after-free in update_super_work when racing with umount

 - Fix build issues when trying to build ext4's kunit tests as a module

 - Fix a bug where ext4_split_extent_zeroout() could fail to pass back
   an error from ext4_ext_dirty()

 - Avoid allocating blocks from a corrupted block group in
   ext4_mb_find_by_goal()

 - Fix a percpu_counters list corruption BUG triggered by an ext4
   extents kunit

 - Fix a potetial crash caused by the fast commit flush path potentially
   accessing the jinode structure before it is fully initialized

 - Fix fsync(2) in no-journal mode to make sure the dirtied inode is
   write to storage

 - Fix a bug when in no-journal mode, when ext4 tries to avoid using
   recently deleted inodes, if lazy itable initialization is enabled,
   can lead to an unitialized inode getting skipped and triggering an
   e2fsck complaint

 - Fix journal credit calculation when setting an xattr when both the
   encryption and ea_inode feeatures are enabled

 - Fix corner cases which could result in stale xarray tags after
   writeback

 - Fix generic/475 failures caused by ENOSPC errors while creating a
   symlink when the system crashes resulting to a file system
   inconsistency when replaying the fast commit journal

* tag 'ext4_for_linus-7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (27 commits)
  ext4: always drain queued discard work in ext4_mb_release()
  ext4: handle wraparound when searching for blocks for indirect mapped blocks
  ext4: skip split extent recovery on corruption
  ext4: fix iloc.bh leak in ext4_fc_replay_inode() error paths
  ext4: fix deadlock on inode reallocation
  ext4: fix use-after-free in update_super_work when racing with umount
  ext4: fix the might_sleep() warnings in kvfree()
  ext4: reject mount if bigalloc with s_first_data_block != 0
  ext4: fix extents-test.c is not compiled when EXT4_KUNIT_TESTS=M
  ext4: fix mballoc-test.c is not compiled when EXT4_KUNIT_TESTS=M
  ext4: introduce EXPORT_SYMBOL_FOR_EXT4_TEST() helper
  jbd2: gracefully abort on checkpointing state corruptions
  ext4: avoid infinite loops caused by residual data
  ext4: validate p_idx bounds in ext4_ext_correct_indexes
  ext4: test if inode's all dirty pages are submitted to disk
  ext4: minor fix for ext4_split_extent_zeroout()
  ext4: avoid allocate block from corrupted group in ext4_mb_find_by_goal()
  ext4: kunit: extents-test: lix percpu_counters list corruption
  ext4: publish jinode after initialization
  ext4: replace BUG_ON with proper error handling in ext4_read_inline_folio
  ...
2026-03-29 09:30:06 -07:00
Jassi Brar
c58e9456e3 mailbox: Fix NULL message support in mbox_send_message()
The active_req field serves double duty as both the "is a TX in
flight" flag (NULL means idle) and the storage for the in-flight
message pointer. When a client sends NULL via mbox_send_message(),
active_req is set to NULL, which the framework misinterprets as
"no active request". This breaks the TX state machine by:

 - tx_tick() short-circuits on (!mssg), skipping the tx_done
   callback and the tx_complete completion
 - txdone_hrtimer() skips the channel entirely since active_req
   is NULL, so poll-based TX-done detection never fires.

Fix this by introducing a MBOX_NO_MSG sentinel value that means
"no active request," freeing NULL to be valid message data. The
sentinel is defined in the subsystem-internal mailbox.h so that
controller drivers within drivers/mailbox/ can reference it, but
it is not exposed to clients outside the subsystem.

Fifteen in-tree callers send NULL (doorbell-style IPCs on Qualcomm,
Tegra, TI, Xilinx, i.MX, SCMI, and PCC platforms). All were
audited for regression:

 - Most already work around the bug via knows_txdone=true with a
   manual mbox_client_txdone() call, making the framework's
   tracking irrelevant. These are unaffected.

 - Poll-based callers (Xilinx zynqmp/r5) are strictly better off:
   the poll timer now correctly detects NULL-active channels
   instead of silently skipping them.

 - irq-qcom-mpm.c was a pre-existing bug -- the only Qualcomm
   caller that omitted the knows_txdone + mbox_client_txdone()
   pattern. Fixed in a companion commit ("irqchip/qcom-mpm: Fix
   missing mailbox TX done acknowledgment").

 - No caller sets both a tx_done callback and sends NULL, nor
   combines tx_block=true with NULL sends, so the newly reachable
   callback/completion paths are never exercised.

Also update tegra-hsp's flush callback, which directly inspects
active_req to wait for the channel to drain: the old "!= NULL"
check becomes "!= MBOX_NO_MSG", otherwise flush spins until
timeout since the sentinel is non-NULL.

The only tradeoff is that 'MBOX_NO_MSG' can not be used as a message
by clients.

Reported-by: Joonwon Kang <joonwonkang@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 11:12:01 -05:00
Wolfram Sang
89e5d7d616 mailbox: remove superfluous internal header
Quite some controller drivers use the defines from the internal header
already. This prevents controller drivers outside the mailbox directory.
Move the defines to the public controller header to allow this again as
the defines are not strictly internal anyhow.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Sudeep Holla <sudeep.holla@kernel.org>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 11:07:26 -05:00
Wolfram Sang
d81e6703b8 mailbox: correct kdoc title for mbox_bind_client
"Request" is wrong, there is a separate function for requesting. This
functions binds, so describe this.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 10:58:34 -05:00
Wolfram Sang
9efbbf810e mailbox: test: really ignore optional memory resources
Memory resources are optional but if the resource is empty
devm_platform_get_and_ioremap_resource() prints an error nonetheless.
Refactor the code to check the resources locally first and process them
only if they are present. The -EBUSY error message of ioremap_resource()
is still kept because it is correct. The comment which explains that a
plain ioremap() is tried as a workaround is turned into a info message.
So, a user will be informed about it, too.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 10:56:38 -05:00
Wolfram Sang
8a19c5aa2f mailbox: exynos: drop superfluous mbox setting per channel
The core initializes the 'mbox' field exactly like this, so don't
duplicate it in the driver.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Tested-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 10:56:12 -05:00
Jason-JH Lin
d2591db9c8 mailbox: mtk-cmdq: Fix CURR and END addr for task insert case
Fix CURR and END address calculation for inserting a cmdq task into the
task list by using cmdq_reg_shift_addr() for proper address converting.
This ensures both CURR and END addresses are set correctly when
enabling the thread.

Fixes: a195c7ccfb ("mailbox: mtk-cmdq: Refine DMA address handling for the command buffer")
Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 10:51:08 -05:00
Felix Gu
1e0ec9719f mailbox: mtk-vcp-mailbox: Fix the return value in mtk_vcp_mbox_xlate()
The return value of mtk_vcp_mbox_xlate() is checked by IS_ERR(), so
return NULL is incorrect and could lead to a NULL pointer dereference.

Fixes: b562abd956 ("mailbox: mediatek: Add mtk-vcp-mailbox driver")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 10:50:50 -05:00
Rosen Penev
df1de2abf9 mailbox: hi6220: kzalloc + kcalloc to kzalloc
Reduce allocations to a single one by using a flexible array member.

Allows using __counted_by for extra runtime analysis.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 10:50:14 -05:00
Rosen Penev
f9f0df2319 mailbox: rockchip: kzalloc + kcalloc to kzalloc
Use a flexible array member to reduce allocations.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
2026-03-29 10:50:05 -05:00
Meghana Malladi
079a2e18b7 arm64: defconfig: Enable DP83TG720 PHY driver
Enable DP83TG720 PHY driver as a module to support TI's DP83TG720
1000BASE-T1 Automotive Ethernet PHY. This is required for the
DP83TG720-IND-SPE-EVM daughter card used with AM642 EVM ICSSG0
interface.

Signed-off-by: Meghana Malladi <m-malladi@ti.com>
Link: https://patch.msgid.link/20260323090358.632329-3-m-malladi@ti.com
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
2026-03-29 19:51:25 +05:30
Greg Kroah-Hartman
80ffc54d04 IIO: 3rd set of fixes for the 7.0 cycle.
Note that this pull is in addition to the 2nd set of such fixes that are
 waiting to be picked up. Absolutely fine to queue these for the merge
 window if that makes more sense.
 
 Usual mixed back of ancient issues surfacing and newer problems.
 
 adi,ad57770r
 - Stop eating an error in read_raw.
 adi,adxl313
 - Check return of regmap_write() instead of ignoring it in one place.
 adi,adxl355
 - Fix the description of the temperature channel to be unsigned rather
   than signed.
 bosch,bmi160
 - Avoid use of uninitialized data.
 - Fix validation of small reference voltages.
 hid-sensor-rotation:
 - The timestamp location in this driver has unfortunately been broken for
   a long time. Given it was correct for 6 years and then broken for the
   next 6 years, use a one off hack to duplicate it in both locations.
   The issue was as a result of the unique nature of quaternion
   representation combined with large precision resulting in an
   128 bit aligned channel.
 nxp,sar-adc
 - Avoid leaking a dma channel.
 rfdigital,rfd77402
 - Close a race between reinit_completion() and the irq happening.
 ti,adc161s626
 - Fix up buffer handling on big endian hosts which was broken due to
   casting of pointers to different sized integers.
 - Ensure a DMA safe buffer is used.
 vishay,vcnl4035
 - Fix up buffer handling on big endian hosts which was broken due to
   casting of pointers to different sized integers.
 vishay,veml6070
 - Fix return value mess up that occurred when doing a guard() conversion.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAmnJGFwRHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0Foiz2Q//aVj7yTLqyki8lyjRIC6sJZBjELz1SOym
 NNtcKZMvhXQvFWmBXfZf2/3XcIgvaXqST+FVnUItTfoWFRKueduB4P02rRw9linG
 0oyZYVOJVBR9T4PK22IDdOEzS786UpkvIhuVUbYm2zFQrEl9aClU3tW8rNrc3lQu
 4FaHDH52OJAMumzbwmejLgR+AKywyzIPJwyB3PBux592Y+h5gkWMPqVBSRueGG8G
 JwI/vM3X9OkEYabSgitWnR9HpJwXMomF0p0g9tpjb7xvdzYD2qOb1X9QP0SZKWDS
 z+aacE2c2OqjQ+YALCkVAH1qzsnm1VIDIklZ4U9776LejII4ap6QObgNebNJdWV2
 ziUg1zlBuzXnnEdxaiWy1N+JZT7hpG8kHgzgmZj+yvETKfwt/ZGCbHvTaNsBAfNc
 i3O88OQJDiHIC9tlKJzjw+eXBgVkvjb3mJt0fnJlolfj6Tm/e08MO+bXsQtFVA4o
 DAcFW2aaKGWQ4OjvrTXlGoeN9ExE3hMRWC4j4wq2GpnZ1kzBwtUVB21O80H95FTl
 Cjgbqqe9YjSDXFzAZNSMY9ElLcfrwjVpq2PXp5hCblSOI77GFcxr+lN73u6XrtkM
 0VInTc/J5CqizIywanMB27XUe1c1o7e5vqWlUX+SSK2b193E0qnKZNYeptBUjve0
 txhekWre+Kg=
 =AXzp
 -----END PGP SIGNATURE-----

Merge tag 'iio-fixes-for-7.0c' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-linus

Jonathan writes:

IIO: 3rd set of fixes for the 7.0 cycle.

Note that this pull is in addition to the 2nd set of such fixes that are
waiting to be picked up. Absolutely fine to queue these for the merge
window if that makes more sense.

Usual mixed back of ancient issues surfacing and newer problems.

adi,ad57770r
- Stop eating an error in read_raw.
adi,adxl313
- Check return of regmap_write() instead of ignoring it in one place.
adi,adxl355
- Fix the description of the temperature channel to be unsigned rather
  than signed.
bosch,bmi160
- Avoid use of uninitialized data.
- Fix validation of small reference voltages.
hid-sensor-rotation:
- The timestamp location in this driver has unfortunately been broken for
  a long time. Given it was correct for 6 years and then broken for the
  next 6 years, use a one off hack to duplicate it in both locations.
  The issue was as a result of the unique nature of quaternion
  representation combined with large precision resulting in an
  128 bit aligned channel.
nxp,sar-adc
- Avoid leaking a dma channel.
rfdigital,rfd77402
- Close a race between reinit_completion() and the irq happening.
ti,adc161s626
- Fix up buffer handling on big endian hosts which was broken due to
  casting of pointers to different sized integers.
- Ensure a DMA safe buffer is used.
vishay,vcnl4035
- Fix up buffer handling on big endian hosts which was broken due to
  casting of pointers to different sized integers.
vishay,veml6070
- Fix return value mess up that occurred when doing a guard() conversion.

* tag 'iio-fixes-for-7.0c' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio:
  iio: light: veml6070: fix veml6070_read() return value
  iio: adc: nxp-sar-adc: Fix DMA channel leak in trigger mode
  iio: accel: adxl313: add missing error check in predisable
  iio: dac: ad5770r: fix error return in ad5770r_read_raw()
  iio: accel: fix ADXL355 temperature signature value
  iio: light: vcnl4035: fix scan buffer on big-endian
  iio: adc: ti-adc161s626: use DMA-safe memory for spi_read()
  iio: adc: ti-adc161s626: fix buffer read on big-endian
  iio: dac: mcp47feb02: Fix Vref validation [1-999] case
  iio: imu: bmi160: Remove potential undefined behavior in bmi160_config_pin()
  iio: orientation: hid-sensor-rotation: add timestamp hack to not break userspace
  iio: proximity: rfd77402: Fix completion race condition in IRQ mode
2026-03-29 15:27:12 +02:00
Michal Piekos
c755e39836 arm64: dts: allwinner: enable h616 timer support
Add support for timer by reusing existing sun4i timer driver.

H616 timer is compatible with earlier sunxi timer variants and provides
both clocksource and clockevent functionality. It runs from 24 MHz
oscillator. It can serve as broadcast clockevent for wake up from idle
states.

Tested on Orange Pi Zero 3:
- timer is registered as clocksource:
- switching clocksource at runtime works
- timer operates as a broadcast clockevent device
- no regression observed compared to arch_sys_counter

Signed-off-by: Michal Piekos <michal.piekos@mmpsystems.pl>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://patch.msgid.link/20260329-h616-timer-v1-1-5966d0420a66@mmpsystems.pl
Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
2026-03-29 21:20:49 +08:00
Chen-Yu Tsai
2e4858d2f0 arm64: dts: allwinner: sun50i-h6: add UART DMA channels
All the UARTs support DMA and are hooked up to the DMA controller.

Add the DMA channels for the UARTs

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://patch.msgid.link/20260324161930.1602083-2-wens@kernel.org
Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
2026-03-29 21:16:58 +08:00
Chen-Yu Tsai
1e80a0367b arm64: dts: allwinner: sun50i-a64: add UART DMA channels
All the UARTs support DMA and are hooked up to the DMA controller.

Add the DMA channels for the UARTs

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://patch.msgid.link/20260324161930.1602083-1-wens@kernel.org
Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
2026-03-29 21:16:58 +08:00
Greg Kroah-Hartman
37276dd6b6 IIO: 2nd set of fixes for the 7.0 cycle
Usual mixed bag of fixes for recent code and much older issues that have
 surfaced. Biggest group are continued resolution of IRQF_ONE_SHOT
 being used incorrectly (which now triggers a warning)
 
 adi,ad4062
 - Replace IRQF_ONESHOT (as no threaded handler) with IRQF_NO_THREAD as
   the caller makes use of iio_trigger_poll() which cannot run from a
   thread.
 adi,ade9000
 - Move mutex_init() earlier to ensure it is available if spurious IRQ
   occurs.
 adi,adis16550
 - Fix swapped gyro and accel filter functions.
 adi,adxl3380
 - Fix some bit manipulation that was always resulting in 0.
 - Fix incorrect register map for calibbias on the active power channel.
 - Fix returning IRQF_HANDLED from a function that should return 0 or
   -ERRNO.
 aspeed,adc
 - Clear a reference voltage bit that might be set prior to driver load.
 bosch,bno055
 - Off by one channel buffer sizing. Benine due to padding prior to the
   subsequent timestamp.
 hid-sensors
 - A more complex fix to IRQF_ONESHOT warning as this driver had a trigger
   that was never actually used but the ABI that exposed had to be
   maintained to avoid regressions.
 hid-sensors-rotation
 - An obscure buffer alignment case that applies to quaternions only was
   recently broken resulting in writes beyond the end of the channel buffer.
   Add a new core macro and apply it in this driver to make it very clear
   what was going on.
 honeywell,abp2030pa
 - Remove meaningless IRQF_ONESHOT from a non threaded IRQ handler.
   Warning fix only.
 invense,mpu3050
 - Fix token passed to free_irq() to match the one used at setup.
 - Fix an irq resource leak in error path.
 - Reorder probe so that userspace interfaces are exposed only after
   everything else has finished.
 - Reorder remove slightly to cleanup the buffer only after irq removed
   ensuring reverse of probe sequence.
 microchip,mcp47feb02
 - Fix use of mutex before it was initialized by not performing unnecessary
   lock that was early enough in probe that all code was serial.
 st,lsm6dsx
 - Ensure that FIFO ODR is only controllable for accel and gyro channels
   avoiding incorrect register accesses.
 - Restrict separation of buffer sampling from main sampling rate to
   accelerometer. It is only useful for running event detection faster
   than the fifo and the only events are on the accelerometer.
 ti,ads1018
 - Fix overflow of u8 which wasn't big enough to store max data rate value.
 ti,ads1119:
 - Fix unbalanced pm in an error path.
 - IRQF_ONESHOT (as no threaded handler) replaced with IRQF_NO_THREAD
   (needed for iio_trigger_poll()).
 - Ensure complete reinitialized before reuse. Previously it would have
   completed immediate after the first time.
 ti,ads7950
 - Fix return value of gpio_get() to be 0 or 1.
 - Avoid accidental overwrite of state resulting in gpio_get() only
   returning 0 or -ERRNO but never 1.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAmm1PpURHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0FojACQ/8CkIpTOWqybGXUSiuv/MWkyaTrlh7wfAg
 esL4Wf1kfbtfnZ30uh8k8oLF3b40k1AjjjqtKVkc0Bu3SuOG9+KsSlgztbBxkBs4
 WWhBBW1ZFEOn6Yldu0zjF99CrnsK03uYbFruMUTh2H/dV47UX4e48ZoVmP5BZsjt
 zdwIvSf+GYZCP0LcYMeLJECknVEBMK7tpa1OMffVsyWcmt7b3FpTk25q4jrhvM6Z
 PaZLVkBBFxKdYDBBr2eIboS8+Lo55I1s6/FghY9MnlDFM41lPKlBT+GH0bUT2ion
 LIOjIyUVlN6+mZHCTB2TPUR0ywibG/IsjoSR8zYkJMQ1FBW6zUAItMyCofbQHL2e
 NrmviAUcSReEhvGjnOK4+OZlSGQbLMu8eoYFU857x0QVg7hcNzrVviIVZie1WlQS
 8Hd3Lm3sXaDC6oN1ULxDmXriOvaPDFxUqzn8AhlvAiOXNqnbBWFmdGosQ3q5rklW
 vjpZh/1YRJ1wActcGJoMCTfbfOuyCc7Xt4E8fqk3tNfJlXHEY0DYc5agjjdrGhzA
 mVtfm3Ab8glz/vcq72SUVcxL/qVqvZHjEVho701bySIMj+aZwQGwM8KnG/5QaazQ
 euBr5hcfc12JtbrjN3Jpn6Wog7pF+Xzqza7mUnkUYrNQ3s0mGewRgBr2EzeXvnot
 KWiLytre94M=
 =JTTZ
 -----END PGP SIGNATURE-----

Merge tag 'iio-fixes-for-7.0b' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-linux

Jonathan writes:

IIO: 2nd set of fixes for the 7.0 cycle

Usual mixed bag of fixes for recent code and much older issues that have
surfaced. Biggest group are continued resolution of IRQF_ONE_SHOT
being used incorrectly (which now triggers a warning)

adi,ad4062
- Replace IRQF_ONESHOT (as no threaded handler) with IRQF_NO_THREAD as
  the caller makes use of iio_trigger_poll() which cannot run from a
  thread.
adi,ade9000
- Move mutex_init() earlier to ensure it is available if spurious IRQ
  occurs.
adi,adis16550
- Fix swapped gyro and accel filter functions.
adi,adxl3380
- Fix some bit manipulation that was always resulting in 0.
- Fix incorrect register map for calibbias on the active power channel.
- Fix returning IRQF_HANDLED from a function that should return 0 or
  -ERRNO.
aspeed,adc
- Clear a reference voltage bit that might be set prior to driver load.
bosch,bno055
- Off by one channel buffer sizing. Benine due to padding prior to the
  subsequent timestamp.
hid-sensors
- A more complex fix to IRQF_ONESHOT warning as this driver had a trigger
  that was never actually used but the ABI that exposed had to be
  maintained to avoid regressions.
hid-sensors-rotation
- An obscure buffer alignment case that applies to quaternions only was
  recently broken resulting in writes beyond the end of the channel buffer.
  Add a new core macro and apply it in this driver to make it very clear
  what was going on.
honeywell,abp2030pa
- Remove meaningless IRQF_ONESHOT from a non threaded IRQ handler.
  Warning fix only.
invense,mpu3050
- Fix token passed to free_irq() to match the one used at setup.
- Fix an irq resource leak in error path.
- Reorder probe so that userspace interfaces are exposed only after
  everything else has finished.
- Reorder remove slightly to cleanup the buffer only after irq removed
  ensuring reverse of probe sequence.
microchip,mcp47feb02
- Fix use of mutex before it was initialized by not performing unnecessary
  lock that was early enough in probe that all code was serial.
st,lsm6dsx
- Ensure that FIFO ODR is only controllable for accel and gyro channels
  avoiding incorrect register accesses.
- Restrict separation of buffer sampling from main sampling rate to
  accelerometer. It is only useful for running event detection faster
  than the fifo and the only events are on the accelerometer.
ti,ads1018
- Fix overflow of u8 which wasn't big enough to store max data rate value.
ti,ads1119:
- Fix unbalanced pm in an error path.
- IRQF_ONESHOT (as no threaded handler) replaced with IRQF_NO_THREAD
  (needed for iio_trigger_poll()).
- Ensure complete reinitialized before reuse. Previously it would have
  completed immediate after the first time.
ti,ads7950
- Fix return value of gpio_get() to be 0 or 1.
- Avoid accidental overwrite of state resulting in gpio_get() only
  returning 0 or -ERRNO but never 1.

* tag 'iio-fixes-for-7.0b' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (25 commits)
  iio: imu: adis16550: fix swapped gyro/accel filter functions
  iio: adc: aspeed: clear reference voltage bits before configuring vref
  iio: adc: ti-ads1119: Reinit completion before wait_for_completion_timeout()
  iio: adc: ti-ads1018: fix type overflow for data rate
  iio: adc: ti-ads7950: do not clobber gpio state in ti_ads7950_get()
  iio: adc: ti-ads7950: normalize return value of gpio_get
  iio: orientation: hid-sensor-rotation: fix quaternion alignment
  iio: add IIO_DECLARE_QUATERNION() macro
  iio: adc: ti-ads1119: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  iio: imu: bno055: fix BNO055_SCAN_CH_COUNT off by one
  iio: hid-sensors: Use software trigger
  iio: adc: ad4062: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  iio: gyro: mpu3050: Fix out-of-sequence free_irq()
  iio: gyro: mpu3050: Move iio_device_register() to correct location
  iio: gyro: mpu3050: Fix irq resource leak
  iio: gyro: mpu3050: Fix incorrect free_irq() variable
  iio: imu: st_lsm6dsx: Set buffer sampling frequency for accelerometer only
  iio: imu: st_lsm6dsx: Set FIFO ODR for accelerometer and gyroscope only
  iio: dac: mcp47feb02: Fix mutex used before initialization
  iio: adc: ade9000: fix wrong return type in streaming push
  ...
2026-03-29 14:49:21 +02:00
Greg Kroah-Hartman
76dd7c74fd interconnect fix for v7.0-rc
This contains one driver fix for the current cycle.
 
 - interconnect: qcom: sm8450: Fix NULL pointer dereference in icc_link_nodes()
 
 Signed-off-by: Georgi Djakov <djakov@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEExQ4tCsdmOu34XfMFgNDMCsbYFmMFAmnCqX8ACgkQgNDMCsbY
 FmP7/hAAgyciZSmTF38nkOxsQokFogqVZ8YVygD0mG9CK2JL3cESaDVTPRg88fgX
 gAYqtnNDxNzdvTY2ZFk5JX60aym/PPn2eGHPRLSqrOTeVsCIi/SMAT8TxQ4tqCuY
 RofCKrktUEXpJy3gsP7Q4mLm/yCtKELLhxq8vc0ko9/35A+GgqWJtzyWOkW/3qnW
 XLORjLPwLJx5/hc+TqtQbGJzYfh9OhfJYXZU01auWeArlFp8Y3LLR/LJx9aySfkq
 g9IdGX7h6HHrEpOhMoZYNnUWGauMb4qMo7B5r9Cgr5KnW56Hk6sOBdvIszu283EM
 K3gxna2hLcua9JbgVLm1XUlLgu5fXb1K/+oh89qiSPSAwUK2f6dMD83uVS3FsGxG
 HvryvOyg748L8u8qnulctdmRY++yg1yfH5lTdfoYInkml1YVQ+kJZZ0la2jJoCpJ
 wkvpZP0LBlHeejGMyJ/q2r7aMcJLLO8UJi96YZtU1FU824jIxXwmokm3l9JtPcAR
 0Fg0DE3dULGPULJ89b4nwPKVFUN34GqcfqmMMZmXCJtubPV4yy+PvE6KS7PlzG4o
 eWxMU7eTFh8tTlG2EiRZoAC36CCwOsKDV82BESn6Qkvd/pVQ+NubrmbhBRAaCMXP
 1Wp3eUXK05JoCo9gOql2hJH34/tPQfmq9W14oZfDPeo87+Gz2TY=
 =3arT
 -----END PGP SIGNATURE-----

Merge tag 'icc-7.0-rc6' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-linus

interconnect fix for v7.0-rc

This contains one driver fix for the current cycle.

- interconnect: qcom: sm8450: Fix NULL pointer dereference in icc_link_nodes()

Signed-off-by: Georgi Djakov <djakov@kernel.org>

* tag 'icc-7.0-rc6' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc:
  interconnect: qcom: sm8450: Fix NULL pointer dereference in icc_link_nodes()
2026-03-29 14:47:30 +02:00
Greg Kroah-Hartman
a8a37957f2 IIO: New devices support, features and cleanup for 7.1
Includes merge of v7.0-rc4 to pull in a fix and a merge of
 ib-iio-thermal-qcom-pmic5 immutable branch (provided from the IIO tree so
 thermal could also pick this up and add thermal specific remainder
 of the series on top.
 
 New device support
 ------------------
 
 adi,ad4030
 - Add support for ADA4316 and ADAQ4224 ADCs with PGAs.
 adi,ad4080
 - Add support for AD4082, AD4085 and AD4088 ADCs.
 adi,ad8366
 - Add ADRF5702 and ADRF5703 digital step attenuators.
 adi,adxl372
 - Add support for the ADXL371 accelerometer after refactors to allow multiple
   device variants to be supported by the driver. In particular a silicon
   issue means the hardware FIFO doesn't work on the ADXL371
 bosch,bma255/bmg160
 - Add support for BMX055 gyroscope and magnetometer (effectively separate
   devices from point of view of interface).
 lltc,ltc2309
 - Add support for LTC2305 2 channel 12-bit ADC.
 lltc,ltc2532
 - Add support for 4 variants of the LTC2654 quad DAC.
 maxim,ds4424
 - Add IDs for DS4402 and DS4404 parts. Initially patch is ID only but additional
   features also added that are device dependent.
 qcom,spmi-adc-gen3
 - New driver supporting this generation of Qualcomm's SoC ADC.
 st,vl53l1
 - New driver for this Time Of Flight (TOF) sensor.
 ti,ina2xx
 - Support the INA236 digital power monitor.
 vishay,vcnl4000
 - Add support for CM36686 ambient light and proximity sensor.
 - Add support for CM36672P proximity sensors.
 
 ID only additions.
 amlogic,meson-adc
 - Support the Meson S4.
 
 Features
 --------
 
 iio-backend framework
 - Add capability discovery so front end drivers can know what features are
   available from the backend and adjust how they operate.
 adi,ad4030
 - Add SPI offload support requiring a non trivial PWM setup.
 adi,ad7380
 - Add support for multiple SPI lanes to improve throughput.
 adi,ad7768-1
 - Support SPI offload and always use continuous mode, enabling more
   filter options.
 adi,ad8366
 - Device tree bindings and support.
 aspeed,adc
 - Handle battery channel.
 maxim,ds4424
 - Add external resistor controlled scale and per-variant limits.
 - Handle per variant range limits.
 - Move it to regmap.
 motorola,cpcap-adc
 - Support for the ADC found on the Motorola Mot board. Effectively some board
   specific configuration handled in the driver.
 vishay,vcnl4000
 - Support explicit power supply regulators.
 tyhx,hx9023s
 - Allow device tree specification of firmware file name.
 
 Cleanup and minor fixes
 -----------------------
 
 treewide
 - Remove a bunch of unused structure elements.
 - Replaces standard fixed width integers with kernel types.
 - Replace some other error values that were returned on allocation failure
   with -ENOMEM
 iio-core
 - Replace a few custom devm implementations for devm_add_action_or_reset()
 iio-trigger
 - Use put_device() to cleanup on error.
 iio-backend
 - Use __free(fwmode_handle) to simplify some code.
 hw-consumer
 - Use separate allocation for scan mask bitmap to simplify code.
 acpi-als
 - Switch from ACPI driver to platform driver.
 adi,ad4030
 - Use BIT() to replace values that are always a power of 2 to slightly
   improve readability.
 adi,ad4062
 - Add a missing check for error form iio_get_current_scan_type()
 adi,ad5933
 - Use div64_ul() rather than do_div() as remainder was not used.
 adi,ad7191
 - Documentation fixes related to clocks
 adi,ad7816
 - Use sysfs_emit()
 adi,ad8366
 - General driver modernization
 adi,adf4350
 - Change a TOOD to NOTE in a comment to avoid anyone from walking into
   a tricky to improve corner case.
 adi,admv1013
 - Avoid a null pointer dereference if device_property_read_string() fails.
 adi,admv4420
 - Return error code rather than -1..
 adi,adxl345
 - Add separate scaling for events from that of raw channels.
 amlogic,meson-adc
 - Don't bother keeping nvmem cell access around when only used in probe.
 atmel,at91-sama5d
 - Don't bother keeping nvmem cell access around when only used in probe.
 bosch,bmc150
 - Use sysfs_emit() in a few places.
 honeywell,hsc030pa
 - Improve handling of return values from i2c_transfer.
 liteon,ltr501
 - Return error values rather than -1 replaced by -EINVAL at higher
   levels of the callstack.
 maxim,ds4424
 - A bunch of general minor improvements prior to adding new features.
 maxim,max11410
 - Make some const string arrays static.
 maxim,max5522
 - Use devm_regulator_get_enable_read_voltage() at probe to cache the
   voltage rather than keeping the regulator around to access and query
   later.
 vishay,vcnl4000
 - Various code improvements.
 sharp,gp2ap020a00f
 - General driver modernization.
 silabs,si7210
 - Use devm_regulator_get_enable_read_voltage() at probe to cache the
   voltage rather than keeping the regulator around to access and query
   later.
 st,lsm6dsx
 - Add SMOCF00 ACPI ID seen on products by SHIFT.
 st,st_sensors
 - Fix up various kernel-doc issues.
 - Avoid kmalloc of a single use buffer and instead reused existing
   buffer_data.
 taos,tsl2772
 - Fix some kernel-doc warnings due to missing :
 ti,ads7950
 - Use iio_push_to_buffers_with_ts_unaligned() as first few elements of
   array are not the data that is pushed.
 - Move from array of chip_info structures to individual named ones. This
   is part of slowly replacing use of a code pattern that we don't want
   replicated in new drivers.
 vti,sca3000
 - General driver modernization included use of devm and guard().
 
 Various other more minor stuff not called out explicitly.
 Includes things like typo fixes, use of dev_err_probe() and local
 variables to avoid repeated dereferencing of the same member as well as
 increasing use of guard() to simplify release of locks.
 
 Another slow improvement to code quality is both standardizing on
 header order and ensure all appropriate headers are included.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAmnINKERHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0FognJg//a2J1qP+D8gf3nfBdrTyLaS7DCQZib60V
 0wHrSewlT49fM2P1A4Y//cNV+wekb84EAmZLduxaRLkgHC8ZAeGxWy6DY2q0SFww
 AN20+6toP3M1J7eIRW7ENB7aqwAczu/SzU+6fGcwxGicbjorDE1iQHiR38eXuKqi
 l8kjV4YO4PICHkQWU7D0y2D7Nvp/BgBwDmtRzzfVdtIMYcyaOH5fvDFByfaQiTW6
 rftwvzFH3lgV2pMOMUDwa0e071DQhMLxjleFwAW5jbvMqXf/15379tVXhFA6BhMi
 T1wlB10w1xl0QBbmYJrDOIpaFT4BdET+pQyrlB74sDrVbFF2ip8a1e4ux0fCPZIZ
 qmBAjzTTtE36PFWVdak8PCasEuyKGEpsSMfSOpmZZEaXFTAjKISuKLZrCuHgmkIl
 BY+Vswq5trkLF3GLLc8me+4L3hG4ujx40OZEk42G2B10kAJXyvG5bHGeJ0Jy/B3O
 CaMweZJeDBloZyXwrgNx5n+wIeKm7g6SqcL+85XMSN9x+jh4FcBDoHTFXAq5kqlv
 u4hWg2fjoyu+O/CRHRBLIfg5CBd+8oNlf8kbSa1wx1VY4IHSO9z5Xj/se+VSTew3
 haCR/wvVG4Rs33krGyYnjMhoOGOnFZkiHoI85ATqsb+ZRzZdFWG+5mb5wN5Hgt5V
 I6KAnuZNsrI=
 =/WQe
 -----END PGP SIGNATURE-----

Merge tag 'iio-for-7.1a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next

Jonathan writes:

IIO: New devices support, features and cleanup for 7.1

Includes merge of v7.0-rc4 to pull in a fix and a merge of
ib-iio-thermal-qcom-pmic5 immutable branch (provided from the IIO tree so
thermal could also pick this up and add thermal specific remainder
of the series on top.

New device support
------------------

adi,ad4030
- Add support for ADA4316 and ADAQ4224 ADCs with PGAs.
adi,ad4080
- Add support for AD4082, AD4085 and AD4088 ADCs.
adi,ad8366
- Add ADRF5702 and ADRF5703 digital step attenuators.
adi,adxl372
- Add support for the ADXL371 accelerometer after refactors to allow multiple
  device variants to be supported by the driver. In particular a silicon
  issue means the hardware FIFO doesn't work on the ADXL371
bosch,bma255/bmg160
- Add support for BMX055 gyroscope and magnetometer (effectively separate
  devices from point of view of interface).
lltc,ltc2309
- Add support for LTC2305 2 channel 12-bit ADC.
lltc,ltc2532
- Add support for 4 variants of the LTC2654 quad DAC.
maxim,ds4424
- Add IDs for DS4402 and DS4404 parts. Initially patch is ID only but additional
  features also added that are device dependent.
qcom,spmi-adc-gen3
- New driver supporting this generation of Qualcomm's SoC ADC.
st,vl53l1
- New driver for this Time Of Flight (TOF) sensor.
ti,ina2xx
- Support the INA236 digital power monitor.
vishay,vcnl4000
- Add support for CM36686 ambient light and proximity sensor.
- Add support for CM36672P proximity sensors.

ID only additions.
amlogic,meson-adc
- Support the Meson S4.

Features
--------

iio-backend framework
- Add capability discovery so front end drivers can know what features are
  available from the backend and adjust how they operate.
adi,ad4030
- Add SPI offload support requiring a non trivial PWM setup.
adi,ad7380
- Add support for multiple SPI lanes to improve throughput.
adi,ad7768-1
- Support SPI offload and always use continuous mode, enabling more
  filter options.
adi,ad8366
- Device tree bindings and support.
aspeed,adc
- Handle battery channel.
maxim,ds4424
- Add external resistor controlled scale and per-variant limits.
- Handle per variant range limits.
- Move it to regmap.
motorola,cpcap-adc
- Support for the ADC found on the Motorola Mot board. Effectively some board
  specific configuration handled in the driver.
vishay,vcnl4000
- Support explicit power supply regulators.
tyhx,hx9023s
- Allow device tree specification of firmware file name.

Cleanup and minor fixes
-----------------------

treewide
- Remove a bunch of unused structure elements.
- Replaces standard fixed width integers with kernel types.
- Replace some other error values that were returned on allocation failure
  with -ENOMEM
iio-core
- Replace a few custom devm implementations for devm_add_action_or_reset()
iio-trigger
- Use put_device() to cleanup on error.
iio-backend
- Use __free(fwmode_handle) to simplify some code.
hw-consumer
- Use separate allocation for scan mask bitmap to simplify code.
acpi-als
- Switch from ACPI driver to platform driver.
adi,ad4030
- Use BIT() to replace values that are always a power of 2 to slightly
  improve readability.
adi,ad4062
- Add a missing check for error form iio_get_current_scan_type()
adi,ad5933
- Use div64_ul() rather than do_div() as remainder was not used.
adi,ad7191
- Documentation fixes related to clocks
adi,ad7816
- Use sysfs_emit()
adi,ad8366
- General driver modernization
adi,adf4350
- Change a TOOD to NOTE in a comment to avoid anyone from walking into
  a tricky to improve corner case.
adi,admv1013
- Avoid a null pointer dereference if device_property_read_string() fails.
adi,admv4420
- Return error code rather than -1..
adi,adxl345
- Add separate scaling for events from that of raw channels.
amlogic,meson-adc
- Don't bother keeping nvmem cell access around when only used in probe.
atmel,at91-sama5d
- Don't bother keeping nvmem cell access around when only used in probe.
bosch,bmc150
- Use sysfs_emit() in a few places.
honeywell,hsc030pa
- Improve handling of return values from i2c_transfer.
liteon,ltr501
- Return error values rather than -1 replaced by -EINVAL at higher
  levels of the callstack.
maxim,ds4424
- A bunch of general minor improvements prior to adding new features.
maxim,max11410
- Make some const string arrays static.
maxim,max5522
- Use devm_regulator_get_enable_read_voltage() at probe to cache the
  voltage rather than keeping the regulator around to access and query
  later.
vishay,vcnl4000
- Various code improvements.
sharp,gp2ap020a00f
- General driver modernization.
silabs,si7210
- Use devm_regulator_get_enable_read_voltage() at probe to cache the
  voltage rather than keeping the regulator around to access and query
  later.
st,lsm6dsx
- Add SMOCF00 ACPI ID seen on products by SHIFT.
st,st_sensors
- Fix up various kernel-doc issues.
- Avoid kmalloc of a single use buffer and instead reused existing
  buffer_data.
taos,tsl2772
- Fix some kernel-doc warnings due to missing :
ti,ads7950
- Use iio_push_to_buffers_with_ts_unaligned() as first few elements of
  array are not the data that is pushed.
- Move from array of chip_info structures to individual named ones. This
  is part of slowly replacing use of a code pattern that we don't want
  replicated in new drivers.
vti,sca3000
- General driver modernization included use of devm and guard().

Various other more minor stuff not called out explicitly.
Includes things like typo fixes, use of dev_err_probe() and local
variables to avoid repeated dereferencing of the same member as well as
increasing use of guard() to simplify release of locks.

Another slow improvement to code quality is both standardizing on
header order and ensure all appropriate headers are included.

* tag 'iio-for-7.1a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (217 commits)
  Docs: iio: ad7191 Correct clock configuration
  iio: amplifiers: ad8366: add support for adrf5702/3
  dt-bindings: iio: amplifiers: ad8366: add adrf5702/3 support
  iio: adc: meson-saradc: add support for Meson S4
  dt-bindings: iio: adc: amlogic,meson-saradc: add S4 compatible
  iio: imu: st_lsm6dsx: Add ACPI ID for SHIFT13mi gyroscope
  iio: proximity: add driver for ST VL53L1X ToF sensor
  dt-bindings: iio: proximity: add ST VL53L1X ToF sensor
  iio: adc: max11410: make vref register name arrays static const
  iio: accel: bmc150-accel-core: use sysfs_emit() in show functions
  iio: frequency: adf4350: replace TODO with NOTE in adf4350_set_freq()
  iio: adc: ltc2309: add support for ltc2305
  iio: adc: ltc2309: explicitly assign hex values to channel enums
  dt-bindings: adc: ltc2497: add support for ltc2305
  iio: accel: adxl380: fix typo in PART_ID register macro
  iio: dac: ds4424: add Rfs-based scale and per-variant limits
  dt-bindings: iio: dac: maxim,ds4424: add maxim,rfs-ohms property
  iio: dac: ds4424: convert to regmap
  iio: dac: ds4424: support per-variant output range limits
  iio: dac: ds4424: add DS4402/DS4404 device IDs
  ...
2026-03-29 14:35:31 +02:00
Tycho Andersen (AMD)
299933b118 x86/sev, crypto/ccp: Move SNP init to ccp driver
Use the new snp_prepare() to initialize SNP from the ccp driver instead of at
boot time. This means that SNP is not enabled unless it is really going to be
used (i.e. kvm_amd loads the ccp driver automatically).

Signed-off-by: Tycho Andersen (AMD) <tycho@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://patch.msgid.link/20260324161301.1353976-5-tycho@kernel.org
2026-03-29 12:32:09 +02:00
Tycho Andersen (AMD)
b65546b14d x86/sev: Create snp_shutdown()
After SNP_SHUTDOWN, two things should be done:

1. clear the RMP table
2. disable MFDM to prevent the FW_WARN in k8_check_syscfg_dram_mod_en() in
   the event of a kexec

Create and export to the CCP driver a function that does them.

Also change the MFDM helper to allow for disabling the bit, since the SNP x86
shutdown path needs to disable MFDM.

The comment for k8_check_syscfg_dram_mod_en() notes, the "BIOS" is supposed
clear it, or the kernel in the case of module unload and shutdown followed by
kexec.

Signed-off-by: Tycho Andersen (AMD) <tycho@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://patch.msgid.link/20260324161301.1353976-4-tycho@kernel.org
2026-03-29 12:15:17 +02:00
Takashi Iwai
277c6960d4 ALSA: ctxfi: Check the error for index mapping
The ctxfi driver blindly assumed a proper value returned from
daio_device_index(), but it's not always true.  Add a proper error
check to deal with the error from the function.

Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/87cy149n6k.wl-tiwai@suse.de
Link: https://patch.msgid.link/20260329091240.420194-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-03-29 11:13:53 +02:00
Takashi Iwai
b045ab3dff ALSA: ctxfi: Fix missing SPDIFI1 index handling
SPDIF1 DAIO type isn't properly handled in daio_device_index() for
hw20k2, and it returned -EINVAL, which ended up with the out-of-bounds
array access.  Follow the hw20k1 pattern and return the proper index
for this type, too.

Reported-and-tested-by: Karsten Hohmeier <linux@hohmatik.de>
Closes: https://lore.kernel.org/20260315155004.15633-1-linux@hohmatik.de
Cc: <stable@vger.kernel.org>
Link: https://patch.msgid.link/20260329091240.420194-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-03-29 11:13:42 +02:00
Cássio Gabriel
9220b8cc51 ALSA: hda: intel: Drop obsolete probe-work unlock workaround
Commit ab949d5196 ("ALSA: hda - Fix deadlock of controller device
lock at unbinding") added a temporary device_unlock()/device_lock()
pair around probe-work cancellation to avoid a deadlock between
controller unbind and codec probe.

That deadlock depended on the driver core taking both a device lock and
its parent lock during bind and unbind. Since commit 8c97a46af0
("driver core: hold dev's parent lock when needed") and follow-up
fixes, the parent lock is only taken when bus->need_parent_lock is set.
The HDA bus does not set that flag, so codec binding no longer locks
the controller device as the codec's parent.

Keep cancel_delayed_work_sync(), since the async probe/remove race
still needs to be serialized, but drop the stale unlock/relock
workaround and its outdated FIXME comment. Keeping it around only
opens an unnecessary unlocked window inside azx_remove().

Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
Link: https://patch.msgid.link/20260328-hda-intel-drop-obsolete-probe-workaround-v1-1-bc43aeafc98b@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-03-29 11:07:04 +02:00
Phil Willoughby
31183edd9c ALSA: usb-audio: tidy up the AF16Rig quirks
Use macros to make the AF16Rig quirk table smaller.

Add a disabled block containing the theoretical quirks for the other
clock sources that the AF16Rig has. It's disabled because I cannot test
it.

Fixes: 0da18c2dd1 ("ALSA: usb-audio: Add quirks for Arturia AF16Rig")
Tested-By: Phil Willoughby <willerz@gmail.com>
Signed-off-by: Phil Willoughby <willerz@gmail.com>
Link: https://patch.msgid.link/20260328160326.23665-1-willerz@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-03-29 11:06:22 +02:00
Miguel Ojeda
aa8f35172a pwm: th1520: fix CLIPPY=1 warning
The Rust kernel code should be kept `CLIPPY=1`-clean [1].

Clippy reports:

    error: this pattern reimplements `Option::unwrap_or`
      --> drivers/pwm/pwm_th1520.rs:64:5
       |
    64 | /     (match ns.checked_mul(rate_hz) {
    65 | |         Some(product) => product,
    66 | |         None => u64::MAX,
    67 | |     }) / NSEC_PER_SEC_U64
       | |______^ help: replace with: `ns.checked_mul(rate_hz).unwrap_or(u64::MAX)`
       |
       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#manual_unwrap_or
       = note: `-D clippy::manual-unwrap-or` implied by `-D warnings`
       = help: to override `-D warnings` add `#[allow(clippy::manual_unwrap_or)]`

Applying the suggestion then triggers:

    error: manual saturating arithmetic
      --> drivers/pwm/pwm_th1520.rs:64:5
       |
    64 |     ns.checked_mul(rate_hz).unwrap_or(u64::MAX) / NSEC_PER_SEC_U64
       |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_mul`: `ns.saturating_mul(rate_hz)`
       |
       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#manual_saturating_arithmetic
       = note: `-D clippy::manual-saturating-arithmetic` implied by `-D warnings`
       = help: to override `-D warnings` add `#[allow(clippy::manual_saturating_arithmetic)]`

Thus fix it by using saturating arithmetic, which simplifies the code
as well.

Link: https://rust-for-linux.com/contributing#submit-checklist-addendum [1]
Fixes: e03724aac7 ("pwm: Add Rust driver for T-HEAD TH1520 SoC")
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Michal Wilczynski <m.wilczynski@samsung.com>
Link: https://patch.msgid.link/20260121183719.71659-1-ojeda@kernel.org
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
2026-03-29 09:37:13 +02:00