public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Gleb Natapov <gleb@redhat.com>
Cc: mtosatti@redhat.com, kvm@vger.kernel.org
Subject: Re: [PATCH 08/23] KVM: x86 emulator: cleanup some direct calls into kvm to use existing callbacks
Date: Wed, 28 Apr 2010 11:59:54 +0300	[thread overview]
Message-ID: <4BD7F90A.8060107@redhat.com> (raw)
In-Reply-To: <1272370524-1295-9-git-send-email-gleb@redhat.com>

On 04/27/2010 03:15 PM, Gleb Natapov wrote:
> Use callbacks from x86_emulate_ops to access segments instead of calling
> into kvm directly.
>
>
>
> -static unsigned long seg_base(struct x86_emulate_ctxt *ctxt, int seg)
> +static unsigned long seg_base(struct x86_emulate_ctxt *ctxt,
> +			      struct x86_emulate_ops *ops, int seg)
>   {
> -	if (ctxt->mode == X86EMUL_MODE_PROT64&&  seg<  VCPU_SREG_FS)
> -		return 0;
> +	unsigned long base;
>
> -	return kvm_x86_ops->get_segment_base(ctxt->vcpu, seg);
>    

get_segment_base() is only one vmread on intel, but you replace it with 
reading the entire segment.

> +	if (ctxt->mode == X86EMUL_MODE_PROT64) {
> +		u64 val;
> +		switch (seg) {
> +		case VCPU_SREG_FS:
> +			ops->get_msr(ctxt->vcpu, MSR_FS_BASE,&val);
> +			break;
> +		case VCPU_SREG_GS:
> +			ops->get_msr(ctxt->vcpu, MSR_GS_BASE,&val);
> +			break;
> +		default:
> +			val = 0;
> +			break;
> +		}
>    

Why this ugliness?  get_cached_descriptor() should do this.

>
>   static unsigned long seg_override_base(struct x86_emulate_ctxt *ctxt,
> +				       struct x86_emulate_ops *ops,
>   				       struct decode_cache *c)
>   {
>   	if (!c->has_seg_override)
>   		return 0;
>
> -	return seg_base(ctxt, c->seg_override);
> +	return seg_base(ctxt, ops, c->seg_override);
>   }
>    

Sticking ops into ctxt would reduce the size of these patches.

-- 
error compiling committee.c: too many arguments to function


  reply	other threads:[~2010-04-28  9:18 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-27 12:15 [PATCH 00/23] next round of emulator cleanups Gleb Natapov
2010-04-27 12:15 ` [PATCH 01/23] KVM: x86 emulator: introduce read cache Gleb Natapov
2010-04-27 12:15 ` [PATCH 02/23] KVM: x86 emulator: fix Move r/m16 to segment register decoding Gleb Natapov
2010-04-27 12:15 ` [PATCH 03/23] KVM: x86 emulator: cleanup xchg emulation Gleb Natapov
2010-04-27 12:15 ` [PATCH 04/23] KVM: x86 emulator: cleanup nop emulation Gleb Natapov
2010-04-27 12:15 ` [PATCH 05/23] KVM: x86 emulator: handle "far address" source operand Gleb Natapov
2010-04-27 12:15 ` [PATCH 06/23] KVM: x86 emulator: add (set|get)_dr callbacks to x86_emulate_ops Gleb Natapov
2010-04-27 12:15 ` [PATCH 07/23] KVM: x86 emulator: add (set|get)_msr " Gleb Natapov
2010-04-27 12:15 ` [PATCH 08/23] KVM: x86 emulator: cleanup some direct calls into kvm to use existing callbacks Gleb Natapov
2010-04-28  8:59   ` Avi Kivity [this message]
2010-04-28  9:33     ` Gleb Natapov
2010-04-28 12:56       ` Avi Kivity
2010-04-27 12:15 ` [PATCH 09/23] KVM: x86 emulator: make set_cr() callback return error if it fails Gleb Natapov
2010-04-28  9:01   ` Avi Kivity
2010-04-27 12:15 ` [PATCH 10/23] KVM: x86 emulator: make (get|set)_dr() " Gleb Natapov
2010-04-27 12:15 ` [PATCH 11/23] KVM: x86 emulator: fix X86EMUL_RETRY_INSTR and X86EMUL_CMPXCHG_FAILED values Gleb Natapov
2010-04-27 12:15 ` [PATCH 12/23] KVM: fill in run->mmio details in (read|write)_emulated function Gleb Natapov
2010-04-27 12:15 ` [PATCH 13/23] KVM: x86 emulator: x86_emulate_insn() return -1 only in case of emulation failure Gleb Natapov
2010-04-27 12:15 ` [PATCH 14/23] KVM: remove export of emulator_write_emulated() Gleb Natapov
2010-04-27 12:15 ` [PATCH 15/23] KVM: do not inject #PF in (read|write)_emulated() callbacks Gleb Natapov
2010-04-28  9:11   ` Avi Kivity
2010-04-28  9:21     ` Gleb Natapov
2010-04-29  9:23       ` Avi Kivity
2010-04-27 12:15 ` [PATCH 16/23] KVM: handle emulation failure case first Gleb Natapov
2010-04-27 12:15 ` [PATCH 17/23] KVM: x86 emulator: advance RIP outside x86 emulator code Gleb Natapov
2010-04-27 12:15 ` [PATCH 18/23] KVM: x86 emulator: set RFLAGS " Gleb Natapov
2010-04-27 12:15 ` [PATCH 19/23] KVM: x86 emulator: use shadowed register in emulate_sysexit() Gleb Natapov
2010-04-27 12:15 ` [PATCH 20/23] KVM: x86 exmulator: handle shadowed registers outside emulator Gleb Natapov
2010-04-27 12:15 ` [PATCH 21/23] KVM: x86 emulator: move interruptibility state tracking out of emulator Gleb Natapov
2010-04-27 12:15 ` [PATCH 22/23] KVM: remove unneeded initialization Gleb Natapov
2010-04-28  9:17   ` Avi Kivity
2010-04-27 12:15 ` [PATCH 23/23] KVM: x86 emulator: do not inject exception directly into vcpu Gleb Natapov

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=4BD7F90A.8060107@redhat.com \
    --to=avi@redhat.com \
    --cc=gleb@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox