Re: rtsx_usb_sdmmc not detecting card insertion anymore

From: Pascal Terjan
Date: Tue Jun 27 2023 - 16:23:23 EST


On Tue, 27 Jun 2023 at 12:01, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote:
>
> + Ricky WU, Kai Heng Feng, Oleksandr Natalenko
>
> On Sat, 24 Jun 2023 at 22:39, Pascal Terjan <pterjan@xxxxxxxxx> wrote:
> >
> > Hi,
> > I have an ASUS PN50 machine with a 0bda:0129 card reader. The card is
> > not seen unless I reload the rtsx_usb_sdmmc module.
>
> Thanks for reporting, let's see how we can move this forward.

> I have looped in some of the people that has been involved in the
> relevant changes for rtsx_usb. Let's see if they can help too.
>
> >
> > I found a Debian bug report for the same regression
> > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=993068 but nothing
> > to see there.
> >
> > Trying to understand things I found
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dad599b8b5d1ffc5ef12a2edb13d15d537202ba
> > which seemed related, so I first tried to revert it and that worked.
>
> Okay! That's certainly good information. Are you willing to help
> running further debug testings?
>
> Unless I mistaken, I think we should avoid doing a plain revert
> (assuming we can find another option) as it will cause us to waste a
> lot of energy instead.
>
> >
> > Assuming the description is correct and the rtsx USB driver runtime
> > resumes the rtsx_usb_sdmmc device when it detects that a new card has
> > been inserted, I assume this means it doesn't detect that a card was
> > inserted and the problem would be in rtsx_usb rather than
> > rtsx_usb_sdmmc.
>
> There is also another interesting commit, which was also part of the
> re-work of the rtsx_usb_sdmmc driver that you pointed to above.
>
> commit 883a87ddf2f1 (misc: rtsx_usb: Use USB remote wakeup signaling
> for card insertion detection")
>
> >
> > I am not sure how to debug this further, usbmon doesn't see anything
> > when I insert the card.
>
> If you are willing to run some tests, I suggest to add some debug prints in:
> drivers/mmc/host/rtsx_usb_sdmmc.c
> sdmmc_get_cd()
> rtsx_usb_sdmmc_runtime_resume()
> rtsx_usb_sdmmc_runtime_suspend()
>
> sdmmc_get_cd() should be returning 1 when it finds that there is card
> inserted, but of course the error path would be interesting too.
>
> rtsx_usb_sdmmc_runtime_resume() may be called during probing of the
> rtsx_usb_sdmmc driver. Beyond that point, it should also be called
> when you insert an SD card. Just having a debug print in there should
> help answer if that actually happens.

Loading the module without a card as expected doesn't detect anything:

[7188511.342324] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: : Realtek USB
SD/MMC controller found
[7188511.342499] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: :
rtsx_usb_sdmmc_runtime_resume
[7188511.342503] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: sdmmc_get_cd
[7188511.342616] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: sdmmc_get_cd 0
[7188511.342626] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: sdmmc_get_cd
[7188511.342700] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: sdmmc_get_cd 0
[7188511.342703] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: sdmmc_set_ios
[7188511.342779] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: sdmmc_set_ios end
[7188511.344062] rtsx_usb_sdmmc rtsx_usb_sdmmc.6.auto: :
rtsx_usb_sdmmc_runtime_suspend

Then nothing happens when inserting a card until reloading the module

>
> Kind regards
> Uffe