summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-07-03perf test: Extend perf kvm tests to check default eventNamhyung Kim
It can now pass command line arguments to perf kvm record. Let's pass 'sleep 1' directly and see it doesn't fail. $ sudo perf test -vv kvm 96: perf kvm tests: ---- start ---- test child forked, pid 3686726 Starting qemu-system-x86_64... Testing perf kvm stat Recording kvm events for pid 3686746 (duration 1s)... perf kvm stat test [Success] Testing perf kvm record/report Recording kvm profile for pid 3686746 (duration 1s)... [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.576 MB /tmp/__perf_kvm_test.perf.data.0HgX6 (4009 samples) ] perf kvm record/report test [Success] Testing perf kvm buildid-list perf kvm buildid-list test [Success] Testing perf kvm stat live perf kvm stat live test [Success] Testing perf kvm record default event with command line [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.000 MB /dev/null ] perf kvm record default event [Success] ---- end(0) ---- 96: perf kvm tests : Ok === Test Summary === Passed main tests : 1 Passed subtests : 0 Skipped tests : 0 Failed tests : 0 Tested-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03perf kvm: Fix a memory leak in the usage stringNamhyung Kim
The first element of the kvm_usage string is allocated dynamically by parse_options_subcommand() if it's NULL. Callers should free it after use. Tested-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03perf kvm: Do not copy filename stringNamhyung Kim
As it removed STRDUP_FAIL_EXIT(), it no longer calls free() for elements in the copied argv. Thus, the filename should not be allocated as well. In fact, it's a pointer to string literals and should be fine to pass the pointer. Tested-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03perf kvm: Kill STRDUP_FAIL_EXIT()Namhyung Kim
It's used to pass command line options to a copied argv. But there's no reason to make the copies as it's all used in the same function. It can simply use stack variables. In fact, it fixes a subtle double free issue. As parse_options() can move contents in argv[], some entries may point to the same item. So freeing all items in the argv could trigger a double free. With stack variables, we don't need to allocate and free them. Tested-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03perf kvm: Check kvm_need_default_arch_event() earlyNamhyung Kim
There's a subtle issue with option parsing in perf record. It calls the function with PARSE_OPT_STOP_AT_NON_OPTION so that it can pass later options to the external command it runs. But perf kvm record passes the default arch events after the argv. So if user calls it with command, then it passes the event to the external command and fails it like below: $ sudo perf kvm --host record sleep 1 sleep: invalid option -- 'e' Try 'sleep --help' for more information. [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.046 MB perf.data.kvm (5 samples) ] We can check if the default options are needed before passing the extra command line to make sure it's passed to perf record. Tested-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03perf kvm: Factor out kvm_need_default_arch_event()Namhyung Kim
The kvm_add_default_arch_event() has a similar logic in each arch to check if there's an existing command line option for events. Let's check it in the generic code and remove the duplication. Tested-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03perf symbols: skip livepatch symbols in kcore_copy kallsyms processingJoe Lawrence
Livepatch symbols (.klp.sym.*) carry a [module] tag but resolve to core kernel text addresses. When kcore_copy__process_kallsyms() encounters these symbols, they are treated as module symbols, pulling the first_module_symbol down to a kernel text address. This corrupts the module memory range used to build the kcore PT_LOAD segments. For example, with a kpatch module containing a ".klp.sym.vmlinux.arch_release_task_struct,0" livepatch symbol loaded: kernel symbols ... ffffffffb4a41120 arch_release_task_struct ... ^ ... | aliased by .klp.sym ... | drags first_module_symbol here | (43M gap) | bloated kcore segment | module symbols | ffffffffc047b000 <-- correct first_module_symbol ... ... This causes the module PT_LOAD segment to start at the .klp.sym address and not the real first module address, bloating the kcore copy: Baseline (no livepatch): VirtAddr ffffffffc047b000, 8.5M Bloated (with livepatch): VirtAddr ffffffffb4a41000, 54M Post-fix (with livepatch): VirtAddr ffffffffc047b000, 8.9M Filter livepatch symbols early in kcore_copy__process_kallsyms() before they can affect module boundary tracking. Reported-by: Sashiko <sashiko-bot@kernel.org> Link: https://sashiko.dev/#/patchset/20260624201254.472576-1-joe.lawrence@redhat.com?part=1 Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Acked-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03perf symbols: skip livepatch symbols when loading kallsymsJoe Lawrence
Livepatch modules contain special symbols (prefixed by ".klp.sym.") that act as relocation placeholders. Once resolved, they point to the same addresses as the original kernel symbols they reference. [1] These special symbols confuse the 'vmlinux symtab matches kallsyms' perf test as kallsyms may report multiple symbols sharing a single kernel address. For example: kallsyms (without livepatch) ---------------------------- ffffffff81a41110 T __pfx_arch_release_task_struct > ffffffff81a41120 T arch_release_task_struct ffffffff81a41140 T __pfx_exit_thread ffffffff81a41150 T exit_thread kallsyms (with livepatch loaded) --------------------------------- ffffffff81a41110 T __pfx_arch_release_task_struct > ffffffff81a41120 T arch_release_task_struct ffffffff81a41140 T __pfx_exit_thread ffffffff81a41150 T exit_thread > ffffffff81a41120 w .klp.sym.vmlinux.arch_release_task_struct,0 [kpatch_5_14_0_570_94_1_1_3] When perf loads kallsyms, both symbols are inserted into the symbol table at the same address, corrupting symbol end-address calculations and causing test failures. Filter out symbols prefixed with ".klp.sym." when loading kallsyms, as they alias existing kernel symbols. Link: https://docs.kernel.org/livepatch/module-elf-format.html#livepatch-symbols [1] Reported-and-tested-by: Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Acked-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-07-03Merge tag 'nf-next-26-07-02' of ↵Paolo Abeni
https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf-next Florian Westphal says: ==================== netfilter: updates for net-next The following patchset contains Netfilter updates for *net-next*. 1) Update nfnetlink_hook to dump the individual NAT type chains instead of the nat base chains to userspace. From Phil Sutter. 2) Replace strlcpy/strlcat() with snprintf() in x_tables, from Ian Bridges. 3) Start replacing u_int8_t and u_int16t with u8 and u16 in netfilter. From Carlos Grillet. 4) Replace strcpy() with strscpy() in netfilter, from David Laight. 5) Remove redundant NULL check before kvfree(). 6) Add parameter validation to xt_tcpmss. Ensure mss_min <= mss_max and invert <= 1. From Feng Wu. 7) Add checkentry for xt_dscp 'tos' match. Implement tos_mt_check() to reject invalid invert values. Also from Feng Wu. 8) Stop hashing nf_conntrack_helper by tuple. Switch to hashing by name and L4 protocol. 9) Remove tuples from conntrack helper definitions and port usage from broadcast helpers. Add netlink policy validation to prevent protocol number truncation. 10) Remove obsolete netfilter conntrack module parameters. 11) Bound num_counters in ebtables: do_replace() by MAX_EBT_ENTRIES to prevent oversized vmalloc_array() allocations. From Jiayuan Chen. 12) Make expectations created via nft_ct rules work with NAT. netfilter pull request nf-next-26-07-02 * tag 'nf-next-26-07-02' of https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf-next: netfilter: nft_ct: support expectation creation for natted flows netfilter: ebtables: bound num_counters like nentries in do_replace() netfilter: conntrack: remove obsolete module parameters netfilter: conntrack: get rid of tuple in helper definitions netfilter: nf_conntrack_helper: do not hash by tuple netfilter: xt_dscp: add checkentry for tos match netfilter: xt_tcpmss: add checkentry for parameter validation netfilter: remove redundant null check before kvfree() netfilter: avoid strcpy usage netfilter: replace u_int8_t and u_int16t with u8 and u16 netfilter: x_tables: replace strlcat() with snprintf() netfilter: nfnetlink_hook: Dump nat type chains ==================== Link: https://patch.msgid.link/20260702105003.13550-1-fw@strlen.de Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-03x86/platform/quark: Fix kernel-doc warnings in imr.cRandy Dunlap
Fix all kernel-doc warnings in imr.c: imr.c:300: warning: Function parameter or struct member 'rmask' not described in 'imr_add_range' imr.c:300: warning: Function parameter or struct member 'wmask' not described in 'imr_add_range' imr.c:300: warning: Excess function parameter 'read_mask' description in 'imr_add_range' imr.c:300: warning: Excess function parameter 'write_mask' description in 'imr_add_range' Fixes: 28a375df16c2 ("x86/intel/quark: Add Isolated Memory Regions for Quark X1000") Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://patch.msgid.link/20250620065639.3348609-1-rdunlap@infradead.org
2026-07-03iio: resolver: ad2s1210: refactor trigger handlerDavid Lechner
Refactor the trigger handler to avoid use of goto in a guard() scope. Ideally, we should not be mixing goto and automatic cleanup. iio_trigger_notify_done() was not part of the critical section anyway, so is not moved to the new function. Signed-off-by: David Lechner <dlechner@baylibre.com> Reviewed-by: Stepan Ionichev <sozdayvek@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2026-07-03dt-bindings: iio: scd30: update maintainers fieldTomasz Duszynski
I was dropped as maintainer because emails to my previous address were bouncing. I have not stepped down from maintainership, so re-add me with my current email address. Signed-off-by: Tomasz Duszynski <tduszyns@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2026-07-03iio: chemical: scd30: update email for Tomasz DuszynskiTomasz Duszynski
The old email has been inactive for a while. Replace all occurrences with the current address. While at it, add myself to MAINTAINERS file as relevant driver files still hold my address. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Acked-by: Maxwell Doose <m32285159@gmail.com> Signed-off-by: Tomasz Duszynski <tduszyns@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2026-07-03iio: chemical: sps30: update email for Tomasz DuszynskiTomasz Duszynski
The old email has been inactive for a while. Replace all occurrences with the current address. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Acked-by: Maxwell Doose <m32285159@gmail.com> Signed-off-by: Tomasz Duszynski <tduszyns@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2026-07-03mailmap: add email mapping for Tomasz DuszynskiTomasz Duszynski
Old email is no longer valid hence add mapping to avoid bounces. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Acked-by: Maxwell Doose <m32285159@gmail.com> Signed-off-by: Tomasz Duszynski <tduszyns@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2026-07-03iio: adc: ti-adc084s021: use dev_err_probe for probe time errorPrashant Rahul
This simplifies error handling and ensures consistent error reporting. Signed-off-by: Prashant Rahul <prashantrahul23@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2026-07-03ARM: mark footbridge as deprecatedArnd Bergmann
Along with RiscPC and SA1100, these are the last remaining Intel StrongARM machines. The Corel NetWinder used to be particular popular in the late 1990s, but was discontinued during the bankruptcy of rebel.com in 2001. The other machine is the DEC (later Intel) EBSA285 evaluation board that was made in small numbers in 1997 for software developers. The footbridge/netwinder platform was the main target for the first Debian 2.0 "Hamm" release on the Arm architecture back in 1998, but was dropped in Debian 6.0 "Squeeze" in 2011, which only supported ARMv4T and higher with the EABI based ports as ARMv4 hardware had fallen already out of use by that time. Link: http://netwinder.org/ Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Russell King <linux@armlinux.org.uk> Acked-by: Ralph Siemsen <ralphs@netwinder.org> Acked-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: mark RiscPC as deprecatedArnd Bergmann
This platform is the oldest still supported machine, dating back to the original 1994 ARM610 version. The only currently supported configuration uses an ARMv4 StrongARM but still requires building for ARMv3 because of the board design not supporting 16-bit data access. ARMv3 support has been removed in gcc-9, and the gcc-8 release is already old but still supported for building the kernel. The only set of machines that lacks support for 16-bit load/store instructions (Alpha EV5 and older) was recently removed from the kernel. Since there is little hope of this being maintainable much longer, plan to remove it in early 2027 while it is still expected to mostly work. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: mark mach-sa1100 as deprecatedArnd Bergmann
Most of the old StrongARM1100 machines were removed two years ago as part of a wider cleanup, the remaining four were left either because someone showed interest in converting them to devicetree, or because they were still supported by qemu and therefore useful to keep the platform alive. None of the devicetree conversion actually happened, and qemu has marked the platform as deprecated, so do the same in the kernel now. If anyone is still running one of these four machines and planning to keep updating their kernels, please speak up now so we can adapt the plans as needed. If nobody is found using StrongARM1100 any more, it can be removing during 2027, leaving 7.3-LTS as the last longterm support kernel for it. Acked-by: Linus Walleij <linus.walleij@linaro.org> Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: orion5x: mark all board files as deprecatedArnd Bergmann
Conversion of the old orion5x board files to devicetree has stalled over the past few years, so it seems better to remove the remaining ones in order to allow cleaning up the device drivers. Debian and OpenWRT no longer support orion5x, and buildroot could keep using linux-7.3-LTS for a few more years. Jeremy Peper still plans to convert the Terastation 2 Pro to devicetree in the future, but that can be done even after it is removed. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: PXA: mark remaining board files as deprecatedArnd Bergmann
In the 2021 board file removal, the gumstix and sharpsl support was left around in order to make it easier to convert more of the PXA platform to device tree, given that both platforms had some level of support in qemu. As far as I can tell, nobody has worked on additional DT conversion in that time, and qemu has in turn deprecated the entire PXA platform. Schedule the remaining board files for removal now, as they are unlikely to be of any help in the future. If anyone wants to revive support for these machines, they can obviously still contribute device tree based code and work on updating the corresponding drivers. Any drivers that are only usable on legacy PXA board files can also get removed along with the boards, or saved by adding devicetree support. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: mark ARCH_DOVE as deprecatedArnd Bergmann
The Marvell Armada 510 (Dove) platform is supported both as devicetree and atags/boardfile variants, with varying degrees of hardware support. Russell was the last known user of the board file version, and there are very few users overall. Unless Russell still needs this variant, let's remove after the next LTS kernel, leaving the CONFIG_MACH_DOVE variant with devicetree. Reviewed-by: Ethan Nelson-Moore <enelsonmoore@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: mark IWMMXT as deprecatedArnd Bergmann
With no remaining users and support getting removed from future compilers, there seems little point in keeping iwmmxt around much longer. On the other hand, the iwmmxt support in the kernel rarely gets in the way, so there is little cost, so set a removal date of early 2027 for the moment. If anyone is still using this, it can be extended as long there is binutils support. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: update FPE_NWFPE help textArnd Bergmann
The help text is seriously outdated and predates the introduction of VFP floating point units that were available as early as some ARM926 based systems. Change the help text to reflect that this is now a legacy feature and that it will go away along with OABI support in the future. Acked-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Ralph Siemsen <ralphs@netwinder.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: s3c64xx: extend deprecation scheduleArnd Bergmann
Mark Brown is still using this machine for regular work, so it should not be removed as originally scheduled. Give the platform another year, with the option to extend it further based on the state of ATAGS support next year. I expect that we end up removing all of s3c64xx when either Mark has moved his test setup to other hardware, or when all other ATAGS based machines are getting removed. Cc: Mark Brown <broonie@kernel.org> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: update DEPRECATED_PARAM_STRUCT removal timelineArnd Bergmann
This configuration option is for the older boot method that preceeded ATAGS. This was scheduled for removal back in 2001, but the removal never happened, presumably because nobody cared enough to actually do it, not because there are any users left. Add "(DEPRECATED)' to the Kconfig line and update the timeline so we can remove it next year along with the other options that are not scheduled for that timeframe. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: mark CPU_ENDIAN_BE8 as deprecatedArnd Bergmann
Following the deprecation of big-endian ARMv8 mode in arch/arm64 in commit 1cf89b6bf660 ("arm64: Kconfig: Make CPU_BIG_ENDIAN depend on BROKEN"), this does the same for ARMv7 (and v6), leaving the code around but disabled by default: There are no known products that make use of this mode any more, and it only hangs around for testing that it still works. At the moment, there are no known bugs with big-endian ARMv7 mode, but it does break occasionally and require someone to fix it. By marking the code as 'depends on BROKEN' now, it will no longer be covered by CI testing. If any users remain, they can keep patching out the dependency but are more likely to run into regressions. The big-endian ARMv5 support (CONFIG_CPU_ENDIAN_BE32) in contrast is still used on Intel IXP4xx platform, and is the only currently supported mode there, so this one can still be enabled. There is no timeline for actually removing the code at this point, we will likely debate this if we ever remove IXP4xx support on arm, or big-endian support on ARM64. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: turn CONFIG_ATAGS off by defaultArnd Bergmann
Only a very small number of machines remain that rely on traditional board files with the ATAGS boot data instead of devicetree, and we have not accepted new ones for a decade. Most of the remaining ones are on their way out of the kernel, but the Kconfig option that controls ATAGS is still enabled by default. To reflect the actual status of ATAGS support and alert the remaining users of upstream and out-of-tree platforms with this, change it to being default-disabled and add a dependency on CONFIG_EXPERT. The board specific defconfig files that rely on ATAGS are changed to turn on both EXPERT and ATAGS if they were not doing that already, and the ones that explicitly turned it off before no longer need to. Acked-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Ethan Nelson-Moore <enelsonmoore@gmail.com> Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: deprecate support for ARM1136r0Arnd Bergmann
This CPU revision remains a special case as it is now incompatible with CONFIG_SMP. Only the Nokia N8x0 is used in practice, and even that one is fairly rare these days, so let's plan to remove all of them after the 2026 LTS kernel release. Acked-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Vladimir Zapolskiy <vz@mleia.com> # Freescale i.MX31 Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: rework ARM11 CPU selection logicArnd Bergmann
Support for SMP on ARM1136r0 has been broken for a while, and nobody is working on fixing it. I had a plan to change ARMv6 support to no longer coexist in a common kernel with ARMv7 CPUs but instead ARMv5 and below. This would have addressed the problem, but after a recent mailing list discussion, we concluded that an easier approach is to just forbid ARM1136r0 CPU support on SMP-enabled kernels. This mainly affects users of the Nokia N800/N810 tablets using an OMAP2420 SoC, which is the only commercial product with an ARM1136r0 that is still supported by the kernel. The other machines that are still in the same hardware catogory are: - TI OMAP2420 H4 reference board - TI OMAP2430 SDP software development platform - Freescale/NXP i.MX31 Lite Development Kit - Buglabs i.MX31 Bug 1.x prototype - Arm Integrator/AP with CM1136JF-S core module To my knowledge, none of these have any actual users aside from reference boards being used to more easily test the platforms. There are also a few ARM1136r1 machines, which implement the ARMv6K SMP support (barriers, atomics and TLS): - Eukrea CPUIMX35 reference platform - Freescale/NXP i.MX35 Product Development Kit - ARM Integrator/CP/IM-LT3 with ARM1136J Core Tile - ARM Realview/EB with ARM1136J Core Tile Again, these are mainly reference implementations rather than actual products, but since they support ARMv6K, they should continue to work correctly in SMP-enabled kernels. For the ARM Core Tile, I have not found a datasheet but instead use the revision based on what the respective virtual models report. All the other ARMv6 platforms use an ARM1176 with ARMv6K, VMSAv7 and Trustzone support. To avoid the broken configuration, annotate the ARM1136 based machines with specific CPU_ARM1136R0 or CPU_ARM1136R2 symbols in Kconfig and make the r0 variants depend on !SMP. Link: https://lore.kernel.org/linux-arm-kernel/2831c5a6-cfbf-4fe0-b51c-0396e5b0aeb7@app.fastmail.com/T/ Acked-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: limit OABI support to StrongARM CPUsArnd Bergmann
As discussed on the mailing lists, there is no way to build OABI userspace binaries any more since gcc-4.8, and now support is also getting dropped in binutils, which will make it impossible to build pure OABI kernels at some point in the future. I found no evidence of anyone still sing OABI userspace on embedded systems that keep getting kernel updates, but there are a few desktop-class machines that date back to the 1990s using Intel StrongARM processors that were supported by old versions of Debian, Red Hat or the official Corel Netwinder distribution. Add a much stricter Kconfig dependency for both native OABI and OABI_COMPAT enabled kernels, only allowing either of them to be selected when building a kernel that targets a StrongARM based machine. Link: https://lore.kernel.org/lkml/2831c5a6-cfbf-4fe0-b51c-0396e5b0aeb7@app.fastmail.com/ Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03ARM: use CONFIG_AEABI by default everywhereArnd Bergmann
On ARMv4 and ARMv5, the default is still to build for OABI, with CONFIG_AEABI disabled, even though distros and toolchains no longer support OABI as a target. Change the default to EABI for all architecture levels and change the defconfig entries as follows: - All machines that used to explicitly enable EABI can drop that line now - Machines that are likely to actually use old distros and had NWFPE enabled in combination with OABI (rpc, footrbridge, netwinder, assabet, neponset) explicitly turn it on now. - Machines that already had both EABI and NWFPE disabled in defconfig (spear3xx, spear6xx) were likely not usable with either OABI or EABI and now use EABI instead implicitly, making it more likely that they could work. Acked-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com> Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP Acked-by: Alexander Sverdlin <alexander.sverdlin@siemens.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03iio: imu: st_lsm6dsx: deselect shub page before reading whoamiAndreas Kempe
As part of driver initialization, e.g. st_lsm6dsx_init_shub() selects the shub register page using st_lsm6dsx_set_page(). Selecting the shub register page shadows the regular register space so whoami, among other registers, is no longer accessible. In applications where the IMU is permanently powered separately from the processor, there is a window where a reset of the CPU leaves the IMU in the shub register page. Once this occurs, any subsequent probe attempt fails because of the register shadowing. Using the ism330dlc, the error typically looks like st_lsm6dsx_i2c 3-006a: unsupported whoami [10] with the unknown whoami read from a reserved register in the shub page. The reset register is also shadowed by the page select, preventing a reset from recovering the chip. Unconditionally clear the shub page before the whoami readout to ensure normal register access and allow the initialization to proceed. Place the fix in st_lsm6dsx_check_whoami() before the whoami check because hw->settings, which st_lsm6dsx_set_page() relies on, is first assigned in that function. Placing the fix in a more logical place than the whoami check would require a bigger restructuring of the code. Fixes: c91c1c844ebd ("iio: imu: st_lsm6dsx: add i2c embedded controller support") Signed-off-by: Andreas Kempe <andreas.kempe@actia.se> Acked-by: Lorenzo Bianconi <lorenzo@kernel.org> Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2026-07-03drm/xe: Documentation: fix chars used for subsectionRafael Passos
Fixes "ERROR: A level 2 section cannot be used here". Equal signs are reserved for document titles. This file docs gets imported by driver-uapi.rst, and the page title is defined there. Signed-off-by: Rafael Passos <rafael@rcpassos.me> Reviewed-by: Randy Dunlap <rdunlap@infradead.org> Tested-by: Randy Dunlap <rdunlap@infradead.org> Link: https://patch.msgid.link/20260701012141.167868-1-rafael@rcpassos.me Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> [Rodrigo modified the subject while pushing it]
2026-07-03Merge branch 'acpi-tad'Rafael J. Wysocki
Merge an ACPI TAD (Time and Alarm Device) driver fix for 7.2-rc2. * acpi-tad: ACPI: TAD: Check AC wake capability before enabling wakeup
2026-07-03drm/xe: remove duplicate <kunit/test-bug.h> includeAnas Khan
xe_pci.c includes <kunit/test-bug.h> twice, separated only by the <kunit/test.h> include. Drop the redundant second include; this is a non-functional cleanup flagged by scripts/checkincludes.pl. Fixes: 6cad22853cb8 ("drm/xe/kunit: Add stub to read_gmdid") Signed-off-by: Anas Khan <anxkhn28@gmail.com> Link: https://patch.msgid.link/20260702112820.34675-1-anxkhn28@gmail.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2026-07-03MAINTAINERS: Track dw-hdmi-qp under Rockchip DRM driversCristian Ciocaltea
The DW HDMI QP TX library was developed for and is currently only used by Rockchip platforms. Add it to the Rockchip DRM drivers section to ensure all relevant parties are kept in the loop on any changes. As its file paths fall outside the generic wildcard patterns defined in the ARM/Rockchip SoC support section, also add the linux-rockchip@lists.infradead.org mailing list to avoid any notification gaps. Acked-by: Andy Yan <andy.yan@rock-chips.com> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patch.msgid.link/20260612-maintainers-rk-drm-upd-v2-1-3ff65fc41a93@collabora.com
2026-07-03drm/xe: Wait on external BO kernel fences in exec IOCTLMatthew Brost
Before arming a user job, xe_exec_ioctl() only added the VM's dma-resv KERNEL slot as a dependency. That slot covers rebinds and the kernel operations of the VM's private BOs, but not external BOs (bo->vm == NULL), which carry their kernel operations (evictions, moves, ...) in their own dma-resv KERNEL slot. The DMA_RESV_USAGE_KERNEL slot is the cross-driver contract for memory management operations that must complete before the BO or its backing store may be used: any accessor is required to wait on the KERNEL fences before touching the resv. By skipping the external BOs' KERNEL slots, the exec path violated that contract and could schedule a user job while a kernel operation on an external BO mapped by the VM was still in flight, racing against it and potentially reading or writing memory that was being moved. Replace the VM-only dependency with an iteration over every object locked by the exec, adding each object's KERNEL slot as a job dependency. This covers the VM resv (rebinds and private BOs) as well as every external BO, mirroring the drm_gpuvm_resv_add_fence() call that later publishes the job fence to the same set of objects. Long-running mode continues to skip this, as before. Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs") Cc: stable@vger.kernel.org Assisted-by: GitHub_Copilot:claude-opus-4.8 Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patch.msgid.link/20260702215805.4011228-1-matthew.brost@intel.com
2026-07-03tools/nolibc: mark arg1 operand in __nolibc_syscall0() as write-onlyThomas Weißschuh
__nolibc_syscall0() does not set the arg1 variable before passing it to the asm block. This uninitialized variable read is undefined behavior. Clang can miscompile this. Mark the asm operand as write-only to fix this. Fixes: 8e1930296f92 ("tools/nolibc: Add support for SPARC") Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Acked-by: Willy Tarreau <w@1wt.eu> Link: https://patch.msgid.link/20260703-nolibc-sparc-asm-v1-1-c7fe73e2e777@weissschuh.net
2026-07-03selftests/nolibc: Add test for getcwd() and readlink()Daniel Palmer
Add a test that uses both getcwd() and readlink() so that both are exercised. First the happy path is tested by fetching what should be the same string via getcwd() and readlink() and checking they match. Then a few different combinations of bad parameters are passed to getcwd() to make sure it returns NULL and sets errno in those cases. Signed-off-by: Daniel Palmer <daniel@thingy.jp> Link: https://patch.msgid.link/20260702085101.3304547-4-daniel@thingy.jp Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
2026-07-03Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf 7.2-rc2Daniel Borkmann
Cross-merge BPF and other fixes after downstream PR. Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2026-07-03drm/bridge: analogix_dp: Apply standard DP training delay helpersDamon Ding
Replace hardcoded fixed usleep_range() delays during clock recovery and channel equalization with drm_dp_link_train_clock_recovery_delay() and drm_dp_link_train_channel_eq_delay() helpers. The original fixed delays are only valid for the case where bit[6:0] of DPCD TRAINING_AUX_RD_INTERVAL(0000Eh) is 0x00, while core helpers apply spec-compliant timings matching actual receiver capability values. Additionally, add dpcd buffer to struct analogix_dp_device to cache receiver capabilities. Call drm_dp_read_dpcd_caps() at commit entry to populate cached DPCD data for subsequent link training steps, and prepare for further usage of other DP helper APIs. Signed-off-by: Damon Ding <damon.ding@rock-chips.com> Tested-by: Vicente Bergas <vicencb@gmail.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patch.msgid.link/20260623075207.320603-1-damon.ding@rock-chips.com
2026-07-03Merge branch ↵Paolo Abeni
'net-mlx5e-fix-crashes-in-dynamic-per-channel-stats-and-hv-vhca-agent' Tariq Toukan says: ==================== net/mlx5e: Fix crashes in dynamic per-channel stats and HV VHCA agent Since per-channel stats were converted to be allocated and published lazily at first channel open in commit fa691d0c9c08 ("net/mlx5e: Allocate per-channel stats dynamically at first usage"), priv->channel_stats[] and priv->stats_nch are filled in incrementally during interface bring-up. This opened a window in which the various stats readers - most of them reachable from userspace via netlink/netdev stats queries - can race with mlx5e_open_channel() on another CPU and observe partially initialized state. The HV VHCA stats agent, which is created before the channels are opened, hits related problems of its own. This series by Feng fixes the resulting crashes. V3: https://lore.kernel.org/all/20260622083646.593220-1-tariqt@nvidia.com/ V2: https://lore.kernel.org/all/20260617140127.573117-1-tariqt@nvidia.com/ ==================== Link: https://patch.msgid.link/20260630115151.729219-1-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-03net/mlx5e: Fix publication race for priv->channel_stats[]Feng Liu
mlx5e_channel_stats_alloc() publishes a new entry to priv->channel_stats[] and then increments priv->stats_nch as a publication token, but neither store carries any memory barrier: priv->channel_stats[ix] = kvzalloc_node(...); if (!priv->channel_stats[ix]) return -ENOMEM; priv->stats_nch++; Concurrent readers compute the loop bound from priv->stats_nch and then dereference priv->channel_stats[i] using plain accesses, e.g. for (i = 0; i < priv->stats_nch; i++) { struct mlx5e_channel_stats *cs = priv->channel_stats[i]; ... cs->rq.packets ... } On weakly-ordered architectures (ARM, PowerPC, RISC-V) the writes to channel_stats[ix] and stats_nch may become visible to other CPUs out of program order. A reader can observe stats_nch == N while still seeing channel_stats[N-1] == NULL, leading to a NULL pointer dereference in the channel_stats loop. This has been observed in production on BlueField-3 DPUs (arm64), where ovs-vswitchd queries netdev statistics over netlink during NIC bringup, racing mlx5e_open_channel() -> mlx5e_channel_stats_alloc() on another CPU: Unable to handle kernel NULL pointer dereference at virtual address 0x840 Hardware name: BlueField-3 DPU pc : mlx5e_fold_sw_stats64+0x30/0x180 [mlx5_core] Call trace: mlx5e_fold_sw_stats64+0x30/0x180 [mlx5_core] dev_get_stats+0x50/0xc0 ovs_vport_get_stats+0x38/0xac [openvswitch] ovs_vport_cmd_fill_info+0x194/0x290 [openvswitch] ovs_vport_cmd_get+0xbc/0x10c [openvswitch] genl_family_rcv_msg_doit+0xd0/0x160 genl_rcv_msg+0xec/0x1f0 netlink_rcv_skb+0x64/0x130 genl_rcv+0x40/0x60 netlink_unicast+0x2fc/0x370 netlink_sendmsg+0x1dc/0x454 ... __arm64_sys_sendmsg+0x2c/0x40 Add mlx5e_stats_nch_write() and mlx5e_stats_nch_read() helpers in en.h that wrap the smp_store_release()/smp_load_acquire() pair on stats_nch. The release/acquire pair establishes the contract: stats_nch == N => channel_stats[0..N-1] are visible and non-NULL. Publish the stats_nch increment via mlx5e_stats_nch_write() in the writer (mlx5e_channel_stats_alloc()), and read stats_nch via mlx5e_stats_nch_read() in all readers: mlx5e RX/TX queue stats, mlx5e_get_base_stats(), ethtool channels stats, IPoIB stats, the sw_stats fold and the HV VHCA stats agent. Fixes: fa691d0c9c08 ("net/mlx5e: Allocate per-channel stats dynamically at first usage") Signed-off-by: Feng Liu <feliu@nvidia.com> Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com> Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com> Reviewed-by: Nimrod Oren <noren@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260630115151.729219-4-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-03net/mlx5e: Fix HV VHCA stats agent registration raceFeng Liu
mlx5e_hv_vhca_stats_create() registers the stats agent through mlx5_hv_vhca_agent_create(). The helper publishes the agent in hv_vhca->agents[type] under agents_lock and immediately schedules an asynchronous control invalidation on the HV VHCA workqueue before returning to mlx5e. The asynchronous invalidation invokes the control agent's invalidate callback, which reads the hypervisor control block and forwards the command to mlx5e_hv_vhca_stats_control(). That callback may either: - call cancel_delayed_work_sync(&priv->stats_agent.work), or - call queue_delayed_work(priv->wq, &sagent->work, sagent->delay). However, the delayed_work and priv->stats_agent.agent are only initialized after mlx5_hv_vhca_agent_create() returns to mlx5e: agent = mlx5_hv_vhca_agent_create(...); /* publish + invalidate */ ... priv->stats_agent.agent = agent; /* too late */ INIT_DELAYED_WORK(&priv->stats_agent.work, ...); /* too late */ If the asynchronous control path runs before the two assignments above, it can: - Operate on an uninitialized delayed_work whose timer.function is NULL. queue_delayed_work() calls add_timer() unconditionally, so when the timer expires the timer softirq invokes a NULL function pointer. - Re-initialize the timer later through INIT_DELAYED_WORK() while the timer is already enqueued in the timer wheel, corrupting the hlist (entry.pprev cleared while the previous bucket node still points at this entry). - When the worker eventually runs, mlx5e_hv_vhca_stats_work() reads sagent->agent (NULL) and dereferences it inside mlx5_hv_vhca_agent_write(). Fix this by: - Initializing priv->stats_agent.work before invoking mlx5_hv_vhca_agent_create(), so the work is always in a valid state when the control callback observes it. - Adding a struct mlx5_hv_vhca_agent **ctx_update out-parameter to mlx5_hv_vhca_agent_create(). The helper writes the agent pointer to *ctx_update before publishing into hv_vhca->agents[] and triggering the agents_update flow, so any callback subsequently invoked from that flow already sees a valid priv->stats_agent.agent. This avoids having the control callback participate in agent initialization. While at it, access priv->stats_agent.agent with READ_ONCE()/WRITE_ONCE() for the cross-CPU access with the worker, and clear priv->stats_agent.buf on the agent_create() failure path. Fixes: cef35af34d6d ("net/mlx5e: Add mlx5e HV VHCA stats agent") Signed-off-by: Feng Liu <feliu@nvidia.com> Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260630115151.729219-3-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-03net/mlx5e: Fix HV VHCA stats zero-sized buffer allocationFeng Liu
mlx5e_hv_vhca_stats_create() is called from mlx5e_nic_enable(), before mlx5e_open(). At that point priv->stats_nch is still zero, because it is only ever incremented in mlx5e_channel_stats_alloc(), which is reached only from mlx5e_open_channel(). mlx5e_hv_vhca_stats_buf_size() therefore returns 0, and kvzalloc(0, GFP_KERNEL) returns ZERO_SIZE_PTR ((void *)16) rather than NULL. The "if (!buf)" guard does not catch this, and mlx5e_hv_vhca_stats_create() completes "successfully" with priv->stats_agent.buf set to ZERO_SIZE_PTR. Once channels are opened (priv->stats_nch > 0) and the hypervisor enables stats reporting, mlx5e_hv_vhca_stats_work() recomputes buf_len using the new non-zero stats_nch and calls memset(buf, 0, buf_len) on ZERO_SIZE_PTR, faulting at address 0x10. Allocate the buffer based on priv->max_nch, which is set in mlx5e_priv_init() and is the upper bound on stats_nch: - Add a separate helper mlx5e_hv_vhca_stats_buf_max_size() that returns sizeof(per_ring_stats) * max(max_nch, stats_nch), and use it for the kvzalloc() in mlx5e_hv_vhca_stats_create(). - Keep mlx5e_hv_vhca_stats_buf_size() (which returns based on stats_nch) for the worker's active payload size, so the wire format (block->rings = stats_nch) and the amount of data filled by mlx5e_hv_vhca_fill_stats() are unchanged. The max(max_nch, stats_nch) guard handles the rare case where mlx5e_attach_netdev() recomputes max_nch downward across a detach/resume cycle while priv->stats_nch persists (mlx5e_detach_netdev does not call mlx5e_priv_cleanup, so stats_nch is only reset when the netdev is destroyed). Without the guard, the worker could compute buf_len from stats_nch and overrun the smaller buffer allocated based on the reduced max_nch. Allocating a non-zero buffer also makes the kvzalloc() failure path in mlx5e_hv_vhca_stats_create() reachable for the first time: it returns early without (re)creating the agent. Clear priv->stats_agent.{agent,buf} in mlx5e_hv_vhca_stats_destroy() after freeing them, so that if a later create() bails out on this path, a subsequent teardown does not double-free the stale agent/buffer left from a previous enable/disable cycle. This mirrors the existing mlx5e pattern of preallocating arrays of size max_nch (e.g. priv->channel_stats) and lazily populating entries up to stats_nch on demand. Fixes: fa691d0c9c08 ("net/mlx5e: Allocate per-channel stats dynamically at first usage") Signed-off-by: Feng Liu <feliu@nvidia.com> Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260630115151.729219-2-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-03drm/bridge: analogix_dp: Fix PE/VS value shift mismatch during link trainingDamon Ding
VS/PE values returned by drm_dp_get_adjust_request_voltage() and drm_dp_get_adjust_request_pre_emphasis() are already encoded to their native DPCD register bit positions. However, DPCD_VOLTAGE_SWING_SET / DPCD_PRE_EMPHASIS_SET macros perform an extra internal shift. Feeding the raw offset-bearing values directly leads to overlapping bitfields and invalid lane training configuration, causing link training failures and black screen. Add right shift using DP_TRAIN_*_SHIFT constants to strip the DPCD bit offsets before passing values to the SET macros and subsequent checks. Apply this fix for both clock recovery and adjust training code paths. Reported-by: Vicente Bergas <vicencb@gmail.com> Closes: https://lore.kernel.org/all/CAAMcf8D-d+5n=H44KeKBSqWY42m+o32W+mO-r15VqWNyYhJL7Q@mail.gmail.com/ Fixes: d84b087c7662 ("drm/bridge: analogix_dp: Apply DP helper APIs to get adjusted voltages and pre-emphasises") Signed-off-by: Damon Ding <damon.ding@rock-chips.com> Link: https://lore.kernel.org/all/CAAMcf8D-d+5n=H44KeKBSqWY42m+o32W+mO-r15VqWNyYhJL7Q@mail.gmail.com/ Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patch.msgid.link/20260623023506.309858-1-damon.ding@rock-chips.com
2026-07-03macsec: no longer rely on RTNL in macsec_fill_info()Eric Dumazet
Add READ_ONCE()/WRITE_ONCE() annotations on fields that can be changed concurrently in macsec_changelink() and macsec_update_offload(): - secy->key_len - secy->xpn - tx_sc->encoding_sa - tx_sc->encrypt - secy->protect_frames - tx_sc->send_sci - tx_sc->end_station - tx_sc->scb - secy->replay_protect - secy->validate_frames - secy->replay_window - macsec->offload This allows macsec_fill_info() to run locklessly without RTNL. Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Sabrina Dubroca <sd@queasysnail.net> Cc: Andrew Lunn <andrew+netdev@lunn.ch> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Reviewed-by: Sabrina Dubroca <sd@queasysnail.net> Link: https://patch.msgid.link/20260701094341.3218199-1-edumazet@google.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-03Merge branch 'net-mlx5-lag-bug-fixes'Paolo Abeni
Tariq Toukan says: ==================== net/mlx5: LAG bug fixes Three bug fixes by Shay in the mlx5 LAG subsystem. Patch 1 fixes an off-by-one in the error rollback path of mlx5_lag_create_single_fdb_filter(): the loop started from the failed index i, potentially operating on uninitialized state or double-tearing-down an entry that had already self-rolled-back. The rollback should start from i - 1. Patch 2 fixes a hang in mlx5_mpesw_work(): when mlx5_lag_get_devcom_comp() returns NULL the function returned early without calling complete(), blocking any caller waiting on mpesww->comp indefinitely. Patch 3 fixes a kernel crash during teardown when mlx5_lag_get_dev_seq() returns an error because no device is marked as master or the peer is no longer in the LAG. The peer flow cleanup is now skipped instead of proceeding with a bad pointer. This series by Shay fixes three bugs in the mlx5 LAG subsystem. v1: https://lore.kernel.org/all/20260617063204.547427-2-tariqt@nvidia.com/ ==================== Link: https://patch.msgid.link/20260630112917.698313-1-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-03net/mlx5e: TC, skip peer flow cleanup when LAG seq is unavailableShay Drory
mlx5_lag_get_dev_seq() will return error when the peer isn't in the LAG or when no device is marked as master. Result bad memory access and kernel crash[1]. Hence, skip the peer when lookup fails. Note: In case there are peer flows, they are cleaned before LAG cleared the master mark. [1] RIP: 0010:mlx5e_tc_del_fdb_peers_flow+0x3d/0x350 [mlx5_core] Call Trace: <TASK> mlx5e_tc_clean_fdb_peer_flows+0xc1/0x130 [mlx5_core] mlx5_esw_offloads_unpair+0x3a/0x400 [mlx5_core] mlx5_esw_offloads_devcom_event+0xee/0x360 [mlx5_core] mlx5_devcom_send_event+0x7a/0x140 [mlx5_core] mlx5_esw_offloads_devcom_cleanup+0x2f/0x90 [mlx5_core] mlx5e_tc_esw_cleanup+0x28/0xf0 [mlx5_core] mlx5e_rep_tc_cleanup+0x19/0x30 [mlx5_core] mlx5e_cleanup_uplink_rep_tx+0x36/0x40 [mlx5_core] mlx5e_cleanup_rep_tx+0x55/0x60 [mlx5_core] mlx5e_detach_netdev+0x96/0xf0 [mlx5_core] mlx5e_netdev_change_profile+0x5b/0x120 [mlx5_core] mlx5e_netdev_attach_nic_profile+0x1b/0x30 [mlx5_core] mlx5e_vport_rep_unload+0xdd/0x110 [mlx5_core] __esw_offloads_unload_rep+0x81/0xb0 [mlx5_core] mlx5_eswitch_unregister_vport_reps+0x1d7/0x220 [mlx5_core] mlx5e_rep_remove+0x22/0x30 [mlx5_core] device_release_driver_internal+0x194/0x1f0 bus_remove_device+0xe8/0x1b0 device_del+0x159/0x3c0 mlx5_rescan_drivers_locked+0xbc/0x2d0 [mlx5_core] mlx5_unregister_device+0x54/0x80 [mlx5_core] mlx5_uninit_one+0x73/0x130 [mlx5_core] remove_one+0x78/0xe0 [mlx5_core] pci_device_remove+0x39/0xa0 Fixes: 971b28accc09 ("net/mlx5: LAG, replace mlx5_get_dev_index with LAG sequence number") Signed-off-by: Shay Drory <shayd@nvidia.com> Reviewed-by: Mark Bloch <mbloch@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260630112917.698313-4-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>