Re: [PATCH RESEND] sdhci: Only handle CARD_INT for SDIO cards

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

 



Adrian Hunter <adrian.hunter@xxxxxxxxx> writes:

> On 02/01/17 20:23, Gabriel Krisman Bertazi wrote:
>> One of our kernelCI boxes hanged at boot because a faulty eSDHC device
>> was triggering spurious CARD_INT interrupts for SD cards, causing CMD52
>> reads, which are not allowed for SD devices.  This adds a sanity check
>> to the interruption path, preventing that illegal command from getting
>> sent to SD devices.
>> 
>> This quirk allows that particular machine to resume boot despite the
>> faulty hardware, instead of getting hung dealing with thousands of
>> mishandled interrupts.
>> 
>> Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxxxx>
>> CC: Adrian Hunter <adrian.hunter@xxxxxxxxx>
>> CC: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
>> CC: linux-mmc@xxxxxxxxxxxxxxx
>> ---
>>  drivers/mmc/host/sdhci.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>> index 23909804ffb8..43913876581e 100644
>> --- a/drivers/mmc/host/sdhci.c
>> +++ b/drivers/mmc/host/sdhci.c
>> @@ -2665,6 +2665,7 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
>>  {
>>  	irqreturn_t result = IRQ_NONE;
>>  	struct sdhci_host *host = dev_id;
>> +	struct mmc_host *mmc = host->mmc;
>>  	u32 intmask, mask, unexpected = 0;
>>  	int max_loops = 16;
>>  
>> @@ -2733,7 +2734,9 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
>>  		if (intmask & SDHCI_INT_RETUNE)
>>  			mmc_retune_needed(host->mmc);
>>  
>> -		if (intmask & SDHCI_INT_CARD_INT) {
>> +		if (intmask & SDHCI_INT_CARD_INT && mmc->card &&
>> +		    (mmc->card->type == MMC_TYPE_SDIO ||
>> +		     mmc->card->type == MMC_TYPE_SD_COMBO)) {
>
> We shouldn't have to look at the card type.  But if the interrupt is not
> enabled, then we shouldn't process it.  What about:

Hi Adrian,

Thanks for your review.  I think this way is ok too, I also ran it
against the faulty hardware and it prevented the hang as well.  I
just submitted a v2.

-- 
Gabriel Krisman Bertazi
--
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