Bug 198991 - KVM: entry failed, hardware error 0x80000021
Summary: KVM: entry failed, hardware error 0x80000021
Status: NEW
Alias: None
Product: Virtualization
Classification: Unclassified
Component: kvm (show other bugs)
Hardware: Intel Linux
: P1 normal
Assignee: virtualization_kvm
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-03-04 14:17 UTC by Adrien
Modified: 2018-03-04 15:24 UTC (History)
1 user (show)

See Also:
Kernel Version: 4.14.22
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Adrien 2018-03-04 14:17:57 UTC
Hi,

I have a bug with KVM on kernel 4.14.22 and 4.14.23 which I didn't had on 4.14.21

When I reboot the host, the VMs failed to resume every 2 or 3 reboots, with this log:

KVM: entry failed, hardware error 0x80000021

If you're running a guest on an Intel machine without unrestricted mode
support, the failure can be most likely due to the guest entering an invalid
state for Intel VT. For example, the guest maybe running in big real mode
which is not supported on less recent Intel processors.

EAX=80000000 EBX=ba012480 ECX=1fc19320 EDX=00006fce
ESI=00000000 EDI=00000000 EBP=00000000 ESP=ba003ea0
EIP=b9657965 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0000 00000000 0000ffff 00009300
CS =f000 ffff0000 0000ffff 00009b00
SS =0000 00000000 0000ffff 00009300
DS =0000 00000000 0000ffff 00009300
FS =0000 00000000 0000ffff 00009300
GS =0000 00000000 0000ffff 00009300
LDT=0000 00000000 0000ffff 00008200
TR =0000 00000000 0000ffff 00008b00
GDT=     00000000 0000ffff
IDT=     00000000 0000ffff
CR0=60000010 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
EFER=0000000000000000
Code=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <00> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


I did a bisect and it seems that the bad commit is 846666fad8d7de79b47a4147e39330fe96e1bdc3 "KVM/x86: Check input paging mode when cs.l is set".

I have no clue on what exactly is happening but good news is I can reproduce the bug easily, so I can test a patch if someone provides one :)

Best,
Adrien
Comment 1 KarimAllah Ahmed 2018-03-04 15:24:12 UTC
This has been fixed by:

commit 37b95951c58fdf08dc10afa9d02066ed9f176fb5
Author: Tianyu Lan <lantianyu1986@gmail.com>
Date:   Tue Jan 16 17:34:07 2018 +0800

    KVM/x86: Fix wrong macro references of X86_CR0_PG_BIT and X86_CR4_PAE_BIT in kvm_valid_sregs()
    
    kvm_valid_sregs() should use X86_CR0_PG and X86_CR4_PAE to check bit
    status rather than X86_CR0_PG_BIT and X86_CR4_PAE_BIT. This patch is
    to fix it.
    
    Fixes: f29810335965a(KVM/x86: Check input paging mode when cs.l is set)
    Reported-by: Jeremi Piotrowski <jeremi.piotrowski@gmail.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>

Note You need to log in before you can comment on or make changes to this bug.