Re: [RFC PATCH 6/7] ARM: KVM: introduce kvm_decode_fault

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

 



On 14/03/13 16:10, Peter Maydell wrote:
> On 13 February 2013 15:47, Marc Zyngier <marc.zyngier@xxxxxxx> wrote:
>> Permission fault can be more than just a write fault. Execution
>> fault can also occur if the page is flagged with the XN bit.
>>
>> kvm_decode_fault() returns a value that indicates the fault type
>> (read, write, exec).
> 
> (This is only tangentially related to this patch but I wanted
> to say it anyway, since we had a conversation about this a few
> weeks back and I wanted to record the conclusion.)

Indeed, I remember this conversation which was definitely useful.

> So this whole code path is really relying on something
> subtle which I think it would be good to describe explicitly
> in the code (ie in a comment):
> 
> /* When we get a stage 2 Permission fault, there is a possibility
>  * of a race where the fault_ipa is not in fact correct. (This
>  * happens because host CPUs do not set the HPFAR on a stage
>  * 2 Permission fault, and so we have to do a separate VA-to-IPA
>  * lookup; the stage 1 mapping may change in the window between
>  * taking the fault to hyp mode and doing the VA-to-IPA lookup.)
>  * This means that any handling of a stage 2 Permission fault must:
>  *  + be idempotent
>  *  + be safe to do for any IPA
>  *  + be concluded by restarting the faulting guest instruction,
>  *    not by emulating and skipping over it
>  */

If you don't mind, I'll add this comment to the patch series (I've
recently re-spun it and started collecting data points).

> I believe all our current permission-fault handling satisfies
> these, but if we document this corner case it's less likely
> somebody will introduce an incorrect code path later on...

Definitely. Thanks for the heads up.

	M.
-- 
Jazz is not dead. It just smells funny...


_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm


[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux