[kvm-devel] crash booting Windows with current -git

2008-03-27 Thread Dave Hansen
I'm getting the following crash with current -git userspace.  I'm
running a stock 2.6.22-14-generic ubuntu kernels with modules from the
kvm-userspace tree.  I believe my BIOS images are also from current
-git.

The crash occurs about 10 or 15 seconds after the GUI comes up.  

Booting with -no-kvm is OK.

[EMAIL PROTECTED]:~/projects/qemu$ 
~/src/kvm-userspace/qemu/x86_64-softmmu/qemu-system-x86_64 -hda  
~/projects/qemu/windows-xp-base-runme.img  
qemu: unsupported keyboard cmd=0xa1
qemu: unsupported keyboard cmd=0xba
unhandled vm exit: 0x9 vcpu_id 0
rax fc65b948 rbx 806ed0e0 rcx  rdx 

rsi 811f84d8 rdi 806ed0b8 rsp 15fffc5f rbp 
fc65b96c
r8   r9   r10  r11 

r12  r13  r14  r15 

rip fc5f157e rflags 00010206
cs 0008 (/ p 1 dpl 0 db 1 s 1 type b l 0 g 1 avl 0)
ds 0023 (/ p 1 dpl 3 db 1 s 1 type 3 l 0 g 1 avl 0)
es 0023 (/ p 1 dpl 3 db 1 s 1 type 3 l 0 g 1 avl 0)
ss 0010 (/ p 1 dpl 0 db 1 s 1 type 3 l 0 g 1 avl 0)
fs 0030 (ffdff000/1fff p 1 dpl 0 db 1 s 1 type 3 l 0 g 1 avl 0)
gs  (/ p 0 dpl 0 db 0 s 0 type 0 l 0 g 0 avl 0)
tr 0028 (80042000/20ab p 1 dpl 0 db 0 s 0 type b l 0 g 0 avl 0)
ldt  (/ p 0 dpl 0 db 0 s 0 type 0 l 0 g 0 avl 0)
gdt 8003f000/3ff
idt 8003f400/7ff
cr0 8001003b cr2 806ed0b4 cr3 3b8f000 cr4 6d8 cr8 0 efer 0
Aborted (core dumped)

-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm causing memory corruption? ~2.6.25-rc6

2008-03-27 Thread Dave Hansen
On Thu, 2008-03-27 at 11:36 +0200, Avi Kivity wrote:
 I dug out my i386 install and tried it.  Doesn't reproduce for me on 
 either kvm.git or -rc7.
 
 Do you have a working setup that we can bisect?

I don't really have a working revision to bisect against.  I'm not sure
that it ever worked.  It's also on my actual laptop, so it's a bit of a
pain to get any other work done while I'm bisecting. :)

I'll move the Windows image over to another machine today and see if I
can reproduce elsewhere.  I'll also check some older versions of KVM to
see if any of those work.  If I do that, should I keep the kvm
userspace, modules and BIOSes all synchronized from each version that I
test?

-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm causing memory corruption? ~2.6.25-rc6

2008-03-27 Thread Dave Hansen
On Thu, 2008-03-27 at 17:53 +0200, Avi Kivity wrote:
 Dave Hansen wrote:
  On Thu, 2008-03-27 at 11:36 +0200, Avi Kivity wrote:

  I dug out my i386 install and tried it.  Doesn't reproduce for me on 
  either kvm.git or -rc7.
 
  Do you have a working setup that we can bisect?
  
  I don't really have a working revision to bisect against.  I'm not sure
  that it ever worked.  
 
 I'm fairly sure Windows works on kvm...

Oh, I didn't mean to imply that Windows doesn't work, just that the
particular perverted way in which I'm poking it may have never
worked. :)

 How did you generate the image?

The original install was done in a kqemu-accelerated host. 

  It's also on my actual laptop, so it's a bit of a
  pain to get any other work done while I'm bisecting. :)
 
  I'll move the Windows image over to another machine today and see if I
  can reproduce elsewhere.  I'll also check some older versions of KVM to
  see if any of those work.  If I do that, should I keep the kvm
  userspace, modules and BIOSes all synchronized from each version that I
  test?

 
 You can keep the userspace (qemu + bios) fixed and change the kernel, or 
 vice versa.
 
-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm causing memory corruption? ~2.6.25-rc6

2008-03-27 Thread Dave Hansen
On Thu, 2008-03-27 at 16:59 +0200, Avi Kivity wrote:
 Dave Hansen wrote:
  On Thu, 2008-03-27 at 12:10 +0200, Avi Kivity wrote:
  btw, is this with = 4GB RAM on the host?
  
  Well, are you asking whether I have PAE on or not? :)
 
 No, I'm asking whether there is a possibility of address truncation :)
 
 PAE by itself doesn't affect kvm much, as it always runs the guest in 
 pae mode.
 
 Can you try running with mem=2000M or something?

Oh, sure.  I'll give that a shot.

-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm causing memory corruption? ~2.6.25-rc6

2008-03-26 Thread Dave Hansen
On Wed, 2008-03-26 at 18:58 +0200, Avi Kivity wrote:
 Dave Hansen wrote:
  On Wed, 2008-03-26 at 11:50 +0200, Avi Kivity wrote:
  Dave Hansen wrote:
  
  I was getting some kvm userspace crashes trying to run a Windows guest.
  So, I decided to try a recent kernel (2.6.25-rc6-00333-ga4083c9)  with
  the kvm kernel code that shipped with that kernel.
 

  This is fixed in 2.6.25-rc7.
  
 
  I just updated to -rc7 and re-tested.  Same symptoms:
 
 Bad.  Which kvm userspace are you running?

~/src/kvm-userspace$ git describe
kvm-63-118-g52be1a1

-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm causing memory corruption? ~2.6.25-rc6

2008-03-26 Thread Dave Hansen
On Wed, 2008-03-26 at 11:50 +0200, Avi Kivity wrote:
 Dave Hansen wrote:
  I was getting some kvm userspace crashes trying to run a Windows guest.
  So, I decided to try a recent kernel (2.6.25-rc6-00333-ga4083c9)  with
  the kvm kernel code that shipped with that kernel.
 
 
 This is fixed in 2.6.25-rc7.

