[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 3/5] target/i386: Add support for CPUID_8000_
From: |
Moger, Babu |
Subject: |
Re: [Qemu-devel] [PATCH v2 3/5] target/i386: Add support for CPUID_8000_001E for AMD |
Date: |
Wed, 28 Feb 2018 22:18:27 +0000 |
> -----Original Message-----
> From: Radim Krčmář [mailto:address@hidden
> Sent: Wednesday, February 28, 2018 12:24 PM
> To: Moger, Babu <address@hidden>
> Cc: address@hidden; address@hidden; address@hidden;
> address@hidden; address@hidden; address@hidden;
> address@hidden; Hook, Gary <address@hidden>
> Subject: Re: [PATCH v2 3/5] target/i386: Add support for CPUID_8000_001E
> for AMD
>
> 2018-02-23 21:30-0500, Babu Moger:
> > From: Stanislav Lanci <address@hidden>
> >
> > Populate threads/core_id/apic_ids/socket_id when CPUID_EXT3_TOPOEXT
> > feature is supported. This is required to support hyperthreading
> > feature on AMD CPUS. These are supported via CPUID_8000_001E
> extended
> > functions.
> >
> > Signed-off-by: Stanislav Lanci <address@hidden>
> > Signed-off-by: Babu Moger <address@hidden>
> > ---
> > target/i386/cpu.c | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> > index a5a480e..191e850 100644
> > --- a/target/i386/cpu.c
> > +++ b/target/i386/cpu.c
> > @@ -3666,6 +3666,14 @@ void cpu_x86_cpuid(CPUX86State *env,
> uint32_t index, uint32_t count,
> > *edx = 0;
> > }
> > break;
> > + case 0x8000001E:
> > + if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_TOPOEXT) {
> > + *eax = cpu->apic_id;
> > + *ebx = (cs->nr_threads - 1) << 8 | cpu->core_id;
>
> Do we somewhere assert that AMD cannot have cpu->core_id > 255?
> (qemu does allow weird configurations.)
I don't see specific assert on core_id. But, I see that qemu does not allow
nr_cores more than 255.
Also I see that core_id is iterated based on nr_cores. If you strongly believe
we need to add assert here, I will add it.
Let me know.
> Thanks.
>
> > + *ecx = cpu->socket_id;
> > + *edx = 0;
> > + }
> > + break;
> > case 0xC0000000:
> > *eax = env->cpuid_xlevel2;
> > *ebx = 0;
> > --
> > 1.8.3.1
> >
- [Qemu-devel] [PATCH v2 0/5] Enable TOPOEXT to support hyperthreading on AMD CPU, Babu Moger, 2018/02/23
- [Qemu-devel] [PATCH v2 3/5] target/i386: Add support for CPUID_8000_001E for AMD, Babu Moger, 2018/02/23
- [Qemu-devel] [PATCH v2 2/5] target/i386: Populate AMD Processor Cache Information, Babu Moger, 2018/02/23
- [Qemu-devel] [PATCH v2 5/5] target/i386: Remove generic SMT thread check, Babu Moger, 2018/02/23
- [Qemu-devel] [PATCH v2 4/5] target/i386: Enable TOPOEXT feature on AMD EPYC CPU, Babu Moger, 2018/02/23