2020-05-07 15:02:41

by Ira Weiny

[permalink] [raw]
Subject: [PATCH V3 15/15] kmap: Consolidate kmap_prot definitions

From: Ira Weiny <[email protected]>

Most architectures define kmap_prot to be PAGE_KERNEL.

Let sparc and xtensa define there own and define PAGE_KERNEL as the
default if not overridden.

Suggested-by: Christoph Hellwig <[email protected]>
Signed-off-by: Ira Weiny <[email protected]>

---
Changes from V2:
New Patch for this series
---
arch/arc/include/asm/highmem.h | 3 ---
arch/arm/include/asm/highmem.h | 2 --
arch/csky/include/asm/highmem.h | 2 --
arch/microblaze/include/asm/highmem.h | 1 -
arch/mips/include/asm/highmem.h | 2 --
arch/nds32/include/asm/highmem.h | 1 -
arch/powerpc/include/asm/highmem.h | 1 -
arch/sparc/include/asm/highmem.h | 3 ++-
arch/sparc/mm/highmem.c | 4 ----
arch/x86/include/asm/fixmap.h | 1 -
include/linux/highmem.h | 4 ++++
11 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/arch/arc/include/asm/highmem.h b/arch/arc/include/asm/highmem.h
index 70900a73bfc8..6e5eafb3afdd 100644
--- a/arch/arc/include/asm/highmem.h
+++ b/arch/arc/include/asm/highmem.h
@@ -25,9 +25,6 @@
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
#define PKMAP_NR(virt) (((virt) - PKMAP_BASE) >> PAGE_SHIFT)

-#define kmap_prot PAGE_KERNEL
-
-
#include <asm/cacheflush.h>

extern void kmap_init(void);
diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h
index b0d4bd8dc3c1..31811be38d78 100644
--- a/arch/arm/include/asm/highmem.h
+++ b/arch/arm/include/asm/highmem.h
@@ -10,8 +10,6 @@
#define PKMAP_NR(virt) (((virt) - PKMAP_BASE) >> PAGE_SHIFT)
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))

-#define kmap_prot PAGE_KERNEL
-
#define flush_cache_kmaps() \
do { \
if (cache_is_vivt()) \
diff --git a/arch/csky/include/asm/highmem.h b/arch/csky/include/asm/highmem.h
index ea2f3f39174d..14645e3d5cd5 100644
--- a/arch/csky/include/asm/highmem.h
+++ b/arch/csky/include/asm/highmem.h
@@ -38,8 +38,6 @@ extern void *kmap_atomic_pfn(unsigned long pfn);

extern void kmap_init(void);

-#define kmap_prot PAGE_KERNEL
-
#endif /* __KERNEL__ */

#endif /* __ASM_CSKY_HIGHMEM_H */
diff --git a/arch/microblaze/include/asm/highmem.h b/arch/microblaze/include/asm/highmem.h
index d7c55cfd27bd..284ca8fb54c1 100644
--- a/arch/microblaze/include/asm/highmem.h
+++ b/arch/microblaze/include/asm/highmem.h
@@ -25,7 +25,6 @@
#include <linux/uaccess.h>
#include <asm/fixmap.h>

-#define kmap_prot PAGE_KERNEL
extern pte_t *kmap_pte;
extern pte_t *pkmap_page_table;

diff --git a/arch/mips/include/asm/highmem.h b/arch/mips/include/asm/highmem.h
index 76dec0bd4f59..f1f788b57166 100644
--- a/arch/mips/include/asm/highmem.h
+++ b/arch/mips/include/asm/highmem.h
@@ -54,8 +54,6 @@ extern void *kmap_atomic_pfn(unsigned long pfn);

extern void kmap_init(void);

-#define kmap_prot PAGE_KERNEL
-
#endif /* __KERNEL__ */

#endif /* _ASM_HIGHMEM_H */
diff --git a/arch/nds32/include/asm/highmem.h b/arch/nds32/include/asm/highmem.h
index a48a6536d41a..5717647d14d1 100644
--- a/arch/nds32/include/asm/highmem.h
+++ b/arch/nds32/include/asm/highmem.h
@@ -32,7 +32,6 @@
#define LAST_PKMAP_MASK (LAST_PKMAP - 1)
#define PKMAP_NR(virt) (((virt) - (PKMAP_BASE)) >> PAGE_SHIFT)
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
-#define kmap_prot PAGE_KERNEL

static inline void flush_cache_kmaps(void)
{
diff --git a/arch/powerpc/include/asm/highmem.h b/arch/powerpc/include/asm/highmem.h
index 8d8ee3fcd800..104026f7d6bc 100644
--- a/arch/powerpc/include/asm/highmem.h
+++ b/arch/powerpc/include/asm/highmem.h
@@ -29,7 +29,6 @@
#include <asm/page.h>
#include <asm/fixmap.h>

-#define kmap_prot PAGE_KERNEL
extern pte_t *kmap_pte;
extern pte_t *pkmap_page_table;

diff --git a/arch/sparc/include/asm/highmem.h b/arch/sparc/include/asm/highmem.h
index f4babe67cb5d..37f8694bde84 100644
--- a/arch/sparc/include/asm/highmem.h
+++ b/arch/sparc/include/asm/highmem.h
@@ -25,11 +25,12 @@
#include <asm/vaddrs.h>
#include <asm/kmap_types.h>
#include <asm/pgtable.h>
+#include <asm/pgtsrmmu.h>

/* declarations for highmem.c */
extern unsigned long highstart_pfn, highend_pfn;

-extern pgprot_t kmap_prot;
+#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);
extern pte_t *pkmap_page_table;

void kmap_init(void) __init;
diff --git a/arch/sparc/mm/highmem.c b/arch/sparc/mm/highmem.c
index 414f578d1e57..d237d902f9c3 100644
--- a/arch/sparc/mm/highmem.c
+++ b/arch/sparc/mm/highmem.c
@@ -32,9 +32,6 @@
#include <asm/pgalloc.h>
#include <asm/vaddrs.h>

-pgprot_t kmap_prot;
-EXPORT_SYMBOL(kmap_prot);
-
static pte_t *kmap_pte;

void __init kmap_init(void)
@@ -51,7 +48,6 @@ void __init kmap_init(void)

/* cache the first kmap pte */
kmap_pte = pte_offset_kernel(dir, address);
- kmap_prot = __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);
}

