From: linux@armlinux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: CONFIG_PCIEASPM breaks PCIe on Marvell Armada 385 machine
Date: Tue, 17 Jan 2017 19:34:14 +0000 [thread overview]
Message-ID: <20170117193414.GG27312@n2100.armlinux.org.uk> (raw)
In-Reply-To: <20170117181458.GB11063@bhelgaas-glaptop.roam.corp.google.com>
On Tue, Jan 17, 2017 at 12:14:58PM -0600, Bjorn Helgaas wrote:
> The instrumentation has evolved a bit since then. Latest is below (could
> still use improvement, but it does address your suggestions above):
>
> https://bugzilla.kernel.org/attachment.cgi?id=251691 (CONFIG_PCIEASPM=y)
> https://bugzilla.kernel.org/attachment.cgi?id=251701 (CONFIG_PCIEASPM not set)
Thanks.
The point at which things die is when we request a link retrain - I've
augmented the trace with the register names:
pci 0000:02:00.0: rd where=0x074 size=4 val=0x8dc1 (hw) EXP_DEVCAP
pcie_aspm_configure_common_clock():
pci 0000:02:00.0: rd where=0x082 size=2 val=0x1011 (hw) EXP_LNKSTA
pci 0000:??:??.?: rd where=0x052 size=2 val=0x1011 (sw) EXP_LNKSTA
pci 0000:02:00.0: rd where=0x080 size=2 val=0x0 (hw) EXP_LNKCTL
pci 0000:02:00.0: wr where=0x080 size=2 val=0x40 (hw) EXP_LNKCTL
Enables common clock configuration on the device.
pci 0000:??:??.?: rd where=0x050 size=2 val=0x40 (sw) EXP_LNKCTL
pci 0000:??:??.?: wr where=0x050 size=2 val=0x40 (sw) EXP_LNKCTL
Common clock configuration is already enabled on the root.
pci 0000:??:??.?: rd where=0x050 size=4 val=0x10110040 (sw) EXP_LNKCTL
pci 0000:??:??.?: wr where=0x050 size=2 val=0x60 (sw) EXP_LNKCTL
Here we request the train, setting bit 5 in the link control
register.
pci 0000:??:??.?: rd where=0x050 size=4 val=0x110040 (sw) EXP_LNKCTL
pci 0000:??:??.?: rd where=0x052 size=2 val=0x811 (sw) EXP_LNKSTA
pci 0000:??:??.?: rd where=0x052 size=2 val=0x811 (sw) EXP_LNKSTA
Waiting for the link training bit to clear...
pci 0000:??:??.?: rd where=0x052 size=2 val=0x11 (sw) EXP_LNKSTA
and it's cleared here - but note that the link is still down.
pci 0000:??:??.?: rd where=0x04c size=4 val=0x3ac12 (sw) EXP_LNKCAP
pci 0000:??:??.?: rd where=0x050 size=2 val=0x40 (sw) EXP_LNKCTL
pcie_get_aspm_reg() for the root.
pci 0000:02:00.0: rd where=0x07c size=4 val=0xffffffff (no link)
pcie_get_aspm_reg() for the device (fails).
So, I think the question is... why does asking for a retrain cause
the link to fail and never recover?
Uwe, can you try:
setpci -s <whatever-the-id-of-the-root-is-it's-blanked-out-in-the-above> \
0x50.w=0x60
and see whether it remains alive (you can check by reading the root
register 0x52.w - bit 12 should be set once bit 11 clears again.
If that's successful, maybe setting the common clock bit on the PCIe
device is what's causing the problem, in which case:
setpci -s 02:00.0 0x80.w=0x40
setpci -s <whatever-the-id-of-the-root-is-it's-blanked-out-in-the-above> \
0x50.w=0x60
I would imagine would cause the link to go down. So, the question
this gives us is why the common clock setup is not working on your
platform. Maybe we need to source the SLC bit in the link status
from DT, though I'd like to understand what's going on here more
first.
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
next prev parent reply other threads:[~2017-01-17 19:34 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-11 19:49 CONFIG_PCIEASPM breaks PCIe on Marvell Armada 385 machine Uwe Kleine-König
2017-01-11 22:02 ` Bjorn Helgaas
2017-01-12 13:18 ` Uwe Kleine-König
2017-01-12 15:03 ` Bjorn Helgaas
2017-01-12 15:24 ` Andrew Lunn
2017-01-17 15:14 ` Bjorn Helgaas
2017-01-17 15:25 ` Russell King - ARM Linux
2017-01-17 17:46 ` Bjorn Helgaas
2017-01-17 17:51 ` Russell King - ARM Linux
2017-01-17 17:57 ` Russell King - ARM Linux
2017-01-17 18:14 ` Bjorn Helgaas
2017-01-17 19:34 ` Russell King - ARM Linux [this message]
2017-01-17 21:02 ` Russell King - ARM Linux
2017-01-17 22:22 ` Bjorn Helgaas
2017-01-17 23:37 ` David Daney
2017-01-18 14:22 ` Bjorn Helgaas
2017-01-18 17:36 ` David Daney
2017-01-18 17:55 ` Russell King - ARM Linux
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=20170117193414.GG27312@n2100.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=linux-arm-kernel@lists.infradead.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).