]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Apr 2013 18:13:24 +0000 (11:13 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Apr 2013 18:13:24 +0000 (11:13 -0700)
Pull x86 fixes from Ingo Molnar:
 "Misc fixes"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/mm: Flush lazy MMU when DEBUG_PAGEALLOC is set
  x86/mm/cpa/selftest: Fix false positive in CPA self test
  x86/mm/cpa: Convert noop to functional fix
  x86, mm: Patch out arch_flush_lazy_mmu_mode() when running on bare metal
  x86, mm, paravirt: Fix vmalloc_fault oops during lazy MMU updates

1  2 
arch/x86/xen/mmu.c

diff --combined arch/x86/xen/mmu.c
index a4ea92477e016e252ca96037a9654fed4e399e57,2f5d6875555eaacd2accc2024ba3345ab7ea1202..e006c18d288a39ebec3343b2c240eced7a6fec34
@@@ -1748,18 -1748,14 +1748,18 @@@ static void *m2v(phys_addr_t maddr
  }
  
  /* Set the page permissions on an identity-mapped pages */
 -static void set_page_prot(void *addr, pgprot_t prot)
 +static void set_page_prot_flags(void *addr, pgprot_t prot, unsigned long flags)
  {
        unsigned long pfn = __pa(addr) >> PAGE_SHIFT;
        pte_t pte = pfn_pte(pfn, prot);
  
 -      if (HYPERVISOR_update_va_mapping((unsigned long)addr, pte, 0))
 +      if (HYPERVISOR_update_va_mapping((unsigned long)addr, pte, flags))
                BUG();
  }
 +static void set_page_prot(void *addr, pgprot_t prot)
 +{
 +      return set_page_prot_flags(addr, prot, UVMF_NONE);
 +}
  #ifdef CONFIG_X86_32
  static void __init xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn)
  {
@@@ -1843,12 -1839,12 +1843,12 @@@ static void __init check_pt_base(unsign
                                 unsigned long addr)
  {
        if (*pt_base == PFN_DOWN(__pa(addr))) {
 -              set_page_prot((void *)addr, PAGE_KERNEL);
 +              set_page_prot_flags((void *)addr, PAGE_KERNEL, UVMF_INVLPG);
                clear_page((void *)addr);
                (*pt_base)++;
        }
        if (*pt_end == PFN_DOWN(__pa(addr))) {
 -              set_page_prot((void *)addr, PAGE_KERNEL);
 +              set_page_prot_flags((void *)addr, PAGE_KERNEL, UVMF_INVLPG);
                clear_page((void *)addr);
                (*pt_end)--;
        }
@@@ -2200,6 -2196,7 +2200,7 @@@ static const struct pv_mmu_ops xen_mmu_
        .lazy_mode = {
                .enter = paravirt_enter_lazy_mmu,
                .leave = xen_leave_lazy_mmu,
+               .flush = paravirt_flush_lazy_mmu,
        },
  
        .set_fixmap = xen_set_fixmap,