diff mbox series

[v7,1/5] mips: bmips: BCM6358: make sure CBR is correctly set

Message ID 20240611113538.9004-2-ansuelsmth@gmail.com (mailing list archive)
State Accepted
Commit ce5cdd3b05216b704a704f466fb4c2dff3778caf
Headers show
Series mips: bmips: improve handling of RAC and CBR addr | expand

Commit Message

Christian Marangi June 11, 2024, 11:35 a.m. UTC
It was discovered that some device have CBR address set to 0 causing
kernel panic when arch_sync_dma_for_cpu_all is called.

This was notice in situation where the system is booted from TP1 and
BMIPS_GET_CBR() returns 0 instead of a valid address and
!!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.

The current check whether RAC flush should be disabled or not are not
enough hence lets check if CBR is a valid address or not.

Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
---
 arch/mips/bmips/setup.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Thomas Bogendoerfer June 11, 2024, 12:49 p.m. UTC | #1
On Tue, Jun 11, 2024 at 01:35:33PM +0200, Christian Marangi wrote:
> It was discovered that some device have CBR address set to 0 causing
> kernel panic when arch_sync_dma_for_cpu_all is called.
> 
> This was notice in situation where the system is booted from TP1 and
> BMIPS_GET_CBR() returns 0 instead of a valid address and
> !!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.
> 
> The current check whether RAC flush should be disabled or not are not
> enough hence lets check if CBR is a valid address or not.
> 
> Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")

should I apply it to mips-fixes ? If not could you just ammend
it with the following patch, where this is changed again ?

Thomas.
Christian Marangi June 11, 2024, 1:04 p.m. UTC | #2
On Tue, Jun 11, 2024 at 02:49:07PM +0200, Thomas Bogendoerfer wrote:
> On Tue, Jun 11, 2024 at 01:35:33PM +0200, Christian Marangi wrote:
> > It was discovered that some device have CBR address set to 0 causing
> > kernel panic when arch_sync_dma_for_cpu_all is called.
> > 
> > This was notice in situation where the system is booted from TP1 and
> > BMIPS_GET_CBR() returns 0 instead of a valid address and
> > !!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.
> > 
> > The current check whether RAC flush should be disabled or not are not
> > enough hence lets check if CBR is a valid address or not.
> > 
> > Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")
> 
> should I apply it to mips-fixes ? If not could you just ammend
> it with the following patch, where this is changed again ?
>

Ideally this should be backported to stable kernel since it does cause
kernel panic. This is why it's split and it's the first patch of the
series.
Thomas Bogendoerfer June 11, 2024, 2:03 p.m. UTC | #3
On Tue, Jun 11, 2024 at 03:04:36PM +0200, Christian Marangi wrote:
> On Tue, Jun 11, 2024 at 02:49:07PM +0200, Thomas Bogendoerfer wrote:
> > On Tue, Jun 11, 2024 at 01:35:33PM +0200, Christian Marangi wrote:
> > > It was discovered that some device have CBR address set to 0 causing
> > > kernel panic when arch_sync_dma_for_cpu_all is called.
> > > 
> > > This was notice in situation where the system is booted from TP1 and
> > > BMIPS_GET_CBR() returns 0 instead of a valid address and
> > > !!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.
> > > 
> > > The current check whether RAC flush should be disabled or not are not
> > > enough hence lets check if CBR is a valid address or not.
> > > 
> > > Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")
> > 
> > should I apply it to mips-fixes ? If not could you just ammend
> > it with the following patch, where this is changed again ?
> >
> 
> Ideally this should be backported to stable kernel since it does cause
> kernel panic. This is why it's split and it's the first patch of the
> series.

ok, I'll apply it to mips-fixes then.

Thomas.
Thomas Bogendoerfer June 11, 2024, 2:12 p.m. UTC | #4
On Tue, Jun 11, 2024 at 01:35:33PM +0200, Christian Marangi wrote:
> It was discovered that some device have CBR address set to 0 causing
> kernel panic when arch_sync_dma_for_cpu_all is called.
> 
> This was notice in situation where the system is booted from TP1 and
> BMIPS_GET_CBR() returns 0 instead of a valid address and
> !!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.
> 
> The current check whether RAC flush should be disabled or not are not
> enough hence lets check if CBR is a valid address or not.
> 
> Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
> ---
>  arch/mips/bmips/setup.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

applied to mips-fixes.

Thomas.
diff mbox series

Patch

diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c
index ec180ab92eaa..66a8ba19c287 100644
--- a/arch/mips/bmips/setup.c
+++ b/arch/mips/bmips/setup.c
@@ -110,7 +110,8 @@  static void bcm6358_quirks(void)
 	 * RAC flush causes kernel panics on BCM6358 when booting from TP1
 	 * because the bootloader is not initializing it properly.
 	 */
-	bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31));
+	bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31)) ||
+				  !!BMIPS_GET_CBR();
 }
 
 static void bcm6368_quirks(void)