From: Geraldo Nascimento <geraldogabriel@gmail.com>
To: Dragan Simic <dsimic@manjaro.org>
Cc: "Shawn Lin" <shawn.lin@rock-chips.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Heiko Stuebner" <heiko@sntech.de>,
linux-rockchip@lists.infradead.org, linux-pci@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 3/4] PCI: rockchip: drive at 2.5 GT/s, error other speeds
Date: Thu, 5 Mar 2026 01:19:15 -0300 [thread overview]
Message-ID: <aakEQ_qtBbYCaUsA@geday> (raw)
In-Reply-To: <d2b91260-7666-3606-69ec-0e7cb7a48c02@manjaro.org>
On Sat, Feb 28, 2026 at 07:16:41AM +0100, Dragan Simic wrote:
> Hello Geraldo,
Hi Dragan,
>
> On Saturday, February 28, 2026 01:55 CET, Geraldo Nascimento <geraldogabriel@gmail.com> wrote:
> > Configure the core to be driven at 2.5 GT/s Link Speed and ignore
> > any other speed with a warning. The reason is that Shawn Lin from
> > Rockchip has reiterated that there may be danger of "catastrophic
> > failure" in using their PCIe with 5.0 GT/s speeds.
> >
> > While Rockchip has done so informally without issuing a proper errata,
> > and the particulars are thus unknown, this may cause data loss or
> > worse.
> >
> > This change is corroborated by RK3399 official datasheet [1], which
> > states maximum link speed for this platform is 2.5 GT/s.
> >
> > [1] https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf
> >
> > Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver")
> > Link: https://lore.kernel.org/all/ffd05070-9879-4468-94e3-b88968b4c21b@rock-chips.com/
> > Cc: stable@vger.kernel.org
> > Reported-by: Dragan Simic <dsimic@manjaro.org>
> > Reported-by: Shawn Lin <shawn.lin@rock-chips.com>
> > Signed-off-by: Geraldo Nascimento <geraldogabriel@gmail.com>
> > ---
> > drivers/pci/controller/pcie-rockchip.c | 15 +++++++++------
> > 1 file changed, 9 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c
> > index 0f88da378805..2f211d1f4c7c 100644
> > --- a/drivers/pci/controller/pcie-rockchip.c
> > +++ b/drivers/pci/controller/pcie-rockchip.c
> > @@ -66,8 +66,10 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
> > }
> >
> > rockchip->link_gen = of_pci_get_max_link_speed(node);
> > - if (rockchip->link_gen < 0 || rockchip->link_gen > 2)
> > - rockchip->link_gen = 2;
> > + if (rockchip->link_gen < 0 || rockchip->link_gen >= 2) {
> > + rockchip->link_gen = 1;
> > + dev_warn(dev, "invalid max-link-speed, fix your DT\n");
> > + }
>
> I'd suggest using a bit more formal message here, like the one below,
> which would also avoid addressing the user directly:
>
> "Invalid max-link-speed found, limited to Gen1 to avoid data corruption"
We really should spare on characters here, but I see your point and will
try to cook up a better way.
>
> > for (i = 0; i < ROCKCHIP_NUM_PM_RSTS; i++)
> > rockchip->pm_rsts[i].id = rockchip_pci_pm_rsts[i];
> > @@ -147,12 +149,13 @@ int rockchip_pcie_init_port(struct rockchip_pcie *rockchip)
> > goto err_exit_phy;
> > }
> >
> > - if (rockchip->link_gen == 2)
> > - rockchip_pcie_write(rockchip, PCIE_CLIENT_GEN_SEL_2,
> > - PCIE_CLIENT_CONFIG);
> > - else
> > + if (rockchip->link_gen == 2) {
> > + /* 5.0 GT/s may cause catastrophic failure for this core */
> > + dev_warn(dev, "5.0 GT/s may cause data loss or worse\n");
> > + } else {
> > rockchip_pcie_write(rockchip, PCIE_CLIENT_GEN_SEL_1,
> > PCIE_CLIENT_CONFIG);
> > + }
>
> I don't think we need to emit a warning here, because, as we've already
> established through earlier discussions, the rockchip_pcie_init_port()
> function should never receive an invalid speed value.
Just as a lame excuse, those messages were everywhere in the mid of my
development, this is one that escaped deletion, will drop.
>
> > regs = PCIE_CLIENT_ARI_ENABLE |
> > PCIE_CLIENT_CONF_LANE_NUM(rockchip->lanes);
>
> It would make most sense to squash all three patches in this series
> into a single patch, because they all form a single logical unit, which
> introduces changes that are just going to be harder to track down later
> if it's all scattered into multiple separate patches.
I agree, having all drops in one big patch is the better tactic here.
>
> The only possible issue with the squashing comes from the inability to
> have different patch subject prefixes for different driver changes, but
> I think that's actually not an issue. The long-term benefits of having
> everything as a single patch outweighs the benefits of having different
> patch subjects with separate patches.
>
Sure, will do so for v6.
Many thanks,
Geraldo Nascimento
WARNING: multiple messages have this Message-ID (diff)
From: Geraldo Nascimento <geraldogabriel@gmail.com>
To: Dragan Simic <dsimic@manjaro.org>
Cc: "Shawn Lin" <shawn.lin@rock-chips.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Heiko Stuebner" <heiko@sntech.de>,
linux-rockchip@lists.infradead.org, linux-pci@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 3/4] PCI: rockchip: drive at 2.5 GT/s, error other speeds
Date: Thu, 5 Mar 2026 01:19:15 -0300 [thread overview]
Message-ID: <aakEQ_qtBbYCaUsA@geday> (raw)
In-Reply-To: <d2b91260-7666-3606-69ec-0e7cb7a48c02@manjaro.org>
On Sat, Feb 28, 2026 at 07:16:41AM +0100, Dragan Simic wrote:
> Hello Geraldo,
Hi Dragan,
>
> On Saturday, February 28, 2026 01:55 CET, Geraldo Nascimento <geraldogabriel@gmail.com> wrote:
> > Configure the core to be driven at 2.5 GT/s Link Speed and ignore
> > any other speed with a warning. The reason is that Shawn Lin from
> > Rockchip has reiterated that there may be danger of "catastrophic
> > failure" in using their PCIe with 5.0 GT/s speeds.
> >
> > While Rockchip has done so informally without issuing a proper errata,
> > and the particulars are thus unknown, this may cause data loss or
> > worse.
> >
> > This change is corroborated by RK3399 official datasheet [1], which
> > states maximum link speed for this platform is 2.5 GT/s.
> >
> > [1] https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf
> >
> > Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver")
> > Link: https://lore.kernel.org/all/ffd05070-9879-4468-94e3-b88968b4c21b@rock-chips.com/
> > Cc: stable@vger.kernel.org
> > Reported-by: Dragan Simic <dsimic@manjaro.org>
> > Reported-by: Shawn Lin <shawn.lin@rock-chips.com>
> > Signed-off-by: Geraldo Nascimento <geraldogabriel@gmail.com>
> > ---
> > drivers/pci/controller/pcie-rockchip.c | 15 +++++++++------
> > 1 file changed, 9 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c
> > index 0f88da378805..2f211d1f4c7c 100644
> > --- a/drivers/pci/controller/pcie-rockchip.c
> > +++ b/drivers/pci/controller/pcie-rockchip.c
> > @@ -66,8 +66,10 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
> > }
> >
> > rockchip->link_gen = of_pci_get_max_link_speed(node);
> > - if (rockchip->link_gen < 0 || rockchip->link_gen > 2)
> > - rockchip->link_gen = 2;
> > + if (rockchip->link_gen < 0 || rockchip->link_gen >= 2) {
> > + rockchip->link_gen = 1;
> > + dev_warn(dev, "invalid max-link-speed, fix your DT\n");
> > + }
>
> I'd suggest using a bit more formal message here, like the one below,
> which would also avoid addressing the user directly:
>
> "Invalid max-link-speed found, limited to Gen1 to avoid data corruption"
We really should spare on characters here, but I see your point and will
try to cook up a better way.
>
> > for (i = 0; i < ROCKCHIP_NUM_PM_RSTS; i++)
> > rockchip->pm_rsts[i].id = rockchip_pci_pm_rsts[i];
> > @@ -147,12 +149,13 @@ int rockchip_pcie_init_port(struct rockchip_pcie *rockchip)
> > goto err_exit_phy;
> > }
> >
> > - if (rockchip->link_gen == 2)
> > - rockchip_pcie_write(rockchip, PCIE_CLIENT_GEN_SEL_2,
> > - PCIE_CLIENT_CONFIG);
> > - else
> > + if (rockchip->link_gen == 2) {
> > + /* 5.0 GT/s may cause catastrophic failure for this core */
> > + dev_warn(dev, "5.0 GT/s may cause data loss or worse\n");
> > + } else {
> > rockchip_pcie_write(rockchip, PCIE_CLIENT_GEN_SEL_1,
> > PCIE_CLIENT_CONFIG);
> > + }
>
> I don't think we need to emit a warning here, because, as we've already
> established through earlier discussions, the rockchip_pcie_init_port()
> function should never receive an invalid speed value.
Just as a lame excuse, those messages were everywhere in the mid of my
development, this is one that escaped deletion, will drop.
>
> > regs = PCIE_CLIENT_ARI_ENABLE |
> > PCIE_CLIENT_CONF_LANE_NUM(rockchip->lanes);
>
> It would make most sense to squash all three patches in this series
> into a single patch, because they all form a single logical unit, which
> introduces changes that are just going to be harder to track down later
> if it's all scattered into multiple separate patches.
I agree, having all drops in one big patch is the better tactic here.
>
> The only possible issue with the squashing comes from the inability to
> have different patch subject prefixes for different driver changes, but
> I think that's actually not an issue. The long-term benefits of having
> everything as a single patch outweighs the benefits of having different
> patch subjects with separate patches.
>
Sure, will do so for v6.
Many thanks,
Geraldo Nascimento
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2026-03-05 4:19 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-28 0:54 [PATCH v5 0/4] PCI: rockchip: 5.0 GT/s speed discouraged by Rockchip Geraldo Nascimento
2026-02-28 0:54 ` Geraldo Nascimento
2026-02-28 0:55 ` [PATCH v5 1/4] PCI: rockchip-ep: do not attempt 5.0 GT/s retraining Geraldo Nascimento
2026-02-28 0:55 ` Geraldo Nascimento
2026-02-28 0:55 ` [PATCH v5 2/4] PCI: rockchip-host: " Geraldo Nascimento
2026-02-28 0:55 ` Geraldo Nascimento
2026-02-28 0:55 ` [PATCH v5 3/4] PCI: rockchip: drive at 2.5 GT/s, error other speeds Geraldo Nascimento
2026-02-28 0:55 ` Geraldo Nascimento
2026-02-28 6:16 ` Dragan Simic
2026-02-28 6:16 ` Dragan Simic
2026-03-05 4:19 ` Geraldo Nascimento [this message]
2026-03-05 4:19 ` Geraldo Nascimento
2026-03-05 6:54 ` Dragan Simic
2026-03-05 6:54 ` Dragan Simic
2026-03-05 4:48 ` Manivannan Sadhasivam
2026-03-05 4:48 ` Manivannan Sadhasivam
2026-03-05 5:07 ` Geraldo Nascimento
2026-03-05 5:07 ` Geraldo Nascimento
2026-02-28 0:55 ` [PATCH v5 4/4] PCI: rockchip: drop 5.0 GT/s defines Geraldo Nascimento
2026-02-28 0:55 ` Geraldo Nascimento
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=aakEQ_qtBbYCaUsA@geday \
--to=geraldogabriel@gmail.com \
--cc=bhelgaas@google.com \
--cc=dsimic@manjaro.org \
--cc=heiko@sntech.de \
--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.