diff mbox

wireless: brcmfmac: initialize oob irq data before request_irq()

Message ID b6d30eb2d883c011d50200cfdb8c44462e1939a4.1497369605.git.mirq-linux@rere.qmqm.pl (mailing list archive)
State Accepted
Delegated to: Kalle Valo
Headers show

Commit Message

Michał Mirosław June 13, 2017, 4:02 p.m. UTC
This fixes spin-forever in irq handler when IRQ is already asserted
at request_irq() time.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

Comments

Kalle Valo June 14, 2017, 4:58 a.m. UTC | #1
Michał Mirosław <mirq-linux@rere.qmqm.pl> writes:

> This fixes spin-forever in irq handler when IRQ is already asserted
> at request_irq() time.
>
> Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>

Your name in patchwork is broken:

https://patchwork.kernel.org/patch/9784251/

You could try to fix it by registering as then you have (onetime) option
to provide your full name.
Michał Mirosław June 14, 2017, 11:29 a.m. UTC | #2
On Wed, Jun 14, 2017 at 07:58:35AM +0300, Kalle Valo wrote:
> Michał Mirosław <mirq-linux@rere.qmqm.pl> writes:
> > This fixes spin-forever in irq handler when IRQ is already asserted
> > at request_irq() time.
> >
> > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
> 
> Your name in patchwork is broken:
> 
> https://patchwork.kernel.org/patch/9784251/
> 
> You could try to fix it by registering as then you have (onetime) option
> to provide your full name.

Doesn't like UTF-8? Registration didn't help though.

Best Regards,
Michał Mirosław
Kalle Valo June 15, 2017, 2:40 p.m. UTC | #3
Michał Mirosław <mirq-linux@rere.qmqm.pl> writes:

> On Wed, Jun 14, 2017 at 07:58:35AM +0300, Kalle Valo wrote:
>> Michał Mirosław <mirq-linux@rere.qmqm.pl> writes:
>> > This fixes spin-forever in irq handler when IRQ is already asserted
>> > at request_irq() time.
>> >
>> > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
>> 
>> Your name in patchwork is broken:
>> 
>> https://patchwork.kernel.org/patch/9784251/
>> 
>> You could try to fix it by registering as then you have (onetime) option
>> to provide your full name.
>
> Doesn't like UTF-8?

patchwork.kernel.org was updated something like a year ago to get proper
UTF-8 support and I have been succesfully applied patches from Rafal who
also uses UTF-8 with his name:

git log --author rafal@milecki.pl drivers/net/wireless/

You could always compare his posts with yours and see what you do
differently. Here's one example:

https://patchwork.kernel.org/patch/9640743/

> Registration didn't help though.

Darn. This time I can manually apply the patch but for the future we
should try to solve this.
Michał Mirosław June 19, 2017, 4:40 p.m. UTC | #4
[resending reply to linux-wireless]

On Thu, Jun 15, 2017 at 05:40:01PM +0300, Kalle Valo wrote:
> Michał Mirosław <mirq-linux@rere.qmqm.pl> writes:
> 
> > On Wed, Jun 14, 2017 at 07:58:35AM +0300, Kalle Valo wrote:
> >> Michał Mirosław <mirq-linux@rere.qmqm.pl> writes:
> >> > This fixes spin-forever in irq handler when IRQ is already asserted
> >> > at request_irq() time.
> >> >
> >> > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
> >> 
> >> Your name in patchwork is broken:
> >> 
> >> https://patchwork.kernel.org/patch/9784251/
> >> 
> >> You could try to fix it by registering as then you have (onetime) option
> >> to provide your full name.
> >
> > Doesn't like UTF-8?
> 
> patchwork.kernel.org was updated something like a year ago to get proper
> UTF-8 support and I have been succesfully applied patches from Rafal who
> also uses UTF-8 with his name:
> 
> git log --author rafal@milecki.pl drivers/net/wireless/
> 
> You could always compare his posts with yours and see what you do
> differently. Here's one example:
> 
> https://patchwork.kernel.org/patch/9640743/
> 
> > Registration didn't help though.
> 
> Darn. This time I can manually apply the patch but for the future we
> should try to solve this.

Looks like my name, as known by Patchwork, got doubly UTF-8-encoded:

# this is how it is in From header in Patchwork:
$ echo TWljaGHDheKAmiBNaXJvc8OF4oCaYXc=|base64 -d|hexdump -C
00000000  4d 69 63 68 61 c3 85 e2  80 9a 20 4d 69 72 6f 73  |Micha.....
Miros|
00000010  c3 85 e2 80 9a 61 77                              |.....aw|
00000017

# this is how it should look like:
$ echo -n 'Michał Mirosław'|hexdump -C
00000000  4d 69 63 68 61 c5 82 20  4d 69 72 6f 73 c5 82 61  |Micha..
Miros..a|
00000010  77                                                |w|

Best Regards,
Michał Mirosław
Kalle Valo June 21, 2017, 3:36 p.m. UTC | #5
Michał Mirosław <mirq-linux@rere.qmqm.pl> writes:

> This fixes spin-forever in irq handler when IRQ is already asserted
> at request_irq() time.
>
> Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>

To avoid the UTF-8 problem I skipped patchwork and applied this manually
to wireless-drivers-next:

3f426c968955 brcmfmac: initialize oob irq data before request_irq()

But hopefully you can get your name in patchwork fixed so that I don't
need to manually apply your patches.
diff mbox

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 9b970dc2b922a..c653a72e3dead 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -108,12 +108,14 @@  int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev)
 	int ret = 0;
 	u8 data;
 	u32 addr, gpiocontrol;
-	unsigned long flags;
 
 	pdata = &sdiodev->settings->bus.sdio;
 	if (pdata->oob_irq_supported) {
 		brcmf_dbg(SDIO, "Enter, register OOB IRQ %d\n",
 			  pdata->oob_irq_nr);
+		spin_lock_init(&sdiodev->irq_en_lock);
+		sdiodev->irq_en = true;
+
 		ret = request_irq(pdata->oob_irq_nr, brcmf_sdiod_oob_irqhandler,
 				  pdata->oob_irq_flags, "brcmf_oob_intr",
 				  &sdiodev->func[1]->dev);
@@ -122,10 +124,6 @@  int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev)
 			return ret;
 		}
 		sdiodev->oob_irq_requested = true;
-		spin_lock_init(&sdiodev->irq_en_lock);
-		spin_lock_irqsave(&sdiodev->irq_en_lock, flags);
-		sdiodev->irq_en = true;
-		spin_unlock_irqrestore(&sdiodev->irq_en_lock, flags);
 
 		ret = enable_irq_wake(pdata->oob_irq_nr);
 		if (ret != 0) {