LKML Archive mirror
 help / color / mirror / Atom feed
From: Johan Hovold <johan@kernel.org>
To: Krishna Kurapati PSSNV <quic_kriskura@quicinc.com>
Cc: Bjorn Andersson <andersson@kernel.org>,
	Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Andy Gross <agross@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Felipe Balbi <balbi@kernel.org>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	quic_pkondeti@quicinc.com, quic_ppratap@quicinc.com,
	quic_wcheng@quicinc.com, quic_jackp@quicinc.com,
	quic_harshq@quicinc.com, ahalaney@redhat.com
Subject: Re: [PATCH v8 6/9] usb: dwc3: qcom: Add multiport controller support for qcom wrapper
Date: Wed, 7 Jun 2023 13:37:49 +0200	[thread overview]
Message-ID: <ZIBsDQJtgDZRe7MG@hovoldconsulting.com> (raw)
In-Reply-To: <82553597-ce0e-48f4-44d4-9eeaaf4cb1c4@quicinc.com>

Hi Krishna,

and sorry about the delay in following up on this. As usual, there are
just way too many threads and this one in particular requires a bit of
thought.

On Sat, May 20, 2023 at 11:18:52PM +0530, Krishna Kurapati PSSNV wrote:
> On 5/17/2023 10:07 PM, Johan Hovold wrote:

> > I don't think we should be adding more of these layering violations. A
> > parent device driver has no business messing with the driver data for a
> > child device which may or may not even have probed yet.
> > 
> > I added a FIXME elsewhere in the driver about fixing up the current
> > instances that have already snuck in (which in some sense is even worse
> > by accessing driver data of a grandchild device).
> > 
> > We really need to try sort this mess out and how to properly handle the
> > interactions between these layers (e.g. glue, dwc3 core and xhci). This
> > will likely involve adding callbacks from the child to the parent, for
> > example, when the child is suspending.

>   I agree with you, but in this case I believe there is no other way we 
> can find the number of ports present. Unless its a dt property which 
> parent driver can access the child's of node and get the details. Like 
> done in v4 [1]. But it would be adding redundant data into DT as pointed 
> out by Rob and Krzysztof and so we removed these properties.

So there at least two issues with this series:

	1. accessing xhci registers from the dwc3 core
	2. accessing driver data of a child device

1. The first part about accessing xhci registers goes against the clear
separation between glue, core and xhci that Felipe tried to maintain.

I'm not entirely against doing this from the core driver before
registering the xhci platform device as the registers are unmapped
afterwards. But if this is to be allowed, then the implementation should
be shared with xhci rather than copied verbatim.

The alternative that avoids this issue entirely could indeed be to
simply count the number of PHYs described in DT as Rob initially
suggested. Why would that not work?

2. The driver is already accessing driver data of the child device so
arguably your series is not really making things much worse than they
already are.

I've just sent a couple of fixes to address some of the symptoms of
this layering violation here:

	https://lore.kernel.org/lkml/20230607100540.31045-1-johan+linaro@kernel.org/

Getting this fixed properly is going to take a bit of work, and
depending on how your multiport wake up implementation is going to look
like, adding support for multiport controllers may not make this much
harder to address.

So perhaps we can indeed merge support for multiport and then get back
to cleaning this up.

