From: "Nakajima, Jun" <jun.nakajima@intel.com>
To: "Jeff Garzik" <jgarzik@pobox.com>,
"Zwane Mwaikambo" <zwane@linuxpower.ca>
Cc: "Nguyen, Tom L" <tom.l.nguyen@intel.com>,
"Linux Kernel" <linux-kernel@vger.kernel.org>,
"long" <tlnguyen@snoqualmie.dp.intel.com>
Subject: RE: Updated MSI Patches
Date: Tue, 12 Aug 2003 16:59:21 -0700 [thread overview]
Message-ID: <7F740D512C7C1046AB53446D3720017304AE9A@scsmsx402.sc.intel.com> (raw)
If the platform_irq thing is the issue, we can remove it by having like
#ifdef PCI_USE_VECTOR
static struct hw_interrupt_type ioapic_edge_vector_type = {
.typename = "IO-APIC-edge",
.startup = startup_edge_ioapic_vector,
.shutdown = shutdown_edge_ioapic_vector,
.enable = enable_edge_ioapic_vector,
.disable = disable_edge_ioapic_vector,
.ack = ack_edge_ioapic_vector,
.end = end_edge_ioapic_vector,
.set_affinity = set_ioapic_affinity,
};
static struct hw_interrupt_type ioapic_level_vector_type = {
...
#else
...
They (startup_edge_ioapic_vector, etc.) convert the vector to IRQ when
needed. Note that we need that because interrupt controller(s) still
needs IRQ info for the conventional interrupts when we use vector-based
do_IRQ().
For example, startup_edge_ioapic_vector() looks like this:
static unsigned int startup_edge_ioapic_vector(unsigned int vector)
{
int was_pending = 0;
unsigned long flags;
int irq = vector_to_irq (vector);
spin_lock_irqsave(&ioapic_lock, flags);
if (irq < 16) {
disable_8259A_irq(irq);
if (i8259A_irq_pending(irq))
was_pending = 1;
}
__unmask_IO_APIC_irq(irq);
spin_unlock_irqrestore(&ioapic_lock, flags);
return was_pending;
}
Thanks,
Jun
> -----Original Message-----
> From: Jeff Garzik [mailto:jgarzik@pobox.com]
> Sent: Tuesday, August 12, 2003 12:45 PM
> To: Zwane Mwaikambo
> Cc: Nakajima, Jun; Nguyen, Tom L; Linux Kernel; long
> Subject: Re: Updated MSI Patches
>
> Zwane Mwaikambo wrote:
> > On Tue, 12 Aug 2003, Jeff Garzik wrote:
> >
> >
> >>So, IMO, do_IRQ is one special case where copying code may be
preferred
> >>over common code.
> >>
> >>And I also feel the same way about do_MSI(). However, I have not
looked
> >>at non-ia32 MSI implementations to know what sort of issues exist.
> >
> >
> > The main reason i have a preference for a seperate MSI handling path
is
> so
> > that we don't have to do the platform_irq thing in do_IRQ and we
know
> > what to expect wrt irq or vector. If platform_irq stays we should at
> > least try and pick up on what the IA64 folks have done, But that
would
> be
> > even harder to get done right now.
>
>
> Oh, I definitely prefer a separate MSI handling path too.
>
> In the future we'll be writing drivers that _require_ MSI interrupt
> handling, and we'll be optimizing the various MSI hot paths to reclaim
> even the most minute amount of CPU cycles. And we want to escape any
> shackles the evil phrase "legacy interrupts" dares to try to lay upon
us.
>
> But there is a flip side to that: do_IRQ is not solely hardware
> interrupts. That area of code is central dispatcher for
> softirq/tasklet/timer delivery as well. So a separate do_MSI() needs
to
> take that stuff into account.
>
> Overall, I'm pretty happy with how Tom's MSI patches are going so far,
> and he seems to be responding to feedback. So, we'll get there.
>
> Jeff
>
>
next reply other threads:[~2003-08-12 23:59 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-12 23:59 Nakajima, Jun [this message]
2003-08-13 0:48 ` Updated MSI Patches Zwane Mwaikambo
-- strict thread matches above, loose matches on Subject: below --
2003-10-03 22:15 long
2003-10-01 18:26 Nguyen, Tom L
2003-10-01 15:37 long
2003-10-01 17:09 ` Jeff Garzik
2003-08-22 18:25 long
2003-08-19 15:42 Nguyen, Tom L
2003-08-14 23:46 Nguyen, Tom L
2003-08-13 15:19 Nguyen, Tom L
2003-08-13 4:14 Nakajima, Jun
2003-08-13 1:34 Nakajima, Jun
2003-08-13 1:37 ` Zwane Mwaikambo
2003-08-12 18:36 Nakajima, Jun
2003-08-12 18:48 ` Jeff Garzik
2003-08-12 19:14 ` Zwane Mwaikambo
2003-08-12 19:44 ` Jeff Garzik
2003-08-12 17:32 Nguyen, Tom L
2003-08-12 18:14 ` Zwane Mwaikambo
2003-08-12 17:04 Nguyen, Tom L
2003-08-12 18:11 ` Zwane Mwaikambo
2003-08-12 15:22 long
2003-08-11 20:51 long
2003-08-11 21:16 ` Greg KH
2003-08-12 1:41 ` Zwane Mwaikambo
2003-08-12 5:53 ` Greg KH
2003-08-08 19:33 long
2003-08-08 20:15 ` Greg KH
2003-08-08 14:41 Nguyen, Tom L
2003-08-07 23:07 Nakajima, Jun
2003-08-07 21:25 long
2003-08-07 22:14 ` Greg KH
2003-08-07 22:44 ` Jeff Garzik
2003-08-07 23:03 ` Matt Porter
2003-08-08 2:36 ` Zwane Mwaikambo
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=7F740D512C7C1046AB53446D3720017304AE9A@scsmsx402.sc.intel.com \
--to=jun.nakajima@intel.com \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tlnguyen@snoqualmie.dp.intel.com \
--cc=tom.l.nguyen@intel.com \
--cc=zwane@linuxpower.ca \
/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).