summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2011-02-13 16:52:47 -0500
committerPaul Gortmaker <paul.gortmaker@windriver.com>2011-02-13 16:52:47 -0500
commitde1ff9a0cbf08e8ca6d34da72db62b7c09b2c1e1 (patch)
tree58d66d6bec3cf56cb60e82a9a3504f6307eedeb6
parent622f954c9a709eff1185144207e1cfab4b98f66e (diff)
downloadrt-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.patch79
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