From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59278) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ull4a-0000we-NY for qemu-devel@nongnu.org; Sun, 09 Jun 2013 15:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ull4Y-0000oe-JO for qemu-devel@nongnu.org; Sun, 09 Jun 2013 15:14:40 -0400 Received: from cantor2.suse.de ([195.135.220.15]:44457 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ull4Y-0000oG-BW for qemu-devel@nongnu.org; Sun, 09 Jun 2013 15:14:38 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sun, 9 Jun 2013 21:13:12 +0200 Message-Id: <1370805206-26574-46-git-send-email-afaerber@suse.de> In-Reply-To: <1370805206-26574-1-git-send-email-afaerber@suse.de> References: <1370805206-26574-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH qom-cpu 45/59] pc: Abstract pic_irq_request() with qemu_for_each_cpu() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Anthony Liguori , =?UTF-8?q?Andreas=20F=C3=A4rber?= Signed-off-by: Andreas F=C3=A4rber --- hw/i386/pc.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 71d9019..28c9c6e 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -183,18 +183,23 @@ int cpu_get_pic_interrupt(CPUX86State *env) return intno; } =20 +static void pic_irq_request_apic_one(CPUState *cs, void *data) +{ + int *level =3D data; + X86CPU *cpu =3D X86_CPU(cs); + + if (apic_accept_pic_intr(cpu->env.apic_state)) { + apic_deliver_pic_intr(cpu->env.apic_state, *level); + } +} + static void pic_irq_request(void *opaque, int irq, int level) { CPUX86State *env =3D first_cpu; =20 DPRINTF("pic_irqs: %s irq %d\n", level? "raise" : "lower", irq); if (env->apic_state) { - while (env) { - if (apic_accept_pic_intr(env->apic_state)) { - apic_deliver_pic_intr(env->apic_state, level); - } - env =3D env->next_cpu; - } + qemu_for_each_cpu(pic_irq_request_apic_one, &level); } else { CPUState *cs =3D CPU(x86_env_get_cpu(env)); if (level) { --=20 1.8.1.4