void *kmap_atomic_high_prot(struct page *page, pgprot_t prot)
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index 28183ee3cc42..b9527a54db99 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -152,7 +152,6 @@ extern void reserve_top_address(unsigned long reserve);
extern int fixmaps_set;

extern pte_t *kmap_pte;
-#define kmap_prot PAGE_KERNEL
extern pte_t *pkmap_page_table;

void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index cc0c3904e501..bf470c16cecb 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -40,6 +40,10 @@ extern void kunmap_atomic_high(void *kvaddr);
static inline void kmap_flush_tlb(unsigned long addr) { }
#endif

+#ifndef kmap_prot
+#define kmap_prot PAGE_KERNEL
+#endif
+
void *kmap_high(struct page *page);
static inline void *kmap(struct page *page)
{
--
2.25.1


2020-05-07 20:57:19

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH V3 15/15] kmap: Consolidate kmap_prot definitions

On Thu, 7 May 2020 08:00:03 -0700 [email protected] wrote:

> From: Ira Weiny <[email protected]>
>
> Most architectures define kmap_prot to be PAGE_KERNEL.
>
> Let sparc and xtensa define there own and define PAGE_KERNEL as the
> default if not overridden.
>

checkpatch considered useful ;)


From: Andrew Morton <[email protected]>
Subject: kmap-consolidate-kmap_prot-definitions-checkpatch-fixes

WARNING: macros should not use a trailing semicolon
#134: FILE: arch/sparc/include/asm/highmem.h:33:
+#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);

total: 0 errors, 1 warnings, 100 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.

./patches/kmap-consolidate-kmap_prot-definitions.patch has style problems, please review.

NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.

Please run checkpatch prior to sending patches

Cc: Ira Weiny <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

arch/sparc/include/asm/highmem.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/sparc/include/asm/highmem.h~kmap-consolidate-kmap_prot-definitions-checkpatch-fixes
+++ a/arch/sparc/include/asm/highmem.h
@@ -30,7 +30,7 @@
/* declarations for highmem.c */
extern unsigned long highstart_pfn, highend_pfn;

-#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);
+#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE)
extern pte_t *pkmap_page_table;

void kmap_init(void) __init;
_

2020-05-07 22:54:22

by Ira Weiny

[permalink] [raw]
Subject: [PATCH V3.1] kmap: Consolidate kmap_prot definitions

From: Ira Weiny <[email protected]>

Most architectures define kmap_prot to be PAGE_KERNEL.

Let sparc and xtensa define there own and define PAGE_KERNEL as the
default if not overridden.

