You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'kmap_atomic' of git://github.com/congwang/linux
Pull kmap_atomic cleanup from Cong Wang. It's been in -next for a long time, and it gets rid of the (no longer used) second argument to k[un]map_atomic(). Fix up a few trivial conflicts in various drivers, and do an "evil merge" to catch some new uses that have come in since Cong's tree. * 'kmap_atomic' of git://github.com/congwang/linux: (59 commits) feature-removal-schedule.txt: schedule the deprecated form of kmap_atomic() for removal highmem: kill all __kmap_atomic() [swarren@nvidia.com: highmem: Fix ARM build break due to __kmap_atomic rename] drbd: remove the second argument of k[un]map_atomic() zcache: remove the second argument of k[un]map_atomic() gma500: remove the second argument of k[un]map_atomic() dm: remove the second argument of k[un]map_atomic() tomoyo: remove the second argument of k[un]map_atomic() sunrpc: remove the second argument of k[un]map_atomic() rds: remove the second argument of k[un]map_atomic() net: remove the second argument of k[un]map_atomic() mm: remove the second argument of k[un]map_atomic() lib: remove the second argument of k[un]map_atomic() power: remove the second argument of k[un]map_atomic() kdb: remove the second argument of k[un]map_atomic() udf: remove the second argument of k[un]map_atomic() ubifs: remove the second argument of k[un]map_atomic() squashfs: remove the second argument of k[un]map_atomic() reiserfs: remove the second argument of k[un]map_atomic() ocfs2: remove the second argument of k[un]map_atomic() ntfs: remove the second argument of k[un]map_atomic() ...
This commit is contained in:
@@ -535,3 +535,11 @@ Why: This driver provides support for USB storage devices like "USB
|
||||
(CONFIG_USB_STORAGE) which only drawback is the additional SCSI
|
||||
stack.
|
||||
Who: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: kmap_atomic(page, km_type)
|
||||
When: 3.5
|
||||
Why: The old kmap_atomic() with two arguments is deprecated, we only
|
||||
keep it for backward compatibility for few cycles and then drop it.
|
||||
Who: Cong Wang <amwang@redhat.com>
|
||||
|
||||
@@ -57,7 +57,7 @@ static inline void *kmap_high_get(struct page *page)
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
extern void *kmap(struct page *page);
|
||||
extern void kunmap(struct page *page);
|
||||
extern void *__kmap_atomic(struct page *page);
|
||||
extern void *kmap_atomic(struct page *page);
|
||||
extern void __kunmap_atomic(void *kvaddr);
|
||||
extern void *kmap_atomic_pfn(unsigned long pfn);
|
||||
extern struct page *kmap_atomic_to_page(const void *ptr);
|
||||
|
||||
@@ -44,11 +44,11 @@ void fa_copy_user_highpage(struct page *to, struct page *from,
|
||||
{
|
||||
void *kto, *kfrom;
|
||||
|
||||
kto = kmap_atomic(to, KM_USER0);
|
||||
kfrom = kmap_atomic(from, KM_USER1);
|
||||
kto = kmap_atomic(to);
|
||||
kfrom = kmap_atomic(from);
|
||||
fa_copy_user_page(kto, kfrom);
|
||||
kunmap_atomic(kfrom, KM_USER1);
|
||||
kunmap_atomic(kto, KM_USER0);
|
||||
kunmap_atomic(kfrom);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -58,7 +58,7 @@ void fa_copy_user_highpage(struct page *to, struct page *from,
|
||||
*/
|
||||
void fa_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile("\
|
||||
mov r1, %2 @ 1\n\
|
||||
mov r2, #0 @ 1\n\
|
||||
@@ -77,7 +77,7 @@ void fa_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 32)
|
||||
: "r1", "r2", "r3", "ip", "lr");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns fa_user_fns __initdata = {
|
||||
|
||||
@@ -72,17 +72,17 @@ void feroceon_copy_user_highpage(struct page *to, struct page *from,
|
||||
{
|
||||
void *kto, *kfrom;
|
||||
|
||||
kto = kmap_atomic(to, KM_USER0);
|
||||
kfrom = kmap_atomic(from, KM_USER1);
|
||||
kto = kmap_atomic(to);
|
||||
kfrom = kmap_atomic(from);
|
||||
flush_cache_page(vma, vaddr, page_to_pfn(from));
|
||||
feroceon_copy_user_page(kto, kfrom);
|
||||
kunmap_atomic(kfrom, KM_USER1);
|
||||
kunmap_atomic(kto, KM_USER0);
|
||||
kunmap_atomic(kfrom);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
void feroceon_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile ("\
|
||||
mov r1, %2 \n\
|
||||
mov r2, #0 \n\
|
||||
@@ -102,7 +102,7 @@ void feroceon_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 32)
|
||||
: "r1", "r2", "r3", "r4", "r5", "r6", "r7", "ip", "lr");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns feroceon_user_fns __initdata = {
|
||||
|
||||
@@ -42,11 +42,11 @@ void v3_copy_user_highpage(struct page *to, struct page *from,
|
||||
{
|
||||
void *kto, *kfrom;
|
||||
|
||||
kto = kmap_atomic(to, KM_USER0);
|
||||
kfrom = kmap_atomic(from, KM_USER1);
|
||||
kto = kmap_atomic(to);
|
||||
kfrom = kmap_atomic(from);
|
||||
v3_copy_user_page(kto, kfrom);
|
||||
kunmap_atomic(kfrom, KM_USER1);
|
||||
kunmap_atomic(kto, KM_USER0);
|
||||
kunmap_atomic(kfrom);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -56,7 +56,7 @@ void v3_copy_user_highpage(struct page *to, struct page *from,
|
||||
*/
|
||||
void v3_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile("\n\
|
||||
mov r1, %2 @ 1\n\
|
||||
mov r2, #0 @ 1\n\
|
||||
@@ -72,7 +72,7 @@ void v3_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 64)
|
||||
: "r1", "r2", "r3", "ip", "lr");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns v3_user_fns __initdata = {
|
||||
|
||||
@@ -71,7 +71,7 @@ mc_copy_user_page(void *from, void *to)
|
||||
void v4_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma)
|
||||
{
|
||||
void *kto = kmap_atomic(to, KM_USER1);
|
||||
void *kto = kmap_atomic(to);
|
||||
|
||||
if (!test_and_set_bit(PG_dcache_clean, &from->flags))
|
||||
__flush_dcache_page(page_mapping(from), from);
|
||||
@@ -85,7 +85,7 @@ void v4_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
|
||||
raw_spin_unlock(&minicache_lock);
|
||||
|
||||
kunmap_atomic(kto, KM_USER1);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -93,7 +93,7 @@ void v4_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
*/
|
||||
void v4_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile("\
|
||||
mov r1, %2 @ 1\n\
|
||||
mov r2, #0 @ 1\n\
|
||||
@@ -111,7 +111,7 @@ void v4_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 64)
|
||||
: "r1", "r2", "r3", "ip", "lr");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns v4_mc_user_fns __initdata = {
|
||||
|
||||
@@ -52,12 +52,12 @@ void v4wb_copy_user_highpage(struct page *to, struct page *from,
|
||||
{
|
||||
void *kto, *kfrom;
|
||||
|
||||
kto = kmap_atomic(to, KM_USER0);
|
||||
kfrom = kmap_atomic(from, KM_USER1);
|
||||
kto = kmap_atomic(to);
|
||||
kfrom = kmap_atomic(from);
|
||||
flush_cache_page(vma, vaddr, page_to_pfn(from));
|
||||
v4wb_copy_user_page(kto, kfrom);
|
||||
kunmap_atomic(kfrom, KM_USER1);
|
||||
kunmap_atomic(kto, KM_USER0);
|
||||
kunmap_atomic(kfrom);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -67,7 +67,7 @@ void v4wb_copy_user_highpage(struct page *to, struct page *from,
|
||||
*/
|
||||
void v4wb_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile("\
|
||||
mov r1, %2 @ 1\n\
|
||||
mov r2, #0 @ 1\n\
|
||||
@@ -86,7 +86,7 @@ void v4wb_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 64)
|
||||
: "r1", "r2", "r3", "ip", "lr");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns v4wb_user_fns __initdata = {
|
||||
|
||||
@@ -48,11 +48,11 @@ void v4wt_copy_user_highpage(struct page *to, struct page *from,
|
||||
{
|
||||
void *kto, *kfrom;
|
||||
|
||||
kto = kmap_atomic(to, KM_USER0);
|
||||
kfrom = kmap_atomic(from, KM_USER1);
|
||||
kto = kmap_atomic(to);
|
||||
kfrom = kmap_atomic(from);
|
||||
v4wt_copy_user_page(kto, kfrom);
|
||||
kunmap_atomic(kfrom, KM_USER1);
|
||||
kunmap_atomic(kto, KM_USER0);
|
||||
kunmap_atomic(kfrom);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -62,7 +62,7 @@ void v4wt_copy_user_highpage(struct page *to, struct page *from,
|
||||
*/
|
||||
void v4wt_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile("\
|
||||
mov r1, %2 @ 1\n\
|
||||
mov r2, #0 @ 1\n\
|
||||
@@ -79,7 +79,7 @@ void v4wt_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 64)
|
||||
: "r1", "r2", "r3", "ip", "lr");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns v4wt_user_fns __initdata = {
|
||||
|
||||
@@ -38,11 +38,11 @@ static void v6_copy_user_highpage_nonaliasing(struct page *to,
|
||||
{
|
||||
void *kto, *kfrom;
|
||||
|
||||
kfrom = kmap_atomic(from, KM_USER0);
|
||||
kto = kmap_atomic(to, KM_USER1);
|
||||
kfrom = kmap_atomic(from);
|
||||
kto = kmap_atomic(to);
|
||||
copy_page(kto, kfrom);
|
||||
kunmap_atomic(kto, KM_USER1);
|
||||
kunmap_atomic(kfrom, KM_USER0);
|
||||
kunmap_atomic(kto);
|
||||
kunmap_atomic(kfrom);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -51,9 +51,9 @@ static void v6_copy_user_highpage_nonaliasing(struct page *to,
|
||||
*/
|
||||
static void v6_clear_user_highpage_nonaliasing(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *kaddr = kmap_atomic(page);
|
||||
clear_page(kaddr);
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -75,12 +75,12 @@ void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
{
|
||||
void *kto, *kfrom;
|
||||
|
||||
kto = kmap_atomic(to, KM_USER0);
|
||||
kfrom = kmap_atomic(from, KM_USER1);
|
||||
kto = kmap_atomic(to);
|
||||
kfrom = kmap_atomic(from);
|
||||
flush_cache_page(vma, vaddr, page_to_pfn(from));
|
||||
xsc3_mc_copy_user_page(kto, kfrom);
|
||||
kunmap_atomic(kfrom, KM_USER1);
|
||||
kunmap_atomic(kto, KM_USER0);
|
||||
kunmap_atomic(kfrom);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -90,7 +90,7 @@ void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
*/
|
||||
void xsc3_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile ("\
|
||||
mov r1, %2 \n\
|
||||
mov r2, #0 \n\
|
||||
@@ -105,7 +105,7 @@ void xsc3_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 32)
|
||||
: "r1", "r2", "r3");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns xsc3_mc_user_fns __initdata = {
|
||||
|
||||
@@ -93,7 +93,7 @@ mc_copy_user_page(void *from, void *to)
|
||||
void xscale_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma)
|
||||
{
|
||||
void *kto = kmap_atomic(to, KM_USER1);
|
||||
void *kto = kmap_atomic(to);
|
||||
|
||||
if (!test_and_set_bit(PG_dcache_clean, &from->flags))
|
||||
__flush_dcache_page(page_mapping(from), from);
|
||||
@@ -107,7 +107,7 @@ void xscale_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
|
||||
raw_spin_unlock(&minicache_lock);
|
||||
|
||||
kunmap_atomic(kto, KM_USER1);
|
||||
kunmap_atomic(kto);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -116,7 +116,7 @@ void xscale_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
void
|
||||
xscale_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
{
|
||||
void *ptr, *kaddr = kmap_atomic(page, KM_USER0);
|
||||
void *ptr, *kaddr = kmap_atomic(page);
|
||||
asm volatile(
|
||||
"mov r1, %2 \n\
|
||||
mov r2, #0 \n\
|
||||
@@ -133,7 +133,7 @@ xscale_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||
: "=r" (ptr)
|
||||
: "0" (kaddr), "I" (PAGE_SIZE / 32)
|
||||
: "r1", "r2", "r3", "ip");
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
struct cpu_user_fns xscale_mc_user_fns __initdata = {
|
||||
|
||||
@@ -36,7 +36,7 @@ void kunmap(struct page *page)
|
||||
}
|
||||
EXPORT_SYMBOL(kunmap);
|
||||
|
||||
void *__kmap_atomic(struct page *page)
|
||||
void *kmap_atomic(struct page *page)
|
||||
{
|
||||
unsigned int idx;
|
||||
unsigned long vaddr;
|
||||
@@ -81,7 +81,7 @@ void *__kmap_atomic(struct page *page)
|
||||
|
||||
return (void *)vaddr;
|
||||
}
|
||||
EXPORT_SYMBOL(__kmap_atomic);
|
||||
EXPORT_SYMBOL(kmap_atomic);
|
||||
|
||||
void __kunmap_atomic(void *kvaddr)
|
||||
{
|
||||
|
||||
@@ -157,7 +157,7 @@ static inline void kunmap_atomic_primary(void *kvaddr, enum km_type type)
|
||||
pagefault_enable();
|
||||
}
|
||||
|
||||
void *__kmap_atomic(struct page *page);
|
||||
void *kmap_atomic(struct page *page);
|
||||
void __kunmap_atomic(void *kvaddr);
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
@@ -37,7 +37,7 @@ struct page *kmap_atomic_to_page(void *ptr)
|
||||
return virt_to_page(ptr);
|
||||
}
|
||||
|
||||
void *__kmap_atomic(struct page *page)
|
||||
void *kmap_atomic(struct page *page)
|
||||
{
|
||||
unsigned long paddr;
|
||||
int type;
|
||||
@@ -64,7 +64,7 @@ void *__kmap_atomic(struct page *page)
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(__kmap_atomic);
|
||||
EXPORT_SYMBOL(kmap_atomic);
|
||||
|
||||
void __kunmap_atomic(void *kvaddr)
|
||||
{
|
||||
|
||||
@@ -47,7 +47,7 @@ extern void kunmap_high(struct page *page);
|
||||
|
||||
extern void *kmap(struct page *page);
|
||||
extern void kunmap(struct page *page);
|
||||
extern void *__kmap_atomic(struct page *page);
|
||||
extern void *kmap_atomic(struct page *page);
|
||||
extern void __kunmap_atomic(void *kvaddr);
|
||||
extern void *kmap_atomic_pfn(unsigned long pfn);
|
||||
extern struct page *kmap_atomic_to_page(void *ptr);
|
||||
|
||||
@@ -498,7 +498,7 @@ static inline void local_r4k_flush_cache_page(void *args)
|
||||
if (map_coherent)
|
||||
vaddr = kmap_coherent(page, addr);
|
||||
else
|
||||
vaddr = kmap_atomic(page, KM_USER0);
|
||||
vaddr = kmap_atomic(page);
|
||||
addr = (unsigned long)vaddr;
|
||||
}
|
||||
|
||||
@@ -521,7 +521,7 @@ static inline void local_r4k_flush_cache_page(void *args)
|
||||
if (map_coherent)
|
||||
kunmap_coherent();
|
||||
else
|
||||
kunmap_atomic(vaddr, KM_USER0);
|
||||
kunmap_atomic(vaddr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ EXPORT_SYMBOL(kunmap);
|
||||
* kmaps are appropriate for short, tight code paths only.
|
||||
*/
|
||||
|
||||
void *__kmap_atomic(struct page *page)
|
||||
void *kmap_atomic(struct page *page)
|
||||
{
|
||||
unsigned long vaddr;
|
||||
int idx, type;
|
||||
@@ -62,7 +62,7 @@ void *__kmap_atomic(struct page *page)
|
||||
|
||||
return (void*) vaddr;
|
||||
}
|
||||
EXPORT_SYMBOL(__kmap_atomic);
|
||||
EXPORT_SYMBOL(kmap_atomic);
|
||||
|
||||
void __kunmap_atomic(void *kvaddr)
|
||||
{
|
||||
|
||||
+4
-4
@@ -207,21 +207,21 @@ void copy_user_highpage(struct page *to, struct page *from,
|
||||
{
|
||||
void *vfrom, *vto;
|
||||
|
||||
vto = kmap_atomic(to, KM_USER1);
|
||||
vto = kmap_atomic(to);
|
||||
if (cpu_has_dc_aliases &&
|
||||
page_mapped(from) && !Page_dcache_dirty(from)) {
|
||||
vfrom = kmap_coherent(from, vaddr);
|
||||
copy_page(vto, vfrom);
|
||||
kunmap_coherent();
|
||||
} else {
|
||||
vfrom = kmap_atomic(from, KM_USER0);
|
||||
vfrom = kmap_atomic(from);
|
||||
copy_page(vto, vfrom);
|
||||
kunmap_atomic(vfrom, KM_USER0);
|
||||
kunmap_atomic(vfrom);
|
||||
}
|
||||
if ((!cpu_has_ic_fills_f_dc) ||
|
||||
pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK))
|
||||
flush_data_cache_page((unsigned long)vto);
|
||||
kunmap_atomic(vto, KM_USER1);
|
||||
kunmap_atomic(vto);
|
||||
/* Make sure this page is cleared on other CPU's too before using it */
|
||||
smp_wmb();
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ static inline void kunmap(struct page *page)
|
||||
* be used in IRQ contexts, so in some (very limited) cases we need
|
||||
* it.
|
||||
*/
|
||||
static inline unsigned long __kmap_atomic(struct page *page)
|
||||
static inline unsigned long kmap_atomic(struct page *page)
|
||||
{
|
||||
unsigned long vaddr;
|
||||
int idx, type;
|
||||
|
||||
@@ -140,7 +140,7 @@ static inline void *kmap(struct page *page)
|
||||
|
||||
#define kunmap(page) kunmap_parisc(page_address(page))
|
||||
|
||||
static inline void *__kmap_atomic(struct page *page)
|
||||
static inline void *kmap_atomic(struct page *page)
|
||||
{
|
||||
pagefault_disable();
|
||||
return page_address(page);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user