All of lore.kernel.org
 help / color / mirror / Atom feed
From: Carsten Otte <cotte-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
To: "Zhang, Xiantao" <xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	carsteno-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org,
	Hollis Blanchard
	<hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
	Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH] 5/5 Move-some-x86-specific-part-from-kvm_init-to-kvm_arch
Date: Wed, 14 Nov 2007 13:02:49 +0100	[thread overview]
Message-ID: <473AE3E9.9020709@de.ibm.com> (raw)
In-Reply-To: <42DFA526FC41B1429CE7279EF83C6BDC94FACC-wq7ZOvIWXbMAbVU2wMM1CrfspsVTdybXVpNB7YpNyf8@public.gmane.org>

I think two other functionalities need to be moved to kvm_arch_init 
which are still in common: The call to kvm_mmu_set_nonpresent_ptes() 
and the creation of kvm_vcpu_cache. This can well be done after 
merging this patch. kvm_init looks very much cleaned up now, well done 
Xiantao :-).

Acked-by: Carsten Otte <cotte-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>

Zhang, Xiantao wrote:
> From: Zhang Xiantao <xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> Move-some-x86-specific-part-from-kvm_init-to-kvm_arch
> Signed-off-by: Zhang Xiantao <xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> ---
>  drivers/kvm/kvm.h      |    5 +++--
>  drivers/kvm/kvm_main.c |   26 ++++++--------------------
>  drivers/kvm/x86.c      |   27 ++++++++++++++++++++++++++-
>  3 files changed, 35 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
> index 6e1bf8c..5162d29 100644
> --- a/drivers/kvm/kvm.h
> +++ b/drivers/kvm/kvm.h
> @@ -493,7 +493,7 @@ void vcpu_load(struct kvm_vcpu *vcpu);
>  void vcpu_put(struct kvm_vcpu *vcpu);
>  
>  
> -int kvm_init(struct kvm_x86_ops *ops, unsigned int vcpu_size,
> +int kvm_init(void *opaque, unsigned int vcpu_size,
>  		  struct module *module);
>  void kvm_exit(void);
>  
> @@ -647,7 +647,8 @@ int kvm_arch_vcpu_ioctl_debug_guest(struct kvm_vcpu
> *vcpu,
>  				    struct kvm_debug_guest *dbg);
>  int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run
> *kvm_run);
>  
> -__init void kvm_arch_init(void);
> +int kvm_arch_init(void *opaque);
> +void kvm_arch_exit(void);
>  
>  int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
>  void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu);
> diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
> index ae7ee77..1594e48 100644
> --- a/drivers/kvm/kvm_main.c
> +++ b/drivers/kvm/kvm_main.c
> @@ -1470,7 +1470,7 @@ static void kvm_sched_out(struct preempt_notifier
> *pn,
>  	kvm_arch_vcpu_put(vcpu);
>  }
>  
> -int kvm_init(struct kvm_x86_ops *ops, unsigned int vcpu_size,
> +int kvm_init(void *opaque, unsigned int vcpu_size,
>  		  struct module *module)
>  {
>  	int r;
> @@ -1482,7 +1482,9 @@ int kvm_init(struct kvm_x86_ops *ops, unsigned int
> vcpu_size,
>  
>  	kvm_init_debug();
>  
> -	kvm_arch_init();
> +	r = kvm_arch_init(opaque);
> +	if (r)
> +		goto out4;
>  
>  	bad_page = alloc_page(GFP_KERNEL | __GFP_ZERO);
>  
> @@ -1491,22 +1493,6 @@ int kvm_init(struct kvm_x86_ops *ops, unsigned
> int vcpu_size,
>  		goto out;
>  	}
>  
> -	if (kvm_x86_ops) {
> -		printk(KERN_ERR "kvm: already loaded the other
> module\n");
> -		return -EEXIST;
> -	}
> -
> -	if (!ops->cpu_has_kvm_support()) {
> -		printk(KERN_ERR "kvm: no hardware support\n");
> -		return -EOPNOTSUPP;
> -	}
> -	if (ops->disabled_by_bios()) {
> -		printk(KERN_ERR "kvm: disabled by bios\n");
> -		return -EOPNOTSUPP;
> -	}
> -
> -	kvm_x86_ops = ops;
> -
>  	r = kvm_arch_hardware_setup();
>  	if (r < 0)
>  		goto out;
> @@ -1570,7 +1556,7 @@ out_free_1:
>  out_free_0:
>  	kvm_arch_hardware_unsetup();
>  out:
> -	kvm_x86_ops = NULL;
> +	kvm_arch_exit();
>  	kvm_exit_debug();
>  	kvm_mmu_module_exit();
>  out4:
> @@ -1588,7 +1574,7 @@ void kvm_exit(void)
>  	unregister_cpu_notifier(&kvm_cpu_notifier);
>  	on_each_cpu(hardware_disable, NULL, 0, 1);
>  	kvm_arch_hardware_unsetup();
> -	kvm_x86_ops = NULL;
> +	kvm_arch_exit();
>  	kvm_exit_debug();
>  	__free_page(bad_page);
>  	kvm_mmu_module_exit();
> diff --git a/drivers/kvm/x86.c b/drivers/kvm/x86.c
> index 2e0fded..4fe9f60 100644
> --- a/drivers/kvm/x86.c
> +++ b/drivers/kvm/x86.c
> @@ -1611,11 +1611,36 @@ int kvm_emulate_pio_string(struct kvm_vcpu
> *vcpu, struct kvm_run *run, int in,
>  }
>  EXPORT_SYMBOL_GPL(kvm_emulate_pio_string);
>  
> -__init void kvm_arch_init(void)
> +int kvm_arch_init(void *opaque)
>  {
> +	struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
> +
>  	kvm_init_msr_list();
> +
> +	if (kvm_x86_ops) {
> +		printk(KERN_ERR "kvm: already loaded the other
> module\n");
> +		return -EEXIST;
> +	}
> +
> +	if (!ops->cpu_has_kvm_support()) {
> +		printk(KERN_ERR "kvm: no hardware support\n");
> +		return -EOPNOTSUPP;
> +	}
> +	if (ops->disabled_by_bios()) {
> +		printk(KERN_ERR "kvm: disabled by bios\n");
> +		return -EOPNOTSUPP;
> +	}
> +
> +	kvm_x86_ops = ops;
> +
> +	return 0;
>  }
>  
> +void kvm_arch_exit(void)
> +{
> +	kvm_x86_ops = NULL;
> + }
> +
>  int kvm_emulate_halt(struct kvm_vcpu *vcpu)
>  {
>  	++vcpu->stat.halt_exits;


-------------------------------------------------------------------------
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/

  parent reply	other threads:[~2007-11-14 12:02 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-14  5:44 [PATCH] 5/5 Move-some-x86-specific-part-from-kvm_init-to-kvm_arch Zhang, Xiantao
     [not found] ` <42DFA526FC41B1429CE7279EF83C6BDC94FACC-wq7ZOvIWXbMAbVU2wMM1CrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-11-14 12:02   ` Carsten Otte [this message]
     [not found]     ` <473AE3E9.9020709-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-11-14 12:23       ` Zhang, Xiantao
     [not found]         ` <42DFA526FC41B1429CE7279EF83C6BDC94FBF7-wq7ZOvIWXbMAbVU2wMM1CrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-11-14 13:18           ` Carsten Otte
2007-11-14 13:37           ` Avi Kivity
     [not found]             ` <473AFA30.3040703-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-11-14 15:22               ` [PATCH] 5/5Move-some-x86-specific-part-from-kvm_init-to-kvm_arch Zhang, Xiantao

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=473AE3E9.9020709@de.ibm.com \
    --to=cotte-ta70fqpds9bqt0dzr+alfa@public.gmane.org \
    --cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=carsteno-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    --cc=hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.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.