Re: panic with CONFIG_FAIL_MMC_REQUEST and cqhci

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

 



On 2/22/19 5:42 AM, Ritesh Harjani wrote:
Hi Laura,

On 2/19/2019 12:59 AM, Laura Abbott wrote:
Hi,

Fedora got report of a panic when I accidentally left debugging enabled
on a build https://bugzilla.redhat.com/show_bug.cgi?id=1677438

It looks like a panic from code in CONFIG_FAIL_MMC_REQUEST from the
cqhci driver because there isn't a command (high level overview)

With CQHCI, in case of non-DCMD (data) requests, mrq->cmd can be NULL.
Is this crash happening always (100% on bootup) with CQHCI & CONFIG_FAIL_MMC_REQUEST enabled?

Sure, I will role out a patch to handle this case.
It will be great, if you could also confirm it from your side.


Thanks, I'll have to follow up with the reporter and see if he
gets back to me.

Regards
Ritesh



(gdb) list *(mmc_should_fail_request+0xa)
0x149a is in mmc_should_fail_request (drivers/mmc/core/core.c:98).
93        };
94
95        if (!data)
96            return;
97
98        if (cmd->error || data->error ||
99            !should_fail(&host->fail_mmc_request, data->blksz * data->blocks))
100            return;
101
102        data->error = data_errors[prandom_u32() % ARRAY_SIZE(data_errors)];
(gdb)

(gdb) list *(mmc_cqe_request_done+0x1c)
0x2a6c is in mmc_cqe_request_done (drivers/mmc/core/core.c:505).
500    void mmc_cqe_request_done(struct mmc_host *host, struct mmc_request *mrq)
501    {
502        mmc_should_fail_request(host, mrq);
503
504        /* Flag re-tuning needed on CRC errors */
505        if ((mrq->cmd && mrq->cmd->error == -EILSEQ) ||
506            (mrq->data && mrq->data->error == -EILSEQ))
507            mmc_retune_needed(host);
508
509        trace_mmc_request_done(host, mrq);


(gdb) list *(cqhci_irq+0x1d2)
0x1172 is in cqhci_irq (drivers/mmc/host/cqhci.c:747).
742                data->bytes_xfered = 0;
743            else
744                data->bytes_xfered = data->blksz * data->blocks;
745        }
746
747        mmc_cqe_request_done(mmc, mrq);
748    }
749
750    irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
751                  int data_error)

This can be worked around by turning off the option but it
seems like something to fix up.

Thanks,
Laura




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

  Powered by Linux