diff options
author | Igor Mitsyanko <i.mitsyanko@samsung.com> | 2012-12-05 23:03:55 +0400 |
---|---|---|
committer | Kitae Kim <kt920.kim@samsung.com> | 2012-12-20 16:37:52 +0900 |
commit | bbcf0b82fb593447ecd6bed8f12473d498f7716c (patch) | |
tree | 0b6e1cbcdee910a4f70dd400ace9915f4a1067d9 /cpu-exec.c | |
parent | 1d95b989f24543d10060e94d43718f72b6416ba9 (diff) | |
download | qemu-bbcf0b82fb593447ecd6bed8f12473d498f7716c.tar.gz qemu-bbcf0b82fb593447ecd6bed8f12473d498f7716c.tar.bz2 qemu-bbcf0b82fb593447ecd6bed8f12473d498f7716c.zip |
cpu-exec: do not handle interrupts if HAX is working
When emulator works with HAX accelerator, all hardirq events should
be processed by HAX, not in cpu_exec loop. It is exactly how it works
most of the time even without this fix, but in some cases, for example,
if we're using YaGL openGL passthrough device, interrupt could be
handled incide cpu_exec loop, which will cause errors in emulation.
Use explicit check for HAX enabled to decide if we want to handle
interrupts. Note that it doesn't change behaviour for usual emulator
workflow because usually interrupt_request is always 0 at this point.
Signed-off-by: Igor Mitsyanko <i.mitsyanko@samsung.com>
Diffstat (limited to 'cpu-exec.c')
-rw-r--r-- | cpu-exec.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/cpu-exec.c b/cpu-exec.c index 0a0858279d..9500e91c04 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -288,7 +288,7 @@ int cpu_exec(CPUArchState *env) next_tb = 0; /* force lookup of first TB */ for(;;) { - interrupt_request = env->interrupt_request; + interrupt_request = need_handle_intr_request(env); if (unlikely(interrupt_request)) { if (unlikely(env->singlestep_enabled & SSTEP_NOIRQ)) { /* Mask out external interrupts for this step. */ |