All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: kvm-devel@lists.sourceforge.net, Avi Kivity <avi@qumranet.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [kvm-devel] [PATCH 2/3] Refactor hypercall infrastructure
Date: Wed, 29 Aug 2007 00:51:10 -0500	[thread overview]
Message-ID: <1188366670.6337.5.camel@squirrel> (raw)
In-Reply-To: <1188324777.5531.73.camel@localhost.localdomain>

On Wed, 2007-08-29 at 04:12 +1000, Rusty Russell wrote:
> On Mon, 2007-08-27 at 10:16 -0500, Anthony Liguori wrote:
> > This patch refactors the current hypercall infrastructure to better support live
> > migration and SMP.  It eliminates the hypercall page by trapping the UD
> > exception that would occur if you used the wrong hypercall instruction for the
> > underlying architecture and replacing it with the right one lazily.
> 
> It also reduces the number of hypercall args, which you don't mention
> here.

Oh yes, sorry.
	
> > +	er = emulate_instruction(&svm->vcpu, kvm_run, 0, 0);
> > +
> > +	/* we should only succeed here in the case of hypercalls which
> > +	   cannot generate an MMIO event.  MMIO means that the emulator
> > +	   is mistakenly allowing an instruction that should generate
> > +	   a UD fault so it's a bug. */
> > +	BUG_ON(er == EMULATE_DO_MMIO);
> 
> This seems... unwise.  Firstly we know our emulator is incomplete.
> Secondly an SMP guest can exploit this to crash the host.

This code is gone in v2.

> (Code is in two places).
> 
> > +#define KVM_HYPERCALL ".byte 0x0f,0x01,0xc1"

Good point.

> A nice big comment would be nice here, I think.  Note that this is big
> enough for both "int $0x1f" and "sysenter", so I'm happy.

I need to add a comment somewhere mentioning that if you patch with
something less than 3 bytes, then you should pad with nop but the
hypervisor must treat the whole instruction (including the padding) as
atomic (that is, regardless of hypercall size, eip += 3) or you run the
risk of breakage during migration.

Regards,

Anthony Liguori

> Cheers,
> Rusty.
> 
> 
> -------------------------------------------------------------------------
> 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


  reply	other threads:[~2007-08-29  5:51 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       ` Anthony Liguori [this message]
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
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=1188366670.6337.5.camel@squirrel \
    --to=anthony@codemonkey.ws \
    --cc=avi@qumranet.com \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    /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.