[libvirt] [PATCH] cpu: Add support for al57 Intel features

Shaohe Feng posted 1 patch 6 years, 4 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/1513551764-1946-1-git-send-email-shaohe.feng@intel.com
src/cpu/cpu_map.xml | 3 +++
1 file changed, 3 insertions(+)
[libvirt] [PATCH] cpu: Add support for al57 Intel features
Posted by Shaohe Feng 6 years, 4 months ago
We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
space. So VM can be aware that it need to enable 5-level paging.

Corresponding QEMU commits:
        al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122
---
 src/cpu/cpu_map.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/cpu/cpu_map.xml b/src/cpu/cpu_map.xml
index e5da7a8..922a195 100644
--- a/src/cpu/cpu_map.xml
+++ b/src/cpu/cpu_map.xml
@@ -285,6 +285,9 @@
     <feature name='ospke'>
       <cpuid eax_in='0x07' ecx_in='0x00' ecx='0x00000010'/>
     </feature>
+    <feature name='la57'>
+      <cpuid eax_in='0x07' ecx_in='0x00' ecx='0x00010000'/>
+    </feature>
 
     <feature name='avx512-4vnniw'>
       <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00000004'/>
-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] cpu: Add support for al57 Intel features
Posted by John Ferlan 6 years, 3 months ago

On 12/17/2017 06:02 PM, Shaohe Feng wrote:
> We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
> space. So VM can be aware that it need to enable 5-level paging.
> 
> Corresponding QEMU commits:
>         al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122
> ---
>  src/cpu/cpu_map.xml | 3 +++
>  1 file changed, 3 insertions(+)
> 

I think if you go through history of cpu_map.xml changes you'll find
when a new feature is added there are tests added as well - this would
thus seemingly need a test adjustment as well.

John

> diff --git a/src/cpu/cpu_map.xml b/src/cpu/cpu_map.xml
> index e5da7a8..922a195 100644
> --- a/src/cpu/cpu_map.xml
> +++ b/src/cpu/cpu_map.xml
> @@ -285,6 +285,9 @@
>      <feature name='ospke'>
>        <cpuid eax_in='0x07' ecx_in='0x00' ecx='0x00000010'/>
>      </feature>
> +    <feature name='la57'>
> +      <cpuid eax_in='0x07' ecx_in='0x00' ecx='0x00010000'/>
> +    </feature>
>  
>      <feature name='avx512-4vnniw'>
>        <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00000004'/>
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] cpu: Add support for al57 Intel features
Posted by Feng, Shaohe 6 years, 3 months ago
On 2018年01月05日 02:52, John Ferlan wrote:
>
> On 12/17/2017 06:02 PM, Shaohe Feng wrote:
>> We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
>> space. So VM can be aware that it need to enable 5-level paging.
>>
>> Corresponding QEMU commits:
>>          al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122
>> ---
>>   src/cpu/cpu_map.xml | 3 +++
>>   1 file changed, 3 insertions(+)
>>
> I think if you go through history of cpu_map.xml changes you'll find
> when a new feature is added there are tests added as well - this would
> thus seemingly need a test adjustment as well.
Thanks John.
Will add tests.

>
> John
>
>> diff --git a/src/cpu/cpu_map.xml b/src/cpu/cpu_map.xml
>> index e5da7a8..922a195 100644
>> --- a/src/cpu/cpu_map.xml
>> +++ b/src/cpu/cpu_map.xml
>> @@ -285,6 +285,9 @@
>>       <feature name='ospke'>
>>         <cpuid eax_in='0x07' ecx_in='0x00' ecx='0x00000010'/>
>>       </feature>
>> +    <feature name='la57'>
>> +      <cpuid eax_in='0x07' ecx_in='0x00' ecx='0x00010000'/>
>> +    </feature>
>>   
>>       <feature name='avx512-4vnniw'>
>>         <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00000004'/>
>>

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] cpu: Add support for al57 Intel features
Posted by Jiri Denemark 6 years, 3 months ago
On Mon, Jan 08, 2018 at 19:06:43 +0800, Feng, Shaohe  wrote:
> On 2018年01月05日 02:52, John Ferlan wrote:
> >
> > On 12/17/2017 06:02 PM, Shaohe Feng wrote:
> >> We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
> >> space. So VM can be aware that it need to enable 5-level paging.
> >>
> >> Corresponding QEMU commits:
> >>          al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122
> >> ---
> >>   src/cpu/cpu_map.xml | 3 +++
> >>   1 file changed, 3 insertions(+)
> >>
> > I think if you go through history of cpu_map.xml changes you'll find
> > when a new feature is added there are tests added as well - this would
> > thus seemingly need a test adjustment as well.
> Thanks John.
> Will add tests.

Adding such test usually means you go to tests/cputestdata/ directory
and run "./cpu-gather.sh | ./cpu-parse.sh" which will produce several
data files. Then you add a new test case in tests/cputest.c for this new
CPU and regenerate the files with expected results. If you do this
before adding the new feature, the patch which will then add it will
nicely show the new feature gets added into the expected results of the
new CPU test.

Don't forget to install cpuid tool and make sure you have the latest
upstream qemu installed in the system.

Jirka

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] cpu: Add support for al57 Intel features
Posted by Feng, Shaohe 6 years, 3 months ago
On 2018年01月09日 18:40, Jiri Denemark wrote:
> On Mon, Jan 08, 2018 at 19:06:43 +0800, Feng, Shaohe  wrote:
>> On 2018年01月05日 02:52, John Ferlan wrote:
>>> On 12/17/2017 06:02 PM, Shaohe Feng wrote:
>>>> We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
>>>> space. So VM can be aware that it need to enable 5-level paging.
>>>>
>>>> Corresponding QEMU commits:
>>>>           al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122
>>>> ---
>>>>    src/cpu/cpu_map.xml | 3 +++
>>>>    1 file changed, 3 insertions(+)
>>>>
>>> I think if you go through history of cpu_map.xml changes you'll find
>>> when a new feature is added there are tests added as well - this would
>>> thus seemingly need a test adjustment as well.
>> Thanks John.
>> Will add tests.
> Adding such test usually means you go to tests/cputestdata/ directory
> and run "./cpu-gather.sh | ./cpu-parse.sh" which will produce several
> data files. Then you add a new test case in tests/cputest.c for this new
> CPU and regenerate the files with expected results. If you do this
> before adding the new feature, the patch which will then add it will
> nicely show the new feature gets added into the expected results of the
> new CPU test.
>
> Don't forget to install cpuid tool and make sure you have the latest
> upstream qemu installed in the system.
>
> Jirka

Hi Jirka,

I went through the tests/cputestdata/ directory and found it’s for 
defining features for different CPU models.

However, the la57 feature is not included in any current CPUs. So I 
think we can get waived for the tests changes?

I check la57 on my Haswell platform it show

$ qemu-system-x86_64 -enable-kvm  -cpu Haswell,+la57,check
warning: host doesn't support requested feature: CPUID.07H:ECX.la57 [bit 16]

BR

Shaohe Feng
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] cpu: Add support for al57 Intel features
Posted by Jiri Denemark 6 years, 2 months ago
On Fri, Jan 19, 2018 at 22:28:39 +0800, Feng, Shaohe  wrote:
> On 2018年01月09日 18:40, Jiri Denemark wrote:
> > On Mon, Jan 08, 2018 at 19:06:43 +0800, Feng, Shaohe  wrote:
> >> On 2018年01月05日 02:52, John Ferlan wrote:
> >>> On 12/17/2017 06:02 PM, Shaohe Feng wrote:
> >>>> We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
> >>>> space. So VM can be aware that it need to enable 5-level paging.
> >>>>
> >>>> Corresponding QEMU commits:
> >>>>           al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122
> >>>> ---
> >>>>    src/cpu/cpu_map.xml | 3 +++
> >>>>    1 file changed, 3 insertions(+)
> >>>>
> >>> I think if you go through history of cpu_map.xml changes you'll find
> >>> when a new feature is added there are tests added as well - this would
> >>> thus seemingly need a test adjustment as well.
> >> Thanks John.
> >> Will add tests.
> > Adding such test usually means you go to tests/cputestdata/ directory
> > and run "./cpu-gather.sh | ./cpu-parse.sh" which will produce several
> > data files. Then you add a new test case in tests/cputest.c for this new
> > CPU and regenerate the files with expected results. If you do this
> > before adding the new feature, the patch which will then add it will
> > nicely show the new feature gets added into the expected results of the
> > new CPU test.
> >
> > Don't forget to install cpuid tool and make sure you have the latest
> > upstream qemu installed in the system.
> >
> > Jirka
> 
> Hi Jirka,
> 
> I went through the tests/cputestdata/ directory and found it’s for 
> defining features for different CPU models.
> 
> However, the la57 feature is not included in any current CPUs. So I 
> think we can get waived for the tests changes?

