All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <mtosatti@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: xming <xmingske@gmail.com>, Gerd Hoffmann <kraxel@redhat.com>,
	kvm@vger.kernel.org, qemu-devel <qemu-devel@nongnu.org>,
	Paolo Bonzini <pbonzini@redhat.com>, Avi Kivity <avi@redhat.com>
Subject: Re: kvm crashes with spice while loading qxl
Date: Sat, 5 Mar 2011 13:35:58 -0300	[thread overview]
Message-ID: <20110305163558.GA4607@amt.cnet> (raw)
In-Reply-To: <4D68F20D.2020401@web.de>

On Sat, Feb 26, 2011 at 01:29:01PM +0100, Jan Kiszka wrote:
> >     at /var/tmp/portage/app-emulation/qemu-kvm-0.14.0/work/qemu-kvm-0.14.0/qemu-kvm.c:1466
> > #12 0x00007ffff77bb944 in start_thread () from /lib/libpthread.so.0
> > #13 0x00007ffff5e491dd in clone () from /lib/libc.so.6
> > (gdb)
> 
> That's a spice bug. In fact, there are a lot of
> qemu_mutex_lock/unlock_iothread in that subsystem. I bet at least a few
> of them can cause even more subtle problems.
> 
> Two general issues with dropping the global mutex like this:
>  - The caller of mutex_unlock is responsible for maintaining
>    cpu_single_env across the unlocked phase (that's related to the
>    abort above).
>  - Dropping the lock in the middle of a callback is risky. That may
>    enable re-entrances of code sections that weren't designed for this
>    (I'm skeptic about the side effects of
>    qemu_spice_vm_change_state_handler - why dropping the lock here?).
> 
> Spice requires a careful review regarding such issues. Or it should
> pioneer with introducing its own lock so that we can handle at least
> related I/O activities over the VCPUs without holding the global mutex
> (but I bet it's not the simplest candidate for such a new scheme).
> 
> Jan
> 

Agree with the concern regarding spice.

Regarding global mutex, TCG and KVM execution behaviour can become more
similar wrt locking by dropping qemu_global_mutex during generation and
execution of TBs.

Of course for memory or PIO accesses from vcpu context qemu_global_mutex
must be acquired.

With that in place, it becomes easier to justify further improvements
regarding parallelization, such as using a read-write lock for
l1_phys_map / phys_page_find_alloc.


 21.62%               sh            3d38920b3f  [.] 0x00003d38920b3f                  
  6.38%               sh  qemu-system-x86_64    [.] phys_page_find_alloc              
  4.90%               sh  qemu-system-x86_64    [.] tb_find_fast                      
  4.34%               sh  qemu-system-x86_64    [.] tlb_flush  


WARNING: multiple messages have this Message-ID (diff)
From: Marcelo Tosatti <mtosatti@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: kvm@vger.kernel.org, qemu-devel <qemu-devel@nongnu.org>,
	xming <xmingske@gmail.com>, Avi Kivity <avi@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] Re: kvm crashes with spice while loading qxl
Date: Sat, 5 Mar 2011 13:35:58 -0300	[thread overview]
Message-ID: <20110305163558.GA4607@amt.cnet> (raw)
In-Reply-To: <4D68F20D.2020401@web.de>

