diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-02-13 16:52:47 -0500 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-02-13 16:52:47 -0500 |
commit | de1ff9a0cbf08e8ca6d34da72db62b7c09b2c1e1 (patch) | |
tree | 58d66d6bec3cf56cb60e82a9a3504f6307eedeb6 | |
parent | 622f954c9a709eff1185144207e1cfab4b98f66e (diff) | |
download | rt-patches-de1ff9a0cbf08e8ca6d34da72db62b7c09b2c1e1.tar.gz |
drop paravirt parts from kmap-atomic-fix-32bit ; see dad52fc0116
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | x86-get-user-pages-kmap-atomic-fix-32bit.patch | 79 |
1 files changed, 13 insertions, 66 deletions
diff --git a/x86-get-user-pages-kmap-atomic-fix-32bit.patch b/x86-get-user-pages-kmap-atomic-fix-32bit.patch index 03a33fd..7f13812 100644 --- a/x86-get-user-pages-kmap-atomic-fix-32bit.patch +++ b/x86-get-user-pages-kmap-atomic-fix-32bit.patch @@ -1,17 +1,18 @@ -From 4c3b055d795ffffcd207fb2cdbbe602a3e01469a Mon Sep 17 00:00:00 2001 +From 172f00812bbad3f1730c7718ee60d9d9978436b4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 3 Jul 2009 08:44:33 -0500 Subject: [PATCH] x86: get user pages kmap atomic fix (32bit) commit 6c8a72dd4bcd3576b6a2758a9ce7e82cb39461df in tip. -[PG: add paravirt_types.h change from big 33rt merge commit] +[PG: add paravirt_types.h change from big 33rt merge commit, then + delete paravirt parts that go away due to upstream dad52fc0116] Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> diff --git a/arch/x86/include/asm/highmem.h b/arch/x86/include/asm/highmem.h -index 42f2449..3a53e85 100644 +index 8391a46..28f471b 100644 --- a/arch/x86/include/asm/highmem.h +++ b/arch/x86/include/asm/highmem.h @@ -64,6 +64,7 @@ void kunmap(struct page *page); @@ -22,17 +23,17 @@ index 42f2449..3a53e85 100644 void __kunmap_atomic(void *kvaddr, enum km_type type); void *__kmap_atomic_pfn(unsigned long pfn, enum km_type type); struct page *__kmap_atomic_to_page(void *ptr); -@@ -77,7 +78,8 @@ void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot); +@@ -76,6 +77,9 @@ void *kmap_atomic_pfn(unsigned long pfn, enum km_type type); + void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot); struct page *kmap_atomic_to_page(void *ptr); - #ifndef CONFIG_PARAVIRT --#define kmap_atomic_pte(page, type) kmap_atomic(page, type) +#define kmap_atomic_pte(page, type) kmap_atomic(page, type) +#define kmap_atomic_pte_direct(page, type) kmap_atomic_direct(page, type) - #endif - ++ #define flush_cache_kmaps() do { } while (0) -@@ -94,12 +96,16 @@ extern void add_highpages_with_active_regions(int nid, unsigned long start_pfn, + + extern void add_highpages_with_active_regions(int nid, unsigned long start_pfn, +@@ -90,12 +94,16 @@ extern void add_highpages_with_active_regions(int nid, unsigned long start_pfn, # define kmap_atomic_pfn(pfn, type) kmap(pfn_to_page(pfn)) # define kunmap_atomic(kvaddr, type) do { pagefault_enable(); kunmap_virt(kvaddr); } while(0) # define kmap_atomic_to_page(kvaddr) kmap_to_page(kvaddr) @@ -49,44 +50,13 @@ index 42f2449..3a53e85 100644 #endif #endif /* __KERNEL__ */ -diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h -index dd59a85..fffef51 100644 ---- a/arch/x86/include/asm/paravirt.h -+++ b/arch/x86/include/asm/paravirt.h -@@ -442,6 +442,14 @@ static inline void *kmap_atomic_pte(struct page *page, enum km_type type) - ret = PVOP_CALL2(unsigned long, pv_mmu_ops.kmap_atomic_pte, page, type); - return (void *)ret; - } -+ -+static inline void *kmap_atomic_pte_direct(struct page *page, enum km_type type) -+{ -+ unsigned long ret; -+ ret = PVOP_CALL2(unsigned long, pv_mmu_ops.kmap_atomic_pte_direct, -+ page, type); -+ return (void *)ret; -+} - #endif - - static inline void pte_update(struct mm_struct *mm, unsigned long addr, -diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h -index b1e70d5..ca14f6c 100644 ---- a/arch/x86/include/asm/paravirt_types.h -+++ b/arch/x86/include/asm/paravirt_types.h -@@ -306,6 +306,7 @@ struct pv_mmu_ops { - - #ifdef CONFIG_HIGHPTE - void *(*kmap_atomic_pte)(struct page *page, enum km_type type); -+ void *(*kmap_atomic_pte_direct)(struct page *page, enum km_type type); - #endif - - struct pv_lazy_ops lazy_mode; diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h -index a286683..f33185a 100644 +index 47339a1..a350daa 100644 --- a/arch/x86/include/asm/pgtable_32.h +++ b/arch/x86/include/asm/pgtable_32.h @@ -59,14 +59,20 @@ extern void set_pmd_pfn(unsigned long, unsigned long, pgprot_t); #define pte_offset_map_nested(dir, address) \ - ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE1) + \ + ((pte_t *)kmap_atomic(pmd_page(*(dir)), KM_PTE1) + \ pte_index((address))) +#define pte_offset_map_direct(dir, address) \ + ((pte_t *)kmap_atomic_pte_direct(pmd_page(*(dir)), __KM_PTE) + \ @@ -122,29 +92,6 @@ index 181be52..3057193 100644 #define update_mmu_cache(vma, address, ptep) do { } while (0) -diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c -index 768a973..024d2c1 100644 ---- a/arch/x86/kernel/paravirt.c -+++ b/arch/x86/kernel/paravirt.c -@@ -404,6 +404,10 @@ static void *kmap_atomic_func(struct page *page, enum km_type idx) - { - return kmap_atomic(page, idx); - } -+static void *kmap_atomic_direct_func(struct page *page, enum km_type idx) -+{ -+ return kmap_atomic_direct(page, idx); -+} - #endif - - struct pv_mmu_ops pv_mmu_ops = { -@@ -440,6 +444,7 @@ struct pv_mmu_ops pv_mmu_ops = { - - #ifdef CONFIG_HIGHPTE - .kmap_atomic_pte = kmap_atomic_func, -+ .kmap_atomic_pte_direct = kmap_atomic_direct_func, - #endif - - #if PAGETABLE_LEVELS >= 3 diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c index 738e659..5aeae53 100644 --- a/arch/x86/mm/gup.c @@ -199,5 +146,5 @@ index 419d8f6..dcb1899 100644 } EXPORT_SYMBOL_GPL(__kmap_atomic_pfn); /* temporarily in use by i915 GEM until vmap */ -- -1.7.1.1 +1.7.0.4 |