diff options
author | Jeremy Fitzhardinge <jeremy@xensource.com> | 2007-07-17 21:37:06 -0400 |
---|---|---|
committer | Jeremy Fitzhardinge <jeremy@goop.org> | 2007-07-18 11:47:44 -0400 |
commit | f87e4cac4f4e940b328d3deb5b53e642e3881f43 (patch) | |
tree | 7409f86561e5f97459378abd2ae21e9a5c82bfea /arch/i386/xen/setup.c | |
parent | ab55028886dd1dd54585f22bf19a00eb23869340 (diff) |
xen: SMP guest support
This is a fairly straightforward Xen implementation of smp_ops.
Xen has its own IPI mechanisms, and has no dependency on any
APIC-based IPI. The smp_ops hooks and the flush_tlb_others pv_op
allow a Xen guest to avoid all APIC code in arch/i386 (the only apic
operation is a single apic_read for the apic version number).
One subtle point which needs to be addressed is unpinning pagetables
when another cpu may have a lazy tlb reference to the pagetable. Xen
will not allow an in-use pagetable to be unpinned, so we must find any
other cpus with a reference to the pagetable and get them to shoot
down their references.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Cc: Benjamin LaHaise <bcrl@kvack.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/i386/xen/setup.c')
-rw-r--r-- | arch/i386/xen/setup.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/i386/xen/setup.c b/arch/i386/xen/setup.c index 7da93ee612f6..18a994d5a4c5 100644 --- a/arch/i386/xen/setup.c +++ b/arch/i386/xen/setup.c | |||
@@ -94,4 +94,9 @@ void __init xen_arch_setup(void) | |||
94 | COMMAND_LINE_SIZE : MAX_GUEST_CMDLINE); | 94 | COMMAND_LINE_SIZE : MAX_GUEST_CMDLINE); |
95 | 95 | ||
96 | pm_idle = xen_idle; | 96 | pm_idle = xen_idle; |
97 | |||
98 | #ifdef CONFIG_SMP | ||
99 | /* fill cpus_possible with all available cpus */ | ||
100 | xen_fill_possible_map(); | ||
101 | #endif | ||
97 | } | 102 | } |