* Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
@ 2023-09-12 12:29 Paul Grandperrin
2023-09-12 17:10 ` Linux regression tracking (Thorsten Leemhuis)
2023-09-13 3:10 ` Ricky WU
0 siblings, 2 replies; 14+ messages in thread
From: Paul Grandperrin @ 2023-09-12 12:29 UTC (permalink / raw)
To: stable; +Cc: regressions, Wei WANG, Roger Tseng, Ricky WU
Hi kernel maintainers!
My computer doesn't boot with kernels newer than 6.1.45.
Here's what happens:
- system boots in initramfs
- detects my encrypted ZFS pool and asks for password
- mount system, pivots to it, starts real init
- before any daemon had time to start, the system hangs and the kernel
writes on the console
"nvme 0000:04:00.0: Unable to change power state from D3cold to D0,
device inaccessible"
- if I reboot directly without powering off (using magic sysrq or
panic=10), even the UEFI complains about not finding any storage to
boot from.
- after a real power off, I can boot using a kernel <= 6.1.45.
The bug has been discussed here:
https://bugzilla.kernel.org/show_bug.cgi?id=217705
My laptop is a Dell XPS 15 9560 (Intel 7700hq).
I bisected between 6.1.45 and 6.1.46 and found this commit
commit 8ee39ec479147e29af704639f8e55fce246ed2d9
Author: Ricky WU <ricky_wu@realtek.com>
Date: Tue Jul 25 09:10:54 2023 +0000
misc: rtsx: judge ASPM Mode to set PETXCFG Reg
commit 101bd907b4244a726980ee67f95ed9cafab6ff7a upstream.
ASPM Mode is ASPM_MODE_CFG need to judge the value of clkreq_0
to set HIGH or LOW, if the ASPM Mode is ASPM_MODE_REG
always set to HIGH during the initialization.
Cc: stable@vger.kernel.org
Signed-off-by: Ricky Wu <ricky_wu@realtek.com>
Link:
https://lore.kernel.org/r/52906c6836374c8cb068225954c5543a@realtek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/cardreader/rts5227.c | 2 +-
drivers/misc/cardreader/rts5228.c | 18 ------------------
drivers/misc/cardreader/rts5249.c | 3 +--
drivers/misc/cardreader/rts5260.c | 18 ------------------
drivers/misc/cardreader/rts5261.c | 18 ------------------
drivers/misc/cardreader/rtsx_pcr.c | 5 ++++-
6 files changed, 6 insertions(+), 58 deletions(-)
If I build 6.1.51 with this commit reverted, my laptop works again,
confirming that this commit is to blame.
Also, blacklisting `rtsx_pci_sdmmc` and `rtsx_pci`, while preventing to
use the sd card reading, allows to boot the system.
I can't try 6.4 or 6.5 because my system is dependent on ZFS..
Have a nice day,
Paul Grandperrin
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-12 12:29 Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot Paul Grandperrin
@ 2023-09-12 17:10 ` Linux regression tracking (Thorsten Leemhuis)
2023-09-13 5:03 ` Greg KH
2023-09-13 3:10 ` Ricky WU
1 sibling, 1 reply; 14+ messages in thread
From: Linux regression tracking (Thorsten Leemhuis) @ 2023-09-12 17:10 UTC (permalink / raw)
To: Paul Grandperrin, stable
Cc: regressions, Wei WANG, Roger Tseng, Ricky WU, Greg KH,
Linus Torvalds
(CCing Greg, as he merged the culprit, and Linus, in case he wants to
revert this from mainline directly as this apparently affects and annoys
quite a few people)
On 12.09.23 14:29, Paul Grandperrin wrote:
>
> My computer doesn't boot with kernels newer than 6.1.45.>
> Here's what happens:
> - system boots in initramfs
> - detects my encrypted ZFS pool and asks for password
> - mount system, pivots to it, starts real init
> - before any daemon had time to start, the system hangs and the kernel
> writes on the console
> "nvme 0000:04:00.0: Unable to change power state from D3cold to D0,
> device inaccessible"
> - if I reboot directly without powering off (using magic sysrq or
> panic=10), even the UEFI complains about not finding any storage to boot
> from.
> - after a real power off, I can boot using a kernel <= 6.1.45.
Thx for the report.
> The bug has been discussed here:
> https://bugzilla.kernel.org/show_bug.cgi?id=217705
And recently here:
https://bugzilla.kernel.org/show_bug.cgi?id=217802
https://lore.kernel.org/all/5f968b95-6b1c-4d6f-aac7-5d54f66834a8@sapience.com/
And in
https://bugzilla.suse.com/show_bug.cgi?id=1214428
and a few other places iirc, too.
openSUSE Tumblewed reverted the culprit a while ago:
https://github.com/openSUSE/kernel-source/commit/1b02b1528a26f4e9b577e215c114d8c5e773ee10
I think we should do the same for mainline (and stable afterwards).
Ciao, Thorsten
> My laptop is a Dell XPS 15 9560 (Intel 7700hq).
>
> I bisected between 6.1.45 and 6.1.46 and found this commit
>
> commit 8ee39ec479147e29af704639f8e55fce246ed2d9
> Author: Ricky WU <ricky_wu@realtek.com>
> Date: Tue Jul 25 09:10:54 2023 +0000
>
> misc: rtsx: judge ASPM Mode to set PETXCFG Reg
>
> commit 101bd907b4244a726980ee67f95ed9cafab6ff7a upstream.
>
> ASPM Mode is ASPM_MODE_CFG need to judge the value of clkreq_0
> to set HIGH or LOW, if the ASPM Mode is ASPM_MODE_REG
> always set to HIGH during the initialization.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ricky Wu <ricky_wu@realtek.com>
> Link:
> https://lore.kernel.org/r/52906c6836374c8cb068225954c5543a@realtek.com
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> drivers/misc/cardreader/rts5227.c | 2 +-
> drivers/misc/cardreader/rts5228.c | 18 ------------------
> drivers/misc/cardreader/rts5249.c | 3 +--
> drivers/misc/cardreader/rts5260.c | 18 ------------------
> drivers/misc/cardreader/rts5261.c | 18 ------------------
> drivers/misc/cardreader/rtsx_pcr.c | 5 ++++-
> 6 files changed, 6 insertions(+), 58 deletions(-)
>
> If I build 6.1.51 with this commit reverted, my laptop works again,
> confirming that this commit is to blame.
>
> Also, blacklisting `rtsx_pci_sdmmc` and `rtsx_pci`, while preventing to
> use the sd card reading, allows to boot the system.
>
> I can't try 6.4 or 6.5 because my system is dependent on ZFS..
>
> Have a nice day,
> Paul Grandperrin
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-12 12:29 Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot Paul Grandperrin
2023-09-12 17:10 ` Linux regression tracking (Thorsten Leemhuis)
@ 2023-09-13 3:10 ` Ricky WU
2023-09-19 8:04 ` Jade Lovelace
1 sibling, 1 reply; 14+ messages in thread
From: Ricky WU @ 2023-09-13 3:10 UTC (permalink / raw)
To: Paul Grandperrin, stable@vger.kernel.org
Cc: regressions@lists.linux.dev, Wei_wang, Roger Tseng
Hi Paul,
We have notice this issue....
https://lore.kernel.org/lkml/fa82d9dcbe83403abc644c20922b47f9@realtek.com/t/#m90373a16017f07ca32f43d6b4327164fb31bf9bb
main reason is:
"it is a system power saving issue....
In the past if the BIOS(config space) not set L1-substate our driver will keep drive low CLKREQ# when HOST want to enter power saving state that make whole system not enter the power saving state.
But this patch we release the CLKREQ# to HOST, make whole system can enter power saving state success when the HOST want to enter the power saving state, but I don't know why this system can not wake out success from power saving state"
This is a PCIE CLKREQ# design problem on those platform, the pcie spec allow device release the CLKREQ# to HOST, this patch only do this....
We are thinking about how to compatible with these potentially problematic platforms
Ricky
> -----Original Message-----
> From: Paul Grandperrin <paul.grandperrin@gmail.com>
> Sent: Tuesday, September 12, 2023 8:29 PM
> To: stable@vger.kernel.org
> Cc: regressions@lists.linux.dev; Wei_wang <wei_wang@realsil.com.cn>; Roger
> Tseng <rogerable@realtek.com>; Ricky WU <ricky_wu@realtek.com>
> Subject: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from
> drivers/misc/cardreader breaks NVME power state, preventing system boot
>
>
> External mail.
>
>
>
> Hi kernel maintainers!
>
> My computer doesn't boot with kernels newer than 6.1.45.
>
> Here's what happens:
> - system boots in initramfs
> - detects my encrypted ZFS pool and asks for password
> - mount system, pivots to it, starts real init
> - before any daemon had time to start, the system hangs and the kernel
> writes on the console
> "nvme 0000:04:00.0: Unable to change power state from D3cold to D0,
> device inaccessible"
> - if I reboot directly without powering off (using magic sysrq or
> panic=10), even the UEFI complains about not finding any storage to
> boot from.
> - after a real power off, I can boot using a kernel <= 6.1.45.
>
> The bug has been discussed here:
> https://bugzilla.kernel.org/show_bug.cgi?id=217705
>
> My laptop is a Dell XPS 15 9560 (Intel 7700hq).
>
> I bisected between 6.1.45 and 6.1.46 and found this commit
>
> commit 8ee39ec479147e29af704639f8e55fce246ed2d9
> Author: Ricky WU <ricky_wu@realtek.com>
> Date: Tue Jul 25 09:10:54 2023 +0000
>
> misc: rtsx: judge ASPM Mode to set PETXCFG Reg
>
> commit 101bd907b4244a726980ee67f95ed9cafab6ff7a upstream.
>
> ASPM Mode is ASPM_MODE_CFG need to judge the value of clkreq_0
> to set HIGH or LOW, if the ASPM Mode is ASPM_MODE_REG
> always set to HIGH during the initialization.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ricky Wu <ricky_wu@realtek.com>
> Link:
> https://lore.kernel.org/r/52906c6836374c8cb068225954c5543a@realtek.com
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> drivers/misc/cardreader/rts5227.c | 2 +-
> drivers/misc/cardreader/rts5228.c | 18 ------------------
> drivers/misc/cardreader/rts5249.c | 3 +--
> drivers/misc/cardreader/rts5260.c | 18 ------------------
> drivers/misc/cardreader/rts5261.c | 18 ------------------
> drivers/misc/cardreader/rtsx_pcr.c | 5 ++++-
> 6 files changed, 6 insertions(+), 58 deletions(-)
>
> If I build 6.1.51 with this commit reverted, my laptop works again,
> confirming that this commit is to blame.
>
> Also, blacklisting `rtsx_pci_sdmmc` and `rtsx_pci`, while preventing to
> use the sd card reading, allows to boot the system.
>
> I can't try 6.4 or 6.5 because my system is dependent on ZFS..
>
> Have a nice day,
> Paul Grandperrin
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-12 17:10 ` Linux regression tracking (Thorsten Leemhuis)
@ 2023-09-13 5:03 ` Greg KH
2023-09-19 2:20 ` Ricky WU
0 siblings, 1 reply; 14+ messages in thread
From: Greg KH @ 2023-09-13 5:03 UTC (permalink / raw)
To: Linux regressions mailing list
Cc: Paul Grandperrin, stable, Wei WANG, Roger Tseng, Ricky WU,
Linus Torvalds
On Tue, Sep 12, 2023 at 07:10:38PM +0200, Linux regression tracking (Thorsten Leemhuis) wrote:
> (CCing Greg, as he merged the culprit, and Linus, in case he wants to
> revert this from mainline directly as this apparently affects and annoys
> quite a few people)
The driver authors know about this and have said they are working on a
solution. Let's give them a few more days on it before reverting stuff.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-13 5:03 ` Greg KH
@ 2023-09-19 2:20 ` Ricky WU
2023-09-19 7:06 ` Greg KH
0 siblings, 1 reply; 14+ messages in thread
From: Ricky WU @ 2023-09-19 2:20 UTC (permalink / raw)
To: Greg KH, Linux regressions mailing list
Cc: Paul Grandperrin, stable@vger.kernel.org, Wei_wang, Roger Tseng,
Linus Torvalds
Hi Greg k-h,
In order to cover the those platform Power saving issue,
our approach on new patch will be different from the previous patch (101bd907b4244a726980ee67f95ed9cafab6ff7a).
So we need used fixed Tag on 101bd907b4244a726980ee67f95ed9cafab6ff7a
or a new patch for this problem?
Ricky
> -----Original Message-----
> From: Greg KH <gregkh@linuxfoundation.org>
> Sent: Wednesday, September 13, 2023 1:03 PM
> To: Linux regressions mailing list <regressions@lists.linux.dev>
> Cc: Paul Grandperrin <paul.grandperrin@gmail.com>; stable@vger.kernel.org;
> Wei_wang <wei_wang@realsil.com.cn>; Roger Tseng
> <rogerable@realtek.com>; Ricky WU <ricky_wu@realtek.com>; Linus Torvalds
> <torvalds@linux-foundation.org>
> Subject: Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from
> drivers/misc/cardreader breaks NVME power state, preventing system boot
>
>
> External mail.
>
>
>
> On Tue, Sep 12, 2023 at 07:10:38PM +0200, Linux regression tracking (Thorsten
> Leemhuis) wrote:
> > (CCing Greg, as he merged the culprit, and Linus, in case he wants to
> > revert this from mainline directly as this apparently affects and
> > annoys quite a few people)
>
> The driver authors know about this and have said they are working on a
> solution. Let's give them a few more days on it before reverting stuff.
>
> thanks,
>
> greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-19 2:20 ` Ricky WU
@ 2023-09-19 7:06 ` Greg KH
2023-09-20 7:30 ` Ricky WU
0 siblings, 1 reply; 14+ messages in thread
From: Greg KH @ 2023-09-19 7:06 UTC (permalink / raw)
To: Ricky WU
Cc: Linux regressions mailing list, Paul Grandperrin,
stable@vger.kernel.org, Wei_wang, Roger Tseng, Linus Torvalds
On Tue, Sep 19, 2023 at 02:20:53AM +0000, Ricky WU wrote:
> Hi Greg k-h,
>
> In order to cover the those platform Power saving issue,
> our approach on new patch will be different from the previous patch (101bd907b4244a726980ee67f95ed9cafab6ff7a).
>
> So we need used fixed Tag on 101bd907b4244a726980ee67f95ed9cafab6ff7a
> or a new patch for this problem?
I'm sorry, but I do not understand. I think a new change is needed
here, right? Or are you wanting a different commit backported to stable
trees? What about Linus's tree now?
What exactly should I do here?
confused,
greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-13 3:10 ` Ricky WU
@ 2023-09-19 8:04 ` Jade Lovelace
2023-09-19 9:11 ` Ricky WU
0 siblings, 1 reply; 14+ messages in thread
From: Jade Lovelace @ 2023-09-19 8:04 UTC (permalink / raw)
To: ricky_wu; +Cc: paul.grandperrin, regressions, rogerable, stable, wei_wang
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2199 bytes --]
Hi,
> In the past if the BIOS(config space) not set L1-substate our driver will keep drive low CLKREQ# when HOST want to enter power saving state that make whole system not enter the power saving state.
> But this patch we release the CLKREQ# to HOST, make whole system can enter power saving state success when the HOST want to enter the power saving state, but I don't know why this system can not wake out success from power saving state"
>
> This is a PCIE CLKREQ# design problem on those platform, the pcie spec allow device release the CLKREQ# to HOST, this patch only do this....
I spent some time debugging today but I am not a PCIe expert. I think
that the card reader is actually violating the PCIe spec by not forcing
CLKREQ# low on systems that don't support ASPM, as appears to be done
(accidentally?) by the regressing driver change.
The kernel logs on the affected system states the following:
[ 0.142326] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
The PCIe 3.0 spec states (in the description of the Link Control
Register), regarding enabling clock power management:
> Enable Clock Power Management – Applicable only for Upstream Ports and with form factors that support a “Clock Request” (CLKREQ#) mechanism, this bit operates as follows:
> 0b Clock power management is disabled and device must hold CLKREQ# signal low.
> 1b When this bit is Set, the device is permitted to use CLKREQ# signal to power manage Link clock
> according to protocol defined in appropriate form factor specification.
My reading of this is that on this system which does not support ASPM
and therefore also does not support clock PM, the driver must have the
device hold the line low, but I may be wrong.
It's still unclear to me based on studying the schematic of the laptop
and the PCH datasheet why the one PCIe port is able to break the other
one like it does. The CLKREQ# lines are simply connected directly to the
SRCCLKREQ# lines of the PCH, plus a 10k pull-up to 3v3, which seems
entirely reasonable; any breakage surely would be some software/firmware level
misconfiguration.
Jade
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-19 8:04 ` Jade Lovelace
@ 2023-09-19 9:11 ` Ricky WU
0 siblings, 0 replies; 14+ messages in thread
From: Ricky WU @ 2023-09-19 9:11 UTC (permalink / raw)
To: Jade Lovelace
Cc: paul.grandperrin@gmail.com, regressions@lists.linux.dev,
Roger Tseng, stable@vger.kernel.org, Wei_wang
Hi Jade,
I think you have some misunderstand, our set clkreg register is not go directly to control CLKREQ# after setting....
Our device keep CLKREQ# low until enter ASPM, so the system let our device to ASPM mode then we release this CLKREQ# pin
>
> > In the past if the BIOS(config space) not set L1-substate our driver will keep
> drive low CLKREQ# when HOST want to enter power saving state that make
> whole system not enter the power saving state.
>
> > But this patch we release the CLKREQ# to HOST, make whole system can
> enter power saving state success when the HOST want to enter the power
> saving state, but I don't know why this system can not wake out success from
> power saving state"
>
> >
>
> > This is a PCIE CLKREQ# design problem on those platform, the pcie spec
> allow device release the CLKREQ# to HOST, this patch only do this....
>
>
>
> I spent some time debugging today but I am not a PCIe expert. I think
>
> that the card reader is actually violating the PCIe spec by not forcing
>
> CLKREQ# low on systems that don't support ASPM, as appears to be done
>
> (accidentally?) by the regressing driver change.
>
>
>
> The kernel logs on the affected system states the following:
>
> [ 0.142326] ACPI FADT declares the system doesn't support PCIe ASPM, so
> disable it
>
>
>
> The PCIe 3.0 spec states (in the description of the Link Control
>
> Register), regarding enabling clock power management:
>
> > Enable Clock Power Management – Applicable only for Upstream Ports and
> with form factors that support a “Clock Request” (CLKREQ#) mechanism, this
> bit operates as follows:
>
> > 0b Clock power management is disabled and device must hold CLKREQ#
> signal low.
>
> > 1b When this bit is Set, the device is permitted to use CLKREQ# signal to
> power manage Link clock
>
> > according to protocol defined in appropriate form factor specification.
>
>
>
> My reading of this is that on this system which does not support ASPM
>
> and therefore also does not support clock PM, the driver must have the
>
> device hold the line low, but I may be wrong.
>
>
>
> It's still unclear to me based on studying the schematic of the laptop
>
> and the PCH datasheet why the one PCIe port is able to break the other
>
> one like it does. The CLKREQ# lines are simply connected directly to the
>
> SRCCLKREQ# lines of the PCH, plus a 10k pull-up to 3v3, which seems
>
> entirely reasonable; any breakage surely would be some software/firmware
> level
>
> misconfiguration.
>
>
>
> Jade
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-19 7:06 ` Greg KH
@ 2023-09-20 7:30 ` Ricky WU
2023-09-20 7:34 ` Greg KH
2023-09-20 9:33 ` Paul Grandperrin
0 siblings, 2 replies; 14+ messages in thread
From: Ricky WU @ 2023-09-20 7:30 UTC (permalink / raw)
To: Greg KH
Cc: Linux regressions mailing list, Paul Grandperrin,
stable@vger.kernel.org, Wei_wang, Roger Tseng, Linus Torvalds
Hi Greg k-h,
This patch is our solution for this issue...
And now how can I push this?
Hi Paul,
Can you help to try this patch? Is it work for your platform?
Ricky
---
drivers/misc/cardreader/rts5227.c | 55 ++++------------------------
drivers/misc/cardreader/rts5228.c | 57 +++++++++---------------------
drivers/misc/cardreader/rts5249.c | 56 ++++-------------------------
drivers/misc/cardreader/rts5260.c | 43 +++++++---------------
drivers/misc/cardreader/rts5261.c | 52 +++++++--------------------
drivers/misc/cardreader/rtsx_pcr.c | 51 +++++++++++++++++++++++---
6 files changed, 102 insertions(+), 212 deletions(-)
diff --git a/drivers/misc/cardreader/rts5227.c b/drivers/misc/cardreader/rts5227.c
index 3dae5e3a1697..cd512284bfb3 100644
--- a/drivers/misc/cardreader/rts5227.c
+++ b/drivers/misc/cardreader/rts5227.c
@@ -83,63 +83,20 @@ static void rts5227_fetch_vendor_settings(struct rtsx_pcr *pcr)
static void rts5227_init_from_cfg(struct rtsx_pcr *pcr)
{
- struct pci_dev *pdev = pcr->pci;
- int l1ss;
- u32 lval;
struct rtsx_cr_option *option = &pcr->option;
- l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
- if (!l1ss)
- return;
-
- pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
-
if (CHK_PCI_PID(pcr, 0x522A)) {
- if (0 == (lval & 0x0F))
- rtsx_pci_enable_oobs_polling(pcr);
- else
+ if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
+ | PM_L1_1_EN | PM_L1_2_EN))
rtsx_pci_disable_oobs_polling(pcr);
+ else
+ rtsx_pci_enable_oobs_polling(pcr);
}
- if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
- rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
- else
- rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
- rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
- else
- rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
- rtsx_set_dev_flag(pcr, PM_L1_1_EN);
- else
- rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
- rtsx_set_dev_flag(pcr, PM_L1_2_EN);
- else
- rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
-
if (option->ltr_en) {
- u16 val;
-
- pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &val);
- if (val & PCI_EXP_DEVCTL2_LTR_EN) {
- option->ltr_enabled = true;
- option->ltr_active = true;
+ if (option->ltr_enabled)
rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
- } else {
- option->ltr_enabled = false;
- }
}
-
- if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
- | PM_L1_1_EN | PM_L1_2_EN))
- option->force_clkreq_0 = false;
- else
- option->force_clkreq_0 = true;
-
}
static int rts5227_extra_init_hw(struct rtsx_pcr *pcr)
@@ -195,7 +152,7 @@ static int rts5227_extra_init_hw(struct rtsx_pcr *pcr)
}
}
- if (option->force_clkreq_0 && pcr->aspm_mode == ASPM_MODE_CFG)
+ if (option->force_clkreq_0)
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG,
FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
else
diff --git a/drivers/misc/cardreader/rts5228.c b/drivers/misc/cardreader/rts5228.c
index f4ab09439da7..0c7f10bcf6f1 100644
--- a/drivers/misc/cardreader/rts5228.c
+++ b/drivers/misc/cardreader/rts5228.c
@@ -386,59 +386,25 @@ static void rts5228_process_ocp(struct rtsx_pcr *pcr)
static void rts5228_init_from_cfg(struct rtsx_pcr *pcr)
{
- struct pci_dev *pdev = pcr->pci;
- int l1ss;
- u32 lval;
struct rtsx_cr_option *option = &pcr->option;
- l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
- if (!l1ss)
- return;
-
- pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
-
- if (0 == (lval & 0x0F))
- rtsx_pci_enable_oobs_polling(pcr);
- else
+ if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
+ | PM_L1_1_EN | PM_L1_2_EN))
rtsx_pci_disable_oobs_polling(pcr);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
- rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
- else
- rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
- rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
- else
- rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
- rtsx_set_dev_flag(pcr, PM_L1_1_EN);
else
- rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
- rtsx_set_dev_flag(pcr, PM_L1_2_EN);
- else
- rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
+ rtsx_pci_enable_oobs_polling(pcr);
rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0xFF, 0);
- if (option->ltr_en) {
- u16 val;
- pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &val);
- if (val & PCI_EXP_DEVCTL2_LTR_EN) {
- option->ltr_enabled = true;
- option->ltr_active = true;
+ if (option->ltr_en) {
+ if (option->ltr_enabled)
rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
- } else {
- option->ltr_enabled = false;
- }
}
}
static int rts5228_extra_init_hw(struct rtsx_pcr *pcr)
{
+ struct rtsx_cr_option *option = &pcr->option;
rtsx_pci_write_register(pcr, RTS5228_AUTOLOAD_CFG1,
CD_RESUME_EN_MASK, CD_RESUME_EN_MASK);
@@ -469,6 +435,17 @@ static int rts5228_extra_init_hw(struct rtsx_pcr *pcr)
else
rtsx_pci_write_register(pcr, PETXCFG, 0x30, 0x00);
+ /*
+ * If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
+ * to drive low, and we forcibly request clock.
+ */
+ if (option->force_clkreq_0)
+ rtsx_pci_write_register(pcr, PETXCFG,
+ FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
+ else
+ rtsx_pci_write_register(pcr, PETXCFG,
+ FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
+
rtsx_pci_write_register(pcr, PWD_SUSPEND_EN, 0xFF, 0xFB);
if (pcr->rtd3_en) {
diff --git a/drivers/misc/cardreader/rts5249.c b/drivers/misc/cardreader/rts5249.c
index 47ab72a43256..6c81040e18be 100644
--- a/drivers/misc/cardreader/rts5249.c
+++ b/drivers/misc/cardreader/rts5249.c
@@ -86,64 +86,22 @@ static void rtsx_base_fetch_vendor_settings(struct rtsx_pcr *pcr)
static void rts5249_init_from_cfg(struct rtsx_pcr *pcr)
{
- struct pci_dev *pdev = pcr->pci;
- int l1ss;
struct rtsx_cr_option *option = &(pcr->option);
- u32 lval;
-
- l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
- if (!l1ss)
- return;
-
- pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
if (CHK_PCI_PID(pcr, PID_524A) || CHK_PCI_PID(pcr, PID_525A)) {
- if (0 == (lval & 0x0F))
- rtsx_pci_enable_oobs_polling(pcr);
- else
+ if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
+ | PM_L1_1_EN | PM_L1_2_EN))
rtsx_pci_disable_oobs_polling(pcr);
+ else
+ rtsx_pci_enable_oobs_polling(pcr);
}
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
- rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
- rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
- rtsx_set_dev_flag(pcr, PM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
- rtsx_set_dev_flag(pcr, PM_L1_2_EN);
-
if (option->ltr_en) {
- u16 val;
-
- pcie_capability_read_word(pdev, PCI_EXP_DEVCTL2, &val);
- if (val & PCI_EXP_DEVCTL2_LTR_EN) {
- option->ltr_enabled = true;
- option->ltr_active = true;
+ if (option->ltr_enabled)
rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
- } else {
- option->ltr_enabled = false;
- }
}
}
-static int rts5249_init_from_hw(struct rtsx_pcr *pcr)
-{
- struct rtsx_cr_option *option = &(pcr->option);
-
- if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
- | PM_L1_1_EN | PM_L1_2_EN))
- option->force_clkreq_0 = false;
- else
- option->force_clkreq_0 = true;
-
- return 0;
-}
-
static void rts52xa_force_power_down(struct rtsx_pcr *pcr, u8 pm_state, bool runtime)
{
/* Set relink_time to 0 */
@@ -276,7 +234,6 @@ static int rts5249_extra_init_hw(struct rtsx_pcr *pcr)
struct rtsx_cr_option *option = &(pcr->option);
rts5249_init_from_cfg(pcr);
- rts5249_init_from_hw(pcr);
rtsx_pci_init_cmd(pcr);
@@ -327,11 +284,12 @@ static int rts5249_extra_init_hw(struct rtsx_pcr *pcr)
}
}
+
/*
* If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
* to drive low, and we forcibly request clock.
*/
- if (option->force_clkreq_0 && pcr->aspm_mode == ASPM_MODE_CFG)
+ if (option->force_clkreq_0)
rtsx_pci_write_register(pcr, PETXCFG,
FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
else
diff --git a/drivers/misc/cardreader/rts5260.c b/drivers/misc/cardreader/rts5260.c
index 79b18f6f73a8..d2d3a6ccb8f7 100644
--- a/drivers/misc/cardreader/rts5260.c
+++ b/drivers/misc/cardreader/rts5260.c
@@ -480,47 +480,19 @@ static void rts5260_pwr_saving_setting(struct rtsx_pcr *pcr)
static void rts5260_init_from_cfg(struct rtsx_pcr *pcr)
{
- struct pci_dev *pdev = pcr->pci;
- int l1ss;
struct rtsx_cr_option *option = &pcr->option;
- u32 lval;
-
- l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
- if (!l1ss)
- return;
-
- pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
- rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
- rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
- rtsx_set_dev_flag(pcr, PM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
- rtsx_set_dev_flag(pcr, PM_L1_2_EN);
rts5260_pwr_saving_setting(pcr);
if (option->ltr_en) {
- u16 val;
-
- pcie_capability_read_word(pdev, PCI_EXP_DEVCTL2, &val);
- if (val & PCI_EXP_DEVCTL2_LTR_EN) {
- option->ltr_enabled = true;
- option->ltr_active = true;
+ if (option->ltr_enabled)
rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
- } else {
- option->ltr_enabled = false;
- }
}
}
static int rts5260_extra_init_hw(struct rtsx_pcr *pcr)
{
+ struct rtsx_cr_option *option = &pcr->option;
/* Set mcu_cnt to 7 to ensure data can be sampled properly */
rtsx_pci_write_register(pcr, 0xFC03, 0x7F, 0x07);
@@ -539,6 +511,17 @@ static int rts5260_extra_init_hw(struct rtsx_pcr *pcr)
rts5260_init_hw(pcr);
+ /*
+ * If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
+ * to drive low, and we forcibly request clock.
+ */
+ if (option->force_clkreq_0)
+ rtsx_pci_write_register(pcr, PETXCFG,
+ FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
+ else
+ rtsx_pci_write_register(pcr, PETXCFG,
+ FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
+
rtsx_pci_write_register(pcr, pcr->reg_pm_ctrl3, 0x10, 0x00);
return 0;
diff --git a/drivers/misc/cardreader/rts5261.c b/drivers/misc/cardreader/rts5261.c
index 94af6bf8a25a..67252512a132 100644
--- a/drivers/misc/cardreader/rts5261.c
+++ b/drivers/misc/cardreader/rts5261.c
@@ -454,54 +454,17 @@ static void rts5261_init_from_hw(struct rtsx_pcr *pcr)
static void rts5261_init_from_cfg(struct rtsx_pcr *pcr)
{
- struct pci_dev *pdev = pcr->pci;
- int l1ss;
- u32 lval;
struct rtsx_cr_option *option = &pcr->option;
- l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
- if (!l1ss)
- return;
-
- pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
- rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
- else
- rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
- rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
- else
- rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
- rtsx_set_dev_flag(pcr, PM_L1_1_EN);
- else
- rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
-
- if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
- rtsx_set_dev_flag(pcr, PM_L1_2_EN);
- else
- rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
-
- rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0xFF, 0);
if (option->ltr_en) {
- u16 val;
-
- pcie_capability_read_word(pdev, PCI_EXP_DEVCTL2, &val);
- if (val & PCI_EXP_DEVCTL2_LTR_EN) {
- option->ltr_enabled = true;
- option->ltr_active = true;
+ if (option->ltr_enabled)
rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
- } else {
- option->ltr_enabled = false;
- }
}
}
static int rts5261_extra_init_hw(struct rtsx_pcr *pcr)
{
+ struct rtsx_cr_option *option = &pcr->option;
u32 val;
rtsx_pci_write_register(pcr, RTS5261_AUTOLOAD_CFG1,
@@ -547,6 +510,17 @@ static int rts5261_extra_init_hw(struct rtsx_pcr *pcr)
else
rtsx_pci_write_register(pcr, PETXCFG, 0x30, 0x00);
+ /*
+ * If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
+ * to drive low, and we forcibly request clock.
+ */
+ if (option->force_clkreq_0)
+ rtsx_pci_write_register(pcr, PETXCFG,
+ FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
+ else
+ rtsx_pci_write_register(pcr, PETXCFG,
+ FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
+
rtsx_pci_write_register(pcr, PWD_SUSPEND_EN, 0xFF, 0xFB);
if (pcr->rtd3_en) {
diff --git a/drivers/misc/cardreader/rtsx_pcr.c b/drivers/misc/cardreader/rtsx_pcr.c
index a3f4b52bb159..a30751ad3733 100644
--- a/drivers/misc/cardreader/rtsx_pcr.c
+++ b/drivers/misc/cardreader/rtsx_pcr.c
@@ -1326,11 +1326,8 @@ static int rtsx_pci_init_hw(struct rtsx_pcr *pcr)
return err;
}
- if (pcr->aspm_mode == ASPM_MODE_REG) {
+ if (pcr->aspm_mode == ASPM_MODE_REG)
rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0x30, 0x30);
- rtsx_pci_write_register(pcr, PETXCFG,
- FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
- }
/* No CD interrupt if probing driver with card inserted.
* So we need to initialize pcr->card_exist here.
@@ -1345,7 +1342,9 @@ static int rtsx_pci_init_hw(struct rtsx_pcr *pcr)
static int rtsx_pci_init_chip(struct rtsx_pcr *pcr)
{
- int err;
+ struct rtsx_cr_option *option = &(pcr->option);
+ int err, l1ss;
+ u32 lval;
u16 cfg_val;
u8 val;
@@ -1430,6 +1429,48 @@ static int rtsx_pci_init_chip(struct rtsx_pcr *pcr)
pcr->aspm_enabled = true;
}
+ l1ss = pci_find_ext_capability(pcr->pci, PCI_EXT_CAP_ID_L1SS);
+ if (l1ss) {
+ pci_read_config_dword(pcr->pci, l1ss + PCI_L1SS_CTL1, &lval);
+
+ if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
+ rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
+ else
+ rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
+
+ if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
+ rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
+ else
+ rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
+
+ if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
+ rtsx_set_dev_flag(pcr, PM_L1_1_EN);
+ else
+ rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
+
+ if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
+ rtsx_set_dev_flag(pcr, PM_L1_2_EN);
+ else
+ rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
+
+ pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &cfg_val);
+ if (cfg_val & PCI_EXP_DEVCTL2_LTR_EN) {
+ option->ltr_enabled = true;
+ option->ltr_active = true;
+ } else {
+ option->ltr_enabled = false;
+ }
+
+ if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
+ | PM_L1_1_EN | PM_L1_2_EN))
+ option->force_clkreq_0 = false;
+ else
+ option->force_clkreq_0 = true;
+ } else {
+ option->ltr_enabled = false;
+ option->force_clkreq_0 = true;
+ }
+
if (pcr->ops->fetch_vendor_settings)
pcr->ops->fetch_vendor_settings(pcr);
--
2.25.1
> -----Original Message-----
> From: Greg KH <gregkh@linuxfoundation.org>
> Sent: Tuesday, September 19, 2023 3:06 PM
> To: Ricky WU <ricky_wu@realtek.com>
> Cc: Linux regressions mailing list <regressions@lists.linux.dev>; Paul
> Grandperrin <paul.grandperrin@gmail.com>; stable@vger.kernel.org;
> Wei_wang <wei_wang@realsil.com.cn>; Roger Tseng
> <rogerable@realtek.com>; Linus Torvalds <torvalds@linux-foundation.org>
> Subject: Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from
> drivers/misc/cardreader breaks NVME power state, preventing system boot
>
>
> External mail.
>
>
>
> On Tue, Sep 19, 2023 at 02:20:53AM +0000, Ricky WU wrote:
> > Hi Greg k-h,
> >
> > In order to cover the those platform Power saving issue, our approach
> > on new patch will be different from the previous patch
> (101bd907b4244a726980ee67f95ed9cafab6ff7a).
> >
> > So we need used fixed Tag on
> 101bd907b4244a726980ee67f95ed9cafab6ff7a
> > or a new patch for this problem?
>
> I'm sorry, but I do not understand. I think a new change is needed here, right?
> Or are you wanting a different commit backported to stable trees? What
> about Linus's tree now?
>
> What exactly should I do here?
>
> confused,
>
> greg k-h
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-20 7:30 ` Ricky WU
@ 2023-09-20 7:34 ` Greg KH
2023-09-20 8:32 ` Ricky WU
2023-09-20 9:33 ` Paul Grandperrin
1 sibling, 1 reply; 14+ messages in thread
From: Greg KH @ 2023-09-20 7:34 UTC (permalink / raw)
To: Ricky WU
Cc: Linux regressions mailing list, Paul Grandperrin,
stable@vger.kernel.org, Wei_wang, Roger Tseng, Linus Torvalds
On Wed, Sep 20, 2023 at 07:30:00AM +0000, Ricky WU wrote:
> Hi Greg k-h,
>
> This patch is our solution for this issue...
> And now how can I push this?
Submit it properly like any other patch, what is preventing that from
happening?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-20 7:34 ` Greg KH
@ 2023-09-20 8:32 ` Ricky WU
2023-09-26 11:23 ` Salvatore Bonaccorso
0 siblings, 1 reply; 14+ messages in thread
From: Ricky WU @ 2023-09-20 8:32 UTC (permalink / raw)
To: Greg KH
Cc: Linux regressions mailing list, Paul Grandperrin,
stable@vger.kernel.org, Wei_wang, Roger Tseng, Linus Torvalds
> On Wed, Sep 20, 2023 at 07:30:00AM +0000, Ricky WU wrote:
> > Hi Greg k-h,
> >
> > This patch is our solution for this issue...
> > And now how can I push this?
>
> Submit it properly like any other patch, what is preventing that from
> happening?
>
(commit 8ee39ec) some reader no longer force #CLKREQ to low when system need to enter ASPM.
But some platform maybe not implement complete ASPM? I don't know..... it causes problems...
Like in the past Only the platform support L1ss we release the #CLKREQ.
But new patch we move the judgment (L1ss) to probe, because we met some host will clean the config space from S3 or some power saving mode
And also we think just to read config space one time when the driver start is enough
> thanks,
>
> greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-20 7:30 ` Ricky WU
2023-09-20 7:34 ` Greg KH
@ 2023-09-20 9:33 ` Paul Grandperrin
1 sibling, 0 replies; 14+ messages in thread
From: Paul Grandperrin @ 2023-09-20 9:33 UTC (permalink / raw)
To: Ricky WU
Cc: Greg KH, Linux regressions mailing list, stable, Wei_wang,
Roger Tseng, Linus Torvalds
Hi Ricky,
I'm going to test it right now! Thanks!
On Wed, Sep 20 2023 at 07:30:00 +00:00:00, Ricky WU
<ricky_wu@realtek.com> wrote:
> Hi Greg k-h,
>
> This patch is our solution for this issue...
> And now how can I push this?
>
> Hi Paul,
>
> Can you help to try this patch? Is it work for your platform?
>
> Ricky
>
>
> ---
> drivers/misc/cardreader/rts5227.c | 55 ++++------------------------
> drivers/misc/cardreader/rts5228.c | 57
> +++++++++---------------------
> drivers/misc/cardreader/rts5249.c | 56 ++++-------------------------
> drivers/misc/cardreader/rts5260.c | 43 +++++++---------------
> drivers/misc/cardreader/rts5261.c | 52 +++++++--------------------
> drivers/misc/cardreader/rtsx_pcr.c | 51 +++++++++++++++++++++++---
> 6 files changed, 102 insertions(+), 212 deletions(-)
>
> diff --git a/drivers/misc/cardreader/rts5227.c
> b/drivers/misc/cardreader/rts5227.c
> index 3dae5e3a1697..cd512284bfb3 100644
> --- a/drivers/misc/cardreader/rts5227.c
> +++ b/drivers/misc/cardreader/rts5227.c
> @@ -83,63 +83,20 @@ static void rts5227_fetch_vendor_settings(struct
> rtsx_pcr *pcr)
>
> static void rts5227_init_from_cfg(struct rtsx_pcr *pcr)
> {
> - struct pci_dev *pdev = pcr->pci;
> - int l1ss;
> - u32 lval;
> struct rtsx_cr_option *option = &pcr->option;
>
> - l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
> - if (!l1ss)
> - return;
> -
> - pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
> -
> if (CHK_PCI_PID(pcr, 0x522A)) {
> - if (0 == (lval & 0x0F))
> - rtsx_pci_enable_oobs_polling(pcr);
> - else
> + if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
> + | PM_L1_1_EN | PM_L1_2_EN))
> rtsx_pci_disable_oobs_polling(pcr);
> + else
> + rtsx_pci_enable_oobs_polling(pcr);
> }
>
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
> - rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
> - else
> - rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
> - rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
> - else
> - rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
> - rtsx_set_dev_flag(pcr, PM_L1_1_EN);
> - else
> - rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
> - rtsx_set_dev_flag(pcr, PM_L1_2_EN);
> - else
> - rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
> -
> if (option->ltr_en) {
> - u16 val;
> -
> - pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &val);
> - if (val & PCI_EXP_DEVCTL2_LTR_EN) {
> - option->ltr_enabled = true;
> - option->ltr_active = true;
> + if (option->ltr_enabled)
> rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
> - } else {
> - option->ltr_enabled = false;
> - }
> }
> -
> - if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
> - | PM_L1_1_EN | PM_L1_2_EN))
> - option->force_clkreq_0 = false;
> - else
> - option->force_clkreq_0 = true;
> -
> }
>
> static int rts5227_extra_init_hw(struct rtsx_pcr *pcr)
> @@ -195,7 +152,7 @@ static int rts5227_extra_init_hw(struct rtsx_pcr
> *pcr)
> }
> }
>
> - if (option->force_clkreq_0 && pcr->aspm_mode == ASPM_MODE_CFG)
> + if (option->force_clkreq_0)
> rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG,
> FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
> else
> diff --git a/drivers/misc/cardreader/rts5228.c
> b/drivers/misc/cardreader/rts5228.c
> index f4ab09439da7..0c7f10bcf6f1 100644
> --- a/drivers/misc/cardreader/rts5228.c
> +++ b/drivers/misc/cardreader/rts5228.c
> @@ -386,59 +386,25 @@ static void rts5228_process_ocp(struct rtsx_pcr
> *pcr)
>
> static void rts5228_init_from_cfg(struct rtsx_pcr *pcr)
> {
> - struct pci_dev *pdev = pcr->pci;
> - int l1ss;
> - u32 lval;
> struct rtsx_cr_option *option = &pcr->option;
>
> - l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
> - if (!l1ss)
> - return;
> -
> - pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
> -
> - if (0 == (lval & 0x0F))
> - rtsx_pci_enable_oobs_polling(pcr);
> - else
> + if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
> + | PM_L1_1_EN | PM_L1_2_EN))
> rtsx_pci_disable_oobs_polling(pcr);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
> - rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
> - else
> - rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
> - rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
> - else
> - rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
> - rtsx_set_dev_flag(pcr, PM_L1_1_EN);
> else
> - rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
> - rtsx_set_dev_flag(pcr, PM_L1_2_EN);
> - else
> - rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
> + rtsx_pci_enable_oobs_polling(pcr);
>
> rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0xFF, 0);
> - if (option->ltr_en) {
> - u16 val;
>
> - pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &val);
> - if (val & PCI_EXP_DEVCTL2_LTR_EN) {
> - option->ltr_enabled = true;
> - option->ltr_active = true;
> + if (option->ltr_en) {
> + if (option->ltr_enabled)
> rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
> - } else {
> - option->ltr_enabled = false;
> - }
> }
> }
>
> static int rts5228_extra_init_hw(struct rtsx_pcr *pcr)
> {
> + struct rtsx_cr_option *option = &pcr->option;
>
> rtsx_pci_write_register(pcr, RTS5228_AUTOLOAD_CFG1,
> CD_RESUME_EN_MASK, CD_RESUME_EN_MASK);
> @@ -469,6 +435,17 @@ static int rts5228_extra_init_hw(struct rtsx_pcr
> *pcr)
> else
> rtsx_pci_write_register(pcr, PETXCFG, 0x30, 0x00);
>
> + /*
> + * If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
> + * to drive low, and we forcibly request clock.
> + */
> + if (option->force_clkreq_0)
> + rtsx_pci_write_register(pcr, PETXCFG,
> + FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
> + else
> + rtsx_pci_write_register(pcr, PETXCFG,
> + FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
> +
> rtsx_pci_write_register(pcr, PWD_SUSPEND_EN, 0xFF, 0xFB);
>
> if (pcr->rtd3_en) {
> diff --git a/drivers/misc/cardreader/rts5249.c
> b/drivers/misc/cardreader/rts5249.c
> index 47ab72a43256..6c81040e18be 100644
> --- a/drivers/misc/cardreader/rts5249.c
> +++ b/drivers/misc/cardreader/rts5249.c
> @@ -86,64 +86,22 @@ static void
> rtsx_base_fetch_vendor_settings(struct rtsx_pcr *pcr)
>
> static void rts5249_init_from_cfg(struct rtsx_pcr *pcr)
> {
> - struct pci_dev *pdev = pcr->pci;
> - int l1ss;
> struct rtsx_cr_option *option = &(pcr->option);
> - u32 lval;
> -
> - l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
> - if (!l1ss)
> - return;
> -
> - pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
>
> if (CHK_PCI_PID(pcr, PID_524A) || CHK_PCI_PID(pcr, PID_525A)) {
> - if (0 == (lval & 0x0F))
> - rtsx_pci_enable_oobs_polling(pcr);
> - else
> + if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
> + | PM_L1_1_EN | PM_L1_2_EN))
> rtsx_pci_disable_oobs_polling(pcr);
> + else
> + rtsx_pci_enable_oobs_polling(pcr);
> }
>
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
> - rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
> - rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
> - rtsx_set_dev_flag(pcr, PM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
> - rtsx_set_dev_flag(pcr, PM_L1_2_EN);
> -
> if (option->ltr_en) {
> - u16 val;
> -
> - pcie_capability_read_word(pdev, PCI_EXP_DEVCTL2, &val);
> - if (val & PCI_EXP_DEVCTL2_LTR_EN) {
> - option->ltr_enabled = true;
> - option->ltr_active = true;
> + if (option->ltr_enabled)
> rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
> - } else {
> - option->ltr_enabled = false;
> - }
> }
> }
>
> -static int rts5249_init_from_hw(struct rtsx_pcr *pcr)
> -{
> - struct rtsx_cr_option *option = &(pcr->option);
> -
> - if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
> - | PM_L1_1_EN | PM_L1_2_EN))
> - option->force_clkreq_0 = false;
> - else
> - option->force_clkreq_0 = true;
> -
> - return 0;
> -}
> -
> static void rts52xa_force_power_down(struct rtsx_pcr *pcr, u8
> pm_state, bool runtime)
> {
> /* Set relink_time to 0 */
> @@ -276,7 +234,6 @@ static int rts5249_extra_init_hw(struct rtsx_pcr
> *pcr)
> struct rtsx_cr_option *option = &(pcr->option);
>
> rts5249_init_from_cfg(pcr);
> - rts5249_init_from_hw(pcr);
>
> rtsx_pci_init_cmd(pcr);
>
> @@ -327,11 +284,12 @@ static int rts5249_extra_init_hw(struct
> rtsx_pcr *pcr)
> }
> }
>
> +
> /*
> * If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
> * to drive low, and we forcibly request clock.
> */
> - if (option->force_clkreq_0 && pcr->aspm_mode == ASPM_MODE_CFG)
> + if (option->force_clkreq_0)
> rtsx_pci_write_register(pcr, PETXCFG,
> FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
> else
> diff --git a/drivers/misc/cardreader/rts5260.c
> b/drivers/misc/cardreader/rts5260.c
> index 79b18f6f73a8..d2d3a6ccb8f7 100644
> --- a/drivers/misc/cardreader/rts5260.c
> +++ b/drivers/misc/cardreader/rts5260.c
> @@ -480,47 +480,19 @@ static void rts5260_pwr_saving_setting(struct
> rtsx_pcr *pcr)
>
> static void rts5260_init_from_cfg(struct rtsx_pcr *pcr)
> {
> - struct pci_dev *pdev = pcr->pci;
> - int l1ss;
> struct rtsx_cr_option *option = &pcr->option;
> - u32 lval;
> -
> - l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
> - if (!l1ss)
> - return;
> -
> - pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
> - rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
> - rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
> - rtsx_set_dev_flag(pcr, PM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
> - rtsx_set_dev_flag(pcr, PM_L1_2_EN);
>
> rts5260_pwr_saving_setting(pcr);
>
> if (option->ltr_en) {
> - u16 val;
> -
> - pcie_capability_read_word(pdev, PCI_EXP_DEVCTL2, &val);
> - if (val & PCI_EXP_DEVCTL2_LTR_EN) {
> - option->ltr_enabled = true;
> - option->ltr_active = true;
> + if (option->ltr_enabled)
> rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
> - } else {
> - option->ltr_enabled = false;
> - }
> }
> }
>
> static int rts5260_extra_init_hw(struct rtsx_pcr *pcr)
> {
> + struct rtsx_cr_option *option = &pcr->option;
>
> /* Set mcu_cnt to 7 to ensure data can be sampled properly */
> rtsx_pci_write_register(pcr, 0xFC03, 0x7F, 0x07);
> @@ -539,6 +511,17 @@ static int rts5260_extra_init_hw(struct rtsx_pcr
> *pcr)
>
> rts5260_init_hw(pcr);
>
> + /*
> + * If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
> + * to drive low, and we forcibly request clock.
> + */
> + if (option->force_clkreq_0)
> + rtsx_pci_write_register(pcr, PETXCFG,
> + FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
> + else
> + rtsx_pci_write_register(pcr, PETXCFG,
> + FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
> +
> rtsx_pci_write_register(pcr, pcr->reg_pm_ctrl3, 0x10, 0x00);
>
> return 0;
> diff --git a/drivers/misc/cardreader/rts5261.c
> b/drivers/misc/cardreader/rts5261.c
> index 94af6bf8a25a..67252512a132 100644
> --- a/drivers/misc/cardreader/rts5261.c
> +++ b/drivers/misc/cardreader/rts5261.c
> @@ -454,54 +454,17 @@ static void rts5261_init_from_hw(struct
> rtsx_pcr *pcr)
>
> static void rts5261_init_from_cfg(struct rtsx_pcr *pcr)
> {
> - struct pci_dev *pdev = pcr->pci;
> - int l1ss;
> - u32 lval;
> struct rtsx_cr_option *option = &pcr->option;
>
> - l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS);
> - if (!l1ss)
> - return;
> -
> - pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
> - rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
> - else
> - rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
> - rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
> - else
> - rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
> - rtsx_set_dev_flag(pcr, PM_L1_1_EN);
> - else
> - rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
> -
> - if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
> - rtsx_set_dev_flag(pcr, PM_L1_2_EN);
> - else
> - rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
> -
> - rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0xFF, 0);
> if (option->ltr_en) {
> - u16 val;
> -
> - pcie_capability_read_word(pdev, PCI_EXP_DEVCTL2, &val);
> - if (val & PCI_EXP_DEVCTL2_LTR_EN) {
> - option->ltr_enabled = true;
> - option->ltr_active = true;
> + if (option->ltr_enabled)
> rtsx_set_ltr_latency(pcr, option->ltr_active_latency);
> - } else {
> - option->ltr_enabled = false;
> - }
> }
> }
>
> static int rts5261_extra_init_hw(struct rtsx_pcr *pcr)
> {
> + struct rtsx_cr_option *option = &pcr->option;
> u32 val;
>
> rtsx_pci_write_register(pcr, RTS5261_AUTOLOAD_CFG1,
> @@ -547,6 +510,17 @@ static int rts5261_extra_init_hw(struct rtsx_pcr
> *pcr)
> else
> rtsx_pci_write_register(pcr, PETXCFG, 0x30, 0x00);
>
> + /*
> + * If u_force_clkreq_0 is enabled, CLKREQ# PIN will be forced
> + * to drive low, and we forcibly request clock.
> + */
> + if (option->force_clkreq_0)
> + rtsx_pci_write_register(pcr, PETXCFG,
> + FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_LOW);
> + else
> + rtsx_pci_write_register(pcr, PETXCFG,
> + FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
> +
> rtsx_pci_write_register(pcr, PWD_SUSPEND_EN, 0xFF, 0xFB);
>
> if (pcr->rtd3_en) {
> diff --git a/drivers/misc/cardreader/rtsx_pcr.c
> b/drivers/misc/cardreader/rtsx_pcr.c
> index a3f4b52bb159..a30751ad3733 100644
> --- a/drivers/misc/cardreader/rtsx_pcr.c
> +++ b/drivers/misc/cardreader/rtsx_pcr.c
> @@ -1326,11 +1326,8 @@ static int rtsx_pci_init_hw(struct rtsx_pcr
> *pcr)
> return err;
> }
>
> - if (pcr->aspm_mode == ASPM_MODE_REG) {
> + if (pcr->aspm_mode == ASPM_MODE_REG)
> rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0x30, 0x30);
> - rtsx_pci_write_register(pcr, PETXCFG,
> - FORCE_CLKREQ_DELINK_MASK, FORCE_CLKREQ_HIGH);
> - }
>
> /* No CD interrupt if probing driver with card inserted.
> * So we need to initialize pcr->card_exist here.
> @@ -1345,7 +1342,9 @@ static int rtsx_pci_init_hw(struct rtsx_pcr
> *pcr)
>
> static int rtsx_pci_init_chip(struct rtsx_pcr *pcr)
> {
> - int err;
> + struct rtsx_cr_option *option = &(pcr->option);
> + int err, l1ss;
> + u32 lval;
> u16 cfg_val;
> u8 val;
>
> @@ -1430,6 +1429,48 @@ static int rtsx_pci_init_chip(struct rtsx_pcr
> *pcr)
> pcr->aspm_enabled = true;
> }
>
> + l1ss = pci_find_ext_capability(pcr->pci, PCI_EXT_CAP_ID_L1SS);
> + if (l1ss) {
> + pci_read_config_dword(pcr->pci, l1ss + PCI_L1SS_CTL1, &lval);
> +
> + if (lval & PCI_L1SS_CTL1_ASPM_L1_1)
> + rtsx_set_dev_flag(pcr, ASPM_L1_1_EN);
> + else
> + rtsx_clear_dev_flag(pcr, ASPM_L1_1_EN);
> +
> + if (lval & PCI_L1SS_CTL1_ASPM_L1_2)
> + rtsx_set_dev_flag(pcr, ASPM_L1_2_EN);
> + else
> + rtsx_clear_dev_flag(pcr, ASPM_L1_2_EN);
> +
> + if (lval & PCI_L1SS_CTL1_PCIPM_L1_1)
> + rtsx_set_dev_flag(pcr, PM_L1_1_EN);
> + else
> + rtsx_clear_dev_flag(pcr, PM_L1_1_EN);
> +
> + if (lval & PCI_L1SS_CTL1_PCIPM_L1_2)
> + rtsx_set_dev_flag(pcr, PM_L1_2_EN);
> + else
> + rtsx_clear_dev_flag(pcr, PM_L1_2_EN);
> +
> + pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &cfg_val);
> + if (cfg_val & PCI_EXP_DEVCTL2_LTR_EN) {
> + option->ltr_enabled = true;
> + option->ltr_active = true;
> + } else {
> + option->ltr_enabled = false;
> + }
> +
> + if (rtsx_check_dev_flag(pcr, ASPM_L1_1_EN | ASPM_L1_2_EN
> + | PM_L1_1_EN | PM_L1_2_EN))
> + option->force_clkreq_0 = false;
> + else
> + option->force_clkreq_0 = true;
> + } else {
> + option->ltr_enabled = false;
> + option->force_clkreq_0 = true;
> + }
> +
> if (pcr->ops->fetch_vendor_settings)
> pcr->ops->fetch_vendor_settings(pcr);
>
> --
> 2.25.1
>
>> -----Original Message-----
>> From: Greg KH <gregkh@linuxfoundation.org>
>> Sent: Tuesday, September 19, 2023 3:06 PM
>> To: Ricky WU <ricky_wu@realtek.com>
>> Cc: Linux regressions mailing list <regressions@lists.linux.dev>;
>> Paul
>> Grandperrin <paul.grandperrin@gmail.com>; stable@vger.kernel.org;
>> Wei_wang <wei_wang@realsil.com.cn>; Roger Tseng
>> <rogerable@realtek.com>; Linus Torvalds
>> <torvalds@linux-foundation.org>
>> Subject: Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from
>> drivers/misc/cardreader breaks NVME power state, preventing system
>> boot
>>
>>
>> External mail.
>>
>>
>>
>> On Tue, Sep 19, 2023 at 02:20:53AM +0000, Ricky WU wrote:
>> > Hi Greg k-h,
>> >
>> > In order to cover the those platform Power saving issue, our
>> approach
>> > on new patch will be different from the previous patch
>> (101bd907b4244a726980ee67f95ed9cafab6ff7a).
>> >
>> > So we need used fixed Tag on
>> 101bd907b4244a726980ee67f95ed9cafab6ff7a
>> > or a new patch for this problem?
>>
>> I'm sorry, but I do not understand. I think a new change is needed
>> here, right?
>> Or are you wanting a different commit backported to stable trees?
>> What
>> about Linus's tree now?
>>
>> What exactly should I do here?
>>
>> confused,
>>
>> greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-20 8:32 ` Ricky WU
@ 2023-09-26 11:23 ` Salvatore Bonaccorso
2023-09-26 11:51 ` Linux regression tracking (Thorsten Leemhuis)
0 siblings, 1 reply; 14+ messages in thread
From: Salvatore Bonaccorso @ 2023-09-26 11:23 UTC (permalink / raw)
To: Ricky WU
Cc: Greg KH, Linux regressions mailing list, Paul Grandperrin,
stable@vger.kernel.org, Wei_wang, Roger Tseng, Linus Torvalds
Hi
[apologies if I missed some followup but was not able to find the
answer]
On Wed, Sep 20, 2023 at 08:32:17AM +0000, Ricky WU wrote:
> > On Wed, Sep 20, 2023 at 07:30:00AM +0000, Ricky WU wrote:
> > > Hi Greg k-h,
> > >
> > > This patch is our solution for this issue...
> > > And now how can I push this?
> >
> > Submit it properly like any other patch, what is preventing that from
> > happening?
> >
>
> (commit 8ee39ec) some reader no longer force #CLKREQ to low when system need to enter ASPM.
> But some platform maybe not implement complete ASPM? I don't know..... it causes problems...
>
> Like in the past Only the platform support L1ss we release the #CLKREQ.
> But new patch we move the judgment (L1ss) to probe, because we met some host will clean the config space from S3 or some power saving mode
> And also we think just to read config space one time when the driver start is enough
Is there a potential fix which is queued for this or would be the
safest option to unbreak the regression to revert the commit in the
stable trees temporarily?
I'm asking because in Debian we got the report at
https://bugs.debian.org/1052063
(and ideally to unbreak the situation for the user I would like to
include a fix in the next upload we do, but following what you as
upstream will do ideally).
Regards,
Salvatore
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot
2023-09-26 11:23 ` Salvatore Bonaccorso
@ 2023-09-26 11:51 ` Linux regression tracking (Thorsten Leemhuis)
0 siblings, 0 replies; 14+ messages in thread
From: Linux regression tracking (Thorsten Leemhuis) @ 2023-09-26 11:51 UTC (permalink / raw)
To: Salvatore Bonaccorso, Ricky WU
Cc: Greg KH, Linux regressions mailing list, Paul Grandperrin,
stable@vger.kernel.org, Wei_wang, Roger Tseng, Linus Torvalds
On 26.09.23 13:23, Salvatore Bonaccorso wrote:
> On Wed, Sep 20, 2023 at 08:32:17AM +0000, Ricky WU wrote:
>>> On Wed, Sep 20, 2023 at 07:30:00AM +0000, Ricky WU wrote:
>
>>>> This patch is our solution for this issue...
>>>> And now how can I push this?
>>>
>>> Submit it properly like any other patch, what is preventing that from
>>> happening?
>>
>> (commit 8ee39ec) some reader no longer force #CLKREQ to low when system need to enter ASPM.
>> But some platform maybe not implement complete ASPM? I don't know..... it causes problems...
>>
>> Like in the past Only the platform support L1ss we release the #CLKREQ.
>> But new patch we move the judgment (L1ss) to probe, because we met some host will clean the config space from S3 or some power saving mode
>> And also we think just to read config space one time when the driver start is enough
>
> Is there a potential fix which is queued for this or would be the
> safest option to unbreak the regression to revert the commit in the
> stable trees temporarily?
>
> I'm asking because in Debian we got the report at
> https://bugs.debian.org/1052063
>
> (and ideally to unbreak the situation for the user I would like to
> include a fix in the next upload we do, but following what you as
> upstream will do ideally).
A fix is out for review and will likely be merged for mainline soon:
https://lore.kernel.org/all/37b1afb997f14946a8784c73d1f9a4f5@realtek.com/
https://lore.kernel.org/all/2023092522-climatic-commend-8c99@gregkh/
A few distros reverted the culprit for now in their stable trees.
HTH, Ciao, Thorsten
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2023-09-26 11:51 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-12 12:29 Regression since 6.1.46 (commit 8ee39ec): rtsx_pci from drivers/misc/cardreader breaks NVME power state, preventing system boot Paul Grandperrin
2023-09-12 17:10 ` Linux regression tracking (Thorsten Leemhuis)
2023-09-13 5:03 ` Greg KH
2023-09-19 2:20 ` Ricky WU
2023-09-19 7:06 ` Greg KH
2023-09-20 7:30 ` Ricky WU
2023-09-20 7:34 ` Greg KH
2023-09-20 8:32 ` Ricky WU
2023-09-26 11:23 ` Salvatore Bonaccorso
2023-09-26 11:51 ` Linux regression tracking (Thorsten Leemhuis)
2023-09-20 9:33 ` Paul Grandperrin
2023-09-13 3:10 ` Ricky WU
2023-09-19 8:04 ` Jade Lovelace
2023-09-19 9:11 ` Ricky WU
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).