All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sheng Yang <sheng@linux.intel.com>
To: Avi Kivity <avi@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>, kvm@vger.kernel.org
Subject: Re: [PATCH] KVM: Ensure the exit frequency to QEmu for coalesced MMIO
Date: Wed, 20 Jan 2010 17:57:02 +0800	[thread overview]
Message-ID: <201001201757.02289.sheng@linux.intel.com> (raw)
In-Reply-To: <4B56D144.5030501@redhat.com>

On Wednesday 20 January 2010 17:47:48 Avi Kivity wrote:
> On 01/20/2010 11:34 AM, Sheng Yang wrote:
> >> I think we can even do this from the I/O thread, without stopping a
> >> vcpu, since the colaesced mmio page is not tied to a vcpu but is a vm
> >> property.
> >
> > This one sounds better. But I've taken a look at the current userspace 
code:
> >> #if defined(KVM_CAP_COALESCED_MMIO)
> >>     if (kvm_state->coalesced_mmio) {
> >>         struct kvm_coalesced_mmio_ring *ring =
> >>             (void *) run + kvm_state->coalesced_mmio * PAGE_SIZE;
> >>         while (ring->first != ring->last) {
> >>            
> >> cpu_physical_memory_rw(ring->coalesced_mmio[ring->first].phys_addr,
> >> &ring->coalesced_mmio[ring->first].data[0],
> >> ring->coalesced_mmio[ring->first].len, 1); smp_wmb();
> >>             ring->first = (ring->first + 1) % KVM_COALESCED_MMIO_MAX;
> >>         }
> >>     }
> >> #endif
> >
> > No protection for ring->first and ring->last? Seems it can writing the
> > same element pointed by ring->first twice, then skip one element at
> > (ring->first + 1)...
> 
> ring->first is owned by userspace, while ring->last is owned by the
> kernel, so no protection is necessary except for the memory barrier.
> Can you elaborate on how it would fail?
> 

This piece of code can only be executed on one thread/vcpu at same time? I 
think different vcpus accessing/modifying ring->first at the same time would 
cause problem.

But for a separate iothread which handle all userspace accessing, it should be 
fine.

-- 
regards
Yang, Sheng

  reply	other threads:[~2010-01-20  9:57 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-20  8:35 [PATCH] KVM: Ensure the exit frequency to QEmu for coalesced MMIO Sheng Yang
2010-01-20  8:38 ` Sheng Yang
2010-01-20  9:11 ` Avi Kivity
2010-01-20  9:34   ` Sheng Yang
2010-01-20  9:47     ` Avi Kivity
2010-01-20  9:57       ` Sheng Yang [this message]
2010-01-20 11:04         ` Avi Kivity

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=201001201757.02289.sheng@linux.intel.com \
    --to=sheng@linux.intel.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.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.