All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
@ 2020-03-25  3:44 Huacai Chen
  2020-03-25 17:30 ` Thomas Bogendoerfer
  2020-03-27 15:03 ` Sasha Levin
  0 siblings, 2 replies; 4+ messages in thread
From: Huacai Chen @ 2020-03-25  3:44 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: linux-mips, Fuxin Zhang, Zhangjin Wu, Huacai Chen, Jiaxun Yang,
	Huacai Chen, stable, Pei Huang

LDDIR/LDPTE is Loongson-3's acceleration for Page Table Walking. If BD
(Base Directory, the 4th page directory) is not enabled, then GDOffset
is biased by BadVAddr[63:62]. So, if GDOffset (aka. BadVAddr[47:36] for
Loongson-3) is big enough, "0b11(BadVAddr[63:62])|BadVAddr[47:36]|...."
can far beyond pg_swapper_dir. This means the pg_swapper_dir may NOT be
accessed by LDDIR correctly, so fix it by set PWDirExt in CP0_PWCtl.

Cc: <stable@vger.kernel.org>
Signed-off-by: Pei Huang <huangpei@loongson.cn>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
---
 arch/mips/mm/tlbex.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 344e6e9..da407cd 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -1480,6 +1480,7 @@ static void build_r4000_tlb_refill_handler(void)
 
 static void setup_pw(void)
 {
+	unsigned int pwctl;
 	unsigned long pgd_i, pgd_w;
 #ifndef __PAGETABLE_PMD_FOLDED
 	unsigned long pmd_i, pmd_w;
@@ -1506,6 +1507,7 @@ static void setup_pw(void)
 
 	pte_i = ilog2(_PAGE_GLOBAL);
 	pte_w = 0;
+	pwctl = 1 << 30; /* Set PWDirExt */
 
 #ifndef __PAGETABLE_PMD_FOLDED
 	write_c0_pwfield(pgd_i << 24 | pmd_i << 12 | pt_i << 6 | pte_i);
@@ -1516,8 +1518,9 @@ static void setup_pw(void)
 #endif
 
 #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT
-	write_c0_pwctl(1 << 6 | psn);
+	pwctl |= (1 << 6 | psn);
 #endif
+	write_c0_pwctl(pwctl);
 	write_c0_kpgd((long)swapper_pg_dir);
 	kscratch_used_mask |= (1 << 7); /* KScratch6 is used for KPGD */
 }
-- 
2.7.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
  2020-03-25  3:44 [PATCH] MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3 Huacai Chen
@ 2020-03-25 17:30 ` Thomas Bogendoerfer
  2020-03-27 15:03 ` Sasha Levin
  1 sibling, 0 replies; 4+ messages in thread
From: Thomas Bogendoerfer @ 2020-03-25 17:30 UTC (permalink / raw)
  To: Huacai Chen
  Cc: linux-mips, Fuxin Zhang, Zhangjin Wu, Huacai Chen, Jiaxun Yang,
	stable, Pei Huang

