2020-11-13 11:15:22

by Thomas Bogendoerfer

[permalink] [raw]
Subject: [PATCH 1/4] MIPS: vdso: Use vma page protection for remapping

MIPS protection bits are setup during runtime so using defines like
PAGE_READONLY ignores these runtime changes. To fix this we simply
use the page protection of the setup vma.

Signed-off-by: Thomas Bogendoerfer <[email protected]>
---
arch/mips/kernel/vdso.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c
index 242dc5e83847..7d0b91ad2581 100644
--- a/arch/mips/kernel/vdso.c
+++ b/arch/mips/kernel/vdso.c
@@ -161,7 +161,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
gic_pfn = virt_to_phys(mips_gic_base + MIPS_GIC_USER_OFS) >> PAGE_SHIFT;

ret = io_remap_pfn_range(vma, base, gic_pfn, gic_size,
- pgprot_noncached(PAGE_READONLY));
+ pgprot_noncached(vma->vm_page_prot));
if (ret)
goto out;
}
@@ -169,7 +169,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
/* Map data page. */
ret = remap_pfn_range(vma, data_addr,
virt_to_phys(vdso_data) >> PAGE_SHIFT,
- PAGE_SIZE, PAGE_READONLY);
+ PAGE_SIZE, vma->vm_page_prot);
if (ret)
goto out;

--
2.16.4


2020-11-13 11:15:32

by Thomas Bogendoerfer

[permalink] [raw]
Subject: [PATCH 2/4] MIPS: kvm: Use vm_get_page_prot to get protection bits

MIPS protection bits are setup during runtime so using defines like
PAGE_SHARED ignores this runtime changes. Using vm_get_page_prot
to get correct page protection fixes this.

Signed-off-by: Thomas Bogendoerfer <[email protected]>
---
arch/mips/kvm/mmu.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/mips/kvm/mmu.c b/arch/mips/kvm/mmu.c
index 28c366d307e7..3dabeda82458 100644
--- a/arch/mips/kvm/mmu.c
+++ b/arch/mips/kvm/mmu.c
@@ -1074,6 +1074,7 @@ int kvm_mips_handle_commpage_tlb_fault(unsigned long badvaddr,
{
kvm_pfn_t pfn;
pte_t *ptep;
+ pgprot_t prot;

ptep = kvm_trap_emul_pte_for_gva(vcpu, badvaddr);
if (!ptep) {
@@ -1083,7 +1084,8 @@ int kvm_mips_handle_commpage_tlb_fault(unsigned long badvaddr,

pfn = PFN_DOWN(virt_to_phys(vcpu->arch.kseg0_commpage));
/* Also set valid and dirty, so refill handler doesn't have to */
- *ptep = pte_mkyoung(pte_mkdirty(pfn_pte(pfn, PAGE_SHARED)));
+ prot = vm_get_page_prot(VM_READ|VM_WRITE|VM_SHARED);
+ *ptep = pte_mkyoung(pte_mkdirty(pfn_pte(pfn, prot)));

/* Invalidate this entry in the TLB, guest kernel ASID only */
kvm_mips_host_tlb_inv(vcpu, badvaddr, false, true);
--
2.16.4

2020-11-13 11:16:31

by Thomas Bogendoerfer

[permalink] [raw]
Subject: [PATCH 4/4] MIPS: mm: Clean up setup of protection map

Protection map difference between RIXI and non RIXI cpus is _PAGE_NO_EXEC
and _PAGE_NO_READ usage. Both already take care of cpu_has_rixi while
setting up the page bits. So we just need one setup of protection map
and can drop the now unused (and broken for RIXI) PAGE_* defines.

Signed-off-by: Thomas Bogendoerfer <[email protected]>
---
arch/mips/include/asm/pgtable.h | 8 ------
arch/mips/mm/cache.c | 55 ++++++++++++++---------------------------
2 files changed, 18 insertions(+), 45 deletions(-)

diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h
index e5ef0fdd4838..158ba3aa3bf1 100644
--- a/arch/mips/include/asm/pgtable.h
+++ b/arch/mips/include/asm/pgtable.h
@@ -25,14 +25,6 @@
struct mm_struct;
struct vm_area_struct;

-#define PAGE_NONE __pgprot(_PAGE_PRESENT | _PAGE_NO_READ | \
- _page_cachable_default)
-#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_WRITE | \
- _page_cachable_default)
-#define PAGE_COPY __pgprot(_PAGE_PRESENT | _PAGE_NO_EXEC | \
- _page_cachable_default)
-#define PAGE_READONLY __pgprot(_PAGE_PRESENT | \
- _page_cachable_default)
#define PAGE_KERNEL __pgprot(_PAGE_PRESENT | __READABLE | __WRITEABLE | \
_PAGE_GLOBAL | _page_cachable_default)
#define PAGE_KERNEL_NC __pgprot(_PAGE_PRESENT | __READABLE | __WRITEABLE | \
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index f66a8bfc030e..36bcf4e955e8 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -159,43 +159,24 @@ EXPORT_SYMBOL(_page_cachable_default);

