From mboxrd@z Thu Jan 1 00:00:00 1970 From: Suriyan Ramasami Subject: Re: [PATCH v2 1/1] XEN/ARM: Add Odroid-XU3/XU4 support Date: Wed, 10 Feb 2016 17:47:46 -0800 Message-ID: References: <1454996927-21393-1-git-send-email-suriyan.r@gmail.com> <1455011595.19857.11.camel@citrix.com> <1455027557.19857.82.camel@citrix.com> <1455098624.19857.135.camel@citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8084473723430427502==" Return-path: In-Reply-To: <1455098624.19857.135.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: stefano.stabellini@citrix.com, "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org --===============8084473723430427502== Content-Type: multipart/alternative; boundary=001a114080eac269d4052b74bcd0 --001a114080eac269d4052b74bcd0 Content-Type: text/plain; charset=UTF-8 On Wed, Feb 10, 2016 at 2:03 AM, Ian Campbell wrote: > On Tue, 2016-02-09 at 10:20 -0800, Suriyan Ramasami wrote: > > I agree on the first two paragraphs. > > > > For the third paragraph, the rebuttal is that the exynos5800 and > > > > exynos5422 based SoCs can have both clusters on at the same time. > Hence, > > > > the third paragrapah comment will have to be tweaked further. > Possibly > > > > reading: > > > > The exynos5800 and exynos5422 can have both clusters on at the same > time. > > > > The exynos5800 boots up with cpu0 on cluster0 (A15). The exynos5422 > can > > > > boot up on either clusters as its pin controlled. In this case the > DTS > > > > should properly reflect the cpu order. > > > > > > Does the OS need to be aware of all these combinations though? Is it > not > > > sufficient to know how to bring up an A15 core and how to bring up an > A7 > > > core and then just do so based on the information in the DTS, without > > > needing to worry about which sort of core we happened to have booted > on? > > > > > > > > Unfortunately, at least looking at the boot up code for the Exynos5422, > > the OS needs to be aware of it. This is what I see in the linux source > > code. If it boots up on an A7, then a special reset is needed which is > > not needed when booted up otherwise. I do not have much more details on > > that other than the Linux code. > > Without that reset sequence, I have also verified that the powered on CPU > > does not come up. > > Are we able to say that if we are booted on cluster 1 (always the A7s) then > we always need this magic reset? i.e. is true for all SoCs which have an A7 > cluster and can boot from it? (it's tautologically true for SocS which > either have no A7's or cannot boot from them). > > I do not have the information to answer the question. I am limited to what I know (albeit a little bit) wrt the hardkernel related boards - Exynos 5410 (odroid-XU) and the Exynos 5422 (Odoird XU3/XU4). With my limited knowledge, I am only aware of Exynos 5410 which is capable of booting off of an A7 or an A15. > Maybe I'm looking for similarities between different exynos variants which > doesn't exist though. If we are going to talk about specific SoCs in the > comments then I would rather that the code was also explicit rather than > assuming cluster 1 will only be found on the 5800, that might be as simple > as mapping the compatible string to a max_cluster (default 0 for unknown > SoC) and warning if pcluster > max_cluster. > Can you please elaborate on the mapping that you talk about above. I am lost here :-( > > > > > > > The exynos5410 can have only one cluster on at a time, and it boots > > > up > > > > with pcluster == 0. > > > > Any tweaks and comments on the above is appreciated. > > > > > > How much of this is down to physical h/w limitations and how much of it > > > is > > > down to firmware or software limitations? Can you flip the to the other > > > cluster somehow? > > > > > The 5410 boots up on an A15, and only those 4 A15 CPUs in cluster 0 are > > brought up. Hence, no flipping is required. > > What I meant was, given that the 5410 has a cluster of A15 and a cluster of > A7s (right?) and you can only have one on at a time, how does an OS make > use of the A7s if it wants to? As you say it boots from the A15, so how can > the A7s be used? > > The Linux OS has a bL (big - little) switcher module/code which handles that. It maps one big core to one little core, and when the load is not high, it switches off the big cluster, and turns on the small cluster - AFAICT. Also, are we still on wrt the two cpu pool suggestion and to have 4 cores from cluster 0 in cpupool0 and 4 cores from cluster 1 in cpupool1. It would be great if you can point me to some code as well. I have been looking at cpupool.c and also on the system call interface that it provides. > Ian. > --001a114080eac269d4052b74bcd0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On Wed, Feb 10, 2016 at 2:03 AM, Ian Campbell <ian.campbell@citr= ix.com> wrote:
On Tue, 2016-02-09 at 10:20 -0800, Suriyan Ramasami wrote:
> =C2=A0I agree on the first two paragraphs.
> > > For the third paragraph, the rebuttal is that the exynos5800= and
> > > exynos5422 based SoCs can have both clusters on at the same = time. Hence,
> > > the third paragrapah comment will have to be tweaked further= . Possibly
> > > reading:
> > > The exynos5800 and exynos5422 can have both clusters on at t= he same time.
> > > The exynos5800 boots up with cpu0 on cluster0 (A15). The exy= nos5422 can
> > > boot up on either clusters as its pin controlled. In this ca= se the DTS
> > > should properly reflect the cpu order.
> >
> > Does the OS need to be aware of all these combinations though? Is= it not
> > sufficient to know how to bring up an A15 core and how to bring u= p an A7
> > core and then just do so based on the information in the DTS, wit= hout
> > needing to worry about which sort of core we happened to have boo= ted on?
> >
> >
> Unfortunately, at least looking at the boot up code for the Exynos5422= ,
> the OS needs to be aware of it. This is what I see in the linux source=
> code. If it boots up on an A7, then a special reset is needed which is=
> not needed when booted up otherwise. I do not have much more details o= n
> that other than the Linux code.
> Without that reset sequence, I have also verified that the powered on = CPU
> does not come up.

Are we able to say that if we are booted on cluster 1 (always the A7= s) then
we always need this magic reset? i.e. is true for all SoCs which have an A7=
cluster and can boot from it? (it's tautologically true for SocS which<= br> either have no A7's or cannot boot from them).


I do not have the information to answe= r the question. I am limited to what I know (albeit a little bit) wrt the h= ardkernel related boards - Exynos 5410 (odroid-XU) and the Exynos 5422 (Odo= ird XU3/XU4). With my limited knowledge, I am only aware of Exynos 5410 whi= ch is capable of booting off of an A7 or an A15.
=C2=A0
Maybe I'm looking for similarities between different exynos variants wh= ich
doesn't exist though. If we are going to talk about specific SoCs in th= e
comments then I would rather that the code was also explicit rather than assuming cluster 1 will only be found on the 5800, that might be as simple<= br> as mapping the compatible string to a max_cluster (default 0 for unknown SoC) and warning if pcluster > max_cluster.

Can you please elaborate on the mapping that you talk about above. = I am lost here :-(
=C2=A0

>
> > =C2=A0>=C2=A0 The exynos5410 can have only one cluster on at a= time, and it boots
> > up
> > > with pcluster =3D=3D 0.
> > > Any tweaks and comments on the above is appreciated.
> >
> > How much of this is down to physical h/w limitations and how much= of it
> > is
> > down to firmware or software limitations? Can you flip the to the= other
> > cluster somehow?
> > =C2=A0=C2=A0
> The 5410 boots up on an A15, and only those 4 A15 CPUs in cluster 0 ar= e
> brought up. Hence, no flipping is required.

What I meant was, given that the 5410 has a cluster of A15 and a clu= ster of
A7s (right?) and you can only have one on at a time, how does an OS make use of the A7s if it wants to? As you say it boots from the A15, so how can=
the A7s be used?

The Linux OS has a bL (big - little) switcher module/code which han= dles that. It maps one big core to one little core, and when the load is no= t high, it switches off the big cluster, and turns on the small cluster - A= FAICT.

Also, are we still on wrt the two cpu pool suggest= ion and to have 4 cores from cluster 0 in cpupool0 and 4 cores from cluster= 1 in cpupool1. It would be great if you can point me to some code as well.= I have been looking at cpupool.c and also on the system call interface tha= t it provides.

=C2=A0
Ian.

--001a114080eac269d4052b74bcd0-- --===============8084473723430427502== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --===============8084473723430427502==--