Bug 1651195

Summary: Re-enable hyperv-testdev device
Product: Red Hat Enterprise Linux 8 Reporter: Vitaly Kuznetsov <vkuznets>
Component: qemu-kvmAssignee: Vitaly Kuznetsov <vkuznets>
Status: CLOSED CURRENTRELEASE QA Contact: liunana <nanliu>
Severity: unspecified Docs Contact:
Priority: medium    
Version: 8.0CC: chayang, choma, ddepaula, juzhang, lcapitulino, rbalakri, virt-maint, vkuznets, xfu
Target Milestone: rc   
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-2.12.0-45.module+el8+2313+d65431a0 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-06-14 02:04:47 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Vitaly Kuznetsov 2018-11-19 11:53:11 UTC
We've just enabled 'synic' and 'stimer' enlightenments for Windows guests. To test these with kvm-unit-tests we need hyperv-testdev reenabled.

Comment 2 Danilo de Paula 2018-12-06 16:09:51 UTC
Fix included in qemu-kvm-2.12.0-45.module+el8+2313+d65431a0

Comment 4 FuXiangChun 2018-12-07 08:04:11 UTC
Vitaly,

How to add "hyperv-testdev device" to qemu-kvm command line and verify this bug? Thanks.

Comment 5 Vitaly Kuznetsov 2018-12-07 12:24:17 UTC
(In reply to FuXiangChun from comment #4)
> Vitaly,
> 
> How to add "hyperv-testdev device" to qemu-kvm command line and verify this
> bug? Thanks.

I suggest you just use kvm-unit-tests:

git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git
cd kvm-unit-tests
./configure
make
./x86/run x86/hyperv_synic.flat -cpu kvm64,hv_vpindex,hv_time,hv_synic,hv_stimer -device hyperv-testdev

(or just run all tests with ./run_tests.sh)

Comment 6 FuXiangChun 2018-12-10 05:55:47 UTC
(In reply to Vitaly Kuznetsov from comment #5)
> (In reply to FuXiangChun from comment #4)
> > Vitaly,
> > 
> > How to add "hyperv-testdev device" to qemu-kvm command line and verify this
> > bug? Thanks.
> 
> I suggest you just use kvm-unit-tests:
> 
> git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git
> cd kvm-unit-tests
> ./configure
> make
> ./x86/run x86/hyperv_synic.flat -cpu
> kvm64,hv_vpindex,hv_time,hv_synic,hv_stimer -device hyperv-testdev
> 
> (or just run all tests with ./run_tests.sh)

Tested bug with the qemu-kvm-2.12.0-45.module+el8+2313+d65431a0 and kernel 4.18.0-48.el8.x86_64. QE tested 2 scenarios on host.

S1)
# ./x86/run x86/hyperv_synic.flat -cpu kvm64,hv_vpindex,hv_time,hv_synic,hv_stimer -device hyperv-testdev

/usr/libexec/qemu-kvm -nodefaults -device pc-testdev -device isa-debug-exit,iobase=0xf4,iosize=0x4 -vnc none -K
enabling apic
paging enabled
cr0 = 80010011
cr3 = 459000
cr4 = 20
enabling apic
ncpus = 1
prepare
test 0 -> 0
cleanup
isr_enter_count[0] = 16
PASS: Hyper-V SynIC test
SUMMARY: 1 tests

S2)
# ./run_tests.sh 
PASS apic-split (50 tests)
PASS ioapic-split (19 tests)
PASS apic (50 tests)
PASS ioapic (19 tests)
PASS smptest (1 tests)
PASS smptest3 (1 tests)
PASS vmexit_cpuid 
PASS vmexit_vmcall 
PASS vmexit_mov_from_cr8 
PASS vmexit_mov_to_cr8 
PASS vmexit_inl_pmtimer 
PASS vmexit_ipi 
PASS vmexit_ipi_halt 
PASS vmexit_ple_round_robin 
PASS vmexit_tscdeadline 
PASS vmexit_tscdeadline_immed 
PASS access 
SKIP smap (0 tests)
SKIP pku (0 tests)
PASS emulator (125 tests, 2 skipped)
PASS eventinj (13 tests)
PASS hypercall (2 tests)
PASS idt_test (4 tests)
PASS memory (8 tests)
PASS msr (12 tests)
SKIP pmu (/proc/sys/kernel/nmi_watchdog not equal to 0)
FAIL vmware_backdoors (11 tests, 5 unexpected failures)
PASS port80 
PASS realmode 
PASS s3 
PASS sieve 
PASS syscall (2 tests)
PASS tsc (3 tests)
PASS tsc_adjust (5 tests)
PASS xsave (17 tests)
PASS rmap_chain 
SKIP svm (0 tests)
SKIP taskswitch (i386 only)
SKIP taskswitch2 (i386 only)
PASS kvmclock_test 
PASS pcid (3 tests)
PASS umip (21 tests)
FAIL vmx (timeout; duration=90s)
PASS vmx_null (1 tests)
SKIP vmx_test_vmx_feature_control (0 tests)
PASS vmx_test_vmxon (4 tests)
PASS vmx_test_vmptrld (5 tests)
PASS vmx_test_vmclear (6 tests)
PASS vmx_test_vmptrst (1 tests)
PASS vmx_test_vmwrite_vmread (1 tests)
PASS vmx_test_vmcs_high (4 tests)
PASS vmx_test_vmcs_lifecycle (9 tests)
PASS vmx_test_vmx_caps (11 tests)
PASS vmx_vmenter (2 tests)
PASS vmx_preemption_timer (5 tests)
PASS vmx_control_field_PAT (3 tests)
PASS vmx_control_field_EFER (3 tests)
PASS vmx_CR_shadowing (12 tests)
PASS vmx_IO_bitmap (15 tests)
PASS vmx_instruction_intercept (42 tests)
PASS vmx_EPT_AD_enabled (17 tests)
PASS vmx_EPT_AD_disabled (19 tests)
PASS vmx_PML (2 tests)
PASS vmx_VPID (3 tests)
PASS vmx_interrupt (8 tests)
PASS vmx_debug_controls (4 tests)
PASS vmx_MSR_switch (4 tests)
PASS vmx_vmmcall (1 tests)
PASS vmx_disable_RDTSCP (2 tests)
PASS vmx_int3 (1 tests)
PASS vmx_into (1 tests)
PASS vmx_exit_monitor_from_l2_test 
PASS vmx_v2 (29 tests)
PASS vmx_ept_access_test_not_present (188 tests)
PASS vmx_ept_access_test_read_only (158 tests)
PASS vmx_ept_access_test_write_only (152 tests)
PASS vmx_ept_access_test_read_write (128 tests)
PASS vmx_ept_access_test_execute_only (158 tests)
PASS vmx_ept_access_test_read_execute (128 tests)
PASS vmx_ept_access_test_write_execute (152 tests)
PASS vmx_ept_access_test_read_write_execute (98 tests)
PASS vmx_ept_access_test_reserved_bits (2854 tests)
PASS vmx_ept_access_test_ignored_bits (2888 tests)
PASS vmx_ept_access_test_paddr_not_present_ad_disabled (62 tests)
PASS vmx_ept_access_test_paddr_not_present_ad_enabled (62 tests)
PASS vmx_ept_access_test_paddr_read_only_ad_disabled (141 tests)
PASS vmx_ept_access_test_paddr_read_only_ad_enabled (166 tests)
PASS vmx_ept_access_test_paddr_read_write (45 tests)
PASS vmx_ept_access_test_paddr_read_write_execute (45 tests)
PASS vmx_ept_access_test_paddr_read_execute_ad_disabled (141 tests)
PASS vmx_ept_access_test_paddr_read_execute_ad_enabled (166 tests)
PASS vmx_ept_access_test_paddr_not_present_page_fault (8 tests)
PASS vmx_ept_access_test_force_2m_page (48 tests)
PASS vmx_invvpid (1561 tests)
FAIL vmx_controls (4723 tests, 90 unexpected failures, 15 expected failures)
PASS vmx_vmentry_movss_shadow_test (11 tests)
PASS vmx_cr_load_test (8 tests)
FAIL vmx_nm_test (timeout; duration=90s)
FAIL vmx_pending_event_test (7 tests, 1 unexpected failures)
PASS vmx_pending_event_hlt_test (12 tests)
PASS vmx_db_test (45 tests, 5 expected failures)
PASS vmx_eoi_bitmap_ioapic_scan (7 tests)
FAIL vmx_hlt_with_rvi_test (timeout; duration=10)
PASS vmx_apic_passthrough (12 tests)
PASS vmx_apic_passthrough_thread (8 tests)
PASS vmx_vmcs_shadow_test (142218 tests)
PASS debug (11 tests)
PASS hyperv_synic (1 tests)
SKIP hyperv_connections (1 tests, 1 skipped)
PASS hyperv_stimer (12 tests)
PASS hyperv_clock 
PASS intel_iommu (11 tests)

I have 1 small question.

Q1) S1 only covered "Hyper-V SynIC test", no cover hyperv_stimer. Can this result verify this bug?

Q2) Accroding to this result, Can I set this bug as verified?

Comment 7 Vitaly Kuznetsov 2018-12-10 09:48:15 UTC
(In reply to FuXiangChun from comment #6)
> 
> Q1) S1 only covered "Hyper-V SynIC test", no cover hyperv_stimer. Can this
> result verify this bug?

You can run stimer test separately too,

./x86/run x86/hyperv_stimer.flat -cpu kvm64,hv_vpindex,hv_time,hv_synic,hv_stimer -device hyperv-testdev

> 
> Q2) Accroding to this result, Can I set this bug as verified?

PASS hyperv_synic (1 tests)
PASS hyperv_stimer (12 tests)

Yes, this looks good.

Comment 8 FuXiangChun 2018-12-11 01:26:01 UTC
Thanks Vitaly, According to comment7, set this bug as verified.