diff mbox

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

Message ID 20161122111918.1789-1-Liviu.Dudau@foss.arm.com
State Accepted
Commit 88e0d59315f4863537a94f12ef48348764f4316b
Delegated to: Tom Rini
Headers show

Commit Message

Liviu Dudau Nov. 22, 2016, 11:19 a.m. UTC
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(-)

Comments

Sudeep Holla Nov. 22, 2016, 11:29 a.m. UTC | #1
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
Liviu Dudau Nov. 22, 2016, 12:08 p.m. UTC | #2
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
Tom Rini Nov. 22, 2016, 3:08 p.m. UTC | #3
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!
Ryan Harkin Nov. 22, 2016, 3:54 p.m. UTC | #4
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
>
Sudeep Holla Nov. 22, 2016, 4:10 p.m. UTC | #5
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.
Jeremy Linton Nov. 28, 2016, 5:11 p.m. UTC | #6
|-----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.
Tom Rini Nov. 29, 2016, 6:02 p.m. UTC | #7
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!
diff mbox

Patch

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;