I just updated to -rc7 and re-tested.  Same symptoms:

[  751.033545] BUG: unable to handle kernel paging request at 0096b848
[  751.040082] IP: [c01a0636] d_instantiate+0x26/0x50
[  751.048065] Oops: 0002 [#1] SMP
[  751.052057] Modules linked in: kvm_intel kvm nls_iso8859_1 vfat fat rfcomm 
l2cap tun ppdev acpi_cpufreq cpufreq_ondemand cpe
[  751.052057]
[  751.052057] Pid: 8743, comm: evolution Not tainted (2.6.25-rc7 #146)
[  751.052057] EIP: 0060:[c01a0636] EFLAGS: 00210286 CPU: 0
[  751.052057] EIP is at d_instantiate+0x26/0x50
[  751.052057] EAX: 0096b844 EBX: e65d7d48 ECX:  EDX: e65d7d60
[  751.052057] ESI: e67a7d00 EDI: e67a7cc0 EBP: e802ce48 ESP: e802ce3c
[  751.052057]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[  751.052057] Process evolution (pid: 8743, ti=e802c000 task=f3c8ce00 
task.ti=e802c000)
[  751.052057] Stack: e65d7d48  f4c191f8 e802ce60 c01e2fa4 e67a7cc0 
f4c191f8 e65d7d48
[  751.052057]e660c280 e802ce80 c01e30c3 8180 e67a7cc0  
c03b4a00 e660c280
[  751.052057]8180 e802cea0 c0197964 e802cf24 c03b4a00 e67a7cc0 
e660c280 e802cf24
[  751.052057] Call Trace:
[  751.052057]  [c01e2fa4] ? ext3_add_nondir+0x34/0x60
[  751.052057]  [c01e30c3] ? ext3_create+0xf3/0x100
[  751.052057]  [c0197964] ? vfs_create+0x74/0x100
[  751.052057]  [c0197c8f] ? open_namei_create+0x4f/0xa0
[  751.052057]  [c01981f3] ? open_namei+0x513/0x560
[  751.052057]  [c018db2c] ? do_filp_open+0x2c/0x60
[  751.052057]  [c018dd29] ? get_unused_fd_flags+0x39/0xd0
[  751.052057]  [c018dec4] ? do_sys_open+0x54/0xe0
[  751.052057]  [c018df6c] ? sys_open+0x1c/0x20
[  751.052057]  [c0104e2c] ? sysenter_past_esp+0x6d/0xa5
[  751.052057]  [c039] ? quirk_vt8235_acpi+0x90/0xa0
[  751.052057]  ===
[  751.052057] Code: 27 00 00 00 00 55 89 e5 57 89 c7 56 8d 70 40 53
89 d3 39 70 40 75 37 b8 40 15 4e c0 e8 14 d1 1f 00 85 db
[  751.052057] EIP: [c01a0636] d_instantiate+0x26/0x50 SS:ESP 0068:e802ce3c
[  751.052103] ---[ end trace 514c1de750400319 ]---


-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] kvm causing memory corruption? ~2.6.25-rc6

2008-03-25 Thread Dave Hansen
I was getting some kvm userspace crashes trying to run a Windows guest.
So, I decided to try a recent kernel (2.6.25-rc6-00333-ga4083c9)  with
the kvm kernel code that shipped with that kernel.

I've had some lockups doing similar things over the last month or two,
but figured it was something really stupid I was doing, and never really
connected the dots.  Now, I've hooked up a serial console and reproduced
it with a fresh boot and not much else going on at all on the machine.

Machine is a Thinkpad T61.  .config is here:

http://sr71.net/~dave/linux/config-2.6.25-rc6-00333-ga4083c9

To trigger it, I first run kvm and see an error (-no-kvm works fine,
btw):

$ ~/src/kvm-userspace/qemu/x86_64-softmmu/qemu-system-x86_64 -hda 
~/projects/qemu/windows-xp-base-runme.img 
kvm_run: Cannot allocate memory
kvm_run returned -12

Then, run it again.  I usually get an oops.  But, the weird part is that
the oops isn't *in* kvm.  It's in some other part of the kernel and in
some *OTHER* process.  One in bash is below.  That's what leads me to
believe it is memory corruption.  The machine also becomes increasingly
unstable after the original oops so there's definitely collateral
damage.

$ addr2line -e vmlinux c01795e4
/home/dave/kernels/linux-2.6.git/mm/filemap.c:1327

int filemap_fault(struct vm_area_struct *vma, struct vm_fault
*vmf)
{
int error;
struct file *file = vma-vm_file;
struct address_space *mapping = file-f_mapping;
struct file_ra_state *ra = file-f_ra;
HERE---struct inode *inode = mapping-host;

Which is a line of code that literally hasn't touched since the
beginning of time (in git terms :).  Full oops is below:

[  435.057922] BUG: unable to handle kernel NULL pointer dereference at 0048
[  435.067275] IP: [c01795e4] filemap_fault+0x34/0x310
[  435.072815] *pdpt = 2a4a7001 *pde =  
[  435.081272] Oops:  [#2] SMP 
[  435.084812] Modules linked in: nls_iso8859_1 vfat fat rfcomm l2cap tun ppdev 
acpi_cpufreq cpufreq_ondemand cpufreq_conservative cpufreq_stats freq_table 
cpufreq_userspace cpufreq_powersave sbs container sbshc af_packet sbp2 lp loop 
usb_storage arc4 ecb crypto_blkcipher pcmcia usbhid libusual hid snd_hda_intel 
snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_seq_midi_event 
snd_seq snd_timer snd_seq_device joydev iwl4965 snd serio_raw mac80211 
yenta_socket parport_pc sdhci uhci_hcd ehci_hcd ricoh_mmc ohci1394 
rsrc_nonstatic soundcore cfg80211 parport psmouse mmc_core ieee1394 pcmcia_core 
usbcore snd_page_alloc e1000 button thinkpad_acpi nvram evdev thermal processor 
fan fuse
[  435.084812] 
[  435.084812] Pid: 7691, comm: bash Tainted: G  D  
(2.6.25-rc6-00333-ga4083c9 #144)
[  435.084812] EIP: 0060:[c01795e4] EFLAGS: 00010286 CPU: 0
[  435.084812] EIP is at filemap_fault+0x34/0x310
[  435.084812] EAX: ef83bf48 EBX: 0012 ECX:  EDX: ef83c7e8
[  435.084812] ESI: c04cc248 EDI:  EBP: ef96ee40 ESP: ef96ee00
[  435.084812]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[  435.084812] Process bash (pid: 7691, ti=ef96e000 task=ef8a2e00 
task.ti=ef96e000)
[  435.084812] Stack: ef96ee2c c0130cbc ef96ee28 c01870bb ef96ee28  
  
[  435.084812]ef83bf48 ef83c7e8 ef83bf00 ef96ee9c ea49f7e8 0012 
c04cc248  
[  435.084812]ef96eeb8 c018ab57 8001 0001 0001  
 eacb6314 
[  435.084812] Call Trace:
[  435.084812]  [c0130cbc] ? kmap_atomic_prot+0x12c/0x150
[  435.084812]  [c01870bb] ? vm_normal_page+0x2b/0xa0
[  435.084812]  [c018ab57] ? __do_fault+0x67/0x4e0
[  435.084812]  [c01a8a70] ? pipe_read+0x1f0/0x290
[  435.084812]  [c018b03d] ? do_linear_fault+0x6d/0x80
[  435.084812]  [c018b570] ? handle_mm_fault+0x1c0/0x4d0
[  435.084812]  [c014d58e] ? do_sigaction+0x16e/0x190
[  435.084812]  [c03b3419] ? do_page_fault+0x169/0x4d0
[  435.084812]  [c01a38b9] ? fput+0x19/0x20
[  435.084812]  [c03b32b0] ? do_page_fault+0x0/0x4d0
[  435.084812]  [c03b187a] ? error_code+0x72/0x78
[  435.084812]  [c03b] ? wait_for_completion_killable+0x10/0x30
[  435.084812]  ===
[  435.084812] Code: 89 45 f0 89 55 ec 8b 40 4c 89 45 e8 8b 50 7c 83 c0 48 89 
45 e0 89 55 e4 8b 0a c7 45 d8 00 00 00 00 c7 45 d4 00 00 00 00 89 4d dc 8b 49 
48 89 f6 8d bc 27 00 00 00 00 89 c8 8b 7d dc 8b 5f 40 8b 
[  435.084812] EIP: [c01795e4] filemap_fault+0x34/0x310 SS:ESP 0068:ef96ee00
[  435.084870] ---[ end trace addcd60623916614 ]---

~/src/kvm-userspace$ git describe
kvm-63-118-g52be1a1

/proc/cpuinfo:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model   : 15
model name  : Intel(R) Core(TM)2 Duo CPU T7300  @ 2.00GHz
stepping: 10
cpu MHz : 800.000
cache size  : 4096 KB
physical id : 0
siblings: 2
core id : 0
cpu cores   : 2
fdiv_bug: no
hlt_bug : no

Re: [kvm-devel] [RFC/PATCH 01/15] preparation: provide hook to enable pgstes in user pagetable

2008-03-21 Thread Dave Hansen
On Thu, 2008-03-20 at 21:35 +0100, Carsten Otte wrote:
 Dave Hansen wrote:
  Well, and more fundamentally: do we really want dup_mm() able to be
  called from other code?
  
  Maybe we need a bit more detailed justification why fork() itself isn't
  good enough.  It looks to me like they basically need an arch-specific
  argument to fork, telling the new process's page tables to take the
  fancy new bit.
  
  I'm really curious how this new stuff is going to get used.  Are you
  basically replacing fork() when creating kvm guests?
 No. The trick is, that we do need bigger page tables when running 
 guests: our page tables are usually 2k, but when running a guest 
 they're 4k to track both guest and host dirtyreference information. 
 This looks like this:
 *--*
 *2k PTE's  *
 *--*
 *2k PGSTE  *
 *--*
 We don't want to waste precious memory for all page tables. We'd like 
 to have one kernel image that runs regular server workload _and_ 
 guests.

That makes a lot of sense.

Is that layout (the shadow and regular stacked together) specified in
hardware somehow, or was it just chosen?

What you've done with dup_mm() is probably the brute-force way that I
would have done it had I just been trying to make a proof of concept or
something.  I'm worried that there are a bunch of corner cases that
haven't been considered.

What if someone else is poking around with ptrace or something similar
and they bump the mm_users:

+   if (tsk-mm-context.pgstes)
+   return 0;
+   if (!tsk-mm || atomic_read(tsk-mm-mm_users)  1 ||
+   tsk-mm != tsk-active_mm || tsk-mm-ioctx_list)
+   return -EINVAL;
HERE
+   tsk-mm-context.pgstes = 1;/* dirty little tricks .. */
+   mm = dup_mm(tsk);

It'll race, possibly fault in some other pages, and those faults will be
lost during the dup_mm().  I think you need to be able to lock out all
of the users of access_process_vm() before you go and do this.  You also
need to make sure that anyone who has looked at task-mm doesn't go and
get a reference to it and get confused later when it isn't the task-mm
any more.

 Therefore, we need to reallocate the page table after fork() 
 once we know that task is going to be a hypervisor. That's what this 
 code does: reallocate a bigger page table to accomondate the extra 
 information. The task needs to be single-threaded when calling for 
 extended page tables.
 
 Btw: at fork() time, we cannot tell whether or not the user's going to 
 be a hypervisor. Therefore we cannot do this in fork.

Can you convert the page tables at a later time without doing a
wholesale replacement of the mm?  It should be a bit easier to keep
people off the pagetables than keep their grubby mitts off the mm
itself.

-- Dave


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [RFC/PATCH 01/15] preparation: provide hook to enable pgstes in user pagetable

2008-03-20 Thread Dave Hansen
On Thu, 2008-03-20 at 10:28 -0700, Jeremy Fitzhardinge wrote:
 Carsten Otte wrote:
  +struct mm_struct *dup_mm(struct task_struct *tsk);
 
 No prototypes in .c files.  Put this in an appropriate header.

Well, and more fundamentally: do we really want dup_mm() able to be
called from other code?

Maybe we need a bit more detailed justification why fork() itself isn't
good enough.  It looks to me like they basically need an arch-specific
argument to fork, telling the new process's page tables to take the
fancy new bit.

I'm really curious how this new stuff is going to get used.  Are you
basically replacing fork() when creating kvm guests?

-- Dave


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] Slow usernet from last qemu merge (~kvm-61)

2008-03-12 Thread Dave Hansen
I use '-net user' because it is simple for me to set up, and it has
always worked flawlessly.  On a recent update, though, I realized that I
couldn't use vi inside my guest because it had gotten too slow.  It
feels to me like lots of network latency, but is isn't _actual_ network
latency.

I can scp a very small file to a kvm-60 guest in ~3 seconds.  The same
file takes 15 seconds on kvm-61 with the exact same host kernel/modules,
guest kernel and guest disk.  I'm running the bios from the current git
tree.

I git bisected this behavior down to the qemu merge at:
e6fd8f045bf87e8518985d1f5a0102e5f5640d5a.

I also moved over to the qemu branch at just before the merge and built
that version of qemu by itself.  The scp time on that
non-kvm-accelerated version is about 4 seconds; barely slower than the
fast kvm, and way *FASTER* than current versions of kvm.  I'm quite sure
that this qemu was not accelerated because the boot was very, very slow.

I've tried ne2k, 8139 and e1000.  Changing between them didn't seem to
affect the problem.

Any ideas how to track this down further?

-- Dave


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH] make KVM selectable again

2008-02-09 Thread Dave Hansen
Current git for me (b1d0e4f535e10775cffde922208b49629169aeaa) doesn't
let me build KVM.  In fact, I don't seem to have *ANY* kvm-related
symbols in my .config at all.

I've verified that arch/x86/kvm/Kconfig was getting run by putting some
comments in it.  It seems to me like just putting:

config HAVE_KVM
   bool

isn't letting anything come into my .config at all.  I'm not sure why we
do that, and then have:

select HAVE_KVM

in arch/x86/Kconfig.

This patch just defines HAVE_KVM in the x86 Kconfig and is done with it.
Seems to work for me.

Was there some reason that it was done this way?  Was it ever tested?

-- Dave

Signed-off-by: Dave Hansen [EMAIL PROTECTED]

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 65a70b7..cbbf35d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -115,7 +115,8 @@ config ARCH_HAS_CPU_RELAX
 config HAVE_SETUP_PER_CPU_AREA
def_bool X86_64
 
-select HAVE_KVM
+config HAVE_KVM
+   def_bool y
 
 config ARCH_HIBERNATION_POSSIBLE
def_bool y
diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
index 41962e7..f2177ec 100644
--- a/arch/x86/kvm/Kconfig
+++ b/arch/x86/kvm/Kconfig
@@ -1,8 +1,6 @@
 #
 # KVM configuration
 #
-config HAVE_KVM
-   bool
 
 menuconfig VIRTUALIZATION
bool Virtualization



-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] Slow Kernel Boot

2008-01-08 Thread Dave Hansen
On Tue, 2008-01-08 at 12:12 +0530, Amit Shah wrote:
  BIOS-provided physical RAM map:
   BIOS-e820:  - 0009fc00 (usable)
   BIOS-e820: 0009fc00 - 000a (reserved)
   BIOS-e820: 000e8000 - 0010 (reserved)
   BIOS-e820: 0010 - fffbd000 (usable)
   BIOS-e820: fffbd000 -  (reserved)
 
  Note that this is with '-m 1G'!!  It looks to me like one of those
 
 And there lies the problem. qemu doesn't understand suffixes like 'G'.
 If you 
 pass -m 1024, you'll boot just fine.
 
 This is really annoying of qemu (it should either accept that input
 properly 
 or bail out); a patch is welcome!

OK.  Here's a function stolen blatantly from the kernel.  Seems to work
OK for me for:

-m 1234
-m 1234M
-m 1G
-m 99G

diff -ru orig/qemu-0.9.1/vl.c qemu-0.9.1/vl.c
--- orig/qemu-0.9.1/vl.c2008-01-06 11:38:42.0 -0800
+++ qemu-0.9.1/vl.c 2008-01-08 11:23:29.0 -0800
@@ -8052,6 +8052,47 @@
 }
 #endif
 
