From: Yeoreum Yun <yeoreum.yun@arm.com>
To: Sudeep Holla <sudeep.holla@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel@lists.infradead.org,
Mark Rutland <mark.rutland@arm.com>,
Lorenzo Pieralisi <lpieralisi@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, James Morse <james.morse@arm.com>,
Cristian Marussi <cristian.marussi@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Yeoreum Yun <yeoreum.yun@arm.com>,
Arnd Bergmann <arnd@kernel.org>,
Andre Przywara <andre.przywara@arm.com>
Subject: Re: [PATCH v2] firmware: arm: Group interface drivers under arm/
Date: Fri, 6 Nov 2026 11:56:36 +0000 [thread overview]
Message-ID: <au3AdN19j8sFJjyn@e129823.arm.com> (raw)
In-Reply-To: <20261106115046.62344-1-sudeep.holla@kernel.org>
LGTM. Thanks!
Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com>
On Fri, Nov 06, 2026 at 11:50:45AM +0000, Sudeep Holla wrote:
> Arm firmware interface drivers currently live directly under
> drivers/firmware/. Some use an arm_ prefix while others use generic
> names. More Arm firmware interface drivers, such as:
>
> 1. Live Firmware Activation (LFA) [1]
> 2. Firmware Interfaces for Realm Management Extension (FIRME) [2]
>
> expected soon, which would further crowd the top-level directory.
>
> There are couple of other possible arm specific firmware interfaces
> that may need to reside there.
>
> Create drivers/firmware/arm/ as the common home for Arm firmware
> interface drivers. Move FF-A, PSCI, RMM, SCMI, SCPI, SDEI, and SMCCC
> under it, drop the redundant arm_ prefix from the some directory/file
> names. Update the Kconfig, Kbuild, maintainer and documentation paths.
>
> The resulting hierarchy provides room for upcoming interfaces without
> continuing to add Arm-specific directories at the firmware root.
>
> [1] https://lore.kernel.org/all/20261102165421.3651202-1-andre.przywara@arm.com/
> [2] https://lore.kernel.org/all/20261019-firme_interface-v1-0-27895c9cebaa@arm.com/
>
> Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
> ---
>
> v1[1]->v2:
> - Rebased on v7.4-rc1
> - Fixed missing rmm folder movement in Kconfig and Makefile
>
> [1] https://lore.kernel.org/all/20261022090003.3083557-1-sudeep.holla@kernel.org/
>
> Documentation/tee/ts-tee.rst | 2 +-
> MAINTAINERS | 18 +++---
> drivers/firmware/Kconfig | 55 +-----------------
> drivers/firmware/Makefile | 9 +--
> drivers/firmware/arm/Kconfig | 56 +++++++++++++++++++
> drivers/firmware/arm/Makefile | 11 ++++
> drivers/firmware/{arm_ffa => arm/ffa}/Kconfig | 0
> .../firmware/{arm_ffa => arm/ffa}/Makefile | 0
> drivers/firmware/{arm_ffa => arm/ffa}/bus.c | 0
> .../firmware/{arm_ffa => arm/ffa}/common.h | 0
> .../firmware/{arm_ffa => arm/ffa}/driver.c | 0
> drivers/firmware/{arm_ffa => arm/ffa}/smccc.c | 0
> drivers/firmware/{ => arm}/psci/Kconfig | 0
> drivers/firmware/{ => arm}/psci/Makefile | 0
> drivers/firmware/{ => arm}/psci/psci.c | 0
> .../firmware/{ => arm}/psci/psci_checker.c | 0
> drivers/firmware/{arm_rmm => arm/rmm}/Kconfig | 0
> .../firmware/{arm_rmm => arm/rmm}/Makefile | 0
> drivers/firmware/{arm_rmm => arm/rmm}/rmi.c | 0
> drivers/firmware/{arm_rmm => arm/rmm}/rsi.c | 0
> .../firmware/{arm_scmi => arm/scmi}/Kconfig | 4 +-
> .../firmware/{arm_scmi => arm/scmi}/Makefile | 0
> .../firmware/{arm_scmi => arm/scmi}/base.c | 0
> drivers/firmware/{arm_scmi => arm/scmi}/bus.c | 0
> .../firmware/{arm_scmi => arm/scmi}/clock.c | 0
> .../firmware/{arm_scmi => arm/scmi}/common.h | 0
> .../firmware/{arm_scmi => arm/scmi}/driver.c | 0
> drivers/firmware/{arm_scmi => arm/scmi}/msg.c | 0
> .../firmware/{arm_scmi => arm/scmi}/notify.c | 0
> .../firmware/{arm_scmi => arm/scmi}/notify.h | 0
> .../firmware/{arm_scmi => arm/scmi}/perf.c | 0
> .../firmware/{arm_scmi => arm/scmi}/pinctrl.c | 0
> .../firmware/{arm_scmi => arm/scmi}/power.c | 0
> .../{arm_scmi => arm/scmi}/powercap.c | 0
> .../{arm_scmi => arm/scmi}/protocols.h | 0
> .../firmware/{arm_scmi => arm/scmi}/quirks.c | 0
> .../firmware/{arm_scmi => arm/scmi}/quirks.h | 0
> .../{arm_scmi => arm/scmi}/raw_mode.c | 0
> .../{arm_scmi => arm/scmi}/raw_mode.h | 0
> .../firmware/{arm_scmi => arm/scmi}/reset.c | 0
> .../scmi}/scmi_power_control.c | 0
> .../firmware/{arm_scmi => arm/scmi}/sensors.c | 0
> .../firmware/{arm_scmi => arm/scmi}/shmem.c | 0
> .../firmware/{arm_scmi => arm/scmi}/system.c | 0
> .../{arm_scmi => arm/scmi}/transports/Kconfig | 0
> .../scmi}/transports/Makefile | 0
> .../scmi}/transports/mailbox.c | 0
> .../{arm_scmi => arm/scmi}/transports/optee.c | 0
> .../{arm_scmi => arm/scmi}/transports/pcc.c | 0
> .../{arm_scmi => arm/scmi}/transports/smc.c | 0
> .../scmi}/transports/virtio.c | 0
> .../scmi}/vendors/imx/Kconfig | 0
> .../scmi}/vendors/imx/Makefile | 0
> .../scmi}/vendors/imx/imx-sm-bbm.c | 0
> .../scmi}/vendors/imx/imx-sm-cpu.c | 0
> .../scmi}/vendors/imx/imx-sm-lmm.c | 0
> .../scmi}/vendors/imx/imx-sm-misc.c | 0
> .../scmi}/vendors/imx/imx95.rst | 0
> .../firmware/{arm_scmi => arm/scmi}/voltage.c | 0
> drivers/firmware/{arm_scpi.c => arm/scpi.c} | 0
> drivers/firmware/{arm_sdei.c => arm/sdei.c} | 0
> .../{arm_sdei_nmi.c => arm/sdei_nmi.c} | 0
> drivers/firmware/{ => arm}/smccc/Kconfig | 0
> drivers/firmware/{ => arm}/smccc/Makefile | 0
> drivers/firmware/{ => arm}/smccc/bus.c | 0
> drivers/firmware/{ => arm}/smccc/kvm_guest.c | 0
> drivers/firmware/{ => arm}/smccc/smccc.c | 0
> drivers/firmware/{ => arm}/smccc/soc_id.c | 0
> 68 files changed, 81 insertions(+), 74 deletions(-)
> create mode 100644 drivers/firmware/arm/Kconfig
> create mode 100644 drivers/firmware/arm/Makefile
> rename drivers/firmware/{arm_ffa => arm/ffa}/Kconfig (100%)
> rename drivers/firmware/{arm_ffa => arm/ffa}/Makefile (100%)
> rename drivers/firmware/{arm_ffa => arm/ffa}/bus.c (100%)
> rename drivers/firmware/{arm_ffa => arm/ffa}/common.h (100%)
> rename drivers/firmware/{arm_ffa => arm/ffa}/driver.c (100%)
> rename drivers/firmware/{arm_ffa => arm/ffa}/smccc.c (100%)
> rename drivers/firmware/{ => arm}/psci/Kconfig (100%)
> rename drivers/firmware/{ => arm}/psci/Makefile (100%)
> rename drivers/firmware/{ => arm}/psci/psci.c (100%)
> rename drivers/firmware/{ => arm}/psci/psci_checker.c (100%)
> rename drivers/firmware/{arm_rmm => arm/rmm}/Kconfig (100%)
> rename drivers/firmware/{arm_rmm => arm/rmm}/Makefile (100%)
> rename drivers/firmware/{arm_rmm => arm/rmm}/rmi.c (100%)
> rename drivers/firmware/{arm_rmm => arm/rmm}/rsi.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/Kconfig (97%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/Makefile (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/base.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/bus.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/clock.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/common.h (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/driver.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/msg.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/notify.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/notify.h (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/perf.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/pinctrl.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/power.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/powercap.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/protocols.h (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/quirks.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/quirks.h (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/raw_mode.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/raw_mode.h (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/reset.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/scmi_power_control.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/sensors.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/shmem.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/system.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/transports/Kconfig (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/transports/Makefile (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/transports/mailbox.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/transports/optee.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/transports/pcc.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/transports/smc.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/transports/virtio.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/vendors/imx/Kconfig (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/vendors/imx/Makefile (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/vendors/imx/imx-sm-bbm.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/vendors/imx/imx-sm-cpu.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/vendors/imx/imx-sm-lmm.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/vendors/imx/imx-sm-misc.c (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/vendors/imx/imx95.rst (100%)
> rename drivers/firmware/{arm_scmi => arm/scmi}/voltage.c (100%)
> rename drivers/firmware/{arm_scpi.c => arm/scpi.c} (100%)
> rename drivers/firmware/{arm_sdei.c => arm/sdei.c} (100%)
> rename drivers/firmware/{arm_sdei_nmi.c => arm/sdei_nmi.c} (100%)
> rename drivers/firmware/{ => arm}/smccc/Kconfig (100%)
> rename drivers/firmware/{ => arm}/smccc/Makefile (100%)
> rename drivers/firmware/{ => arm}/smccc/bus.c (100%)
> rename drivers/firmware/{ => arm}/smccc/kvm_guest.c (100%)
> rename drivers/firmware/{ => arm}/smccc/smccc.c (100%)
> rename drivers/firmware/{ => arm}/smccc/soc_id.c (100%)
>
> diff --git a/Documentation/tee/ts-tee.rst b/Documentation/tee/ts-tee.rst
> index 843e34422648..0999d0e0d859 100644
> --- a/Documentation/tee/ts-tee.rst
> +++ b/Documentation/tee/ts-tee.rst
> @@ -62,7 +62,7 @@ References
>
> [3] https://www.arm.com/architecture/security-features/platform-security
>
> -[4] drivers/firmware/arm_ffa/
> +[4] drivers/firmware/arm/ffa/
>
> [5] https://trusted-services.readthedocs.io/en/v1.0.0/developer/service-access-protocols.html#abi
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 93abbb315065..550863200d44 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4040,7 +4040,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git
> F: Documentation/ABI/testing/sysfs-firmware-cca
> F: Documentation/arch/arm64/
> F: arch/arm64/
> -F: drivers/firmware/arm_rmm/
> +F: drivers/firmware/arm/rmm/
> F: drivers/virt/coco/arm-cca-guest/
> F: drivers/virt/coco/pkvm-guest/
> F: include/linux/arm-rmi-cmds.h
> @@ -10462,7 +10462,7 @@ FIRMWARE FRAMEWORK FOR ARMV8-A
> M: Sudeep Holla <sudeep.holla@kernel.org>
> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
> S: Maintained
> -F: drivers/firmware/arm_ffa/
> +F: drivers/firmware/arm/ffa/
> F: include/linux/arm_ffa.h
>
> FIRMWARE LOADER (request_firmware)
> @@ -22265,7 +22265,7 @@ M: Lorenzo Pieralisi <lpieralisi@kernel.org>
> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
> S: Maintained
> F: Documentation/devicetree/bindings/arm/psci.yaml
> -F: drivers/firmware/psci/
> +F: drivers/firmware/arm/psci/
> F: include/linux/psci.h
> F: include/uapi/linux/psci.h
>
> @@ -25374,9 +25374,9 @@ M: Lorenzo Pieralisi <lpieralisi@kernel.org>
> M: Sudeep Holla <sudeep.holla@kernel.org>
> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
> S: Maintained
> -F: drivers/firmware/smccc/
> -F: include/linux/arm-smccc-bus.h
> +F: drivers/firmware/arm/smccc/
> F: include/linux/arm-smccc.h
> +F: include/linux/arm-smccc-bus.h
> F: include/linux/device-id/arm_smccc.h
>
> SECURITY CONTACT
> @@ -26000,7 +26000,7 @@ M: James Morse <james.morse@arm.com>
> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
> S: Maintained
> F: Documentation/devicetree/bindings/arm/firmware/sdei.txt
> -F: drivers/firmware/arm_sdei*
> +F: drivers/firmware/arm/sdei*
> F: include/linux/arm_sdei.h
> F: include/uapi/linux/arm_sdei.h
>
> @@ -27262,8 +27262,8 @@ S: Maintained
> F: Documentation/devicetree/bindings/firmware/arm,sc[mp]i.yaml
> F: drivers/clk/clk-sc[mp]i.c
> F: drivers/cpufreq/sc[mp]i-cpufreq.c
> -F: drivers/firmware/arm_scmi/
> -F: drivers/firmware/arm_scpi.c
> +F: drivers/firmware/arm/scmi/
> +F: drivers/firmware/arm/scpi.c
> F: drivers/hwmon/scmi-hwmon.c
> F: drivers/pinctrl/pinctrl-scmi.c
> F: drivers/pmdomain/arm/
> @@ -27282,7 +27282,7 @@ L: imx@lists.linux.dev
> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
> S: Maintained
> F: Documentation/devicetree/bindings/firmware/nxp,*scmi.yaml
> -F: drivers/firmware/arm_scmi/vendors/imx/
> +F: drivers/firmware/arm/scmi/vendors/imx/
>
> SYSTEM RESET/SHUTDOWN DRIVERS
> M: Sebastian Reichel <sre@kernel.org>
> diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
> index 43e2e2a64594..2097547850e7 100644
> --- a/drivers/firmware/Kconfig
> +++ b/drivers/firmware/Kconfig
> @@ -6,60 +6,11 @@
>
> menu "Firmware Drivers"
>
> -source "drivers/firmware/arm_scmi/Kconfig"
> +source "drivers/firmware/arm/Kconfig"
>
> config FW_ATTR_CLASS
> tristate
>
> -config ARM_SCPI_PROTOCOL
> - tristate "ARM System Control and Power Interface (SCPI) Message Protocol"
> - depends on ARM || ARM64 || COMPILE_TEST
> - depends on MAILBOX
> - help
> - System Control and Power Interface (SCPI) Message Protocol is
> - defined for the purpose of communication between the Application
> - Cores(AP) and the System Control Processor(SCP). The MHU peripheral
> - provides a mechanism for inter-processor communication between SCP
> - and AP.
> -
> - SCP controls most of the power management on the Application
> - Processors. It offers control and management of: the core/cluster
> - power states, various power domain DVFS including the core/cluster,
> - certain system clocks configuration, thermal sensors and many
> - others.
> -
> - This protocol library provides interface for all the client drivers
> - making use of the features offered by the SCP.
> -
> -config ARM_SDE_INTERFACE
> - bool "ARM Software Delegated Exception Interface (SDEI)"
> - depends on ARM64
> - help
> - The Software Delegated Exception Interface (SDEI) is an ARM
> - standard for registering callbacks from the platform firmware
> - into the OS. This is typically used to implement RAS notifications.
> -
> -config ARM_SDEI_NMI
> - bool "SDEI-based cross-CPU NMI service (arm64)"
> - depends on ARM_SDE_INTERFACE
> - help
> - Provides SDEI-based cross-CPU NMI delivery for hooks that need
> - to reach interrupt-masked CPUs on silicon that lacks FEAT_NMI:
> -
> - - arch_trigger_cpumask_backtrace() (sysrq-l, RCU stalls,
> - hardlockup_all_cpu_backtrace, soft-lockup secondary dumps,
> - hung-task auxiliary dumps)
> - - smp_send_stop() escalation (reboot/halt and the
> - panic / kdump crash stop)
> -
> - The driver registers a handler for the SDEI software-signalled
> - event (event 0) and reaches a target CPU by signalling it with
> - SDEI_EVENT_SIGNAL. Firmware delivers the event out of EL3
> - regardless of the target's PSTATE.DAIF -- forced delivery into a
> - CPU wedged with interrupts locally masked.
> -
> - If unsure, say N.
> -
> config EDD
> tristate "BIOS Enhanced Disk Drive calls determine boot disk"
> depends on X86
> @@ -299,8 +250,6 @@ config TURRIS_MOX_RWTM_KEYCTL
>
> endif # TURRIS_MOX_RWTM
>
> -source "drivers/firmware/arm_ffa/Kconfig"
> -source "drivers/firmware/arm_rmm/Kconfig"
> source "drivers/firmware/broadcom/Kconfig"
> source "drivers/firmware/cirrus/Kconfig"
> source "drivers/firmware/coreboot/Kconfig"
> @@ -308,10 +257,8 @@ source "drivers/firmware/efi/Kconfig"
> source "drivers/firmware/imx/Kconfig"
> source "drivers/firmware/meson/Kconfig"
> source "drivers/firmware/microchip/Kconfig"
> -source "drivers/firmware/psci/Kconfig"
> source "drivers/firmware/qcom/Kconfig"
> source "drivers/firmware/samsung/Kconfig"
> -source "drivers/firmware/smccc/Kconfig"
> source "drivers/firmware/tegra/Kconfig"
> source "drivers/firmware/xilinx/Kconfig"
>
> diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile
> index 50b338313152..f347328e0a0c 100644
> --- a/drivers/firmware/Makefile
> +++ b/drivers/firmware/Makefile
> @@ -2,9 +2,6 @@
> #
> # Makefile for the linux kernel.
> #
> -obj-$(CONFIG_ARM_SCPI_PROTOCOL) += arm_scpi.o
> -obj-$(CONFIG_ARM_SDE_INTERFACE) += arm_sdei.o
> -obj-$(CONFIG_ARM_SDEI_NMI) += arm_sdei_nmi.o
> obj-$(CONFIG_DMI) += dmi_scan.o
> obj-$(CONFIG_DMI_SYSFS) += dmi-sysfs.o
> obj-$(CONFIG_EDD) += edd.o
> @@ -25,9 +22,7 @@ obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o
> obj-$(CONFIG_TRUSTED_FOUNDATIONS) += trusted_foundations.o
> obj-$(CONFIG_TURRIS_MOX_RWTM) += turris-mox-rwtm.o
>
> -obj-y += arm_ffa/
> -obj-y += arm_rmm/
> -obj-y += arm_scmi/
> +obj-y += arm/
> obj-y += broadcom/
> obj-y += cirrus/
> obj-y += meson/
> @@ -35,9 +30,7 @@ obj-y += microchip/
> obj-$(CONFIG_COREBOOT_FIRMWARE) += coreboot/
> obj-y += efi/
> obj-y += imx/
> -obj-y += psci/
> obj-y += qcom/
> obj-y += samsung/
> -obj-y += smccc/
> obj-y += tegra/
> obj-y += xilinx/
> diff --git a/drivers/firmware/arm/Kconfig b/drivers/firmware/arm/Kconfig
> new file mode 100644
> index 000000000000..c980a847f233
> --- /dev/null
> +++ b/drivers/firmware/arm/Kconfig
> @@ -0,0 +1,56 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +source "drivers/firmware/arm/ffa/Kconfig"
> +source "drivers/firmware/arm/psci/Kconfig"
> +source "drivers/firmware/arm/rmm/Kconfig"
> +source "drivers/firmware/arm/scmi/Kconfig"
> +source "drivers/firmware/arm/smccc/Kconfig"
> +
> +config ARM_SCPI_PROTOCOL
> + tristate "ARM System Control and Power Interface (SCPI) Message Protocol"
> + depends on ARM || ARM64 || COMPILE_TEST
> + depends on MAILBOX
> + help
> + System Control and Power Interface (SCPI) Message Protocol is
> + defined for the purpose of communication between the Application
> + Cores(AP) and the System Control Processor(SCP). The MHU peripheral
> + provides a mechanism for inter-processor communication between SCP
> + and AP.
> +
> + SCP controls most of the power management on the Application
> + Processors. It offers control and management of: the core/cluster
> + power states, various power domain DVFS including the core/cluster,
> + certain system clocks configuration, thermal sensors and many
> + others.
> +
> + This protocol library provides interface for all the client drivers
> + making use of the features offered by the SCP.
> +
> +config ARM_SDE_INTERFACE
> + bool "ARM Software Delegated Exception Interface (SDEI)"
> + depends on ARM64
> + help
> + The Software Delegated Exception Interface (SDEI) is an ARM
> + standard for registering callbacks from the platform firmware
> + into the OS. This is typically used to implement RAS notifications.
> +
> +config ARM_SDEI_NMI
> + bool "SDEI-based cross-CPU NMI service (arm64)"
> + depends on ARM_SDE_INTERFACE
> + help
> + Provides SDEI-based cross-CPU NMI delivery for hooks that need
> + to reach interrupt-masked CPUs on silicon that lacks FEAT_NMI:
> +
> + - arch_trigger_cpumask_backtrace() (sysrq-l, RCU stalls,
> + hardlockup_all_cpu_backtrace, soft-lockup secondary dumps,
> + hung-task auxiliary dumps)
> + - smp_send_stop() escalation (reboot/halt and the
> + panic / kdump crash stop)
> +
> + The driver registers a handler for the SDEI software-signalled
> + event (event 0) and reaches a target CPU by signalling it with
> + SDEI_EVENT_SIGNAL. Firmware delivers the event out of EL3
> + regardless of the target's PSTATE.DAIF -- forced delivery into a
> + CPU wedged with interrupts locally masked.
> +
> + If unsure, say N.
> diff --git a/drivers/firmware/arm/Makefile b/drivers/firmware/arm/Makefile
> new file mode 100644
> index 000000000000..5e90380a0666
> --- /dev/null
> +++ b/drivers/firmware/arm/Makefile
> @@ -0,0 +1,11 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +obj-$(CONFIG_ARM_SCPI_PROTOCOL) += scpi.o
> +obj-$(CONFIG_ARM_SDE_INTERFACE) += sdei.o
> +obj-$(CONFIG_ARM_SDEI_NMI) += sdei_nmi.o
> +
> +obj-y += ffa/
> +obj-y += psci/
> +obj-y += rmm/
> +obj-y += scmi/
> +obj-y += smccc/
> diff --git a/drivers/firmware/arm_ffa/Kconfig b/drivers/firmware/arm/ffa/Kconfig
> similarity index 100%
> rename from drivers/firmware/arm_ffa/Kconfig
> rename to drivers/firmware/arm/ffa/Kconfig
> diff --git a/drivers/firmware/arm_ffa/Makefile b/drivers/firmware/arm/ffa/Makefile
> similarity index 100%
> rename from drivers/firmware/arm_ffa/Makefile
> rename to drivers/firmware/arm/ffa/Makefile
> diff --git a/drivers/firmware/arm_ffa/bus.c b/drivers/firmware/arm/ffa/bus.c
> similarity index 100%
> rename from drivers/firmware/arm_ffa/bus.c
> rename to drivers/firmware/arm/ffa/bus.c
> diff --git a/drivers/firmware/arm_ffa/common.h b/drivers/firmware/arm/ffa/common.h
> similarity index 100%
> rename from drivers/firmware/arm_ffa/common.h
> rename to drivers/firmware/arm/ffa/common.h
> diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm/ffa/driver.c
> similarity index 100%
> rename from drivers/firmware/arm_ffa/driver.c
> rename to drivers/firmware/arm/ffa/driver.c
> diff --git a/drivers/firmware/arm_ffa/smccc.c b/drivers/firmware/arm/ffa/smccc.c
> similarity index 100%
> rename from drivers/firmware/arm_ffa/smccc.c
> rename to drivers/firmware/arm/ffa/smccc.c
> diff --git a/drivers/firmware/psci/Kconfig b/drivers/firmware/arm/psci/Kconfig
> similarity index 100%
> rename from drivers/firmware/psci/Kconfig
> rename to drivers/firmware/arm/psci/Kconfig
> diff --git a/drivers/firmware/psci/Makefile b/drivers/firmware/arm/psci/Makefile
> similarity index 100%
> rename from drivers/firmware/psci/Makefile
> rename to drivers/firmware/arm/psci/Makefile
> diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/arm/psci/psci.c
> similarity index 100%
> rename from drivers/firmware/psci/psci.c
> rename to drivers/firmware/arm/psci/psci.c
> diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/arm/psci/psci_checker.c
> similarity index 100%
> rename from drivers/firmware/psci/psci_checker.c
> rename to drivers/firmware/arm/psci/psci_checker.c
> diff --git a/drivers/firmware/arm_rmm/Kconfig b/drivers/firmware/arm/rmm/Kconfig
> similarity index 100%
> rename from drivers/firmware/arm_rmm/Kconfig
> rename to drivers/firmware/arm/rmm/Kconfig
> diff --git a/drivers/firmware/arm_rmm/Makefile b/drivers/firmware/arm/rmm/Makefile
> similarity index 100%
> rename from drivers/firmware/arm_rmm/Makefile
> rename to drivers/firmware/arm/rmm/Makefile
> diff --git a/drivers/firmware/arm_rmm/rmi.c b/drivers/firmware/arm/rmm/rmi.c
> similarity index 100%
> rename from drivers/firmware/arm_rmm/rmi.c
> rename to drivers/firmware/arm/rmm/rmi.c
> diff --git a/drivers/firmware/arm_rmm/rsi.c b/drivers/firmware/arm/rmm/rsi.c
> similarity index 100%
> rename from drivers/firmware/arm_rmm/rsi.c
> rename to drivers/firmware/arm/rmm/rsi.c
> diff --git a/drivers/firmware/arm_scmi/Kconfig b/drivers/firmware/arm/scmi/Kconfig
> similarity index 97%
> rename from drivers/firmware/arm_scmi/Kconfig
> rename to drivers/firmware/arm/scmi/Kconfig
> index 9f6241efd592..2b62679598ea 100644
> --- a/drivers/firmware/arm_scmi/Kconfig
> +++ b/drivers/firmware/arm/scmi/Kconfig
> @@ -82,8 +82,8 @@ config ARM_SCMI_QUIRKS
> depending on the SCMI firmware advertised versions and/or machine
> compatibles.
>
> -source "drivers/firmware/arm_scmi/transports/Kconfig"
> -source "drivers/firmware/arm_scmi/vendors/imx/Kconfig"
> +source "drivers/firmware/arm/scmi/transports/Kconfig"
> +source "drivers/firmware/arm/scmi/vendors/imx/Kconfig"
>
> endif #ARM_SCMI_PROTOCOL
>
> diff --git a/drivers/firmware/arm_scmi/Makefile b/drivers/firmware/arm/scmi/Makefile
> similarity index 100%
> rename from drivers/firmware/arm_scmi/Makefile
> rename to drivers/firmware/arm/scmi/Makefile
> diff --git a/drivers/firmware/arm_scmi/base.c b/drivers/firmware/arm/scmi/base.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/base.c
> rename to drivers/firmware/arm/scmi/base.c
> diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm/scmi/bus.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/bus.c
> rename to drivers/firmware/arm/scmi/bus.c
> diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm/scmi/clock.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/clock.c
> rename to drivers/firmware/arm/scmi/clock.c
> diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm/scmi/common.h
> similarity index 100%
> rename from drivers/firmware/arm_scmi/common.h
> rename to drivers/firmware/arm/scmi/common.h
> diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm/scmi/driver.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/driver.c
> rename to drivers/firmware/arm/scmi/driver.c
> diff --git a/drivers/firmware/arm_scmi/msg.c b/drivers/firmware/arm/scmi/msg.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/msg.c
> rename to drivers/firmware/arm/scmi/msg.c
> diff --git a/drivers/firmware/arm_scmi/notify.c b/drivers/firmware/arm/scmi/notify.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/notify.c
> rename to drivers/firmware/arm/scmi/notify.c
> diff --git a/drivers/firmware/arm_scmi/notify.h b/drivers/firmware/arm/scmi/notify.h
> similarity index 100%
> rename from drivers/firmware/arm_scmi/notify.h
> rename to drivers/firmware/arm/scmi/notify.h
> diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm/scmi/perf.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/perf.c
> rename to drivers/firmware/arm/scmi/perf.c
> diff --git a/drivers/firmware/arm_scmi/pinctrl.c b/drivers/firmware/arm/scmi/pinctrl.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/pinctrl.c
> rename to drivers/firmware/arm/scmi/pinctrl.c
> diff --git a/drivers/firmware/arm_scmi/power.c b/drivers/firmware/arm/scmi/power.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/power.c
> rename to drivers/firmware/arm/scmi/power.c
> diff --git a/drivers/firmware/arm_scmi/powercap.c b/drivers/firmware/arm/scmi/powercap.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/powercap.c
> rename to drivers/firmware/arm/scmi/powercap.c
> diff --git a/drivers/firmware/arm_scmi/protocols.h b/drivers/firmware/arm/scmi/protocols.h
> similarity index 100%
> rename from drivers/firmware/arm_scmi/protocols.h
> rename to drivers/firmware/arm/scmi/protocols.h
> diff --git a/drivers/firmware/arm_scmi/quirks.c b/drivers/firmware/arm/scmi/quirks.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/quirks.c
> rename to drivers/firmware/arm/scmi/quirks.c
> diff --git a/drivers/firmware/arm_scmi/quirks.h b/drivers/firmware/arm/scmi/quirks.h
> similarity index 100%
> rename from drivers/firmware/arm_scmi/quirks.h
> rename to drivers/firmware/arm/scmi/quirks.h
> diff --git a/drivers/firmware/arm_scmi/raw_mode.c b/drivers/firmware/arm/scmi/raw_mode.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/raw_mode.c
> rename to drivers/firmware/arm/scmi/raw_mode.c
> diff --git a/drivers/firmware/arm_scmi/raw_mode.h b/drivers/firmware/arm/scmi/raw_mode.h
> similarity index 100%
> rename from drivers/firmware/arm_scmi/raw_mode.h
> rename to drivers/firmware/arm/scmi/raw_mode.h
> diff --git a/drivers/firmware/arm_scmi/reset.c b/drivers/firmware/arm/scmi/reset.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/reset.c
> rename to drivers/firmware/arm/scmi/reset.c
> diff --git a/drivers/firmware/arm_scmi/scmi_power_control.c b/drivers/firmware/arm/scmi/scmi_power_control.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/scmi_power_control.c
> rename to drivers/firmware/arm/scmi/scmi_power_control.c
> diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm/scmi/sensors.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/sensors.c
> rename to drivers/firmware/arm/scmi/sensors.c
> diff --git a/drivers/firmware/arm_scmi/shmem.c b/drivers/firmware/arm/scmi/shmem.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/shmem.c
> rename to drivers/firmware/arm/scmi/shmem.c
> diff --git a/drivers/firmware/arm_scmi/system.c b/drivers/firmware/arm/scmi/system.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/system.c
> rename to drivers/firmware/arm/scmi/system.c
> diff --git a/drivers/firmware/arm_scmi/transports/Kconfig b/drivers/firmware/arm/scmi/transports/Kconfig
> similarity index 100%
> rename from drivers/firmware/arm_scmi/transports/Kconfig
> rename to drivers/firmware/arm/scmi/transports/Kconfig
> diff --git a/drivers/firmware/arm_scmi/transports/Makefile b/drivers/firmware/arm/scmi/transports/Makefile
> similarity index 100%
> rename from drivers/firmware/arm_scmi/transports/Makefile
> rename to drivers/firmware/arm/scmi/transports/Makefile
> diff --git a/drivers/firmware/arm_scmi/transports/mailbox.c b/drivers/firmware/arm/scmi/transports/mailbox.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/transports/mailbox.c
> rename to drivers/firmware/arm/scmi/transports/mailbox.c
> diff --git a/drivers/firmware/arm_scmi/transports/optee.c b/drivers/firmware/arm/scmi/transports/optee.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/transports/optee.c
> rename to drivers/firmware/arm/scmi/transports/optee.c
> diff --git a/drivers/firmware/arm_scmi/transports/pcc.c b/drivers/firmware/arm/scmi/transports/pcc.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/transports/pcc.c
> rename to drivers/firmware/arm/scmi/transports/pcc.c
> diff --git a/drivers/firmware/arm_scmi/transports/smc.c b/drivers/firmware/arm/scmi/transports/smc.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/transports/smc.c
> rename to drivers/firmware/arm/scmi/transports/smc.c
> diff --git a/drivers/firmware/arm_scmi/transports/virtio.c b/drivers/firmware/arm/scmi/transports/virtio.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/transports/virtio.c
> rename to drivers/firmware/arm/scmi/transports/virtio.c
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmware/arm/scmi/vendors/imx/Kconfig
> similarity index 100%
> rename from drivers/firmware/arm_scmi/vendors/imx/Kconfig
> rename to drivers/firmware/arm/scmi/vendors/imx/Kconfig
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/Makefile b/drivers/firmware/arm/scmi/vendors/imx/Makefile
> similarity index 100%
> rename from drivers/firmware/arm_scmi/vendors/imx/Makefile
> rename to drivers/firmware/arm/scmi/vendors/imx/Makefile
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-bbm.c b/drivers/firmware/arm/scmi/vendors/imx/imx-sm-bbm.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/vendors/imx/imx-sm-bbm.c
> rename to drivers/firmware/arm/scmi/vendors/imx/imx-sm-bbm.c
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c b/drivers/firmware/arm/scmi/vendors/imx/imx-sm-cpu.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c
> rename to drivers/firmware/arm/scmi/vendors/imx/imx-sm-cpu.c
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c b/drivers/firmware/arm/scmi/vendors/imx/imx-sm-lmm.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c
> rename to drivers/firmware/arm/scmi/vendors/imx/imx-sm-lmm.c
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c b/drivers/firmware/arm/scmi/vendors/imx/imx-sm-misc.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
> rename to drivers/firmware/arm/scmi/vendors/imx/imx-sm-misc.c
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx95.rst b/drivers/firmware/arm/scmi/vendors/imx/imx95.rst
> similarity index 100%
> rename from drivers/firmware/arm_scmi/vendors/imx/imx95.rst
> rename to drivers/firmware/arm/scmi/vendors/imx/imx95.rst
> diff --git a/drivers/firmware/arm_scmi/voltage.c b/drivers/firmware/arm/scmi/voltage.c
> similarity index 100%
> rename from drivers/firmware/arm_scmi/voltage.c
> rename to drivers/firmware/arm/scmi/voltage.c
> diff --git a/drivers/firmware/arm_scpi.c b/drivers/firmware/arm/scpi.c
> similarity index 100%
> rename from drivers/firmware/arm_scpi.c
> rename to drivers/firmware/arm/scpi.c
> diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm/sdei.c
> similarity index 100%
> rename from drivers/firmware/arm_sdei.c
> rename to drivers/firmware/arm/sdei.c
> diff --git a/drivers/firmware/arm_sdei_nmi.c b/drivers/firmware/arm/sdei_nmi.c
> similarity index 100%
> rename from drivers/firmware/arm_sdei_nmi.c
> rename to drivers/firmware/arm/sdei_nmi.c
> diff --git a/drivers/firmware/smccc/Kconfig b/drivers/firmware/arm/smccc/Kconfig
> similarity index 100%
> rename from drivers/firmware/smccc/Kconfig
> rename to drivers/firmware/arm/smccc/Kconfig
> diff --git a/drivers/firmware/smccc/Makefile b/drivers/firmware/arm/smccc/Makefile
> similarity index 100%
> rename from drivers/firmware/smccc/Makefile
> rename to drivers/firmware/arm/smccc/Makefile
> diff --git a/drivers/firmware/smccc/bus.c b/drivers/firmware/arm/smccc/bus.c
> similarity index 100%
> rename from drivers/firmware/smccc/bus.c
> rename to drivers/firmware/arm/smccc/bus.c
> diff --git a/drivers/firmware/smccc/kvm_guest.c b/drivers/firmware/arm/smccc/kvm_guest.c
> similarity index 100%
> rename from drivers/firmware/smccc/kvm_guest.c
> rename to drivers/firmware/arm/smccc/kvm_guest.c
> diff --git a/drivers/firmware/smccc/smccc.c b/drivers/firmware/arm/smccc/smccc.c
> similarity index 100%
> rename from drivers/firmware/smccc/smccc.c
> rename to drivers/firmware/arm/smccc/smccc.c
> diff --git a/drivers/firmware/smccc/soc_id.c b/drivers/firmware/arm/smccc/soc_id.c
> similarity index 100%
> rename from drivers/firmware/smccc/soc_id.c
> rename to drivers/firmware/arm/smccc/soc_id.c
> --
> 2.43.0
>
--
Sincerely,
Yeoreum Yun
next prev parent reply other threads:[~2026-11-06 11:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-06 11:50 [PATCH v2] firmware: arm: Group interface drivers under arm/ Sudeep Holla
2026-11-06 11:56 ` Yeoreum Yun [this message]
2026-11-06 14:07 ` Suzuki K Poulose
2026-11-10 3:27 ` Gavin Shan
2026-11-10 7:53 ` Sudeep Holla
2026-11-10 23:40 ` Gavin Shan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=au3AdN19j8sFJjyn@e129823.arm.com \
--to=yeoreum.yun@arm.com \
--cc=andre.przywara@arm.com \
--cc=arnd@arndb.de \
--cc=arnd@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=cristian.marussi@arm.com \
--cc=james.morse@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=lpieralisi@kernel.org \
--cc=mark.rutland@arm.com \
--cc=sudeep.holla@kernel.org \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox