qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Aurelien Jarno <aurelien@aurel32.net>
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] MIPS interrupts and -icount
Date: Sun, 25 Jul 2010 16:58:36 +0200	[thread overview]
Message-ID: <20100725145836.GG7190@ohm.aurel32.net> (raw)
In-Reply-To: <20100725072148.GA16681@laped.lan>

On Sun, Jul 25, 2010 at 09:21:48AM +0200, Edgar E. Iglesias wrote:
> On Sun, Jul 25, 2010 at 07:52:18AM +0200, Edgar E. Iglesias wrote:
> > On Sun, Jul 25, 2010 at 06:44:41AM +0200, Aurelien Jarno wrote:
> > > On Sun, Jul 25, 2010 at 05:08:07AM +0200, Aurelien Jarno wrote:
> > > > On Sun, Jul 25, 2010 at 02:07:54AM +0200, Edgar E. Iglesias wrote:
> > > > > On Sun, Jul 25, 2010 at 12:55:45AM +0200, Aurelien Jarno wrote:
> > > > > > On Thu, Jul 22, 2010 at 01:32:18PM +0200, Edgar E. Iglesias wrote:
> > > > > > > Hi,
> > > > > > > 
> > > > > > > I'm seeing an error when emulating MIPS guests with -icount.
> > > > > > > In cpu_interrupt:
> > > > > > >   cpu_abort(env, "Raised interrupt while not in I/O function");
> > > > > > 
> > > > > > I am not able to reproduce the issue. Do you have more details how to
> > > > > > reproduce the problem?
> > > > > 
> > > > > You need a machine with devices that raise the hw interrupts. I didn't
> > > > > see the error on the images on the wiki though. But I've got a machine
> > > > > here that trigs it easily. Will check if I can publish it and an image.
> > > > > 
> > > > 
> > > > That would be nice if you can share it.
> > > > 
> > > > > > > It seems to me like the MIPS interrupt glue logic between interrupt
> > > > > > > controllers and the MIPS core is not modeled correctly.
> > > > > > 
> > > > > > It seems indeed that sometimes interrupt are triggered while not in 
> > > > > > I/O functions, your patch addresses part of the problem.
> > > > > > 
> > > > > > > When hw interrupt pending bits in CP0_Cause are set, the CPU should
> > > > > > > see the hw interrupt line as active. The CPU may or may not take the
> > > > > > > interrupt based on internal state (global irq mask etc) but the glue
> > > > > > > logic shouldn't care about that. Am I missing something here?
> > > > > > 
> > > > > > I don't think it is correct. On the real hardware, the interrupt line is
> > > > > > actually active only when all conditions are fulfilled.
> > > > > > 
> > > > > > The thing to remember is that the interrupts are level triggered. So if
> > > > > > an interrupt is masked, it should be rejected by the CPU, but could be
> > > > > > triggered again as soon as the interrupt mask is changed.
> > > > > 
> > > > > Agreed, that behaviour is what I'm trying to acheive. The problem now
> > > > > is that the the level triggered line, prior to CPU masking is beeing masked
> > > > > by external logic. IMO it shouldnt. See hw/mips_int.c and cpu-exec.c prior
> > > > > to the patch.
> > > > 
> > > > Actually all depends if you consider the MIPS interrupt controller part
> > > > of the CPU or not. It could be entirely modeled in the CPU, that is in 
> > > > cpu-exec.c or entirely modeled as a separate controller, that is in 
> > > > mips_int.c.
> > > >
> > > 
> > > If we choose having the interrupt controller as part of the CPU, which
> > > seems to be what you have chosen, the following patch should fix the
> > > remaining issues (and prepare the work for vector interrupt support):
> > 
> > Thanks,
> > 
> > That looks nice, specially the removing of the helper_interrupt_restart
> > parts :)
> > 
> > I'll test it on my side and send you an ACK.
> 
> 
> I've tested this with the same images as before, they still work.
> I also created a synthetic testcase for the 2 software interrupt
> lines and they seem to behave OK. Our linux port was not so
> happy about seeing those raised though, so I had to hack a bit
> to see them in action :)
> 
> Acked-by: Edgar E. Iglesias <edgar@axis.com>
> Tested-by: Edgar E. Iglesias <edgar@axis.com>
> 
> Would you mind applying your patch on top of mine?
> 

Thanks for the tests, I have just applied it.

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

  reply	other threads:[~2010-07-25 14:58 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-22 11:32 [Qemu-devel] [PATCH] MIPS interrupts and -icount Edgar E. Iglesias
2010-07-24 22:55 ` Aurelien Jarno
2010-07-25  0:07   ` Edgar E. Iglesias
2010-07-25  3:08     ` Aurelien Jarno
2010-07-25  4:44       ` Aurelien Jarno
2010-07-25  5:52         ` Edgar E. Iglesias
2010-07-25  7:21           ` Edgar E. Iglesias
2010-07-25 14:58             ` Aurelien Jarno [this message]
2010-07-25  5:46       ` Edgar E. Iglesias
2010-12-21 22:28         ` Aurelien Jarno
2010-12-22 16:12           ` Edgar E. Iglesias
2010-12-25 22:22             ` Aurelien Jarno
2010-12-26  8:34               ` Edgar E. Iglesias
2010-12-26 20:29                 ` Aurelien Jarno

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=20100725145836.GG7190@ohm.aurel32.net \
    --to=aurelien@aurel32.net \
    --cc=edgar.iglesias@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).