Re: [PATCH] qemu-kvm: Enable xsave related CPUID

Avi Kivity
2010-05-19T16:58:06Z

On 05/19/2010 11:34 AM, Sheng Yang wrote:
> Signed-off-by: Sheng Yang<sheng@linux.intel.com>
> ---
> target-i386/cpuid.c | 32 ++++++++++++++++++++++++++++++++
>

Can send to Anthony directly, while tcg doesn't support xsave/ymm, all
the code here is generic.

> 1 files changed, 32 insertions(+), 0 deletions(-)
>
> diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c
> index eebf038..21e94f3 100644
> --- a/target-i386/cpuid.c
> +++ b/target-i386/cpuid.c
> @@ -1067,6 +1067,38 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
> *ecx = 0;
> *edx = 0;
> break;
> + case 0xD:
> + /* Processor Extended State */
> + if (!(env->cpuid_ext_features& CPUID_EXT_XSAVE)) {
> + *eax = 0;
> + *ebx = 0;
> + *ecx = 0;
> + *edx = 0;
> + break;
> + }
> + if (count == 0) {
> + *eax = 0x7;
> + *ebx = 0x340;
> + *ecx = 0x340;
> + *edx = 0;
> + } else if (count == 1) {
> + /* eax = 1, so we can continue with others */
> + *eax = 1;
> + *ebx = 0;
> + *ecx = 0;
> + *edx = 0;
> + } else if (count == 2) {
> + *eax = 0x100;
> + *ebx = 0x240;
> + *ecx = 0;
> + *edx = 0;
> + } else {
> + *eax = 0;
> + *ebx = 0;
> + *ecx = 0;
> + *edx = 0;
> + }
> + break;
>

Lots of magic numbers. Symbolic constants or explanatory comments.