qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC] Starting a (secondary) CPU when it is halted or reset


From: Ronald Hecht
Subject: [Qemu-devel] [RFC] Starting a (secondary) CPU when it is halted or reset
Date: Fri, 05 Oct 2012 11:28:10 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20120724 Icedove/3.0.11

Hello all,

I have a question regarding LEON SPARC SMP. In a LEON SPARC SMP system secondary CPUs (others that CPU#0) can be started by setting certain bits in the interrupt controller. At startup (reset) all CPUs are halted except CPU#0. In QEMU version 0.12 it was possible to simply set CPUSPARCState.halted to "0" to start a secondary CPU. This is no longer possible and reliable. The CPU that should be started does not wake up by doing this:

                env->halted = 0;
                qemu_cpu_kick(env);

It seems that the running CPU blocks the startup of the halted CPU. I need to notice, that the halted CPU has interrupts (and traps) disabled at startup. Thus, it is not possible to start the CPU by raising an interrupt.

I was playing with several things and I found that doing

                env->halted = 0;
                qemu_cpu_kick(env);
                cpu_exit(cpu_single_env);

helps. The statement cpu_exit(cpu_single_env) forces the current CPU (cpu_single_env) to exit the execution loop and which allows to start the other CPU (env).

I'm unsure if this is the correct way to solve my problem. Any comments on this?

Thanks and best regards,
Ronald



reply via email to

[Prev in Thread] Current Thread [Next in Thread]