On Sat, Feb 26, 2011 at 01:29:01PM +0100, Jan Kiszka wrote:
> >     at /var/tmp/portage/app-emulation/qemu-kvm-0.14.0/work/qemu-kvm-0.14.0/qemu-kvm.c:1466
> > #12 0x00007ffff77bb944 in start_thread () from /lib/libpthread.so.0
> > #13 0x00007ffff5e491dd in clone () from /lib/libc.so.6
> > (gdb)
> 
> That's a spice bug. In fact, there are a lot of
> qemu_mutex_lock/unlock_iothread in that subsystem. I bet at least a few
> of them can cause even more subtle problems.
> 
> Two general issues with dropping the global mutex like this:
>  - The caller of mutex_unlock is responsible for maintaining
>    cpu_single_env across the unlocked phase (that's related to the
>    abort above).
>  - Dropping the lock in the middle of a callback is risky. That may
>    enable re-entrances of code sections that weren't designed for this
>    (I'm skeptic about the side effects of
>    qemu_spice_vm_change_state_handler - why dropping the lock here?).
> 
> Spice requires a careful review regarding such issues. Or it should
> pioneer with introducing its own lock so that we can handle at least
> related I/O activities over the VCPUs without holding the global mutex
> (but I bet it's not the simplest candidate for such a new scheme).
> 
> Jan
> 

Agree with the concern regarding spice.

Regarding global mutex, TCG and KVM execution behaviour can become more
similar wrt locking by dropping qemu_global_mutex during generation and
execution of TBs.

Of course for memory or PIO accesses from vcpu context qemu_global_mutex
must be acquired.

With that in place, it becomes easier to justify further improvements
regarding parallelization, such as using a read-write lock for
l1_phys_map / phys_page_find_alloc.


 21.62%               sh            3d38920b3f  [.] 0x00003d38920b3f                  
  6.38%               sh  qemu-system-x86_64    [.] phys_page_find_alloc              
  4.90%               sh  qemu-system-x86_64    [.] tb_find_fast                      
  4.34%               sh  qemu-system-x86_64    [.] tlb_flush  

  parent reply	other threads:[~2011-03-05 17:03 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-26 11:43 kvm crashes with spice while loading qxl xming
2011-02-26 12:29 ` Jan Kiszka
2011-02-26 12:29   ` [Qemu-devel] " Jan Kiszka
2011-02-26 14:44   ` xming
2011-02-26 14:44     ` [Qemu-devel] " xming
2011-02-27 19:03   ` Alon Levy
2011-02-27 19:03     ` Alon Levy
2011-02-27 19:11     ` Jan Kiszka
2011-02-27 19:11       ` Jan Kiszka
2011-02-27 19:16       ` Alon Levy
2011-02-27 19:16         ` Alon Levy
2011-02-27 19:27         ` Jan Kiszka
2011-02-27 19:27           ` Jan Kiszka
2011-02-27 19:29           ` Alon Levy
2011-02-27 19:29             ` Alon Levy
2011-02-27 19:32           ` Alon Levy
2011-02-27 19:32             ` Alon Levy
2011-03-01 12:58       ` Alon Levy
2011-03-01 12:58         ` Alon Levy
2011-03-02  8:22         ` Jan Kiszka
2011-03-02 10:56           ` Alon Levy
2011-03-02 10:56             ` Alon Levy
2011-03-02 11:34             ` Jan Kiszka
2011-03-02 12:32               ` Alon Levy
2011-03-02 12:32                 ` Alon Levy
2011-02-28 12:56     ` xming
2011-03-01  3:56     ` Rick Vernam
2011-03-01  3:56       ` [Qemu-devel] " Rick Vernam
2011-03-05 16:35   ` Marcelo Tosatti [this message]
2011-03-05 16:35     ` Marcelo Tosatti
2011-03-05 17:11     ` Paolo Bonzini
2011-03-05 17:11       ` [Qemu-devel] " Paolo Bonzini
2011-03-06 10:30     ` Alon Levy
2011-03-06 10:30       ` [Qemu-devel] " Alon Levy
2011-03-07 16:02       ` Marcelo Tosatti
2011-03-07 16:02         ` [Qemu-devel] " Marcelo Tosatti
2011-03-06 10:38     ` Avi Kivity
2011-03-06 10:38       ` [Qemu-devel] " Avi Kivity
2011-03-07 16:13       ` Marcelo Tosatti
2011-03-07 16:13         ` [Qemu-devel] " Marcelo Tosatti
2011-03-07 22:27         ` Paolo Bonzini
2011-03-07 22:27           ` [Qemu-devel] " Paolo Bonzini
2011-03-08  9:17         ` Avi Kivity
2011-03-08  9:17           ` [Qemu-devel] " Avi Kivity
2011-03-08  9:28           ` Paolo Bonzini
2011-03-08  9:28             ` [Qemu-devel] " Paolo Bonzini
2011-03-08  9:32             ` Avi Kivity
2011-03-08  9:32               ` [Qemu-devel] " Avi Kivity
2011-04-26  8:53   ` Gerd Hoffmann
2011-04-26  8:53     ` [Qemu-devel] " Gerd Hoffmann
2011-04-26  9:06     ` Jan Kiszka
2011-04-26  9:06       ` [Qemu-devel] " Jan Kiszka
2011-04-26  9:43       ` Gerd Hoffmann
2011-04-26  9:43         ` [Qemu-devel] " Gerd Hoffmann
2011-04-26  9:34     ` Alon Levy
2011-04-26  9:34       ` [Qemu-devel] " Alon Levy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110305163558.GA4607@amt.cnet \
    --to=mtosatti@redhat.com \
    --cc=avi@redhat.com \
    --cc=jan.kiszka@web.de \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=xmingske@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.