qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Xie Xianshan <xiexs@cn.fujitsu.com>
To: Max Filippov <jcmvbkbc@gmail.com>
Cc: qemu-ppc <qemu-ppc@nongnu.org>, qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] Disabling IRQ error
Date: Thu, 12 Sep 2013 15:49:59 +0800	[thread overview]
Message-ID: <52317227.4080706@cn.fujitsu.com> (raw)
In-Reply-To: <CAMo8BfJgnZCrdQ3rZ5YXN_72MXbOLuxacnz17TxqBHkhLAhduA@mail.gmail.com>

Hi Max,
     Thanks for your patience and help.
     I`ve tried to do what you said, but the problem doesn`t go away.
And actually i cannot add a new register to the fpga device, because the 
fpga device i`m emulating already exists in the real world.
So i cannot change anything about hardware properties and linux driver 
for this device.

     By the way, how did you finally fix your problem?

Thanks,
  Simen

于 2013/09/11 17:29, Max Filippov 写道:
> On Wed, Sep 11, 2013 at 12:12 PM, Xie Xianshan<xiexs@cn.fujitsu.com>  wrote:
>>    I want to add a new device "fpga" for e500, and trigger an interrupt IRQ3
>> while the register BB_INTR_REG which belongs to device "fpga" is wrote by
>> the device driver of "fpga".
>>    For e500, IRQ3 is an external interrupt irq.
>>    According the debug log, the disabling error is encoutered during writing
>> BB_INTR_REG register.
>>    - write BB_INTR_REG register
>>        - qemu_irq_raise() is called.
>>        - after serval minutes,
>>          the error message about disabling irq is displayed.
>>    - continue the next execution without error(with poll?)
>
> So your device raises IRQ, but it doesn't lower it. Real devices
> usually don't do that, they either generate a short pulse on the
> IRQ line (in case of edge-triggered IRQ) or raise IRQ line on
> some event and then lower it on a command from its driver
> (level-triggered IRQ).
>
> You can do the following to make your device behave that way:
> - make your fpga device capable of lowering its IRQ, e.g. by adding
>    another register:
>
>> static void fpga_write(FPGAState *s, unsigned int offset, uint32_t value,
>> unsigned size) {
>>      switch(offset) {
>>      case BB_INTR_REG:
>>          qemu_irq_raise(s->irq);
>>          break;
>         case BB_INTC_REG:
>             qemu_irq_lower(s->irq);
>             break;
>>      }
>> }
>
> - provide an interrupt service routine in the linux driver for your fpga
>    device that would check whether the interrupt was caused by its
>    device, and if so lower the device's IRQ.
>
> Thanks.
> -- Max
>
>


-- 
Best Regards
Xie Xianshan
--------------------------------------------------
Xie Xianshan
Development Dept.I
Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST)
No. 6 Wenzhu Road, Nanjing, 210012, China
PHONE: +86+25-86630566-9555
FUJITSU INTERNAL: 7998-9555
MAIL: xiexs@cn.fujitsu.com
--------------------------------------------------
This communication is for use by the intended recipient(s) only and may
contain information that is privileged, confidential and exempt from
disclosure under applicable law. If you are not an intended recipient of
this communication, you are hereby notified that any dissemination,
distribution or copying hereof is strictly prohibited.  If you have
received this communication in error, please notify me by reply e-mail,
permanently delete this communication from your system, and destroy any
hard copies you may have printed


  reply	other threads:[~2013-09-12  7:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-10  7:25 [Qemu-devel] Disabling IRQ error Xie Xianshan
2013-09-10  8:23 ` Max Filippov
2013-09-11  8:12   ` Xie Xianshan
2013-09-11  9:29     ` Max Filippov
2013-09-12  7:49       ` Xie Xianshan [this message]
2013-09-12  7:59         ` Max Filippov
2013-09-12 10:51           ` Xie Xianshan
2013-09-12 11:10             ` Max Filippov
2013-10-23  2:38       ` Xie Xianshan

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=52317227.4080706@cn.fujitsu.com \
    --to=xiexs@cn.fujitsu.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@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).