public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Alexander Graf <agraf@suse.de>, kvm-ppc@vger.kernel.org
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH] KVM: PPC: HV: Remove generic instruction emulation
Date: Wed, 30 Jul 2014 18:21:43 +0200	[thread overview]
Message-ID: <53D91B97.9060408@redhat.com> (raw)
In-Reply-To: <1406726865-30072-1-git-send-email-agraf@suse.de>

Il 30/07/2014 15:27, Alexander Graf ha scritto:
> Now that we have properly split load/store instruction emulation and generic
> instruction emulation, we can move the generic one from kvm.ko to kvm-pr.ko
> on book3s_64.
> 
> This reduces the attack surface and amount of code loaded on HV KVM kernels.

Can emulation races happen on HV KVM like you can have on x86?
Basically one CPU writes to MMIO while the other patches instructions so
that basically anything can end up in the hands of the emulator?  On PPC
it may even happen simply because of a missing icache invalidation, I
think, since it doesn't support self-modifying code without explicit
invalidation.

Paolo

> Signed-off-by: Alexander Graf <agraf@suse.de>
> ---
>  arch/powerpc/kvm/Makefile   |  2 +-
>  arch/powerpc/kvm/trace_pr.h | 20 ++++++++++++++++++++
>  2 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kvm/Makefile b/arch/powerpc/kvm/Makefile
> index 1ccd7a1..2d590de 100644
> --- a/arch/powerpc/kvm/Makefile
> +++ b/arch/powerpc/kvm/Makefile
> @@ -48,6 +48,7 @@ kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) := \
>  
>  kvm-pr-y := \
>  	fpu.o \
> +	emulate.o \
>  	book3s_paired_singles.o \
>  	book3s_pr.o \
>  	book3s_pr_papr.o \
> @@ -91,7 +92,6 @@ kvm-book3s_64-module-objs += \
>  	$(KVM)/kvm_main.o \
>  	$(KVM)/eventfd.o \
>  	powerpc.o \
> -	emulate.o \
>  	emulate_loadstore.o \
>  	book3s.o \
>  	book3s_64_vio.o \
> diff --git a/arch/powerpc/kvm/trace_pr.h b/arch/powerpc/kvm/trace_pr.h
> index e1357cd..a674f09 100644
> --- a/arch/powerpc/kvm/trace_pr.h
> +++ b/arch/powerpc/kvm/trace_pr.h
> @@ -291,6 +291,26 @@ TRACE_EVENT(kvm_unmap_hva,
>  	TP_printk("unmap hva 0x%lx\n", __entry->hva)
>  );
>  
> +TRACE_EVENT(kvm_ppc_instr,
> +	TP_PROTO(unsigned int inst, unsigned long _pc, unsigned int emulate),
> +	TP_ARGS(inst, _pc, emulate),
> +
> +	TP_STRUCT__entry(
> +		__field(	unsigned int,	inst		)
> +		__field(	unsigned long,	pc		)
> +		__field(	unsigned int,	emulate		)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->inst		= inst;
> +		__entry->pc		= _pc;
> +		__entry->emulate	= emulate;
> +	),
> +
> +	TP_printk("inst %u pc 0x%lx emulate %u\n",
> +		  __entry->inst, __entry->pc, __entry->emulate)
> +);
> +
>  #endif /* _TRACE_KVM_H */
>  
>  /* This part must be outside protection */
> 

  reply	other threads:[~2014-07-30 16:21 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-30 13:27 [PATCH] KVM: PPC: HV: Remove generic instruction emulation Alexander Graf
2014-07-30 16:21 ` Paolo Bonzini [this message]
2014-07-30 18:57   ` Alexander Graf
2014-07-30 19:47     ` Paolo Bonzini
2014-07-30 19:48       ` Alexander Graf

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=53D91B97.9060408@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=agraf@suse.de \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox