Re: [kvm-devel] kernel BUG at drivers/virtio/virtio_ring.c:218!

2008-04-06 Thread Rusty Russell
On Sunday 06 April 2008 00:53:39 Balaji Rao wrote:
 On Friday 04 April 2008 01:46:21 pm Balaji Rao wrote:
  Hi Rusty,
 
  I hit a bug in virtio_ring.c:218 when I was stressing virtio_net using
  kvm with -smp 4.
 
  static void vring_disable_cb(struct virtqueue *_vq)
  {
  struct vring_virtqueue *vq = to_vvq(_vq);
 
  START_USE(vq);
  --BUG_ON(vq-vring.avail-flags  VRING_AVAIL_F_NO_INTERRUPT);
  vq-vring.avail-flags |= VRING_AVAIL_F_NO_INTERRUPT;
  END_USE(vq);
  }
 
  Going through the source code, I felt that this BUG_ON is not required as
  any CPU could race and call disable_cb when one cpu still believes that
  its enabled. To validate my understanding, I commented out the BUG_ON and
  everything worked perfectly well.
 
  I also get a lot of Unlikely: restart svq race on my console. Under
  high load conditions, a race could occur very often and I'm not sure if
  that signals a buggy situation. We could printk_ratelimit if at all we
  need to retain it.
 
  If you agree, I'll send a patch to this.

 Christian Borntraeger CCed.

Hi Balaji,

Interesting case can you put a '#define DEBUG' at the top of 
drivers/virtio/virtio_ring.c and re-run?

The reason we don't simply remove that check is that interrupt bugs are nasty 
to track down, usually leading to performance problems rather than outright 
breakage.

Thanks!
Rusty.

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] Need info on guest swapping and other things in KVM

2008-04-06 Thread Avi Kivity
Arjun wrote:
 Hi Folks,

 A fellow student and I wish to do run some experiments with KVM. 
 Specifically, we would like to examine
 KVM's guest paging/swapping mechanism, make some changes and run some 
 tests. After a brief search through
 the docs and code, we would greatly appreciate help with the following:

 1) Guest Paging : What is the selection mechanism used by KVM for 
 evicting a guest's page ?

With mmu notifiers (not yet merged), pages are picked by the normal 
Linux LRU mechanism.

 What if there are any conflicts between host and guest as to which 
 page to evict ?


I don't understand this question.

 2) Where can we find the code for the above (guest paging).

It's the normal Linux swapping code.


 3) Are the KVM guests scheduled by the (hosts) standard linux 
 scheduler ? It appears that this
 is the case but I want to be sure.

Yes.


 4) Have there been any changes to the host's page/buffer cache ? Are 
 there any changes planned ?


Yes, mmu notifiers.  This doesn't change pagecache, but rather allows 
kvm's shadow mmu to be synchronized to the main Linux mmu, which is what 
allows page eviction and page aging to work.

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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] kernel BUG at drivers/virtio/virtio_ring.c:218!

2008-04-06 Thread Balaji Rao
On Sunday 06 April 2008 12:56:33 pm Rusty Russell wrote:
 On Sunday 06 April 2008 00:53:39 Balaji Rao wrote:
  On Friday 04 April 2008 01:46:21 pm Balaji Rao wrote:
   Hi Rusty,
  
   I hit a bug in virtio_ring.c:218 when I was stressing virtio_net using
   kvm with -smp 4.
  
   static void vring_disable_cb(struct virtqueue *_vq)
   {
   struct vring_virtqueue *vq = to_vvq(_vq);
  
   START_USE(vq);
   --BUG_ON(vq-vring.avail-flags  VRING_AVAIL_F_NO_INTERRUPT);
   vq-vring.avail-flags |= VRING_AVAIL_F_NO_INTERRUPT;
   END_USE(vq);
   }
  
   Going through the source code, I felt that this BUG_ON is not required as
   any CPU could race and call disable_cb when one cpu still believes that
   its enabled. To validate my understanding, I commented out the BUG_ON and
   everything worked perfectly well.
  
   I also get a lot of Unlikely: restart svq race on my console. Under
   high load conditions, a race could occur very often and I'm not sure if
   that signals a buggy situation. We could printk_ratelimit if at all we
   need to retain it.
  
   If you agree, I'll send a patch to this.
 
  Christian Borntraeger CCed.
 
 Hi Balaji,
 
 Interesting case can you put a '#define DEBUG' at the top of 
 drivers/virtio/virtio_ring.c and re-run?
 
 The reason we don't simply remove that check is that interrupt bugs are nasty 
 to track down, usually leading to performance problems rather than outright 
 breakage.
 
Hi Rusty,

Here's the output with #define DEBUG. As soon as I start netperf on the remote 
machine, the guest panics.

