2019-11-20 17:43:09

by Thor Thayer

[permalink] [raw]
Subject: [PATCH] EDAC/altera: Use fast register IO for S10 IRQs

From: Thor Thayer <[email protected]>

When an irq occurs in altera edac driver, regmap_xxx() is invoked
in atomic context. Regmap must indicate register IO is fast so
that a spinlock is used instead of a mutex to avoid sleeping
in atomic context.

Fixes mutex-lock error
lock_acquire+0xfc/0x288
__mutex_lock+0x8c/0x808
mutex_lock_nested+0x3c/0x50
regmap_lock_mutex+0x24/0x30
regmap_write+0x40/0x78
a10_eccmgr_irq_unmask+0x34/0x40
unmask_irq.part.0+0x30/0x50
irq_enable+0x74/0x80
__irq_startup+0x80/0xa8
irq_startup+0x70/0x150
__setup_irq+0x650/0x6d0
request_threaded_irq+0xe4/0x180
devm_request_threaded_irq+0x7c/0xf0
altr_sdram_probe+0x2c4/0x600
<snip>

Upstream fix pending [1] (common code uses fast mode)
[1] https://lkml.org/lkml/2019/11/7/1014

Fixes: 3dab6bd52687 ("EDAC, altera: Add support for Stratix10 SDRAM EDAC")
Cc: [email protected]
Reported-by: Meng Li <[email protected]>
Signed-off-by: Meng Li <[email protected]>
Signed-off-by: Thor Thayer <[email protected]>
---
drivers/edac/altera_edac.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c
index 59319f0c873b..647b3a5ef095 100644
--- a/drivers/edac/altera_edac.c
+++ b/drivers/edac/altera_edac.c
@@ -561,6 +561,7 @@ static const struct regmap_config s10_sdram_regmap_cfg = {
.reg_write = s10_protected_reg_write,
.use_single_read = true,
.use_single_write = true,
+ .fast_io = true,
};

/************** </Stratix10 EDAC Memory Controller Functions> ***********/
--
2.7.4



2019-11-20 18:12:42

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH] EDAC/altera: Use fast register IO for S10 IRQs

On Wed, Nov 20, 2019 at 11:38:01AM -0600, [email protected] wrote:
> From: Thor Thayer <[email protected]>
>
> When an irq occurs in altera edac driver, regmap_xxx() is invoked
> in atomic context. Regmap must indicate register IO is fast so
> that a spinlock is used instead of a mutex to avoid sleeping
> in atomic context.
>
> Fixes mutex-lock error
> lock_acquire+0xfc/0x288
> __mutex_lock+0x8c/0x808
> mutex_lock_nested+0x3c/0x50
> regmap_lock_mutex+0x24/0x30
> regmap_write+0x40/0x78
> a10_eccmgr_irq_unmask+0x34/0x40
> unmask_irq.part.0+0x30/0x50
> irq_enable+0x74/0x80
> __irq_startup+0x80/0xa8
> irq_startup+0x70/0x150
> __setup_irq+0x650/0x6d0
> request_threaded_irq+0xe4/0x180
> devm_request_threaded_irq+0x7c/0xf0
> altr_sdram_probe+0x2c4/0x600
> <snip>
>
> Upstream fix pending [1] (common code uses fast mode)
> [1] https://lkml.org/lkml/2019/11/7/1014

I don't understand - I picked those up and are already queued for 5.5:

https://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git/log/?h=edac-for-next

What is that patch for?

Are you saying, I should stick it before the two patches above so that
it gets backported to stable so that you have older kernels addressed?

But then the above ones won't apply anymore because

EDAC/altera: Use the Altera System Manager driver

removes s10_sdram_regmap_cfg.

What I can offer you is to remove the two patches and apply this one so
that it goes in next week. Then, you can send me the two rediffed after
5.5-rc1 is out. Ok?

> Fixes: 3dab6bd52687 ("EDAC, altera: Add support for Stratix10 SDRAM EDAC")
> Cc: [email protected]
> Reported-by: Meng Li <[email protected]>
> Signed-off-by: Meng Li <[email protected]>

What does Meng's SOB mean?

> Signed-off-by: Thor Thayer <[email protected]>

Thx.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette

2019-11-20 18:54:26

