From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] pci: Support parsing PCI controller DT subnodes
Date: Tue, 14 Aug 2018 15:39:41 -0400 [thread overview]
Message-ID: <20180814193941.GC30947@bill-the-cat> (raw)
In-Reply-To: <CAEUhbmWbpF9gWg9+mR4d4VfYLQteRdDrXTuLHX5b=n5E7Jzq6w@mail.gmail.com>
On Tue, Aug 14, 2018 at 10:34:23AM +0800, Bin Meng wrote:
> Hi Tom,
>
> On Tue, Aug 14, 2018 at 1:16 AM, Tom Rini <trini@konsulko.com> wrote:
> > On Mon, Aug 13, 2018 at 06:07:14PM +0200, Marek Vasut wrote:
> >> On 08/13/2018 03:39 PM, Tom Rini wrote:
> >> [...]
> >>
> >> >>>> Next step is to upstream the DT
> >> >>>> changes to Linux kernel, then sync the changes to U-Boot to satisfy
> >> >>>> this obsession - using exactly the same DT as Linux.
> >> >>>
> >> >>> This is not gonna happen.
> >> >>>
> >> >>> Sorry, you're really just wasting my time with this foolishness. If
> >> >>> U-Boot cannot parse valid DT bindings while other OSes can, U-Boot is
> >> >>> broken and must be fixed. So far I only see you attacking this patch and
> >> >>> trying to pull in everything you can do avoid accepting this patch or
> >> >>> providing a better alternative. This is not a constructive discussion,
> >> >>> so I stop here.
> >> >>
> >> >> The fix in this patch is purely hack, period.
> >> >
> >> > Lets step back for a moment.
> >> >
> >> > First, U-Boot intends to be, in the case where a relevant DTS file
> >> > exists, the Linux kernel one PLUS additions we require (u-boot,dm-spl,
> >> > u-boot,dm-pre-reloc, but also sometimes stdout-path or properties that
> >> > are omitted for various reasons).
> >>
> >> Right, which doesn't apply here. None of those u-boot,... props are
> >> needed in this case.
> >
> > Which is why I also mentioned the non-u-boot specific props we also need
> > sometimes. My point is two-fold:
> > 1: We can and will _add_ information to the dts files that come from
> > Linux.
> > 2: Not all information that we add is U-Boot prefixed.
>
> It would be better if we document such DT expectation somewhere.
Yes, it should be written down somewhere. But it's been a general
expectation for a long time. It's why we even have the -u-boot.dtsi
auto-include logic, so that the main dts/dtsi files can be re-synced
without losing changes U-Boot needs.
> >> > Second, I've asked before (both in this thread and on IRC), and not
> >> > gotten an answer yet, as to how Linux goes "Oh, _this_ PCI device and
> >> > _this_ DT node need to be matched and populate some data
> >> > structures".
> >>
> >> You did get an answer to that on irc from George. Looks like
> >> of_pci_find_child_device() in drivers/pci/of.c
> >
> > Yeah, George said he thought that might be it but didn't have time to
> > confirm.
> >
> >> > Marek's patch seems to be, in short "here's where U-Boot
> >> > needs to wire things up". Bin has said that no, the function in
> >> > question is for other things.
> >>
> >> I disagree with this. It's a bind function and assigns other parameters
> >> of the driver instance too.
> >>
> >> > I think knowing where Linux does this
> >> > would be instructive to figure out where we need to have some additional
> >> > logic added OR we can make some cost/benefit analysis to see if it makes
> >> > more sense overall to add compatibles to some nodes rather than add to
> >> > the binary size.
> >>
> >> Adding compatible does not make any sense, the PCI ID provides that
> >> information. Adding compatible would only add redundancy which could
> >> possibly be even harmful (ie. if the controller got replaced with
> >> another one).
> >
> > To try and move things along rather than re-argue the same point, you're
> > saying that our pci_find_and_bind_driver() is the rough equivalent of
> > of_pci_find_child_device() or at least pci_set_of_node() (which calls
> > of_pci_find_child_device()).
> >
> > So, Bin, if this isn't the right place to start down this path, where
> > would be? Given that Linux can take a DTB and PCI bus with devices and
> > get things right, what would it look like for U-Boot to replicate the
> > same behavior? Instead of having to add explicit compatible nodes for
> > each PCI device, as I understand (but correct me if I'm wrong) we're
> > doing today. Thanks!
>
> So is this a requirement for all U-Boot driver subsystems to replicate
> the same Linux behavior? If yes, can we have it officially documented
> somewhere?
Without very good and documented reasons, yes, it's an expectation that
concepts / details we borrow from Linux should work like or close to
Linux. Large parts of the MTD subsystem for example are re-synced.
> Since Marek refused to take the original U-Boot option 1 to support
> his case, and asked U-Boot to follow Linux's practice on PCI device
> binding, if we go that way, here is what we can do:
>
> * Keep pci-uclass driver's post_bind() and child_post_bind() only for
> Sandbox configuration
> * Keep the call to pci_bus_find_devfn() in pci_bind_bus_devices() only
> for Sandbox configuration
> * Sandbox is special. We should limit the mechanism of matching PCI
> emulation device via "compatible" to sandbox only
Yes, Sandbox is special and if we #if that part as needed, that might be
good too.
> * Assign the DT node to the bound device in pci_find_and_bind_driver()
> if there is a valid PCI "reg" encoding for a specific PCI device in
> the device tree
> * Create DM PCI test case against the DT node assignment
> * Remove all compatible string in U-Boot's PCI device drivers: eg:
> ehci_pci_ids[], xhci_pci_ids[], etc. IOW, all PCI device drivers
> should only use U_BOOT_PCI_DEVICE(), aka the original U-Boot option 2
> * Fork a "pci-ns16550" driver to support U_BOOT_PCI_DEVICE(), as
> currently PCI ns16550 device driver uses "compatible" string to do the
> matching, and update crownbay.dts and galileo.dts (so far I only know
> two boards are using PCI ns16550 serial port)
> * Make sure all DM PCI test cases are not broken
> * Document all of the above changes in doc/driver-model/pci-info.txt
>
> I am not sure if I missed anything. Simon, could you also comment on it?
Yes, some further thoughts on how to move this forward would be helpful,
thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180814/36ff1731/attachment.sig>
next prev parent reply other threads:[~2018-08-14 19:39 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-08 13:03 [U-Boot] [PATCH] pci: Support parsing PCI controller DT subnodes Marek Vasut
2018-08-08 13:14 ` Bin Meng
2018-08-08 13:24 ` Marek Vasut
2018-08-08 13:39 ` Bin Meng
2018-08-08 14:33 ` Marek Vasut
2018-08-08 15:32 ` Bin Meng
2018-08-08 19:37 ` Marek Vasut
2018-08-08 23:24 ` Bin Meng
2018-08-09 0:36 ` Marek Vasut
2018-08-09 2:37 ` Bin Meng
2018-08-09 7:54 ` Marek Vasut
2018-08-09 9:41 ` Bin Meng
2018-08-09 10:25 ` Marek Vasut
2018-08-10 3:42 ` Bin Meng
2018-08-10 10:32 ` Marek Vasut
2018-08-13 2:07 ` Bin Meng
2018-08-13 13:39 ` Tom Rini
2018-08-13 16:07 ` Marek Vasut
2018-08-13 17:16 ` Tom Rini
2018-08-14 2:34 ` Bin Meng
2018-08-14 8:54 ` Marek Vasut
2018-08-14 9:35 ` Bin Meng
2018-08-15 9:20 ` Marek Vasut
2018-08-14 19:39 ` Tom Rini [this message]
2018-08-13 13:43 ` Marek Vasut
2018-08-10 12:01 ` Tom Rini
2018-08-10 12:38 ` Marek Vasut
2018-08-13 2:24 ` Bin Meng
2018-08-13 13:46 ` Marek Vasut
2018-08-14 1:46 ` Bin Meng
2018-08-14 8:55 ` Marek Vasut
2018-08-14 9:40 ` Bin Meng
2018-08-15 9:22 ` Marek Vasut
2018-08-15 10:19 ` Bin Meng
2018-08-15 10:27 ` Marek Vasut
2018-08-15 11:25 ` Tom Rini
2018-08-16 11:47 ` Marek Vasut
2018-08-17 1:51 ` Bin Meng
2018-08-17 10:27 ` Marek Vasut
2018-08-20 7:18 ` Bin Meng
2018-08-20 8:09 ` Marek Vasut
2018-08-20 16:57 ` Simon Glass
2018-08-20 18:42 ` Marek Vasut
2018-08-20 19:29 ` Simon Glass
2018-08-20 20:15 ` Marek Vasut
2018-08-22 18:08 ` Simon Glass
2018-08-22 20:19 ` Marek Vasut
2018-08-23 10:45 ` Simon Glass
2018-08-23 12:58 ` Marek Vasut
2018-08-30 0:29 ` Simon Glass
2018-08-30 9:25 ` Marek Vasut
2018-09-01 21:45 ` Simon Glass
2018-09-01 22:43 ` Marek Vasut
2018-09-02 1:07 ` Simon Glass
2018-09-02 18:24 ` Marek Vasut
2018-09-02 23:35 ` Simon Glass
2018-09-03 0:53 ` Marek Vasut
2018-08-21 3:46 ` Bin Meng
2018-08-21 4:02 ` Marek Vasut
2018-08-21 4:15 ` Bin Meng
2018-08-21 4:30 ` Marek Vasut
2018-08-21 4:56 ` Bin Meng
2018-08-21 5:43 ` Marek Vasut
2018-08-21 7:16 ` Bin Meng
2018-08-21 10:28 ` Marek Vasut
2018-08-22 2:14 ` Bin Meng
2018-08-22 9:57 ` Marek Vasut
2018-08-23 2:11 ` Bin Meng
2018-08-23 7:42 ` Marek Vasut
2018-08-21 17:32 ` Simon Glass
2018-08-21 18:26 ` Marek Vasut
2018-08-21 18:29 ` Simon Glass
2018-08-21 18:56 ` Marek Vasut
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=20180814193941.GC30947@bill-the-cat \
--to=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/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