On Wed, Mar 25, 2020 at 11:44:54AM +0800, Huacai Chen wrote:
> LDDIR/LDPTE is Loongson-3's acceleration for Page Table Walking. If BD
> (Base Directory, the 4th page directory) is not enabled, then GDOffset
> is biased by BadVAddr[63:62]. So, if GDOffset (aka. BadVAddr[47:36] for
> Loongson-3) is big enough, "0b11(BadVAddr[63:62])|BadVAddr[47:36]|...."
> can far beyond pg_swapper_dir. This means the pg_swapper_dir may NOT be
> accessed by LDDIR correctly, so fix it by set PWDirExt in CP0_PWCtl.
> 
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Pei Huang <huangpei@loongson.cn>
> Signed-off-by: Huacai Chen <chenhc@lemote.com>
> ---
>  arch/mips/mm/tlbex.c | 5 ++++-
>  1 file changed, 4 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 ]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
  2020-03-25  3:44 [PATCH] MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3 Huacai Chen
  2020-03-25 17:30 ` Thomas Bogendoerfer
@ 2020-03-27 15:03 ` Sasha Levin
  2020-03-28  2:22   ` Huacai Chen
  1 sibling, 1 reply; 4+ messages in thread
From: Sasha Levin @ 2020-03-27 15:03 UTC (permalink / raw)
  To: Sasha Levin, Huacai Chen, Thomas Bogendoerfer
  Cc: linux-mips, Fuxin Zhang, stable, stable

Hi

[This is an automated email]

This commit has been processed because it contains a -stable tag.
The stable tag indicates that it's relevant for the following trees: all

The bot has tested the following trees: v5.5.11, v5.4.27, v4.19.112, v4.14.174, v4.9.217, v4.4.217.

v5.5.11: Build OK!
v5.4.27: Build OK!
v4.19.112: Build OK!
v4.14.174: Failed to apply! Possible dependencies:
    b023a9396062 ("MIPS: Avoid using array as parameter to write_c0_kpgd()")

v4.9.217: Failed to apply! Possible dependencies:
    b023a9396062 ("MIPS: Avoid using array as parameter to write_c0_kpgd()")

v4.4.217: Failed to apply! Possible dependencies:
    0c94fa33b4de ("MIPS: cpu: Convert MIPS_CPU_* defs to (1ull << x)")
    380cd582c088 ("MIPS: Loongson-3: Fast TLB refill handler")
    5fa393c85719 ("MIPS: Break down cacheops.h definitions")
    9519ef37a4a4 ("MIPS: Define the legacy-NaN and 2008-NaN features")
    b023a9396062 ("MIPS: Avoid using array as parameter to write_c0_kpgd()")
    b2edcfc81401 ("MIPS: Loongson: Add Loongson-3A R2 basic support")
    c0291f7c7359 ("MIPS: cpu: Alter MIPS_CPU_* definitions to fill gap")
    f270d881fa55 ("MIPS: Detect MIPSr6 Virtual Processor support")


NOTE: The patch will not be queued to stable trees until it is upstream.

How should we proceed with this patch?

-- 
Thanks
Sasha

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
  2020-03-27 15:03 ` Sasha Levin
@ 2020-03-28  2:22   ` Huacai Chen
  0 siblings, 0 replies; 4+ messages in thread
From: Huacai Chen @ 2020-03-28  2:22 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Thomas Bogendoerfer, open list:MIPS, Fuxin Zhang, stable

Hi, Sasha,

For 4.9 and 4.14 please backport b023a9396062 ("MIPS: Avoid using
array as parameter to write_c0_kpgd()"). And for 4.4 please just
ignore this patch.

Regards,
Huacai

On Fri, Mar 27, 2020 at 11:03 PM Sasha Levin <sashal@kernel.org> wrote:
>
> Hi
>
> [This is an automated email]
>
> This commit has been processed because it contains a -stable tag.
> The stable tag indicates that it's relevant for the following trees: all
>
> The bot has tested the following trees: v5.5.11, v5.4.27, v4.19.112, v4.14.174, v4.9.217, v4.4.217.
>
> v5.5.11: Build OK!
> v5.4.27: Build OK!
> v4.19.112: Build OK!
> v4.14.174: Failed to apply! Possible dependencies:
>     b023a9396062 ("MIPS: Avoid using array as parameter to write_c0_kpgd()")
>
> v4.9.217: Failed to apply! Possible dependencies:
>     b023a9396062 ("MIPS: Avoid using array as parameter to write_c0_kpgd()")
>
> v4.4.217: Failed to apply! Possible dependencies:
>     0c94fa33b4de ("MIPS: cpu: Convert MIPS_CPU_* defs to (1ull << x)")
>     380cd582c088 ("MIPS: Loongson-3: Fast TLB refill handler")
>     5fa393c85719 ("MIPS: Break down cacheops.h definitions")
>     9519ef37a4a4 ("MIPS: Define the legacy-NaN and 2008-NaN features")
>     b023a9396062 ("MIPS: Avoid using array as parameter to write_c0_kpgd()")
>     b2edcfc81401 ("MIPS: Loongson: Add Loongson-3A R2 basic support")
>     c0291f7c7359 ("MIPS: cpu: Alter MIPS_CPU_* definitions to fill gap")
>     f270d881fa55 ("MIPS: Detect MIPSr6 Virtual Processor support")
>
>
> NOTE: The patch will not be queued to stable trees until it is upstream.
>
> How should we proceed with this patch?
>
> --
> Thanks
> Sasha

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-03-28  2:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-25  3:44 [PATCH] MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3 Huacai Chen
2020-03-25 17:30 ` Thomas Bogendoerfer
2020-03-27 15:03 ` Sasha Levin
2020-03-28  2:22   ` Huacai Chen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.