From: Eugene Surovegin <ebs@ebshome.net>
To: Shawn Jin <shawnxjin@gmail.com>
Cc: ppcembed <linuxppc-embedded@ozlabs.org>
Subject: Re: Interrupt prioritization on linux for ppc440
Date: Fri, 15 Apr 2005 17:50:26 -0700 [thread overview]
Message-ID: <20050416005026.GB1086@gate.ebshome.net> (raw)
In-Reply-To: <c3d0340b0504151609397d73f7@mail.gmail.com>
On Fri, Apr 15, 2005 at 04:09:08PM -0700, Shawn Jin wrote:
> On 4/15/05, Eugene Surovegin <ebs@ebshome.net> wrote:
> > On Fri, Apr 15, 2005 at 02:36:51PM -0700, Shawn Jin wrote:
> > >
> > > The home-made interrupt controller PIC supports interrupt priorities
> > > and critical/non-critical interrupts. I found that the current kernel
> > > doesn't support interrupt priorities.
> >
> > Yes, we don't have IRQ priorities on 4xx. Theoretically, they can be
> > emulated in get_irq, but I really don't think it's worth it.
>
> Hmmm...that's one way I thought of to implement IRQ priority. Why
> isn't it worth it?
It will significantly complicate PIC code, so if we want to go down
this road, there should be some _real_ reasons and examples, that such
change will be beneficial. For all the time I have been working with
4xx based designs, I never needed such functionality.
> ppc4xx_pic gets the first irq from the least
> significant bit by calling ffs(). So theoretically and maybe
> practically some external interrupts will keep UART's interrupt from
> being served.
Yeah, _theoretically_ this is possible, although, in this case I think
UART IRQ starvation will be your least problem :).
> > > I noticed that the implementation of ppc4xx_pic.c disables all
> > > critical interrupts during initialization. To support critical
> > > interrupts, is it so simple that we change the handler of critical
> > > exception from CriticalInput to do_IRQ in head_44x.S?
> >
> > No, it's not that simple. Linux doesn't support a notion of critical
> > IRQs versus normal ones. Until there is an infrastructure for this, it
> > doesn't make any sense to implement 4xx support.
>
> What kind of infrastructure can you think of to support this? ppc440
> at least provides some interrupt processing registers (CSSR0/1) to
> differentiate critical and non-critical interrupts.
OK, think about local_irq_disable/enable, and all code which is
affected by this. Should these function disable all IRQs or just
normal ones? If just normal one, what will happen if your critical IRQ
handler calls the code, which assumes it's non-reentrant, because it
called local_irq_disable()? Etc..
I really think that if you need some special higher-priority IRQ
context you'd better use RTAI or RTLinux. At least, they make clear
(IIRC) that these IRQ contexts are special.
>
> Another confusion about 440GP/GX UIC is the registers VCR (Vector
> Configuration Reg) and VR (Vector Reg). They seem to be totally
> useless on linux. The interrupt vector is already in the table of
> irq_desc[]. Why does the controller have to generate the address?
It's being generated only for critical IRQs, so yes, because we don't
use them, it's completely useless for us.
What could be interesting, though, is to to make all 4xx IRQs
critical, in this case we could use VR to quickly determine which IRQ
was asserted, instead of current implementation when we use bit
operations. Not sure, if performance gain is really worth the
effort :)
--
Eugene
next prev parent reply other threads:[~2005-04-16 0:50 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-15 21:36 Interrupt prioritization on linux for ppc440 Shawn Jin
2005-04-15 22:12 ` Eugene Surovegin
2005-04-15 23:09 ` Shawn Jin
2005-04-16 0:50 ` Eugene Surovegin [this message]
2005-04-18 21:14 ` Shawn Jin
2005-04-18 22:06 ` Eugene Surovegin
2005-04-18 23:11 ` Shawn Jin
2005-04-19 0:27 ` Eugene Surovegin
2005-04-18 17:01 ` Lawrence E. Bakst
2005-04-18 17:25 ` Eugene Surovegin
2005-04-18 20:54 ` Lawrence E. Bakst
2005-04-18 22:27 ` Eugene Surovegin
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=20050416005026.GB1086@gate.ebshome.net \
--to=ebs@ebshome.net \
--cc=linuxppc-embedded@ozlabs.org \
--cc=shawnxjin@gmail.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).