by Thor Thayer

[permalink] [raw]
Subject: Re: [PATCH] EDAC/altera: Use fast register IO for S10 IRQs

Hi Boris,

On 11/20/19 12:07 PM, Borislav Petkov wrote:
> On Wed, Nov 20, 2019 at 11:38:01AM -0600, [email protected] wrote:
>> From: Thor Thayer <[email protected]>
>>
>> When an irq occurs in altera edac driver, regmap_xxx() is invoked
>> in atomic context. Regmap must indicate register IO is fast so
>> that a spinlock is used instead of a mutex to avoid sleeping
>> in atomic context.
>>
>> Fixes mutex-lock error
>> lock_acquire+0xfc/0x288
>> __mutex_lock+0x8c/0x808
>> mutex_lock_nested+0x3c/0x50
>> regmap_lock_mutex+0x24/0x30
>> regmap_write+0x40/0x78
>> a10_eccmgr_irq_unmask+0x34/0x40
>> unmask_irq.part.0+0x30/0x50
>> irq_enable+0x74/0x80
>> __irq_startup+0x80/0xa8
>> irq_startup+0x70/0x150
>> __setup_irq+0x650/0x6d0
>> request_threaded_irq+0xe4/0x180
>> devm_request_threaded_irq+0x7c/0xf0
>> altr_sdram_probe+0x2c4/0x600
>> <snip>
>>
>> Upstream fix pending [1] (common code uses fast mode)
>> [1] https://lkml.org/lkml/2019/11/7/1014
>
> I don't understand - I picked those up and are already queued for 5.5:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git/log/?h=edac-for-next
>
> What is that patch for?
>
> Are you saying, I should stick it before the two patches above so that
> it gets backported to stable so that you have older kernels addressed?
>
> But then the above ones won't apply anymore because
>
> EDAC/altera: Use the Altera System Manager driver
>
> removes s10_sdram_regmap_cfg.
>
> What I can offer you is to remove the two patches and apply this one so
> that it goes in next week. Then, you can send me the two rediffed after
> 5.5-rc1 is out. Ok?
>
>> Fixes: 3dab6bd52687 ("EDAC, altera: Add support for Stratix10 SDRAM EDAC")
>> Cc: [email protected]
>> Reported-by: Meng Li <[email protected]>
>> Signed-off-by: Meng Li <[email protected]>
>
> What does Meng's SOB mean?
>
>> Signed-off-by: Thor Thayer <[email protected]>
>
> Thx.
>

Sorry, I didn't explain this well enough. The patches you have queued
will fix this for the next 5.5 branch.

This patch should to be applied to the stable branches to fix the issue
in older branches. Although I knew the To: had to be to
[email protected], I wasn't sure how that worked with the EDAC
reviewers. This was a weird situation where I couldn't fix the upstream
because it had already been fixed a different way.

Meng sent me the notification and the patch with a SOB so I put Meng
first in the order.

Sorry for the confusion,

Thor


2019-11-20 19:15:25

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH] EDAC/altera: Use fast register IO for S10 IRQs

On Wed, Nov 20, 2019 at 12:52:18PM -0600, Thor Thayer wrote:
> This patch should to be applied to the stable branches to fix the issue in
> older branches.

Do stable folks pick up stable fixes which are not upstream?

AFAIK, a patch needs to be upstream to be backported to stable first.

> Although I knew the To: had to be to [email protected],
> I wasn't sure how that worked with the EDAC reviewers. This was a weird
> situation where I couldn't fix the upstream because it had already been
> fixed a different way.

Yah.

> Meng sent me the notification and the patch with a SOB so I put Meng first
> in the order.

If he sent you the patch, then he's the author and you need to keep his

From: Meng Li <[email protected]>

at the beginning of the file so that git preserves his authorship.

Thx.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette

2019-11-20 19:31:50

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] EDAC/altera: Use fast register IO for S10 IRQs

On Wed, Nov 20, 2019 at 08:13:35PM +0100, Borislav Petkov wrote:
> On Wed, Nov 20, 2019 at 12:52:18PM -0600, Thor Thayer wrote:
> > This patch should to be applied to the stable branches to fix the issue in
> > older branches.
>
> Do stable folks pick up stable fixes which are not upstream?

Not at all.