Hmm, I expected you had access to such host for testing...

Anyway, ACK to the patch then with the following diff squashed in
(apparently you didn't run make check):

diff --git a/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml b/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
index 7ff998907d..6c2bbac190 100644
--- a/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
@@ -43,6 +43,7 @@
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='ospke'/>
+      <feature policy='require' name='la57'/>
       <feature policy='require' name='xsaveopt'/>
       <feature policy='require' name='xgetbv1'/>
       <feature policy='require' name='mmxext'/>

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] cpu: Add support for al57 Intel features
Posted by Feng, Shaohe 6 years, 2 months ago
On 2018年01月25日 22:35, Jiri Denemark wrote:
> On Fri, Jan 19, 2018 at 22:28:39 +0800, Feng, Shaohe  wrote:
>> On 2018年01月09日 18:40, Jiri Denemark wrote:
>>> On Mon, Jan 08, 2018 at 19:06:43 +0800, Feng, Shaohe  wrote:
>>>> On 2018年01月05日 02:52, John Ferlan wrote:
>>>>> On 12/17/2017 06:02 PM, Shaohe Feng wrote:
>>>>>> We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
>>>>>> space. So VM can be aware that it need to enable 5-level paging.
>>>>>>
>>>>>> Corresponding QEMU commits:
>>>>>>            al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122
>>>>>> ---
>>>>>>     src/cpu/cpu_map.xml | 3 +++
>>>>>>     1 file changed, 3 insertions(+)
>>>>>>
>>>>> I think if you go through history of cpu_map.xml changes you'll find
>>>>> when a new feature is added there are tests added as well - this would
>>>>> thus seemingly need a test adjustment as well.
>>>> Thanks John.
>>>> Will add tests.
>>> Adding such test usually means you go to tests/cputestdata/ directory
>>> and run "./cpu-gather.sh | ./cpu-parse.sh" which will produce several
>>> data files. Then you add a new test case in tests/cputest.c for this new
>>> CPU and regenerate the files with expected results. If you do this
>>> before adding the new feature, the patch which will then add it will
>>> nicely show the new feature gets added into the expected results of the
>>> new CPU test.
>>>
>>> Don't forget to install cpuid tool and make sure you have the latest
>>> upstream qemu installed in the system.
>>>
>>> Jirka
>> Hi Jirka,
>>
>> I went through the tests/cputestdata/ directory and found it’s for
>> defining features for different CPU models.
>>
>> However, the la57 feature is not included in any current CPUs. So I
>> think we can get waived for the tests changes?
> Hmm, I expected you had access to such host for testing...
I have checked with the KVM/qemu developer, the also have no such host.
They do their development  on an simulator.

But I did set up the libvirt env,  start a VM with la57 feature, and 
check la57 argument in the qemu command line.

>
> Anyway, ACK to the patch then with the following diff squashed in
> (apparently you didn't run make check):
>
> diff --git a/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml b/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
> index 7ff998907d..6c2bbac190 100644
> --- a/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
> +++ b/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
> @@ -43,6 +43,7 @@
>         <feature policy='require' name='clwb'/>
>         <feature policy='require' name='pku'/>
>         <feature policy='require' name='ospke'/>
> +      <feature policy='require' name='la57'/>
>         <feature policy='require' name='xsaveopt'/>
>         <feature policy='require' name='xgetbv1'/>
>         <feature policy='require' name='mmxext'/>


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list