+/**
+ * memparse - parse a string with mem suffixes into a number of bytes
+ * @ptr: Where parse begins
+ *
+ * Parses a string into a number.  The number stored at @ptr is
+ * potentially suffixed with %M (for megabytes, or 1048576 bytes)
+ * or %G (for gigabytes, or 1073741824).  If the number is
+ * suffixed with M or G, then the return value is the number
+ * multiplied by one megabyte or one gigabyte, respectively. No
+ * suffix implies megabytes.
+ */
+
+unsigned long long memparse (const char *ptr)
+{
+   char *endptr;
+   unsigned long ret = strtoull(ptr, endptr, 0);
+
+   switch (*endptr) {
+   case 'G':
+   case 'g':
+   ret = 10;
+   case 'M':
+   case 'm':
+   ret = 20;
+   break;
+   default:
+   /* for backward compatibility; qemu has
+* traditionally taken this in plain MB */
+   ret = 20;
+   break;
+   }
+   if (ret = 0)
+   help(1);
+   if (ret  PHYS_RAM_MAX_SIZE) {
+   fprintf(stderr, qemu: at most %d MB RAM can be simulated\n,
+   PHYS_RAM_MAX_SIZE / (1024 * 1024));
+   exit(1);
+   }
+   return ret;
+}
+
 #define MAX_NET_CLIENTS 32
 
 int main(int argc, char **argv)
