[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all.
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all. |
Date: |
Fri, 26 Jun 2015 17:08:10 +0100 |
On 26 June 2015 at 17:01, Paolo Bonzini <address@hidden> wrote:
> On 26/06/2015 17:54, Frederic Konrad wrote:
>> So what happen is:
>> An arm instruction want to clear tlb of all VCPUs eg: IS version of
>> TLBIALL.
>> The VCPU which execute the TLBIALL_IS can't flush tlb of other VCPU.
>> It will just ask all VCPU thread to exit and to do tlb_flush hence the
>> async_work.
>>
>> Maybe the big issue might be memory barrier instruction here which I didn't
>> checked.
>
> Yeah, ISTR that in some cases you have to wait for other CPUs to
> invalidate the TLB before proceeding. Maybe it's only when you have a
> dmb instruction, but it's probably simpler for QEMU to always do it
> synchronously.
Yeah, the ARM architectural requirement here is that the TLB
operation is complete after a DSB instruction executes. (True for
any TLB op, not just the all-CPUs ones). NB that we also call
tlb_flush() from target-arm/ code for some things like "we just
updated a system register"; some of those have "must take effect
immediately" semantics.
In any case, for generic code we have to also consider the
semantics of non-ARM guests...
thanks
-- PMM
- [Qemu-devel] [RFC PATCH V6 16/18] arm: use tlb_flush*_all, (continued)
[Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., fred . konrad, 2015/06/26
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Paolo Bonzini, 2015/06/26
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Frederic Konrad, 2015/06/26
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Paolo Bonzini, 2015/06/26
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all.,
Peter Maydell <=
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Frederic Konrad, 2015/06/26
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Paolo Bonzini, 2015/06/26
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Frederic Konrad, 2015/06/26
- Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Paolo Bonzini, 2015/06/26
Re: [Qemu-devel] [RFC PATCH V6 15/18] cpu: introduce tlb_flush*_all., Paolo Bonzini, 2015/06/26
[Qemu-devel] [RFC PATCH V6 17/18] translate-all: introduces tb_flush_safe., fred . konrad, 2015/06/26
[Qemu-devel] [RFC PATCH V6 18/18] translate-all: (wip) use tb_flush_safe when we can't alloc more tb., fred . konrad, 2015/06/26