** Description changed:

  [Impact]
  Our Bionic 4.15 kernel lacks of movups/movupd emulation support.
  
  With the following commit added into the emulator test in 
ubuntu_kvm_unit_tests:
  8726f9771911d6749dbd36ab2fc70f0f25e2b1a9 is the first bad commit
  commit 8726f9771911d6749dbd36ab2fc70f0f25e2b1a9
  Author: Jacob Xu <jacob...@google.com>
  Date: Wed Apr 21 16:12:57 2021 -0700
  
      x86: add movups/movupd sse testcases to emulator.c
  
      Here we add movups/movupd tests corresponding to functionality
      introduced in commit 29916968c486 ("kvm: Add emulation for 
movups/movupd").
  
      Signed-off-by: Jacob Xu <jacob...@google.com>
      Message-Id: <20210421231258.2583654-1-jacob...@google.com>
      Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
  
  It will cause the emulator test in ubuntu_kvm_unit_tests fail with timeout:
   PASS: movdqu (read)^M
   PASS: movdqu (write)^M
   PASS: movaps (read)^M
   PASS: movaps (write)^M
   PASS: movapd (read)^M
   PASS: movapd (write)^M
   KVM internal error. Suberror: 1
   emulation failure
   RAX=000000000000000a RBX=ffffffffffffe000 RCX=00000000000003fd 
RDX=00000000000003f8
   RSI=0000000000419991 RDI=0000000000419991 RBP=000000000051b490 
RSP=000000000051b470
   R8 =000000000000000a R9 =00000000000003f8 R10=000000000000000d 
R11=0000000000000000
   R12=ffffffffffffe000 R13=1111111111111111 R14=ffffffffffffd000 
R15=3333333333333333
   RIP=0000000000400a1f RFL=00010006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
   ES =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS   [-WA]
   CS =0008 0000000000000000 ffffffff 00a09b00 DPL=0 CS64 [-RA]
   SS =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS   [-WA]
   DS =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS   [-WA]
   FS =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS   [-WA]
   GS =0010 000000000051a510 ffffffff 00c09300 DPL=0 DS   [-WA]
   LDT=0000 0000000000000000 0000ffff 00008200 DPL=0 LDT
   TR =0080 000000000041207a 0000ffff 00008b00 DPL=0 TSS64-busy
   GDT=     000000000041100a 0000106f
   IDT=     0000000000410000 00000fff
   CR0=80010011 CR2=0000000000000000 CR3=0000000001007000 CR4=00000220
   DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 
DR3=0000000000000000
   DR6=00000000ffff0ff0 DR7=0000000000000400
   EFER=0000000000000500
   Code=00 c7 45 e8 03 00 00 00 c7 45 ec 04 00 00 00 66 0f 6f 45 e0 <0f> 11 03 
48 89 de 48 8d 7d e0 e8 e5 f9 ff ff 0f b6 f8 be a1 8f 41 00 b8 00 00 00 00 e8 07
   qemu-system-x86_64: terminating on signal 15 from pid 15758 (timeout)
   FAIL emulator (timeout; duration=90s)
  
  [Fix]
  * 6ce08235f2 kvm: Add emulation for movups/movupd
  
  This patch can be cherry-picked into Bionic.
+ There is no other patch that claims to be a fix of this one.
  
  [Test]
- Run the emulator test from ubuntu_kvm_unit_tests, with this patch applied it 
will pass without any issue:
+ Test kernel can be found here:
+ https://people.canonical.com/~phlin/kernel/lp-1932966-kvm-emulator/
  
-   PASS: movdqu (read)
-   PASS: movdqu (write)
-   PASS: movaps (read)
-   PASS: movaps (write)
-   PASS: movapd (read)
-   PASS: movapd (write)
-   PASS: movups (read)
-   PASS: movups (write)
-   PASS: movupd (read)
-   PASS: movupd (write)
-   PASS: movups unaligned
-   PASS: movupd unaligned
-   PASS: unaligned movaps exception
-   PASS: movups unaligned crosspage
-   PASS: movups crosspage exception
-   PASS: movq (mmx, read)
-   PASS: movq (mmx, write)
-   PASS: movb $imm, 0(%rip)
-   PASS: shld (cl)
-   PASS: shrd (cl)
-   PASS: mov null, %ss
-   PASS: mov null, %ss (with ss.rpl != cpl)
-   PASS: Test ret/iret with a nullified segment
-   PASS: ltr
-   PASS: cmovnel
-   SKIP: skipping register-only tests, use kvm.force_emulation_prefix=1 to 
enable
-   PASS: push16
-   PASS: cross-page mmio read
-   PASS: cross-page mmio write
-   PASS: string_io_mmio
-   PASS: jump to non-canonical address
-   SKIP: illegal movbe
-   SUMMARY: 135 tests, 2 skipped
-   PASS emulator (135 tests, 2 skipped)
+ Run the emulator test from ubuntu_kvm_unit_tests, with this patch
+ applied it will pass without any issue:
+ 
+   PASS: movdqu (read)
+   PASS: movdqu (write)
+   PASS: movaps (read)
+   PASS: movaps (write)
+   PASS: movapd (read)
+   PASS: movapd (write)
+   PASS: movups (read)
+   PASS: movups (write)
+   PASS: movupd (read)
+   PASS: movupd (write)
+   PASS: movups unaligned
+   PASS: movupd unaligned
+   PASS: unaligned movaps exception
+   PASS: movups unaligned crosspage
+   PASS: movups crosspage exception
+   PASS: movq (mmx, read)
+   PASS: movq (mmx, write)
+   PASS: movb $imm, 0(%rip)
+   PASS: shld (cl)
+   PASS: shrd (cl)
+   PASS: mov null, %ss
+   PASS: mov null, %ss (with ss.rpl != cpl)
+   PASS: Test ret/iret with a nullified segment
+   PASS: ltr
+   PASS: cmovnel
+   SKIP: skipping register-only tests, use kvm.force_emulation_prefix=1 to 
enable
+   PASS: push16
+   PASS: cross-page mmio read
+   PASS: cross-page mmio write
+   PASS: string_io_mmio
+   PASS: jump to non-canonical address
+   SKIP: illegal movbe
+   SUMMARY: 135 tests, 2 skipped
+   PASS emulator (135 tests, 2 skipped)
  
  [Where problems could occur]
- 
  
  [Original Bug Report]
  Found this on B/KVM, current cycle (sru-20210531):
  
  18:27:11 DEBUG| [stdout] PASS: movapd (write)^M
  18:27:11 DEBUG| [stderr] KVM internal error. Suberror: 1
  18:27:11 DEBUG| [stderr] emulation failure
  18:27:11 DEBUG| [stderr] RAX=000000000000000a RBX=ffffffffffffe000 
RCX=00000000000003fd RDX=00000000000003f8
  18:27:11 DEBUG| [stderr] RSI=0000000000419991 RDI=0000000000419991 
RBP=000000000051b440 RSP=000000000051b420
  18:27:11 DEBUG| [stderr] R8 =000000000000000a R9 =00000000000003f8 
R10=000000000000000d R11=0000000000000000
  18:27:11 DEBUG| [stderr] R12=ffffffffffffe000 R13=1111111111111111 
R14=ffffffffffffd000 R15=3333333333333333
  18:27:11 DEBUG| [stderr] RIP=0000000000400a0c RFL=00010006 [-----P-] CPL=0 
II=0 A20=1 SMM=0 HLT=0
  18:27:11 DEBUG| [stderr] ES =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS 
  [-WA]
  18:27:11 DEBUG| [stderr] CS =0008 0000000000000000 ffffffff 00a09b00 DPL=0 
CS64 [-RA]
  18:27:11 DEBUG| [stderr] SS =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS 
  [-WA]
  18:27:11 DEBUG| [stderr] DS =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS 
  [-WA]
  18:27:11 DEBUG| [stderr] FS =0010 0000000000000000 ffffffff 00c09300 DPL=0 DS 
  [-WA]
  18:27:11 DEBUG| [stderr] GS =0010 000000000051a4d0 ffffffff 00c09300 DPL=0 DS 
  [-WA]
  18:27:11 DEBUG| [stderr] LDT=0000 0000000000000000 0000ffff 00008200 DPL=0 LDT
  18:27:11 DEBUG| [stderr] TR =0080 000000000041207a 0000ffff 00008b00 DPL=0 
TSS64-busy
  18:27:11 DEBUG| [stderr] GDT=     000000000041100a 0000106f
  18:27:11 DEBUG| [stderr] IDT=     0000000000410000 00000fff
  18:27:11 DEBUG| [stderr] CR0=80010011 CR2=0000000000000000 
CR3=0000000001007000 CR4=00000220
  18:27:11 DEBUG| [stderr] DR0=0000000000000000 DR1=0000000000000000 
DR2=0000000000000000 DR3=0000000000000000
  18:27:11 DEBUG| [stderr] DR6=00000000ffff0ff0 DR7=0000000000000400
  18:27:11 DEBUG| [stderr] EFER=0000000000000500
  18:27:11 DEBUG| [stderr] Code=00 c7 45 e8 03 00 00 00 c7 45 ec 04 00 00 00 66 
0f 6f 45 e0 <0f> 11 03 48 89 de 48 8d 7d e0 e8 f8 f9 ff ff 0f b6 f8 be a1 8f 41 
00 b8 00 00 00 00 e8 05
  18:28:40 DEBUG| [stderr] qemu-system-x86_64: terminating on signal 15 from 
pid 13634 (timeout)
  18:28:40 DEBUG| [stdout] FAIL emulator (timeout; duration=90s)
  [...]
  TestError: Test failed for emulator
  18:28:40 ERROR| child process failed
  18:28:40 DEBUG| Traceback (most recent call last):
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/parallel.py", line 25, 
in fork_start
  18:28:40 DEBUG|     l()
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/job.py", line 505, in 
<lambda>
  18:28:40 DEBUG|     l = lambda: test.runtest(self, url, tag, args, dargs)
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/test.py", line 125, in 
runtest
  18:28:40 DEBUG|     job.sysinfo.log_after_each_iteration)
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/shared/test.py", line 
913, in runtest
  18:28:40 DEBUG|     mytest._exec(args, dargs)
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/shared/test.py", line 
411, in _exec
  18:28:40 DEBUG|     _call_test_function(self.execute, *p_args, **p_dargs)
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/shared/test.py", line 
823, in _call_test_function
  18:28:40 DEBUG|     return func(*args, **dargs)
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/shared/test.py", line 
291, in execute
  18:28:40 DEBUG|     postprocess_profiled_run, args, dargs)
  18:28:40 DEBUG|   File "/home/ubuntu/autotest/client/shared/test.py", line 
212, in _call_run_once
  18:28:40 DEBUG|     self.run_once(*args, **dargs)
  18:28:40 DEBUG|   File 
"/home/ubuntu/autotest/client/tests/ubuntu_kvm_unit_tests/ubuntu_kvm_unit_tests.py",
 line 82, in run_once
  18:28:40 DEBUG|     raise error.TestError("Test failed for 
{}".format(test_name))
  18:28:40 DEBUG| TestError: Test failed for emulator
  18:28:41 INFO |                 ERROR   ubuntu_kvm_unit_tests.emulator  
ubuntu_kvm_unit_tests.emulator  timestamp=1624040921    localtime=Jun 18 
18:28:41       Test failed for emulator
  18:28:41 INFO |         END ERROR       ubuntu_kvm_unit_tests.emulator  
ubuntu_kvm_unit_tests.emulator  timestamp=1624040921    localtime=Jun 18 
18:28:41

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1932966

Title:
  kvm_unit_tests: emulator test fails on 4.15 kernel, timeout

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/1932966/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to