forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/arch/powerpc/mm/highmem.c
....@@ -24,54 +24,35 @@
2424 #include <linux/highmem.h>
2525 #include <linux/module.h>
2626
27
-/*
28
- * The use of kmap_atomic/kunmap_atomic is discouraged - kmap/kunmap
29
- * gives a more generic (and caching) interface. But kmap_atomic can
30
- * be used in IRQ contexts, so in some (very limited) cases we need
31
- * it.
32
- */
33
-void *kmap_atomic_prot(struct page *page, pgprot_t prot)
27
+void *kmap_atomic_high_prot(struct page *page, pgprot_t prot)
3428 {
3529 unsigned long vaddr;
3630 int idx, type;
3731
38
- preempt_disable();
39
- pagefault_disable();
40
- if (!PageHighMem(page))
41
- return page_address(page);
42
-
4332 type = kmap_atomic_idx_push();
4433 idx = type + KM_TYPE_NR*smp_processor_id();
4534 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
46
-#ifdef CONFIG_DEBUG_HIGHMEM
47
- BUG_ON(!pte_none(*(kmap_pte-idx)));
48
-#endif
35
+ WARN_ON(IS_ENABLED(CONFIG_DEBUG_HIGHMEM) && !pte_none(*(kmap_pte - idx)));
4936 __set_pte_at(&init_mm, vaddr, kmap_pte-idx, mk_pte(page, prot), 1);
5037 local_flush_tlb_page(NULL, vaddr);
5138
5239 return (void*) vaddr;
5340 }
54
-EXPORT_SYMBOL(kmap_atomic_prot);
41
+EXPORT_SYMBOL(kmap_atomic_high_prot);
5542
56
-void __kunmap_atomic(void *kvaddr)
43
+void kunmap_atomic_high(void *kvaddr)
5744 {
5845 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
59
- int type __maybe_unused;
6046
61
- if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
62
- pagefault_enable();
63
- preempt_enable();
47
+ if (vaddr < __fix_to_virt(FIX_KMAP_END))
6448 return;
65
- }
6649
67
- type = kmap_atomic_idx();
68
-
69
-#ifdef CONFIG_DEBUG_HIGHMEM
70
- {
50
+ if (IS_ENABLED(CONFIG_DEBUG_HIGHMEM)) {
51
+ int type = kmap_atomic_idx();
7152 unsigned int idx;
7253
7354 idx = type + KM_TYPE_NR * smp_processor_id();
74
- BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
55
+ WARN_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
7556
7657 /*
7758 * force other mappings to Oops if they'll try to access
....@@ -80,10 +61,7 @@
8061 pte_clear(&init_mm, vaddr, kmap_pte-idx);
8162 local_flush_tlb_page(NULL, vaddr);
8263 }
83
-#endif
8464
8565 kmap_atomic_idx_pop();
86
- pagefault_enable();
87
- preempt_enable();
8866 }
89
-EXPORT_SYMBOL(__kunmap_atomic);
67
+EXPORT_SYMBOL(kunmap_atomic_high);