[U-Boot] [PATCH] vexpress64: Juno: Change PCI buss addresses for IO to start from zero.

Juno uses a 1:1 mapping between CPU and PCI addresses for IO. First, that will trip devices that cannot use more than 16 bits of addresses for IO, second it is un-necessary as the system can handle zero-based PCI addresses just fine.
Change the mapping to start IO bus addresses from zero.
Signed-off-by: Liviu Dudau Liviu.Dudau@foss.arm.com --- board/armltd/vexpress64/pcie.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/armltd/vexpress64/pcie.c b/board/armltd/vexpress64/pcie.c index b3fb09c..0608a5a 100644 --- a/board/armltd/vexpress64/pcie.c +++ b/board/armltd/vexpress64/pcie.c @@ -123,7 +123,7 @@ void xr3pci_setup_atr(void) base += XR3PCI_ATR_TABLE_SIZE;
/* setup IO space translation */ - xr3pci_set_atr_entry(base, XR3_PCI_IOSPACE_START, XR3_PCI_IOSPACE_START, + xr3pci_set_atr_entry(base, XR3_PCI_IOSPACE_START, 0, XR3_PCI_IOSPACE_SIZE, XR3PCI_ATR_TRSLID_PCIE_IO);
base += XR3PCI_ATR_TABLE_SIZE;

Hi Liviu,
On Tue, Nov 22, 2016 at 11:19 AM, Liviu Dudau Liviu.Dudau@foss.arm.com wrote:
Juno uses a 1:1 mapping between CPU and PCI addresses for IO. First, that will trip devices that cannot use more than 16 bits of addresses for IO, second it is un-necessary as the system can handle zero-based PCI addresses just fine.
Change the mapping to start IO bus addresses from zero.
I assume this require corresponding DT change, shout if that's not true. If that's true, then does this patch not require patching of DT so that systems not running Uboot with this patch continue to work and we retain the mainline DT as is ?
-- Regards, Sudeep

On Tue, Nov 22, 2016 at 11:29:20AM +0000, Sudeep Holla wrote:
Hi Liviu,
On Tue, Nov 22, 2016 at 11:19 AM, Liviu Dudau Liviu.Dudau@foss.arm.com wrote:
Juno uses a 1:1 mapping between CPU and PCI addresses for IO. First, that will trip devices that cannot use more than 16 bits of addresses for IO, second it is un-necessary as the system can handle zero-based PCI addresses just fine.
Change the mapping to start IO bus addresses from zero.
I assume this require corresponding DT change, shout if that's not true. If that's true, then does this patch not require patching of DT so that systems not running Uboot with this patch continue to work and we retain the mainline DT as is ?
Yes, it does require DT changes, Jeremy Linton has a patch
-- Regards, Sudeep

On Tue, Nov 22, 2016 at 12:08:49PM +0000, Liviu Dudau wrote:
On Tue, Nov 22, 2016 at 11:29:20AM +0000, Sudeep Holla wrote:
Hi Liviu,
On Tue, Nov 22, 2016 at 11:19 AM, Liviu Dudau Liviu.Dudau@foss.arm.com wrote:
Juno uses a 1:1 mapping between CPU and PCI addresses for IO. First, that will trip devices that cannot use more than 16 bits of addresses for IO, second it is un-necessary as the system can handle zero-based PCI addresses just fine.
Change the mapping to start IO bus addresses from zero.
I assume this require corresponding DT change, shout if that's not true. If that's true, then does this patch not require patching of DT so that systems not running Uboot with this patch continue to work and we retain the mainline DT as is ?
Yes, it does require DT changes, Jeremy Linton has a patch
So to be clear, what level of coordination do we need between the two parts being merged? It would not be ideal to have combinations of U-Boot and Linux not work. Thanks!

On 22 November 2016 at 15:08, Tom Rini trini@konsulko.com wrote:
On Tue, Nov 22, 2016 at 12:08:49PM +0000, Liviu Dudau wrote:
On Tue, Nov 22, 2016 at 11:29:20AM +0000, Sudeep Holla wrote:
Hi Liviu,
On Tue, Nov 22, 2016 at 11:19 AM, Liviu Dudau Liviu.Dudau@foss.arm.com wrote:
Juno uses a 1:1 mapping between CPU and PCI addresses for IO. First, that will trip devices that cannot use more than 16 bits of addresses for IO, second it is un-necessary as the system can handle zero-based PCI addresses just fine.
Change the mapping to start IO bus addresses from zero.
I assume this require corresponding DT change, shout if that's not true. If that's true, then does this patch not require patching of DT so that systems not running Uboot with this patch continue to work and we retain the mainline DT as is ?
Yes, it does require DT changes, Jeremy Linton has a patch
So to be clear, what level of coordination do we need between the two parts being merged? It would not be ideal to have combinations of U-Boot and Linux not work. Thanks!
I was wondering that too.
However, I just tested the patch in my setup and everything still seems to work for me. I'll admit though that I only use the PCIe network port, I don't have any extra PCIe devices and don't use SATA drives in my setup.
-- Tom
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On 22/11/16 15:08, Tom Rini wrote:
On Tue, Nov 22, 2016 at 12:08:49PM +0000, Liviu Dudau wrote:
On Tue, Nov 22, 2016 at 11:29:20AM +0000, Sudeep Holla wrote:
Hi Liviu,
On Tue, Nov 22, 2016 at 11:19 AM, Liviu Dudau Liviu.Dudau@foss.arm.com wrote:
Juno uses a 1:1 mapping between CPU and PCI addresses for IO. First, that will trip devices that cannot use more than 16 bits of addresses for IO, second it is un-necessary as the system can handle zero-based PCI addresses just fine.
Change the mapping to start IO bus addresses from zero.
I assume this require corresponding DT change, shout if that's not true. If that's true, then does this patch not require patching of DT so that systems not running Uboot with this patch continue to work and we retain the mainline DT as is ?
Yes, it does require DT changes, Jeremy Linton has a patch
So to be clear, what level of coordination do we need between the two parts being merged? It would not be ideal to have combinations of U-Boot and Linux not work. Thanks!
What I had in mind is U-Boot modifying/fixing up the DT to adapt to this change so that we maintain compatibility and don't break anything. But I was not sure how feasible is that solution with other bootloaders like UEFI.

|-----Original Message----- |From: Sudeep Holla [mailto:sudeep.holla@arm.com] |Sent: Tuesday, November 22, 2016 10:11 AM |To: Tom Rini; Liviu Dudau |Cc: Sudeep Holla; Lorenzo Pieralisi; Jeremy Linton; U-Boot ML |Subject: Re: [U-Boot] [PATCH] vexpress64: Juno: Change PCI buss addresses |for IO to start from zero. | | | |On 22/11/16 15:08, Tom Rini wrote: |> On Tue, Nov 22, 2016 at 12:08:49PM +0000, Liviu Dudau wrote: |>> On Tue, Nov 22, 2016 at 11:29:20AM +0000, Sudeep Holla wrote: |>>> Hi Liviu, |>>> |>>> On Tue, Nov 22, 2016 at 11:19 AM, Liviu Dudau |Liviu.Dudau@foss.arm.com wrote: |>>>> Juno uses a 1:1 mapping between CPU and PCI addresses for IO. |>>>> First, that will trip devices that cannot use more than 16 bits of |>>>> addresses for IO, second it is un-necessary as the system can |>>>> handle zero-based PCI addresses just fine. |>>>> |>>>> Change the mapping to start IO bus addresses from zero. |>>>> |>>> |>>> I assume this require corresponding DT change, shout if that's not true. |>>> If that's true, then does this patch not require patching of DT so |>>> that systems not running Uboot with this patch continue to work and |>>> we retain the mainline DT as is ? |>> |>> Yes, it does require DT changes, Jeremy Linton has a patch |> |> So to be clear, what level of coordination do we need between the two |> parts being merged? It would not be ideal to have combinations of |> U-Boot and Linux not work. Thanks! |> | |What I had in mind is U-Boot modifying/fixing up the DT to adapt to this |change so that we maintain compatibility and don't break anything. But I was |not sure how feasible is that solution with other bootloaders like UEFI.
Hi,
UEFI already has the 0 based PIO in place, so in theory its broken with the current DT.
Put another way, I suspect that there are few (if any) juno's running out there, making use of PCIe PIO. Most of the boards people are likely to plug into the machine don't use PIO.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

On Tue, Nov 22, 2016 at 11:19:18AM +0000, Liviu Dudau wrote:
Juno uses a 1:1 mapping between CPU and PCI addresses for IO. First, that will trip devices that cannot use more than 16 bits of addresses for IO, second it is un-necessary as the system can handle zero-based PCI addresses just fine.
Change the mapping to start IO bus addresses from zero.
Signed-off-by: Liviu Dudau Liviu.Dudau@foss.arm.com
Applied to u-boot/master, thanks!
participants (5)
-
Jeremy Linton
-
Liviu Dudau
-
Ryan Harkin
-
Sudeep Holla
-
Tom Rini