Re: SDIO single IRQ optimization breaks libertas

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Daniel,

> 
> On 29 May 2011 15:26, Daniel Drake <dsd <at> laptop.org> wrote:
> > Hi,
> >
> > The following commit in 2.6.39 causes instant death for libertas_sdio
> > when it receives its first interrupt during initialization:
> >
> > commit 06e8935febe687e2a561707d4c7ca4245d261dbe
> 
> The crash happens on this line of code in if_sdio_interrupt:
> 
> cause = sdio_readb(card->func, IF_SDIO_H_INT_STATUS, &ret);
> 
> card is NULL here
Thanks for you detailed report. It fails due to sdio_get_drvdata() returns NULL.

I am thinking of if the timing has changed due to this "single irq" patch or if
the functionality is broken.
To answer that I have a question on the if_sdio.c in libertas.

if_sdio.c
 sdio_claim_host();
 sdio_claim_irq()
 ...
 sdio_release_host()
 sdio_set_drvdata(func, card)
Just a sanity question, can the interrupt occur before sdio_set_drvdata()?

Do you get the same error if it looks like this.
if_sdio.c
 sdio_claim_host();
 sdio_set_drvdata(func, card)
 sdio_claim_irq()
 ...
 sdio_release_host()

Thanks,
Per


--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux