mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
KVM: fix XSAVE bit scanning
When KVM scans the 0xD CPUID leaf for propagating the XSAVE save area leaves, it assumes that the leaves are contigious and stops at the first zero one. On AMD hardware there is a gap, though, as LWP uses leaf 62 to announce it's state save area. So lets iterate through all 64 possible leaves and simply skip zero ones to also cover later features. Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
0857b9e95c
commit
20800bc940
@ -2395,9 +2395,9 @@ static void do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
|
||||
int i;
|
||||
|
||||
entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
|
||||
for (i = 1; *nent < maxnent; ++i) {
|
||||
if (entry[i - 1].eax == 0 && i != 2)
|
||||
break;
|
||||
for (i = 1; *nent < maxnent && i < 64; ++i) {
|
||||
if (entry[i].eax == 0)
|
||||
continue;
|
||||
do_cpuid_1_ent(&entry[i], function, i);
|
||||
entry[i].flags |=
|
||||
KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
|
||||
|
Loading…
Reference in New Issue
Block a user