From: tsnsaito@gmail.com
To: Artyom Tarasenko <atar4qemu@gmail.com>
Cc: blauwirbel@gmail.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] fix disabling interrupts in sun4u
Date: Thu, 28 Jul 2011 19:31:16 +0900 [thread overview]
Message-ID: <4e313a7e.c926440a.2e83.4a11@mx.google.com> (raw)
In-Reply-To: <316f198de781f7b819456f433d84ead284769a71.1311606610.git.atar4qemu@gmail.com>
Hi,
At Mon, 25 Jul 2011 19:22:38 +0200,
Artyom Tarasenko wrote:
> clear interrupt request if the interrupt priority < CPU pil
> clear hardware interrupt request if interrupts are disabled
Not directly related to the fix, but I'd like to note a problem
of hw/sun4u.c interrupt code:
The interrupt code probably mixes hardware interrupts and
software interrupts.
%pil is for software interrupts (interrupt_level_n traps).
%pil can not mask hardware interrupts (interrupt_vector traps);
the CPU raises interrupt_vector traps even on %pil=15.
But in cpu_check_irqs() and cpu_set_irq(), hardware interrupts
seem to be masked by %pil.
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> ---
> hw/sun4u.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/hw/sun4u.c b/hw/sun4u.c
> index d7dcaf0..7f95aeb 100644
> --- a/hw/sun4u.c
> +++ b/hw/sun4u.c
> @@ -255,7 +255,7 @@ void cpu_check_irqs(CPUState *env)
> pil |= 1 << 14;
> }
>
> - if (!pil) {
> + if (pil < (2 << env->psrpil)){
> if (env->interrupt_request & CPU_INTERRUPT_HARD) {
> CPUIRQ_DPRINTF("Reset CPU IRQ (current interrupt %x)\n",
> env->interrupt_index);
> @@ -287,10 +287,12 @@ void cpu_check_irqs(CPUState *env)
> break;
> }
> }
> - } else {
> + } else if (env->interrupt_request & CPU_INTERRUPT_HARD) {
> CPUIRQ_DPRINTF("Interrupts disabled, pil=%08x pil_in=%08x softint=%08x "
> "current interrupt %x\n",
> pil, env->pil_in, env->softint, env->interrupt_index);
> + env->interrupt_index = 0;
> + cpu_reset_interrupt(env, CPU_INTERRUPT_HARD);
> }
> }
>
> --
> 1.7.3.4
----
Tsuneo Saito <tsnsaito@gmail.com>
next prev parent reply other threads:[~2011-07-28 10:31 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-25 17:22 [Qemu-devel] [PATCH] fix disabling interrupts in sun4u Artyom Tarasenko
2011-07-28 10:31 ` tsnsaito [this message]
2011-07-28 11:51 ` Artyom Tarasenko
2011-07-28 12:03 ` tsnsaito
2011-07-28 12:10 ` Tsuneo Saito
2011-07-28 12:55 ` Artyom Tarasenko
2011-07-28 12:50 ` Artyom Tarasenko
2011-07-28 13:40 ` tsnsaito
2011-07-28 14:44 ` Artyom Tarasenko
2011-07-29 1:21 ` tsnsaito
2011-07-30 9:28 ` Blue Swirl
2011-07-30 9:09 ` Blue Swirl
2011-07-30 12:31 ` Artyom Tarasenko
2011-07-30 13:25 ` Blue Swirl
2011-07-30 20:19 ` Artyom Tarasenko
2011-07-30 20:32 ` Blue Swirl
2011-07-30 20:58 ` Artyom Tarasenko
2011-07-30 21:13 ` Blue Swirl
2011-08-28 11:39 ` Blue Swirl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4e313a7e.c926440a.2e83.4a11@mx.google.com \
--to=tsnsaito@gmail.com \
--cc=atar4qemu@gmail.com \
--cc=blauwirbel@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.