Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] firmware: arm: Group interface drivers under arm/
@ 2026-11-06 11:50 Sudeep Holla
  2026-11-06 11:56 ` Yeoreum Yun
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Sudeep Holla @ 2026-11-06 11:50 UTC (permalink / raw)
  To: Arnd Bergmann, linux-arm-kernel
  Cc: Sudeep Holla, Mark Rutland, Lorenzo Pieralisi, Catalin Marinas,
	Will Deacon, James Morse, Cristian Marussi, Suzuki K Poulose,
	Yeoreum Yun, Arnd Bergmann, Andre Przywara

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



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-11-10 23:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-06 11:50 [PATCH v2] firmware: arm: Group interface drivers under arm/ Sudeep Holla
2026-11-06 11:56 ` Yeoreum Yun
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox