Re: Unable to start VM with 5.10-rc3

Zdenek Kaspar
2020-11-11T11:09:49Z

[-- Attachment #1: Type: text/plain, Size: 2176 bytes --]

Hi, I'm sure my bisect has nothing to do with KVM,
because it was quick shot between -rc1 and previous release.

This old CPU doesn't have EPT (see attached file)

./run_tests.sh
FAIL apic-split (timeout; duration=90s)
FAIL ioapic-split (timeout; duration=90s)
FAIL apic (timeout; duration=30)
... ^C
few RIP is_tdp_mmu_root observed in dmesg

Z.

On Tue, 10 Nov 2020 17:13:21 -0800
Ben Gardon <bgardon@google.com> wrote:

> Hi Zdenek,
>
> That crash is most likely the result of a missing check for an invalid
> root HPA or NULL shadow page in is_tdp_mmu_root, which could have
> prevented the NULL pointer dereference.
> However, I'm not sure how a vCPU got to that point in the page fault
> handler with a bad EPT root page.
>
> I see VMX in your list of flags, is your machine 64 bit with EPT or
> some other configuration?
>
> I'm surprised you are finding your machine unable to boot for
> bisecting. Do you know if it's crashing in the same spot or somewhere
> else? I wouldn't expect the KVM page fault handler to run as part of
> boot.
>
> I will send out a patch first thing tomorrow morning (PST) to WARN
> instead of crashing with a NULL pointer dereference. Are you able to
> reproduce the issue with any KVM selftest?
>
> Ben
>
>
> On Tue, Nov 10, 2020 at 7:24 AM Zdenek Kaspar <zkaspar82@gmail.com>
> wrote:
> >
> > Hi,
> >
> > attached file is result from today's linux-master (with fixes
> > for 5.10-rc4) when I try to start VM on older machine:
> >
> > model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
> > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
> > pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe
> > syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl
> > cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16
> > xtpr pdcm lahf_lm pti tpr_shadow dtherm vmx flags :
> > tsc_offset vtpr
> >
> > I did quick check with 5.9 (distro kernel) and it works,
> > but VM performance seems extremely impacted. 5.8 works fine.
> >
> > Back to 5.10 issue: it's problematic since 5.10-rc1 and I have no
> > luck with bisecting (machine doesn't boot).
> >
> > TIA, Z.

[-- Attachment #2: vmxcap-out --]
[-- Type: application/octet-stream, Size: 5466 bytes --]

Basic VMX Information
Hex: 0x1a040000000007
Revision 7
VMCS size 1024
VMCS restricted to 32 bit addresses no
Dual-monitor support yes
VMCS memory type 6
INS/OUTS instruction information no
IA32_VMX_TRUE_*_CTLS support no
pin-based controls
External interrupt exiting yes
NMI exiting yes
Virtual NMIs no
Activate VMX-preemption timer no
Process posted interrupts no
primary processor-based controls
Interrupt window exiting yes
Use TSC offsetting yes
HLT exiting yes
INVLPG exiting yes
MWAIT exiting yes
RDPMC exiting yes
RDTSC exiting yes
CR3-load exiting forced
CR3-store exiting forced
CR8-load exiting yes
CR8-store exiting yes
Use TPR shadow yes
NMI-window exiting no
MOV-DR exiting yes
Unconditional I/O exiting yes
Use I/O bitmaps yes
Monitor trap flag no
Use MSR bitmaps yes
MONITOR exiting yes
PAUSE exiting yes
Activate secondary control no
secondary processor-based controls
Virtualize APIC accesses no
Enable EPT no
Descriptor-table exiting no
Enable RDTSCP no
Virtualize x2APIC mode no
Enable VPID no
WBINVD exiting no
Unrestricted guest no
APIC register emulation no
Virtual interrupt delivery no
PAUSE-loop exiting no
RDRAND exiting no
Enable INVPCID no
Enable VM functions no
VMCS shadowing no
Enable ENCLS exiting no
RDSEED exiting no
Enable PML no
EPT-violation #VE no
Conceal non-root operation from PT no
Enable XSAVES/XRSTORS no
Mode-based execute control (XS/XU) no
Sub-page write permissions no
GPA translation for PT no
TSC scaling no
User wait and pause no
ENCLV exiting no
VM-Exit controls
Save debug controls forced
Host address-space size yes
Load IA32_PERF_GLOBAL_CTRL no
Acknowledge interrupt on exit yes
Save IA32_PAT no
Load IA32_PAT no
Save IA32_EFER no
Load IA32_EFER no
Save VMX-preemption timer value no
Clear IA32_BNDCFGS no
Conceal VM exits from PT no
Clear IA32_RTIT_CTL no
VM-Entry controls
Load debug controls forced
IA-32e mode guest yes
Entry to SMM yes
Deactivate dual-monitor treatment yes
Load IA32_PERF_GLOBAL_CTRL no
Load IA32_PAT no
Load IA32_EFER no
Load IA32_BNDCFGS no
Conceal VM entries from PT no
Load IA32_RTIT_CTL no
Miscellaneous data
Hex: 0x403c0
VMX-preemption timer scale (log2) 0
Store EFER.LMA into IA-32e mode guest control no
HLT activity state yes
Shutdown activity state yes
Wait-for-SIPI activity state yes
PT in VMX operation no
IA32_SMBASE support no
Number of CR3-target values 4
MSR-load/store count recommendation 0
IA32_SMM_MONITOR_CTL[2] can be set to 1 no
VMWRITE to VM-exit information fields no
Inject event with insn length=0 no
MSEG revision identifier 0
VPID and EPT capabilities
Hex: 0x0
Execute-only EPT translations no
Page-walk length 4 no
Paging-structure memory type UC no
Paging-structure memory type WB no
2MB EPT pages no
1GB EPT pages no
INVEPT supported no
EPT accessed and dirty flags no
Advanced VM-exit information for EPT violations no
Single-context INVEPT no
All-context INVEPT no
INVVPID supported no
Individual-address INVVPID no
Single-context INVVPID no
All-context INVVPID no
Single-context-retaining-globals INVVPID no
VM Functions
Hex: 0x0
EPTP Switching no