@@ -8402,14 +8443,7 @@
 help(0);
 break;
 case QEMU_OPTION_m:
-ram_size = atoi(optarg) * 1024 * 1024;
-if (ram_size = 0)
-help(1);
-if (ram_size  PHYS_RAM_MAX_SIZE) {
-fprintf(stderr, qemu: at most %d MB RAM can be 
simulated\n,
-PHYS_RAM_MAX_SIZE / (1024 * 1024));
-exit(1);
-}
+ram_size = memparse(optarg);
 break;
 case QEMU_OPTION_d:
 {
@@ -8664,6 +8698,7 @@
 }
 }
 }
+fprintf(stderr, qemu: using %d MB RAM\n, ram_size20);
 
 #ifndef _WIN32
 if (daemonize  !nographic  vnc_display == NULL) {


-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] Slow Kernel Boot

2008-01-07 Thread Dave Hansen
With kvm-44, I thought my kernel was freezing during boot if I gave it
1G of RAM.  But, it boots fine with 512M.

So, I instrumented the kernel, and found out that it is just taking a
long time to memset a 58MB area of memory for mem_map[].  It appears to
be taking a mmio_exit for every access of every byte of memory.  The end
result is a ~100kbps memset() speed.  Yes, 100 kilobytes/sec.

I just tried kvm from git, and the kernel doesn't even get that far.  I
see this in debugfs
 