static inline void setup_protection_map(void)
{
- if (cpu_has_rixi) {
- protection_map[0] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
- protection_map[1] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
- protection_map[2] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
- protection_map[3] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
- protection_map[4] = PM(_PAGE_PRESENT);
- protection_map[5] = PM(_PAGE_PRESENT);
- protection_map[6] = PM(_PAGE_PRESENT);
- protection_map[7] = PM(_PAGE_PRESENT);
-
- protection_map[8] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
- protection_map[9] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
- protection_map[10] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE | _PAGE_NO_READ);
- protection_map[11] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE);
- protection_map[12] = PM(_PAGE_PRESENT);
- protection_map[13] = PM(_PAGE_PRESENT);
- protection_map[14] = PM(_PAGE_PRESENT | _PAGE_WRITE);
- protection_map[15] = PM(_PAGE_PRESENT | _PAGE_WRITE);
-
- } else {
- protection_map[0] = PAGE_NONE;
- protection_map[1] = PAGE_READONLY;
- protection_map[2] = PAGE_COPY;
- protection_map[3] = PAGE_COPY;
- protection_map[4] = PAGE_READONLY;
- protection_map[5] = PAGE_READONLY;
- protection_map[6] = PAGE_COPY;
- protection_map[7] = PAGE_COPY;
- protection_map[8] = PAGE_NONE;
- protection_map[9] = PAGE_READONLY;
- protection_map[10] = PAGE_SHARED;
- protection_map[11] = PAGE_SHARED;
- protection_map[12] = PAGE_READONLY;
- protection_map[13] = PAGE_READONLY;
- protection_map[14] = PAGE_SHARED;
- protection_map[15] = PAGE_SHARED;
- }
+ protection_map[0] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
+ protection_map[1] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+ protection_map[2] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
+ protection_map[3] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+ protection_map[4] = PM(_PAGE_PRESENT);
+ protection_map[5] = PM(_PAGE_PRESENT);
+ protection_map[6] = PM(_PAGE_PRESENT);
+ protection_map[7] = PM(_PAGE_PRESENT);
+
+ protection_map[8] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
+ protection_map[9] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+ protection_map[10] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE |
+ _PAGE_NO_READ);
+ protection_map[11] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE);
+ protection_map[12] = PM(_PAGE_PRESENT);
+ protection_map[13] = PM(_PAGE_PRESENT);
+ protection_map[14] = PM(_PAGE_PRESENT | _PAGE_WRITE);
+ protection_map[15] = PM(_PAGE_PRESENT | _PAGE_WRITE);
}

#undef PM
--
2.16.4

2020-11-13 11:18:09

by Thomas Bogendoerfer

[permalink] [raw]
Subject: [PATCH 3/4] MIPS: mm: shorten lines by using macro

Introduce helper macro to make lines shorter.

Signed-off-by: Thomas Bogendoerfer <[email protected]>
---
arch/mips/mm/cache.c | 38 +++++++++++++++++++++-----------------
1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 3e81ba000096..f66a8bfc030e 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -155,26 +155,28 @@ void __update_cache(unsigned long address, pte_t pte)
unsigned long _page_cachable_default;
EXPORT_SYMBOL(_page_cachable_default);

+#define PM(p) __pgprot(_page_cachable_default | (p))
+
static inline void setup_protection_map(void)
{
if (cpu_has_rixi) {
- protection_map[0] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
- protection_map[1] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC);
- protection_map[2] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
- protection_map[3] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC);
- protection_map[4] = __pgprot(_page_cachable_default | _PAGE_PRESENT);
- protection_map[5] = __pgprot(_page_cachable_default | _PAGE_PRESENT);
- protection_map[6] = __pgprot(_page_cachable_default | _PAGE_PRESENT);
- protection_map[7] = __pgprot(_page_cachable_default | _PAGE_PRESENT);
-
- protection_map[8] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
- protection_map[9] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC);
- protection_map[10] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE | _PAGE_NO_READ);
- protection_map[11] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE);
- protection_map[12] = __pgprot(_page_cachable_default | _PAGE_PRESENT);
- protection_map[13] = __pgprot(_page_cachable_default | _PAGE_PRESENT);
- protection_map[14] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_WRITE);
- protection_map[15] = __pgprot(_page_cachable_default | _PAGE_PRESENT | _PAGE_WRITE);
+ protection_map[0] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
+ protection_map[1] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+ protection_map[2] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
+ protection_map[3] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+ protection_map[4] = PM(_PAGE_PRESENT);
+ protection_map[5] = PM(_PAGE_PRESENT);
+ protection_map[6] = PM(_PAGE_PRESENT);
+ protection_map[7] = PM(_PAGE_PRESENT);
+
+ protection_map[8] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
+ protection_map[9] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+ protection_map[10] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE | _PAGE_NO_READ);
+ protection_map[11] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE);
+ protection_map[12] = PM(_PAGE_PRESENT);
+ protection_map[13] = PM(_PAGE_PRESENT);
+ protection_map[14] = PM(_PAGE_PRESENT | _PAGE_WRITE);
+ protection_map[15] = PM(_PAGE_PRESENT | _PAGE_WRITE);

} else {
protection_map[0] = PAGE_NONE;
@@ -196,6 +198,8 @@ static inline void setup_protection_map(void)
}
}

