[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 05/30] xen/public: Export cpu featureset information in the public API



On 19/02/16 17:29, Joao Martins wrote:
> On 02/05/2016 01:41 PM, Andrew Cooper wrote:
>> For the featureset to be a useful object, it needs a stable interpretation, a
>> property which is missing from the current hw_caps interface.
>>
>> Additionly, introduce TSC_ADJUST, SHA, PREFETCHWT1, ITSC, EFRO and CLZERO
>> which will be used by later changes.
>>
>> To maintain compilation, FSCAPINTS is currently hardcoded at 9.  Future
>> changes will change this to being dynamically generated.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Hey Andrew!
>
> There are a few word motions in this patch:

Indeed there are.  They are in aid of getting a new clean interface.

>
> [current]   [this series]
> word 0   ->  word 0
> word 4   ->  word 1
> word 1,6 ->  word 2,3
> word 2   ->  word 4
> word 7,8 ->  word 5,6
>          ->  word 7   (new leaf not previously described)
>          ->  word 8   (new leaf not previously described)
> word 3   ->  word 9   (linux defined mapping)
>
> Since you're proposing the stabilization of physinfo.hw_caps

Stabilising of physinfo.hw_caps is a side effect, but it has shifted
words in the past (c/s 4f4eec3, 6c421a1, 9c907c6).  It is not a stable
interface from Xen, and cannot be relied upon.

It has also never had a published ABI.

>  and given that this
> is exposed on both sysctl and libxl (through libxl_hwcap) shouldn't its size
> match the real one (boot_cpu_data.x86_capability) i.e. NCAPINTS ? 
> Additionally I
> see that libxl_hwcap is also hardcoded to 8 alongside struct 
> xen_sysctl_physinfo
> when it should be 10 ?

Hardcoding of the size in sysctl can be worked around. Fixing libxl is
harder.

The synthetic leaves are internal and should not be exposed.

> libxl users could potentially make use of this hwcap field to see what 
> features
> the host CPU supports.

The purpose of the new featureset interface is to have stable object
which can be used by higher level toolstacks.

This is done by pretending that hw_caps never existed, and replacing it
wholesale with a bitmap, (specified as variable length and safe to
zero-extend), with an ABI in the public header files detailing what each
bit means.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.