On Mon, Mar 06, 2017 at 06:32:41PM +0800, Icenowy Zheng wrote: > 06.03.2017, 18:04, "Maxime Ripard" <maxime.ripard@xxxxxxxxxxxxxxxxxx>: > > Hi, > > > > On Mon, Mar 06, 2017 at 12:45:35AM +0800, Icenowy Zheng wrote: > >> Response Timeout is very usual: it will happen when trying to run some > >> commands that do not belong to the card; it will happen when some SDIO > >> card transfer beyond its SDIO bandwidth; and when the MMC controller is > >> set to poll the card with "broken-cd" property (the Lichee Pi series of > >> boards do this), it will flood to the console and make the console > >> unusable. > >> > >> Mask all response-timeout-only error messages, only show it when another > >> error happens. > >> > >> Signed-off-by: Icenowy Zheng <icenowy@xxxxxxxx> > >> --- > >> drivers/mmc/host/sunxi-mmc.c | 13 +++++++++---- > >> 1 file changed, 9 insertions(+), 4 deletions(-) > >> > >> diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c > >> index 6ffcd2838272..7828e1f57cf0 100644 > >> --- a/drivers/mmc/host/sunxi-mmc.c > >> +++ b/drivers/mmc/host/sunxi-mmc.c > >> @@ -483,10 +483,15 @@ static void sunxi_mmc_dump_errinfo(struct sunxi_mmc_host *host) > >> struct mmc_command *cmd = host->mrq->cmd; > >> struct mmc_data *data = host->mrq->data; > >> > >> - /* For some cmds timeout is normal with sd/mmc cards */ > >> - if ((host->int_sum & SDXC_INTERRUPT_ERROR_BIT) == > >> - SDXC_RESP_TIMEOUT && (cmd->opcode == SD_IO_SEND_OP_COND || > >> - cmd->opcode == SD_IO_RW_DIRECT)) > >> + /* > >> + * Reading timeout is usually normal, especially when doing > >> + * card-polling with "broken-cd" in device tree. > >> + * If do not mask it, the RTO error message will flood the console > >> + * and even hide useful error messages. > >> + * > >> + * Some SDIO commands will also normally timeout with non-SDIO cards. > >> + */ > >> + if ((host->int_sum & SDXC_INTERRUPT_ERROR_BIT) == SDXC_RESP_TIMEOUT) > > > > We really shouldn't silence legit errors. > > > > The actual problem here is that we log them as error, we could > > probably reduce it to debug. > > Even if it's reduced to debug, it will still flush dmesg buffers. No, it will not even be compiled by default. > Or make it only visible when "debug" parameter is present in kernel > cmdline? debug messages are visible in dmesg only if DEBUG is defined, which is only happening if CONFIG_MMC_DEBUG is set. This won't affect the general case in any way. And it is output only if loglevel is set higher than 7. Maxime -- Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
Attachment:
signature.asc
Description: PGP signature