|
From: | Frederic Konrad |
Subject: | Re: [Qemu-devel] [RFC PATCH V6 18/18] translate-all: (wip) use tb_flush_safe when we can't alloc more tb. |
Date: | Tue, 07 Jul 2015 18:23:23 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 |
On 07/07/2015 18:17, Alex Bennée wrote:
address@hidden writes:From: KONRAD Frederic <address@hidden> This changes just the tb_flush called from tb_alloc. TODO: * changes the other tb_flush. Signed-off-by: KONRAD Frederic <address@hidden> --- translate-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translate-all.c b/translate-all.c index 8bd8fe8..9adaffa 100644 --- a/translate-all.c +++ b/translate-all.c @@ -1147,7 +1147,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu, tb = tb_alloc(pc); if (!tb) { /* flush must be done */ - tb_flush(env); + tb_flush_safe(env);Hold on this is async right? What stops us rolling on and then getting flushed when the other vCPUs come to a halt? It deserves a comment at least.
not this need some synchronization when the CPUs are halted. There is crap here spotted by Paolo though. In the case of tb_flush.. We do an async_safe_work because all VCPUs thread must be outside cpu_exec.Are you suggesting to just exiting everybody and wait here that all VCPUs exit? This is possible as well here but is not possible for the other case.. That's why I
prefered a "generic" mechanism. Fred
/* cannot fail at this point */ tb = tb_alloc(pc); /* Don't forget to invalidate previous TB info. */
[Prev in Thread] | Current Thread | [Next in Thread] |