diff options
| -rw-r--r-- | arch/x86/xen/enlighten.c | 16 | ||||
| -rw-r--r-- | arch/x86/xen/mmu.c | 17 | ||||
| -rw-r--r-- | arch/x86/xen/multicalls.c | 2 | ||||
| -rw-r--r-- | arch/x86/xen/setup.c | 9 |
4 files changed, 25 insertions, 19 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 5e4686d70f62..86cd2f829683 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
| @@ -793,7 +793,7 @@ static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) | |||
| 793 | 793 | ||
| 794 | ret = 0; | 794 | ret = 0; |
| 795 | 795 | ||
| 796 | switch(msr) { | 796 | switch (msr) { |
| 797 | #ifdef CONFIG_X86_64 | 797 | #ifdef CONFIG_X86_64 |
| 798 | unsigned which; | 798 | unsigned which; |
| 799 | u64 base; | 799 | u64 base; |
| @@ -1453,7 +1453,7 @@ static __init void xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn) | |||
| 1453 | 1453 | ||
| 1454 | ident_pte = 0; | 1454 | ident_pte = 0; |
| 1455 | pfn = 0; | 1455 | pfn = 0; |
| 1456 | for(pmdidx = 0; pmdidx < PTRS_PER_PMD && pfn < max_pfn; pmdidx++) { | 1456 | for (pmdidx = 0; pmdidx < PTRS_PER_PMD && pfn < max_pfn; pmdidx++) { |
| 1457 | pte_t *pte_page; | 1457 | pte_t *pte_page; |
| 1458 | 1458 | ||
| 1459 | /* Reuse or allocate a page of ptes */ | 1459 | /* Reuse or allocate a page of ptes */ |
| @@ -1471,7 +1471,7 @@ static __init void xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn) | |||
| 1471 | } | 1471 | } |
| 1472 | 1472 | ||
| 1473 | /* Install mappings */ | 1473 | /* Install mappings */ |
| 1474 | for(pteidx = 0; pteidx < PTRS_PER_PTE; pteidx++, pfn++) { | 1474 | for (pteidx = 0; pteidx < PTRS_PER_PTE; pteidx++, pfn++) { |
| 1475 | pte_t pte; | 1475 | pte_t pte; |
| 1476 | 1476 | ||
| 1477 | if (pfn > max_pfn_mapped) | 1477 | if (pfn > max_pfn_mapped) |
| @@ -1485,7 +1485,7 @@ static __init void xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn) | |||
| 1485 | } | 1485 | } |
| 1486 | } | 1486 | } |
| 1487 | 1487 | ||
| 1488 | for(pteidx = 0; pteidx < ident_pte; pteidx += PTRS_PER_PTE) | 1488 | for (pteidx = 0; pteidx < ident_pte; pteidx += PTRS_PER_PTE) |
| 1489 | set_page_prot(&level1_ident_pgt[pteidx], PAGE_KERNEL_RO); | 1489 | set_page_prot(&level1_ident_pgt[pteidx], PAGE_KERNEL_RO); |
| 1490 | 1490 | ||
| 1491 | set_page_prot(pmd, PAGE_KERNEL_RO); | 1491 | set_page_prot(pmd, PAGE_KERNEL_RO); |
| @@ -1499,7 +1499,7 @@ static void convert_pfn_mfn(void *v) | |||
| 1499 | 1499 | ||
| 1500 | /* All levels are converted the same way, so just treat them | 1500 | /* All levels are converted the same way, so just treat them |
| 1501 | as ptes. */ | 1501 | as ptes. */ |
| 1502 | for(i = 0; i < PTRS_PER_PTE; i++) | 1502 | for (i = 0; i < PTRS_PER_PTE; i++) |
| 1503 | pte[i] = xen_make_pte(pte[i].pte); | 1503 | pte[i] = xen_make_pte(pte[i].pte); |
| 1504 | } | 1504 | } |
| 1505 | 1505 | ||
| @@ -1514,7 +1514,8 @@ static void convert_pfn_mfn(void *v) | |||
| 1514 | * of the physical mapping once some sort of allocator has been set | 1514 | * of the physical mapping once some sort of allocator has been set |
| 1515 | * up. | 1515 | * up. |
| 1516 | */ | 1516 | */ |
| 1517 | static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) | 1517 | static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, |
| 1518 | unsigned long max_pfn) | ||
| 1518 | { | 1519 | { |
| 1519 | pud_t *l3; | 1520 | pud_t *l3; |
| 1520 | pmd_t *l2; | 1521 | pmd_t *l2; |
| @@ -1577,7 +1578,8 @@ static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pf | |||
| 1577 | #else /* !CONFIG_X86_64 */ | 1578 | #else /* !CONFIG_X86_64 */ |
| 1578 | static pmd_t level2_kernel_pgt[PTRS_PER_PMD] __page_aligned_bss; | 1579 | static pmd_t level2_kernel_pgt[PTRS_PER_PMD] __page_aligned_bss; |
| 1579 | 1580 | ||
| 1580 | static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) | 1581 | static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, |
| 1582 | unsigned long max_pfn) | ||
| 1581 | { | 1583 | { |
| 1582 | pmd_t *kernel_pmd; | 1584 | pmd_t *kernel_pmd; |
| 1583 | 1585 | ||
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 636ef4caa52d..773d68d3e912 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
| @@ -154,13 +154,13 @@ void xen_setup_mfn_list_list(void) | |||
| 154 | { | 154 | { |
| 155 | unsigned pfn, idx; | 155 | unsigned pfn, idx; |
| 156 | 156 | ||
| 157 | for(pfn = 0; pfn < MAX_DOMAIN_PAGES; pfn += P2M_ENTRIES_PER_PAGE) { | 157 | for (pfn = 0; pfn < MAX_DOMAIN_PAGES; pfn += P2M_ENTRIES_PER_PAGE) { |
| 158 | unsigned topidx = p2m_top_index(pfn); | 158 | unsigned topidx = p2m_top_index(pfn); |
| 159 | 159 | ||
| 160 | p2m_top_mfn[topidx] = virt_to_mfn(p2m_top[topidx]); | 160 | p2m_top_mfn[topidx] = virt_to_mfn(p2m_top[topidx]); |
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | for(idx = 0; idx < ARRAY_SIZE(p2m_top_mfn_list); idx++) { | 163 | for (idx = 0; idx < ARRAY_SIZE(p2m_top_mfn_list); idx++) { |
| 164 | unsigned topidx = idx * P2M_ENTRIES_PER_PAGE; | 164 | unsigned topidx = idx * P2M_ENTRIES_PER_PAGE; |
| 165 | p2m_top_mfn_list[idx] = virt_to_mfn(&p2m_top_mfn[topidx]); | 165 | p2m_top_mfn_list[idx] = virt_to_mfn(&p2m_top_mfn[topidx]); |
| 166 | } | 166 | } |
| @@ -179,7 +179,7 @@ void __init xen_build_dynamic_phys_to_machine(void) | |||
| 179 | unsigned long max_pfn = min(MAX_DOMAIN_PAGES, xen_start_info->nr_pages); | 179 | unsigned long max_pfn = min(MAX_DOMAIN_PAGES, xen_start_info->nr_pages); |
| 180 | unsigned pfn; | 180 | unsigned pfn; |
| 181 | 181 | ||
| 182 | for(pfn = 0; pfn < max_pfn; pfn += P2M_ENTRIES_PER_PAGE) { | 182 | for (pfn = 0; pfn < max_pfn; pfn += P2M_ENTRIES_PER_PAGE) { |
| 183 | unsigned topidx = p2m_top_index(pfn); | 183 | unsigned topidx = p2m_top_index(pfn); |
| 184 | 184 | ||
| 185 | p2m_top[topidx] = &mfn_list[pfn]; | 185 | p2m_top[topidx] = &mfn_list[pfn]; |
| @@ -207,7 +207,7 @@ static void alloc_p2m(unsigned long **pp, unsigned long *mfnp) | |||
| 207 | p = (void *)__get_free_page(GFP_KERNEL | __GFP_NOFAIL); | 207 | p = (void *)__get_free_page(GFP_KERNEL | __GFP_NOFAIL); |
| 208 | BUG_ON(p == NULL); | 208 | BUG_ON(p == NULL); |
| 209 | 209 | ||
| 210 | for(i = 0; i < P2M_ENTRIES_PER_PAGE; i++) | 210 | for (i = 0; i < P2M_ENTRIES_PER_PAGE; i++) |
| 211 | p[i] = INVALID_P2M_ENTRY; | 211 | p[i] = INVALID_P2M_ENTRY; |
| 212 | 212 | ||
| 213 | if (cmpxchg(pp, p2m_missing, p) != p2m_missing) | 213 | if (cmpxchg(pp, p2m_missing, p) != p2m_missing) |
| @@ -407,7 +407,8 @@ out: | |||
| 407 | preempt_enable(); | 407 | preempt_enable(); |
| 408 | } | 408 | } |
| 409 | 409 | ||
| 410 | pte_t xen_ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | 410 | pte_t xen_ptep_modify_prot_start(struct mm_struct *mm, |
| 411 | unsigned long addr, pte_t *ptep) | ||
| 411 | { | 412 | { |
| 412 | /* Just return the pte as-is. We preserve the bits on commit */ | 413 | /* Just return the pte as-is. We preserve the bits on commit */ |
| 413 | return *ptep; | 414 | return *ptep; |
| @@ -878,7 +879,8 @@ static void __xen_pgd_pin(struct mm_struct *mm, pgd_t *pgd) | |||
| 878 | 879 | ||
| 879 | if (user_pgd) { | 880 | if (user_pgd) { |
| 880 | xen_pin_page(mm, virt_to_page(user_pgd), PT_PGD); | 881 | xen_pin_page(mm, virt_to_page(user_pgd), PT_PGD); |
| 881 | xen_do_pin(MMUEXT_PIN_L4_TABLE, PFN_DOWN(__pa(user_pgd))); | 882 | xen_do_pin(MMUEXT_PIN_L4_TABLE, |
| 883 | PFN_DOWN(__pa(user_pgd))); | ||
| 882 | } | 884 | } |
| 883 | } | 885 | } |
| 884 | #else /* CONFIG_X86_32 */ | 886 | #else /* CONFIG_X86_32 */ |
| @@ -993,7 +995,8 @@ static void __xen_pgd_unpin(struct mm_struct *mm, pgd_t *pgd) | |||
| 993 | pgd_t *user_pgd = xen_get_user_pgd(pgd); | 995 | pgd_t *user_pgd = xen_get_user_pgd(pgd); |
| 994 | 996 | ||
| 995 | if (user_pgd) { | 997 | if (user_pgd) { |
| 996 | xen_do_pin(MMUEXT_UNPIN_TABLE, PFN_DOWN(__pa(user_pgd))); | 998 | xen_do_pin(MMUEXT_UNPIN_TABLE, |
| 999 | PFN_DOWN(__pa(user_pgd))); | ||
| 997 | xen_unpin_page(mm, virt_to_page(user_pgd), PT_PGD); | 1000 | xen_unpin_page(mm, virt_to_page(user_pgd), PT_PGD); |
| 998 | } | 1001 | } |
| 999 | } | 1002 | } |
diff --git a/arch/x86/xen/multicalls.c b/arch/x86/xen/multicalls.c index 8ea8a0d0b0de..c738644b5435 100644 --- a/arch/x86/xen/multicalls.c +++ b/arch/x86/xen/multicalls.c | |||
| @@ -154,7 +154,7 @@ void xen_mc_flush(void) | |||
| 154 | ret, smp_processor_id()); | 154 | ret, smp_processor_id()); |
| 155 | dump_stack(); | 155 | dump_stack(); |
| 156 | for (i = 0; i < b->mcidx; i++) { | 156 | for (i = 0; i < b->mcidx; i++) { |
| 157 | printk(" call %2d/%d: op=%lu arg=[%lx] result=%ld\n", | 157 | printk(KERN_DEBUG " call %2d/%d: op=%lu arg=[%lx] result=%ld\n", |
| 158 | i+1, b->mcidx, | 158 | i+1, b->mcidx, |
| 159 | b->debug[i].op, | 159 | b->debug[i].op, |
| 160 | b->debug[i].args[0], | 160 | b->debug[i].args[0], |
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index d67901083888..15c6c68db6a2 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c | |||
| @@ -28,6 +28,9 @@ | |||
| 28 | /* These are code, but not functions. Defined in entry.S */ | 28 | /* These are code, but not functions. Defined in entry.S */ |
| 29 | extern const char xen_hypervisor_callback[]; | 29 | extern const char xen_hypervisor_callback[]; |
| 30 | extern const char xen_failsafe_callback[]; | 30 | extern const char xen_failsafe_callback[]; |
| 31 | extern void xen_sysenter_target(void); | ||
| 32 | extern void xen_syscall_target(void); | ||
| 33 | extern void xen_syscall32_target(void); | ||
| 31 | 34 | ||
| 32 | 35 | ||
| 33 | /** | 36 | /** |
| @@ -110,7 +113,6 @@ static __cpuinit int register_callback(unsigned type, const void *func) | |||
| 110 | 113 | ||
| 111 | void __cpuinit xen_enable_sysenter(void) | 114 | void __cpuinit xen_enable_sysenter(void) |
| 112 | { | 115 | { |
| 113 | extern void xen_sysenter_target(void); | ||
| 114 | int ret; | 116 | int ret; |
| 115 | unsigned sysenter_feature; | 117 | unsigned sysenter_feature; |
| 116 | 118 | ||
| @@ -132,8 +134,6 @@ void __cpuinit xen_enable_syscall(void) | |||
| 132 | { | 134 | { |
| 133 | #ifdef CONFIG_X86_64 | 135 | #ifdef CONFIG_X86_64 |
| 134 | int ret; | 136 | int ret; |
| 135 | extern void xen_syscall_target(void); | ||
| 136 | extern void xen_syscall32_target(void); | ||
| 137 | 137 | ||
| 138 | ret = register_callback(CALLBACKTYPE_syscall, xen_syscall_target); | 138 | ret = register_callback(CALLBACKTYPE_syscall, xen_syscall_target); |
| 139 | if (ret != 0) { | 139 | if (ret != 0) { |
| @@ -160,7 +160,8 @@ void __init xen_arch_setup(void) | |||
| 160 | HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_writable_pagetables); | 160 | HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_writable_pagetables); |
| 161 | 161 | ||
| 162 | if (!xen_feature(XENFEAT_auto_translated_physmap)) | 162 | if (!xen_feature(XENFEAT_auto_translated_physmap)) |
| 163 | HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_pae_extended_cr3); | 163 | HYPERVISOR_vm_assist(VMASST_CMD_enable, |
| 164 | VMASST_TYPE_pae_extended_cr3); | ||
| 164 | 165 | ||
| 165 | if (register_callback(CALLBACKTYPE_event, xen_hypervisor_callback) || | 166 | if (register_callback(CALLBACKTYPE_event, xen_hypervisor_callback) || |
| 166 | register_callback(CALLBACKTYPE_failsafe, xen_failsafe_callback)) | 167 | register_callback(CALLBACKTYPE_failsafe, xen_failsafe_callback)) |