+#undef PM
+
void cpu_cache_init(void)
{
if (cpu_has_3k_cache) {
--
2.16.4

2020-11-14 07:39:08

by Huacai Chen

[permalink] [raw]
Subject: Re: [PATCH 2/4] MIPS: kvm: Use vm_get_page_prot to get protection bits

Hi, Thomas,

On Fri, Nov 13, 2020 at 7:13 PM Thomas Bogendoerfer
<[email protected]> wrote:
>
> MIPS protection bits are setup during runtime so using defines like
> PAGE_SHARED ignores this runtime changes. Using vm_get_page_prot
> to get correct page protection fixes this.
Is there some visible bugs if without this fix?

Huacai
>
> Signed-off-by: Thomas Bogendoerfer <[email protected]>
> ---
> arch/mips/kvm/mmu.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/mips/kvm/mmu.c b/arch/mips/kvm/mmu.c
> index 28c366d307e7..3dabeda82458 100644
> --- a/arch/mips/kvm/mmu.c
> +++ b/arch/mips/kvm/mmu.c
> @@ -1074,6 +1074,7 @@ int kvm_mips_handle_commpage_tlb_fault(unsigned long badvaddr,
> {
> kvm_pfn_t pfn;
> pte_t *ptep;
> + pgprot_t prot;
>
> ptep = kvm_trap_emul_pte_for_gva(vcpu, badvaddr);
> if (!ptep) {
> @@ -1083,7 +1084,8 @@ int kvm_mips_handle_commpage_tlb_fault(unsigned long badvaddr,
>
> pfn = PFN_DOWN(virt_to_phys(vcpu->arch.kseg0_commpage));
> /* Also set valid and dirty, so refill handler doesn't have to */
> - *ptep = pte_mkyoung(pte_mkdirty(pfn_pte(pfn, PAGE_SHARED)));
> + prot = vm_get_page_prot(VM_READ|VM_WRITE|VM_SHARED);
> + *ptep = pte_mkyoung(pte_mkdirty(pfn_pte(pfn, prot)));
>
> /* Invalidate this entry in the TLB, guest kernel ASID only */
> kvm_mips_host_tlb_inv(vcpu, badvaddr, false, true);
> --
> 2.16.4
>

2020-11-16 12:35:25

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 2/4] MIPS: kvm: Use vm_get_page_prot to get protection bits

On Sat, Nov 14, 2020 at 03:34:14PM +0800, Huacai Chen wrote:
> Hi, Thomas,
>
> On Fri, Nov 13, 2020 at 7:13 PM Thomas Bogendoerfer
> <[email protected]> wrote:
> >
> > MIPS protection bits are setup during runtime so using defines like
> > PAGE_SHARED ignores this runtime changes. Using vm_get_page_prot
> > to get correct page protection fixes this.
> Is there some visible bugs if without this fix?

no exec isn't enabled for these mappings, if cpu supports it.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]

2020-11-17 01:22:38

by Huacai Chen

[permalink] [raw]
Subject: Re: [PATCH 2/4] MIPS: kvm: Use vm_get_page_prot to get protection bits

Hi, Thomas,

On Mon, Nov 16, 2020 at 8:35 PM Thomas Bogendoerfer
<[email protected]> wrote:
>
> On Sat, Nov 14, 2020 at 03:34:14PM +0800, Huacai Chen wrote:
> > Hi, Thomas,
> >
> > On Fri, Nov 13, 2020 at 7:13 PM Thomas Bogendoerfer
> > <[email protected]> wrote:
> > >
> > > MIPS protection bits are setup during runtime so using defines like
> > > PAGE_SHARED ignores this runtime changes. Using vm_get_page_prot
> > > to get correct page protection fixes this.
> > Is there some visible bugs if without this fix?
>
> no exec isn't enabled for these mappings, if cpu supports it.
The whole series wants to set XI if supported?

Huacai


Huacai

>
> Thomas.
>
> --
> Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
> good idea. [ RFC1925, 2.3 ]

2020-11-17 10:42:54

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 2/4] MIPS: kvm: Use vm_get_page_prot to get protection bits

On Tue, Nov 17, 2020 at 09:18:15AM +0800, Huacai Chen wrote:
> Hi, Thomas,
>
> On Mon, Nov 16, 2020 at 8:35 PM Thomas Bogendoerfer
> <[email protected]> wrote:
> >
> > On Sat, Nov 14, 2020 at 03:34:14PM +0800, Huacai Chen wrote:
> > > Hi, Thomas,
> > >
> > > On Fri, Nov 13, 2020 at 7:13 PM Thomas Bogendoerfer
> > > <[email protected]> wrote:
> > > >
> > > > MIPS protection bits are setup during runtime so using defines like
> > > > PAGE_SHARED ignores this runtime changes. Using vm_get_page_prot
> > > > to get correct page protection fixes this.
> > > Is there some visible bugs if without this fix?
> >
> > no exec isn't enabled for these mappings, if cpu supports it.
> The whole series wants to set XI if supported?

that and RI where possible. I want to get rid of the PAGE_* defines,
because they lead to forgetting about RI and XI protection map setup,
which doesn't use the defines and would need another set of defines.
So by using only protection_map[] everything goes via one place.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]

2020-11-19 12:57:17

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 1/4] MIPS: vdso: Use vma page protection for remapping

On Fri, Nov 13, 2020 at 12:09:49PM +0100, Thomas Bogendoerfer wrote:
> MIPS protection bits are setup during runtime so using defines like
> PAGE_READONLY ignores these runtime changes. To fix this we simply
> use the page protection of the setup vma.
>
> Signed-off-by: Thomas Bogendoerfer <[email protected]>
> ---
> arch/mips/kernel/vdso.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

applied to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]

2020-11-19 12:58:06

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 3/4] MIPS: mm: shorten lines by using macro

