[kvmarm] [PATCH 10/15] KVM: ARM: World-switch implementation
Christoffer Dall
c.dall at virtualopensystems.com
Sat Sep 29 20:33:51 EDT 2012
On Tue, Sep 25, 2012 at 1:42 PM, Marc Zyngier <marc.zyngier at arm.com> wrote:
> On Tue, 25 Sep 2012 18:15:50 +0100, Peter Maydell
> <peter.maydell at linaro.org> wrote:
>> On 25 September 2012 18:00, Will Deacon <will.deacon at arm.com> wrote:
>>> On Sat, Sep 15, 2012 at 04:35:33PM +0100, Christoffer Dall wrote:
>>>> ENTRY(__kvm_tlb_flush_vmid)
>>>> + hvc #0 @ Switch to Hyp mode
>>>> + push {r2, r3}
>>>> +
>>>> + add r0, r0, #KVM_VTTBR
>>>> + ldrd r2, r3, [r0]
>>>> + mcrr p15, 6, r2, r3, c2 @ Write VTTBR
>>>> + isb
>>>> + mcr p15, 0, r0, c8, c3, 0 @ TLBIALLIS (rt ignored)
>>>> + dsb
>>>> + isb
>>>> + mov r2, #0
>>>> + mov r3, #0
>>>> + mcrr p15, 6, r2, r3, c2 @ Back to VMID #0
>>>> + isb
>>>
>>> Do you need this isb, given that you're about to do an hvc?
>>>
>>>> + pop {r2, r3}
>>>> + hvc #0 @ Back to SVC
>>>> bx lr
>>
>> ...you probably don't want to do the memory accesses involved
>> in the 'pop' under the wrong VMID ?
>
> Well, we're still in HYP mode when performing the pop, so the VMID is
> pretty much irrelevant. Same for the initial push, actually. As long as
> we're sure VTTBR has been updated when we do the exception return, I think
> we're safe.
>
yeah we're safe, but I can't find anywhere that says the ISB is
implied from exception handling/hvc, even though I seem to recall
having read this, so I put this here not to worry other readers.
-Christoffer
More information about the linux-arm-kernel
mailing list