From: "Enrique Hernández Bello" <ehbello@gmail.com>
To: iav@iav.lv
Cc: shawn.lin@rock-chips.com, lpieralisi@kernel.org,
kwilczynski@kernel.org, mani@kernel.org, bhelgaas@google.com,
robh@kernel.org, heiko@sntech.de, linux-pci@vger.kernel.org,
linux-rockchip@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC 0/2] PCI: rockchip-host: Retry training and hot-reset a JMB585 on RK3399
Date: Wed, 28 Oct 2026 17:31:17 +0000 [thread overview]
Message-ID: <20261028173117.3457220-1-ehbello@gmail.com> (raw)
In-Reply-To: <ff204558-dc22-4d38-b0dc-2c727f983f9f@rock-chips.com>
You said both SErrors and synchronous external aborts occur. In my logs which
of the two you get tracks the cluster the access runs on, which might be worth
a look before you move the hook.
Every asynchronous SError in rockchip_pcie_rd_conf landed on CPU4 or CPU5, the
A72s, across six boots on two different kernels. The one time the same read
aborted synchronously it was on CPU3, an A53. They also carry different ISS:
0xbf000002 for these config-read aborts, against 0xbf000000 for the unrelated
runtime SErrors on this board.
That is one synchronous case, so not a law, but it is cheap for you to test:
pin enumeration to an A53 and see whether your aborts all become synchronous.
It matters because only the synchronous form can be repaired. When it arrives
as an SError the load has retired and there is no destination register left to
write all-ones into, so no fixup can help.
I prototyped the synchronous half in September: an exception-table entry
consulted from do_sea(), with the driver substituting the all-ones the PCI core
expects rather than only surviving. arm32 has had that for years --
imx6q_pcie_abort_handler() in dwc/pci-imx6.c decodes the faulting instruction
and makes a read look like all-ones, under #ifdef CONFIG_ARM -- and arm64 has
no equivalent path. It only ever worked for me with enumeration pinned to an
A53, which is what made me look at the cluster in the first place.
Not proposing anything, and not reviving that prototype. Yours if any of it
is useful.
WARNING: multiple messages have this Message-ID (diff)
From: "Enrique Hernández Bello" <ehbello@gmail.com>
To: iav@iav.lv
Cc: shawn.lin@rock-chips.com, lpieralisi@kernel.org,
kwilczynski@kernel.org, mani@kernel.org, bhelgaas@google.com,
robh@kernel.org, heiko@sntech.de, linux-pci@vger.kernel.org,
linux-rockchip@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC 0/2] PCI: rockchip-host: Retry training and hot-reset a JMB585 on RK3399
Date: Wed, 28 Oct 2026 17:31:17 +0000 [thread overview]
Message-ID: <20261028173117.3457220-1-ehbello@gmail.com> (raw)
In-Reply-To: <ff204558-dc22-4d38-b0dc-2c727f983f9f@rock-chips.com>
You said both SErrors and synchronous external aborts occur. In my logs which
of the two you get tracks the cluster the access runs on, which might be worth
a look before you move the hook.
Every asynchronous SError in rockchip_pcie_rd_conf landed on CPU4 or CPU5, the
A72s, across six boots on two different kernels. The one time the same read
aborted synchronously it was on CPU3, an A53. They also carry different ISS:
0xbf000002 for these config-read aborts, against 0xbf000000 for the unrelated
runtime SErrors on this board.
That is one synchronous case, so not a law, but it is cheap for you to test:
pin enumeration to an A53 and see whether your aborts all become synchronous.
It matters because only the synchronous form can be repaired. When it arrives
as an SError the load has retired and there is no destination register left to
write all-ones into, so no fixup can help.
I prototyped the synchronous half in September: an exception-table entry
consulted from do_sea(), with the driver substituting the all-ones the PCI core
expects rather than only surviving. arm32 has had that for years --
imx6q_pcie_abort_handler() in dwc/pci-imx6.c decodes the faulting instruction
and makes a read look like all-ones, under #ifdef CONFIG_ARM -- and arm64 has
no equivalent path. It only ever worked for me with enumeration pinned to an
A53, which is what made me look at the cluster in the first place.
Not proposing anything, and not reviving that prototype. Yours if any of it
is useful.
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2026-10-28 17:31 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-24 1:02 [PATCH RFC 0/2] PCI: rockchip-host: Retry training and hot-reset a JMB585 on RK3399 Igor Velkov via B4 Relay
2026-10-24 1:02 ` Igor Velkov via B4 Relay
2026-10-24 1:02 ` Igor Velkov
2026-10-24 1:02 ` [PATCH RFC 1/2] PCI: rockchip-host: Retry link training that times out Igor Velkov
2026-10-24 1:02 ` Igor Velkov via B4 Relay
2026-10-24 1:02 ` Igor Velkov via B4 Relay
2026-10-24 1:07 ` sashiko-bot
2026-10-24 1:02 ` [PATCH RFC 2/2] PCI: rockchip-host: Hot-reset the endpoint before using the link Igor Velkov via B4 Relay
2026-10-24 1:02 ` Igor Velkov via B4 Relay
2026-10-24 1:02 ` Igor Velkov
2026-10-24 1:21 ` sashiko-bot
2026-10-26 9:08 ` [PATCH RFC 0/2] PCI: rockchip-host: Retry training and hot-reset a JMB585 on RK3399 Shawn Lin
2026-10-26 9:08 ` Shawn Lin
2026-10-26 18:28 ` Igor Velkov
2026-10-26 18:28 ` Igor Velkov
2026-10-27 0:44 ` Shawn Lin
2026-10-27 0:44 ` Shawn Lin
2026-10-27 1:15 ` Igor Velkov
2026-10-27 1:15 ` Igor Velkov
2026-10-28 17:31 ` Enrique Hernández Bello [this message]
2026-10-28 17:31 ` Enrique Hernández Bello
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=20261028173117.3457220-1-ehbello@gmail.com \
--to=ehbello@gmail.com \
--cc=bhelgaas@google.com \
--cc=heiko@sntech.de \
--cc=iav@iav.lv \
--cc=kwilczynski@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=robh@kernel.org \
--cc=shawn.lin@rock-chips.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.