From: Alexander Graf <agraf@suse.de>
To: Fabien Chouteau <chouteau@adacore.com>
Cc: Scott Wood <scottwood@freescale.com>,
qemu-ppc@nongnu.org,
"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [Qemu-ppc] [RESEND][PATCH] booke timers
Date: Tue, 13 Sep 2011 15:13:23 +0200 [thread overview]
Message-ID: <4E6F56F3.8070904@suse.de> (raw)
In-Reply-To: <4E6F55D8.20802@suse.de>
Alexander Graf wrote:
> Fabien Chouteau wrote:
>
>> On 12/09/2011 19:23, Scott Wood wrote:
>>
>>
>>> On 09/09/2011 09:58 AM, Alexander Graf wrote:
>>>
>>>
>>>> On 09.09.2011, at 16:22, Fabien Chouteau wrote:
>>>>
>>>>
>>>>> if the interrupt is already set and you clear TCR.DIE, the interrupt has to
>>>>> remain set. The only way to unset an interrupt is to clear the corresponding
>>>>> bit in TSR (currently in store_booke_tsr).
>>>>>
>>>>>
>>>> Are you sure? I see several things in the 2.06 spec:
>>>>
>>>>
>>> [snip]
>>>
>>>
>>>> To me that sounds as if the decrementer interrupt gets injected only
>>>> when TSR.DIS=1, TCR.DIE=1 and MSR.EE=1. Unsetting any of these bits
>>>> stops the interrupt from being delivered.
>>>>
>>>> Scott, can you please check up with the hardware guys if this is correct?
>>>>
>>>>
>>> This is how I've always understood it to work (assuming the interrupt
>>> hasn't already been delivered, of course). Fabien, do you have real
>>> hardware that you see behave the way you describe?
>>>
>>>
>>>
>> No I don't, it was just my understanding of Book-E documentation. I've tried
>> your solution (below) with VxWorks, and it works like a charm.
>>
>> static void booke_update_irq(CPUState *env)
>> {
>> ppc_set_irq(env, PPC_INTERRUPT_DECR,
>> (env->spr[SPR_BOOKE_TSR] & TSR_DIS
>> && env->spr[SPR_BOOKE_TCR] & TCR_DIE));
>>
>> ppc_set_irq(env, PPC_INTERRUPT_WDT,
>> (env->spr[SPR_BOOKE_TSR] & TSR_WIS
>> && env->spr[SPR_BOOKE_TCR] & TCR_WIE));
>>
>> ppc_set_irq(env, PPC_INTERRUPT_FIT,
>> (env->spr[SPR_BOOKE_TSR] & TSR_FIS
>> && env->spr[SPR_BOOKE_TCR] & TCR_FIE));
>> }
>>
>>
>
> Awesome! Please also check on MSR.EE and send a new patch then :)
>
Ah, the EE check is in target-ppc/helper.c:ppc_hw_interrupt. Very
confusing (and probably wrong because it could generate spurious
interrupts), but it should be enough for now.
Alex
next prev parent reply other threads:[~2011-09-13 13:12 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-01 8:20 [Qemu-devel] [RESEND][PATCH] booke timers Fabien Chouteau
2011-09-06 19:33 ` Alexander Graf
2011-09-07 14:41 ` Fabien Chouteau
2011-09-07 19:59 ` Alexander Graf
2011-09-09 10:36 ` Fabien Chouteau
2011-09-09 10:55 ` Alexander Graf
2011-09-09 13:27 ` Fabien Chouteau
2011-09-09 13:46 ` Alexander Graf
2011-09-09 14:22 ` Fabien Chouteau
2011-09-09 14:58 ` Alexander Graf
2011-09-12 17:23 ` [Qemu-devel] [Qemu-ppc] " Scott Wood
2011-09-13 13:06 ` Fabien Chouteau
2011-09-13 13:08 ` Alexander Graf
2011-09-13 13:13 ` Alexander Graf [this message]
2011-09-13 13:28 ` Fabien Chouteau
2011-09-13 16:44 ` Scott Wood
2011-09-13 17:28 ` Alexander Graf
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=4E6F56F3.8070904@suse.de \
--to=agraf@suse.de \
--cc=chouteau@adacore.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=scottwood@freescale.com \
/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).