x86/mpparse: Switch to new init callbacks
authorThomas Gleixner <tglx@linutronix.de>
Tue, 13 Feb 2024 21:05:14 +0000 (22:05 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 15 Feb 2024 21:07:41 +0000 (22:07 +0100)
Now that all platforms have the new split SMP configuration callbacks set
up, flip the switch and remove the old callback pointer and mop up the
platform code.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Michael Kelley <mhklinux@outlook.com>
Tested-by: Sohil Mehta <sohil.mehta@intel.com>
Link: https://lore.kernel.org/r/20240212154639.870883080@linutronix.de
arch/x86/hyperv/hv_vtl.c
arch/x86/include/asm/mpspec.h
arch/x86/include/asm/x86_init.h
arch/x86/kernel/jailhouse.c
arch/x86/kernel/mpparse.c
arch/x86/kernel/setup.c
arch/x86/kernel/x86_init.c
arch/x86/platform/ce4100/ce4100.c
arch/x86/platform/intel-mid/intel-mid.c
arch/x86/xen/smp_pv.c

index f573cac4650354f623403564d63eec491a6be798..804b629ea49da1ef2e423ed93593be42b62eaffa 100644 (file)
@@ -29,7 +29,6 @@ void __init hv_vtl_init_platform(void)
        x86_init.mpparse.find_mptable = x86_init_noop;
        x86_init.mpparse.early_parse_smp_cfg = x86_init_noop;
        x86_init.mpparse.parse_smp_cfg = x86_init_noop;
-       x86_init.mpparse.get_smp_config = x86_init_uint_noop;
 
        x86_platform.get_wallclock = get_rtc_noop;
        x86_platform.set_wallclock = set_rtc_noop;
index 72700ae4a7708dd5a41544c13a48a30bc0aefbce..82480b7d01f0296551ff16a0459d4fdd3f8ffade 100644 (file)
@@ -46,14 +46,9 @@ extern int smp_found_config;
 # define smp_found_config 0
 #endif
 
-static inline void get_smp_config(void)
-{
-       x86_init.mpparse.get_smp_config(0);
-}
-
 static inline void early_get_smp_config(void)
 {
-       x86_init.mpparse.get_smp_config(1);
+       x86_init.mpparse.early_parse_smp_cfg();
 }
 
 #ifdef CONFIG_X86_MPPARSE
@@ -62,14 +57,12 @@ extern int enable_update_mptable;
 extern void mpparse_find_mptable(void);
 extern void mpparse_parse_early_smp_config(void);
 extern void mpparse_parse_smp_config(void);
-extern void mpparse_get_smp_config(unsigned int early);
 #else
 static inline void e820__memblock_alloc_reserved_mpc_new(void) { }
 #define enable_update_mptable          0
 #define mpparse_find_mptable           x86_init_noop
 #define mpparse_parse_early_smp_config x86_init_noop
 #define mpparse_parse_smp_config       x86_init_noop
-#define mpparse_get_smp_config         x86_init_uint_noop
 #endif
 
 int generic_processor_info(int apicid);
index 375825f93049877d8f1ae118b8fdc9f51ec49c89..9ca624749176a7bae71cb44430181beb10813b35 100644 (file)
@@ -16,14 +16,12 @@ struct irq_domain;
  * struct x86_init_mpparse - platform specific mpparse ops
  * @setup_ioapic_ids:          platform specific ioapic id override
  * @find_mptable:              Find MPTABLE early to reserve the memory region
- * @get_smp_config:            get the smp configuration
  * @early_parse_smp_cfg:       Parse the SMP configuration data early before initmem_init()
  * @parse_smp_cfg:             Parse the SMP configuration data
  */
 struct x86_init_mpparse {
        void (*setup_ioapic_ids)(void);
        void (*find_mptable)(void);
-       void (*get_smp_config)(unsigned int early);
        void (*early_parse_smp_cfg)(void);
        void (*parse_smp_cfg)(void);
 };
index 6d663afd88df73391f0fbcbd9b209fc78add3237..5128ac863a66e05eca5dfc9e04034c94790879e0 100644 (file)
@@ -89,7 +89,7 @@ static void __init jailhouse_x2apic_init(void)
 #endif
 }
 
-static void __init jailhouse_get_smp_config(unsigned int early)
+static void __init jailhouse_parse_smp_config(void)
 {
        struct ioapic_domain_cfg ioapic_cfg = {
                .type = IOAPIC_DOMAIN_STRICT,
@@ -118,11 +118,6 @@ static void __init jailhouse_get_smp_config(unsigned int early)
        }
 }
 
