summaryrefslogtreecommitdiff
path: root/arch
AgeCommit message (Collapse)Author
2026-05-11arm64: dts: mediatek: mt8195-cherry: Add MT6315 PMIC suppliesChen-Yu Tsai
The MT8195 Cherry design has two MT6315 PMICs. One has 4 outputs ganged together; the other has 2 outputs ganged together, and the other two unused. Add supplies for these two PMICs. Since the outputs are ganged together, just add the supply for the first one. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8195-cherry: Add MT6359 PMIC suppliesChen-Yu Tsai
The MT6359 PMIC has a number of power inputs for its various buck and LDO regulators. The binding recently gained property definitions for them. Add the supplies for the PMIC regulators to the common design dtsi file. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8192-asurada: Fix WiFi regulator descriptionChen-Yu Tsai
The WiFi supply regulator is a current-limiting switch. It does not have voltage regulation capabilities. The description is also missing a power input. Drop the voltage constraints, and add a supply input. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8192-asurada: Add SPI NOR flash power supplyChen-Yu Tsai
The device tree for the MT8192 Asurada is missing a power supply for the SPI NOR flash chip. Add the supply for the SPI NOR flash chip. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8192-asurada: Add CPU power suppliesChen-Yu Tsai
The device tree for the MT8192 Asurada is missing power supplies for all the CPU cores. Add supplies to the CPU cores. The big and little clusters each have their own regulator. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8192-asurada: Add supplies for ChromeOS EC regulatorsChen-Yu Tsai
The ChromeOS Embedded Controller exposes two regulators to the system in the MT8192 Asurada design. Both these regulators also have power inputs. Add supplies for these two regulators. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8192-asurada: Add MT6315 PMIC suppliesChen-Yu Tsai
There are two MT6315 PMICs in the MT8192 Asurada design. One has two outputs ganged together and two outputs unused. The other has three outputs ganged together, and one left independent. Add supplies for all the used regulators. In the case of ganged outputs, add the supply for just the first output. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8192-asurada: Add MT6359 PMIC suppliesChen-Yu Tsai
The MT6359 PMIC has a number of power inputs for its various buck and LDO regulators. The binding recently gained property definitions for them. Add the supplies for the PMIC regulators to the common design dtsi file. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt6359: Switch to proper ldo_vcn33_[12] regulatorsChen-Yu Tsai
The ldo_vcn33_[12]_wifi and ldo_vcn33_[12]_bt are just two regulator outputs instead of four. The wifi and bt parts refer to separate enable bits that are OR-ed together to affect the actual regulator output. The separate bits allow the wifi and bt stacks to enable their power without coordination between them. These have been deprecated in favor of proper nodes matching the output. Add proper ldo_vcn33_[12] nodes and drop the old ones. No default voltage ranges are given as they don't make sense, and the existing ranges are about to be removed. In-tree users of the existing *_(wifi|bt) regulator nodes are converted over to use the new ones. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8186-corsola-voltorb: Add MT6315 PMIC suppliesChen-Yu Tsai
The MT8186 Voltorb device has one MT6315 PMIC. The first 2 outputs ganged together, and the other two unused. Add supplies for this PMIC. Even though the outputs are unused, the inputs are still connected. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8192-asurada: Move PCIe DMA bounce buffer to hostChen-Yu Tsai
The DMA bounce buffer is attached to the PCIe host controller, i.e. all PCIe DMA transfers should use it. Move it from the PCIe (WiFi) device node down to the PCIe host controller node. Fixes: 0dca9f0b3e63 ("arm64: dts: mediatek: asurada: Enable PCIe and add WiFi") Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: add crypto offload support on MT7981Aleksander Jan Bajkowski
The MT7981 as well as the MT7986 have a built-in EIP-97 rev 2.3p0 crypto accelerator. This commit adds the missing entry in the dts. Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8395-genio-common: add MT6360 PMIC suppliesLouis-Alexis Eyraud
The Mediatek Genio 1200-EVK board has a MT6360 PMIC, powered by the board system power rail (VSYS) and an additional system power rail (VSYS_BUCK). In the board devicetree, the power supply inputs for its buck and ldo regulators are either incorrect (LDO_VIN3) or missing (LDO_VIN1/2, BUCK_VIN1/2). So, add VSYS_BUCK regulator node and the proper supply inputs for this PMIC. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8395-genio-common: add MT6315 PMIC suppliesLouis-Alexis Eyraud
Mediatek Genio 1200-EVK board has two MT6315 PMICs, powered by the board system power rail (VSYS) and connected to the SPMI interface. Add VSYS regulator node for system power rail and the supply inputs of these two PMICs. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8390-genio-700-evk: add specific CPU power suppliesLouis-Alexis Eyraud
Add power supply definitions for the additional little CPU core nodes, that cannot be factorized in the board common dtsi due to little core number difference between MT8390 SoC (used by this board) and MT8370 SoC (used by Genio 510-EVK). Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8390-genio-common: add CPU power suppliesLouis-Alexis Eyraud
Mediatek Genio 510-EVK (MT8370) and 700-EVK (MT8390) devicetrees are missing power supply definitions for all their CPU cores. On the boards, the big core power is supplied by a MT6319 (sub PMIC), and little core power by a MT6365 (main PMIC). MT8370 and MT8390 SoC have the same core type (little cores are ARM Cortex A55, big ones are A78), the same big core number (2) but MT8390 SoC has more little cores (6) than MT8370 SoC (only 4). To handle the little core number difference, add in the board common dtsi the power supply definitions for the common CPU core nodes (0-3, 6 and 7). The power supplies for the additional MT8390 CPU core nodes (4 and 5) will be added for the Genio 700 in a separate commit. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8390-genio-common: add MT6319 PMIC supportLouis-Alexis Eyraud
Mediatek Genio 510 and 700-EVK boards integrate a MT6319 PMIC, powered by the board system power rail (VSYS) and connected to the SPMI interface. It provides buck regulators for CPU core power supplies in particular. Add the needed nodes in the board common dtsi to enable its support. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt7988a-bpi-r4pro: rework pcie gpio-hog handlingFrank Wunderlich
The active-high property in base-dt cannot be overwritten and must be set in separate overlay. Fixes: f397471a6a8c ("arm64: dts: mediatek: mt7988: Add devicetree for BananaPi R4 Pro") Signed-off-by: Frank Wunderlich <frank-w@public-files.de> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt7988a-bpi-r4pro: update gpio-ledsFrank Wunderlich
On the official case the red LED is named ERR, the blue LED is named ACT.​​​​​​​​​​​​​​​​ Reflect these labels in function and set them default off. Signed-off-by: Frank Wunderlich <frank-w@public-files.de> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt7988a-bpi-r4pro: drop duplicate fan propertiesFrank Wunderlich
These properties are already set in the original node and do not need to be defined again. Signed-off-by: Frank Wunderlich <frank-w@public-files.de> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt7988a-bpi-r4pro: rename mgmt port to lan5Frank Wunderlich
It turns out that the label mgmt confuses users and now official case is released where the port is labeled with number 5. So just rename it to lan5 to follow naming convension (lan1-4 from mxl switch and lan6 for lan- combo). Signed-off-by: Frank Wunderlich <frank-w@public-files.de> Reviewed-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8395-radxa-nio-12l: use MT6365 PMIC definitionsLouis-Alexis Eyraud
Radxa NIO-12L EVK board integrates a MT6365 PMIC, compatible with MT6359, but its devicetree used mt6359.dtsi to enable its support since the board support was introduced. Now that mt6365.dtsi has been created, include it instead of mt6359.dtsi and use MT6365 labels and pmic key compatible too. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8395-genio-common: use MT6365 PMIC definitionsLouis-Alexis Eyraud
Mediatek Genio 1200 EVK board integrates a MT6365 PMIC, compatible with MT6359, but the board common definition include file (for the eMMC and UFS configurations) used the mt6359.dtsi to enable its support since the board support was introduced. Now that mt6365.dtsi has been created, include it instead of mt6359.dtsi and use MT6365 labels and pmic key compatible too. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: mt8390-genio-common: use MT6365 PMIC definitionsLouis-Alexis Eyraud
Mediatek Genio 510 and 700 EVK boards integrate a MT6365 PMIC, compatible with MT6359, but the board common definition include file used the mt6359.dtsi to enable its support since the board support was introduced. Now that mt6365.dtsi has been created, include it instead of mt6359.dtsi and use MT6365 labels and pmic key compatible too. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: mediatek: add MT6365 PMIC includeLouis-Alexis Eyraud
The MT6365 PMIC, compatible with MT6359 PMIC, never had its own include file so the boards that integrates this PMIC used mt6359.dtsi in their devicetree to enable its support. So, add the mt6365 include file for the MT6365 definitions and labels. In order not to duplicate all of them, make it include mt6359.dtsi and override the compatible strings for the MFD main and sub devices with the MT6365 ones. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> [Angelo: Fixed regulators node label] Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11x86/cpu: Introduce a centralized CPUID data modelAhmed S. Darwish
** Context The x86-cpuid-db project generates a C header file with full C99 bitfield listings for all known CPUID leaf/subleaf query outputs. That header is now merged by parent commits at <asm/cpuid/leaf_types.h>, and is of the form: struct leaf_0x0_0 { /* CPUID(0x0).0 C99 bitfields */ }; ... struct leaf_0x4_n { /* CPUID(0x4).n C99 bitfields */ }; ... struct leaf_0xd_0 { /* CPUID(0xd).0 C99 bitfields */ }; struct leaf_0xd_1 { /* CPUID(0xd).1 C99 bitfields */ }; struct leaf_0xd_n { /* CPUID(0xd).n C99 bitfields */ }; ... ** Goal Introduce a structured, size-efficient, per-CPU, CPUID data repository. Use the x86-cpuid-db auto-generated data types, and custom CPUID leaf parsers, to build that repository. Given a leaf, subleaf, and index, provide direct memory access to the parsed and cached per-CPU CPUID output. ** Long-term goal Remove the need for drivers and other areas in the kernel to invoke direct CPUID queries. Only one place in the kernel should be allowed to use the CPUID instruction: the CPUID parser code. ** Implementation Introduce CPUID_LEAF()/CPUID_LEAF_N() to build a compact CPUID storage layout in the form: struct leaf_0x0_0 leaf_0x0_0[1]; struct leaf_parse_info leaf_0x0_0_info; struct leaf_0x1_0 leaf_0x1_0[1]; struct leaf_parse_info leaf_0x0_0_info; struct leaf_0x4_n leaf_0x4_n[8]; struct leaf_parse_info leaf_0x4_n_info; ... where each CPUID query stores its output at the designated leaf/subleaf array and has an associated "CPUID query info" structure. Embed the CPUID tables inside "struct cpuinfo_x86" to ensure early-boot and per-CPU access through the CPUs capability structures. Use an array of CPUID output storage entries for each leaf/subleaf combination to accommodate leaves which produce the same output format for a large subleaf range. This is typical for CPUID leaves enumerating hierarchical objects; e.g. CPUID(0x4) cache topology enumeration, CPUID(0xd) XSAVE enumeration, and CPUID(0x12) SGX Enclave Page Cache enumeration. ** New CPUID APIs Assuming a CPU capability structure 'c', provide macros to access the parsed and cached CPUID leaf/subleaf output. These macros resolve to a compile-time tokenization that ensures type-safety: const struct leaf_0x7_0 *l7_0; l7_0 = cpuid_subleaf(c, 0x7, 0); | | └────────┐ | └─────────┐ | * * * &c.cpuid.leaf_0x7_0[0] For CPUID leaves with multiple subleaves having the same output format, provide the APIs: const struct leaf_0x4_n *l4_0, *l4_1; l4_0 = cpuid_subleaf_n(c, 0x4, 0); | | └──────────┐ | └─────────┐ | * * v &c.cpuid.leaf_0x4_n[0] l4_1 = cpuid_subleaf_n(c, 0x4, 1); | | └──────────┐ | └─────────┐ | * * v &c.cpuid.leaf_0x4_n[1] where the indices 0, 1, n above can be passed dynamically; e.g., in an enumeration for loop. Add a clear rationale on why call sites should use the these new APIs instead of directly invoking CPUID. ** Next steps For now, define cached parse entries for CPUID(0x0) and CPUID(0x1). Generic parser logic to fill the CPUID tables, along with more CPUID leaves support, will be added next. Suggested-by: Thomas Gleixner <tglx@kernel.org> # CPUID data model Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com> # x86-cpuid-db schema Suggested-by: Borislav Petkov <bp@alien8.de> # Early CPUID centralization drafts Suggested-by: Ingo Molnar <mingo@kernel.org> # CPUID headers restructuring Suggested-by: Sean Christopherson <seanjc@google.com> # cpuid_subleaf_n() APIs Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://lore.kernel.org/all/20260327021645.555257-1-darwi@linutronix.de Link: https://lore.kernel.org/all/874ixernra.ffs@tglx Link: https://gitlab.com/x86-cpuid.org/x86-cpuid-db Link: https://lore.kernel.org/all/aBnSgu_JyEi8fvog@gmail.com Link: https://lore.kernel.org/all/aJ9TbaNMgaplKSbH@google.com
2026-05-11arm: dts: mediatek: mt8135: fix pinctrl node nameDavid Lechner
Correct the pinctrl node name to use the same address as the reg property. Signed-off-by: David Lechner <dlechner@baylibre.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm: dts: mediatek: mt7623: fix pinctrl controller node nameDavid Lechner
Correct the pinctrl controller node name to use the same address as the reg property. Signed-off-by: David Lechner <dlechner@baylibre.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm: dts: mediatek: mt7623: fix pinctrl child node namesDavid Lechner
Fix the pinctrl child node names to adhere to the bindings. The main pin node is supposed to be named like "something-pins" and the pinmux node named like "pins-something". Signed-off-by: David Lechner <dlechner@baylibre.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm: dts: mediatek: mt6589: Add Arm Generic Timer nodeAkari Tsuyukusa
Add the Arm Generic Timer node to the MT6589 SoC. "arm,cpu-registers-not-fw-configured;" is required because the bootloader does not initialize the Arm Generic Timer. Signed-off-by: Akari Tsuyukusa <akkun11.open@gmail.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2026-05-11arm64: dts: rockchip: Add verisilicon IOMMU node on RK3588Benjamin Gaignard
Add the device tree node for the Verisilicon IOMMU present in the RK3588 SoC. This IOMMU handles address translation for the VPU hardware blocks. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
2026-05-11ARM: dts: ixp4xx: use phandle-based GPIOs in mi424wrMohamed Ayman
Convert remaining legacy integer GPIO specifiers to phandle-based descriptors in intel-ixp42x-actiontec-mi424wr.dtsi. All other GPIOs in this file already use &gpio0/&gpio1. These are the last remaining legacy users in the IXP4xx DTS files. Signed-off-by: Mohamed Ayman <mohamedaymanworkspace@gmail.com> Link: https://lore.kernel.org/20260428191029.809462-1-mohamedaymanworkspace@gmail.com Signed-off-by: Linus Walleij <linusw@kernel.org> Link: https://lore.kernel.org/r/20260505-ixp4xx-dts-v1-1-02f4a92a9697@kernel.org Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-05-11arm64: dts: realtek: Add pinctrl support for RTD1625Yu-Chun Lin
Add the pinctrl nodes for the Realtek RTD1625 SoC. Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com> Link: https://lore.kernel.org/r/20260505105838.1014771-1-eleanor.lin@realtek.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-05-11Merge tag 'v7.1-rc3' into staging-nextGreg Kroah-Hartman
We need the staging fixes in here to build off of. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-05-11Merge tag 'v7.1-rc3' into usb-nextGreg Kroah-Hartman
We need the USB fixes in here as well to test and work off of. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-05-11arm: dts: allwinner: t113s: enable watchdog for rebootMichal Piekos
Reboot hangs on T113s boards because no restart handler is available. Enable the SoC watchdog whose driver registers a restart handler. Tested on LCPI-PC-T113/F113. Signed-off-by: Michal Piekos <michal.piekos@mmpsystems.pl> Link: https://patch.msgid.link/20260506-t113-mangopi-reboot-hang-v3-1-fa15a360a520@mmpsystems.pl Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
2026-05-11arm64: dts: allwinner: h616: add hstimer nodeMichal Piekos
Describe high speed timer block on Allwinner H616. Tested on Orange Pi Zero 3: - hstimer is registered as clocksource - switching clocksource at runtime works - after rating increase hstimer operates as a broadcast clockevent device Signed-off-by: Michal Piekos <michal.piekos@mmpsystems.pl> Reviewed-by: Chen-Yu Tsai <wens@kernel.org> Link: https://patch.msgid.link/20260506-h616-t113s-hstimer-v4-4-591d425863d6@mmpsystems.pl Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
2026-05-11riscv: dts: allwinner: d1s-t113: add hstimer nodeMichal Piekos
Describe high speed timer block on Allwinner D1S-T113. Tested on LCPI-PC-T113/F113: - hstimer is registered as clocksource - switching clocksource at runtime works - after rating increase hstimer operates as a broadcast clockevent device Signed-off-by: Michal Piekos <michal.piekos@mmpsystems.pl> Reviewed-by: Chen-Yu Tsai <wens@kernel.org> Link: https://patch.msgid.link/20260506-h616-t113s-hstimer-v4-3-591d425863d6@mmpsystems.pl [wens@kernel.org: change subject prefix from "arm" to "riscv"] [wens@kernel.org: fix interrupt representation] Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
2026-05-11arm64: dts: cix: Add CPU idle states for Sky1Devin Li
Add PSCI-based CPU idle state definitions for the Sky1 SoC, enabling core and cluster level power management through ARM PSCI firmware. Three idle states are defined: - CPU_SLEEP_0: Core idle state for A520 cores (psci-suspend-param 0x0010000), entry-latency 34us, exit-latency 100us - CPU_SLEEP_1: Core idle state for A720 cores (psci-suspend-param 0x10000), entry-latency 31us, exit-latency 79us - CLUSTER_SLEEP_0: Cluster idle state shared by all cores (psci-suspend-param 0x1010000), entry-latency 41us, exit-latency 104us A520 cores (cpu0-3) reference CPU_SLEEP_0 and CLUSTER_SLEEP_0, while A720 cores (cpu4-11) reference CPU_SLEEP_1 and CLUSTER_SLEEP_0. Signed-off-by: Devin Li <Devin.Li@cixtech.com> Link: https://lore.kernel.org/r/20260507065956.3900087-1-Devin.Li@cixtech.com Signed-off-by: Peter Chen <peter.chen@cixtech.com>
2026-05-11arm64: dts: cix: Add SCMI performance domains for CPUFreq on Sky1Devin Li
Add SCMI Protocol 13 (Performance) node under ap_to_pm_scmi with domains. Define SKY1_PERF_* macros in sky1-power.h for all performance domain IDs (CPU L/B0/B1/M0/M1, GPU, DSU, NPU, VPU, CI700, NI700), and wire each CPU node to its corresponding performance domain using power-domains and power-domain-names properties. Signed-off-by: Devin Li <Devin.Li@cixtech.com> Link: https://lore.kernel.org/r/20260506025254.3602623-1-Devin.Li@cixtech.com Signed-off-by: Peter Chen <peter.chen@cixtech.com>
2026-05-11ASoC: Move system_long_wq to system_dfl_long_wqMark Brown
Marco Crivellari <marco.crivellari@suse.com> says: Currently the code uses the per-cpu workqueue system_long_wq to schedule long running works. Unbound works could benefit from scheduler task placement, to optimize performance and power consumption. Another good reason to have this unbound, is the "queue_delayed_work()" function, used to enqueue the work item. More details on this will follow in the next section. Recently, a new unbound workqueue specific for long running work has been added: c116737e972e ("workqueue: Add system_dfl_long_wq for long unbound works") ~~~ Details about queue_delayed_work ~~~ system_long_wq is a per-cpu workqueue and it is used as a parameter of queue_delayed_work(). This function schedule an item that it will later be enqueued (once the timer will fire). __queue_delayed_work() does the job receiving as "cpu" WORK_CPU_UNBOUND: if (housekeeping_enabled(HK_TYPE_TIMER)) { // [....] } else { if (likely(cpu == WORK_CPU_UNBOUND)) add_timer_global(timer); else add_timer_on(timer, cpu); } The timer is global, so can fire everywhere, and the work item will be enqueued where the timer fired. Since the workqueue work doesn't rely on per-cpu variables, there is no obvious reason that justify the use of a per-cpu workqueue. So change the workqueue with the new system_dfl_long_wq, so that the used workqueue is now unbound and can benefit from scheduler task placement.
2026-05-10Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf 7.1-rc3Alexei Starovoitov
Cross-merge BPF and other fixes after downstream PR. Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2026-05-10Merge branch 'kvm-vmenter' into HEADPaolo Bonzini
Move SPEC_CTRL handling for VMX entirely to vmenter.S, also improving assembly code reuse between SVM and VMX. The prototype of __vmx_vcpu_run() and __svm_vcpu_run() becomes the same, with a set of bit flags for the second argument. The register allocation also becomes very similar, with %edi/%rdi pointing to the vmx (resp. svm) argument. Thanks to this, the code to save and restore SPEC_CTRL values for the host and guest is the same up to the register names and can be dropped into a new header arch/x86/kvm/vmenter.h. APX enablement will also move common code to load and save registers from VMX and SVM to vmenter.h. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2026-05-10Merge branch 'kvm-mbec' into HEADPaolo Bonzini
This topic branch introduces support for two related features that Hyper-V uses in its implementation of Virtual Secure Mode; these are Intel Mode-Based Execute Control and AMD Guest Mode Execution Trap. Both MBEC and GMET allow more granular control over execute permissions, with different levels of separation between supervisor and user mode. MBEC provides support for separate supervisor and user-mode bits in the PTEs; GMET instead lacks supervisor-mode only execution (with NX=0, "both" is represented by U=0 and user-mode only by U=1). GMET was clearly inspired by SMEP though with some differences and annoyances. The implementation starts from two changes to core MMU code, both of which help making the actual feature almost trivial to implement: - first, I'm cleaning up the implementation of nVMX exec-only, by properly adding read permissions to the ACC_* constant and to the permission bitmask machinery. Jon also had to add a fourth ACC_* bit, but used it only in the special case of nested MBEC; here instead ACC_READ_MASK is the normality, which simplifies testing a lot and removes gratuitous complexity. - second, I'm enforcing that KVM runs with MBEC/GMET enabled even in non-nested mode, if it wants to provide the feature to nested hypervisors. This makes the creation of SPTEs looks exactly the same for L1 and L2 guests, despite only the latter using MBEC/GMET fully; the difference lies only in the input access permissions. This strategy adds a limited amount of complexity to the core is limited, while providing for an almost entirely seamless support of nested hypervisors. Later patches have to use slightly different meanings for ACC_* in Intel and AMD. On the Intel side, some work is needed in order to split shadow_x_mask and ACC_EXEC_MASK in two; now that there is an actual ACC_READ_MASK to be used for exec-only pages, ACC_USER_MASK is unused and can be reused as ACC_USER_EXEC_MASK. However, unlike the older ACC_USER_MASK hack these differences are backed by concrete concepts of the page table format, and there is always a 1:1 mapping from ACC_* bits to PT_*_MASK or shadow_*_mask: Intel AMD -------------------- ------------------- ------------------- ACC_READ_MASK PT_PRESENT_MASK PT_PRESENT_MASK ACC_WRITE_MASK PT_WRITABLE_MASK PT_WRITABLE_MASK ACC_EXEC_MASK shadow_xs_mask shadow_nx_mask ACC_USER_MASK --- shadow_user_mask ACC_USER_EXEC_MASK shadow_xu_mask --- On Intel, ACC_EXEC_MASK is used for kernel-mode execution and is tied to shadow_xs_mask (when MBEC is disabled, ACC_USER_EXEC_MASK and the XU bit are computed but ineffective). update_permission_bitmask() precomputes all the necessary conditions. On the AMD side, the U bit maps to ACC_USER_MASK but nNPT adjusts the permission bitmask to ignore it for reads and writes when GMET is active. Despite the smaller scale of the changes compared to MBEC, there are some changes to make to use GMET for L1 guests, because the page tables have to be created with U=0. This means that the root page has role.access != ACC_ALL and its permissions have to be propagated down. Note that with MBEC the user/supervisor distinction depends on the U bit of the page tables rather than the CPL. Processors provide this information to the hypervisor through the "advanced EPT violation vmexit info" feature, which is a requirement for KVM to use MBEC, and kvm-intel.ko passes it to the MMU in PFERR_USER_MASK (unlike kvm-amd.ko which computes it from the CPL). This needs a small change to pass the effective XWU permissions of the page tables down to translate_nested_gpa(). The former "smep_andnot_wp" bit of cpu_role.base, now named "cr4_smep", is repurposed for nested TDP to indicate that MBEC/GMET is on. The minor pessimization for shadow page tables (toggling CR4.SMEP now always forces building a separate version of the shadow page tables, even though that's technically unnecessary if CR4.WP=1) is not really worth fretting about; in practice, guests are not going to flip CR4.SMEP in a way that would prevent efficient reuse of shadow page tables. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2026-05-10KVM: nSVM: enable GMET for guestsPaolo Bonzini
All that needs to be done is moving the GMET bit from vmcb12 to vmcb02. The only new thing is that __nested_copy_vmcb_control_to_cache now ensures that ignored-if-unavailable bits are zero in svm->nested.ctl. Tested-by: David Riley <d.riley@proxmox.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2026-05-10KVM: SVM: work around errata 1218Paolo Bonzini
According to AMD, the hypervisor may not be able to determine whether a fault was a GMET fault or an NX fault based on EXITINFO1, and software "must read the relevant VMCB to determine whether a fault was a GMET fault or an NX fault". The APM further details that they meant the CPL field. KVM uses the page fault error code to distinguish the causes of a nested page fault, so recalculate the PFERR_USER_MASK bit of the vmexit information. Only do it for fetches and only if GMET is in use, because KVM does not differentiate based on PFERR_USER_MASK for other nested NPT page faults. Tested-by: David Riley <d.riley@proxmox.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2026-05-10KVM: SVM: enable GMET and set it in MMU rolePaolo Bonzini
Set the GMET bit in the nested control field. This has effectively no impact as long as NPT page tables are changed to have U=0. Tested-by: David Riley <d.riley@proxmox.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2026-05-10KVM: x86/mmu: add support for GMET to NPT page table walksPaolo Bonzini
GMET allows page table entries to be created with U=0 in NPT. However, when GMET=1 U=0 only affects execution, not reads or writes. Ignore user faults on non-fetch accesses for NPT GMET. Tested-by: David Riley <d.riley@proxmox.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2026-05-10KVM: x86/mmu: hard code more bits in kvm_init_shadow_npt_mmuPaolo Bonzini
The host CR0 does not really reflect onto the NPT format because hCR0.PG=1 must be set and hCR0.WP is ignored. Carve that in stone by removing the cr0 argument from kvm_init_shadow_npt_mmu. Pass in WP=1 as well; it does not matter for GMET disabled because PFERR_USER_MASK is always set, but a cleared W bit in the nested page tables cannot be overridden in supervisor mode when GMET is enabled, either. In fact, since CR0.WP=0 is the weird "extra accesses allowed" mode, it is acutally easier think about it being always set. Likewise, clear X86_CR4_SMAP to avoid that KVM erroneously faults on supervisor accesses to an U=1 page. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2026-05-10KVM: SVM: add GMET bit definitionsPaolo Bonzini
GMET (Guest Mode Execute Trap) is an AMD virtualization feature, essentially the nested paging version of SMEP. Hyper-V uses it; add it in preparation for making it available to hypervisors running under KVM. Acked-by: Borislav Petkov (AMD) <bp@alien8.de> Tested-by: David Riley <d.riley@proxmox.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>