diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-07-08 18:06:47 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-16 04:59:24 -0400 |
commit | 15664f968a95d8fbf4a0d7b462fcc20f88906bb3 (patch) | |
tree | f2aad78c561aa0dd3975eff76d9fe8b9a6558650 /arch/x86/xen/enlighten.c | |
parent | cdacc1278b12d929f9a053c245ff3d16eb7af9f8 (diff) |
xen64: use set_fixmap for shared_info structure
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stephen Tweedie <sct@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/xen/enlighten.c')
-rw-r--r-- | arch/x86/xen/enlighten.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index f3f11acf7856..dbe3549fad40 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -902,18 +902,11 @@ static __init void xen_pagetable_setup_start(pgd_t *base) | |||
902 | void xen_setup_shared_info(void) | 902 | void xen_setup_shared_info(void) |
903 | { | 903 | { |
904 | if (!xen_feature(XENFEAT_auto_translated_physmap)) { | 904 | if (!xen_feature(XENFEAT_auto_translated_physmap)) { |
905 | unsigned long addr = fix_to_virt(FIX_PARAVIRT_BOOTMAP); | 905 | set_fixmap(FIX_PARAVIRT_BOOTMAP, |
906 | 906 | xen_start_info->shared_info); | |
907 | /* | 907 | |
908 | * Create a mapping for the shared info page. | 908 | HYPERVISOR_shared_info = |
909 | * Should be set_fixmap(), but shared_info is a machine | 909 | (struct shared_info *)fix_to_virt(FIX_PARAVIRT_BOOTMAP); |
910 | * address with no corresponding pseudo-phys address. | ||
911 | */ | ||
912 | set_pte_mfn(addr, | ||
913 | PFN_DOWN(xen_start_info->shared_info), | ||
914 | PAGE_KERNEL); | ||
915 | |||
916 | HYPERVISOR_shared_info = (struct shared_info *)addr; | ||
917 | } else | 910 | } else |
918 | HYPERVISOR_shared_info = | 911 | HYPERVISOR_shared_info = |
919 | (struct shared_info *)__va(xen_start_info->shared_info); | 912 | (struct shared_info *)__va(xen_start_info->shared_info); |
@@ -1050,8 +1043,13 @@ static void xen_set_fixmap(unsigned idx, unsigned long phys, pgprot_t prot) | |||
1050 | #ifdef CONFIG_X86_F00F_BUG | 1043 | #ifdef CONFIG_X86_F00F_BUG |
1051 | case FIX_F00F_IDT: | 1044 | case FIX_F00F_IDT: |
1052 | #endif | 1045 | #endif |
1046 | #ifdef CONFIG_X86_32 | ||
1053 | case FIX_WP_TEST: | 1047 | case FIX_WP_TEST: |
1054 | case FIX_VDSO: | 1048 | case FIX_VDSO: |
1049 | case FIX_KMAP_BEGIN ... FIX_KMAP_END: | ||
1050 | #else | ||
1051 | case VSYSCALL_LAST_PAGE ... VSYSCALL_FIRST_PAGE: | ||
1052 | #endif | ||
1055 | #ifdef CONFIG_X86_LOCAL_APIC | 1053 | #ifdef CONFIG_X86_LOCAL_APIC |
1056 | case FIX_APIC_BASE: /* maps dummy local APIC */ | 1054 | case FIX_APIC_BASE: /* maps dummy local APIC */ |
1057 | #endif | 1055 | #endif |