mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
merge
This commit is contained in:
commit
37086f1a52
5 files changed
+21
-27
No files matched your search
@@ -286,8 +286,8 @@ void xen_contig_memory(unsigned long vstart, unsigned int order)
|
||||
pmd = pmd_offset(pud, (vstart + (i*PAGE_SIZE)));
|
||||
pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE)));
|
||||
mfn = pte_mfn(*pte);
|
||||
HYPERVISOR_update_va_mapping(
|
||||
vstart + (i*PAGE_SIZE), __pte_ma(0), 0);
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
vstart + (i*PAGE_SIZE), __pte_ma(0), 0));
|
||||
phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] =
|
||||
INVALID_P2M_ENTRY;
|
||||
BUG_ON(HYPERVISOR_dom_mem_op(
|
||||
@@ -300,9 +300,9 @@ void xen_contig_memory(unsigned long vstart, unsigned int order)
|
||||
|
||||
/* 3. Map the new extent in place of old pages. */
|
||||
for (i = 0; i < (1<<order); i++) {
|
||||
HYPERVISOR_update_va_mapping(
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
vstart + (i*PAGE_SIZE),
|
||||
__pte_ma(((mfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL), 0);
|
||||
__pte_ma(((mfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL), 0));
|
||||
xen_machphys_update(mfn+i, (__pa(vstart)>>PAGE_SHIFT)+i);
|
||||
phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = mfn+i;
|
||||
}
|
||||
@@ -345,7 +345,8 @@ unsigned long allocate_empty_lowmem_region(unsigned long pages)
|
||||
#ifdef CONFIG_X86_64
|
||||
xen_l1_entry_update(pte, __pte(0));
|
||||
#else
|
||||
HYPERVISOR_update_va_mapping(vstart + (i*PAGE_SIZE), __pte_ma(0), 0);
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(vstart + (i*PAGE_SIZE),
|
||||
__pte_ma(0), 0));
|
||||
#endif
|
||||
phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] =
|
||||
INVALID_P2M_ENTRY;
|
||||
|
||||
@@ -222,8 +222,8 @@ void pte_free(struct page *pte)
|
||||
unsigned long va = (unsigned long)__va(page_to_pfn(pte)<<PAGE_SHIFT);
|
||||
|
||||
if (!pte_write(*virt_to_ptep(va)))
|
||||
HYPERVISOR_update_va_mapping(
|
||||
va, pfn_pte(page_to_pfn(pte), PAGE_KERNEL), 0);
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
va, pfn_pte(page_to_pfn(pte), PAGE_KERNEL), 0));
|
||||
|
||||
ClearPageForeign(pte);
|
||||
set_page_count(pte, 1);
|
||||
@@ -355,10 +355,10 @@ void pgd_free(pgd_t *pgd)
|
||||
|
||||
if (!pte_write(*ptep)) {
|
||||
xen_pgd_unpin(__pa(pgd));
|
||||
HYPERVISOR_update_va_mapping(
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
(unsigned long)pgd,
|
||||
pfn_pte(virt_to_phys(pgd)>>PAGE_SHIFT, PAGE_KERNEL),
|
||||
0);
|
||||
0));
|
||||
}
|
||||
|
||||
/* in the PAE case user pgd entries are overwritten before usage */
|
||||
@@ -451,9 +451,9 @@ static inline void mm_walk_set_prot(void *pt, pgprot_t flags)
|
||||
|
||||
if (PageHighMem(page))
|
||||
return;
|
||||
HYPERVISOR_update_va_mapping(
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
(unsigned long)__va(pfn << PAGE_SHIFT),
|
||||
pfn_pte(pfn, flags), 0);
|
||||
pfn_pte(pfn, flags), 0));
|
||||
}
|
||||
|
||||
static void mm_walk(struct mm_struct *mm, pgprot_t flags)
|
||||
@@ -492,10 +492,10 @@ void mm_pin(struct mm_struct *mm)
|
||||
spin_lock(&mm->page_table_lock);
|
||||
|
||||
mm_walk(mm, PAGE_KERNEL_RO);
|
||||
HYPERVISOR_update_va_mapping(
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
(unsigned long)mm->pgd,
|
||||
pfn_pte(virt_to_phys(mm->pgd)>>PAGE_SHIFT, PAGE_KERNEL_RO),
|
||||
UVMF_TLB_FLUSH);
|
||||
UVMF_TLB_FLUSH));
|
||||
xen_pgd_pin(__pa(mm->pgd));
|
||||
mm->context.pinned = 1;
|
||||
spin_lock(&mm_unpinned_lock);
|
||||
@@ -510,9 +510,9 @@ void mm_unpin(struct mm_struct *mm)
|
||||
spin_lock(&mm->page_table_lock);
|
||||
|
||||
xen_pgd_unpin(__pa(mm->pgd));
|
||||
HYPERVISOR_update_va_mapping(
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
(unsigned long)mm->pgd,
|
||||
pfn_pte(virt_to_phys(mm->pgd)>>PAGE_SHIFT, PAGE_KERNEL), 0);
|
||||
pfn_pte(virt_to_phys(mm->pgd)>>PAGE_SHIFT, PAGE_KERNEL), 0));
|
||||
mm_walk(mm, PAGE_KERNEL);
|
||||
xen_tlb_flush();
|
||||
mm->context.pinned = 0;
|
||||
|
||||
@@ -211,11 +211,11 @@ static void balloon_process(void *unused)
|
||||
/* Link back into the page tables if it's not a highmem page. */
|
||||
if ( pfn < max_low_pfn )
|
||||
{
|
||||
HYPERVISOR_update_va_mapping(
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
(unsigned long)__va(pfn << PAGE_SHIFT),
|
||||
__pte_ma((mfn_list[i] << PAGE_SHIFT) |
|
||||
pgprot_val(PAGE_KERNEL)),
|
||||
0);
|
||||
0));
|
||||
}
|
||||
|
||||
/* Finally, relinquish the memory back to the system allocator. */
|
||||
@@ -249,8 +249,8 @@ static void balloon_process(void *unused)
|
||||
{
|
||||
v = phys_to_virt(pfn << PAGE_SHIFT);
|
||||
scrub_pages(v, 1);
|
||||
HYPERVISOR_update_va_mapping(
|
||||
(unsigned long)v, __pte_ma(0), 0);
|
||||
BUG_ON(HYPERVISOR_update_va_mapping(
|
||||
(unsigned long)v, __pte_ma(0), 0));
|
||||
}
|
||||
#ifdef CONFIG_XEN_SCRUB_PAGES
|
||||
else
|
||||
|
||||
@@ -386,13 +386,6 @@ HYPERVISOR_update_va_mapping(
|
||||
"4" (flags)
|
||||
: "memory" );
|
||||
|
||||
if ( unlikely(ret < 0) )
|
||||
{
|
||||
printk(KERN_ALERT "Failed update VA mapping: %08lx, %08lx, %08lx\n",
|
||||
va, (new_val).pte_low, flags);
|
||||
BUG();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
|
||||
do { \
|
||||
if (__dirty) { \
|
||||
if ( likely((__vma)->vm_mm == current->mm) ) { \
|
||||
HYPERVISOR_update_va_mapping((__address), (__entry), UVMF_INVLPG|UVMF_MULTI|(unsigned long)((__vma)->vm_mm->cpu_vm_mask.bits)); \
|
||||
BUG_ON(HYPERVISOR_update_va_mapping((__address), (__entry), UVMF_INVLPG|UVMF_MULTI|(unsigned long)((__vma)->vm_mm->cpu_vm_mask.bits))); \
|
||||
} else { \
|
||||
xen_l1_entry_update((__ptep), (__entry)); \
|
||||
flush_tlb_page((__vma), (__address)); \
|
||||
|
||||