Re: [PATCH v4 2/3] KVM: PPC: epapr: Add idle hcall support for host

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

 



On 17.02.2012, at 03:13, Liu Yu-B13201 wrote:

> 
> 
>> -----Original Message-----
>> From: Alexander Graf [mailto:agraf@xxxxxxx]
>> Sent: Thursday, February 16, 2012 6:20 PM
>> To: Liu Yu-B13201
>> Cc: <kvm-ppc@xxxxxxxxxxxxxxx>; <kvm@xxxxxxxxxxxxxxx>; <linuxppc-
>> dev@xxxxxxxxxx>; Wood Scott-B07421; Liu Yu-B13201
>> Subject: Re: [PATCH v4 2/3] KVM: PPC: epapr: Add idle hcall support for
>> host
>> 
>> 
>> 
>> On 16.02.2012, at 10:26, Liu Yu <yu.liu@xxxxxxxxxxxxx> wrote:
>> 
>>> And add a new flag definition in kvm_ppc_pvinfo to indicate whether
>>> host support EV_IDLE hcall.
>>> 
>>> Signed-off-by: Liu Yu <yu.liu@xxxxxxxxxxxxx>
>>> ---
>>> v4:
>>> no change
>>> 
>>> arch/powerpc/include/asm/kvm_para.h |   14 ++++++++++++--
>>> arch/powerpc/kvm/powerpc.c          |    8 ++++++++
>>> include/linux/kvm.h                 |    2 ++
>>> 3 files changed, 22 insertions(+), 2 deletions(-)
>>> 
>>> diff --git a/arch/powerpc/include/asm/kvm_para.h
>>> b/arch/powerpc/include/asm/kvm_para.h
>>> index 7b754e7..81a34c9 100644
>>> --- a/arch/powerpc/include/asm/kvm_para.h
>>> +++ b/arch/powerpc/include/asm/kvm_para.h
>>> @@ -75,9 +75,19 @@ struct kvm_vcpu_arch_shared { };
>>> 
>>> #define KVM_SC_MAGIC_R0        0x4b564d21 /* "KVM!" */
>>> -#define HC_VENDOR_KVM        (42 << 16)
>>> +
>>> +#include <asm/epapr_hcalls.h>
>>> +
>>> +/* ePAPR Hypercall Vendor ID */
>>> +#define HC_VENDOR_EPAPR        (EV_EPAPR_VENDOR_ID << 16)
>>> +#define HC_VENDOR_KVM        (EV_KVM_VENDOR_ID << 16)
>>> +
>>> +/* ePAPR Hypercall Token */
>>> +#define HC_EV_IDLE        EV_IDLE
>>> +
>>> +/* ePAPR Hypercall Return Codes */
>>> #define HC_EV_SUCCESS        0
>>> -#define HC_EV_UNIMPLEMENTED    12
>>> +#define HC_EV_UNIMPLEMENTED    EV_UNIMPLEMENTED
>>> 
>>> #define KVM_FEATURE_MAGIC_PAGE    1
>>> 
>>> diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
>>> index 0e21d15..03ebd5d 100644
>>> --- a/arch/powerpc/kvm/powerpc.c
>>> +++ b/arch/powerpc/kvm/powerpc.c
>>> @@ -81,6 +81,10 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu)
>>> 
>>>       /* Second return value is in r4 */
>>>       break;
>>> +    case HC_VENDOR_EPAPR | HC_EV_IDLE:
>>> +        r = HC_EV_SUCCESS;
>>> +        kvm_vcpu_block(vcpu);
>>> +        break;
>>>   default:
>>>       r = HC_EV_UNIMPLEMENTED;
>>>       break;
>>> @@ -746,6 +750,10 @@ static int kvm_vm_ioctl_get_pvinfo(struct
>> kvm_ppc_pvinfo *pvinfo)
>>>   pvinfo->hcall[2] = inst_sc;
>>>   pvinfo->hcall[3] = inst_nop;
>>> 
>>> +#ifdef CONFIG_BOOKE
>>> +    pvinfo->flags |= KVM_PPC_PVINFO_FLAGS_EV_IDLE; #endif
>>> +
>>>   return 0;
>>> }> 
>> 
>> Why limit it to booke? The less ifdefs our code has, the better :)
> 
> The code here tells userspace that kvm support ev_idle.
> But I'm not sure if the ev_idle code works for other platforms.
> 
> So I think we should keep the ifdef until other platform test the code :)

But the implementation is in generic code and is not #ifdef'ed, so a guest could still call it just fine. It looks simple enough to work without major testing on different platforms, so I'd say just expose it and be done :)


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux