Merge branch 'stable/autoballoon.v5.2' into stable/for-linus-3.5
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 7 May 2012 19:33:27 +0000 (15:33 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 7 May 2012 19:33:27 +0000 (15:33 -0400)
* stable/autoballoon.v5.2:
  xen/setup: update VA mapping when releasing memory during setup
  xen/setup: Combine the two hypercall functions - since they are quite similar.
  xen/setup: Populate freed MFNs from non-RAM E820 entries and gaps to E820 RAM
  xen/setup: Only print "Freeing XXX-YYY pfn range: Z pages freed" if Z > 0
  xen/p2m: An early bootup variant of set_phys_to_machine
  xen/p2m: Collapse early_alloc_p2m_middle redundant checks.
  xen/p2m: Allow alloc_p2m_middle to call reserve_brk depending on argument
  xen/p2m: Move code around to allow for better re-usage.

1  2 
arch/x86/xen/enlighten.c
arch/x86/xen/mmu.c

diff --combined arch/x86/xen/enlighten.c
@@@ -42,7 -42,6 +42,7 @@@
  #include <xen/page.h>
  #include <xen/hvm.h>
  #include <xen/hvc-console.h>
 +#include <xen/acpi.h>
  
  #include <asm/paravirt.h>
  #include <asm/apic.h>
@@@ -75,7 -74,6 +75,7 @@@
  
  #include "xen-ops.h"
  #include "mmu.h"
 +#include "smp.h"
  #include "multicalls.h"
  
  EXPORT_SYMBOL_GPL(hypercall_page);
@@@ -851,14 -849,6 +851,14 @@@ static void set_xen_basic_apic_ops(void
        apic->icr_write = xen_apic_icr_write;
        apic->wait_icr_idle = xen_apic_wait_icr_idle;
        apic->safe_wait_icr_idle = xen_safe_apic_wait_icr_idle;
 +
 +#ifdef CONFIG_SMP
 +      apic->send_IPI_allbutself = xen_send_IPI_allbutself;
 +      apic->send_IPI_mask_allbutself = xen_send_IPI_mask_allbutself;
 +      apic->send_IPI_mask = xen_send_IPI_mask;
 +      apic->send_IPI_all = xen_send_IPI_all;
 +      apic->send_IPI_self = xen_send_IPI_self;
 +#endif
  }
  
  #endif
@@@ -977,7 -967,7 +977,7 @@@ void xen_setup_shared_info(void
        xen_setup_mfn_list_list();
  }
  
 -/* This is called once we have the cpu_possible_map */
 +/* This is called once we have the cpu_possible_mask */
  void xen_setup_vcpu_info_placement(void)
  {
        int cpu;
@@@ -1242,9 -1232,7 +1242,9 @@@ asmlinkage void __init xen_start_kernel
  
        /* Prevent unwanted bits from being set in PTEs. */
        __supported_pte_mask &= ~_PAGE_GLOBAL;
 +#if 0
        if (!xen_initial_domain())
 +#endif
                __supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD);
  
        __supported_pte_mask |= _PAGE_IOMAP;
  
        pgd = (pgd_t *)xen_start_info->pt_base;
  
 -      if (!xen_initial_domain())
 -              __supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD);
 -
 -      __supported_pte_mask |= _PAGE_IOMAP;
        /* Don't do the full vcpu_info placement stuff until we have a
           possible map and a non-dummy shared_info. */
        per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];
  
        xen_raw_console_write("mapping kernel into physical memory\n");
        pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages);
-       xen_ident_map_ISA();
  
        /* Allocate and initialize top and mid mfn levels for p2m structure */
        xen_build_mfn_list_list();
  
                /* Make sure ACS will be enabled */
                pci_request_acs();
 +
 +              xen_acpi_sleep_register();
        }
                
  
diff --combined arch/x86/xen/mmu.c
@@@ -415,13 -415,13 +415,13 @@@ static pteval_t iomap_pte(pteval_t val
  static pteval_t xen_pte_val(pte_t pte)
  {
        pteval_t pteval = pte.pte;
 -
 +#if 0
        /* If this is a WC pte, convert back from Xen WC to Linux WC */
        if ((pteval & (_PAGE_PAT | _PAGE_PCD | _PAGE_PWT)) == _PAGE_PAT) {
                WARN_ON(!pat_enabled);
                pteval = (pteval & ~_PAGE_PAT) | _PAGE_PWT;
        }
 -
 +#endif
        if (xen_initial_domain() && (pteval & _PAGE_IOMAP))
                return pteval;
  
@@@ -463,7 -463,7 +463,7 @@@ void xen_set_pat(u64 pat
  static pte_t xen_make_pte(pteval_t pte)
  {
        phys_addr_t addr = (pte & PTE_PFN_MASK);
 -
 +#if 0
        /* If Linux is trying to set a WC pte, then map to the Xen WC.
         * If _PAGE_PAT is set, then it probably means it is really
         * _PAGE_PSE, so avoid fiddling with the PAT mapping and hope
                if ((pte & (_PAGE_PCD | _PAGE_PWT)) == _PAGE_PWT)
                        pte = (pte & ~(_PAGE_PCD | _PAGE_PWT)) | _PAGE_PAT;
        }
 -
 +#endif
        /*
         * Unprivileged domains are allowed to do IOMAPpings for
         * PCI passthrough, but not map ISA space.  The ISA
@@@ -1929,29 -1929,6 +1929,6 @@@ static void xen_set_fixmap(unsigned idx
  #endif
  }
  
- void __init xen_ident_map_ISA(void)
- {
-       unsigned long pa;
-       /*
-        * If we're dom0, then linear map the ISA machine addresses into
-        * the kernel's address space.
-        */
-       if (!xen_initial_domain())
-               return;
-       xen_raw_printk("Xen: setup ISA identity maps\n");
-       for (pa = ISA_START_ADDRESS; pa < ISA_END_ADDRESS; pa += PAGE_SIZE) {
-               pte_t pte = mfn_pte(PFN_DOWN(pa), PAGE_KERNEL_IO);
-               if (HYPERVISOR_update_va_mapping(PAGE_OFFSET + pa, pte, 0))
-                       BUG();
-       }
-       xen_flush_tlb();
- }
  static void __init xen_post_allocator_init(void)
  {
        pv_mmu_ops.set_pte = xen_set_pte;