Johan

  reply	other threads:[~2023-06-07 11:37 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-14  5:49 [PATCH v8 0/9] Add multiport support for DWC3 controllers Krishna Kurapati
2023-05-14  5:49 ` [PATCH v8 1/9] dt-bindings: usb: qcom,dwc3: Add bindings for SC8280 Multiport Krishna Kurapati
2023-05-14  9:46   ` Krzysztof Kozlowski
2023-05-16 10:59   ` Johan Hovold
2023-05-17 11:10     ` Krishna Kurapati PSSNV
2023-05-17 11:44       ` Johan Hovold
2023-05-17 12:19         ` Krishna Kurapati PSSNV
2023-05-17 12:55           ` Johan Hovold
2023-05-14  5:49 ` [PATCH v8 2/9] dt-bindings: usb: Add bindings for multiport properties on DWC3 controller Krishna Kurapati
2023-05-14  5:49 ` [PATCH v8 3/9] usb: dwc3: core: Access XHCI address space temporarily to read port info Krishna Kurapati
2023-05-15 21:08   ` Bjorn Andersson
2023-05-16  2:12     ` Krishna Kurapati PSSNV
2023-05-16 22:39       ` Thinh Nguyen
2023-05-16 12:11   ` Johan Hovold
2023-05-16 15:02     ` Krishna Kurapati PSSNV
2023-05-17  3:10       ` Krishna Kurapati PSSNV
2023-05-17  3:21         ` Thinh Nguyen
2023-05-17  7:46           ` Johan Hovold
2023-05-17 23:21             ` Thinh Nguyen
2023-06-07 11:56               ` Johan Hovold
2023-05-17  7:35       ` Johan Hovold
2023-05-17 12:21         ` Krishna Kurapati PSSNV
2023-05-17 15:10           ` Johan Hovold
2023-05-14  5:49 ` [PATCH v8 4/9] usb: dwc3: core: Skip setting event buffers for host only controllers Krishna Kurapati
2023-05-15 21:19   ` Bjorn Andersson
2023-05-16 12:17   ` Johan Hovold
2023-05-16 14:28     ` Krishna Kurapati PSSNV
2023-05-14  5:49 ` [PATCH v8 5/9] usb: dwc3: core: Refactor PHY logic to support Multiport Controller Krishna Kurapati
2023-05-15 21:47   ` Bjorn Andersson
2023-05-16  2:31     ` Krishna Kurapati PSSNV
2023-05-17 16:17   ` Johan Hovold
2023-05-14  5:49 ` [PATCH v8 6/9] usb: dwc3: qcom: Add multiport controller support for qcom wrapper Krishna Kurapati
2023-05-15 22:27   ` Bjorn Andersson
2023-05-16  2:19     ` Krishna Kurapati PSSNV
2023-05-17 16:37       ` Johan Hovold
2023-05-20 17:48         ` Krishna Kurapati PSSNV
2023-06-07 11:37           ` Johan Hovold [this message]
2023-06-07 19:51             ` Krishna Kurapati PSSNV
2023-06-08  9:42               ` Johan Hovold
2023-06-08 15:23                 ` Krishna Kurapati PSSNV
2023-06-08 17:57                   ` Thinh Nguyen
2023-06-09  8:18                     ` Johan Hovold
2023-06-09 18:16                       ` Thinh Nguyen
2023-06-15  4:20                         ` Krishna Kurapati PSSNV
2023-06-15 21:08                           ` Thinh Nguyen
2023-06-21  7:38                             ` Johan Hovold
2023-06-22  4:39                               ` Krishna Kurapati PSSNV
2023-06-21  7:34                         ` Johan Hovold
2023-06-22 22:41                           ` Thinh Nguyen
2023-05-26  2:55     ` Bjorn Andersson
2023-05-26 15:25       ` Krishna Kurapati PSSNV
2023-06-07 11:44         ` Johan Hovold
2023-06-07 19:55           ` Krishna Kurapati PSSNV
2023-06-08  9:44             ` Johan Hovold
2023-06-07 12:16   ` Johan Hovold
2023-06-27 15:43     ` Johan Hovold
2023-07-02 19:05       ` Krishna Kurapati PSSNV
2023-07-14  9:00         ` Johan Hovold
2023-07-14 10:38           ` Krishna Kurapati PSSNV
2023-07-21 11:16             ` Johan Hovold
2023-07-21 12:10               ` Konrad Dybcio
2023-07-21 12:54                 ` Johan Hovold
2023-08-11 16:48                   ` Konrad Dybcio
2023-08-12  8:58                     ` Krishna Kurapati PSSNV
2023-05-14  5:49 ` [PATCH v8 7/9] arm64: dts: qcom: sc8280xp: Add multiport controller node for SC8280 Krishna Kurapati
2023-05-15 14:26   ` Johan Hovold
2023-05-15 15:32     ` Krishna Kurapati PSSNV
2023-05-16 10:54       ` Johan Hovold
2023-05-16 14:24         ` Krishna Kurapati PSSNV
2023-05-16 14:42           ` Johan Hovold
2023-05-16 14:44             ` Krishna Kurapati PSSNV
2023-05-14  5:49 ` [PATCH v8 8/9] arm64: dts: qcom: sa8295p: Enable tertiary controller and its 4 USB ports Krishna Kurapati
2023-05-14  5:49 ` [PATCH v8 9/9] arm64: dts: qcom: sa8540-ride: Enable first port of tertiary usb controller Krishna Kurapati
2023-05-15  2:40 ` [PATCH v8 0/9] Add multiport support for DWC3 controllers Bjorn Andersson

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=ZIBsDQJtgDZRe7MG@hovoldconsulting.com \
    --to=johan@kernel.org \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=agross@kernel.org \
    --cc=ahalaney@redhat.com \
    --cc=andersson@kernel.org \
    --cc=balbi@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=quic_harshq@quicinc.com \
    --cc=quic_jackp@quicinc.com \
    --cc=quic_kriskura@quicinc.com \
    --cc=quic_pkondeti@quicinc.com \
    --cc=quic_ppratap@quicinc.com \
    --cc=quic_wcheng@quicinc.com \
    --cc=robh+dt@kernel.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 read-only IMAP folder(s) and NNTP newsgroup(s).