From: Kishon Vijay Abraham I <kishon@ti.com>
To: Pratyush Anand <pratyush.anand@st.com>
Cc: Jingoo Han <jg1.han@samsung.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
Mohit KUMAR DCG <Mohit.KUMAR@st.com>,
Ajay KHANDELWAL <ajay.khandelwal@st.com>
Subject: Re: [QUERY] Number of address translation regions in designware
Date: Wed, 23 Oct 2013 21:15:34 +0530 [thread overview]
Message-ID: <5267EF1E.1010101@ti.com> (raw)
In-Reply-To: <20131023043610.GA5521@pratyush-vbox>
Hi Pratyush,
On Wednesday 23 October 2013 10:06 AM, Pratyush Anand wrote:
> Hi Kishon,
>
> On Tue, Oct 22, 2013 at 10:20:01PM +0800, Kishon Vijay Abraham I wrote:
>> Hi Pratyush, Jingoo,
>>
>> On Tuesday 22 October 2013 10:46 AM, Jingoo Han wrote:
>>> On Monday, October 21, 2013 10:28 PM, Kishon Vijay Abraham I wrote:
>>>>
>>>> Currently I see in pcie-designware.c we use only 2 ATU regions. We re-use
>>>> INDEX0 for mem outbound and cfg0, and INDEX1 for cfg1 and io. So I'd like to
>>>> know if in your platform, do you have only 2 address translation regions? In
>>>> DRA7xx we have 16 outbound regions and 4 inbound regions.
>>>
>>> In Exynos, there are only 2 inbound and 2 outbound viewpoints.
>>>
>>>> Also the same designware IP can be used as a EP also no? Shouldn't we move it
>>>> out of drivers/pci/host and allow it to be configured as EP also?
>>>
>>> Currently, Exynos PCIe IP does not support EP mode.
>>
>> Thanks for the information. I think we can do some optimization w.r.t address
>> translation regions. Will post a RFC soon.
>>
>> One more query.
>> In dw_pcie_prog_viewport_cfg0/dw_pcie_prog_viewport_cfg1 functions, the *lower
>> target* is programmed to busdev. Is it for any specific reason?
>> I mean doing that will leave lot of holes in the PCIe address space.
>> IIUC, if we don't set that to busdev, consecutive pcie address space will be
>> used for each function no?
>
> Yes, I think even if CX_ATU_MIN_REGION_SIZE is 64KB in any controller,
> bus, dev and function number can be used to define target address.
I meant for function 0 the configuration space will be from (0x0 t0 0xfff -
4KB). If we use *busdev* for programming target, for function 1 the
configuration space will start at 0x10000 PCIe address which will leave a small
hole from (0x1000 to 0xffff). I'm not sure if it will have a big impact though.
Also till we haven't exhausted the 64KB space (minimum), we wouldn't be needing
to program a new viewport. That's good enough to accommodate 18 functions for
the number of devices.
>
> So you are trying to allocate statically a separate viewport for each
> function's cfg0 transfer (whereever sufficient number of viewport is
> avilable)?
Actually in DRA7xx, we face a different problem in that, we can't program the
translation region directly from the ranges. Because while programming the
address translation window, the most significant 4 bits are not used.
For example if you see, the cpu address of memory window starts @ 0x20012000
but while programming the address translation window we have to give 0x00012000.
My dt data looked like this.
ranges = <0x00000800 0 0x20001000 0x20001000 0 0x00001000
0x81000000 0 0 0x20002000 0 0x00010000
0x82000000 0 0x20012000 0x20012000 0 0xffee000>;
translation = <(OUTBOUND | INDEX0) CFG0 0x0 0x00001000 0x0000fff 0x0 0x00001000
(OUTBOUND | INDEX1) IO 0x0 0x00002000 0x000ffff 0x0 0x00002000
(OUTBOUND | INDEX2) MEM 0x0 0x00012000 0xffee000 0x0 0x20012000
>;
(btw that translation is a wip I tried to get pcie working in dra7x).
Since I wanted to do the translation configuration from dt data, I was thinking
whether it is necessary to program the viewport dynamically.
But now I think some sort of dynamic programming would be needed, considering
the limitation on few SoCs.
Thanks
Kishon
>
> If viewport is programmed dynamically at each cfg transfer, then
> whether you use bus and dev only or function also, will it really make
> any difference in saving of address space?
>
> Regards
> Pratyush
>
>>
>> Thanks
>> Kishon
next prev parent reply other threads:[~2013-10-23 15:45 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-21 13:28 [QUERY] Number of address translation regions in designware Kishon Vijay Abraham I
2013-10-22 4:36 ` Pratyush Anand
2013-10-22 5:16 ` Jingoo Han
2013-10-22 14:20 ` Kishon Vijay Abraham I
2013-10-23 4:36 ` Pratyush Anand
2013-10-23 15:45 ` Kishon Vijay Abraham I [this message]
2013-10-29 7:10 ` Pratyush Anand
2013-10-29 10:55 ` Kishon Vijay Abraham I
2013-10-29 16:14 ` Pratyush Anand
2013-11-06 8:42 ` Kishon Vijay Abraham I
2013-11-15 0:40 ` Marek Vasut
2013-11-15 5:28 ` Kishon Vijay Abraham I
2013-11-15 6:13 ` Jingoo Han
2013-11-15 15:37 ` Marek Vasut
2013-11-18 5:46 ` Kishon Vijay Abraham I
2013-11-18 14:43 ` Arnd Bergmann
2013-11-01 12:37 ` 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=5267EF1E.1010101@ti.com \
--to=kishon@ti.com \
--cc=Mohit.KUMAR@st.com \
--cc=ajay.khandelwal@st.com \
--cc=jg1.han@samsung.com \
--cc=linux-pci@vger.kernel.org \
--cc=pratyush.anand@st.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.