[PATCH 0/2] mmc: rtsx: card stuck busy fixes for Realtek PCI SD card readers

Matthew Schwartz posted 2 patches 1 month ago
drivers/misc/cardreader/rtsx_pcr.c |  9 +++++++++
drivers/mmc/host/rtsx_pci_sdmmc.c  | 24 +++++++++++++++++++++++-
include/linux/rtsx_common.h        |  1 +
3 files changed, 33 insertions(+), 1 deletion(-)
[PATCH 0/2] mmc: rtsx: card stuck busy fixes for Realtek PCI SD card readers
Posted by Matthew Schwartz 1 month ago
This series fixes some SD card timeout errors that occur after suspend and
resume ops on systems with Realtek PCI card readers. These issues occur on
my 2 RTS525A card readers and my RTS5261 card reader.

As a stress test, I ran the amd-s2idle script from amd-debug-tools to 
automate s2idle cycles and I launched a visual novel, WITCH ON THE HOLY
NIGHT, from the SD card. Visual novels are basically just slideshows, and
waiting for 10 seconds without advancing the text is an easy way to
trigger rtsx_pci_runtime_suspend/rtsx_pci_runtime_resume. I set amd-s2idle
to test with a 10 second long s2idle length with 13 seconds between runs.

The main symptom that always shows up is "mmc0: Card stuck being busy!"
followed by timeouts and filesystem errors. This can occur during both
runtime resume and s2idle resume:

[  260.638214] mmc0: error -110 doing runtime resume
[  261.054214] mmc0: card d555 removed
[  261.054382] Aborting journal on device mmcblk0p1-8.
[  261.054386] JBD2: I/O error when updating journal superblock for mmcblk0p1-8.
[  261.067729] EXT4-fs (mmcblk0p1): shut down requested (2)

Patch 1 adds a power_off callback so rtsx_pcr can notify the sdmmc driver
during suspend, allowing it to reset prev_power_state. This ensures
sd_power_on properly reinitializes the card on resume. It reduces the
failure rate of "mmc0: Card stuck being busy!" after resume from 20% down
to 4%.

Patch 2 increases the post-power-on settling delay from 1ms to 5ms. The
shorter delay seems insufficient for reliable reinitialization after the
hardware has been powered off during suspend. Increasing this reduces the
failure rate from 4% down to 0%, tested with over 300 s2idle cycles.

Matthew Schwartz (2):
  mmc: rtsx: reset power state on suspend
  mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms

 drivers/misc/cardreader/rtsx_pcr.c |  9 +++++++++
 drivers/mmc/host/rtsx_pci_sdmmc.c  | 24 +++++++++++++++++++++++-
 include/linux/rtsx_common.h        |  1 +
 3 files changed, 33 insertions(+), 1 deletion(-)