On Fri, Nov 13, 2020 at 12:09:51PM +0100, Thomas Bogendoerfer wrote:
> Introduce helper macro to make lines shorter.
>
> Signed-off-by: Thomas Bogendoerfer <[email protected]>
> ---
> arch/mips/mm/cache.c | 38 +++++++++++++++++++++-----------------
> 1 file changed, 21 insertions(+), 17 deletions(-)

applied to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]

2020-11-19 12:59:25

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 2/4] MIPS: kvm: Use vm_get_page_prot to get protection bits

On Fri, Nov 13, 2020 at 12:09:50PM +0100, Thomas Bogendoerfer wrote:
> MIPS protection bits are setup during runtime so using defines like
> PAGE_SHARED ignores this runtime changes. Using vm_get_page_prot
> to get correct page protection fixes this.
>
> Signed-off-by: Thomas Bogendoerfer <[email protected]>
> ---
> arch/mips/kvm/mmu.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)

applied to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]

2020-11-19 13:00:10

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 4/4] MIPS: mm: Clean up setup of protection map

On Fri, Nov 13, 2020 at 12:09:52PM +0100, Thomas Bogendoerfer wrote:
> Protection map difference between RIXI and non RIXI cpus is _PAGE_NO_EXEC
> and _PAGE_NO_READ usage. Both already take care of cpu_has_rixi while
> setting up the page bits. So we just need one setup of protection map
> and can drop the now unused (and broken for RIXI) PAGE_* defines.
>
> Signed-off-by: Thomas Bogendoerfer <[email protected]>
> ---
> arch/mips/include/asm/pgtable.h | 8 ------
> arch/mips/mm/cache.c | 55 ++++++++++++++---------------------------
> 2 files changed, 18 insertions(+), 45 deletions(-)

applied to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]

2020-12-13 16:08:03

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 4/4] MIPS: mm: Clean up setup of protection map

On Fri, Nov 13, 2020 at 12:09:52PM +0100, Thomas Bogendoerfer wrote:
> Protection map difference between RIXI and non RIXI cpus is _PAGE_NO_EXEC
> and _PAGE_NO_READ usage. Both already take care of cpu_has_rixi while
> setting up the page bits. So we just need one setup of protection map
> and can drop the now unused (and broken for RIXI) PAGE_* defines.
>
> Signed-off-by: Thomas Bogendoerfer <[email protected]>
> ---

This patch results in:

drivers/video/fbdev/udlfb.c: In function 'dlfb_ops_mmap':
drivers/video/fbdev/udlfb.c:343:52: error: 'PAGE_SHARED' undeclared (first use in this function)
343 | if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
| ^~~~~~~~~~~

when building mips:allmodconfig.

Guenter

---
bisect log:

