ia64/xen-unstable

changeset 2986:6ed0065e2974

bitkeeper revision 1.1159.174.3 (4199eadf9ra8mQPwvvr9Ke8eQfkfIg)

Fix CONFIG_DEBUG_PAGEALLOC. More generally, this fixes
__change_page_attr at the same time (incompatible with writable
pagetables).
author kaf24@freefall.cl.cam.ac.uk
date Tue Nov 16 11:56:15 2004 +0000 (2004-11-16)
parents cc82b01c185b
children 22d7d9cfcc7e
files linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h
line diff
     1.1 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c	Tue Nov 16 11:55:31 2004 +0000
     1.2 +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c	Tue Nov 16 11:56:15 2004 +0000
     1.3 @@ -119,7 +119,7 @@ static int
     1.4  		if ((pte_val(*kpte) & _PAGE_PSE) == 0) { 
     1.5  			pte_t old = *kpte;
     1.6  			pte_t standard = mk_pte(page, PAGE_KERNEL); 
     1.7 -			set_pte_atomic(kpte, mk_pte(page, prot)); 
     1.8 +			set_pte_batched(kpte, mk_pte(page, prot)); 
     1.9  			if (pte_same(old,standard))
    1.10  				get_page(kpte_page);
    1.11  		} else {
    1.12 @@ -130,7 +130,7 @@ static int
    1.13  			set_pmd_pte(kpte,address,mk_pte(split, PAGE_KERNEL));
    1.14  		}	
    1.15  	} else if ((pte_val(*kpte) & _PAGE_PSE) == 0) { 
    1.16 -		set_pte_atomic(kpte, mk_pte(page, PAGE_KERNEL));
    1.17 +		set_pte_batched(kpte, mk_pte(page, PAGE_KERNEL));
    1.18  		__put_page(kpte_page);
    1.19  	}
    1.20  
    1.21 @@ -171,6 +171,7 @@ int change_page_attr(struct page *page, 
    1.22  		if (err) 
    1.23  			break; 
    1.24  	} 	
    1.25 +	flush_page_update_queue();
    1.26  	spin_unlock_irqrestore(&cpa_lock, flags);
    1.27  	return err;
    1.28  }
     2.1 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h	Tue Nov 16 11:55:31 2004 +0000
     2.2 +++ b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h	Tue Nov 16 11:56:15 2004 +0000
     2.3 @@ -23,13 +23,10 @@ static inline int pgd_present(pgd_t pgd)
     2.4   * within a page table are directly modified.  Thus, the following
     2.5   * hook is made available.
     2.6   */
     2.7 -#ifdef CONFIG_XEN_WRITABLE_PAGETABLES
     2.8 +#define set_pte_batched(pteptr, pteval) \
     2.9 +queue_l1_entry_update(pteptr, (pteval).pte_low)
    2.10  #define set_pte(pteptr, pteval) (*(pteptr) = pteval)
    2.11 -#define set_pte_atomic(pteptr, pteval) (*(pteptr) = pteval)
    2.12 -#else
    2.13 -#define set_pte(pteptr, pteval) xen_l1_entry_update(pteptr, (pteval).pte_low)
    2.14 -#define set_pte_atomic(pteptr, pteval) xen_l1_entry_update(pteptr, (pteval).pte_low)
    2.15 -#endif
    2.16 +#define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
    2.17  /*
    2.18   * (pmds are folded into pgds so this doesn't get actually called,
    2.19   * but the define is needed for a generic inline function.)