diff mbox series

EDAC/altera: Use fast register IO for S10 IRQs

Message ID 1574271481-9310-1-git-send-email-thor.thayer@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series EDAC/altera: Use fast register IO for S10 IRQs | expand

Commit Message

Thor Thayer Nov. 20, 2019, 5:38 p.m. UTC
From: Thor Thayer <thor.thayer@linux.intel.com>

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: stable@vger.kernel.org
Reported-by: Meng Li <Meng.Li@windriver.com>
Signed-off-by: Meng Li <Meng.Li@windriver.com>
Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
---
 drivers/edac/altera_edac.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Borislav Petkov Nov. 20, 2019, 6:07 p.m. UTC | #1
On Wed, Nov 20, 2019 at 11:38:01AM -0600, thor.thayer@linux.intel.com wrote:
> From: Thor Thayer <thor.thayer@linux.intel.com>
> 
> 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: stable@vger.kernel.org
> Reported-by: Meng Li <Meng.Li@windriver.com>
> Signed-off-by: Meng Li <Meng.Li@windriver.com>

What does Meng's SOB mean?

> Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>

Thx.
Thor Thayer Nov. 20, 2019, 6:52 p.m. UTC | #2
Hi Boris,

On 11/20/19 12:07 PM, Borislav Petkov wrote:
> On Wed, Nov 20, 2019 at 11:38:01AM -0600, thor.thayer@linux.intel.com wrote:
>> From: Thor Thayer <thor.thayer@linux.intel.com>
>>
>> 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: stable@vger.kernel.org
>> Reported-by: Meng Li <Meng.Li@windriver.com>
>> Signed-off-by: Meng Li <Meng.Li@windriver.com>
> 
> What does Meng's SOB mean?
> 
>> Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
> 
> 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 
stable@vger.kernel.org, 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
Borislav Petkov Nov. 20, 2019, 7:13 p.m. UTC | #3
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 stable@vger.kernel.org,
> 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 <Meng.Li@windriver.com>

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

Thx.
Greg KH Nov. 20, 2019, 7:28 p.m. UTC | #4
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.
diff mbox series

Patch

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> ***********/