From 68d3e0580f0322dc4f736346c60dd4bac328d24a Mon Sep 17 00:00:00 2001 From: Jeremy Fitzhardinge Date: Tue, 17 Jun 2008 11:41:59 -0700 Subject: [PATCH] --- yaml --- r: 99839 b: refs/heads/master c: d494a96125c99f1e37b1f831b29b42c9b712ee05 h: refs/heads/master i: 99837: 236837147d5b5218fd0ba0f6234aa2a705bdc791 99835: b3f5a2cb0ed6426ebe508ee52e7e9aaa9b921d68 99831: 762ca6ed07fc8ab7bc7ee7646514c57be14ea94a 99823: 25c92258548e77c6e5e3ac2ac3af8aa4bfaf4e36 99807: f689e2ed2624ee23550e13acdeb525b04cf3a847 99775: 8526bb5be9aa32da2672f24843a12776957ed898 99711: 7b07a8d440b20ce21a608292b3abaa212f7f007a 99583: 1dde88279ddcb6aa6e66d3a88415a35a05938c81 99327: e206a8aecbd055021f8d5408da59f2698ea712aa v: v3 --- [refs] | 2 +- trunk/arch/x86/mm/init_64.c | 9 ++++----- trunk/arch/x86/mm/pgtable.c | 2 +- trunk/arch/x86/mm/pgtable_32.c | 6 +++--- trunk/include/asm-x86/pgtable.h | 3 +++ 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index aaaf528cf99f..882b8d2a019f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7c7e6e07e2a7c0d2d96389f4f0540e44a80ecdaa +refs/heads/master: d494a96125c99f1e37b1f831b29b42c9b712ee05 diff --git a/trunk/arch/x86/mm/init_64.c b/trunk/arch/x86/mm/init_64.c index e5f531949857..74fae8335128 100644 --- a/trunk/arch/x86/mm/init_64.c +++ b/trunk/arch/x86/mm/init_64.c @@ -135,15 +135,15 @@ static __init void *spp_getpage(void) return ptr; } -static void -set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot) +void +set_pte_vaddr(unsigned long vaddr, pte_t new_pte) { pgd_t *pgd; pud_t *pud; pmd_t *pmd; - pte_t *pte, new_pte; + pte_t *pte; - pr_debug("set_pte_phys %lx to %lx\n", vaddr, phys); + pr_debug("set_pte_vaddr %lx to %lx\n", vaddr, native_pte_val(new_pte)); pgd = pgd_offset_k(vaddr); if (pgd_none(*pgd)) { @@ -170,7 +170,6 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot) return; } } - new_pte = pfn_pte(phys >> PAGE_SHIFT, prot); pte = pte_offset_kernel(pmd, vaddr); if (!pte_none(*pte) && pte_val(new_pte) && diff --git a/trunk/arch/x86/mm/pgtable.c b/trunk/arch/x86/mm/pgtable.c index 3ebebe480b53..7498124e30fc 100644 --- a/trunk/arch/x86/mm/pgtable.c +++ b/trunk/arch/x86/mm/pgtable.c @@ -285,6 +285,6 @@ void __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags) BUG(); return; } - set_pte_pfn(address, phys >> PAGE_SHIFT, flags); + set_pte_vaddr(address, pfn_pte(phys >> PAGE_SHIFT, flags)); fixmaps_set++; } diff --git a/trunk/arch/x86/mm/pgtable_32.c b/trunk/arch/x86/mm/pgtable_32.c index 3f97c3c87288..0662f345212f 100644 --- a/trunk/arch/x86/mm/pgtable_32.c +++ b/trunk/arch/x86/mm/pgtable_32.c @@ -71,7 +71,7 @@ void show_mem(void) * Associate a virtual page frame with a given physical page frame * and protection flags for that frame. */ -static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags) +void set_pte_vaddr(unsigned long vaddr, pte_t pteval) { pgd_t *pgd; pud_t *pud; @@ -94,8 +94,8 @@ static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags) return; } pte = pte_offset_kernel(pmd, vaddr); - if (pgprot_val(flags)) - set_pte_present(&init_mm, vaddr, pte, pfn_pte(pfn, flags)); + if (pte_val(pteval)) + set_pte_present(&init_mm, vaddr, pte, pteval); else pte_clear(&init_mm, vaddr, pte); diff --git a/trunk/include/asm-x86/pgtable.h b/trunk/include/asm-x86/pgtable.h index 97c271b2910b..702f2699c6df 100644 --- a/trunk/include/asm-x86/pgtable.h +++ b/trunk/include/asm-x86/pgtable.h @@ -318,6 +318,9 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, unsigned long size, pgprot_t *vma_prot); #endif +/* Install a pte for a particular vaddr in kernel space. */ +void set_pte_vaddr(unsigned long vaddr, pte_t pte); + #ifdef CONFIG_PARAVIRT #include #else /* !CONFIG_PARAVIRT */