-static void __init jailhouse_parse_smp_config(void)
-{
-       jailhouse_get_smp_config(false);
-}
-
 static void jailhouse_no_restart(void)
 {
        pr_notice("Jailhouse: Restart not supported, halting\n");
@@ -211,7 +206,6 @@ static void __init jailhouse_init_platform(void)
        x86_init.mpparse.find_mptable           = x86_init_noop;
        x86_init.mpparse.early_parse_smp_cfg    = x86_init_noop;
        x86_init.mpparse.parse_smp_cfg          = jailhouse_parse_smp_config;
-       x86_init.mpparse.get_smp_config         = jailhouse_get_smp_config;
        x86_init.pci.arch_init                  = jailhouse_pci_arch_init;
 
        x86_platform.calibrate_cpu              = jailhouse_get_tsc;
index b22093d2265b80e6cb3fc42110083288aeb77d0a..9c000c409eb1df0ce4775ef7572bb78fae9cee89 100644 (file)
@@ -473,7 +473,7 @@ static int __init check_physptr(struct mpf_intel *mpf, unsigned int early)
 /*
  * Scan the memory blocks for an SMP configuration block.
  */
-void __init mpparse_get_smp_config(unsigned int early)
+static __init void mpparse_get_smp_config(unsigned int early)
 {
        struct mpf_intel *mpf;
 
index 39edb8971c942738aeebf033eced0eab2368babc..1a3d66f17487dfc8cf46e2fb9158f3a58f525a4c 100644 (file)
@@ -1130,15 +1130,11 @@ void __init setup_arch(char **cmdline_p)
        early_quirks();
 
        /*
-        * Read APIC and some other early information from ACPI tables.
+        * Parse SMP configuration. Try ACPI first and then the platform
+        * specific parser.
         */
        acpi_boot_init();
-       x86_dtb_parse_smp_config();
-
-       /*
-        * get boot-time SMP configuration:
-        */
-       get_smp_config();
+       x86_init.mpparse.parse_smp_cfg();
 
        /*
         * Systems w/o ACPI and mptables might not have it mapped the local
index 5d86d578297148aec756b66289c5cbeab0c238ad..a42830dc151bc48af1362a3fbe8248ae63038b63 100644 (file)
@@ -71,7 +71,8 @@ struct x86_init_ops x86_init __initdata = {
        .mpparse = {
                .setup_ioapic_ids       = x86_init_noop,
                .find_mptable           = mpparse_find_mptable,
-               .get_smp_config         = mpparse_get_smp_config,
+               .early_parse_smp_cfg    = mpparse_parse_early_smp_config,
+               .parse_smp_cfg          = mpparse_parse_smp_config,
        },
 
        .irqs = {
index 6378082d885527ec4b013114970c06d9225a8125..f32451bdcfdd5b2f28cd2cbb00eca4984b698f69 100644 (file)
@@ -140,7 +140,6 @@ void __init x86_ce4100_early_setup(void)
        x86_init.mpparse.find_mptable           = x86_init_noop;
        x86_init.mpparse.early_parse_smp_cfg    = x86_init_noop;
        x86_init.mpparse.parse_smp_cfg          = x86_dtb_parse_smp_config;
-       x86_init.mpparse.get_smp_config         = x86_init_uint_noop;
        x86_init.pci.init                       = ce4100_pci_init;
        x86_init.pci.init_irq                   = sdv_pci_init;
 
index 14ca3675999a5bb55f73820a28a31104b957878c..7be71c2cdc83ee5f73414a3f22c45c62d59e2970 100644 (file)
@@ -121,6 +121,5 @@ void __init x86_intel_mid_early_setup(void)
        x86_init.mpparse.find_mptable           = x86_init_noop;
        x86_init.mpparse.early_parse_smp_cfg    = x86_init_noop;
        x86_init.mpparse.parse_smp_cfg          = x86_init_noop;
-       x86_init.mpparse.get_smp_config         = x86_init_uint_noop;
        set_bit(MP_BUS_ISA, mp_bus_not_pci);
 }
index bd939b8b1a063bdbc34cea4380e62b885a1459bb..7f6f34056e13e8c6f0b905a3f9a9113d2bb6c751 100644 (file)
@@ -148,14 +148,11 @@ int xen_smp_intr_init_pv(unsigned int cpu)
        return rc;
 }
 
-static void __init _get_smp_config(unsigned int early)
+static void __init xen_pv_smp_config(void)
 {
        int i, rc;
        unsigned int subtract = 0;
 
-       if (early)
-               return;
-
        num_processors = 0;
        disabled_cpus = 0;
        for (i = 0; i < nr_cpu_ids; i++) {
@@ -185,11 +182,6 @@ static void __init _get_smp_config(unsigned int early)
        smp_found_config = 1;
 }
 
-static void __init xen_pv_smp_config(void)
-{
-       _get_smp_config(false);
-}
-
 static void __init xen_pv_smp_prepare_boot_cpu(void)
 {
        BUG_ON(smp_processor_id() != 0);
@@ -463,5 +455,4 @@ void __init xen_smp_init(void)
        x86_init.mpparse.find_mptable           = x86_init_noop;
        x86_init.mpparse.early_parse_smp_cfg    = x86_init_noop;
        x86_init.mpparse.parse_smp_cfg          = xen_pv_smp_config;
-       x86_init.mpparse.get_smp_config         = _get_smp_config;
 }