[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] CPU TLB flush with multithread TCG.
From: |
Mark Burton |
Subject: |
Re: [Qemu-devel] CPU TLB flush with multithread TCG. |
Date: |
Wed, 11 Feb 2015 09:35:03 +0100 |
> On 11 Feb 2015, at 04:33, Alex Bennée <address@hidden> wrote:
>
>
> Frederic Konrad <address@hidden> writes:
>
>> Hi everybody,
>>
>> In multithread tlb_flush is broken as CPUA can flush an other CPUB and
>> CPUB can be
>> executing code, and fixing this can be quite hard:
>> * We need to exit the CPU which is flushed.
>> * Makes sure the CPU is stopped.
>> * Then we can flush tlb.
>> The big issues are:
>> * Two threads can be doing a flush at the same time.
>> * Something can restart the CPU during the flush.
>>
>> A better idea I think is that instead of flushing tlb we can put a flag
>> in CPUState such
>> as flush_request and ask the cpu to exit.
>> Then later once the CPU is exited we can flush tlbs if flush_request is set.
>> It will ensure that the CPU won't execute code as it's associated thread
>> will be
>> flushing.
>>
>> Can this work?
>
> Does this imply deferring the work? Surely if we don't flush when
> instructed things could break down very quickly?
>
thats exactly the question.
Cheers
Mark.
>
>
>>
>> Thanks,
>> Fred
>
> --
> Alex Bennée
+44 (0)20 7100 3485 x 210
+33 (0)5 33 52 01 77x 210
+33 (0)603762104
mark.burton