← Back to archive

Daily update · Sep 23–24, 2026

Pinctrl and architecture fixes: Allwinner GPIO, arm64 PMU trap, parisc stack

A mainline update with pinctrl fixes for Allwinner, Qualcomm, and Tegra, plus arm64 trap and parisc reliability fixes.

In brief

This batch of mainline fixes covers pinctrl drivers for Allwinner, Qualcomm, and Tegra, along with several arm64 and parisc corrections. The pinctrl changes fix GPIO corruption and wrong pinmux selection, while the arm64 updates address a PMU trap, a spurious ioremap warning, and erratum matching. Parisc gains a larger kernel stack and functional HugeTLB boot parameters.

Bug fixes

pinctrl: serialize generic DT node-to-map parsing

pinctrl_generic_dt_node_to_map() adds groups and functions without taking pctldev->mutex, despite the add functions documenting that the caller must lock. Two devices probing against the same pin controller can race on the same selector index.

Why it matters: Fixes a potential crash or misconfiguration on systems with multiple devices sharing one pin controller.

51ae99659469

pinctrl: Allwinner: keep shadow output latch to avoid GPIO corruption

Reading an Allwinner data register returns the actual pin level, not the output latch, for pins muxed as inputs. The GPIO set path's read-modify-write can therefore overwrite latches of input-muxed pins in the same bank, breaking emulated open-drain lines.

Why it matters: Corrects GPIO output behavior on Allwinner SoCs; particularly important for bit-banged I2C.

a13f7f5d14af

pinctrl: Allwinner A523: fix voltage withstand encoding

The A523 uses the same voltage-threshold mechanism as earlier SoCs but with an inverted encoding for 1.8V vs 3.3V. The patch adds a new bias type and also enables the CTL register so thresholds can be disabled for other voltages.

Why it matters: Fixes eMMC and Ethernet operation on some A523 boards.

ef56085dfd1d

pinctrl: Qualcomm Nord: distinguish QUP1 SE2/SE3 lane pairs

QUP1 SE2/SE3 put each lane pair on two pins with different mux values, but both values were named the same function. The mux code always picked the first entry, so the I2C lanes were never selected.

Why it matters: Restores correct I2C and UART pin selection on Qualcomm Nord platforms.

b0be01f133aa

pinctrl: Tegra238: fix AON register bank

Tegra238's AON pin controller has a single register region, but the AON pin groups were assigned bank 1. This caused an invalid index into pmx->regs[] during probe.

Why it matters: Fixes pinmux register access for Tegra238 AON pins.

ae2c5bf96957

arm64: prevent PMZR_EL0 write trap on nVHE

The EL2 fine-grained trap configuration wrote the same mask to HDFGRTR2_EL2 and HDFGWTR2_EL2, but PMZR_EL0 is write-only and its trap bit lives only in the write mask. A userspace PMZR_EL0 write then trapped to EL2 and hit a BUG() in the nVHE hypervisor.

Why it matters: Prevents a host crash when kernel.perf_user_access=1 allows userspace PMU register access.

2bc6b218717b

arm64: reject PROT_NONE in ioremap_prot()

generic_access_phys() passes user PTE protection to ioremap_prot(). On arm64, PROT_NONE PTEs are present-invalid, so pte_present() is true and the protection was accepted, triggering a WARN in the /dev/mem path.

Why it matters: Removes a spurious WARN and blocks non-user protection values from reaching ioremap_prot().

bb756b11ad63

arm64: fix erratum MIDR matching for per-CPU workarounds

The MIDR range check used by errata workarounds ignored the @midr argument passed for the CPU being checked and instead scanned the whole target CPU list. That allowed a fixed CPU to make an affected CPU exempt.

Why it matters: Ensures arm64 errata workarounds are applied only when the actual CPU is affected.

b7403afb7a5f

parisc: increase kernel stack to 32kB

64-bit parisc defaulted to a 16kB kernel stack, which overflowed during kernel builds with gcc 17, causing a panic. The patch raises THREAD_SIZE_ORDER to give 32kB stacks.

Why it matters: Prevents stack-overflow panics on parisc under heavy workloads.

94b7e3a7e871

parisc: parse early parameters in setup_arch()

parisc never called parse_early_param() from setup_arch(), so HugeTLB options like hugepages= and hugetlb_cma= were parsed after mm_core_init_early() had already consumed the defaults, silently dropping them.

Why it matters: Makes HugeTLB command-line parameters work on parisc.

289e99e7a263

Source commits20 entries +
692f32609a30

pinctrl: meson: Fix typo in s4 group name

Sean Anderson · Aug 17, 2026 · 1 files

51ae99659469

pinctrl: generic: serialise pinctrl_generic_dt_node_to_map()

Sarah Emery · Aug 28, 2026 · 1 files

b0be01f133aa

pinctrl: qcom: nord: Split QUP1 SE2/SE3 into lane-pair functions

Shawn Guo · Aug 30, 2026 · 2 files

e6c5d6c58976

pinctrl: mpfs-mssio: fix width of unused bank voltage setting

Conor Dooley · Aug 31, 2026 · 1 files

8039b75af580

pinctrl: mpfs-mssio: use correct regmap function to set bank voltage

Conor Dooley · Aug 31, 2026 · 1 files

a13f7f5d14af

pinctrl: sunxi: keep a shadow copy of the data register output latches

Ilya Titov · Sep 3, 2026 · 2 files

447dcff90557

pinctrl: qcom: ipq5210: Publish the OF module alias

hpp.iscas · Sep 5, 2026 · 1 files

b7403afb7a5f

arm64: errata: match the target implementation CPU's own MIDR

David Carlier · Sep 6, 2026 · 1 files

bb756b11ad63

arm64: io: Reject non-user protection in ioremap_prot()

Zeng Heng · Sep 11, 2026 · 1 files

baaa9b126b87

arm64: Add override for WFxT

Yureka Lilian · Sep 11, 2026 · 2 files

1d9bb9c87063

pinctrl: single: free the IRQ on domain creation failure

Myeonghun Pak · Sep 13, 2026 · 1 files

4485a01f4df1

parisc: unwind: Replace open-coded binary search with bsearch()

Sean Young · Sep 13, 2026 · 1 files

ef56085dfd1d

pinctrl: sunxi: A523: fix voltage withstand encoding

Andre Przywara · Sep 14, 2026 · 4 files

406aa2b186d3

perf/arm-cmn: Fix multi-filter encoding

Robin Murphy · Sep 15, 2026 · 1 files

ba13f1f32d96

mm: memblock: add missing HugeTLB flag name

Meijing Zhao · Sep 15, 2026 · 1 files

ae2c5bf96957

pinctrl: tegra238: Fix register bank for AON pin groups

Prathamesh Shete · Sep 16, 2026 · 1 files

cb917b1e1c23

parisc: remove unused <asm/compat_ucontext.h> header

Ethan Nelson-Moore · Sep 18, 2026 · 1 files

289e99e7a263

parisc: parse early parameters in setup_arch()

Zhenghui Hao · Sep 18, 2026 · 1 files

94b7e3a7e871

parisc: Increase kernel stack size to 32kb

Helge Deller · Sep 19, 2026 · 1 files

2bc6b218717b

arm64/boot: Disable trapping of PMZR_EL0 writes to EL2

Fuad Tabba · Sep 22, 2026 · 2 files