Linux-PCI Archive on lore.kernel.org
 help / color / Atom feed
From: "吳昊澄 Ricky" <ricky_wu@realtek.com>
To: Bjorn Helgaas <helgaas@kernel.org>, James Ettle <james@ettle.org.uk>
Cc: Rui Feng <rui_feng@realsil.com.cn>, Arnd Bergmann <arnd@arndb.de>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	Len Brown <lenb@kernel.org>,
	Puranjay Mohan <puranjay12@gmail.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Jacopo De Simoi <wilderkde@gmail.com>
Subject: RE: rtsx_pci not restoring ASPM state after suspend/resume
Date: Tue, 28 Jul 2020 05:46:27 +0000
Message-ID: <bbbf5619b17e43029a75ef60b6f4fc40@realtek.com> (raw)
In-Reply-To: <20200727214712.GA1777201@bjorn-Precision-5520>


> On Mon, Jul 27, 2020 at 08:52:25PM +0100, James Ettle wrote:
> > On Mon, 2020-07-27 at 09:14 -0500, Bjorn Helgaas wrote:
> > > I don't know the connection between ASPM and package C-states, so I
> > > need to simplify this even more.  All I want to do right now is
> > > verify
> > > that if we don't have any outside influences on the ASPM
> > > configuration
> > > (eg, no manual changes and no udev rules), it stays the same across
> > > suspend/resume.
> >
> > Basically this started from me observing deep package C-states weren't
> > being used, until I went and fiddled with the ASPM state of the
> > rtsx_pci card reader under sysfs -- so phenomenological poking on my
> > part.
> >
> > > So let's read the ASPM state directly from the
> > > hardware like this:
> > >
> > >   sudo lspci -vvs 00:1d.0 | egrep "^0|Lnk|L1|LTR|snoop"
> > >   sudo lspci -vvs 01:00   | egrep "^0|Lnk|L1|LTR|snoop"
> > >
> > > Can you try that before and after suspend/resume?
> >
> > I've attached these to the bugzilla entry at:
> >
> > https://bugzilla.kernel.org/show_bug.cgi?id=208117
> >
> > Spoiler: With no udev rules or suspend hooks, things are the same
> > before and after suspend/resume. One thing I do see (both before and
> > after) is that ASPM L0s and L1 is enabled for the card reader, but
> > disabled for the ethernet chip (does r8169 fiddle with ASPM too?).
> 
> Thank you!  It's good that this stays the same across suspend/resume.
> Do you see different C-state behavior before vs after?
> 
> This is the config I see:
> 
>   00:1d.0 bridge to [bus 01]: ASPM L1 supported;     ASPM Disabled
>   01:00.0 card reader:        ASPM L0s L1 supported; L0s L1 Enabled
>   01:00.1 GigE NIC:           ASPM L0s L1 supported; ASPM Disabled
> 
> This is actually illegal because PCIe r5.0, sec 5.4.1.3, says software
> must not enable L0s in either direction unless components on both ends
> of the link support L0s.  The bridge (00:1d.0) does not support L0s,
> so it's illegal to enable L0s on 01:00.0.  I don't know whether this
> causes problems in practice.
> 

If system want to entry deep C-state, system have to support L1. Host bridge handshake with device to determine whether to enter the L1 state.
Our card reader driver did not set L0s, here need to check who set this, but we thought this L0s enable should not cause Host bridge ASPM disable
 

> I don't see anything in rtsx that enables L0s.  Can you collect the
> dmesg log when booting with "pci=earlydump"?  That will show whether
> the BIOS left it this way.  The PCI core isn't supposed to do this, so
> if it did, we need to fix that.
> 
> I don't know whether r8169 mucks with ASPM.  It is legal to have
> different configurations for the two functions, even though they share
> the same link.  Sec 5.4.1 has rules about how hardware resolves
> differences.
> 
> > [Oddly when I set ASPM (e.g. using udev) the lspci tools show ASPM
> > enabled after a suspend/resume, but still no deep package C-states
> > until I manually fiddle via sysfs on the card reader. Sorry if this
> > only muddies the water further!]
> 
> Let's defer this for now.  It sounds worth pursuing, but I can't keep
> everything in my head at once.
> 
> Bjorn
> 
> ------Please consider the environment before printing this e-mail.

  reply index

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-23 16:56 Bjorn Helgaas
2020-07-23 17:12 ` Bjorn Helgaas
2020-07-24  7:16   ` 吳昊澄 Ricky
2020-07-24 23:13     ` Bjorn Helgaas
2020-07-25 20:27       ` James Ettle
2020-07-27 14:14         ` Bjorn Helgaas
2020-07-27 19:52           ` James Ettle
2020-07-27 21:47             ` Bjorn Helgaas
2020-07-28  5:46               ` 吳昊澄 Ricky [this message]
2020-07-28 20:57               ` James Ettle
2020-07-28 23:06                 ` Bjorn Helgaas
2020-08-02 16:30                   ` James Ettle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bbbf5619b17e43029a75ef60b6f4fc40@realtek.com \
    --to=ricky_wu@realtek.com \
    --cc=arnd@arndb.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=helgaas@kernel.org \
    --cc=james@ettle.org.uk \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=puranjay12@gmail.com \
    --cc=rui_feng@realsil.com.cn \
    --cc=wilderkde@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-PCI Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-pci/0 linux-pci/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-pci linux-pci/ https://lore.kernel.org/linux-pci \
		linux-pci@vger.kernel.org
	public-inbox-index linux-pci

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-pci


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git