forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 297b60346df8beafee954a0fd7c2d64f33f3b9bc
kernel/arch/x86/mm/highmem_32.c
....@@ -1,45 +1,13 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 #include <linux/highmem.h>
23 #include <linux/export.h>
34 #include <linux/swap.h> /* for totalram_pages */
4
-#include <linux/bootmem.h>
5
+#include <linux/memblock.h>
56
6
-void *kmap(struct page *page)
7
-{
8
- might_sleep();
9
- if (!PageHighMem(page))
10
- return page_address(page);
11
- return kmap_high(page);
12
-}
13
-EXPORT_SYMBOL(kmap);
14
-
15
-void kunmap(struct page *page)
16
-{
17
- if (in_interrupt())
18
- BUG();
19
- if (!PageHighMem(page))
20
- return;
21
- kunmap_high(page);
22
-}
23
-EXPORT_SYMBOL(kunmap);
24
-
25
-/*
26
- * kmap_atomic/kunmap_atomic is significantly faster than kmap/kunmap because
27
- * no global lock is needed and because the kmap code must perform a global TLB
28
- * invalidation when the kmap pool wraps.
29
- *
30
- * However when holding an atomic kmap it is not legal to sleep, so atomic
31
- * kmaps are appropriate for short, tight code paths only.
32
- */
33
-void *kmap_atomic_prot(struct page *page, pgprot_t prot)
7
+void *kmap_atomic_high_prot(struct page *page, pgprot_t prot)
348 {
359 unsigned long vaddr;
3610 int idx, type;
37
-
38
- preempt_disable();
39
- pagefault_disable();
40
-
41
- if (!PageHighMem(page))
42
- return page_address(page);
4311
4412 type = kmap_atomic_idx_push();
4513 idx = type + KM_TYPE_NR*smp_processor_id();
....@@ -50,13 +18,7 @@
5018
5119 return (void *)vaddr;
5220 }
53
-EXPORT_SYMBOL(kmap_atomic_prot);
54
-
55
-void *kmap_atomic(struct page *page)
56
-{
57
- return kmap_atomic_prot(page, kmap_prot);
58
-}
59
-EXPORT_SYMBOL(kmap_atomic);
21
+EXPORT_SYMBOL(kmap_atomic_high_prot);
6022
6123 /*
6224 * This is the same as kmap_atomic() but can map memory that doesn't
....@@ -68,7 +30,7 @@
6830 }
6931 EXPORT_SYMBOL_GPL(kmap_atomic_pfn);
7032
71
-void __kunmap_atomic(void *kvaddr)
33
+void kunmap_atomic_high(void *kvaddr)
7234 {
7335 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
7436
....@@ -98,11 +60,8 @@
9860 BUG_ON(vaddr >= (unsigned long)high_memory);
9961 }
10062 #endif
101
-
102
- pagefault_enable();
103
- preempt_enable();
10463 }
105
-EXPORT_SYMBOL(__kunmap_atomic);
64
+EXPORT_SYMBOL(kunmap_atomic_high);
10665
10766 void __init set_highmem_pages_init(void)
10867 {
....@@ -111,7 +70,7 @@
11170
11271 /*
11372 * Explicitly reset zone->managed_pages because set_highmem_pages_init()
114
- * is invoked before free_all_bootmem()
73
+ * is invoked before memblock_free_all()
11574 */
11675 reset_all_zones_managed_pages();
11776 for_each_zone(zone) {