-- 
2.52.0
Re: [PATCH 0/2] mmc: rtsx: card stuck busy fixes for Realtek PCI SD card readers
Posted by Ulf Hansson 2 weeks, 3 days ago
On Mon, 5 Jan 2026 at 07:02, Matthew Schwartz
<matthew.schwartz@linux.dev> wrote:
>
> This series fixes some SD card timeout errors that occur after suspend and
> resume ops on systems with Realtek PCI card readers. These issues occur on
> my 2 RTS525A card readers and my RTS5261 card reader.
>
> As a stress test, I ran the amd-s2idle script from amd-debug-tools to
> automate s2idle cycles and I launched a visual novel, WITCH ON THE HOLY
> NIGHT, from the SD card. Visual novels are basically just slideshows, and
> waiting for 10 seconds without advancing the text is an easy way to
> trigger rtsx_pci_runtime_suspend/rtsx_pci_runtime_resume. I set amd-s2idle
> to test with a 10 second long s2idle length with 13 seconds between runs.
>
> The main symptom that always shows up is "mmc0: Card stuck being busy!"
> followed by timeouts and filesystem errors. This can occur during both
> runtime resume and s2idle resume:
>
> [  260.638214] mmc0: error -110 doing runtime resume
> [  261.054214] mmc0: card d555 removed
> [  261.054382] Aborting journal on device mmcblk0p1-8.
> [  261.054386] JBD2: I/O error when updating journal superblock for mmcblk0p1-8.
> [  261.067729] EXT4-fs (mmcblk0p1): shut down requested (2)
>
> Patch 1 adds a power_off callback so rtsx_pcr can notify the sdmmc driver
> during suspend, allowing it to reset prev_power_state. This ensures
> sd_power_on properly reinitializes the card on resume. It reduces the
> failure rate of "mmc0: Card stuck being busy!" after resume from 20% down
> to 4%.
>
> Patch 2 increases the post-power-on settling delay from 1ms to 5ms. The
> shorter delay seems insufficient for reliable reinitialization after the
> hardware has been powered off during suspend. Increasing this reduces the
> failure rate from 4% down to 0%, tested with over 300 s2idle cycles.
>
> Matthew Schwartz (2):
>   mmc: rtsx: reset power state on suspend
>   mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms
>
>  drivers/misc/cardreader/rtsx_pcr.c |  9 +++++++++
>  drivers/mmc/host/rtsx_pci_sdmmc.c  | 24 +++++++++++++++++++++++-
>  include/linux/rtsx_common.h        |  1 +
>  3 files changed, 33 insertions(+), 1 deletion(-)
>
> --
> 2.52.0
>

Greg, looks like you have queued up these patches via your misc tree,
can you please drop them? We need a different approach to the problem.

Kind regards
Uffe
Re: [PATCH 0/2] mmc: rtsx: card stuck busy fixes for Realtek PCI SD card readers
Posted by Greg Kroah-Hartman 2 weeks, 3 days ago
On Wed, Jan 21, 2026 at 11:13:03AM +0100, Ulf Hansson wrote:
> On Mon, 5 Jan 2026 at 07:02, Matthew Schwartz
> <matthew.schwartz@linux.dev> wrote:
> >
> > This series fixes some SD card timeout errors that occur after suspend and
> > resume ops on systems with Realtek PCI card readers. These issues occur on
> > my 2 RTS525A card readers and my RTS5261 card reader.
> >
> > As a stress test, I ran the amd-s2idle script from amd-debug-tools to
> > automate s2idle cycles and I launched a visual novel, WITCH ON THE HOLY
> > NIGHT, from the SD card. Visual novels are basically just slideshows, and
> > waiting for 10 seconds without advancing the text is an easy way to
> > trigger rtsx_pci_runtime_suspend/rtsx_pci_runtime_resume. I set amd-s2idle
> > to test with a 10 second long s2idle length with 13 seconds between runs.
> >
> > The main symptom that always shows up is "mmc0: Card stuck being busy!"
> > followed by timeouts and filesystem errors. This can occur during both
> > runtime resume and s2idle resume:
> >
> > [  260.638214] mmc0: error -110 doing runtime resume
> > [  261.054214] mmc0: card d555 removed
> > [  261.054382] Aborting journal on device mmcblk0p1-8.
> > [  261.054386] JBD2: I/O error when updating journal superblock for mmcblk0p1-8.
> > [  261.067729] EXT4-fs (mmcblk0p1): shut down requested (2)
> >
> > Patch 1 adds a power_off callback so rtsx_pcr can notify the sdmmc driver
> > during suspend, allowing it to reset prev_power_state. This ensures
> > sd_power_on properly reinitializes the card on resume. It reduces the
> > failure rate of "mmc0: Card stuck being busy!" after resume from 20% down
> > to 4%.
> >
> > Patch 2 increases the post-power-on settling delay from 1ms to 5ms. The
> > shorter delay seems insufficient for reliable reinitialization after the
> > hardware has been powered off during suspend. Increasing this reduces the
> > failure rate from 4% down to 0%, tested with over 300 s2idle cycles.
> >
> > Matthew Schwartz (2):
> >   mmc: rtsx: reset power state on suspend
> >   mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms
> >
> >  drivers/misc/cardreader/rtsx_pcr.c |  9 +++++++++
> >  drivers/mmc/host/rtsx_pci_sdmmc.c  | 24 +++++++++++++++++++++++-
> >  include/linux/rtsx_common.h        |  1 +
> >  3 files changed, 33 insertions(+), 1 deletion(-)
> >
> > --
> > 2.52.0
> >
> 
> Greg, looks like you have queued up these patches via your misc tree,
> can you please drop them? We need a different approach to the problem.

