From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Ajay Agarwal <ajayagarwal@google.com>
Cc: "Jingoo Han" <jingoohan1@gmail.com>,
"Johan Hovold" <johan+linaro@kernel.org>,
"Jon Hunter" <jonathanh@nvidia.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Rob Herring" <robh@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Manu Gautam" <manugautam@google.com>,
"Doug Zobel" <zobel@google.com>,
"William McVicker" <willmcvicker@google.com>,
"Serge Semin" <fancer.lancer@gmail.com>,
"Robin Murphy" <robin.murphy@arm.com>,
linux-pci@vger.kernel.org
Subject: Re: [PATCH v5] PCI: dwc: Wait for link up only if link is started
Date: Tue, 30 Jan 2024 12:15:55 +0530 [thread overview]
Message-ID: <20240130064555.GC32821@thinkpad> (raw)
In-Reply-To: <ZbengMb5zrigs_2Z@google.com>
On Mon, Jan 29, 2024 at 06:56:24PM +0530, Ajay Agarwal wrote:
> On Mon, Jan 29, 2024 at 01:42:54PM +0530, Manivannan Sadhasivam wrote:
> > On Mon, Jan 29, 2024 at 01:34:52PM +0530, Ajay Agarwal wrote:
> > > On Mon, Jan 29, 2024 at 12:40:25PM +0530, Manivannan Sadhasivam wrote:
> > > > On Mon, Jan 29, 2024 at 12:21:51PM +0530, Ajay Agarwal wrote:
> > > > > On Sat, Jan 20, 2024 at 08:04:34PM +0530, Manivannan Sadhasivam wrote:
> > > > > > On Fri, Jan 19, 2024 at 11:29:22PM +0530, Ajay Agarwal wrote:
> > > > > > > On Fri, Jan 19, 2024 at 01:22:19PM +0530, Manivannan Sadhasivam wrote:
> > > > > > > > On Fri, Jan 12, 2024 at 03:00:06PM +0530, Ajay Agarwal wrote:
> > > > > > > > > In dw_pcie_host_init() regardless of whether the link has been
> > > > > > > > > started or not, the code waits for the link to come up. Even in
> > > > > > > > > cases where start_link() is not defined the code ends up spinning
> > > > > > > > > in a loop for 1 second. Since in some systems dw_pcie_host_init()
> > > > > > > > > gets called during probe, this one second loop for each pcie
> > > > > > > > > interface instance ends up extending the boot time.
> > > > > > > > >
> > > > > > > >
> > > > > > > > Which platform you are working on? Is that upstreamed? You should mention the
> > > > > > > > specific platform where you are observing the issue.
> > > > > > > >
> > > > > > > This is for the Pixel phone platform. The platform driver for the same
> > > > > > > is not upstreamed yet. It is in the process.
> > > > > > >
> > > > > >
> > > > > > Then you should submit this patch at the time of the driver submission. Right
> > > > > > now, you are trying to fix a problem which is not present in upstream. One can
> > > > > > argue that it is a problem for designware-plat driver, but honestly I do not
> > > > > > know how it works.
> > > > > >
> > > > > > - Mani
> > > > > >
> > > > > Yes Mani, this can be a problem for the designware-plat driver. To me,
> > > > > the problem of a second being wasted in the probe path seems pretty
> > > > > obvious. We will wait for the link to be up even though we are not
> > > > > starting the link training. Can this patch be accepted considering the
> > > > > problem in the dw-plat driver then?
> > > > >
> > > >
> > > > If that's the case with your driver, when are you starting the link training?
> > > >
> > > The link training starts later based on a userspace/debugfs trigger.
> > >
> >
> > Why does it happen as such? What's the problem in starting the link during
> > probe? Keep it in mind that if you rely on the userspace for starting the link
> > based on a platform (like Android), then if the same SoC or peripheral instance
> > get reused in other platform (non-android), the it won't be a seamless user
> > experience.
> >
> > If there are any other usecases, please state them.
> >
> > - Mani
> >
> This SoC is targeted for an android phone usecase and the endpoints
> being enumerated need to go through an appropriate and device specific
> power sequence which gets triggered only when the userspace is up. The
> PCIe probe cannot assume that the EPs have been powered up already and
> hence the link-up is not attempted.
Still, I do not see the necessity to not call start_link() during probe. If you
add PROBE_PREFER_ASYNCHRONOUS to your controller driver, this delay would become
negligible. The reason why I'm against not calling start_link() is due to below
reasons:
1. If the same SoC gets reused for other platforms, even other android phones
that powers up the endpoints during boot, then it creates a dependency with
userspace to always start the link even though the devices were available.
That's why we should never fix the behavior of the controller drivers based on a
single platform.
2. This will create fragmentation among the DWC glue drivers w.r.t the behavior
and will become a maintenance nightmare (there are enough already).
So, I'd suggest you to use the asynchronous probe mentioned above so that other
drivers may probe in parallel thus avoiding the delay that you are worried about.
- Mani
--
மணிவண்ணன் சதாசிவம்
next prev parent reply other threads:[~2024-01-30 6:46 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-12 9:30 [PATCH v5] PCI: dwc: Wait for link up only if link is started Ajay Agarwal
2024-01-18 18:15 ` Ajay Agarwal
2024-01-19 7:52 ` Manivannan Sadhasivam
2024-01-19 17:59 ` Ajay Agarwal
2024-01-20 14:34 ` Manivannan Sadhasivam
2024-01-29 6:51 ` Ajay Agarwal
2024-01-29 7:10 ` Manivannan Sadhasivam
2024-01-29 8:04 ` Ajay Agarwal
2024-01-29 8:12 ` Manivannan Sadhasivam
2024-01-29 13:26 ` Ajay Agarwal
2024-01-30 6:45 ` Manivannan Sadhasivam [this message]
2024-01-30 9:00 ` Ajay Agarwal
2024-01-30 12:29 ` Manivannan Sadhasivam
2024-01-30 17:18 ` Ajay Agarwal
2024-01-30 18:36 ` Manivannan Sadhasivam
2024-02-05 11:00 ` Ajay Agarwal
2024-02-06 17:10 ` Manivannan Sadhasivam
2024-02-14 22:02 ` Bjorn Helgaas
2024-02-15 14:09 ` Manivannan Sadhasivam
2024-02-17 0:07 ` Bjorn Helgaas
2024-02-19 14:13 ` Manivannan Sadhasivam
2024-02-22 4:30 ` Ajay Agarwal
2024-02-28 2:55 ` Ajay Agarwal
2024-02-20 17:34 ` Ajay Agarwal
2024-02-28 17:29 ` Manivannan Sadhasivam
2024-03-06 12:00 ` Ajay Agarwal
2024-03-10 13:51 ` Manivannan Sadhasivam
2025-02-14 9:15 ` Ajay Agarwal
2025-02-14 9:18 ` Johan Hovold
2025-02-14 9:42 ` Manivannan Sadhasivam
2025-02-14 10:02 ` Ajay Agarwal
2025-02-14 13:39 ` Manivannan Sadhasivam
2025-02-14 18:38 ` William McVicker
2025-02-19 17:46 ` Manivannan Sadhasivam
2024-01-31 23:48 ` Bjorn Helgaas
2024-02-01 3:14 ` Bjorn Helgaas
2024-02-01 7:32 ` Manivannan Sadhasivam
2024-02-01 8:37 ` Lei Chuan Hua
2024-01-19 20:42 ` Bjorn Helgaas
2024-01-24 9:24 ` Ajay Agarwal
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=20240130064555.GC32821@thinkpad \
--to=manivannan.sadhasivam@linaro.org \
--cc=ajayagarwal@google.com \
--cc=bhelgaas@google.com \
--cc=fancer.lancer@gmail.com \
--cc=jingoohan1@gmail.com \
--cc=johan+linaro@kernel.org \
--cc=jonathanh@nvidia.com \
--cc=kw@linux.com \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=manugautam@google.com \
--cc=robh@kernel.org \
--cc=robin.murphy@arm.com \
--cc=willmcvicker@google.com \
--cc=zobel@google.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 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).