All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: Avi Kivity <avi@qumranet.com>
Cc: kvm-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] Implement emulator_write_phys()
Date: Mon, 27 Aug 2007 12:39:51 -0500	[thread overview]
Message-ID: <1188236391.6364.14.camel@squirrel> (raw)
In-Reply-To: <46D3095A.6020305@qumranet.com>


On Mon, 2007-08-27 at 20:26 +0300, Avi Kivity wrote:
> Anthony Liguori wrote:
> > On Mon, 2007-08-27 at 18:45 +0300, Avi Kivity wrote:
> >   
> >> Anthony Liguori wrote:
> >>     
> >>> Since a hypercall may span two pages and is a gva, we need a function to write
> >>> to a gva that may span multiple pages.  emulator_write_phys() seems like the
> >>> logical choice for this.
> >>>
> >>> @@ -962,8 +962,35 @@ static int emulator_write_std(unsigned long addr,
> >>>  			      unsigned int bytes,
> >>>  			      struct kvm_vcpu *vcpu
> >>>       
> >> I think that emulator_write_emulated(), except for being awkwardly 
> >> named, should do the job.  We have enough APIs.
> >>
> >> But!  We may not overwrite the hypercall instruction while a vcpu may be 
> >> executing, since there's no atomicity guarantee for code fetch.  We have 
> >> to to be out of guest mode while writing that insn.
> >>     
> >
> >
> > Hrm, good catch.
> >
> > How can we get out of guest mode given SMP guest support?
> >
> >   
> 
> kvm_flush_remote_tlbs() is something that can be generalized.  
> Basically, you set a bit in each vcpu and send an IPI to take them out.
> 
> But that's deadlock prone and complex.  Maybe you can just take 
> kvm->lock, zap the mmu and the flush tlbs, and patch the instruction at 
> your leisure, as no vcpu will be able to map memory until the lock is 
> released.

This works for shadow paging but not necessarily with NPT.  Do code
fetches really not respect atomic writes?  We could switch to a 32-bit
atomic operation and that should result in no worse than the code being
patched twice.

Regards,

Anthony Liguori



  reply	other threads:[~2007-08-27 17:40 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-27 15:16 [PATCH 0/3] KVM paravirtualization framework Anthony Liguori
2007-08-27 15:16 ` [PATCH 1/3] Implement emulator_write_phys() Anthony Liguori
2007-08-27 15:16   ` [PATCH 2/3] Refactor hypercall infrastructure Anthony Liguori
2007-08-27 15:16     ` [PATCH 3/3] KVM paravirt-ops implementation Anthony Liguori
2007-08-28 18:31       ` Rusty Russell
2007-08-29  5:53         ` [kvm-devel] " Anthony Liguori
2007-08-27 15:16     ` Anthony Liguori
2007-08-27 16:06     ` [PATCH 2/3] Refactor hypercall infrastructure Avi Kivity
2007-08-27 16:06       ` Avi Kivity
2007-08-27 17:29       ` Anthony Liguori
2007-08-27 17:29         ` Anthony Liguori
2007-08-28 18:12     ` Rusty Russell
2007-08-29  5:51       ` [kvm-devel] " Anthony Liguori
2007-08-27 15:45   ` [PATCH 1/3] Implement emulator_write_phys() Avi Kivity
2007-08-27 17:23     ` Anthony Liguori
2007-08-27 17:26       ` Avi Kivity
2007-08-27 17:26         ` Avi Kivity
2007-08-27 17:39         ` Anthony Liguori [this message]
2007-08-27 17:47           ` Avi Kivity
2007-08-27 17:47             ` Avi Kivity
2007-08-27 18:09     ` Anthony Liguori

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=1188236391.6364.14.camel@squirrel \
    --to=aliguori@us.ibm.com \
    --cc=avi@qumranet.com \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    /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.