[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] MTTCG External Halt
From: |
Alistair Francis |
Subject: |
[Qemu-devel] MTTCG External Halt |
Date: |
Wed, 3 Jan 2018 14:10:42 -0800 |
Hey guys, I'm super stuck with an ugly MTTCG issue and was wondering
if anyone had any ideas.
In the Xilinx fork of QEMU (based on 2.11) we have a way for CPUs to
halt other CPUs. This is used for example when the power control unit
halts the ARM A53s. To do this we have internal GPIO signals that end
up calling a function that basically does this:
To halt:
cpu->halted = true;
cpu_interrupt(cpu, CPU_INTERRUPT_HALT);
To un-halt
cpu->halted = false;
cpu_reset_interrupt(cpu, CPU_INTERRUPT_HALT);
We also have the standard ARM WFI (Wait For Interrupt) implementation
in op_helper.c:
cs->halted = 1;
cs->exception_index = EXCP_HLT;
cpu_loop_exit(cs);
Before MTTCG this used to work great, but now either we end up with
the guest Linux complaining about CPU stalls or we hit:
ERROR:/scratch/alistai/master-qemu/cpus.c:1516:qemu_tcg_cpu_thread_fn:
assertion failed: (cpu->halted)
If I remove the instances of manually setting cpu->halted then I don't
see the asserts(), but the the WFI instruction doesn't work correctly.
So it seems like setting the halted status externally from the CPU
causes the issue. I have tried setting it inside a lock, using atomic
operations and running the setter async on the CPU, but nothing works.
Any chance any one has some insight into a way to externally set a
vCPU as halted/un-halted?
Thanks,
Alistair
- [Qemu-devel] MTTCG External Halt,
Alistair Francis <=
- Re: [Qemu-devel] MTTCG External Halt, Peter Maydell, 2018/01/03
- Re: [Qemu-devel] MTTCG External Halt, Alex Bennée, 2018/01/04
- Re: [Qemu-devel] MTTCG External Halt, Alistair Francis, 2018/01/05
- Re: [Qemu-devel] MTTCG External Halt, Alistair Francis, 2018/01/30
- Re: [Qemu-devel] MTTCG External Halt, Paolo Bonzini, 2018/01/30
- Re: [Qemu-devel] MTTCG External Halt, Alistair Francis, 2018/01/31
- Re: [Qemu-devel] MTTCG External Halt, Alex Bennée, 2018/01/31
- Re: [Qemu-devel] MTTCG External Halt, Alistair Francis, 2018/01/31