* Re: incomplete mips patch made 3.10.55, remains broken in 3.10.58
2014-10-16 6:57 incomplete mips patch made 3.10.55, remains broken in 3.10.58 Alexandre Oliva
@ 2014-10-23 13:45 ` Ralf Baechle
2014-11-19 1:32 ` Greg Kroah-Hartman
1 sibling, 0 replies; 3+ messages in thread
From: Ralf Baechle @ 2014-10-23 13:45 UTC (permalink / raw)
To: Alexandre Oliva
Cc: Greg Kroah-Hartman, stable, Markos Chandras, linux-mips,
Yoichi Yuasa, Aaro Koskinen
Greg, please apply.
Thanks,
Ralf
On Thu, Oct 16, 2014 at 03:57:33AM -0300, Alexandre Oliva wrote:
> Commit ff522058bd717506b2fa066fa564657f2b86477e was merged into 3.10.55
> stable as commit 4f91cb537d2f7fa700a2b6d86a2cc77d20ee2616.
>
> Without the complement, commit 5596b0b245fb9d2cefb5023b11061050351c1398,
> included below, cache invalidation functions modified by the former
> patch may return between preempt_disable() and preempt_enable(), causing
> such machines as yeeloongs to go down in flames early in the boot.
>
> The complement patch had already made v3.12-rc4, and it's quite
> obviously needed and correct. I've also tested that it fixes the
> regression on the yeeloong.
>
> So, would you please merge it into the 3.10 stable series, at your
> earlier convenience, so as to fix this regression?
>
> Thanks in advance,
>
> >From 5596b0b245fb9d2cefb5023b11061050351c1398 Mon Sep 17 00:00:00 2001
> From: Yoichi Yuasa <yuasa@linux-mips.org>
> Date: Wed, 2 Oct 2013 15:03:03 +0900
> Subject: [PATCH] MIPS: Fix forgotten preempt_enable() when CPU has inclusive
> pcaches
>
> [ 1.904000] BUG: scheduling while atomic: swapper/1/0x00000002
> [ 1.908000] Modules linked in:
> [ 1.916000] CPU: 0 PID: 1 Comm: swapper Not tainted 3.12.0-rc2-lemote-los.git-5318619-dirty #1
> [ 1.920000] Stack : 0000000031aac000 ffffffff810d0000 0000000000000052 ffffffff802730a4
> 0000000000000000 0000000000000001 ffffffff810cdf90 ffffffff810d0000
> ffffffff8068b968 ffffffff806f5537 ffffffff810cdf90 980000009f0782e8
> 0000000000000001 ffffffff80720000 ffffffff806b0000 980000009f078000
> 980000009f290000 ffffffff805f312c 980000009f05b5d8 ffffffff80233518
> 980000009f05b5e8 ffffffff80274b7c 980000009f078000 ffffffff8068b968
> 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> 0000000000000000 980000009f05b520 0000000000000000 ffffffff805f2f6c
> 0000000000000000 ffffffff80700000 ffffffff80700000 ffffffff806fc758
> ffffffff80700000 ffffffff8020be98 ffffffff806fceb0 ffffffff805f2f6c
> ...
> [ 2.028000] Call Trace:
> [ 2.032000] [<ffffffff8020be98>] show_stack+0x80/0x98
> [ 2.036000] [<ffffffff805f2f6c>] __schedule_bug+0x44/0x6c
> [ 2.040000] [<ffffffff805fac58>] __schedule+0x518/0x5b0
> [ 2.044000] [<ffffffff805f8a58>] schedule_timeout+0x128/0x1f0
> [ 2.048000] [<ffffffff80240314>] msleep+0x3c/0x60
> [ 2.052000] [<ffffffff80495400>] do_probe+0x238/0x3a8
> [ 2.056000] [<ffffffff804958b0>] ide_probe_port+0x340/0x7e8
> [ 2.060000] [<ffffffff80496028>] ide_host_register+0x2d0/0x7a8
> [ 2.064000] [<ffffffff8049c65c>] ide_pci_init_two+0x4e4/0x790
> [ 2.068000] [<ffffffff8049f9b8>] amd74xx_probe+0x148/0x2c8
> [ 2.072000] [<ffffffff803f571c>] pci_device_probe+0xc4/0x130
> [ 2.076000] [<ffffffff80478f60>] driver_probe_device+0x98/0x270
> [ 2.080000] [<ffffffff80479298>] __driver_attach+0xe0/0xe8
> [ 2.084000] [<ffffffff80476ab0>] bus_for_each_dev+0x78/0xe0
> [ 2.088000] [<ffffffff80478468>] bus_add_driver+0x230/0x310
> [ 2.092000] [<ffffffff80479b44>] driver_register+0x84/0x158
> [ 2.096000] [<ffffffff80200504>] do_one_initcall+0x104/0x160
>
> Signed-off-by: Yoichi Yuasa <yuasa@linux-mips.org>
> Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi>
> Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
> Cc: linux-mips@linux-mips.org
> Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
> Patchwork: https://patchwork.linux-mips.org/patch/5941/
> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
> ---
> arch/mips/mm/c-r4k.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
> index 627883b..bc6f96f 100644
> --- a/arch/mips/mm/c-r4k.c
> +++ b/arch/mips/mm/c-r4k.c
> @@ -609,6 +609,7 @@ static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size)
> r4k_blast_scache();
> else
> blast_scache_range(addr, addr + size);
> + preempt_enable();
> __sync();
> return;
> }
> @@ -650,6 +651,7 @@ static void r4k_dma_cache_inv(unsigned long addr, unsigned long size)
> */
> blast_inv_scache_range(addr, addr + size);
> }
> + preempt_enable();
> __sync();
> return;
> }
> --
> 1.9.3
>
>
> --
> Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
> You must be the change you wish to see in the world. -- Gandhi
> Be Free! -- http://FSFLA.org/ FSF Latin America board member
> Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer
Ralf
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: incomplete mips patch made 3.10.55, remains broken in 3.10.58
2014-10-16 6:57 incomplete mips patch made 3.10.55, remains broken in 3.10.58 Alexandre Oliva
2014-10-23 13:45 ` Ralf Baechle
@ 2014-11-19 1:32 ` Greg Kroah-Hartman
1 sibling, 0 replies; 3+ messages in thread
From: Greg Kroah-Hartman @ 2014-11-19 1:32 UTC (permalink / raw)
To: Alexandre Oliva
Cc: stable, Ralf Baechle, Markos Chandras, linux-mips, Yoichi Yuasa,
Aaro Koskinen
On Thu, Oct 16, 2014 at 03:57:33AM -0300, Alexandre Oliva wrote:
> Greg,
>
> Commit ff522058bd717506b2fa066fa564657f2b86477e was merged into 3.10.55
> stable as commit 4f91cb537d2f7fa700a2b6d86a2cc77d20ee2616.
>
> Without the complement, commit 5596b0b245fb9d2cefb5023b11061050351c1398,
> included below, cache invalidation functions modified by the former
> patch may return between preempt_disable() and preempt_enable(), causing
> such machines as yeeloongs to go down in flames early in the boot.
>
> The complement patch had already made v3.12-rc4, and it's quite
> obviously needed and correct. I've also tested that it fixes the
> regression on the yeeloong.
>
> So, would you please merge it into the 3.10 stable series, at your
> earlier convenience, so as to fix this regression?
Applied, now, thanks.
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread