* [PATCH] ia64/xen: bug fix when CONFIG_CPU_HOTPLUG=y
@ 2009-05-13 2:42 Isaku Yamahata
0 siblings, 0 replies; only message in thread
From: Isaku Yamahata @ 2009-05-13 2:42 UTC (permalink / raw)
To: linux-ia64
default_setup_hook and related variables in head.S should be
in __CPUINITDATA instead of __INITDATA.
And related warning fix with section mismatch.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
arch/ia64/kernel/head.S | 2 +-
arch/ia64/kernel/paravirt_patchlist.c | 2 +-
arch/ia64/kernel/patch.c | 2 +-
arch/ia64/xen/irq_xen.c | 4 ++--
arch/ia64/xen/time.c | 2 +-
arch/ia64/xen/xen_pv_ops.c | 12 ++++++------
arch/ia64/xen/xensetup.S | 2 ++
7 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S
index 23f846d..40a9932 100644
--- a/arch/ia64/kernel/head.S
+++ b/arch/ia64/kernel/head.S
@@ -413,7 +413,7 @@ start_ap:
;;
(p7) br.call.sptk.many rp±
- __INITDATA
+ __CPUINITDATA
default_setup_hook = 0 // Currently nothing needs to be done.
diff --git a/arch/ia64/kernel/paravirt_patchlist.c b/arch/ia64/kernel/paravirt_patchlist.c
index b28082a..1304760 100644
--- a/arch/ia64/kernel/paravirt_patchlist.c
+++ b/arch/ia64/kernel/paravirt_patchlist.c
@@ -40,7 +40,7 @@ extern unsigned long __start_gate_section[];
.end_##name##_patchlist = \
(unsigned long)__ia64_native_end_gate_##name##_patchlist
-struct pv_patchdata pv_patchdata __initdata = {
+struct pv_patchdata pv_patchdata __cpuinitdata = {
ASSIGN(fsyscall),
ASSIGN(brl_fsys_bubble_down),
ASSIGN(vtop),
diff --git a/arch/ia64/kernel/patch.c b/arch/ia64/kernel/patch.c
index 68a1311..e76bc5b 100644
--- a/arch/ia64/kernel/patch.c
+++ b/arch/ia64/kernel/patch.c
@@ -172,7 +172,7 @@ ia64_patch_mckinley_e9 (unsigned long start, unsigned long end)
extern unsigned long ia64_native_fsyscall_table[NR_syscalls];
extern char ia64_native_fsys_bubble_down[];
-struct pv_fsys_data pv_fsys_data __initdata = {
+struct pv_fsys_data pv_fsys_data __cpuinitdata = {
.fsyscall_table = (unsigned long *)ia64_native_fsyscall_table,
.fsys_bubble_down = (void *)ia64_native_fsys_bubble_down,
};
diff --git a/arch/ia64/xen/irq_xen.c b/arch/ia64/xen/irq_xen.c
index af93aad..55eec89 100644
--- a/arch/ia64/xen/irq_xen.c
+++ b/arch/ia64/xen/irq_xen.c
@@ -408,7 +408,7 @@ xen_platform_send_ipi(int cpu, int vector, int delivery_mode, int redirect)
}
}
-static void __init
+static void __cpuinit
xen_register_ipi(void)
{
#ifdef CONFIG_SMP
@@ -424,7 +424,7 @@ xen_resend_irq(unsigned int vector)
(void)resend_irq_on_evtchn(vector);
}
-const struct pv_irq_ops xen_irq_ops __initdata = {
+const struct pv_irq_ops xen_irq_ops __cpuinitdata = {
.register_ipi = xen_register_ipi,
.assign_irq_vector = xen_assign_irq_vector,
diff --git a/arch/ia64/xen/time.c b/arch/ia64/xen/time.c
index fb83326..2f2a5fc 100644
--- a/arch/ia64/xen/time.c
+++ b/arch/ia64/xen/time.c
@@ -222,7 +222,7 @@ static unsigned long long xen_sched_clock(void)
return ret;
}
-struct pv_time_ops xen_time_ops __initdata = {
+struct pv_time_ops xen_time_ops __cpuinitdata = {
.init_missing_ticks_accounting = xen_init_missing_ticks_accounting,
.do_steal_accounting = xen_do_steal_accounting,
.clocksource_resume = xen_itc_jitter_data_reset,
diff --git a/arch/ia64/xen/xen_pv_ops.c b/arch/ia64/xen/xen_pv_ops.c
index 5e2270a..e0d1431 100644
--- a/arch/ia64/xen/xen_pv_ops.c
+++ b/arch/ia64/xen/xen_pv_ops.c
@@ -36,7 +36,7 @@
/***************************************************************************
* general info
*/
-static struct pv_info xen_info __initdata = {
+static struct pv_info xen_info __cpuinitdata = {
.kernel_rpl = 2, /* or 1: determin at runtime */
.paravirt_enabled = 1,
.name = "Xen/ia64",
@@ -47,7 +47,7 @@ static struct pv_info xen_info __initdata = {
#define IA64_RSC_PL_MASK \
(((1UL << IA64_RSC_PL_BIT_SIZE) - 1) << IA64_RSC_PL_SHIFT)
-static void __init
+static void __cpuinit
xen_info_init(void)
{
/* Xenified Linux/ia64 may run on pl = 1 or 2.
@@ -184,7 +184,7 @@ static const struct pv_init_ops xen_init_ops __initconst = {
extern unsigned long xen_fsyscall_table[NR_syscalls];
extern char xen_fsys_bubble_down[];
-struct pv_fsys_data xen_fsys_data __initdata = {
+struct pv_fsys_data xen_fsys_data __cpuinitdata = {
.fsyscall_table = (unsigned long *)xen_fsyscall_table,
.fsys_bubble_down = (void *)xen_fsys_bubble_down,
};
@@ -211,7 +211,7 @@ extern unsigned long __xen_start_gate_section[];
.end_##name##_patchlist = \
(unsigned long)__xen_end_gate_##name##_patchlist
-static struct pv_patchdata xen_patchdata __initdata = {
+static struct pv_patchdata xen_patchdata __cpuinitdata = {
ASSIGN(fsyscall),
ASSIGN(brl_fsys_bubble_down),
ASSIGN(vtop),
@@ -880,7 +880,7 @@ xen_iosapic_write(char __iomem *iosapic, unsigned int reg, u32 val)
HYPERVISOR_physdev_op(PHYSDEVOP_apic_write, &apic_op);
}
-static struct pv_iosapic_ops xen_iosapic_ops __initdata = {
+static struct pv_iosapic_ops xen_iosapic_ops __cpuinitdata = {
.pcat_compat_init = xen_pcat_compat_init,
.__get_irq_chip = xen_iosapic_get_irq_chip,
@@ -892,7 +892,7 @@ static struct pv_iosapic_ops xen_iosapic_ops __initdata = {
* pv_ops initialization
*/
-void __init
+void __cpuinit
xen_setup_pv_ops(void)
{
xen_info_init();
diff --git a/arch/ia64/xen/xensetup.S b/arch/ia64/xen/xensetup.S
index aff8346..356bb2f 100644
--- a/arch/ia64/xen/xensetup.S
+++ b/arch/ia64/xen/xensetup.S
@@ -54,6 +54,8 @@ END(startup_xen)
#define isBP p3 // are we the Bootstrap Processor?
+ __CPUINIT
+
GLOBAL_ENTRY(xen_setup_hook)
mov r8=XEN_PV_DOMAIN_ASM
(isBP) movl r9=xen_domain_type;;
--
1.6.0.2
--
yamahata
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-05-13 2:42 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-13 2:42 [PATCH] ia64/xen: bug fix when CONFIG_CPU_HOTPLUG=y Isaku Yamahata
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.