xen/arm: Remove __initdata and __init to enable CPU hotplug
authorMirela Simonovic <mirela.simonovic@aggios.com>
Fri, 1 Jun 2018 13:17:44 +0000 (15:17 +0200)
committerJulien Grall <julien.grall@arm.com>
Tue, 5 Jun 2018 18:07:24 +0000 (19:07 +0100)
CPU up flow is currently used during the initial boot to start secondary
CPUs. However, the same flow should be used for CPU hotplug, e.g. when
hotplugging secondary CPUs within the resume procedure (resume from the
suspend to RAM). Therefore, prefixes __initdata and __init had to be removed
from few data structures and functions that are used within the cpu up flow.

Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
Acked-by: Julien Grall <julien.grall@arm.com>
xen/arch/arm/arm64/smpboot.c
xen/arch/arm/irq.c
xen/arch/arm/processor.c
xen/arch/arm/smpboot.c
xen/include/asm-arm/procinfo.h

index 4fd0ac68b7a275bcddad5c198587833c8f24156f..694fbf67e62ac1780355da16aa5f952326bf8eae 100644 (file)
@@ -104,7 +104,7 @@ int __init arch_cpu_init(int cpu, struct dt_device_node *dn)
         return smp_psci_init(cpu);
 }
 
-int __init arch_cpu_up(int cpu)
+int arch_cpu_up(int cpu)
 {
     if ( !smp_enable_ops[cpu].prepare_cpu )
         return -ENODEV;
index aa4e832caeb64b56487b3803dba96ee0132b841c..098281f8abf02e251c14e15df4d0e25cae57e695 100644 (file)
@@ -65,7 +65,7 @@ irq_desc_t *__irq_to_desc(int irq)
     return &irq_desc[irq-NR_LOCAL_IRQS];
 }
 
-int __init arch_init_one_irq_desc(struct irq_desc *desc)
+int arch_init_one_irq_desc(struct irq_desc *desc)
 {
     desc->arch.type = IRQ_TYPE_INVALID;
     return 0;
index ce4385064a98099919fe81e75cc2f4d0efac5a2b..acad8b31d61ed338e6d5ff7ee10006b59b826655 100644 (file)
@@ -20,7 +20,7 @@
 
 static DEFINE_PER_CPU(struct processor *, processor);
 
-void __init processor_setup(void)
+void processor_setup(void)
 {
     const struct proc_info_list *procinfo;
 
index 8b1e274bf3f562b3baa159838272e0dfbe6fa277..ad1f6b751b8f78edc3d6c3dcc4d9116dff2f6bca 100644 (file)
@@ -52,8 +52,8 @@ nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
 static unsigned char __initdata cpu0_boot_stack[STACK_SIZE]
        __attribute__((__aligned__(STACK_SIZE)));
 
-/* Initial boot cpu data */
-struct init_info __initdata init_data =
+/* Boot cpu data */
+struct init_info init_data =
 {
     .stack = cpu0_boot_stack,
 };
index 26306b35f81c447b56d1b39e726aedfd90a00c25..02be56e348163d52bbcfbf9cd9f1b36023cb24bc 100644 (file)
@@ -35,9 +35,9 @@ struct proc_info_list {
     struct processor    *processor;
 };
 
-const __init struct proc_info_list *lookup_processor_type(void);
+const struct proc_info_list *lookup_processor_type(void);
 
-void __init processor_setup(void);
+void processor_setup(void);
 void processor_vcpu_initialise(struct vcpu *v);
 
 #endif