debuggers.hg
changeset 3024: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).
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.)