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

Re: [Xen-devel] [PATCH V14 5/7] xen/arm: Instruction prefetch abort (X) mem_access event handling



Hi Tamas,

On 27/03/15 08:32, Tamas K Lengyel wrote:
>         +        /*
>         +         * Flush the TLB to make sure the DTLB is clear before
>         +         * doing GVA->IPA translation. If we got here because of
>         +         * an entry only present in the ITLB, this translation may
>         +         * still be inaccurate.
>         +         */
>         +        flush_tlb_domain(current->__domain);
> 
> 
>     flush TLB domain is very expensive, it flushes TLBs on every CPU.
>     While you may only need a flush on the current CPU.
> 
> 
> Ack, there just isn't a function at the moment to do tlbflush only for a
> given cpu.

There is one function to flush the TLB only on the current CPU. See
flush_tlb_local.

flush_tlb_domain is an helper in order to flush TLB on another domain
than the current one.

> While I understand the argument behind the performance
> impact of the flush, any user of the mem_access system would IMHO prefer
> accuracy over performance. As I said before, this path seldom ever
> triggers without mem_access triggering it.

Without memaccess, we always inject a prefetch abort with the virtual
address. So we don't care about the flush TLB here.

> 
> 
>     Although, on ARMv8, there is no possibility to flush only DTLB or
>     ITLB for aarch64. You have to do both at the same time. So the
>     problem you are describing can't happen. After reading the
>     ID_MMFR2_EL1, I understand that Unified TLB is strongly advice on
>     ARMv8 so any DTLB/ITLB flush would flush the unified TLB for aarch32
>     guest.
> 
> 
> The problem I'm describing doesn't depend on having separate DTLB/ITLB
> flush operations available, albeit those making life a lot for a
> potential malicious in-guest kernel. There were no separate flush
> operations on x86 either and split-TLB poisoning was still a thing. The
> introduction of the sTLB is what made it less usable for malicious purposes.

What I was trying to say is given ID_MMFR2_EL1, I think ARMv8 only
support unified TLB. But I might be wrong...

Regards,


-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.