Suggested-by: Christoph Hellwig <[email protected]>
Signed-off-by: Ira Weiny <[email protected]>

---
Changes from V3:
Fix semicolon in macro

Changes from V2:
New Patch for this series
---
arch/arc/include/asm/highmem.h | 3 ---
arch/arm/include/asm/highmem.h | 2 --
arch/csky/include/asm/highmem.h | 2 --
arch/microblaze/include/asm/highmem.h | 1 -
arch/mips/include/asm/highmem.h | 2 --
arch/nds32/include/asm/highmem.h | 1 -
arch/powerpc/include/asm/highmem.h | 1 -
arch/sparc/include/asm/highmem.h | 3 ++-
arch/sparc/mm/highmem.c | 4 ----
arch/x86/include/asm/fixmap.h | 1 -
include/linux/highmem.h | 4 ++++
11 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/arch/arc/include/asm/highmem.h b/arch/arc/include/asm/highmem.h
index 70900a73bfc8..6e5eafb3afdd 100644
--- a/arch/arc/include/asm/highmem.h
+++ b/arch/arc/include/asm/highmem.h
@@ -25,9 +25,6 @@
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
#define PKMAP_NR(virt) (((virt) - PKMAP_BASE) >> PAGE_SHIFT)

-#define kmap_prot PAGE_KERNEL
-
-
#include <asm/cacheflush.h>

extern void kmap_init(void);
diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h
index b0d4bd8dc3c1..31811be38d78 100644
--- a/arch/arm/include/asm/highmem.h
+++ b/arch/arm/include/asm/highmem.h
@@ -10,8 +10,6 @@
#define PKMAP_NR(virt) (((virt) - PKMAP_BASE) >> PAGE_SHIFT)
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))

-#define kmap_prot PAGE_KERNEL
-
#define flush_cache_kmaps() \
do { \
if (cache_is_vivt()) \
diff --git a/arch/csky/include/asm/highmem.h b/arch/csky/include/asm/highmem.h
index ea2f3f39174d..14645e3d5cd5 100644
--- a/arch/csky/include/asm/highmem.h
+++ b/arch/csky/include/asm/highmem.h
@@ -38,8 +38,6 @@ extern void *kmap_atomic_pfn(unsigned long pfn);

extern void kmap_init(void);

-#define kmap_prot PAGE_KERNEL
-
#endif /* __KERNEL__ */

#endif /* __ASM_CSKY_HIGHMEM_H */
diff --git a/arch/microblaze/include/asm/highmem.h b/arch/microblaze/include/asm/highmem.h
index d7c55cfd27bd..284ca8fb54c1 100644
--- a/arch/microblaze/include/asm/highmem.h
+++ b/arch/microblaze/include/asm/highmem.h
@@ -25,7 +25,6 @@
#include <linux/uaccess.h>
#include <asm/fixmap.h>

-#define kmap_prot PAGE_KERNEL
extern pte_t *kmap_pte;
extern pte_t *pkmap_page_table;

diff --git a/arch/mips/include/asm/highmem.h b/arch/mips/include/asm/highmem.h
index 76dec0bd4f59..f1f788b57166 100644
--- a/arch/mips/include/asm/highmem.h
+++ b/arch/mips/include/asm/highmem.h
@@ -54,8 +54,6 @@ extern void *kmap_atomic_pfn(unsigned long pfn);

extern void kmap_init(void);

-#define kmap_prot PAGE_KERNEL
-
#endif /* __KERNEL__ */

#endif /* _ASM_HIGHMEM_H */
diff --git a/arch/nds32/include/asm/highmem.h b/arch/nds32/include/asm/highmem.h
index a48a6536d41a..5717647d14d1 100644
--- a/arch/nds32/include/asm/highmem.h
+++ b/arch/nds32/include/asm/highmem.h
@@ -32,7 +32,6 @@
#define LAST_PKMAP_MASK (LAST_PKMAP - 1)
#define PKMAP_NR(virt) (((virt) - (PKMAP_BASE)) >> PAGE_SHIFT)
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
-#define kmap_prot PAGE_KERNEL

static inline void flush_cache_kmaps(void)
{
diff --git a/arch/powerpc/include/asm/highmem.h b/arch/powerpc/include/asm/highmem.h
index 8d8ee3fcd800..104026f7d6bc 100644
--- a/arch/powerpc/include/asm/highmem.h
+++ b/arch/powerpc/include/asm/highmem.h
@@ -29,7 +29,6 @@
#include <asm/page.h>
#include <asm/fixmap.h>

-#define kmap_prot PAGE_KERNEL
extern pte_t *kmap_pte;
extern pte_t *pkmap_page_table;

diff --git a/arch/sparc/include/asm/highmem.h b/arch/sparc/include/asm/highmem.h
index f4babe67cb5d..ddb03c04f1f3 100644
--- a/arch/sparc/include/asm/highmem.h
+++ b/arch/sparc/include/asm/highmem.h
@@ -25,11 +25,12 @@
#include <asm/vaddrs.h>
#include <asm/kmap_types.h>
#include <asm/pgtable.h>
+#include <asm/pgtsrmmu.h>

/* declarations for highmem.c */
extern unsigned long highstart_pfn, highend_pfn;

-extern pgprot_t kmap_prot;
+#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE)
extern pte_t *pkmap_page_table;

void kmap_init(void) __init;
diff --git a/arch/sparc/mm/highmem.c b/arch/sparc/mm/highmem.c
index 414f578d1e57..d237d902f9c3 100644
--- a/arch/sparc/mm/highmem.c
+++ b/arch/sparc/mm/highmem.c
@@ -32,9 +32,6 @@
#include <asm/pgalloc.h>
#include <asm/vaddrs.h>

-pgprot_t kmap_prot;
-EXPORT_SYMBOL(kmap_prot);
-
static pte_t *kmap_pte;

void __init kmap_init(void)
@@ -51,7 +48,6 @@ void __init kmap_init(void)

/* cache the first kmap pte */
kmap_pte = pte_offset_kernel(dir, address);
- kmap_prot = __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);
}

