[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC 0/5] xen/arm: support big.little SoC
On Fri, 23 Sep 2016, Dario Faggioli wrote: > On Fri, 2016-09-23 at 11:15 +0100, Julien Grall wrote: > > On 23/09/16 11:05, Peng Fan wrote: > > > If cluster is not prefered, cpuclass maybe a choice, but I > > > personally perfer > > > "cluster" split for ARM. > > > > > > Thanks, > > > Peng. > > > > > > [1] https://en.wikipedia.org/wiki/ARM_big.LITTLE > > > > Please try to have a think on all the use case and not only yours. > > > This last line is absolutely true and very important! > > That being said, I am a bit lost. > > So, AFAICT, in order to act properly when the user asks for: > > vcpuclass = ["1,2:foo", "0,3:bar"] > > we need to decide what "foo" and "bar" are at the xl and libxl level, > and whether they are the same all the way down to Xen (and if not, > what's the mapping). I think "foo" and "bar" need to be "big" and "LITTLE" at the xl level. Given that Xen is the one with the information about which core is big and which is LITTLE, I think the hypervisor should provide the mapping between labels and cpu and cluster indexes. > We also said it would be nice to support: > > xl cpupool-split --feature=foobar > > and hence we also need to decide what's foobar, whether it is in the > same namespace of foo and bar (i.e., it can be foobar==foo, or > foobar==bar, etc), or it is something else, or both. I would be consistent and always use foobar=bigLITTLE at the xl level. > Can someone list what are the various alternative approaches on the > table? The info available is: http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/arm/cpus.txt plus: http://marc.info/?l=linux-arm-kernel&m=147308556729426&w=2 We have cpu and cluster indexes. We have cpu compatible strings which tell us whether a cpu is an "a53" or an "a15". We have an optional property that tells us the cpu "capacity". Higher capacity means "big", lower capacity means "LITTLE". Xen could always deal with cpu and cluster indexes, but provide convenient labels to libxl. For example: cpus { #size-cells = <0>; #address-cells = <1>; cpu@0 { device_type = "cpu"; compatible = "arm,cortex-a15"; reg = <0x0>; capacity-dmips-mhz = <1024>; }; cpu@1 { device_type = "cpu"; compatible = "arm,cortex-a15"; reg = <0x1>; capacity-dmips-mhz = <1024>; }; cpu@100 { device_type = "cpu"; compatible = "arm,cortex-a7"; reg = <0x100>; capacity-dmips-mhz = <512>; }; cpu@101 { device_type = "cpu"; compatible = "arm,cortex-a7"; reg = <0x101>; capacity-dmips-mhz = <512>; }; }; The reg property encodes cpu number and cluster number and matches the value in the MPIDR register. That is what Xen could take as parameter. The mapping between reg and "big" or "LITTLE" and the cpu compatible name, such as "a7", could be returned by an hypercall such as xen_arch_domainconfig. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |