Poor Write I/O Performance on KVM-79

2009-01-03 Thread Alexander Atticus
Hello!

I have been experimenting with KVM and have been experiencing poor write I/O
performance.  I'm not sure whether I'm doing something wrong or if this is
just the current state of things.

While writing to the local array on the node running the guests I get about
200MB/s from dd (bs=1M count=1000) or about 90MB/s write performance from
iozone (sequencial) when I write to a 2G file with a 16M record length.  The
node is an 8 disk system using 3ware in a RAID50 configuration.  It has 8GB
of RAM.

The guests get much slower disk access. The guests are using file based
backends (tried both qcow2 and raw) with virtio support.  With no other
activity on the machine, I get about 6 to 7MB/s write performance from
iozone with the same test. Guests are running Debian lenny/sid with
2.6.26-1-686.

I don't know whether this is because of context switching or what.  Again,
I'm wondering how I can improve this performance or if there is something
I am doing wrong.  As a side note, I have also noticed some weirdness with
qcow2 files; some windows installations freeze and some disk corruption
running iozone on Linux guests.  All problems go away when I switch to raw
image files though.

I realize I take a hit by running file-based backends, and that the tests
aren't altogether accurate because with 8GB of RAM, I'm not saturating the
cache but they are still very disparate in numbers which concerns me.

Finally, does anyone know if KVM is now fully supporting SCSI pass-through
in KVM-79? Does this mean that I would vastly reduce context switching by
using an LVM backend device for guests or am I misunderstanding the benefits
of pass-through?

This is the iozone command:

# iozone -a -r 16M -g 2g -n 16g -m 2000

KVM command to launch guest:

# /usr/bin/kvm -S -M pc -m 1024 -smp 1 -name demo4 \
-uuid 5b474147-f581-9a21-ac7d-cdd0ce881c5c -monitor pty -boot c \
-drive file=/iso/debian-testing-i386-netinst.iso,if=ide,media=cdrom,index=2 \
-drive file=/srv/demo/demo4.img,if=virtio,index=0,boot=on -net \
nic,macaddr=00:16:16:64:e6:de,vlan=0 -net \
tap,fd=15,script=,vlan=0,ifname=vnet1 -serial pty -parallel none \
-usb -vnc 0.0.0.0:1 -k en-us

KVM/QEMU versions:

ii  kvm  79+dfsg-3
ii  qemu 0.9.1-8
Node Kernel:

2.6.26-1-amd64

Thanks,

-Alexander
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH][v2] kvm-userspace: Load PCI option ROMs

2009-01-03 Thread Shan, Haitao
Ah, your approach is much better than mine.
Please ignore ours.

Best Regards
Haitao Shan

