* [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.