From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Tue, 18 Feb 2020 11:31:39 -0700 Subject: [RFC PATCH] serial: ns16550: Move PCI access from ofdata_to_platdata() to probe() In-Reply-To: <20200218123424.85618-1-wolfgang.wallner@br-automation.com> References: <20200218123424.85618-1-wolfgang.wallner@br-automation.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, 18 Feb 2020 at 05:36, Wolfgang Wallner wrote: > > Currently the ofdata_to_platdata() method calls dev_read_addr_pci(), > which potentially accesses the parent PCI bus. If this happens before > the parent PCI bus is probed the resulting address will be wrong. > > This behavior was triggered by commit 82de42fa1468 ("dm: core: > Allocate parent data separate from probing parent"). > > According to a comment in drivers/pci/pci-uclass.c [1] accessing > the PCI parent bus in ofdata_to_platdata() is not allowed, and the > access should be moved to the probe() function. > > Move the call to dev_read_addr_pci() and the related handling of the > 'addr' value from the ofdata_to_platdata() to the probe() method. > > While moving the code, the comment /* try Processor Local Bus device > first */ was dropped. It was initially added with commit 3db886a5bf38 > ("serial: ns16550: Support ns16550 compatible pci uart devices") and > later made obsolete with commit 33c215af4b9d ("dm: pci: Add a function > to read a PCI BAR"). > > [1] Comment in drivers/pci/pci-uclass.c: > "A common cause of this problem is that this function is called in the > ofdata_to_platdata() method of @dev. Accessing the PCI bus in that > method is not allowed, since it has not yet been probed. To fix this, > move that access to the probe() method of @dev instead." > > Signed-off-by: Wolfgang Wallner > > Fixes: 82de42fa1468 ("dm: core: Allocate parent data separate from > probing parent") > > --- > The discussion leading to this patch is located at > https://lists.denx.de/pipermail/u-boot/2020-February/399811.html > > drivers/serial/ns16550.c | 26 +++++++++++++------------- > 1 file changed, 13 insertions(+), 13 deletions(-) Reviewed-by: Simon Glass