[PATCH 4/8] ACPI: LoongArch: Add acpi_arch_late_init support

Bibo Mao <[email protected]> Wed, 17 Jun 2026 15:48:25 +0800
Newsgroups dev.linux.lists.acpica-devel,dev.linux.lists.loongarch,org.kernel.vger.linux-acpi,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On LoongArch system, IOMMU is PCI device, its device id is based
on BDF information. IOVT table scanning should be called after PCI
device scanning.

Here api acpi_arch_late_init() is added, it is a weak function on
other architectures. On LoongArch it is empty function now, IOVT table
scanning function be will executed in this function later.

Signed-off-by: Bibo Mao <[email protected]>
---
 drivers/acpi/bus.c            | 2 ++
 drivers/acpi/loongarch/init.c | 4 ++++
 include/linux/acpi.h          | 1 +
 3 files changed, 7 insertions(+)

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 3b7db94b81f7..4a2d2bab05cd 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -1556,6 +1556,7 @@ struct kobject *acpi_kobj;
 EXPORT_SYMBOL_GPL(acpi_kobj);
 
 void __weak __init acpi_arch_init(void) { }
+void __weak __init acpi_arch_late_init(void) { }
 
 static int __init acpi_init(void)
 {
@@ -1594,6 +1595,7 @@ static int __init acpi_init(void)
 	acpi_wakeup_device_init();
 	acpi_debugger_init();
 	acpi_setup_sb_notify_handler();
+	acpi_arch_late_init();
 	acpi_viot_init();
 	return 0;
 }
diff --git a/drivers/acpi/loongarch/init.c b/drivers/acpi/loongarch/init.c
index 9233f6c1cb55..1aa9bfa66e51 100644
--- a/drivers/acpi/loongarch/init.c
+++ b/drivers/acpi/loongarch/init.c
@@ -8,3 +8,7 @@ void __init acpi_arch_init(void)
 	if (IS_ENABLED(CONFIG_ACPI_IOVT))
 		acpi_iovt_init();
 }
+
+void __init acpi_arch_late_init(void)
+{
+}
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 67effb91fa98..24d00d01bf12 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -1610,6 +1610,7 @@ static inline int acpi_pptt_get_cpumask_from_cache_id(u32 cache_id,
 #endif
 
 void acpi_arch_init(void);
+void acpi_arch_late_init(void);
 
 #ifdef CONFIG_ACPI_PCC
 void acpi_init_pcc(void);
-- 
2.39.3