sh-3.2# [   40.053295] Unlikely: restart svq race
[   39.999687] Unlikely: restart svq race
[   40.000687] [ cut here ]
[   40.001885] kernel BUG at drivers/virtio/virtio_ring.c:219!
[   40.003401] invalid opcode:  [#1] SMP DEBUG_PAGEALLOC
[   40.003670] Modules linked in:
[   40.003670] 
[   40.003670] Pid: 1553, comm: netserver Not tainted (2.6.25-rc7 #19)
[   40.003670] EIP: 0060:[c03a4c22] EFLAGS: 00010202 CPU: 3
[   40.003670] EIP is at vring_disable_cb+0x2c/0x4e
[   40.003670] EAX: f7570430 EBX: c0616a64 ECX: f74e8800 EDX: 0001
[   40.003670] ESI: f6c45000 EDI: f75d8c80 EBP: f6c879e0 ESP: f6c879e0
[   40.003670]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[   40.003670] Process netserver (pid: 1553, ti=f6c86000 task=f6cf 
task.ti=f6c86000)
[   40.003670] Stack: f6c87b94 c0319cde c059fe55 f75d8840 0002 c16da8a2 
0020 000a 
[   40.003670]  c16fb8a2 0b8e 0042  
  
[   40.003670]      
  
[   40.003670] Call Trace:
[   40.003670]  [c0319cde] ? start_xmit+0x1c6/0x209
[   40.003670]  [c0434104] ? ipt_route_hook+0x18/0x1d
[   40.003670]  [c03e8a7f] ? dev_hard_start_xmit+0x204/0x272
[   40.003670]  [c04086b2] ? ip_finish_output+0x0/0x201
[   40.003670]  [c03f77cb] ? __qdisc_run+0x78/0x15a
[   40.003670]  [c03ead5f] ? dev_queue_xmit+0x17e/0x28b
[   40.003670]  [c040887b] ? ip_finish_output+0x1c9/0x201
[   40.003670]  [c0408b50] ? ip_output+0x7e/0x83
[   40.003670]  [c04083eb] ? ip_local_out+0x18/0x1b
[   40.003670]  [c0408e5d] ? ip_queue_xmit+0x278/0x2b9
[   40.003670]  [c01729d6] ? check_object+0x139/0x18f
[   40.003670]  [c017351b] ? __slab_alloc+0x3d7/0x467
[   40.003670]  [c041af67] ? tcp_v4_send_check+0x7d/0xb7
[   40.003670]  [c0416d9d] ? tcp_transmit_skb+0x618/0x64b
[   40.003670]  [c01741ed] ? __kmalloc_track_caller+0x7d/0xcb
[   40.003670]  [c0416e69] ? tcp_send_ack+0x25/0xb6
[   40.003670]  [c03e43db] ? __alloc_skb+0x4f/0xfd
[   40.003670]  [c0416ef2] ? tcp_send_ack+0xae/0xb6
[   40.003670]  [c0414a11] ? __tcp_ack_snd_check+0x5e/0x73
[   40.003670]  [c0415f1b] ? tcp_rcv_established+0x5f1/0x652
[   40.003670]  [c0478e85] ? _spin_lock_bh+0xb/0x22
[   40.003670]  [c041a973] ? tcp_v4_do_rcv+0x28/0x18d
[   40.003670]  [c040d2b6] ? tcp_prequeue_process+0x52/0x66
[   40.003670]  [c040f236] ? tcp_recvmsg+0x32a/0x6af
[   40.003670]  [c03e0667] ? sock_common_recvmsg+0x31/0x4a
[   40.003670]  [c03df11d] ? sock_recvmsg+0xe9/0x105
[   40.003670]  [c01181c0] ? kvm_mmu_write+0x2f/0x31
[   40.003670]  [c01370d6] ? autoremove_wake_function+0x0/0x33
[   40.003670]  [c011833d] ? kvm_set_pte_at+0x43/0x4b
[   40.003670]  [c015481f] ? unlock_page+0x25/0x28
[   40.003670]  [c015fe85] ? __do_fault+0x3fa/0x436
[   40.003670]  [c0478e20] ? _spin_unlock_bh+0xd/0xf
[   40.003670]  [c03dfe09] ? sys_recvfrom+0x7b/0xbd
[   40.003670]  [c01393f2] ? hrtimer_forward+0xd7/0xed
[   40.003670]  [c0123848] ? scheduler_tick+0x1ac/0x26d
[   40.003670]  [c013b414] ? getnstimeofday+0x2f/0xb4
[   40.003670]  [c03dfe63] ? sys_recv+0x18/0x1a
[   40.003670]  [c03e01d1] ? sys_socketcall+0x10a/0x186
[   40.003670]  [c012b547] ? irq_exit+0x53/0x6b
[   40.003670]  [c0107b1e] ? syscall_call+0x7/0xb
[   40.003670]  [c047] ? serial8250_remove+0x31/0x35
[   40.003670]  ===
[   40.003670] 

Re: [kvm-devel] [patch 4/4] QEMU/KVM: dont read any bits from userspace APIC emulation if its done in-kernel

2008-04-06 Thread Avi Kivity
Marcelo Tosatti wrote:
 Fixes loadvm/savem on SMP.

 Signed-off-by: Marcelo Tosatti [EMAIL PROTECTED]

 Index: kvm-userspace.io/qemu/hw/apic.c
 ===
 --- kvm-userspace.io.orig/qemu/hw/apic.c
 +++ kvm-userspace.io/qemu/hw/apic.c
 @@ -248,8 +248,11 @@ void cpu_set_apic_base(CPUState *env, ui
  #ifdef DEBUG_APIC
  printf(cpu_set_apic_base: %016 PRIx64 \n, val);
  #endif
 -s-apicbase = (val  0xf000) |
 -(s-apicbase  (MSR_IA32_APICBASE_BSP | MSR_IA32_APICBASE_ENABLE));
 +if (kvm_enabled()  qemu_kvm_irqchip_in_kernel())
 +s-apicbase = val;
 +else
 +s-apicbase = (val  0xf000) |
 +(s-apicbase  (MSR_IA32_APICBASE_BSP | 
 MSR_IA32_APICBASE_ENABLE));
  /* if disabled, cannot be enabled again */
  if (!(val  MSR_IA32_APICBASE_ENABLE)) {
  s-apicbase = ~MSR_IA32_APICBASE_ENABLE;

   

Can you explain how the existing code fails?

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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [Patch][00/18] kvm-ia64 for kernel V10

2008-04-06 Thread Avi Kivity
Zhang, Xiantao wrote:
 Compared with V9, just fixed indentation issues  in patch 12. I put it
 the patchset in
 git://git.kernel.org/pub/scm/linux/kernel/git/xiantao/kvm-ia64.git
 kvm-ia64-mc10. Please help to review.
 Specially, the first two patches (TR Management patch and
 smp_call_function_mask patch) needs Tony's review and Ack. Thanks:-)
   

Rebased and merged the latest version into kvm.git.  Thanks.


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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [patch 1/4] QEMU/KVM: only use KVM apic registers if vm is running

2008-04-06 Thread Avi Kivity
Marcelo Tosatti wrote:
 In the -incoming case the apic regs are not initialized and therefore
 bogus.

 Signed-off-by: Marcelo Tosatti [EMAIL PROTECTED]

 Index: kvm-userspace.io/qemu/qemu-kvm-x86.c
 ===
 --- kvm-userspace.io.orig/qemu/qemu-kvm-x86.c
 +++ kvm-userspace.io/qemu/qemu-kvm-x86.c
 @@ -27,6 +27,8 @@ static int kvm_has_msr_star;
  
  static int lm_capable_kernel;
  
 +extern int vm_running;
 +
  int kvm_arch_qemu_create_context(void)
  {
  int i;
 @@ -248,7 +250,7 @@ void kvm_arch_load_regs(CPUState *env)
  sregs.cr3 = env-cr[3];
  sregs.cr4 = env-cr[4];
  
 -if (kvm_irqchip_in_kernel(kvm_context)) {
 +if (kvm_irqchip_in_kernel(kvm_context)  vm_running) {
  sregs.cr8 = kvm_get_cr8(kvm_context, env-cpu_index);
  sregs.apic_base = kvm_get_apic_base(kvm_context, env-cpu_index);
  } else {
   

Fishy.   What if the vm is stopped using the monitor?

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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [patch 3/4] QEMU/KVM: ignore SIG_IPI signals in userspace

2008-04-06 Thread Avi Kivity
Marcelo Tosatti wrote:
 Otherwise a signal can be received in userspace and a vcpu goes back
 to the kernel while it should stay still.

 Signed-off-by: Marcelo Tosatti [EMAIL PROTECTED]

 Index: kvm-userspace.io/qemu/qemu-kvm.c
 ===
 --- kvm-userspace.io.orig/qemu/qemu-kvm.c
 +++ kvm-userspace.io/qemu/qemu-kvm.c
 @@ -350,7 +350,6 @@ static void *ap_main_loop(void *_env)
  vcpu-env = env;
  vcpu-env-thread_id = kvm_get_thread_id();
  sigfillset(signals);
 -sigdelset(signals, SIG_IPI);
  sigprocmask(SIG_BLOCK, signals, NULL);
  kvm_create_vcpu(kvm_context, env-cpu_index);
  kvm_qemu_init_env(env);

   

Does this work with -no-kvm-irqchip?

I think we need to fix the kernel to handle random signals.  Otherwise 
even attaching a debugger can change guest behavior (I think).

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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] Don't assume struct page for x86 MMU

2008-04-06 Thread Avi Kivity
Anthony Liguori wrote:
 This patch introduces a gfn_to_pfn() function and corresponding functions like
 kvm_release_pfn_dirty().  Using these new functions, we can modify the x86
 MMU to no longer assume that it can always get a struct page for any given 
 gfn.

 We don't want to eliminate gfn_to_page() entirely because a number of places
 assume they can do gfn_to_page() and then kmap() the results.  When we support
 IO memory, gfn_to_page() will fail for IO pages although gfn_to_pfn() will
 succeed.

 This does not implement support for avoiding reference counting for reserved
 RAM or for IO memory.  However, it should make those things pretty straight
 forward.

 Since we're only introducing new common symbols, I don't think it will break
 the non-x86 architectures but I haven't tested those.  I've tested Intel,
 AMD, NPT, and hugetlbfs with Windows and Linux guests.

   

Applied, thanks.

 @ -1089,7 +1086,7 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 
 *shadow_pte,
   if (largepage)
   spte |= PT_PAGE_SIZE_MASK;
  
 - spte |= page_to_phys(page);
 + spte |= (pfn  PAGE_SHIFT);
   

This overflows on i386 with =4GB RAM.  I fixed it before committing.


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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANN] Bochs bios ported to gcc

2008-04-06 Thread Avi Kivity
Kevin O'Connor wrote:
 I have been working on a port of bochs bios to gcc.  This port is
 nearly complete.  The new code does not rely on bcc or dev86.
 Instead, it uses standard gcc and gas.  It should compile on any
 recent Linux distribution.

 I'm sending this email because I understand kvm has a copy of bochs
 bios in its repository.
   

While moving away from the horror that is bcc is a blessing, the way to 
really benefit from it is to have this code replace the original bochs 
bios.  This way updates to the bochs bios are not lost for anyone using 
the new code.

Have you proposed replacing the bios to the bochs developers?  What was 
the reaction?

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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANN] Bochs bios ported to gcc

2008-04-06 Thread Kevin O'Connor
On Sun, Apr 06, 2008 at 03:05:11PM +0300, Avi Kivity wrote:
 Kevin O'Connor wrote:
 I have been working on a port of bochs bios to gcc.

 While moving away from the horror that is bcc is a blessing, the way to 
 really benefit from it is to have this code replace the original bochs 
 bios.  This way updates to the bochs bios are not lost for anyone using the 
 new code.

I agree.  I've been interacting with the bochs developers since I
started (about a month and half ago).

 Have you proposed replacing the bios to the bochs developers?  What was the 
 reaction?

The reaction was pretty quiet.  The bochs project is not nearly as
active as kvm, and the bios is just one small part of that project.

Now that the new code can actually launch a wide variety of payloads,
I'm hoping there will be more interest.

BTW, if anyone is interested in testing, please grab the 0.2.1 version
- the v0.2.0 version had a nasty bug on disk writes to large disks
(assuming one uses an OS that writes to disk via the bios).

-Kevin

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] KVM developer forum 2008 - registration is now open

2008-04-06 Thread Rami Tamir
The registration site for KVM developer forum 2008 is now open
(http://kforum.qumranet.com/KVMForum/register_now.php )

The participation fee is US$ 695 for early bird subscribers up to May
1st, 2008. After May 1st 2008, the participation fee is US$ 790. 

Developers whose registration fee is not paid by an employer or
organization can attend for free. Please contact the event team if you
are interested in registering as an unaffiliated attendee.

To get more details and register please go to:
http://kforum.qumranet.com/KVMForum/about_kvmforum.php

See you all there.
Rami


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] Great deals for luxury items

2008-04-06 Thread hossein
I want to pamper myself today, but I do not want to burn a hole in my pocket, 
so I tried this. http://www.fleckoatin.com/

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [Qemu-devel] [PATCH 2/6] PCI DMA API (v2)

2008-04-06 Thread andrzej zaborowski
On 06/04/2008, Anthony Liguori [EMAIL PROTECTED] wrote:
 Blue Swirl wrote:
   To support Sparc IOMMU and DMA controller
  I need a way to call a series of different translation functions
  depending on the bus where we are. For the byte swapping case the
  memcpy functions must be dynamic as well.

  Does DMA really byte-swap?  I know PCI controllers byte swap within the
 configuration space but I didn't think they byte-swapped DMA transfers.  I'm
 not even sure how that would work.

As a note, the DMA controllers in the ARM system-on-chip's can
byte-swap, do 90deg rotation of 2D arrays, transparency (probably
intened for image blitting, but still available on any kind of
transfers), etc., and most importantly issue interrupts on reaching
different points of a transfer.  It is not worth worrying about them
in this API.  I have been for some time wanting to make a separate api
called soc_dma whose task would be using simply memcpy (or zero-copy)
in the most basic case (interrupts off, no transparency,
same-endianness endpoints), as these properties are common for DMA on
the TI OMAPs, the Intel PXAs and the Samsung S3Cs (which otherwise
have little in common).

Cheers
-- 
Please do not print this email unless absolutely necessary. Spread
environmental awareness.

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [Qemu-devel] [PATCH 2/6] PCI DMA API (v2)

2008-04-06 Thread Anthony Liguori
andrzej zaborowski wrote:
 On 06/04/2008, Anthony Liguori [EMAIL PROTECTED] wrote:
   
 Blue Swirl wrote:
 
  To support Sparc IOMMU and DMA controller
 I need a way to call a series of different translation functions
 depending on the bus where we are. For the byte swapping case the
 memcpy functions must be dynamic as well.
   
  Does DMA really byte-swap?  I know PCI controllers byte swap within the
 configuration space but I didn't think they byte-swapped DMA transfers.  I'm
 not even sure how that would work.
 

 As a note, the DMA controllers in the ARM system-on-chip's can
 byte-swap, do 90deg rotation of 2D arrays, transparency (probably
 intened for image blitting, but still available on any kind of
 transfers), etc., and most importantly issue interrupts on reaching
 different points of a transfer.  It is not worth worrying about them
 in this API.  I have been for some time wanting to make a separate api
 called soc_dma whose task would be using simply memcpy (or zero-copy)
 in the most basic case (interrupts off, no transparency,
 same-endianness endpoints), as these properties are common for DMA on
 the TI OMAPs, the Intel PXAs and the Samsung S3Cs (which otherwise
 have little in common).
   

Wow.  So this attempt clearly doesn't encompass all of these features, 
but I don't think anything about it makes it more difficult to implement 
an API capable of doing these things.  It introduces an IOVector which 
is an abstraction of a DMA request, and the devices for the most part 
access the vector with copying functions.  We'll have to have a dual mode.

This is why I had a PhysIOVector and IOVector in my original patch.  
Passing physical addresses to the block/net backends insist on a dual 
mode.  One where it can map those addresses directly and another where 
it perform IO to a temporary location and then calls to some other code 
to copy the data.

When you have the PCI device generate an IOVector containing virtual 
addresses, the PCI device itself can decide whether to pass through 
direct mappings of the guests memory or a temporary buffer.  It can then 
perform whatever transformations it needs on unmapping.

So I think we can either ignore these transformations for now and go 
with the current API or go back to the former API which would allow 
transformations but that Paul wasn't a big fan of.

Regards,

Anthony Liguori

 Cheers
   


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] problem using kvm-guest-drivers

2008-04-06 Thread Nikola Ciprich
Hi Dennis,
thanks a lot for Your reply, the problem really was that I didn't know 
that virtio_pci module is also needed.
I'm not using LVM in guests, but it's good to know recent version would be 
needed for such case.
BR
nik.


On Sun, 6 Apr 2008, Dennis Jacobfeuerborn wrote:

 Nikola Ciprich wrote:
 Hello,
 I'm trying to get virtio_blk working, but I can't figure what am I doing
 wrong...

 You'll probably have to build a new initrd image in the guest adding the
 following options to the mkinitrd call:
 --with=virtio_pci --with=virtio_blk

 This makes sure that the guest will find the virtual devices when booting.

 If you use LVM volume groups in the guest then you also need to make sure
 that you use a *very* recent version of the lvm2 package (not older than a
 month) because older versions don't scan the virtual block devices for
 volume groups due to a name change.

 Regards,
   Dennis

 -
 This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
 Register now and save $200. Hurry, offer ends at 11:59 p.m.,
 Monday, April 7! Use priority code J8TLD2.
 http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
 ___
 kvm-devel mailing list
 kvm-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/kvm-devel



-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [ANNOUNCE] kvm-65 release

2008-04-06 Thread Avi Kivity
The big item (in more ways than one) for this release is the addition of 
s390 support.  As it is not actually provided in the tarball, you will 
need to use git to fetch it.  You will also need a mainframe.

On x86, the most interesting change is the separation of timer and I/O 
completion handling into a separate thread (these used to be serviced by 
the same thread that executed vcpu 0).  The change should result in 
improved responsiveness and better smp performance.

Changes from kvm-64:
- fix hotplug build for non-x86 (Xiantao Zhang)
- ignore reads from the apic EOI register (Glauber Costa)
   - fixes Linux 2.6.25-rclate bootup problems
- compile fixes (Carlo Marcelo Arenas Belon)
- fix ftruncate() on hugetlbfs use on older Linux hosts (Marcelo Tosatti)
- endianness fix virtio-block (Anthony Liguori)
   - fixes virtio-blk on ppc
- refactor in-kernel PIT to be a separate device (Anthony Liguori)
- separate thread for I/O completions and timers (Marcelo Tosatti)
- fix vmmouse smp (Anthony Liguori)
- fix loading uninitialized variable into apic registers (Marcelo Tosatti)
   - fixes apic being disabled on smp Linux guests running X
- disable kvm clock on Voyager or SGI Visual WS (Randy Dunlap)
- s390 support (Carsten Otte, Martin Schwidefsky, Christian Borntraeger,
 Heiko Carstens)
- fix large pages (Marcelo Tosatti)
- speedup msr processing on Intel via msr bitmap (Sheng Yang)
- add slab shrinker support (Izik Eidus)
   - reduces nonswappable footprint under memory pressure
- code cleanup (Joerg Roedel)
- vm refcounting (Izik Eidus)
- only mark a page as accessed if it was really accessed by the guest
- drop slots_lock while in guest mode
   - fixes long latencies with iothread
- prepopulate guest pages only after write-protecting them (Marcelo Tosatti)
   - fixes smp race leading to guest spinning

Notes:
  If you use the modules bundled with kvm-65, you can use any version
of Linux from 2.6.17 upwards.
  If you use the modules bundled with Linux 2.6.20, you need to use
kvm-12.
  If you use the modules bundled with Linux 2.6.21, you need to use
kvm-17.
  Modules from Linux 2.6.22 and up will work with any kvm version from
kvm-22.  Some features may only be available in newer releases.
  For best performance, use Linux 2.6.23-rc2 or later as the host.

http://kvm.qumranet.com


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Nikola Ciprich
Hi,
I spent some time trying to tune performance of KVM guest using kernel 
compilation as a kind of benchmark (I'm using virtual machines for 
compiling a lot, so it's good benchmark for me in general)

Host machine: 2x quad core XEON E5420  @ 2.50GHz, 4GB RAM, 2.6.24 + kvm-64
guest configuration: all 8 cores available, 2GB  RAM, 2.6.24 or latest GIT 
+ kvm-64

some results:
- compilation in KVM guest is roughly 2x slower than on bare metal.
- trying various block device backends (ide, scsi, virtio_blk) didn't 
really matter much for my case
- enabling CONFIG_KVM_GUEST under latest GIT with kvm-64 patch applied 
decreased compile time by about 10%, which is nice!
- enabling CONFIG_KVM_CLOCK made guest unstable, often unable to finish 
booting at all, disabling acpi made it a bit better, but still quite 
unstable (cpu0 lock-ups, etc)

Is there currently anything more I could do to improve performance? I'm 
wandering what is slowing compilation, if I compare some CPU intensive 
application (ie bzip2), it seems to run in nearly native speed, but kernel 
compilation is much slower even if run from ramdisk, maybe it could be 
improved further by tunning scheduler etc?

anyways keep up the good work!
cheers!
nik


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Dor Laor

On Sun, 2008-04-06 at 21:56 +0200, Nikola Ciprich wrote:
 Hi,
 I spent some time trying to tune performance of KVM guest using kernel 
 compilation as a kind of benchmark (I'm using virtual machines for 
 compiling a lot, so it's good benchmark for me in general)
 
 Host machine: 2x quad core XEON E5420  @ 2.50GHz, 4GB RAM, 2.6.24 + kvm-64
 guest configuration: all 8 cores available, 2GB  RAM, 2.6.24 or latest GIT 
 + kvm-64
 
 some results:
 - compilation in KVM guest is roughly 2x slower than on bare metal.
 - trying various block device backends (ide, scsi, virtio_blk) didn't 
 really matter much for my case
 - enabling CONFIG_KVM_GUEST under latest GIT with kvm-64 patch applied 
 decreased compile time by about 10%, which is nice!
 - enabling CONFIG_KVM_CLOCK made guest unstable, often unable to finish 
 booting at all, disabling acpi made it a bit better, but still quite 
 unstable (cpu0 lock-ups, etc)
 
 Is there currently anything more I could do to improve performance? I'm 
 wandering what is slowing compilation, if I compare some CPU intensive 
 application (ie bzip2), it seems to run in nearly native speed, but kernel 
 compilation is much slower even if run from ramdisk, maybe it could be 
 improved further by tunning scheduler etc?
 

Can you try a non smp guest and check the results?
Also if you do try smp guest, can you pin each thread to a different
physical core and re-test?
Regards,
Dor

 anyways keep up the good work!
 cheers!
 nik
 
 
 -
 This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
 Register now and save $200. Hurry, offer ends at 11:59 p.m., 
 Monday, April 7! Use priority code J8TLD2. 
 http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
 ___
 kvm-devel mailing list
 kvm-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/kvm-devel


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Anthony Liguori
Nikola Ciprich wrote:
 Hi,
 I spent some time trying to tune performance of KVM guest using kernel 
 compilation as a kind of benchmark (I'm using virtual machines for 
 compiling a lot, so it's good benchmark for me in general)

 Host machine: 2x quad core XEON E5420  @ 2.50GHz, 4GB RAM, 2.6.24 + kvm-64
 guest configuration: all 8 cores available, 2GB  RAM, 2.6.24 or latest GIT 
 + kvm-64

 some results:
 - compilation in KVM guest is roughly 2x slower than on bare metal.
 - trying various block device backends (ide, scsi, virtio_blk) didn't 
 really matter much for my case
 - enabling CONFIG_KVM_GUEST under latest GIT with kvm-64 patch applied 
 decreased compile time by about 10%, which is nice!
 - enabling CONFIG_KVM_CLOCK made guest unstable, often unable to finish 
 booting at all, disabling acpi made it a bit better, but still quite 
 unstable (cpu0 lock-ups, etc)

 Is there currently anything more I could do to improve performance? I'm 
 wandering what is slowing compilation, if I compare some CPU intensive 
 application (ie bzip2), it seems to run in nearly native speed, but kernel 
 compilation is much slower even if run from ramdisk, maybe it could be 
 improved further by tunning scheduler etc?
   

I would think you should get about 70% of native with what you've done 
about.  I've not seen instabilities with CONFIG_KVM_CLOCK myself.

Setting up a hugetlbfs mount and using -mem-path may give you a bit of a 
bump too but I'd be surprised if it was more than 5%

The next biggest win you're going to see is using NPT (available in the 
recent AMD Barcelona/Phenom processors).   NPT + hugetblfs should get 
you pretty close to native (I'd reckon 95-98%).

On the Intel side of things, you'll have to wait until the Nehalem which 
will support EPT (which is Intel's version of NPT).

Can you be specific about your guest configurations?  Are you using -smp 8?

Regards,

Anthony Liguori

 anyways keep up the good work!
 cheers!
 nik


 -
 This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
 Register now and save $200. Hurry, offer ends at 11:59 p.m., 
 Monday, April 7! Use priority code J8TLD2. 
 http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
 ___
 kvm-devel mailing list
 kvm-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/kvm-devel
   


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Nikola Ciprich
Hi Anthony!
Anthony Liguori wrote:
 I would think you should get about 70% of native with what you've done 
 about.  I've not seen instabilities with CONFIG_KVM_CLOCK myself.

 Setting up a hugetlbfs mount and using -mem-path may give you a bit of 
 a bump too but I'd be surprised if it was more than 5%
I've tried it now, and starting kvm with -mem-path pointing to hugetlbfs 
mounted dir immediately fails and I see following message in dmesg of host:
VM: killing process qemu-system-x86
pointing to tmpfs mounted dir seems to work, I'll measure performance 
gain...


 The next biggest win you're going to see is using NPT (available in 
 the recent AMD Barcelona/Phenom processors).   NPT + hugetblfs should 
 get you pretty close to native (I'd reckon 95-98%).
Yup, it seemed to me  that kvm performes WAY better on my phenom based 
home desktop! I'll check that later too

 On the Intel side of things, you'll have to wait until the Nehalem 
 which will support EPT (which is Intel's version of NPT).

 Can you be specific about your guest configurations?  Are you using 
 -smp 8?
yes, I'm using -smp 8

 Regards,

 Anthony Liguori





-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Anthony Liguori
Nikola Ciprich wrote:
 Hi Anthony!
 Anthony Liguori wrote:
   
 I would think you should get about 70% of native with what you've done 
 about.  I've not seen instabilities with CONFIG_KVM_CLOCK myself.

 Setting up a hugetlbfs mount and using -mem-path may give you a bit of 
 a bump too but I'd be surprised if it was more than 5%
 
 I've tried it now, and starting kvm with -mem-path pointing to hugetlbfs 
 mounted dir immediately fails and I see following message in dmesg of host:
 VM: killing process qemu-system-x86
 pointing to tmpfs mounted dir seems to work, I'll measure performance 
 gain...
   

You won't see a gain with tmpfs.  Make sure you reserve huge pages 
first.  For a 1GB guest, you'll need something like:

echo 540  /proc/sys/vm/nr_hugepages

When you create a VM, you need a bit more memory than 1GB for per-guest 
overhead.  That's why I reserve 540 instead of 512.  You can probably 
get away with 530 really.

Check that it succeeded by cat'ing /proc/meminfo.

 The next biggest win you're going to see is using NPT (available in 
 the recent AMD Barcelona/Phenom processors).   NPT + hugetblfs should 
 get you pretty close to native (I'd reckon 95-98%).
 
 Yup, it seemed to me  that kvm performes WAY better on my phenom based 
 home desktop! I'll check that later too
   

Definitely.  A parallel compile is one of the best case scenarios for 
NPT so you should see the most dramatic improvement there.

 On the Intel side of things, you'll have to wait until the Nehalem 
 which will support EPT (which is Intel's version of NPT).

 Can you be specific about your guest configurations?  Are you using 
 -smp 8?
 
 yes, I'm using -smp 8
   

It's not quite apples to apples then since you're sharing CPUs with the 
host.  Typically, if I'm benchmarking an 8-way system with 2GB of RAM, 
I'll create a 4-way guest with 1GB of RAM and then to generate native 
numbers, reboot the host with maxcpus=4 mem=1G.

Regards,

Anthony Liguori

 Regards,

 Anthony Liguori
 





 -
 This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
 Register now and save $200. Hurry, offer ends at 11:59 p.m., 
 Monday, April 7! Use priority code J8TLD2. 
 http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
 ___
 kvm-devel mailing list
 kvm-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/kvm-devel
   


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Nikola Ciprich
Anthony Liguori wrote:
 You won't see a gain with tmpfs.  Make sure you reserve huge pages 
 first.  For a 1GB guest, you'll need something like:

 echo 540  /proc/sys/vm/nr_hugepages

 When you create a VM, you need a bit more memory than 1GB for 
 per-guest overhead.  That's why I reserve 540 instead of 512.  You can 
 probably get away with 530 really.

 Check that it succeeded by cat'ing /proc/meminfo.

Well, I tried various values now, and booting fails immediately:
Decompressing Linux...

invalid compressed format (err=1)

-- System halted


weird...
anyways I'll also give fresh kvm-65 a try now :)


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Anthony Liguori
Nikola Ciprich wrote:
 Anthony Liguori wrote:
 You won't see a gain with tmpfs.  Make sure you reserve huge pages 
 first.  For a 1GB guest, you'll need something like:

 echo 540  /proc/sys/vm/nr_hugepages

 When you create a VM, you need a bit more memory than 1GB for 
 per-guest overhead.  That's why I reserve 540 instead of 512.  You 
 can probably get away with 530 really.

 Check that it succeeded by cat'ing /proc/meminfo.

 Well, I tried various values now, and booting fails immediately:
 Decompressing Linux...

It's very likely that you won't be able to allocate enough pages to run 
a guest if your system has been running sufficient long and memory is 
highly fragmented.

If you cat /proc/meminfo and HugePages_Free is much less than 540, 
you're not going to be able to create a 1GB guest.  Unfortunately, you 
won't get a failure until the guest tries to use memory.

The only solution is to reboot and reserve huge pages early before they 
get fragmented.

Regards,

Anthony Liguori

 invalid compressed format (err=1)

 -- System halted


 weird...
 anyways I'll also give fresh kvm-65 a try now :)



-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH] qemu: avoid returning uninitialized value in apic_mem_readl

2008-04-06 Thread Carlo Marcelo Arenas Belon
complement 64173d009c1f4d163c425b14aa650df5b982428a to avoid :

  kvm-65/qemu/hw/apic.c: In function `apic_mem_readl':
  kvm-65/qemu/hw/apic.c:592: warning: 'val' might be used uninitialized in this 
function

Signed-off-by: Carlo Marcelo Arenas Belon [EMAIL PROTECTED]
---
 qemu/hw/apic.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/qemu/hw/apic.c b/qemu/hw/apic.c
index 4102493..b69ad75 100644
--- a/qemu/hw/apic.c
+++ b/qemu/hw/apic.c
@@ -616,6 +616,7 @@ static uint32_t apic_mem_readl(void *opaque, 
target_phys_addr_t addr)
 val = apic_get_ppr(s);
 break;
 case 0x0b:
+val = 0;
 break;
 case 0x0d:
 val = s-log_dest  24;
-- 
1.5.3.7


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] Need info on guest swapping and other things in KVM

2008-04-06 Thread Arjun
Avi,
Thanks for your response.

Regarding the query on Guest Swapping, I'm referring to the mechanism that
the KVM host can use to swap out a guest's pages. Since a guest OS will have
its own swapping mechanism, then how will the host ensure that if it choses
to swap out a guest's page, it will not conflict with the guest's own
swapping mechanism.
Put another way: I understand (from docs, mailing list etc.) that KVM allows
the host to overbook/overcommit physical memory via the guest swapping
mechanism. i.e. the guest thinks it has x number of physical pages but
actually the host has swapped out some of the guests pages and given the
freed up physical memory to another guest VM. So the guest actually has less
than x pages in physical memory but doesn't know it.

It possible that my understanding of the way KVM works may be incorrect, in
that case any clarifications would be appreciated.

Thanks again
Arjun



On Sun, Apr 6, 2008 at 3:39 AM, Avi Kivity [EMAIL PROTECTED] wrote:

 Arjun wrote:

  Hi Folks,
 
  A fellow student and I wish to do run some experiments with KVM.
  Specifically, we would like to examine
  KVM's guest paging/swapping mechanism, make some changes and run some
  tests. After a brief search through
  the docs and code, we would greatly appreciate help with the following:
 
  1) Guest Paging : What is the selection mechanism used by KVM for
  evicting a guest's page ?
 

 With mmu notifiers (not yet merged), pages are picked by the normal Linux
 LRU mechanism.

  What if there are any conflicts between host and guest as to which page
  to evict ?
 
 
 I don't understand this question.

  2) Where can we find the code for the above (guest paging).
 

 It's the normal Linux swapping code.


  3) Are the KVM guests scheduled by the (hosts) standard linux scheduler
  ? It appears that this
  is the case but I want to be sure.
 

 Yes.


  4) Have there been any changes to the host's page/buffer cache ? Are
  there any changes planned ?
 
 
 Yes, mmu notifiers.  This doesn't change pagecache, but rather allows
 kvm's shadow mmu to be synchronized to the main Linux mmu, which is what
 allows page eviction and page aging to work.

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


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [Qemu-devel] [PATCH 2/6] PCI DMA API (v2)

2008-04-06 Thread Paul Brook
 As a note, the DMA controllers in the ARM system-on-chip's can
 byte-swap, do 90deg rotation of 2D arrays, transparency (probably
 intened for image blitting, but still available on any kind of
 transfers), etc., and most importantly issue interrupts on reaching
 different points of a transfer.  It is not worth worrying about them
 in this API.  I have been for some time wanting to make a separate api
 called soc_dma whose task would be using simply memcpy (or zero-copy)
 in the most basic case (interrupts off, no transparency,
 same-endianness endpoints), as these properties are common for DMA on
 the TI OMAPs, the Intel PXAs and the Samsung S3Cs (which otherwise
 have little in common).

Are you sure you aren't confusing the DMA engine itelf (which is just annother 
peripheral) with a mechanism for allowing dma engines access to the system.

Paul

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] Новые правила миграционного уч ета иностранцев

2008-04-06 Thread Евграф
Инoстpанные pабoтники-oсoбеннoсти тpудoвых oтнoшений и налoгooблoжения. 
Нoвшества в закoнoдательстве

Семинаp пpoйдёт 10 апpеля 2008, г. Мoсква

Пpoгpамма: 

1. Статус инoстpаннoгo гpажданина в pФ. pезиденты и неpезиденты. pегистpация пo 
месту жительства.

2. Участие инoстpанцев в тpудoвых oтнoшениях в pФ. Ктo мoжет быть 
pабoтoдателем. 
Нoвый пopядoк oфopмления pазpешений на pабoту для инoстpанцев, пpибывших в pФ. 
из безвизoвoй стpаны. 
Льгoты в pазpешительнoм пopядке пpиема на pабoту.

3. oтветственнoсть за наpушение мигpациoннoгo закoнoдательства. 

4. Дoгoвopные oтнoшения с инoстpанными гpажданами. 

5. Дoкументы, пpедъявляемые инoстpанцами пpи пpиеме на pабoту - пеpечень 
неoбхoдимых дoкументoв и тpебoвания к ним.

6. Сoциальнoе стpахoвание инoстpанцев.

7. oбязательнoе медицинскoе стpахoвание гастаpбайтеpoв. Дoбpoвoльнoе 
медицинскoе стpахoвание.

8. Пенсиoннoе oбеспечение инoстpанцев в poссии.

9. oсoбеннoсти уплаты НДФЛ и ЕСН за инoстpаннoгo pабoтника (в тoм числе, нoвoе 
с 2007 г.). oсoбеннoсти уплаты ЕСН и НДФЛ за белopусoв. 
oсвoбoждение oт НДФЛ дoхoда неpезидента, пoлученнoгo за pубежoм. Избежание 
двoйнoгo налoгooблoжения.

10. Пpиoбpетение услуг пo пpедoставлению pабoчей силы.

Пpoдoлжительнoсть oбучения: с 10 дo 17 часoв (с пеpеpывoм на oбед и кoфе-паузу).
Местo oбучения: г. Мoсква, 5 мин. пешкoм oт м. Академическая.
Стoимoсть oбучения: 4900 pуб. (с НДС). 
(В стoимoсть вхoдит: pаздатoчный матеpиал, кoфе-пауза, oбед в pестopане).

Пpи oтсутствии вoзмoжнoсти пoсетить семинаp, мы пpедлагаем пpиoбpести егo 
видеoвеpсию на DVD/CD дисках или видеoкассетах (пpилагается автopский 
pаздатoчный матеpиал). 
Цена видеoкуpса - 3500 pублей, с учетoм НДС.

Для pегистpации на семинаp неoбхoдимo oтпpавить нам пo факсу или электpoннoй 
пoчте: pеквизиты opганизации, тему и дату семинаpа, пoлнoе ФИo участникoв, 
кoнтактный телефoн и факс. 
Для заказа видеoкуpса неoбхoдимo oтпpавить нам пo факсу или электpoннoй пoчте: 
pеквизиты opганизации, тему видеoкуpса, указать нoситель (ДВД или СД диски), 
телефoн, факс, кoнтактнoе лицo и тoчный адpес дoставки. 
 
Пoлучить дoпoлнительную инфopмацию и заpегистpиpoваться мoжнo:
пo т/ф: (495) 543-88-46
пo электpoннoй пoчте: [EMAIL PROTECTED]



-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] performance tuning, problem with paravirtualized clock

2008-04-06 Thread Avi Kivity
Nikola Ciprich wrote:
 Hi,
 I spent some time trying to tune performance of KVM guest using kernel 
 compilation as a kind of benchmark (I'm using virtual machines for 
 compiling a lot, so it's good benchmark for me in general)

 Host machine: 2x quad core XEON E5420  @ 2.50GHz, 4GB RAM, 2.6.24 + kvm-64
 guest configuration: all 8 cores available, 2GB  RAM, 2.6.24 or latest GIT 
 + kvm-64

 some results:
 - compilation in KVM guest is roughly 2x slower than on bare metal.
   

50% scaling is actually quite good for 8-way.

What do you get for 4-way guests?

 - enabling CONFIG_KVM_GUEST under latest GIT with kvm-64 patch applied 
 decreased compile time by about 10%, which is nice!

   

We expect to improve this some more as paravirt_ops improves.

 Is there currently anything more I could do to improve performance? I'm 
 wandering what is slowing compilation, if I compare some CPU intensive 
 application (ie bzip2), it seems to run in nearly native speed, but kernel 
 compilation is much slower even if run from ramdisk, maybe it could be 
 improved further by tunning scheduler etc?

   

As others mentioned, large pages may help somewhat, as well as newer 
hardware.  kvm-65 also improves scalability.

How much cpu does the qemu process consume?  Perfect utilization would 
be around 800%.  What's the system/user ratio (I think you need to use 
2.6.25-rc to get accurate results for this)?

Can you provide the result of 'kvm_stat -1' taken a few times during a 
compile run?

-- 
Any sufficiently difficult bug is indistinguishable from a feature.


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] mmu notifier #v11

2008-04-06 Thread Christoph Lameter
On Sat, 5 Apr 2008, Andrea Arcangeli wrote:

 In short when working with single pages it's a waste to block the
 secondary-mmu page fault, because it's zero cost to invalidate_page
 before put_page. Not even GRU need to do that.

That depends on what the notifier is being used for. Some serialization 
with the external mappings has to be done anyways. And its cleaner to have 
one API that does a lock/unlock scheme. Atomic operations can easily lead
to races.


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [patch 02/10] emm: notifier logic

2008-04-06 Thread Christoph Lameter
On Sat, 5 Apr 2008, Andrea Arcangeli wrote:

  +   rcu_assign_pointer(mm-emm_notifier, e);
  +   mm_unlock(mm);
 
 My mm_lock solution makes all rcu serialization an unnecessary
 overhead so you should remove it like I already did in #v11. If it
 wasn't the case, then mm_lock wouldn't be a definitive fix for the
 race.

There still could be junk in the cache of one cpu. If you just read the 
new pointer but use the earlier content pointed to then you have a 
problem.

So a memory fence / barrier is needed to guarantee that the contents 
pointed to are fetched after the pointer.


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel