|
From: | Richard Henderson |
Subject: | Re: [Qemu-devel] [RFC DEBUG PATCH 3/3] translate-a64: fix lookup_tb_ptr hang (DEBUG!) |
Date: | Fri, 9 Jun 2017 19:29:28 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 |
On 06/09/2017 10:01 AM, Alex Bennée wrote:
THIS IS A DEBUG PATCH DO NOT MERGE I include all the comments to show my working. I was trying to isolate which instructions cause the problem. It turns out it is the RET instruction. I don't understand why because AFAICT it is a pretty much a BR instruction.
Yeah, same thing for Alpha.It has been my guess that not chaining through RET means that we get back to the main loop regularly and often, letting interrupts be recognized in a timely manner.
I can't figure out why that would be, however, since interrupts *ought* to be setting icount_decr, and the TB to which we chain *is* checking that to return to the main loop.
Since changing the timing affects the outcome (e.g. -d exec), it follows that this *must* be some sort of race condition. But since this still happens with single-threaded mode, I can't imagine what sort of race condition it might be.
More data points. I removed the tb_htable_lookup, and that by itself is enough to fix Alpha booting. But it doesn't help the aarch64 kernel+image that I have. Which does still boot with -d nochain (which, along with disabling goto_tb chaining, also disables all goto_ptr).
Not really sure where to go from here. r~
[Prev in Thread] | Current Thread | [Next in Thread] |