Re: 2.6.23-rc1, KVM-AMD problem

From: Avi Kivity
Date: Sun Jul 29 2007 - 04:16:53 EST


Alistair John Strachan wrote:
Hi,

I'm getting periodic oopses running KVM-33 on 2.6.23-rc1. Here is a digital photo of the oops. Alarmingly, a lot of the time it triple faults the machine and I don't get a chance to grab it. This time I was lucky, though.

http://devzero.co.uk/~alistair/kvm-2.6.23-rc1.jpg

Unfortunately, some of the oops text scrolled out of the screen. I will endeavour to reproduce the bug over serial console, but I can make no guarantees.

The CPU is an AMD X2 BE-2350, chipset is AMD 690G.


If you are using the modules from 2.6.23-rc1, try upgrading to latest -git, which contains a patch that might fix this problem. If you are using the modules from kvm-33, try applying the attached patch.


--
error compiling committee.c: too many arguments to function

commit bfa6c62f98bd0602025d7b48e267d817082f5d07
Author: Aurelien Jarno <aurelien@xxxxxxxxxxx>
Date: Wed Jul 25 10:19:54 2007 +0200

KVM: disable writeback for 0x0f 0x01 instructions.

0x0f 0x01 instructions (ie lgdt, lidt, smsw, lmsw and invlpg) does
not use writeback. This patch set no_wb=1 when emulating those
instructions.

This fixes a regression booting the FreeBSD kernel on AMD.

Signed-off-by: Aurelien Jarno <aurelien@xxxxxxxxxxx>
Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx>

diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index 21ce977..cbbb9c5 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -1183,6 +1183,8 @@ pop_instruction:
twobyte_insn:
switch (b) {
case 0x01: /* lgdt, lidt, lmsw */
+ /* Disable writeback. */
+ no_wb = 1;
switch (modrm_reg) {
u16 size;
unsigned long address;