]> xenbits.xensource.com Git - people/andrewcoop/xen.git/commitdiff
xen/arm: mpu: Implement a dummy enable_secondary_cpu_mm
authorAyan Kumar Halder <ayan.kumar.halder@amd.com>
Mon, 18 Nov 2024 12:12:50 +0000 (12:12 +0000)
committerJulien Grall <jgrall@amazon.com>
Mon, 2 Dec 2024 18:28:54 +0000 (18:28 +0000)
Secondary cpus initialization is not yet supported. Thus, we print an
appropriate message and put the secondary cpus in WFE state.
And we introduce to BUILD_BUG_ON to prevent users using from building Xen
on multiprocessor based MPU systems.

In Arm, there is no clean way to disable SMP. As of now, we wish to support
MPU on UNP only. So, we have defined the default range of NR_CPUs to be 1 for
MPU.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
Acked-by: Julien Grall <jgrall@amazon.com>
xen/arch/Kconfig
xen/arch/arm/arm64/mpu/head.S
xen/arch/arm/smp.c

index 308ce129a88d63998341db72ec671f9a80c87dcb..9f4835e37f4846289ed1ecc74cc0864fb2b2c7a8 100644 (file)
@@ -6,8 +6,10 @@ config PHYS_ADDR_T_32
 
 config NR_CPUS
        int "Maximum number of CPUs"
+       range 1 1 if ARM && MPU
        range 1 16383
        default "256" if X86
+       default "1" if ARM && MPU
        default "8" if ARM && RCAR3
        default "4" if ARM && QEMU
        default "4" if ARM && MPSOC
index bacf8315f966e31f2b7fc3bcae73f7b93ff8566f..d3db5e53af560b3f118695c32a0901cc0b6535fe 100644 (file)
@@ -144,6 +144,16 @@ FUNC(enable_boot_cpu_mm)
     ret
 END(enable_boot_cpu_mm)
 
+/*
+ * We don't yet support secondary CPUs bring-up. Implement a dummy helper to
+ * please the common code.
+ */
+ENTRY(enable_secondary_cpu_mm)
+    PRINT("- SMP not enabled yet -\r\n")
+1:  wfe
+    b 1b
+ENDPROC(enable_secondary_cpu_mm)
+
 /*
  * Local variables:
  * mode: ASM
index c11bba93ad121c2084e025c56ff624e0c75dd7ad..b372472188305a421d1b9570cad05bfb463d4b78 100644 (file)
@@ -1,4 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/init.h>
 #include <xen/mm.h>
 #include <asm/system.h>
 #include <asm/smp.h>
@@ -6,6 +7,16 @@
 #include <asm/gic.h>
 #include <asm/flushtlb.h>
 
+static void __init __maybe_unused build_assertions(void)
+{
+#ifdef CONFIG_MPU
+    /*
+     * Currently, SMP is not enabled on MPU based systems.
+     */
+    BUILD_BUG_ON(NR_CPUS > 1);
+#endif
+}
+
 void arch_flush_tlb_mask(const cpumask_t *mask)
 {
     /* No need to IPI other processors on ARM, the processor takes care of it. */