insn_emulation:1393985

even before I get a single kernel message.  And it keeps going up, fast.
I can get the kernel to boot just fine if I give it less than 896MB of
RAM.

kvm-44 boots long enough for me to see a really funky e820 table:

BIOS-provided physical RAM map:
 BIOS-e820:  - 0009fc00 (usable)
 BIOS-e820: 0009fc00 - 000a (reserved)
 BIOS-e820: 000e8000 - 0010 (reserved)
 BIOS-e820: 0010 - fffbd000 (usable)
 BIOS-e820: fffbd000 -  (reserved)

Note that this is with '-m 1G'!!  It looks to me like one of those
sections is basically from 0x10 up to ~4G and *usable*.  That
doesn't look right.

Eventually, the kvm-git one just pukes:

exception 13 (33)
rax 0002 rbx 2000 rcx  rdx 

rsi 002a1358 rdi 00099100 rsp 673a rbp 
673a
r8   r9   r10  r11 

r12  r13  r14  r15 

rip fb24 rflags 00033086
cs 9020 (00090200/ p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
ds 9000 (0009/ p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
es 9000 (0009/ p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
ss 9000 (0009/ p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
fs 9000 (0009/ p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
gs 9000 (0009/ p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
tr  (fffbd000/2088 p 1 dpl 0 db 0 s 0 type b l 0 g 0 avl 0)
ldt  (/ p 1 dpl 0 db 0 s 0 type 2 l 0 g 0 avl 0)
gdt 8f5c/27
idt 0/3ff
cr0 6010 cr2 0 cr3 0 cr4 0 cr8 0 efer 0
code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -- f0 01 f0 
03 0e 00 00 00 70 01 70 03 0f 00 00 00 e8 01 e0 03 0c 00 00 00 68 01 60 03 0b 00
Aborted

Any idea how to debug this?

-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] Slow Kernel Boot

2008-01-07 Thread Dave Hansen
On Tue, 2008-01-08 at 00:16 +0200, Izik Eidus wrote:
 Dave Hansen wrote:
  With kvm-44, I thought my kernel was freezing during boot if I gave it
  1G of RAM.  But, it boots fine with 512M.
 
  So, I instrumented the kernel, and found out that it is just taking a
  long time to memset a 58MB area of memory for mem_map[].  It appears to
  be taking a mmio_exit for every access of every byte of memory.  The end
  result is a ~100kbps memset() speed.  Yes, 100 kilobytes/sec.
 
  I just tried kvm from git, and the kernel doesn't even get that far.  I
  see this in debugfs
   
  insn_emulation:1393985
 
  even before I get a single kernel message.  And it keeps going up, fast.
  I can get the kernel to boot just fine if I give it less than 896MB of
  RAM.
 
  kvm-44 boots long enough for me to see a really funky e820 table:
 
  BIOS-provided physical RAM map:
   BIOS-e820:  - 0009fc00 (usable)
   BIOS-e820: 0009fc00 - 000a (reserved)
   BIOS-e820: 000e8000 - 0010 (reserved)
   BIOS-e820: 0010 - fffbd000 (usable)
   BIOS-e820: fffbd000 -  (reserved)
 
  Note that this is with '-m 1G'!!  It looks to me like one of those
  sections is basically from 0x10 up to ~4G and *usable*.  That
  doesn't look right.

 yea it really dont look right, it look like it for some reason map the 
 whole memory up untill the bios to the kernel as memory
 it even map it on the pci hole so...
 hrmmm, very weird,
 
 what is your host info (32/64 amd/intel kernel...)?

64-bit intel host, kernel 2.6.24-rc5

Running kvm's current git userspace with modules from the same version.

 and what is the 
 guest info (kernel 32/64...) ?

32-bit 2.6.23-rc6-mm1

 and what happen if you run it with -no-kvm ?

Both current -git and kvm-44 seem to lock up at early kernel boot before
even early printk is available.  But, GRUB comes up in both cases. 

-no-kvm doesn't seem to change things at all.

-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] Slow Kernel Boot

2008-01-07 Thread Dave Hansen
On Tue, 2008-01-08 at 00:46 +0200, Izik Eidus wrote:
 Dave Hansen wrote:
  On Tue, 2008-01-08 at 00:16 +0200, Izik Eidus wrote:

  Dave Hansen wrote:
  
  With kvm-44, I thought my kernel was freezing during boot if I gave it
  1G of RAM.  But, it boots fine with 512M.
 
  So, I instrumented the kernel, and found out that it is just taking a
  long time to memset a 58MB area of memory for mem_map[].  It appears to
  be taking a mmio_exit for every access of every byte of memory.  The end
  result is a ~100kbps memset() speed.  Yes, 100 kilobytes/sec.
 
  I just tried kvm from git, and the kernel doesn't even get that far.  I
  see this in debugfs
   
insn_emulation:1393985
 
  even before I get a single kernel message.  And it keeps going up, fast.
  I can get the kernel to boot just fine if I give it less than 896MB of
  RAM.
 
  kvm-44 boots long enough for me to see a really funky e820 table:
 
  BIOS-provided physical RAM map:
   BIOS-e820:  - 0009fc00 (usable)
   BIOS-e820: 0009fc00 - 000a (reserved)
   BIOS-e820: 000e8000 - 0010 (reserved)
   BIOS-e820: 0010 - fffbd000 (usable)
   BIOS-e820: fffbd000 -  (reserved)
 
  Note that this is with '-m 1G'!!  It looks to me like one of those
  sections is basically from 0x10 up to ~4G and *usable*.  That
  doesn't look right.


  yea it really dont look right, it look like it for some reason map the 
  whole memory up untill the bios to the kernel as memory
  it even map it on the pci hole so...
  hrmmm, very weird,
 
  what is your host info (32/64 amd/intel kernel...)?
  
 
  64-bit intel host, kernel 2.6.24-rc5
 
  Running kvm's current git userspace with modules from the same version.
 

  and what is the 
  guest info (kernel 32/64...) ?
  
 
  32-bit 2.6.23-rc6-mm1
 

  and what happen if you run it with -no-kvm ?
  
 
  Both current -git and kvm-44 seem to lock up at early kernel boot before
  even early printk is available.  But, GRUB comes up in both cases. 
 
  -no-kvm doesn't seem to change things at all.
 
  -- Dave
 

 when you see the grub how much memory is it saying you have?

GNU GRUB  version 0.97  (639K lower / 4193279K upper memory)

 how can i get the image that you are using?

The disk images?  I made them myself and I've been using them for quite
a while.  Probably a year or more.

 (i dont know if it will be too much to ask, but if you run it with pure 
 qemu (from qemu.org) is it working?)

Ahhh.  I'm using the ubuntu one, and it does the same thing.  I guess
that means I found a qemu bug.

 for some reason the e820 return a really false values for your guest...
 i would have suggest to check if you have the latest kvm bios(not in 
 your physical computer bios) but it cannot be the problem as that you 
 dont run it with more than 3.something giga...

Yeah, I just updated the BIOSes.  They're right out of KVM's git repo.

-- Dave


-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] 2.6.23 git current compile error on UP

2007-11-08 Thread Dave Hansen
drivers/kvm/kvm_main.c: In function `kvm_flush_remote_tlbs':
drivers/kvm/kvm_main.c:220: error: implicit declaration of function 
`smp_call_function_mask'
make[2]: *** [drivers/kvm/kvm_main.o] Error 1
make[1]: *** [drivers/kvm] Error 2

http://sr71.net/~dave/linux/config-kvm-up

Looks like that function calls smp_call_function_mask() which is never
defined for UP.  Nobody else uses it that way, so I'm not sure what the
right fix is.  I'm not even sure kvm_flush_remote_tlbs() is safe with
its raw_smp_processor_id() use.  Is there a reason it can't get
preempted?

-- Dave


-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm-27 vs 28 I/O speed

2007-07-16 Thread Dave Hansen
On Sat, 2007-07-14 at 09:27 +0300, Avi Kivity wrote:
 Dave, can you compare the output of hdparm -v /dev/hda?  Maybe more
 clues there.

slow:
qemu:~# hdparm -v /dev/hda

/dev/hda:
 multcount= 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq=  0 (off)
 using_dma=  1 (on)
 keepsettings =  0 (off)
 readonly =  0 (off)
 readahead= 256 (on)
 geometry = 10402/255/63, sectors = 10485760, start = 0


fast:
qemu:~# hdparm -v /dev/hda

/dev/hda:
 multcount= 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq=  0 (off)
 using_dma=  0 (off)
 keepsettings =  0 (off)
 readonly =  0 (off)
 readahead= 256 (on)
 geometry = 10402/255/63, sectors = 10485760, start = 0


-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm-27 vs 28 I/O speed

2007-07-16 Thread Dave Hansen
On Sun, 2007-07-15 at 21:27 +0200, Luca wrote:
 On 7/13/07, Dave Hansen [EMAIL PROTECTED] wrote:
  diff -ru kvm-fast-dmesg.txt kvm-slow-dmesg.txt
 
   Linux version 2.6.22 ([EMAIL PROTECTED]) (gcc version 4.1.2 (Ubuntu 
  4.1.2-0ubuntu4)) #13 Wed Jul 11 15:27:01 PDT 2007
 
 Is this a vanilla 2.6.22? 32 bit?

Yep, vanilla.

  @@ -107,20 +90,21 @@
   PIIX3: IDE controller at PCI slot :00:01.1
   PIIX3: chipset revision 0
   PIIX3: not 100% native mode: will probe irqs later
  -PIIX3: neither IDE port enabled (BIOS)
  +ide0: BM-DMA at 0x1400-0x1407, BIOS settings: hda:pio, hdb:pio
  +ide1: BM-DMA at 0x1408-0x140f, BIOS settings: hdc:pio, hdd:pio
 
 Hum, FC6 PIIX driver always comes up with the same mode, regardless of
 what I'm doing to the controller...


-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm-27 vs 28 I/O speed

2007-07-16 Thread Dave Hansen
On Sun, 2007-07-15 at 23:22 +0200, Luca wrote:
 Can you re-test KVM 27 with it's BIOS (i.e. use something like -L
 ~/src/kvm-27/qemu/pc-bios)? 

Doing that does appear to make it behave like kvm-28.  DMA enabled, and
slow I/O:

qemu:~# hdparm -v /dev/hda

/dev/hda:
 multcount= 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq=  0 (off)
 using_dma=  1 (on)
 keepsettings =  0 (off)
 readonly =  0 (off)
 readahead= 256 (on)
 geometry = 10402/255/63, sectors = 10485760, start = 0


-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm-27 vs 28 I/O speed

2007-07-13 Thread Dave Hansen
On Fri, 2007-07-13 at 17:39 +0200, Luca wrote:
 Dave, can you confirm that backing out my patch fixes your speed
 issue? 

Sure, I'll check current git with and without your patch.

I've reproduced that _applying_ it to kvm-27 creates the slowdown, but
I'll double-check that backing it out restores things.

-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm-27 vs 28 I/O speed

2007-07-12 Thread Dave Hansen
On Thu, 2007-07-12 at 08:37 +0300, Avi Kivity wrote:
 Can you confirm it by backing out that one patch?

Do you know the git commit id by chance?

-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm-27 vs 28 I/O speed

2007-07-11 Thread Dave Hansen
On Tue, 2007-07-10 at 08:44 +0300, Avi Kivity wrote:
 What does 'top' on the host show in both cases?

On the fast one (kvm-27) I just see the dd as a flash in top.  It
doesn't stay for long.  The VM isn't very responsive during the dd.

On the slow (kvm-28) one, I see the dd in top creeping along, using ~2%
of the CPU.  The guest is responsive during this time

 There was a change in kvm userspace that affected IDE.  Can you try
 kvm-27 userspace with a kvm-28 kernel module?

That's actually what I've been doing the whole time.  Sorry, my initial
problem description must not have been very clear.  I've been using the
kvm-28 modules the entire time, and only varying the userspace.

The IDE changes do look suspect.

-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kvm-27 vs 28 I/O speed

2007-07-09 Thread Dave Hansen
On Sun, 2007-07-08 at 11:14 +0300, Avi Kivity wrote:
 Dave Hansen wrote:
  I've noticed that some of my tests run *MUCH* slower in kvm-28 than in
  27.  I'm sure that wall time is pretty wonky in the guests, but it is
  much slower in real-world time as well.
 
  Here's a little test to create a 32MB zeroed file with dd.  Here it is
  from kvm-27 (this took ~5.5 seconds on my wristwatch):
  33554432 bytes transferred in 0.052050 seconds (644657845 bytes/sec)
  33554432 bytes transferred in 0.062933 seconds (533176451 bytes/sec)
 
  Here's the same thing from kvm-28 (~80 seconds on my wristwatch):
  33554432 bytes transferred in 38.607065 seconds (869127 bytes/sec)
  33554432 bytes transferred in 22.274318 seconds (1506418 bytes/sec)
 
  Same host kernel, same kvm kernel modules (from kvm-28) same guest
  kernel, same command-line options, same disk image.
 
  Any ideas what is going on?

 
 Is this repeatable?  I don't see anything in kvm-27..kvm-28 that 
 warrants such a regression.

Right now, it's completely repeatable

 Things to check:
 
 - effect of pinning the vm onto one cpu (with 'taskset')

Tried this.  No effect that I can see at all.

 - does any counter in kvm_stat behave differently

Nothing really stands out.  The most strange thing to me is that the
counters are very stationary on the slow one.  It doesn't look like it
is spinning on something, just that it is idle.  Its counters during the
dd look very much like the guest does when it is idle:

the slow one:
[EMAIL PROTECTED]:~$ KVM=28 HDA=qemu.raw ./run-qemu -snapshot
idle:
 efer_reload156984 800
 exits  395676 800
 halt_exits   7165 100
 invlpg  0   0
 io_exits   123487 700
 irq_exits1406   0
 irq_window817   0
 light_exits238692   0
 mmio_exits  24716   0
 pf_fixed   130354   0
 pf_guest57309   0
 request_irq 0   0
 signal_exit   781   0
 tlb_flush2267   0

dd'ing (mosly idle?):
 efer_reload197669 856
 exits  455341 856
 halt_exits  11568 100
 invlpg  0   0
 io_exits   159006 740
 irq_exits2125  14
 irq_window975   2
 light_exits257672   0
 mmio_exits  24716   0
 pf_fixed   146646   0
 pf_guest59596   0
 request_irq 0   0
 signal_exit  1383  14
 tlb_flush2455   0

burst during dd:
 efer_reload205387 854
 exits  4651662953
 halt_exits  12471  98
 invlpg  0   0
 io_exits   165605 733
 irq_exits2341  30
 irq_window985   2
 light_exits2597792099
 mmio_exits  24716   0
 pf_fixed   1487312082
 pf_guest59596   0
 request_irq 0   0
33554432 bytes transferred in 20.837575 seconds (1610285 bytes/sec)

the fast one:
$ KVM=27 HDA=qemu.raw ./run-qemu -snapshot
idle:
 efer_reload164333 800
 exits  416798 800
 halt_exits   4570 100
 invlpg  0   0
 io_exits   132855 700
 irq_exits 838   0
 irq_window   2037   0
 light_exits252465   0
 mmio_exits  24716   0
 pf_fixed   130325   0
 pf_guest57275   0
 request_irq 0   0
 signal_exit   127   0
 tlb_flush1864   0

during dd:
 efer_reload243917   29963
 exits  523608   34205
 halt_exits   6766   0
 invlpg  0   0
 io_exits   207716   28730
 irq_exits1079  52
 irq_window   45251232
 light_exits2796954235
 mmio_exits  24716   0
 pf_fixed   1486564177
 pf_guest59560   0
 request_irq 0   0
 signal_exit   154   7
 tlb_flush2043   8
33554432 bytes transferred in 0.100797 seconds (332891147 bytes/sec)

 If you are using qcow, maybe the effect is due to the first test hitting 
 a hole and the second being forced to read from disk.  I recommend doing 
 performance tests from a real partition or volume.

I switched over to a raw image, and used -snapshot.  I don't have the
disk space to give them their own partitions right now.  

-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] kvm-27 host oopses

2007-07-02 Thread Dave Hansen
I had a host running kvm-27 oops on me last week.  The system had been
up for about 2 weeks, and had probably run and stopped at least a couple
hundred kvm guests.  I don't think it is very reproducible, but here it
is anyway.  The host is running 2.6.20.4.  

Here's the actual BUG_ON() that was hit:

static void *mmu_memory_cache_alloc(struct kvm_mmu_memory_cache *mc,
size_t size)
{
void *p;

BUG_ON(!mc-nobjs);
p = mc-objects[--mc-nobjs];
memset(p, 0, size);
return p;
}

There were several oopses in there, but I think probably on the first
one is of any real interest.

Jun 29 06:40:45 elm3b173 kernel: [982460.818197] [ cut here 
]
Jun 29 06:40:45 elm3b173 kernel: [982460.827716] kernel BUG at 
/home/dave/kvm-27/kernel/mmu.c:276!
Jun 29 06:40:45 elm3b173 kernel: [982460.841230] invalid opcode:  [1] SMP 
Jun 29 06:40:45 elm3b173 kernel: [982460.849587] CPU 0 
Jun 29 06:40:45 elm3b173 kernel: [982460.853928] Modules linked in: kvm_intel 
kvm aic94xx
Jun 29 06:40:45 elm3b173 kernel: [982460.864257] Pid: 11430, comm: 
qemu-system-x86 Not tainted 2.6.20.4 #6
Jun 29 06:40:45 elm3b173 kernel: [982460.877419] RIP: 
0010:[_end+124740199/2127394328]  [_end+124740199/2127394328] 
:kvm:mmu_memory_cache_alloc+0xf/0x40
Jun 29 06:40:45 elm3b173 kernel: [982460.896268] RSP: 0018:810129485548  
EFLAGS: 00010246
Jun 29 06:40:45 elm3b173 kernel: [982460.907199] RAX:  RBX: 
8101d49cf820 RCX: 0002
Jun 29 06:40:45 elm3b173 kernel: [982460.921831] RDX:  RSI: 
0050 RDI: 8101f9ad24e8
Jun 29 06:40:45 elm3b173 kernel: [982460.936469] RBP: 810129485558 R08: 
 R09: 
Jun 29 06:40:45 elm3b173 kernel: [982460.951101] R10: 8100504f4000 R11: 
1000 R12: 8101f9ad2128
Jun 29 06:40:45 elm3b173 kernel: [982460.965739] R13:  R14: 
8101f9ad1990 R15: 8101f9ad2128
Jun 29 06:40:45 elm3b173 kernel: [982460.980375] FS:  2ba55b51fa00() 
GS:807d4000() knlGS:
Jun 29 06:40:45 elm3b173 kernel: [982460.996918] CS:  0010 DS: 002b ES: 002b 
CR0: 80050033
Jun 29 06:40:45 elm3b173 kernel: [982461.008690] CR2: b7f3e884 CR3: 
0001d37b CR4: 26e0
Jun 29 06:40:45 elm3b173 kernel: [982461.023339] Process qemu-system-x86 (pid: 
11430, threadinfo 810129484000, task 8102172900c0)
Jun 29 06:40:45 elm3b173 kernel: [982461.041972] Stack:  810088fd31e0 
8101d49cf820 810129485588 8801f1d8
Jun 29 06:40:45 elm3b173 kernel: [982461.058500]  81019896fefc 
8101d49cf820 0322 270d
Jun 29 06:40:45 elm3b173 kernel: [982461.073776]  8101294855c8 
8801f5ea  8101f9ad2128
Jun 29 06:40:45 elm3b173 kernel: [982461.088592] Call Trace:
Jun 29 06:40:45 elm3b173 kernel: [982461.094248]  [_end+124741616/2127394328] 
:kvm:kvm_mmu_alloc_page+0x38/0x110
Jun 29 06:40:45 elm3b173 kernel: [982461.107243]  [_end+124742658/2127394328] 
:kvm:kvm_mmu_get_page+0xda/0x150
Jun 29 06:40:45 elm3b173 kernel: [982461.119888]  [_end+124744897/2127394328] 
:kvm:mmu_alloc_roots+0xf9/0x190
Jun 29 06:40:45 elm3b173 kernel: [982461.132360]  [_end+124745400/2127394328] 
:kvm:paging_new_cr3+0x30/0x60
Jun 29 06:40:45 elm3b173 kernel: [982461.144467]  [_end+124724233/2127394328] 
:kvm:set_cr3+0xb1/0xd0
Jun 29 06:40:45 elm3b173 kernel: [982461.155369]  [_end+124818018/2127394328] 
:kvm_intel:handle_cr+0xba/0x1d0
Jun 29 06:40:45 elm3b173 kernel: [982461.167839]  [_end+124819078/2127394328] 
:kvm_intel:kvm_handle_exit+0x7e/0xb0
Jun 29 06:40:45 elm3b173 kernel: [982461.181163]  [_end+124819740/2127394328] 
:kvm_intel:vmx_vcpu_run+0x224/0x2d0
Jun 29 06:40:45 elm3b173 kernel: [982461.194314]  [_end+124732211/2127394328] 
:kvm:kvm_vcpu_ioctl_run+0xfb/0x140
Jun 29 06:40:45 elm3b173 kernel: [982461.207305]  [_end+124736555/2127394328] 
:kvm:kvm_vcpu_ioctl+0x113/0x420
Jun 29 06:40:45 elm3b173 kernel: [982461.219779]  [__alloc_pages+100/768] 
__alloc_pages+0x64/0x300
Jun 29 06:40:45 elm3b173 kernel: [982461.231031]  [find_busiest_group+673/1856] 
find_busiest_group+0x2a1/0x740
Jun 29 06:40:45 elm3b173 kernel: [982461.243319]  
[find_next_zero_string+39/128] find_next_zero_string+0x27/0x80
Jun 29 06:40:45 elm3b173 kernel: [982461.255772]  [iommu_range_alloc+40/208] 
iommu_range_alloc+0x28/0xd0
Jun 29 06:40:45 elm3b173 kernel: [982461.267531]  [iommu_alloc+134/208] 
iommu_alloc+0x86/0xd0
Jun 29 06:40:45 elm3b173 kernel: [982461.278256]  [calgary_map_single+75/128] 
calgary_map_single+0x4b/0x80
Jun 29 06:40:45 elm3b173 kernel: [982461.290199]  
[tg3_start_xmit_dma_bug+1215/1344] tg3_start_xmit_dma_bug+0x4bf/0x540
Jun 29 06:40:45 elm3b173 kernel: [982461.303175]  [dev_hard_start_xmit+131/256] 
dev_hard_start_xmit+0x83/0x100
Jun 29 06:40:45 elm3b173 kernel: [982461.315457]  [__qdisc_run+83/480] 
__qdisc_run+0x53/0x1e0
Jun 29 

Re: [kvm-devel] kvm-27 host oopses

2007-07-02 Thread Dave Hansen
On Mon, 2007-07-02 at 20:58 +0200, Luca wrote:
 
 MMU working memory was exhausted during a guest context switch. It has
 been fixed by:
 
 KVM: Lazy guest cr3 switching
 4b82b37a35a085a07d9ed84efee06c69655fd3d1
 
 which is included in KVM-28. 

OK, I'll give kvm-28 a shot.  Thanks for the help!

-- Dave


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel