Re: [PATCH v4 3/3] KVM: PPC: epapr: install ev_idle hcall for e500 guest

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

 



On 16.02.2012, at 17:58, Scott Wood wrote:

> On 02/16/2012 04:24 AM, Alexander Graf wrote:
>> On 16.02.2012, at 10:26, Liu Yu <yu.liu@xxxxxxxxxxxxx> wrote:
>>> +_GLOBAL(epapr_ev_idle)
>>> +epapr_ev_idle:
>>> +    rlwinm    r3,r1,0,0,31-THREAD_SHIFT    /* current thread_info */
>>> +    lwz    r4,TI_LOCAL_FLAGS(r3)    /* set napping bit */
>>> +    ori    r4,r4,_TLF_NAPPING    /* so when we take an exception */
>>> +    stw    r4,TI_LOCAL_FLAGS(r3)    /* it will return to our caller */
>>> +
>>> +    wrteei    1
>>> +
>>> +idle_loop:
>>> +    LOAD_REG_IMMEDIATE(r11, HC_VENDOR_EPAPR | HC_EV_IDLE)
>>> +
>>> +.global epapr_ev_idle_start
>>> +epapr_ev_idle_start:
>>> +    li    r3, -1
>>> +    nop
>>> +    nop
>>> +    nop
>> 
>> Can't you just bl into epapr_hypercall_start? You don't even have to save the old lr. because we never return anyways :)
> 
> The interrupt will branch to LR, so no, we can't trash it or put it
> anywhere else.

Hrm. But we can clobber ctr, right? So how about we make the generic version do a bctr and then just do a small C wrapper that takes lr, moves it to ctr and branches to the generic one?

Then we don't have to replicate the hypercall code all over again for every invocation.

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