Commit graph

1,447,411 commits

Author SHA1 Message Date
Eric Biggers
11d6bc70ff lib/crypto: arm64/aes: Remove obsolete chunking logic
Since commit aefbab8e77 ("arm64: fpsimd: Preserve/restore kernel mode
NEON at context switch"), kernel-mode NEON sections have been
preemptible on arm64.  And since commit 7dadeaa6e8 ("sched: Further
restrict the preemption modes"), voluntary preemption is no longer
supported on arm64 either.  Therefore, there's no longer any need to
limit the length of kernel-mode NEON sections on arm64.

Simplify the AES-CBC-MAC code accordingly.

Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20260401000548.133151-2-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
2026-04-01 13:02:09 -07:00
Maciej W. Rozycki
540760b77b MIPS: mm: Rewrite TLB uniquification for the hidden bit feature
Before the introduction of the EHINV feature, which lets software mark
TLB entries invalid, certain older implementations of the MIPS ISA were
equipped with an analogous bit, as a vendor extension, which however is
hidden from software and only ever set at reset, and then any software
write clears it, making the intended TLB entry valid.

This feature makes it unsafe to read a TLB entry with TLBR, modify the
page mask, and write the entry back with TLBWI, because this operation
will implicitly clear the hidden bit and this may create a duplicate
entry, as with the presence of the hidden bit there is no guarantee all
the entries across the TLB are unique each.

Usually the firmware has already uniquified TLB entries before handing
control over, in which case we only need to guarantee at bootstrap no
clash will happen with the VPN2 values chosen in local_flush_tlb_all().

However with systems such as Mikrotik RB532 we get handed the TLB as at
reset, with the hidden bit set across the entries and possibly duplicate
entries present.  This then causes a machine check exception when page
sizes are reset in r4k_tlb_uniquify() and prevents the system from
booting.

Rewrite the algorithm used in r4k_tlb_uniquify() then such as to avoid
the reuse of ASID/VPN values across the TLB.  Get rid of global entries
first as they may be blocking the entire address space, e.g. 16 256MiB
pages will exhaust the whole address space of a 32-bit CPU and a single
big page can exhaust the 32-bit compatibility space on a 64-bit CPU.

Details of the algorithm chosen are given across the code itself.

Fixes: 9f048fa487 ("MIPS: mm: Prevent a TLB shutdown on initial uniquification")
Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Cc: stable@vger.kernel.org # v6.18+
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2026-04-01 21:54:15 +02:00
Maciej W. Rozycki
74283cfe21 MIPS: mm: Suppress TLB uniquification on EHINV hardware
Hardware that supports the EHINV feature, mandatory for R6 ISA and FTLB
implementation, lets software mark TLB entries invalid, which eliminates
the need to ensure no duplicate matching entries are ever created.  This
feature is already used by local_flush_tlb_all(), via the UNIQUE_ENTRYHI
macro, making the preceding call to r4k_tlb_uniquify() superfluous.

The next change will also modify uniquification code such that it'll
become incompatible with the FTLB and MMID features, as well as MIPSr6
CPUs that do not implement 4KiB pages.

Therefore prevent r4k_tlb_uniquify() from being used on EHINV hardware,
as denoted by `cpu_has_tlbinv'.

Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2026-04-01 21:54:10 +02:00
Maciej W. Rozycki
8374c2cb83 MIPS: Always record SEGBITS in cpu_data.vmbits
With a 32-bit kernel running on 64-bit MIPS hardware the hardcoded value
of `cpu_vmbits' only records the size of compatibility useg and does not
reflect the size of native xuseg or the complete range of values allowed
in the VPN2 field of TLB entries.

An upcoming change will need the actual VPN2 value range permitted even
in 32-bit kernel configurations, so always include the `vmbits' member
in `struct cpuinfo_mips' and probe for SEGBITS when running on 64-bit
hardware and resorting to the currently hardcoded value of 31 on 32-bit
processors.  No functional change for users of `cpu_vmbits'.

Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2026-04-01 21:53:50 +02:00
Maciej W. Rozycki
ec8bf18814 MIPS: Fix the GCC version check for `__multi3' workaround
It was only GCC 10 that fixed a MIPS64r6 code generation issue with a
`__multi3' libcall inefficiently produced to perform 64-bit widening
multiplication while suitable machine instructions exist to do such a
calculation.  The fix went in with GCC commit 48b2123f6336 ("re PR
target/82981 (unnecessary __multi3 call for mips64r6 linux kernel)").

Adjust our code accordingly, removing build failures such as:

mips64-linux-ld: lib/math/div64.o: in function `mul_u64_add_u64_div_u64':
div64.c:(.text+0x84): undefined reference to `__multi3'

with the GCC versions affected.

Fixes: ebabcf17bc ("MIPS: Implement __multi3 for GCC7 MIPS64r6 builds")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202601140146.hMLODc6v-lkp@intel.com/
Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Cc: stable@vger.kernel.org # v4.15+
Reviewed-by: David Laight <david.laight.linux@gmail.com.
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2026-04-01 21:53:18 +02:00
Maciej W. Rozycki
d62cf15117 MIPS: SiByte: Bring back cache initialisation
Bring back cache initialisation for Broadcom SiByte SB1 cores, which has
been removed causing the kernel to hang at bootstrap right after:

Dentry cache hash table entries: 524288 (order: 8, 4194304 bytes, linear)
Inode-cache hash table entries: 262144 (order: 7, 2097152 bytes, linear)

The cause of the problem is R4k cache handlers are also used by Broadcom
SiByte SB1 cores, however with a different cache error exception handler
and therefore not using CPU_R4K_CACHE_TLB:

obj-$(CONFIG_CPU_R4K_CACHE_TLB) += c-r4k.o cex-gen.o tlb-r4k.o
obj-$(CONFIG_CPU_SB1)           += c-r4k.o cerr-sb1.o cex-sb1.o tlb-r4k.o

(from arch/mips/mm/Makefile).

Fixes: bbe4f634f4 ("mips: fix r3k_cache_init build regression")
Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Cc: stable@vger.kernel.org # v6.8+
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2026-04-01 21:51:55 +02:00
Shiji Yang
43985a62ba mips: ralink: update CPU clock index
Update CPU clock index to match the clock driver changes.

Fixes: d34db686a3 ("clk: ralink: mtmips: fix clocks probe order in oldest ralink SoCs")
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Reviewed-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2026-04-01 21:51:02 +02:00
Rong Zhang
35d8945bf9 MIPS: Loongson64: env: Check UARTs passed by LEFI cautiously
Some firmware does not set nr_uarts properly and passes empty items.
Iterate at most min(system->nr_uarts, MAX_UARTS) items to prevent
out-of-bounds access, and ignore UARTs with addr 0 silently.

Meanwhile, our DT only works with UPIO_MEM but theoretically firmware
may pass other IO types, so explicitly check against that.

Tested on Loongson-LS3A4000-7A1000-NUC-SE.

Fixes: 3989ed4184 ("MIPS: Loongson64: env: Fixup serial clock-frequency when using LEFI")
Cc: stable@vger.kernel.org
Reviewed-by: Yao Zi <me@ziyao.cc>
Signed-off-by: Rong Zhang <rongrong@oss.cipunited.com>
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2026-04-01 21:49:44 +02:00
Thorsten Blum
9bf092c97b sched: update task_struct->comm comment
Since commit 3a3f61ce5e ("exec: Make sure task->comm is always
NUL-terminated"), __set_task_comm() is unlocked and no longer uses
strscpy_pad() - update the stale comment accordingly.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Link: https://patch.msgid.link/20260401152039.724811-4-thorsten.blum@linux.dev
Signed-off-by: Kees Cook <kees@kernel.org>
2026-04-01 12:26:07 -07:00
Thorsten Blum
10cd6758e0 exec: use strnlen() in __set_task_comm
Use strnlen() to limit source string scanning to 'TASK_COMM_LEN - 1'
bytes.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20260401152039.724811-3-thorsten.blum@linux.dev
Signed-off-by: Kees Cook <kees@kernel.org>
2026-04-01 12:26:07 -07:00
Yazen Ghannam
bc91133e26 x86/CPU/AMD: Print AGESA string from DMI additional information entry
Type 40 entries (Additional Information) are summarized in section 7.41 as
part of the SMBIOS specification.  Generally, these entries aren't interesting
to save.

However on some AMD Zen systems, the AGESA version is stored here. This is
useful to save to the kernel message logs for debugging. It can be used to
cross-reference issues.

Implement an iterator for the Additional Information entries. Use this to find
and print the AGESA string. Do so in AMD code, since the use case is
AMD-specific.

  [ bp: Match only "AGESA". ]

Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
Co-developed-by: "Mario Limonciello (AMD)" <superm1@kernel.org>
Signed-off-by: "Mario Limonciello (AMD)" <superm1@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Link: https://patch.msgid.link/20260307141024.819807-6-superm1@kernel.org
2026-04-01 20:54:16 +02:00
Mario Limonciello (AMD)
da55ebe166 firmware: dmi: Add pr_fmt() for dmi_scan.c
Several prints inconsistently use DMI: or dmi: or nothing.  To make it clear
which prints come from dmi_scan.c, add a pr_fmt() macro.

Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Link: https://patch.msgid.link/20260307141024.819807-5-superm1@kernel.org
2026-04-01 20:54:16 +02:00
Mario Limonciello (AMD)
28189e9571 firmware: dmi: Adjust dmi_decode() to use enums
dmi_decode() has hardcoded values with comments for each DMI entry type. The
same information is already in dmi.h though, so drop the comments and use the
definitions instead.

Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Yazen Ghannam <yazen.ghannam@amd.com>
Link: https://patch.msgid.link/20260307141024.819807-3-superm1@kernel.org
2026-04-01 20:54:16 +02:00
Mario Limonciello (AMD)
c064abc68e firmware: dmi: Correct an indexing error in dmi.h
The entries later in enum dmi_entry_type don't match the SMBIOS
specification¹.

The entry for type 33: `64-Bit Memory Error Information` is not present and
thus the index for all later entries is incorrect.

Add it.

Also, add missing entry types 43-46, while at it.

  ¹ Search for "System Management BIOS (SMBIOS) Reference Specification"

  [ bp: Drop the flaky SMBIOS spec URL. ]

Fixes: 93c890dbe5 ("firmware: Add DMI entry types to the headers")
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Yazen Ghannam <yazen.ghannam@amd.com>
Link: https://patch.msgid.link/20260307141024.819807-2-superm1@kernel.org
2026-04-01 20:53:44 +02:00
Johan Hovold
f13b780092 Input: usbtouchscreen - refactor endpoint lookup
Use the common USB helpers for looking up bulk and interrupt endpoints
(and determining endpoint numbers) instead of open coding.

Note that the NEXIO data interface has two bulk endpoints (see commit
5197424cdc ("Input: usbtouchscreen - add NEXIO (or iNexio) support")
for the descriptors).

The lookup in probe handles both bulk-in and interrupt-in endpoints and
was added to handle NEXIO devices. Replace the open coded lookup with a
lookup for the common interrupt endpoint and an explicit fallback
accepting a bulk endpoint.

This iterates over the (two) endpoints twice for NEXIO devices but makes
it more clear what is going on.

Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260401082212.2180434-1-johan@kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-04-01 10:37:38 -07:00
Mark Brown
dee5680d3e
ASoC: fsl: fix mixer-test failures
Shengjiu Wang <shengjiu.wang@nxp.com> says:

Fix mixer-test failures. Mostly the issues are that event is not
generated in put operation.
2026-04-01 18:24:31 +01:00
Shengjiu Wang
47f28a5bd1
ASoC: fsl_easrc: Change the type for iec958 channel status controls
Use the type SNDRV_CTL_ELEM_TYPE_IEC958 for iec958 channel status
controls, the original type will cause mixer-test to iterate all 32bit
values, which costs a lot of time. And using IEC958 type can reduce the
control numbers.

Also enable pm runtime before updating registers to make the regmap cache
data align with the value in hardware.

Fixes: 955ac62405 ("ASoC: fsl_easrc: Add EASRC ASoC CPU DAI drivers")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-12-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:29 +01:00
Shengjiu Wang
aa21fe4a81
ASoC: fsl_easrc: Fix value type in fsl_easrc_iec958_get_bits()
The value type of controls "Context 0 IEC958 Bits Per Sample" should be
integer, not enumerated, the issue is found by the mixer-test.

Fixes: 955ac62405 ("ASoC: fsl_easrc: Add EASRC ASoC CPU DAI drivers")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-11-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:29 +01:00
Shengjiu Wang
00541b86fb
ASoC: fsl_easrc: Check the variable range in fsl_easrc_iec958_put_bits()
Add check of input value's range in fsl_easrc_iec958_put_bits(),
otherwise the wrong value may be written from user space.

Fixes: 955ac62405 ("ASoC: fsl_easrc: Add EASRC ASoC CPU DAI drivers")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-10-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:28 +01:00
Shengjiu Wang
64a496ba97
ASoC: fsl_xcvr: Fix event generation in fsl_xcvr_mode_put()
ALSA controls should return 1 if the value in the control changed but the
control put operation fsl_xcvr_mode_put() only returns 0 or a negative
error code, causing ALSA to not generate any change events.

Add a suitable check in the function before updating the mode variable.

Fixes: 2856448686 ("ASoC: fsl_xcvr: Add XCVR ASoC CPU DAI driver")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-9-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:27 +01:00
Shengjiu Wang
1b61c8103c
ASoC: fsl_xcvr: Fix event generation in fsl_xcvr_arc_mode_put()
ALSA controls should return 1 if the value in the control changed but the
control put operation fsl_xcvr_arc_mode_put() only returns 0 or a negative
error code, causing ALSA to not generate any change events.

Add a suitable check in the function before updating the arc_mode
variable.

Fixes: 2856448686 ("ASoC: fsl_xcvr: Add XCVR ASoC CPU DAI driver")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-8-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:26 +01:00
Shengjiu Wang
e5785093b1
ASoC: fsl_micfil: Fix event generation in micfil_quality_set()
ALSA controls should return 1 if the value in the control changed but the
control put operation micfil_quality_set() only returns 0 or a negative
error code, causing ALSA to not generate any change events.

Add a suitable check in the function before updating the quality variable.

Also enable pm runtime before calling the function micfil_set_quality()
to make the regmap cache data align with the value in hardware.

Fixes: bea1d61d58 ("ASoC: fsl_micfil: rework quality setting")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-7-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:25 +01:00
Shengjiu Wang
7d2bd35100
ASoC: fsl_micfil: Fix event generation in micfil_put_dc_remover_state()
ALSA controls should return 1 if the value in the control changed but the
control put operation micfil_put_dc_remover_state() only returns 0 or a
negative error code, causing ALSA to not generate any change events.

return the value of snd_soc_component_update_bits() directly, as it has
the capability of return check status of changed or not.

Also enable pm runtime before calling the function
snd_soc_component_update_bits() to make the regmap cache data align with
the value in hardware.

Fixes: 29dbfeecab ("ASoC: fsl_micfil: Add Hardware Voice Activity Detector support")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-6-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:24 +01:00
Shengjiu Wang
fc4daaddb2
ASoC: fsl_micfil: Fix event generation in micfil_range_set()
ALSA controls should return 1 if the value in the control changed but the
control put operation micfil_range_set() only returns 0 or a negative
error code, causing ALSA to not generate any change events.

Use snd_soc_component_update_bits() function to replace the
regmap_update_bits(), for snd_soc_component_update_bits() has the
capability of return check status.

Also enable pm runtime before calling the function
snd_soc_component_update_bits() to make the regmap cache data align with
the value in hardware.

Fixes: ef1a7e02fd ("ASoC: fsl_micfil: Set channel range control")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-5-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:23 +01:00
Shengjiu Wang
7e22620990
ASoC: fsl_micfil: Fix event generation in hwvad_put_init_mode()
ALSA controls should return 1 if the value in the control changed but the
control put operation hwvad_put_init_mode() only returns 0 or a negative
error code, causing ALSA to not generate any change events.

Add a suitable check in the function before updating the vad_init_mode
variable.

Fixes: 29dbfeecab ("ASoC: fsl_micfil: Add Hardware Voice Activity Detector support")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-4-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:22 +01:00
Shengjiu Wang
59b9061824
ASoC: fsl_micfil: Fix event generation in hwvad_put_enable()
ALSA controls should return 1 if the value in the control changed but the
control put operation hwvad_put_enable() only returns 0 or a negative
error code, causing ALSA to not generate any change events.

Add a suitable check in the function before updating the vad_enabled
variable.

Fixes: 29dbfeecab ("ASoC: fsl_micfil: Add Hardware Voice Activity Detector support")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-3-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:21 +01:00
Shengjiu Wang
c7661bfc74
ASoC: fsl_micfil: Add access property for "VAD Detected"
Add access property SNDRV_CTL_ELEM_ACCESS_READ for control "VAD
Detected", which doesn't support put operation, otherwise there will be
issue with mixer-test.

Fixes: 29dbfeecab ("ASoC: fsl_micfil: Add Hardware Voice Activity Detector support")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-2-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:24:20 +01:00
Johan Hovold
abe572f630
spi: ch341: fix devres lifetime
USB drivers bind to USB interfaces and any device managed resources
should have their lifetime tied to the interface rather than parent USB
device. This avoids issues like memory leaks when drivers are unbound
without their devices being physically disconnected (e.g. on probe
deferral or configuration changes).

Fix the controller and driver data lifetime so that they are released
on driver unbind.

Note that this also makes sure that the SPI controller is placed
correctly under the USB interface in the device tree.

Fixes: 8846739f52 ("spi: add ch341a usb2spi driver")
Cc: stable@vger.kernel.org	# 6.11
Cc: Johannes Thumshirn <jth@kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260327104305.1309915-3-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:21:09 +01:00
Johan Hovold
b99e3ddb91
spi: ch341: fix memory leaks on probe failures
Make sure to deregister the controller, disable pins, and kill and free
the RX URB on probe failures to mirror disconnect and avoid memory
leaks and use-after-free.

Also add an explicit URB kill on disconnect for symmetry (even if that
is not strictly required as USB core would have stopped it in the
current setup).

Fixes: 8846739f52 ("spi: add ch341a usb2spi driver")
Cc: stable@vger.kernel.org	# 6.11
Cc: Johannes Thumshirn <jth@kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260327104305.1309915-2-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-04-01 18:21:09 +01:00
Arnd Bergmann
cce3c4db86 Renesas DTS updates for v7.1 (take two)
- Add DT overlay support for the MayQueen PixPaper display on the
     Yuridenki-Shokai Kakip board,
   - Add Ethernet PHY interrupt support for the RZ/T2H and RZ/N2H EVK
     boards,
   - Add SPI and PCIe support for the RZ/G3E SoC and the RZ/G3E SMARC EVK
     board,
   - Add DT overlay support for the WaveShare 13.3" 1920x1080 DSI
     Capacitive Touch Display and the Olimex MIPI-HDMI adapter on the
     Retronix Sparrow Hawk board,
   - Drop several superfluous C22 Ethernet PHY compatible strings,
   - Remove WDT nodes meant for other CPU cores on the RZ/V2N SoC,
   - Remove unavailable LVDS panel support for the Beacon ReneSoM base
     board,
   - Add initial support for the RZ/G3L (R9A08G046) SoC, and the RZ/G3L
     SMARC SoM and EVK boards,
   - Add Versa3 clock generator support for the RZ/V2H EVK development
     board,
   - Miscellaneous fixes and improvements.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCacZTLQAKCRCKwlD9ZEnx
 cDFpAQCnjtuLDgdjwiwhiMAQlgnmPBPKsNYpIeiReu+e/thRdQD/Y7qqSkveLYKk
 Vess+HXdLKGSmbdMcVGHtt8XtCr0pAA=
 =+8Of
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmnNU9oACgkQmmx57+YA
 GNmKzA/9FnSF6zEc1TeDT+8XPZGyoBfJ87aC6dqHb202g+RkegsHawxvELs825HZ
 tTgKVAQdfCyrIeUTf02Q+DY5ikZOFME+jt0I6VnASCilGRwoWIWK213sx4jrpfiv
 5bh66ZGAhz//qAUYBS5+bV6XSzWeVZ2cRTlQJ7sxndA2VpxqHtTvOD+cJF+52Q2R
 BReFQ35NIXP6r5GwMVUjcViYEagFJX72DsTkkYYHayhfUH95+4asOb7KWMblH8Lb
 ZmD7TFU6SRPvET3qaO8ZeVF2vbMtJ7PldN/vTDqr6Rp/LS9FAFCU7g2wAiTWfEMV
 R7yNdacSQBtKoD/LvcenAlk4slcDi//BX38jZfnPnfUso+MWJp3jJLqZxTsb/9FR
 IDCasye9hCCdBZ//m8HVM93oEmn5guvR3YyN2c4ZUir1eB9WnxOmpje/JRVm0N26
 xJKZ4JZe4h8hV+/b7oracmEGSXBeoLvANKNkgtFNduPh3+fEdDwSwjXR4E5EJuIf
 rBLb9rDrhTEIhZhjkUk0s85DstQ/t5OCnW7XDMNNPQwoROjMdcEHjotRV9yOR8wb
 4wz5OgEgwQeDGsszSmmZvvEHkpvRqcGaxcFfWBxILB9pFuhFbJGvWr5ridVpD6VW
 qkpUzc3lVLad1ytA/aEedlhZSHYHM/F8bhEVRuOUfH0NS2mbsrs=
 =Awz3
 -----END PGP SIGNATURE-----

Merge tag 'renesas-dts-for-v7.1-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt

Renesas DTS updates for v7.1 (take two)

  - Add DT overlay support for the MayQueen PixPaper display on the
    Yuridenki-Shokai Kakip board,
  - Add Ethernet PHY interrupt support for the RZ/T2H and RZ/N2H EVK
    boards,
  - Add SPI and PCIe support for the RZ/G3E SoC and the RZ/G3E SMARC EVK
    board,
  - Add DT overlay support for the WaveShare 13.3" 1920x1080 DSI
    Capacitive Touch Display and the Olimex MIPI-HDMI adapter on the
    Retronix Sparrow Hawk board,
  - Drop several superfluous C22 Ethernet PHY compatible strings,
  - Remove WDT nodes meant for other CPU cores on the RZ/V2N SoC,
  - Remove unavailable LVDS panel support for the Beacon ReneSoM base
    board,
  - Add initial support for the RZ/G3L (R9A08G046) SoC, and the RZ/G3L
    SMARC SoM and EVK boards,
  - Add Versa3 clock generator support for the RZ/V2H EVK development
    board,
  - Miscellaneous fixes and improvements.

* tag 'renesas-dts-for-v7.1-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel: (29 commits)
  ARM: dts: renesas: Drop KSZ8041 PHY C22 compatible strings
  ARM: dts: renesas: rza2mevb: Drop RTL8201F PHY C22 compatible string
  ARM: dts: renesas: r8a7742-iwg21d-q7-dbcm-ca: Drop KSZ8081 PHY C22 compatible string
  arm64: dts: renesas: Add initial device tree for RZ/G3L SMARC EVK board
  arm64: dts: renesas: renesas-smarc2: Move usb3 nodes to board DTS
  arm64: dts: renesas: Add initial support for RZ/G3L SMARC SoM
  arm64: dts: renesas: Add initial DTSI for RZ/G3L SoC
  arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Add versa3 clock generator node
  dt-bindings: clock: renesas,rzg2l-cpg: Document RZ/G3L SoC
  arm64: dts: renesas: beacon-renesom: Remove LVDS Panel
  ARM: dts: r9a06g032: Add #address-cells to the GIC node
  arm64: dts: renesas: r9a09g056: Remove wdt{0,2,3} nodes
  arm64: dts: renesas: sparrow-hawk: Add overlay for Olimex MIPI-HDMI adapter
  arm64: dts: renesas: r9a09g047e57-smarc: Enable PCIe
  arm64: dts: renesas: r9a09g047e57-smarc-som: Add PCIe reference clock
  arm64: dts: renesas: r9a09g047: Add PCIe node
  arm64: dts: renesas: Fix KSZ9131 PHY bogus txdv-skew-psec properties
  arm64: dts: renesas: Drop KSZ9131 PHY C22 compatible strings
  arm64: dts: renesas: Drop RTL8211F PHY C22 compatible strings
  arm64: dts: renesas: Drop RTL8211E PHY C22 compatible strings
  ...

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-04-01 19:20:18 +02:00
Kevin Brodsky
5e0deb0a6b arm64: mm: Use generic enum pgtable_level
enum pgtable_type was introduced for arm64 by commit c64f46ee13
("arm64: mm: use enum to identify pgtable level instead of
*_SHIFT"). In the meantime, the generic enum pgtable_level got
introduced by commit b22cc9a9c7 ("mm/rmap: convert "enum
rmap_level" to "enum pgtable_level"").

Let's switch to the generic enum pgtable_level. The only difference
is that it also includes PGD level; __pgd_pgtable_alloc() isn't
expected to create PGD tables so we add a VM_WARN_ON() for that
case.

Suggested-by: David Hildenbrand (Arm) <david@kernel.org>
Reviewed-by: David Hildenbrand (Arm) <david@kernel.org>
Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2026-04-01 18:20:12 +01:00
Anshuman Khandual
95a58852b0 arm64/mm: Reject memory removal that splits a kernel leaf mapping
Linear and vmemmap mappings that get torn down during a memory hot remove
operation might contain leaf level entries on any page table level. If the
requested memory range's linear or vmemmap mappings falls within such leaf
entries, new mappings need to be created for the remaining memory mapped on
the leaf entry earlier, following standard break before make aka BBM rules.
But kernel cannot tolerate BBM and hence remapping to fine grained leaves
would not be possible on systems without BBML2_NOABORT.

Currently memory hot remove operation does not perform such restructuring,
and so removing memory ranges that could split a kernel leaf level mapping
need to be rejected.

While memory_hotplug.c does appear to permit hot removing arbitrary ranges
of memory, the higher layers that drive memory_hotplug (e.g. ACPI, virtio,
...) all appear to treat memory as fixed size devices. So it is impossible
to hot unplug a different amount than was previously hot plugged, and hence
we should never see a rejection in practice, but adding the check makes us
robust against a future change.

Cc: Will Deacon <will@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Link: https://lore.kernel.org/all/aWZYXhrT6D2M-7-N@willie-the-truck/
Reviewed-by: David Hildenbrand (Arm) <david@kernel.org>
Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
Suggested-by: Ryan Roberts <ryan.roberts@arm.com>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2026-04-01 18:04:54 +01:00
Anshuman Khandual
48478b9f79 arm64/mm: Enable batched TLB flush in unmap_hotplug_range()
During a memory hot remove operation, both linear and vmemmap mappings for
the memory range being removed, get unmapped via unmap_hotplug_range() but
mapped pages get freed only for vmemmap mapping. This is just a sequential
operation where each table entry gets cleared, followed by a leaf specific
TLB flush, and then followed by memory free operation when applicable.

This approach was simple and uniform both for vmemmap and linear mappings.
But linear mapping might contain CONT marked block memory where it becomes
necessary to first clear out all entire in the range before a TLB flush.
This is as per the architecture requirement. Hence batch all TLB flushes
during the table tear down walk and finally do it in unmap_hotplug_range().

Prior to this fix, it was hypothetically possible for a speculative access
to a higher address in the contiguous block to fill the TLB with shattered
entries for the entire contiguous range after a lower address had already
been cleared and invalidated. Due to the table entries being shattered, the
subsequent TLB invalidation for the higher address would not then clear the
TLB entries for the lower address, meaning stale TLB entries could persist.

Besides it also helps in improving the performance via TLBI range operation
along with reduced synchronization instructions. The time spent executing
unmap_hotplug_range() improved 97% measured over a 2GB memory hot removal
in KVM guest.

This scheme is not applicable during vmemmap mapping tear down where memory
needs to be freed and hence a TLB flush is required after clearing out page
table entry.

Cc: Will Deacon <will@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Closes: https://lore.kernel.org/all/aWZYXhrT6D2M-7-N@willie-the-truck/
Fixes: bbd6ec605c ("arm64/mm: Enable memory hot remove")
Cc: stable@vger.kernel.org
Reviewed-by: David Hildenbrand (Arm) <david@kernel.org>
Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2026-04-01 18:04:54 +01:00
Li Ming
d585bc86fb cxl/region: Add a region sysfs interface for region lock status
There are 3 scenarios that leads to a locked region:
1. A region is created on a root decoder with Fixed Device Confiuration
   attribute.
2. CXL_HDM_DECODER0_CTRL_LOCK.

Both 1 & 1 are well described in:
commit 2230c4bdc4 ("cxl: Add handling of locked CXL decoder")

3) Platform that has region creation with PRMT address translation always
   locks the region, regardless of the FIXED attribute or decoder ctrl bit.

Region locked means region destroy operations are not permitted. CXL
region driver returns -EPERM for region destroy operations.

Although the locked status of the corresponding root decoder implies the
region is also locked, exposing the region lock status directly to
userspace improves usability for users who may not be aware of this
relationship.

[ dj: Amended commit log with additional locking scenarios. ]

Signed-off-by: Li Ming <ming.li@zohomail.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Alejandro Lucero <alucerop@amd.com>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Link: https://patch.msgid.link/20260401124951.1290041-1-ming.li@zohomail.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
2026-04-01 09:59:58 -07:00
Arnd Bergmann
9e17f8e9cc STM32 DT for v7.1, round 1
Highlights:
 ----------
 
 - MPU:
   - STM32MP13:
     - Introduce and enable debug bus on DK board.
     - Enable Coresight on DK board.
     - Add DT overlays for DH board.
     - Add Wakeup capabilities on I2C nodes.
 
   - STMP32MP15:
     - ST:
       - Enable DCMI DMA chaining to improve performances.
       - Introduce and enable debug bus on EV and DK board.
       - Enable Coresight on EV and DK board.
 
     - DH:
       - Add DT overlays for DH board.
 
     - Phytec:
       - Rename "Phycore" to "phyboard-sargas" DT files and introduce
         SOM device tree file.
       - Fix and enhance current support.
 
   - STM32MP21:
     - Add Bsec support.
 
   - STM32MP23:
     - Add LTDC and LVDS support and enable display on STM32MP235F-DK
       board.
 
   - STM32MP25:
     - Enable display on STM32MP235F-DK board.
 -----BEGIN PGP SIGNATURE-----
 
 iQJRBAABCgA7FiEEctl9+nxzUSUqdELdf5rJavIecIUFAmnE9Z0dHGFsZXhhbmRy
 ZS50b3JndWVAZm9zcy5zdC5jb20ACgkQf5rJavIecIWDeA//addNVtVQkDPaB+tk
 YTNFDdswdmqr23SFiw6Be8hGa2b/pkAS52Z97g9OAa9i4R2woaSTcMK8qWxMh4HD
 F2wqLyRuw5soe3UXwJJTOzKbpdGDBuAp2ATnfOcvXY4/+MeQhsciOW/H0FdrstwE
 oDjUFqhMDo2IRxeIeFLbJfC7U5ggvKMyyMy50v0OWmxcYbqklIxepVbX6zkDI1DG
 O9Tahm+IZ8Jg7A0bKS0DM6e3qmgJv/p508e1ibbnou9aCkFo6of+3ZRmWkYgM8JN
 EEIDz+UCvpiKEZbgD8L/oBJWMahe9iYDMdwE6uhcYHK5l0Kly281gc636Pmn72LB
 6Q5tAC4SgIy15pblltOKu6+gUFIovWJDrX12xKjmLoTRoNsO8wtwct8HtUmN7amS
 jEd0IDtlmKNkNFarxff76mJs5aupH0Sp1xz3nueF2O+S7Jt6oX+CG8Pt5b673Yaj
 mFWgp8Aixg3mR4snGAflWfXcEcSKt/bL8mXoQtaPWU5HTyfEgXAj8pARMy0vnNKx
 MlP47Kqbt3bfEYZcucCwQZUhDuGeExxW+9pVKaFG/B4Cm+65vKxQWaSEKxUdXoy6
 yTRfIOj0PQyj8sHKq0cbFut+zgrlZ0nOolPesy4BdG0P7P2jAFpBzdwh3MCGXBUT
 qTlpKOSRIi3+AnLjgUWagoSCDHo=
 =w3Nk
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmnNTkYACgkQmmx57+YA
 GNmKcw/+LqfLmepgSArH7wZiQdgKfbPAY22kVWaOJ9ri9dKaee28NcKXKB4koVWo
 UvHRAK5K565KFt11gz8LqTijcY43EdB6b2Qi1NugVRGnAeapY5R08qnFbXkJk53K
 jwyavjEuczt+dXPO+9OXNNp6h1e+v7tWRZtme3hp0VWIYUDvg5itDfCSKs/OvuPi
 Vg06CVE65fOe/ETsriq0XQ8fMp3KF1ToHdV+EVmnCAmmFbp+1gyWrbWhNen/tcFC
 zEXGPu9Aae3GRHvH/R1E8zeZyz+vqIEw51dVMe4WueHYqSxnisNriMgRghLx8dQi
 BbuRSUT3nZwll9oSY9QfVljW96wViJmfG0/iUowWof74QFeZWvMGl5FIfH1SSJHb
 uV9Wm7V/6GD9HL2qvpyOEYZSlPxkIB8u5ttSLtev7oCQdCdWxdOAJ9APEt5j3OvJ
 48lwi3+0kNGBaUERjbdTBoLCHF42w6lVpZKnrcQOhwfN1c8KZcUhu/HWNmSE70qo
 WWsCTkUIWHaErUCwP+F4j5XX5OofCF1ZzJaibt9tjeVyURVsxU4BRbsGwwdZsYbX
 aQLhJ9uMR9sZPcBAV7B66GzIIonqKV2qHwc+G7pStcMSOUnDs4AvaAniNjaUG3rt
 czvWipVUlewN/GJPIf4rRj51TXaWVa2DycxWgZ6lqS+n33gj5WA=
 =G3bF
 -----END PGP SIGNATURE-----

Merge tag 'stm32-dt-for-7.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32 into soc/dt

STM32 DT for v7.1, round 1

Highlights:
----------

- MPU:
  - STM32MP13:
    - Introduce and enable debug bus on DK board.
    - Enable Coresight on DK board.
    - Add DT overlays for DH board.
    - Add Wakeup capabilities on I2C nodes.

  - STMP32MP15:
    - ST:
      - Enable DCMI DMA chaining to improve performances.
      - Introduce and enable debug bus on EV and DK board.
      - Enable Coresight on EV and DK board.

    - DH:
      - Add DT overlays for DH board.

    - Phytec:
      - Rename "Phycore" to "phyboard-sargas" DT files and introduce
        SOM device tree file.
      - Fix and enhance current support.

  - STM32MP21:
    - Add Bsec support.

  - STM32MP23:
    - Add LTDC and LVDS support and enable display on STM32MP235F-DK
      board.

  - STM32MP25:
    - Enable display on STM32MP235F-DK board.

* tag 'stm32-dt-for-7.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32: (42 commits)
  arm64: defconfig: Enable STMicroelectronics STM32 display support
  arm64: dts: st: enable display support on stm32mp257f-dk board
  arm64: dts: st: describe power supplies for stm32mp257f-dk board
  arm64: dts: st: enable display support on stm32mp235f-dk board
  arm64: dts: st: describe power supplies for stm32mp235f-dk board
  arm64: dts: st: add clock-cells to syscfg node on stm32mp231
  arm64: dts: st: add lvds support on stm32mp235
  arm64: dts: st: add ltdc support on stm32mp235
  arm64: dts: st: add ltdc support on stm32mp231
  arm64: dts: st: omit unused pinctrl groups from stm32mp25 dtb files
  arm64: dts: st: add bootph-all in bsec node to stm32mp215f-dk
  arm64: dts: st: add bsec support to stm32mp21
  ARM: dts: stm32: fix misalignments in nodes of stm32mp131
  ARM: dts: stm32: fix misalignments in nodes of stm32mp151
  arm64: dts: st: describe i2c2 / i2c8 on stm32mp235f-dk
  arm64: dts: st: describe i2c2 / i2c8 on stm32mp257f-dk
  arm64: dts: st: disable DMA usage for i2c on stm32mp257f-ev1
  arm64: dts: st: add i2c2 pinmux nodes in stm32mp25-pinctrl.dtsi
  arm64: dts: st: update i2c nodes interrupt/wakeup-source in stm32mp231
  arm64: dts: st: update i2c nodes interrupt/wakeup-source in stm32mp251
  ...

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-04-01 18:56:32 +02:00
Arnd Bergmann
5e9c551265 Samsung DTS ARM changes for v7.1
1. New board: Exynos5250 based Google Manta (Nexus 10).
 2. Few cleanups.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmnCiP0QHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD14tID/96p7GLJHYTlWbIACx2dsT/9tm5jFaL5Q5u
 VMo3sr+ajufT/zwMD7P0accA9DXyekXGRNtCS5BdCZtuE7F1/Ia8KEEeDpv78oEJ
 4WaStGFIQZZbzRBab1Z1bPtCRJsbY/7U8FJbAsfCjio2aFl22jL0mvgN5XsieTiD
 09Q3kmjMeJPZbuwTMqMxtNwulEVLbvPlMJ43M1+voh7MJsqFgwclhB8KHbzsgCGt
 478UQSsu8JPAdOHrqmuNiirM8Ltuuet2zwOu6aP5n61+S/buqor6/B67G0oiZYEW
 cEirmYpqwgM8BvvmhZHLJpf3u9+2CfDIq/XA31myjdTACHbxM3fufVF5WiOBP95E
 VoppYmV0Chdq4StZYK3/+RcNHUqsRG+dU6lGT/bn4pbMlmMpUO9aFE8JHdM91LFj
 aQwWSUvJdhLyfIV/DUkgHKtF+vwM8o++jarWlh2ZWo7uY/dEt64e2JkuxD/YMxR3
 zVhcPIL4MxUu47otufYHa2hNnFpWkH/SXwGBIdg2Blnv7F+bOy+MFe735ABgGdZy
 zbq/19cT03Rc09EmrK/onMsPtK7PJQHHYyMhOZJkfZ/4nBG3Aj/q9RWHTQnzKfn5
 QJzVCoGAoFLmG5aoChx9CyuTyQwvSHn9eHd8nMSoBL4beEGww71UjXnr+1rEZsja
 akDhApBYCw==
 =Y3BO
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmnNTYIACgkQmmx57+YA
 GNlzjQ/+L3hYDlho6urPWnwAZcH8KIGodFhYt6cv1Sj3eBXilva8JarIa5vRhuMs
 IP9v42Mu+ZC+RN5x5DsfW3tIyayBK3qMY2fDpp6twqSNjpS8j8YSf2yosPbXicgZ
 9CdDggwycLE0PYo1xq3cANdsDqXvwvonYtmxhicBsmvOgmLsz8ZLeVvcumxD0n2B
 wIrKCjJniEGyHc4xY2BcnHRoLJlFpfZf4n2RnoU5MBUBlb8fo8c1z0Ws6LXrGKIc
 fLLGcFgqHx6IjkjdmSuRRPX9gvsnIC6u2rdOXSGiEVQs4VOlnrq61scBnbeh6Pmf
 ofngiQnJTin+Yib0K3CxxSA8q3Pd7CK1HLwkolJtKU+Djg2IJHERDR53pZ7esyjl
 NPM4jPfWPFyF4vu7uX/dZSZQ6CZYCsJ9m0N9cQJ5BZkejyFJT37Wzkd3v2jc1HDI
 K1IyNHPp6UTp9NfD78Yv7NCjP48QglEtl+MGH+rSTWZ7r3giQe+9NY6iYDpAfdYq
 T60/fmtquHrYX7qGojMuQ3D4c+s640lh55XdJcHoV6btAbvQ9rs/LpWegGZWqF9t
 QX0yB5+2Ang9obKc0wwqznythkkVLRc6XZFNJQ+BYnPUjGdNc+kyvvoqR86qxSa4
 ytnAwBcUctg9JEEbd1nIT0y6naHgaewAOfHwmhSai/QPFkhaa3w=
 =5XCY
 -----END PGP SIGNATURE-----

Merge tag 'samsung-dt-7.1' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt

Samsung DTS ARM changes for v7.1

1. New board: Exynos5250 based Google Manta (Nexus 10).
2. Few cleanups.

* tag 'samsung-dt-7.1' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  ARM: dts: exyons4412: Drop duplicated I2C address/size-cells
  ARM: dts: exynos4210-smdkv310: Drop duplicated I2C address/size-cells
  ARM: dts: exynos3250: Drop duplicated I2C address/size-cells
  ARM: dts: exynos: Add Google Manta (Nexus 10)
  dt-bindings: ARM: samsung: Add Google Manta (Nexus 10)

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-04-01 18:53:19 +02:00
Sascha Bischoff
9c1ac77ddf KVM: arm64: vgic-v5: Fold PPI state for all exposed PPIs
GICv5 supports up to 128 PPIs, which would introduce a large amount of
overhead if all of them were actively tracked. Rather than keeping
track of all 128 potential PPIs, we instead only consider the set of
architected PPIs (the first 64). Moreover, we further reduce that set
by only exposing a subset of the PPIs to a guest. In practice, this
means that only 4 PPIs are typically exposed to a guest - the SW_PPI,
PMUIRQ, and the timers.

When folding the PPI state, changed bits in the active or pending were
used to choose which state to sync back. However, this breaks badly
for Edge interrupts when exiting the guest before it has consumed the
edge. There is no change in pending state detected, and the edge is
lost forever.

Given the reduced set of PPIs exposed to the guest, and the issues
around tracking the edges, drop the tracking of changed state, and
instead iterate over the limited subset of PPIs exposed to the guest
directly.

This change drops the second copy of the PPI pending state used for
detecting edges in the pending state, and reworks
vgic_v5_fold_ppi_state() to iterate over the VM's PPI mask instead.

Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com>
Link: https://patch.msgid.link/20260401162152.932243-1-sascha.bischoff@arm.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
2026-04-01 17:52:17 +01:00
Zhan Xusheng
c5283a1ffd hrtimer: Fix incorrect #endif comment for BITS_PER_LONG check
The #endif comment says "BITS_PER_LONG >= 64", but the corresponding #if
guard is "BITS_PER_LONG < 64".

The comment was originally correct when the block had a three-way
#if/#else/#endif structure, where the #else branch provided a 64-bit inline
version.  Commit 79bf2bb335 ("[PATCH] tick-management: dyntick / highres
functionality") removed the #else branch but did not update the #endif
comment, leaving it inconsistent with the remaining #if condition.

Fix the comment to match the preprocessor guard.

Signed-off-by: Zhan Xusheng <zhanxusheng@xiaomi.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260331074811.26147-1-zhanxusheng@xiaomi.com
2026-04-01 18:48:15 +02:00
Biju Das
0e5988549d irqchip/renesas-rzg2l: Add NMI support
The RZ/G2L SoC has an NMI interrupt. Add support for the NMI interrupt.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260401114504.332825-1-biju.das.jz@bp.renesas.com
2026-04-01 18:41:58 +02:00
Gaurav Batra
328335a794 powerpc/powernv/iommu: iommu incorrectly bypass DMA APIs
In a PowerNV environment, for devices that supports DMA mask less than
64 bit but larger than 32 bits, iommu is incorrectly bypassing DMA
APIs while allocating and mapping buffers for DMA operations.

Devices are failing with ENOMEN during probe with the following messages

amdgpu 0000:01:00.0: [drm] Detected VRAM RAM=4096M, BAR=4096M
amdgpu 0000:01:00.0: [drm] RAM width 128bits GDDR5
amdgpu 0000:01:00.0: iommu: 64-bit OK but direct DMA is limited by 0
amdgpu 0000:01:00.0: dma_iommu_get_required_mask: returning bypass mask 0xfffffffffffffff
amdgpu 0000:01:00.0:  4096M of VRAM memory ready
amdgpu 0000:01:00.0:  32570M of GTT memory ready.
amdgpu 0000:01:00.0: (-12) failed to allocate kernel bo
amdgpu 0000:01:00.0: [drm] Debug VRAM access will use slowpath MM access
amdgpu 0000:01:00.0: [drm] GART: num cpu pages 4096, num gpu pages 65536
amdgpu 0000:01:00.0: [drm] PCIE GART of 256M enabled (table at 0x000000F4FFF80000).
amdgpu 0000:01:00.0: (-12) failed to allocate kernel bo
amdgpu 0000:01:00.0: (-12) create WB bo failed
amdgpu 0000:01:00.0: amdgpu_device_wb_init failed -12
amdgpu 0000:01:00.0: amdgpu_device_ip_init failed
amdgpu 0000:01:00.0: Fatal error during GPU init
amdgpu 0000:01:00.0: finishing device.
amdgpu 0000:01:00.0: probe with driver amdgpu failed with error -12
amdgpu 0000:01:00.0:  ttm finalized

Fixes: 1471c517cf ("powerpc/iommu: bypass DMA APIs for coherent allocations for pre-mapped memory")
Suggested-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reported-by: Dan Horák <dan@danny.cz>
Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5039
Tested-by: Dan Horak <dan@danny.cz>
Closes: https://lore.kernel.org/linuxppc-dev/20260313142351.609bc4c3efe1184f64ca5f44@danny.cz/
Signed-off-by: Gaurav Batra <gbatra@linux.ibm.com>
Closes: https://lore.kernel.org/linuxppc-dev/20260313142351.609bc4c3efe1184f64ca5f44@danny.cz/
[Maddy: Fixed tags]
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20260331223022.47488-1-gbatra@linux.ibm.com
2026-04-01 22:08:55 +05:30
Arnd Bergmann
2feb6df85c Samsung DTS ARM64 changes for v7.1
1. Add initial support for Axis ARTPEC-9 SoC and Alfred board using it.
    Just like ARTPEC-8, this is a derivative of Samsung Exynos SoC made
    for Axis, sharing most or all of core SoC blocks with Samsung
    designs.
 
 2. New boards: Exynos7870 based Samsung Galaxy J7 (2016) and Samsung
    Galaxy J5 (2017).
 
 3. Google GS101 Pixel phone: describe all PMIC regulators and Maxim
    fuel-gauge.
 
 4. ExynosAutov920: add G3D (GPU) clock controller (CMU).
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmnCigYQHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD18c4D/0TKjfH5YBXJlaCOIXVwV1BfFteQLFr9Vhn
 CKVpvs/SAaB8Z3Mh9m4L12b/gACufB6Nm0I4y1wyuA/f90dXt918ntcAm+l0fpcu
 VpsOitkHNOXE/+JMyr/7sg8BkS0oU9geLfn68c1JxdvzsE5tTOEPM3wtz0GfhX61
 S1QyUtwyjufvGgVLXP6hkDySj2a9oAnWYxCo30Y+m0D4RrXVzW/rAq+dHTIf4Fep
 N9bOeyYyLO8TCDbn4K8i80QxUjh08u3QfFNxjRg9YjOE4giAaRXVku5erWT90Xkx
 8Oq15FGLUv7LdfKvF8upqGgYfC7v0muMV2wCwHflIwaWcKHheWRKNGpKuwm+E3nl
 k3pTIen881u1cfUZK2LL4nW+yKSBXnLhEeX1oY+/dShbjvr0ys6ExCTtpMRl5uP/
 RczYYKCHeaU/P2mlkM9UNdhdNHs0XA1kN1sqkAe5bZ9il9XLb14ypPQuSez6nTtx
 IQp6PrAY8BegzKHzxLf3fOZulhk4SQXc4nncPwEc2V84gf427h6O6otM64WAbALw
 2y7MZdSHCpRqx6VEX57Fnow+IQrUHo+sGZ7r9rlXwv9ZOR9KG/h6KD641c2yCKdn
 vMC/8rr7hpaTJZMK+qmNFaVLE0ruKSWMkWXaI3AwR2CYwYn75RP0PKAPBeY895j5
 c491yJQTtg==
 =HJ88
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmnNTHwACgkQmmx57+YA
 GNl1ug//cuB2QN6wisF+aZLHFaPmdh/Z18iRYJAMzxy1ZLUouec9dXovIFNUjXE1
 8UXzhnmAjgUge4LtKm1pJeW49kcmWPjR534u0XqXVDM/dIHMi6sSWmcPwTDQBti7
 +oWLN81CKs+NH5E8xeTmuSSLguIkeyhpUY1YFOULMird8bIoQJ2wElZVYnapfyTy
 c4lazly7tNNCVvbTeRyLjW8CSvSae9o/ykfv53sqao3kQWK1t8fy9ldIuVwBO9oG
 KYKNaiztCQyki7OKMNze1pwmtCd9dQejVoQo1oIgYeHVQYbv5fIKfiJ3dsQRs1JD
 rWzuYdbRoIBKDbSc/iDXVZd1ZIMML891onS94JsFICImbJjC0pglT5oaAQ0FU2qe
 A9P2UnVP6SyUjRRmtKpAk2uJNuMYyrFarFvt13MWG6N9abYiSOx7+jGr30427jvz
 AeF1n0ub8ZqGw2JozZgRsPfVkHiwcItwtiE5L7Hy8l0kDzvAg1bNfvPlPeDRqstP
 UAdZsGL34C1YHm6r6h1tW2E8h85Qf2mPYTDWAVk/rMFxn8E4Vj3H3h/KZNJmWYXZ
 KAsSc8u1QZW+hIrRhdoW/yFBldWyy3tHiIRPdsy/sTlfo6epwEOiiNTv3Gu8JFWV
 t4Tj1lqKHYDdhKBls6v0gpim5p+4/3/EZaVK5F8y9aKOGQVADG8=
 =2rdh
 -----END PGP SIGNATURE-----

Merge tag 'samsung-dt64-7.1' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt

Samsung DTS ARM64 changes for v7.1

1. Add initial support for Axis ARTPEC-9 SoC and Alfred board using it.
   Just like ARTPEC-8, this is a derivative of Samsung Exynos SoC made
   for Axis, sharing most or all of core SoC blocks with Samsung
   designs.

2. New boards: Exynos7870 based Samsung Galaxy J7 (2016) and Samsung
   Galaxy J5 (2017).

3. Google GS101 Pixel phone: describe all PMIC regulators and Maxim
   fuel-gauge.

4. ExynosAutov920: add G3D (GPU) clock controller (CMU).

* tag 'samsung-dt64-7.1' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  arm64: dts: exynos8895: Move I2C address/size-cells to DTSI
  arm64: dts: exynos7870: Move I2C address/size-cells to DTSI
  arm64: dts: exynos: gs101-pixel-common: add Maxim MAX77759 fuel gauge
  arm64: dts: exynos: add initial support for Samsung Galaxy J5
  dt-bindings: arm: samsung: add compatible for samsung-j5y17lte
  arm64: dts: exynosautov920: add CMU_G3D clock DT nodes
  arm64: dts: exynos: gs101-pixel: add all S2MPG1x regulators
  arm64: dts: exynos: add initial support for Samsung Galaxy J7 (2016)
  dt-bindings: arm: samsung: add compatible for samsung-j7xelte
  arm64: dts: axis: artpec9: Fix missing soc unit address
  arm64: dts: axis: Add ARTPEC-9 Alfred board support
  arm64: dts: exynos: axis: Add initial ARTPEC-9 SoC support
  dt-bindings: arm: axis: Add ARTPEC-9 alfred board
  dt-bindings: clock: Add ARTPEC-9 clock controller

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-04-01 18:34:44 +02:00
Zenghui Yu (Huawei)
03db5f05d4 KVM: arm64: selftests: Avoid testing the IMPDEF behavior
It turned out that we can't really force KVM to use the "slow" path when
emulating AT instructions [1]. We should therefore avoid testing the IMPDEF
behavior (i.e., TEST_ACCESS_FLAG - address translation instructions are
permitted to update AF but not required).

Remove it and improve the comment a bit.

[1] https://lore.kernel.org/r/b951dcfb-0ad1-4d7b-b6ce-d54b272dd9be@linux.dev

Signed-off-by: Zenghui Yu (Huawei) <zenghui.yu@linux.dev>
Link: https://patch.msgid.link/20260317131558.52751-1-zenghui.yu@linux.dev
Signed-off-by: Marc Zyngier <maz@kernel.org>
2026-04-01 17:29:21 +01:00
Arnd Bergmann
d6b92b6b74 This pull request contains Broadcom ARM64-based SoCs Device Tree updates
for 7.1, please pull the following:
 
 - Maira adds the V3D DT node to the 2712 (Raspberry Pi 5) SoC
 
 - Gergor adds the I2C controller, CSI (camera), ISP (image signal
   processor), fixes the pinctrl node and updates the UART10 interrupt
   for the RP1 sister chip to the 2712 (Raspberry Pi 5)
 
 - Rob moves the firmware and GPU to the root level to fix DTC warnings
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAmnBjgIACgkQh9CWnEQH
 BwQTsQ//Sodu5MfSCSynhAUrjL9AASh5VOQy0LTshUFF2B3poHNn4qqHxixuCbo5
 LZKCLR9LJ73ZOENo8pXn+MddZ+jkDSZKxY6nkA2uI36ISMWaxGXOZdxWOxUeeed/
 IHGtOutr9L98ymO7oU8EHtU39gduwfyalucsreJTuem7Tp/qji9bxPg3ceY483eS
 4NFbypJem3SOMxho9W5uvlUBTb5oLVWJgbbO/ZkOWHko/euVk3Jg/ATcgGvz0Omb
 YBQuFNgbvmj9SLP9DEWTNzwsCWz5KjiRM0nKtaYdQHol+0V6UFJgi/JRZFxKds9v
 sc9xHxncNyAfu72zn/sUWj9WHmiiivErNpDZtP4mE0uqkKwnJWsMsMvet9Ubz6mT
 oNcIgOwzSNyeVGRfAJXEf2m4fWZOhPkjzjArES8htmLswVdkQTI2/DvjIeN/texG
 xs1g596hFw5Vuh3ly4GLLFhXcXzeI671RZbNgvkwowe4Hs/EnbEulIlsRcWO0iGo
 ZT/ETUXRfdnkh8ZL2p+EUPy13v0w9S+eUBUEn7XdRBzf81bY/f+3RE0UCvbcDRzV
 IF9nK6w0wauxGb1lA83/Y+p4VZL1tc9C+0J+8fQJiRoNdAu/dNn7qu8071UFBJMg
 jd8rWhQ8lmzdCeLJrTdLHEH5/Mm7eJSZL59QS7y8W1NrH/VEK8U=
 =9Bck
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmnNRyQACgkQmmx57+YA
 GNmIhw/9FibpxltJDJUUqZOVbObNzNkWMhaRkMomnRZ7+fbdIhi/4Og3nTpqcxUO
 pEbW7OPQX7As8AdhEuiSK19GTnZbtlKhPOzBGTPDn1uaLOHZ1s40nxVXsnLb8Hki
 h/r2MHt8AXnIFREtVIxdhKsnXorcEZLYa2KGxEnortmR3BsNm0ESowjX56K9wHFG
 zIdVwtOGntzXVE14SKKZw2cHUu+7Bvrc4w1mnsffIH8hJlztv59w3n7CFAj7Guqc
 DH6DjpgUPbftehqcedjwjK0580xTDeye/MFgvgoCvQ+0q6O5JbJ6uQoUdPO+g85r
 vGZXT1VXVFcHSaMPVoN/SF36s88EBFCgl+TkLC36AP2w2SbuywOPZ5oPpQeKCNDu
 5kC9EKm1ZDBcAuN4kxjyQDjAtTTaZDASgQKpTiPhsuu1fl/oaQbbOj15mIfW59Vv
 Dj0exL9oJcF5B3EUYtJGxF29lGkTi0G4ORu+jpeFRbozF+tjDP0SwHmhTgbhCHzO
 erhjVH3M+4Jop2A0FTSWna0+LFjJ01lvsODQp3kZMMCLR0ZdClX0rX8YoZ54b6IM
 BWqYNRA7q5Or1dbRnE2DOoUXOGmTKstEKRbvZKqhZewNzBSZi2mZbGp3KjDVzjdY
 7Ve6f89fbV+ah+CPH4FFW2IqH15i64X9p2yDKRTRr8JnOyRNZP4=
 =AREl
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-7.1/devicetree-arm64' of https://github.com/Broadcom/stblinux into soc/dt

This pull request contains Broadcom ARM64-based SoCs Device Tree updates
for 7.1, please pull the following:

- Maira adds the V3D DT node to the 2712 (Raspberry Pi 5) SoC

- Gergor adds the I2C controller, CSI (camera), ISP (image signal
  processor), fixes the pinctrl node and updates the UART10 interrupt
  for the RP1 sister chip to the 2712 (Raspberry Pi 5)

- Rob moves the firmware and GPU to the root level to fix DTC warnings

* tag 'arm-soc/for-7.1/devicetree-arm64' of https://github.com/Broadcom/stblinux:
  arm64: dts: broadcom: bcm2712: Move non simple-bus nodes to root level
  arm64: dts: broadcom: bcm2712-d-rpi-5-b: update uart10 interrupt
  arm64: dts: broadcom: bcm2712-d-rpi-5-b: add fixes for pinctrl/pinctrl_aon
  arm64: dts: broadcom: bcm2712-rpi-5-b: add pinctrl properties for csi i2cs
  arm64: dts: broadcom: bcm2712: add camera backend node pispbe
  arm64: dts: broadcom: rp1: add csi nodes
  arm64: dts: broadcom: rp1: add i2c controller
  arm64: dts: broadcom: bcm2712: Add V3D device node

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-04-01 18:26:07 +02:00
Pavel Begunkov
8ae2837d5a io_uring/zcrx: don't use mark0 for allocating xarray
XA_MARK_0 is not compatible with xarray allocating entries, use
XA_MARK_1.

Fixes: fda90d43f4fac ("io_uring/zcrx: return back two step unregistration")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://patch.msgid.link/f232cfd3c466047d333b474dd2bddd246b6ebb82.1774780198.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-04-01 10:21:13 -06:00
Anas Iqbal
77d8c8d0f1 io_uring: cast id to u64 before shifting in io_allocate_rbuf_ring()
Smatch warns:
io_uring/zcrx.c:393 io_allocate_rbuf_ring() warn: should 'id << 16' be a 64 bit type?

The expression 'id << IORING_OFF_PBUF_SHIFT' is evaluated using 32-bit
arithmetic because id is a u32. This may overflow before being promoted
to the 64-bit mmap_offset.

Cast id to u64 before shifting to ensure the shift is performed in
64-bit arithmetic.

Signed-off-by: Anas Iqbal <mohd.abd.6602@gmail.com>
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://patch.msgid.link/52400e1b343691416bef3ed3ae287fb1a88d407f.1774780198.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-04-01 10:21:13 -06:00
Pavel Begunkov
a9d008489f io_uring/zcrx: reject REG_NODEV with large rx_buf_size
The copy fallback path doesn't care about the actual niov size and only
uses first PAGE_SIZE bytes, and any additional space will be wasted.
Since ZCRX_REG_NODEV solely relies on the copy path, it doesn't make
sense to support non-standard rx_buf_len. Reject it for now, and
re-enable once improved.

Fixes: c11728021d5cd ("io_uring/zcrx: implement device-less mode for zcrx")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://patch.msgid.link/3e7652d9c27f8ac5d2b141e3af47971f2771fb05.1774780198.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-04-01 10:21:13 -06:00
Amir Mohammad Jahangirzad
85a58309c0 io_uring/cancel: validate opcode for IORING_ASYNC_CANCEL_OP
io_async_cancel_prep() reads the opcode selector from sqe->len and
stores it in cancel->opcode, which is an 8-bit field. Since sqe->len
is a 32-bit value, values larger than U8_MAX are implicitly truncated.

This can cause unintended opcode matches when the truncated value
corresponds to a valid io_uring opcode. For example, submitting a value
such as 0x10b will be truncated to 0x0b (IORING_OP_TIMEOUT), allowing a
cancel request to match operations it did not intend to target.
Validate the opcode value before assigning it to the 8-bit field and
reject values outside the valid io_uring opcode range.

Signed-off-by: Amir Mohammad Jahangirzad <a.jahangirzad@gmail.com>
Link: https://patch.msgid.link/20260331232113.615972-1-a.jahangirzad@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-04-01 10:21:13 -06:00
Jackie Liu
19a8cc6cda io_uring/rsrc: use io_cache_free() to free node
Replace kfree(node) with io_cache_free() in io_buffer_register_bvec()
to match all other error paths that free nodes allocated via
io_rsrc_node_alloc(). The node is allocated through io_cache_alloc()
internally, so it should be returned to the cache via io_cache_free()
for proper object reuse.

Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
Link: https://patch.msgid.link/20260331104509.7055-1-liu.yun@linux.dev
[axboe: remove fixes tag, it's not a fix, it's a cleanup]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-04-01 10:21:13 -06:00
Pavel Begunkov
7c713dd007 io_uring/zcrx: rename zcrx [un]register functions
Drop "ifqs" from function names, as it refers to an interface queue and
there might be none once a device-less mode is introduced.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://patch.msgid.link/657874acd117ec30fa6f45d9d844471c753b5a0f.1774261953.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-04-01 10:21:13 -06:00
Pavel Begunkov
de6ed1b323 io_uring/zcrx: check ctrl op payload struct sizes
Add a build check that ctrl payloads are of the same size and don't grow
struct zcrx_ctrl.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://patch.msgid.link/af66caf9776d18e9ff880ab828eb159a6a03caf5.1774261953.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-04-01 10:21:13 -06:00