[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Help on TLB Flush
From: |
Alexander Graf |
Subject: |
Re: [Qemu-devel] Help on TLB Flush |
Date: |
Thu, 12 Feb 2015 16:19:48 +0100 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 |
On 12.02.15 16:08, Mark Burton wrote:
>
>> On 12 Feb 2015, at 16:01, Peter Maydell <address@hidden> wrote:
>>
>> On 12 February 2015 at 14:45, Alexander Graf <address@hidden> wrote:
>>>
>>>> On 12.02.2015, at 15:35, Mark Burton <address@hidden> wrote:
>>>> We are proposing to implement this by signalling all other CPU’s
>>>> to exit (and requesting they flush before re-starting). In other
>>>> words, this would happen asynchronously.
>>>
>>> For global flushes, give them a pointer payload along with the flush
>>> request and tell all cpus to increment it atomically. In your main
>>> thread, wait until *ptr == nKickedCpus.
>>
>> I bet this will not be the only situation where you want to
>> do an "get all other CPUs to do $something and wait til they
>> have done so" kind of operation, so some lightweight but generic
>> infrastructure for doing that would not be a bad plan. (Similarly
>> "get all other CPUs to stop, then I can do $something and let
>> the others continue”.)
>
> We tried this - we ended up in knots.
> We had 2 CPU’s trying to flush at about the same time, both waiting for the
> other.
> We had CPU’s trying to get the global mutex to finish what they were doing,
> while being told to flush,
> We had CPU’s in the global mutex trying to do something that would cause a
> flush… etc....
> We had spaghetti with extra Bolognese sauce…
>
> We eventually concluded, yes - in an infinite universe everything is
> possible, but if we could simply do this ‘asynchronously’ then our lives
> would be a LOT easier.
> e.g. - ask all CPU’s to “exit and do something” is easy - wait for them to
> do that is a whole other problem…
>
> Our question is - do we need this ‘sync’ (before the flush), or can we
> actually allow CPU’s to flush themselves asynchronously….
The respective target architecture specs will tell you. And I very much
doubt that it is ok in most cases.
Alex
- Re: [Qemu-devel] Help on TLB Flush, (continued)
- Re: [Qemu-devel] Help on TLB Flush, Peter Maydell, 2015/02/12
- Re: [Qemu-devel] Help on TLB Flush, Alexander Graf, 2015/02/12
- Re: [Qemu-devel] Help on TLB Flush, Mark Burton, 2015/02/12
- Re: [Qemu-devel] Help on TLB Flush, Lluís Vilanova, 2015/02/12
- Re: [Qemu-devel] Help on TLB Flush, Mark Burton, 2015/02/13
- Re: [Qemu-devel] Help on TLB Flush, Peter Maydell, 2015/02/13
- Re: [Qemu-devel] Help on TLB Flush, Mark Burton, 2015/02/13
- Re: [Qemu-devel] Help on TLB Flush, Peter Maydell, 2015/02/12
Re: [Qemu-devel] Help on TLB Flush, Peter Maydell, 2015/02/12
- Re: [Qemu-devel] Help on TLB Flush, Mark Burton, 2015/02/12
- Re: [Qemu-devel] Help on TLB Flush,
Alexander Graf <=
- Re: [Qemu-devel] Help on TLB Flush, Peter Maydell, 2015/02/12
- Re: [Qemu-devel] Help on TLB Flush, Paolo Bonzini, 2015/02/13
- Re: [Qemu-devel] Help on TLB Flush, Mark Burton, 2015/02/13
- Re: [Qemu-devel] Help on TLB Flush, Paolo Bonzini, 2015/02/13
Re: [Qemu-devel] Help on TLB Flush, Dr. David Alan Gilbert, 2015/02/12
Re: [Qemu-devel] Help on TLB Flush, Mark Burton, 2015/02/12
Re: [Qemu-devel] Help on TLB Flush, Mark Burton, 2015/02/12