They need to be reverted (my tree can not be rebased.)  Should I do
that, or does someone want to send me the reverts?

thanks,

greg k-h
Re: [PATCH 0/2] mmc: rtsx: card stuck busy fixes for Realtek PCI SD card readers
Posted by Ulf Hansson 2 weeks, 3 days ago
On Wed, 21 Jan 2026 at 11:31, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Wed, Jan 21, 2026 at 11:13:03AM +0100, Ulf Hansson wrote:
> > On Mon, 5 Jan 2026 at 07:02, Matthew Schwartz
> > <matthew.schwartz@linux.dev> wrote:
> > >
> > > This series fixes some SD card timeout errors that occur after suspend and
> > > resume ops on systems with Realtek PCI card readers. These issues occur on
> > > my 2 RTS525A card readers and my RTS5261 card reader.
> > >
> > > As a stress test, I ran the amd-s2idle script from amd-debug-tools to
> > > automate s2idle cycles and I launched a visual novel, WITCH ON THE HOLY
> > > NIGHT, from the SD card. Visual novels are basically just slideshows, and
> > > waiting for 10 seconds without advancing the text is an easy way to
> > > trigger rtsx_pci_runtime_suspend/rtsx_pci_runtime_resume. I set amd-s2idle
> > > to test with a 10 second long s2idle length with 13 seconds between runs.
> > >
> > > The main symptom that always shows up is "mmc0: Card stuck being busy!"
> > > followed by timeouts and filesystem errors. This can occur during both
> > > runtime resume and s2idle resume:
> > >
> > > [  260.638214] mmc0: error -110 doing runtime resume
> > > [  261.054214] mmc0: card d555 removed
> > > [  261.054382] Aborting journal on device mmcblk0p1-8.
> > > [  261.054386] JBD2: I/O error when updating journal superblock for mmcblk0p1-8.
> > > [  261.067729] EXT4-fs (mmcblk0p1): shut down requested (2)
> > >
> > > Patch 1 adds a power_off callback so rtsx_pcr can notify the sdmmc driver
> > > during suspend, allowing it to reset prev_power_state. This ensures
> > > sd_power_on properly reinitializes the card on resume. It reduces the
> > > failure rate of "mmc0: Card stuck being busy!" after resume from 20% down
> > > to 4%.
> > >
> > > Patch 2 increases the post-power-on settling delay from 1ms to 5ms. The
> > > shorter delay seems insufficient for reliable reinitialization after the
> > > hardware has been powered off during suspend. Increasing this reduces the
> > > failure rate from 4% down to 0%, tested with over 300 s2idle cycles.
> > >
> > > Matthew Schwartz (2):
> > >   mmc: rtsx: reset power state on suspend
> > >   mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms
> > >
> > >  drivers/misc/cardreader/rtsx_pcr.c |  9 +++++++++
> > >  drivers/mmc/host/rtsx_pci_sdmmc.c  | 24 +++++++++++++++++++++++-
> > >  include/linux/rtsx_common.h        |  1 +
> > >  3 files changed, 33 insertions(+), 1 deletion(-)
> > >
> > > --
> > > 2.52.0
> > >
> >
> > Greg, looks like you have queued up these patches via your misc tree,
> > can you please drop them? We need a different approach to the problem.
>
> They need to be reverted (my tree can not be rebased.)  Should I do
> that, or does someone want to send me the reverts?

If you can revert them, that would be great!

Then I will continue to work with Matthew to fix the problem in a more
proper way.

Kind regards
Uffe
Re: [PATCH 0/2] mmc: rtsx: card stuck busy fixes for Realtek PCI SD card readers
Posted by Greg Kroah-Hartman 2 weeks, 2 days ago
On Wed, Jan 21, 2026 at 01:49:11PM +0100, Ulf Hansson wrote:
> On Wed, 21 Jan 2026 at 11:31, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Wed, Jan 21, 2026 at 11:13:03AM +0100, Ulf Hansson wrote:
> > > On Mon, 5 Jan 2026 at 07:02, Matthew Schwartz
> > > <matthew.schwartz@linux.dev> wrote:
> > > >
> > > > This series fixes some SD card timeout errors that occur after suspend and
> > > > resume ops on systems with Realtek PCI card readers. These issues occur on
> > > > my 2 RTS525A card readers and my RTS5261 card reader.
> > > >
> > > > As a stress test, I ran the amd-s2idle script from amd-debug-tools to
> > > > automate s2idle cycles and I launched a visual novel, WITCH ON THE HOLY
> > > > NIGHT, from the SD card. Visual novels are basically just slideshows, and
> > > > waiting for 10 seconds without advancing the text is an easy way to
> > > > trigger rtsx_pci_runtime_suspend/rtsx_pci_runtime_resume. I set amd-s2idle
> > > > to test with a 10 second long s2idle length with 13 seconds between runs.
> > > >
> > > > The main symptom that always shows up is "mmc0: Card stuck being busy!"
> > > > followed by timeouts and filesystem errors. This can occur during both
> > > > runtime resume and s2idle resume:
> > > >
> > > > [  260.638214] mmc0: error -110 doing runtime resume
> > > > [  261.054214] mmc0: card d555 removed
> > > > [  261.054382] Aborting journal on device mmcblk0p1-8.
> > > > [  261.054386] JBD2: I/O error when updating journal superblock for mmcblk0p1-8.
> > > > [  261.067729] EXT4-fs (mmcblk0p1): shut down requested (2)
> > > >
> > > > Patch 1 adds a power_off callback so rtsx_pcr can notify the sdmmc driver
> > > > during suspend, allowing it to reset prev_power_state. This ensures
> > > > sd_power_on properly reinitializes the card on resume. It reduces the
> > > > failure rate of "mmc0: Card stuck being busy!" after resume from 20% down
> > > > to 4%.
> > > >
> > > > Patch 2 increases the post-power-on settling delay from 1ms to 5ms. The
> > > > shorter delay seems insufficient for reliable reinitialization after the
> > > > hardware has been powered off during suspend. Increasing this reduces the
> > > > failure rate from 4% down to 0%, tested with over 300 s2idle cycles.
> > > >
> > > > Matthew Schwartz (2):
> > > >   mmc: rtsx: reset power state on suspend
> > > >   mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms
> > > >
> > > >  drivers/misc/cardreader/rtsx_pcr.c |  9 +++++++++
> > > >  drivers/mmc/host/rtsx_pci_sdmmc.c  | 24 +++++++++++++++++++++++-
> > > >  include/linux/rtsx_common.h        |  1 +
> > > >  3 files changed, 33 insertions(+), 1 deletion(-)
> > > >
> > > > --
> > > > 2.52.0
> > > >
> > >
> > > Greg, looks like you have queued up these patches via your misc tree,
> > > can you please drop them? We need a different approach to the problem.
> >
> > They need to be reverted (my tree can not be rebased.)  Should I do
> > that, or does someone want to send me the reverts?
> 
> If you can revert them, that would be great!
> 
> Then I will continue to work with Matthew to fix the problem in a more
> proper way.

All now reverted, thanks!

greg k-h