Leendert van Doorn wrote:
> I've been experimenting with passthru graphics for KVM and for that I
> needed to add PCI ROM support to QEMU. I went a slightly different
> route than Haitoa, I enabled the BIOS to do the PCI ROM mapping and
> initialization and added support for QEMU to fully implement the ROM
> BAR. This patch also uses the host BAR addresses in the guest for
> direct assigned devices, because (as Avi already pointed out) this is
> needed for more complex PCI cards such as graphics adapters. My patch
> also allows you to optionally specify the ROM image, which I found
> very useful for debugging.
>
> My ROMBIOS patches are probably more invasive than necessary. I found
> it cleaner (==easier to understand) to call the rombios from 32-bit
> mode than leave some droppings (option rom address, bdf) in the BIOS
> extended data segment. The other thing you notice is that I
> initialize the primary VGA ROM last. I found that this was necessary
> when emulating dual headed displays (one display on qemu's emulation
> window, the other the actual device).
>
> I've attached my patches.
>
> Note that I have not included the full graphics passthru patches yet.
> I have that working for the xorg ati drivers (and ATI's ATOMBIOS) but
> not for the closed sourced or Windows drivers yet. Let me know if you
> are interested in those patches.
>
>   Leendert
>
>
> diff --git a/bios/rombios.c b/bios/rombios.c
> index b7a240f..c8ef8ac 100644
> --- a/bios/rombios.c
> +++ b/bios/rombios.c
> @@ -10130,7 +10130,7 @@ rombios32_real_mode:
>ret
>
>  rombios32_gdt_48:
> -  dw 0x30
> +  dw 0x38
>dw rombios32_gdt
>dw 0x000f
>
> @@ -10141,6 +10141,7 @@ rombios32_gdt:
>dw 0x, 0, 0x9300, 0x00cf ; 32 bit flat data segment (0x18)
>dw 0x, 0, 0x9b0f, 0x ; 16 bit code segment base=0xf
> limit=0x
>dw 0x, 0, 0x9300, 0x ; 16 bit data segment base=0x0
> limit=0x +  dw 0x, 0, 0x9b0e, 0x ; 16 bit code segment
> base=0xE limit=0x
>  #endif // BX_ROMBIOS32
>
>
> @@ -10194,6 +10195,7 @@ no_serial:
>pop  dx
>ret
>
> +#if !BX_ROMBIOS32
>  rom_checksum:
>push ax
>push bx
> @@ -10266,7 +10268,6 @@ block_count_rounded:
>mov  ax, #0xf000
>mov  es, ax
>lea  di, pnp_string
> -
>mov  bp, sp   ;; Call ROM init routine using seg:off on stack
>db   0xff ;; call_far ss:[bp+0]
>db   0x5e
> @@ -10348,6 +10349,7 @@ rom_scan_increment:
>xor  ax, ax   ;; Restore DS back to :
>mov  ds, ax
>ret
> +#endif /* !BX_ROMBIOS32 */
>
>  post_enable_cache:
>;; enable cache
> @@ -10652,12 +10654,6 @@ post_default_ints:
>;; PIC
>call post_init_pic
>
> -  mov  cx, #0xc000  ;; init vga bios
> -  mov  ax, #0xc780
> -  call rom_scan
> -
> -  call _print_bios_banner
> -
>  #if BX_ROMBIOS32
>call rombios32_init
>  #else
> @@ -10665,7 +10661,12 @@ post_default_ints:
>call pcibios_init_iomem_bases
>call pcibios_init_irqs
>  #endif //BX_PCIBIOS
> -#endif
> +  mov  cx, #0xc000  ;; init vga bios
> +  mov  ax, #0xc780
> +  call rom_scan
> +#endif //BX_ROMBIOS32
> +
> +  call _print_bios_banner
>
>;;
>;; Floppy setup
> @@ -10698,9 +10699,11 @@ post_default_ints:
>
>call _init_boot_vectors
>
> +#if !BX_ROMBIOS32
>mov  cx, #0xc800  ;; init option roms
>mov  ax, #0xe000
>call rom_scan
> +#endif
>
>  #if BX_ELTORITO_BOOT
>call _interactive_bootkey
> diff --git a/bios/rombios32.c b/bios/rombios32.c
> index 321563d..580aa17 100755
> --- a/bios/rombios32.c
> +++ b/bios/rombios32.c
> @@ -1,4 +1,4 @@
> -/
> +
>  // $Id: rombios32.c,v 1.11 2007/08/03 13:56:13 vruppert Exp $
>  /
>  //
> @@ -679,6 +679,7 @@ typedef struct PCIDevice {
>  int devfn;
>  } PCIDevice;
>
> +static int pci_bios_nvga = 0;
>  static uint32_t pci_bios_io_addr;
>  static uint32_t pci_bios_mem_addr;
>  static uint32_t pci_bios_bigmem_addr;
> @@ -736,7 +737,7 @@ static void pci_set_io_region_addr(PCIDevice *d,
> int region_num, uint32_t addr)
>  old_addr = pci_config_readl(d, ofs);
>
>  pci_config_writel(d, ofs, addr);
> -BX_INFO("region %d: 0x%08x\n", region_num, addr);
> +//  BX_INFO("region %d: 0x%08x\n", region_num, addr);
>
>  /* enable memory mappings */
>  cmd = pci_config_readw(d, PCI_COMMAND);
> @@ -928,6 +929,7 @@ static void pci_bios_init_device(PCIDevice *d)
>  }
>  break;
>  case 0x0300: /* Display controller - VGA compatible controller */
> + pci_bios_nvga++;
>  if (vendor_id != 0x1234)
>  goto default_map;
>  /* VGA: map frame buffer to default Bochs VBE address */
> @@ -953,18 +955,21 @@ static void pci_bios_init_device(PCIDevice *d)
>  default