# bad: [3cc2bd440f2171f093b3a8480a4b54d8c270ed38] Add linux-next specific files for 20201211
# good: [0477e92881850d44910a7e94fc2c46f96faa131f] Linux 5.10-rc7
git bisect start 'HEAD' 'v5.10-rc7'
# bad: [0a701401d4e29d9e73f0f3cc02179fc6c9191646] Merge remote-tracking branch 'crypto/master'
git bisect bad 0a701401d4e29d9e73f0f3cc02179fc6c9191646
# bad: [196d9132cc82feb410b6386491de9ac5661b0b76] Merge remote-tracking branch 'printk/for-next'
git bisect bad 196d9132cc82feb410b6386491de9ac5661b0b76
# good: [5bc192c72197553fe3b934830482caf931347c9c] Merge remote-tracking branch 'arm-soc/for-next'
git bisect good 5bc192c72197553fe3b934830482caf931347c9c
# bad: [24aa026d842ebfa5ff9cefe92bb3d6cc6a558206] Merge remote-tracking branch 'risc-v/for-next'
git bisect bad 24aa026d842ebfa5ff9cefe92bb3d6cc6a558206
# good: [44e8eb23644eaf38dbfaf4a68d08b13c190f58c2] Merge remote-tracking branch 'm68knommu/for-next'
git bisect good 44e8eb23644eaf38dbfaf4a68d08b13c190f58c2
# good: [ff57698a9610fcf7d9c4469bf68c881eff22e2f8] powerpc: Fix update form addressing in inline assembly
git bisect good ff57698a9610fcf7d9c4469bf68c881eff22e2f8
# bad: [a7ab7f9e2de7e39cafa041fcba425935b2c188bf] Merge remote-tracking branch 'parisc-hd/for-next'
git bisect bad a7ab7f9e2de7e39cafa041fcba425935b2c188bf
# good: [724d554a117a0552c2c982f0b5cd1d685274d678] MIPS: vdso: Use vma page protection for remapping
git bisect good 724d554a117a0552c2c982f0b5cd1d685274d678
# bad: [27f45b5690f7cfe916c83aaa7263ac3da7e251ee] Merge remote-tracking branch 'mips/mips-next'
git bisect bad 27f45b5690f7cfe916c83aaa7263ac3da7e251ee
# bad: [79109a515ac3f1009632f4a4c81597e9438a2d65] MIPS: configs: drop unused BACKLIGHT_GENERIC option
git bisect bad 79109a515ac3f1009632f4a4c81597e9438a2d65
# bad: [74a2810b7c1fcd60c87a8c47f95660628e00e97c] MIPS: KASLR: Correct valid bits in apply_r_mips_26_rel()
git bisect bad 74a2810b7c1fcd60c87a8c47f95660628e00e97c
# bad: [0df162e1377a585ced8adb932f7d6e4164e91ccf] MIPS: mm: Clean up setup of protection map
git bisect bad 0df162e1377a585ced8adb932f7d6e4164e91ccf
# good: [ed2adb74217a4054a92e0a0746e31ec6f5e466c8] MIPS: mm: shorten lines by using macro
git bisect good ed2adb74217a4054a92e0a0746e31ec6f5e466c8
# first bad commit: [0df162e1377a585ced8adb932f7d6e4164e91ccf] MIPS: mm: Clean up setup of protection map

2020-12-14 23:46:31

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 4/4] MIPS: mm: Clean up setup of protection map

On Sat, Dec 12, 2020 at 08:29:23AM -0800, Guenter Roeck wrote:
> On Fri, Nov 13, 2020 at 12:09:52PM +0100, Thomas Bogendoerfer wrote:
> > Protection map difference between RIXI and non RIXI cpus is _PAGE_NO_EXEC
> > and _PAGE_NO_READ usage. Both already take care of cpu_has_rixi while
> > setting up the page bits. So we just need one setup of protection map
> > and can drop the now unused (and broken for RIXI) PAGE_* defines.
> >
> > Signed-off-by: Thomas Bogendoerfer <[email protected]>
> > ---
>
> This patch results in:
>
> drivers/video/fbdev/udlfb.c: In function 'dlfb_ops_mmap':
> drivers/video/fbdev/udlfb.c:343:52: error: 'PAGE_SHARED' undeclared (first use in this function)
> 343 | if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
> | ^~~~~~~~~~~
>
> when building mips:allmodconfig.

thank you for the report, I've pushed a fix to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]