void *kmap_atomic_high_prot(struct page *page, pgprot_t prot)
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index 28183ee3cc42..b9527a54db99 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -152,7 +152,6 @@ extern void reserve_top_address(unsigned long reserve);
extern int fixmaps_set;

extern pte_t *kmap_pte;
-#define kmap_prot PAGE_KERNEL
extern pte_t *pkmap_page_table;

void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index cc0c3904e501..bf470c16cecb 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -40,6 +40,10 @@ extern void kunmap_atomic_high(void *kvaddr);
static inline void kmap_flush_tlb(unsigned long addr) { }
#endif

+#ifndef kmap_prot
+#define kmap_prot PAGE_KERNEL
+#endif
+
void *kmap_high(struct page *page);
static inline void *kmap(struct page *page)
{
--
2.25.1

2020-05-07 22:55:29

by Ira Weiny

[permalink] [raw]
Subject: Re: [PATCH V3 15/15] kmap: Consolidate kmap_prot definitions

On Thu, May 07, 2020 at 01:53:07PM -0700, Andrew Morton wrote:
> On Thu, 7 May 2020 08:00:03 -0700 [email protected] wrote:
>
> > From: Ira Weiny <[email protected]>
> >
> > Most architectures define kmap_prot to be PAGE_KERNEL.
> >
> > Let sparc and xtensa define there own and define PAGE_KERNEL as the
> > default if not overridden.
> >
>
> checkpatch considered useful ;)

Yes sorry... V3.1 on it's way...

Ira

>
>
> From: Andrew Morton <[email protected]>
> Subject: kmap-consolidate-kmap_prot-definitions-checkpatch-fixes
>
> WARNING: macros should not use a trailing semicolon
> #134: FILE: arch/sparc/include/asm/highmem.h:33:
> +#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);
>
> total: 0 errors, 1 warnings, 100 lines checked
>
> NOTE: For some of the reported defects, checkpatch may be able to
> mechanically convert to the typical style using --fix or --fix-inplace.
>
> ./patches/kmap-consolidate-kmap_prot-definitions.patch has style problems, please review.
>
> NOTE: If any of the errors are false positives, please report
> them to the maintainer, see CHECKPATCH in MAINTAINERS.
>
> Please run checkpatch prior to sending patches
>
> Cc: Ira Weiny <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> ---
>
> arch/sparc/include/asm/highmem.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/arch/sparc/include/asm/highmem.h~kmap-consolidate-kmap_prot-definitions-checkpatch-fixes
> +++ a/arch/sparc/include/asm/highmem.h
> @@ -30,7 +30,7 @@
> /* declarations for highmem.c */
> extern unsigned long highstart_pfn, highend_pfn;
>
> -#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);
> +#define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE)
> extern pte_t *pkmap_page_table;
>
> void kmap_init(void) __init;
> _
>