RE: [PATCH 2/2] KVM: PPC: epapr: Install ev_idle hcall for paravirt guest linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Tuesday, January 03, 2012 2:23 AM
> To: Liu Yu-B13201
> Cc: agraf@xxxxxxx; kvm-ppc@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH 2/2] KVM: PPC: epapr: Install ev_idle hcall for
> paravirt guest linux
> 
> On 12/31/2011 12:16 AM, Liu Yu wrote:
> > If the guest hypervisor node contains "has-idle" property.
> >
> > Signed-off-by: Liu Yu <yu.liu@xxxxxxxxxxxxx>
> > ---
> >  arch/powerpc/kernel/kvm.c |   29 +++++++++++++++++++++++++++++
> >  1 files changed, 29 insertions(+), 0 deletions(-)
> >
> > diff --git a/arch/powerpc/kernel/kvm.c b/arch/powerpc/kernel/kvm.c
> > index b06bdae..258f129 100644
> > --- a/arch/powerpc/kernel/kvm.c
> > +++ b/arch/powerpc/kernel/kvm.c
> > @@ -28,6 +28,7 @@
> >  #include <asm/sections.h>
> >  #include <asm/cacheflush.h>
> >  #include <asm/disassemble.h>
> > +#include <asm/machdep.h>
> >
> >  #define KVM_MAGIC_PAGE		(-4096L)
> >  #define magic_var(x) KVM_MAGIC_PAGE + offsetof(struct
> > kvm_vcpu_arch_shared, x) @@ -571,6 +572,30 @@ static __init void
> kvm_free_tmp(void)
> >  	}
> >  }
> >
> > +static void kvm_hcall_ev_idle(void)
> > +{
> > +	ulong in[8];
> > +	ulong out[8];
> > +
> > +	current_thread_info()->local_flags |= _TLF_NAPPING;
> > +	local_irq_enable();
> > +	kvm_hypercall(in, out, HC_VENDOR_EPAPR | HC_EV_IDLE); }
> 
> I think this has to be done in assembly -- otherwise it's not safe for
> the interrupt handler to return directly to LR.
> 
> > +static int kvm_para_ev_has_idle(void) {
> > +	struct device_node *hyper_node;
> > +
> > +	hyper_node = of_find_node_by_path("/hypervisor");
> > +	if (!hyper_node)
> > +		return 0;
> > +
> > +	if (of_get_property(hyper_node, "has-idle", NULL))
> > +		return 1;
> > +
> > +	return 0;
> > +}
> 
> Since this is standardized in ePAPR, can we move it out of kvm.c an into
> generic code to work with any hypervisor that sets has-idle?  Likewise
> with kvm_para_setup().
> 

Do you mean we scan and parse hypervisor node in early_init_devtree()?

Thanks,
Yu



��.n��������+%������w��{.n�����o��^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�

[Index of Archives]     [KVM Development]     [KVM ARM]     [KVM ia64]     [Linux Virtualization]     [Linux USB Devel]     [Linux Video]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux