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

* Re: [PATCH v2] firmware: arm: Group interface drivers under arm/
  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
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Yeoreum Yun @ 2026-11-06 11:56 UTC (permalink / raw)
  To: Sudeep Holla
  Cc: Arnd Bergmann, linux-arm-kernel, Mark Rutland, Lorenzo Pieralisi,
	Catalin Marinas, Will Deacon, James Morse, Cristian Marussi,
	Suzuki K Poulose, Yeoreum Yun, Arnd Bergmann, Andre Przywara

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


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

* Re: [PATCH v2] firmware: arm: Group interface drivers under arm/
  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 23:40 ` Gavin Shan
  3 siblings, 0 replies; 6+ messages in thread
From: Suzuki K Poulose @ 2026-11-06 14:07 UTC (permalink / raw)
  To: Sudeep Holla, Arnd Bergmann, linux-arm-kernel
  Cc: Mark Rutland, Lorenzo Pieralisi, Catalin Marinas, Will Deacon,
	James Morse, Cristian Marussi, Yeoreum Yun, Arnd Bergmann,
	Andre Przywara

On 06/11/2026 11:50, 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>

Thanks! This is a nice cleanup.

Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>



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

* Re: [PATCH v2] firmware: arm: Group interface drivers under arm/
  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
  3 siblings, 1 reply; 6+ messages in thread
From: Gavin Shan @ 2026-11-10  3:27 UTC (permalink / raw)
  To: Sudeep Holla, Arnd Bergmann, linux-arm-kernel
  Cc: Mark Rutland, Lorenzo Pieralisi, Catalin Marinas, Will Deacon,
	James Morse, Cristian Marussi, Suzuki K Poulose, Yeoreum Yun,
	Arnd Bergmann, Andre Przywara

Hi Sudeep,

On 11/6/26 9:50 PM, 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

There are other two source files where updates are needed to reflect the
renaming (drivers/firmware/arm_sdei_nmi.c -> drivers/firmware/arm/sdei_nmi.c).

gshan@gshan-thinkpadx1nanogen2:~/sandbox/l$ git grep arm_sdei_nmi\.c
arch/arm64/include/asm/nmi.h: * drivers/firmware/arm_sdei_nmi.c implements them when active; a future
arch/arm64/kernel/smp.c: *   - the SDEI cross-CPU NMI handler (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

Thanks,
Gavin



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

* Re: [PATCH v2] firmware: arm: Group interface drivers under arm/
  2026-11-10  3:27 ` Gavin Shan
@ 2026-11-10  7:53   ` Sudeep Holla
  0 siblings, 0 replies; 6+ messages in thread
From: Sudeep Holla @ 2026-11-10  7:53 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Arnd Bergmann, linux-arm-kernel, Sudeep Holla, Mark Rutland,
	Lorenzo Pieralisi, Catalin Marinas, Will Deacon, James Morse,
	Cristian Marussi, Suzuki K Poulose, Yeoreum Yun, Arnd Bergmann,
	Andre Przywara

On Tue, Nov 10, 2026 at 01:27:24PM +1000, Gavin Shan wrote:
> Hi Sudeep,
> 
> On 11/6/26 9:50 PM, 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/
> > 

[...]

> > 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
> 
> There are other two source files where updates are needed to reflect the
> renaming (drivers/firmware/arm_sdei_nmi.c -> drivers/firmware/arm/sdei_nmi.c).
> 
> gshan@gshan-thinkpadx1nanogen2:~/sandbox/l$ git grep arm_sdei_nmi\.c
> arch/arm64/include/asm/nmi.h: * drivers/firmware/arm_sdei_nmi.c implements them when active; a future
> arch/arm64/kernel/smp.c: *   - the SDEI cross-CPU NMI handler (drivers/firmware/arm_sdei_nmi.c),
> 

Indeed, I have a patch that I plan to send as a fix once this lands in
the upstream to avoid unnecessary dependency/conflicts across tree for
such silly thing.

Regards,
Sudeep

-->8
From 60c25986d81c86b0e966159715cf982d63308422 Mon Sep 17 00:00:00 2001
From: Sudeep Holla <sudeep.holla@kernel.org>
Date: Fri, 6 Nov 2026 13:49:13 +0000
Subject: [PATCH] arm64: Update stale path references to sdei_nmi.c

Commit ceb90a70d571 ("firmware: arm: Group interface drivers under
arm/") moved drivers/firmware/arm_sdei_nmi.c to
drivers/firmware/arm/sdei_nmi.c but left two comment references
pointing to the old path.

Update the comments in nmi.h and smp.c to reflect the new location.

Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
---
 arch/arm64/include/asm/nmi.h | 2 +-
 arch/arm64/kernel/smp.c      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/include/asm/nmi.h b/arch/arm64/include/asm/nmi.h
index 2e8974ff8d63..e2956b24b627 100644
--- a/arch/arm64/include/asm/nmi.h
+++ b/arch/arm64/include/asm/nmi.h
@@ -9,7 +9,7 @@ struct pt_regs;
 /*
  * Cross-CPU NMI provider hooks, consulted by the arm64 arch code before
  * its regular-IRQ / pseudo-NMI IPI paths. The SDEI provider in
- * drivers/firmware/arm_sdei_nmi.c implements them when active; a future
+ * drivers/firmware/arm/sdei_nmi.c implements them when active; a future
  * FEAT_NMI provider could slot in here too. The stubs let callers stay
  * unconditional when ARM_SDEI_NMI is off.
  *
diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
index 014b163ce658..18e117fea1fc 100644
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -881,7 +881,7 @@ void arch_irq_work_raise(void)
  *
  *   - the regular IPI_CPU_STOP and pseudo-NMI IPI_CPU_STOP_NMI handlers;
  *   - panic_smp_self_stop(), a CPU parking itself on a parallel panic();
- *   - the SDEI cross-CPU NMI handler (drivers/firmware/arm_sdei_nmi.c),
+ *   - the SDEI cross-CPU NMI handler (drivers/firmware/arm/sdei_nmi.c),
  *     which reaches CPUs the stop IPIs could not.
  *
  * The IPI stop handlers pass @die_on_crash true. The SDEI handler and
--
2.43.0



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

* Re: [PATCH v2] firmware: arm: Group interface drivers under arm/
  2026-11-06 11:50 [PATCH v2] firmware: arm: Group interface drivers under arm/ Sudeep Holla
                   ` (2 preceding siblings ...)
  2026-11-10  3:27 ` Gavin Shan
@ 2026-11-10 23:40 ` Gavin Shan
  3 siblings, 0 replies; 6+ messages in thread
From: Gavin Shan @ 2026-11-10 23:40 UTC (permalink / raw)
  To: Sudeep Holla, Arnd Bergmann, linux-arm-kernel
  Cc: Mark Rutland, Lorenzo Pieralisi, Catalin Marinas, Will Deacon,
	James Morse, Cristian Marussi, Suzuki K Poulose, Yeoreum Yun,
	Arnd Bergmann, Andre Przywara

On 11/6/26 9:50 PM, 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%)
> 

Reviewed-by: Gavin Shan <gshan@redhat.com>






^ permalink raw reply	[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