Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] firmware: arm: Consolidate arm firmware interface drivers under arm/
@ 2026-10-22  9:00 Sudeep Holla
  2026-10-22  9:08 ` Arnd Bergmann
  0 siblings, 1 reply; 3+ messages in thread
From: Sudeep Holla @ 2026-10-22  9:00 UTC (permalink / raw)
  To: Arnd Bergmann, linux-arm-kernel
  Cc: Sudeep Holla, Mark Rutland, Lorenzo Pieralisi, Catalin Marinas,
	Will Deacon, Cristian Marussi, James Morse, 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/20260706134455.132091-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>
---
Hi All,

Sorry for posting this in the middle of merge window, but if people agree
it is better to this merged at the end of merge window, hence posting it.

Regards,
Sudeep

 Documentation/tee/ts-tee.rst                  |  2 +-
 MAINTAINERS                                   | 18 +++---
 drivers/firmware/Kconfig                      | 55 +------------------
 drivers/firmware/Makefile                     |  9 +--
 drivers/firmware/arm/Kconfig                  | 55 +++++++++++++++++++
 drivers/firmware/arm/Makefile                 | 10 ++++
 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/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
 67 files changed, 79 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/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 0e9fe9c2a39b..a730006f7991 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3962,7 +3962,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
@@ -10243,7 +10243,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)
@@ -21822,7 +21822,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
 
@@ -24840,9 +24840,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
@@ -25466,7 +25466,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
 
@@ -26700,8 +26700,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/
@@ -26719,7 +26719,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..72df35084ecf
--- /dev/null
+++ b/drivers/firmware/arm/Kconfig
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+source "drivers/firmware/arm/scmi/Kconfig"
+source "drivers/firmware/arm/ffa/Kconfig"
+source "drivers/firmware/arm/psci/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..f292e9b6ea9d
--- /dev/null
+++ b/drivers/firmware/arm/Makefile
@@ -0,0 +1,10 @@
+# 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				+= scmi/
+obj-y				+= ffa/
+obj-y				+= psci/
+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 783c24a20e29..8bbb047e8f42 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/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] 3+ messages in thread

end of thread, other threads:[~2026-10-22  9:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-22  9:00 [PATCH] firmware: arm: Consolidate arm firmware interface drivers under arm/ Sudeep Holla
2026-10-22  9:08 ` Arnd Bergmann
2026-10-22  9:17   ` Sudeep Holla

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