RE: [PATCH][v2] kvm-userspace: Load PCI option ROMs

2009-01-03 Thread Leendert van Doorn

I've been experimenting with passthru graphics for KVM and for that I needed
to add PCI ROM support to QEMU. I went a slightly different route than
Haitoa, I enabled the BIOS to do the PCI ROM mapping and initialization and
added support for QEMU to fully implement the ROM BAR. This patch also uses
the host BAR addresses in the guest for direct assigned devices, because (as
Avi already pointed out) this is needed for more complex PCI cards such as
graphics adapters. My patch also allows you to optionally specify the ROM
image, which I found very useful for debugging.

My ROMBIOS patches are probably more invasive than necessary. I found it
cleaner (==easier to understand) to call the rombios from 32-bit mode than
leave some droppings (option rom address, bdf) in the BIOS extended data
segment. The other thing you notice is that I initialize the primary VGA ROM
last. I found that this was necessary when emulating dual headed displays
(one display on qemu's emulation window, the other the actual device).

I've attached my patches.

Note that I have not included the full graphics passthru patches yet. I have
that working for the xorg ati drivers (and ATI's ATOMBIOS) but not for the
closed sourced or Windows drivers yet. Let me know if you are interested in
those patches.

Leendert


diff --git a/bios/rombios.c b/bios/rombios.c
index b7a240f..c8ef8ac 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -10130,7 +10130,7 @@ rombios32_real_mode:
   ret
 
 rombios32_gdt_48:
-  dw 0x30
+  dw 0x38
   dw rombios32_gdt
   dw 0x000f
 
@@ -10141,6 +10141,7 @@ rombios32_gdt:
   dw 0x, 0, 0x9300, 0x00cf ; 32 bit flat data segment (0x18)
   dw 0x, 0, 0x9b0f, 0x ; 16 bit code segment base=0xf
limit=0x
   dw 0x, 0, 0x9300, 0x ; 16 bit data segment base=0x0 limit=0x
+  dw 0x, 0, 0x9b0e, 0x ; 16 bit code segment base=0xE
limit=0x
 #endif // BX_ROMBIOS32
 
 
@@ -10194,6 +10195,7 @@ no_serial:
   pop  dx
   ret
 
+#if !BX_ROMBIOS32
 rom_checksum:
   push ax
   push bx
@@ -10266,7 +10268,6 @@ block_count_rounded:
   mov  ax, #0xf000
   mov  es, ax
   lea  di, pnp_string
-
   mov  bp, sp   ;; Call ROM init routine using seg:off on stack
   db   0xff ;; call_far ss:[bp+0]
   db   0x5e
@@ -10348,6 +10349,7 @@ rom_scan_increment:
   xor  ax, ax   ;; Restore DS back to :
   mov  ds, ax
   ret
+#endif /* !BX_ROMBIOS32 */
 
 post_enable_cache:
   ;; enable cache
@@ -10652,12 +10654,6 @@ post_default_ints:
   ;; PIC
   call post_init_pic
 
-  mov  cx, #0xc000  ;; init vga bios
-  mov  ax, #0xc780
-  call rom_scan
-
-  call _print_bios_banner
-
 #if BX_ROMBIOS32
   call rombios32_init
 #else
@@ -10665,7 +10661,12 @@ post_default_ints:
   call pcibios_init_iomem_bases
   call pcibios_init_irqs
 #endif //BX_PCIBIOS
-#endif
+  mov  cx, #0xc000  ;; init vga bios
+  mov  ax, #0xc780
+  call rom_scan
+#endif //BX_ROMBIOS32
+
+  call _print_bios_banner
 
   ;;
   ;; Floppy setup
@@ -10698,9 +10699,11 @@ post_default_ints:
 
   call _init_boot_vectors
 
+#if !BX_ROMBIOS32
   mov  cx, #0xc800  ;; init option roms
   mov  ax, #0xe000
   call rom_scan
+#endif
 
 #if BX_ELTORITO_BOOT
   call _interactive_bootkey
diff --git a/bios/rombios32.c b/bios/rombios32.c
index 321563d..580aa17 100755
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -1,4 +1,4 @@
-/
+
 // $Id: rombios32.c,v 1.11 2007/08/03 13:56:13 vruppert Exp $
 /
 //
@@ -679,6 +679,7 @@ typedef struct PCIDevice {
 int devfn;
 } PCIDevice;
 
+static int pci_bios_nvga = 0;
 static uint32_t pci_bios_io_addr;
 static uint32_t pci_bios_mem_addr;
 static uint32_t pci_bios_bigmem_addr;
@@ -736,7 +737,7 @@ static void pci_set_io_region_addr(PCIDevice *d, int
region_num, uint32_t addr)
 old_addr = pci_config_readl(d, ofs);
 
 pci_config_writel(d, ofs, addr);
-BX_INFO("region %d: 0x%08x\n", region_num, addr);
+//  BX_INFO("region %d: 0x%08x\n", region_num, addr);
 
 /* enable memory mappings */
 cmd = pci_config_readw(d, PCI_COMMAND);
@@ -928,6 +929,7 @@ static void pci_bios_init_device(PCIDevice *d)
 }
 break;
 case 0x0300: /* Display controller - VGA compatible controller */
+   pci_bios_nvga++;
 if (vendor_id != 0x1234)
 goto default_map;
 /* VGA: map frame buffer to default Bochs VBE address */
@@ -953,18 +955,21 @@ static void pci_bios_init_device(PCIDevice *d)
 default_map:
 /* default memory mappings */
 for(i = 0; i < PCI_NUM_REGIONS; i++) {
+uint32_t orig, addr, val, size;
 int ofs;
-uint32_t val, size ;
 
 if (i == PCI_ROM_SLOT)
 ofs = 0x30;
 else
 ofs = 0x10 + i * 4;
+orig = pci_config_readl(d, ofs);
 pci_con

RE: [PATCH][v2] kvm-userspace: Load PCI option ROMs

2009-01-03 Thread Shan, Haitao
Sorry I made some mistakes concerning ROM BAR.

Although pci_default_write_config supports ROM BAR write emulation, 
assigned_dev_pci_write_config does not invoke that function. The little patch 
below shows where and when the function will be invoked.

Also initial mapping for ROM BAR is not setup in init_assigned_device. However, 
I do not why they are not there.

diff --git a/qemu/hw/device-assignment.c b/qemu/hw/device-assignment.c
index 7a5..129d350 100644
--- a/qemu/hw/device-assignment.c
+++ b/qemu/hw/device-assignment.c
@@ -237,7 +237,7 @@ static void assigned_dev_pci_write_config(PCIDevice *d, uint
 /* Continue to program the card */
 }

-if ((address >= 0x10 && address <= 0x24) || address == 0x34 ||
+if ((address >= 0x10 && address <= 0x24) || address == 0x30 ||
 address == 0x3c || address == 0x3d) {
 /* used for update-mappings (BAR emulation) */
 pci_default_write_config(d, address, val, len);

Best Regards
Haitao Shan

Avi Kivity wrote:
> Shan, Haitao wrote:
>> Hi, Avi,
>> 
>> Option ROM already has its own BAR at 0x30h. I think the devices
>> assignment code now already handles this register. 
>> 
> 
> Okay good.
> 
>> Can I summary your proposals like the following: In guest BIOS, scan
>> all the pci devices (virtual) for existance of Option ROMs. Copy
>> them to available BIOS space in 0xC - 0xD. Execute the ROM
>> code at copied location.   
>> 
> 
> Yes.
> 
>> I don't understand why this makes differences compared to scanning
>> and copying Option ROMs in QEMU, 
> 
> If the ROM BAR is already handled (including registering the memory
> when the BAR is programmed -- I don't see that in the code), then
> there is no big advantage.  It's closer to how real hardware works,
> but that's about it. 
> 
>> especially given that the VGA BIOS and etherboot ROM are also copied
>> to BIOS space in QEMU before they execute in rom_scan loop in guest
>> BIOS.  
>> 
> 
> The VGA BIOS is typically present on the motherboard itself, at least
> on some configurations.  You're right about etherboot.
> 
> I'll apply the patch.  Can you take a look at the ROM BAR?--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] KVM: PowerPC: Disarm old guest debug interface

2009-01-03 Thread Hollis Blanchard
On Wed, 2008-12-24 at 13:48 +0200, Avi Kivity wrote: 
> Jan Kiszka wrote:
> > [Take this as a band-aid, I guess the PowerPC people can do better.]
> >
> > Until PowerPC is updated to the new guest debugging interface, we have
> > to remove the current implementation. This should also unbreak the
> > build.
> >
> >   
> 
> Hollis? Want this or a real fix?

I was trying to come up with a real fix, but unfortunately I don't have
time to reimplement and retest features like this.




kvm: ppc: remove debug support broken by KVM debug rewrite

After the rewrite of KVM's debug support, this code doesn't even build any
more.

Signed-off-by: Hollis Blanchard 

diff --git a/arch/powerpc/include/asm/kvm_host.h 
b/arch/powerpc/include/asm/kvm_host.h
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -118,11 +118,6 @@ struct kvm_arch {
 struct kvm_vcpu_arch {
u32 host_stack;
u32 host_pid;
-   u32 host_dbcr0;
-   u32 host_dbcr1;
-   u32 host_dbcr2;
-   u32 host_iac[4];
-   u32 host_msr;
 
u64 fpr[32];
ulong gpr[32];
@@ -200,10 +195,4 @@ struct kvm_vcpu_arch {
unsigned long pending_exceptions;
 };
 
-struct kvm_guest_debug {
-   int enabled;
-   unsigned long bp[4];
-   int singlestep;
-};
-
 #endif /* __POWERPC_KVM_HOST_H__ */
diff --git a/arch/powerpc/include/asm/kvm_ppc.h 
b/arch/powerpc/include/asm/kvm_ppc.h
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -71,9 +71,6 @@ extern int kvmppc_core_vcpu_translate(st
 extern void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
 extern void kvmppc_core_vcpu_put(struct kvm_vcpu *vcpu);
 
-extern void kvmppc_core_load_guest_debugstate(struct kvm_vcpu *vcpu);
-extern void kvmppc_core_load_host_debugstate(struct kvm_vcpu *vcpu);
-
 extern void kvmppc_core_deliver_interrupts(struct kvm_vcpu *vcpu);
 extern int kvmppc_core_pending_dec(struct kvm_vcpu *vcpu);
 extern void kvmppc_core_queue_program(struct kvm_vcpu *vcpu);
diff --git a/arch/powerpc/kvm/44x.c b/arch/powerpc/kvm/44x.c
--- a/arch/powerpc/kvm/44x.c
+++ b/arch/powerpc/kvm/44x.c
@@ -28,72 +28,6 @@
 
 #include "44x_tlb.h"
 
-/* Note: clearing MSR[DE] just means that the debug interrupt will not be
- * delivered *immediately*. Instead, it simply sets the appropriate DBSR bits.
- * If those DBSR bits are still set when MSR[DE] is re-enabled, the interrupt
- * will be delivered as an "imprecise debug event" (which is indicated by
- * DBSR[IDE].
- */
-static void kvm44x_disable_debug_interrupts(void)
-{
-   mtmsr(mfmsr() & ~MSR_DE);
-}
-
-void kvmppc_core_load_host_debugstate(struct kvm_vcpu *vcpu)
-{
-   kvm44x_disable_debug_interrupts();
-
-   mtspr(SPRN_IAC1, vcpu->arch.host_iac[0]);
-   mtspr(SPRN_IAC2, vcpu->arch.host_iac[1]);
-   mtspr(SPRN_IAC3, vcpu->arch.host_iac[2]);
-   mtspr(SPRN_IAC4, vcpu->arch.host_iac[3]);
-   mtspr(SPRN_DBCR1, vcpu->arch.host_dbcr1);
-   mtspr(SPRN_DBCR2, vcpu->arch.host_dbcr2);
-   mtspr(SPRN_DBCR0, vcpu->arch.host_dbcr0);
-   mtmsr(vcpu->arch.host_msr);
-}
-
-void kvmppc_core_load_guest_debugstate(struct kvm_vcpu *vcpu)
-{
-   struct kvm_guest_debug *dbg = &vcpu->guest_debug;
-   u32 dbcr0 = 0;
-
-   vcpu->arch.host_msr = mfmsr();
-   kvm44x_disable_debug_interrupts();
-
-   /* Save host debug register state. */
-   vcpu->arch.host_iac[0] = mfspr(SPRN_IAC1);
-   vcpu->arch.host_iac[1] = mfspr(SPRN_IAC2);
-   vcpu->arch.host_iac[2] = mfspr(SPRN_IAC3);
-   vcpu->arch.host_iac[3] = mfspr(SPRN_IAC4);
-   vcpu->arch.host_dbcr0 = mfspr(SPRN_DBCR0);
-   vcpu->arch.host_dbcr1 = mfspr(SPRN_DBCR1);
-   vcpu->arch.host_dbcr2 = mfspr(SPRN_DBCR2);
-
-   /* set registers up for guest */
-
-   if (dbg->bp[0]) {
-   mtspr(SPRN_IAC1, dbg->bp[0]);
-   dbcr0 |= DBCR0_IAC1 | DBCR0_IDM;
-   }
-   if (dbg->bp[1]) {
-   mtspr(SPRN_IAC2, dbg->bp[1]);
-   dbcr0 |= DBCR0_IAC2 | DBCR0_IDM;
-   }
-   if (dbg->bp[2]) {
-   mtspr(SPRN_IAC3, dbg->bp[2]);
-   dbcr0 |= DBCR0_IAC3 | DBCR0_IDM;
-   }
-   if (dbg->bp[3]) {
-   mtspr(SPRN_IAC4, dbg->bp[3]);
-   dbcr0 |= DBCR0_IAC4 | DBCR0_IDM;
-   }
-
-   mtspr(SPRN_DBCR0, dbcr0);
-   mtspr(SPRN_DBCR1, 0);
-   mtspr(SPRN_DBCR2, 0);
-}
-
 void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 {
kvmppc_44x_tlb_load(vcpu);
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -216,36 +216,18 @@ void kvm_arch_vcpu_uninit(struct kvm_vcp
 
 void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 {
-   if (vcpu->guest_debug.enabled)
-   kvmppc_core_load_guest_debugstate(vcpu);
-
kvmppc_core_vcpu_load(vcpu, cpu);
 }
 
 void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
 {
-   if (vcpu->gues

Re: GPF on modprobe kvm-amd

2009-01-03 Thread Joerg Roedel
This looks like that the BIOS did not load the same microcode patch in
any individual core. So some cores have SVM disabled which triggers the
#GP. I guess this is a BIOS bug.

On Fri, Jan 02, 2009 at 11:45:12PM -0500, nuit...@melchior.nuitari.net wrote:
> This is resolved, but since other people might have the problem I'll still 
> post what I 
> figured out. It seems like a strange corner case of memory allocation.
> 
> I've upgraded to kernel 2.6.28 with kvm-82, but the problem kept persisting. 
> I've decided to 
> remove the evga 9800gt and suddenly it kvm-amd would load without any issue.
> 
> I've decided to check the Asus website and sure enough there was a bios 
> update, I've 
> installed it then installed the evga card back it and since then everything 
> works (well 
> except rebooting but anyways).
> 
> The bios update is 0603, it lists fix ups for some memory modules as an 
> improvement, so that 
> might be it.
> 
> On Wed, 31 Dec 2008, Avi Kivity wrote:
> 
> >Date: Wed, 31 Dec 2008 12:17:15 +0200
> >From: Avi Kivity 
> >To: nuit...@melchior.nuitari.net
> >Cc: kvm@vger.kernel.org, Joerg Roedel 
> >Subject: Re: GPF on modprobe kvm-amd
> >(adding cc)
> >
> >Joerg, all I can make of it is that svm is enabled on one cpu but not on the 
> >other.  Can 
> >you help here?
> >
> >nuit...@melchior.nuitari.net wrote:
> >> This is with kvm-81
> >> I'm getting a kernel panic when I modprobe kvm-amd
> >>
> >> It used to work until I had to use the CMOS jumper to boot.
> >> The motherboard is an Asus M3N78 PRO
> >> The CPU is an AMD Phenom 9950 Black Edition
> >>
> >> Here are the steps I've already tried:
> >>  - Checking that virtualization is enabled in the BIOS
> >>  - Updating the BIOS
> >>  - Restoring the defaults of the BIOS
> >>  - Downgrading the BIOS
> >>  - Trying various versions of kvm
> >>  - Trying various linux kernel versions
> >>  - Trying various vcore settings
> >>  - Enabling/Disabling Cool & Quiet and AMD C1E
> >>  - Tried a known good kernel and modules combo
> >>  - Interrupting the boot process to only have udev as a process, and
> >> killing it.
> >>  - Not having any other modules loaded
> >>
> >> What I plan to try:
> >>  - Updating to 2.6.28 and kvm-82
> >>  - Tranfering the nvram from an identical motherboard I own to the
> >>problematic one, using /dev/nvram
> >>
> >> Here are the traces
> >> [   36.870419] general protection fault:  [1] PREEMPT SMP
> >> [   36.870579] CPU 0
> >> [   36.870667] Modules linked in: kvm_amd(+) kvm nvidia(P) snd_hda_intel
> >> [   36.870893] Pid: 0, comm: swapper Tainted: P  2.6.27-gentoo-r7
> >> #4
> >> [   36.870955] RIP: 0010:[]  []
> >> svm_hardware_enable+0x87/0xf0 [kvm_amd]
> >> [   36.871070] RSP: 0018:808d9f28  EFLAGS: 00010006
> >> [   36.871130] RAX: 1d01 RBX: 0040 RCX:
> >> c080
> >> [   36.871193] RDX:  RSI: 88021c41c9c0 RDI:
> >> 
> >> [   36.871255] RBP: 808d9f48 R08:  R09:
> >> 
> >> [   36.871317] R10:  R11: 80869e88 R12:
> >> 88021e843cc0
> >> [   36.871379] R13: 88021e843ce8 R14:  R15:
> >> 
> >> [   36.871413] FS:  7fbabbbec6f0() GS:80863340()
> >> knlGS:
> >> [   36.871413] CS:  0010 DS: 0018 ES: 0018 CR0: 8005003b
> >> [   36.871413] CR2: 7fbabbc22000 CR3: 00201000 CR4:
> >> 06e0
> >> [   36.871413] DR0:  DR1:  DR2:
> >> 
> >> [   36.871413] DR3:  DR6: 0ff0 DR7:
> >> 0400
> >> [   36.871413] Process swapper (pid: 0, threadinfo 80868000, task
> >> 80808340)
> >> [   36.871413] Stack:  88002803607f 8025 880028038d20
> >> 0011
> >> [   36.871413]  808d9f58 a07c002e 808d9f68
> >> a07bceaf
> >> [   36.871413]  808d9f98 8026515b 0011
> >> 808ae500
> >> [   36.871413] Call Trace:
> >> [   36.871413][] ?
> >> tick_broadcast_oneshot_control+0xff/0x130
> >> [   36.871413]  [] kvm_arch_hardware_enable+0xe/0x10
> >> [kvm]
> >> [   36.871413]  [] hardware_enable+0x2f/0x40 [kvm]
> >> [   36.871413]  []
> >> generic_smp_call_function_interrupt+0x6b/0x160
> >> [   36.871413]  [] smp_call_function_interrupt+0x19/0x30
> >> [   36.871413]  [] call_function_interrupt+0x66/0x70
> >> [   36.871413][] ? default_idle+0x42/0x50
> >> [   36.871413]  [] ? c1e_idle+0x38/0x100
> >> [   36.871413]  [] ?
> >> atomic_notifier_call_chain+0x11/0x20
> >> [   36.871413]  [] ? cpu_idle+0x56/0xc0
> >> [   36.871413]  [] ? rest_init+0x86/0x90
> >> [   36.871413]
> >> [   36.871413]
> >> [   36.871413] Code: 46 10 0f 01 45 e0 48 8b 45 e2 b9 80 00 00 c0 48 83 c0
> >> 40 48 89 46 18 0f 32 48 c1 e2 20 89 c0 48 09 c2 89 d0 48 c1 ea 20 80 cc 10
> >> <0f> 30 48 ba 00 00 00 00 00 1e 00 00 48 03 56 2

Re: lsi_scsi: error: Bad Status move errors with kvm-79

2009-01-03 Thread Anssi Kolehmainen
On Thu, Jan 01, 2009 at 05:34:33PM +0200, Anssi Kolehmainen wrote:
> Tried kvm-82 (2.6.28-rc7 kernel, kvm-82 modules) today and the same
> bug still exists. I thought everything was working somewhat fine but
> then Windows decided to shoot with shotgun at its own system files and I
> got to spend the day recovering and then rebuilding the vm :)
> 
> I'll setup another computer and see whether I can reproduce that on another
> system.

Well, this time on a brand new PC with 2.6.28, KVM-82. Everything
started out working fine and I thought I couldn't get any errors. First
Oracle DB installation resulted only in few "windows detected controller
error" messages in event log (but those don't cause any problems). After
that Weblogic installation caused windows to BSOD (but no Bad Status
move error). After reboot I tried copying the installation file to guest
drive and that caused 4 Bad Status moves and BSOD...

Tried without kvm modules and everything worked fine (except being
rather slow). Did the same thing with kvm modules loaded and it hit the
error.  Could this be some kind of timing issue?

http://kelvin.aketzu.net/kvm-2sec.log.bz2 contains about two last
seconds of debugging output (with DEBUG_LSI and DEBUG_LSI_REG). Added
second.microsecond timestamps to keep better track of what is going on.
At the moment of crash windows was writing to disk about 10mb/s (copying
file over 100mbps lan).

-- 
Anssi Kolehmainen
anssi.kolehmai...@iki.fi
040-5085390
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html