linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Segher Boessenkool <segher@kernel.crashing.org>
Cc: Greg Kroah-Hartman <greg@kroah.com>,
	linuxppc-dev@ozlabs.org,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	linux-pci@atrey.karlin.mff.cuni.cz,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [RFC/PATCH 6/7] MPIC MSI backend
Date: Tue, 07 Nov 2006 20:16:03 +1100	[thread overview]
Message-ID: <1162890963.28571.465.camel@localhost.localdomain> (raw)
In-Reply-To: <3210FBE5-5F22-4759-A728-A98175A435D6@kernel.crashing.org>


> > Yes, I will do a cleanup pass on the MPIC code there. I think it  
> > should
> > only program the chip for polarity/sense in startup() and thus can
> > "override" the native LSI setting of that vector when the interrupt is
> > flagged as MSI without actually losing the original information.
> 
> You mean when we (in the future) reserve a range of vectors
> for MSI allocation at MPIC startup?  Sure, that works.

Not only, even with the current code... basically keep the
sense/polarity flags of the LSI intact in the irq_desc, just add the
IRQF_MSI bit to "override" them when we configure the interrupt to be an
MSI. Then, irq_chip->startup() instead of set_irq_type() does the actual
configuration of the MPIC and, seeing the IRQF_MSI flags, does the right
thing.

That way, when restoring the IRQ back to LSI, we just clear IRQF_MSI and
the old sense/polarity settings will still be there in the descriptor
and MPIC will do the right thing on the next startup().

> ["The PCIe slot" == the 16x PCIe slot on PowerMacs here, for
> the record; it isn't connected over a bridge to HT, but is
> directly connected to the CPC945 (U4) chip.]

Yup, the Attu if you prefer :-)

> There are more problems there (with this current code): the LSI
> IRQ will always be #3, which cannot be used as an MSI IRQ;

Are you sure about that ? In this case, we need a special kludge for
now. I though the MSI stuff could override any of the MPIC vectors, but
you might well be right there, it might not work with the U4 internal
ones.

> and the MSI address to use can not be found on a parent HT bridge
> (as there is none, duh).  That last problem makes the patch
> perfectly safe for the CPC945 PCIe port though :-)

Yes, I know :-) We need specific code to discover that a device is
hanging off the Attu instead of HT. I already explained it all to
Michael, it shouldn't be too hard. I even have a card setup to test it,
just didn't have time to do it just yet.

> Can't we just check here?  If not, what's the point of having
> a return code here?  although doing the check in check() might
> be conceptually nicer, sure.

Yes, nicer and avoids going all the way to allocating stuff and then
having to de-allocate.

Ben.

  reply	other threads:[~2006-11-07  9:16 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-07  7:21 [RFC/PATCH 0/7] Powerpc MSI Implementation Michael Ellerman
2006-11-07  7:21 ` [RFC/PATCH 2/7] Make some MSI-X #defines generic Michael Ellerman
2006-11-13 18:31   ` patch pci-make-some-msi-x-defines-generic.patch added to gregkh-2.6 tree gregkh
2006-11-07  7:21 ` [RFC/PATCH 1/7] Add #defines for Hypertransport MSI fields Michael Ellerman
2006-11-07  8:01   ` Segher Boessenkool
2006-11-07  7:21 ` [RFC/PATCH 3/7] Rip out the existing powerpc msi stubs Michael Ellerman
2006-11-07  7:21 ` [RFC/PATCH 4/7] Powerpc MSI implementation Michael Ellerman
2006-11-07 20:07   ` Matthew Wilcox
2006-11-07 20:14     ` Russell King
2006-11-07 20:40       ` Benjamin Herrenschmidt
2006-11-07 20:44       ` Matthew Wilcox
2006-11-07 20:48         ` Russell King
2006-11-07 21:02           ` Matthew Wilcox
2006-11-07 22:25             ` Russell King
2006-11-07 22:29               ` Benjamin Herrenschmidt
2006-11-07 23:11                 ` Eric W. Biederman
2006-11-08  0:15                   ` Benjamin Herrenschmidt
2006-11-08  1:33                     ` Eric W. Biederman
2006-11-08  2:08                       ` Benjamin Herrenschmidt
2006-11-08  2:43                         ` Eric W. Biederman
2006-11-08  3:02                           ` Benjamin Herrenschmidt
2006-11-07 20:39     ` Benjamin Herrenschmidt
2006-11-07  7:21 ` [RFC/PATCH 5/7] RTAS " Michael Ellerman
2006-11-08 20:16   ` Jake Moilanen
2006-11-08 23:35     ` Michael Ellerman
2006-11-07  7:21 ` [RFC/PATCH 6/7] MPIC MSI backend Michael Ellerman
2006-11-07  8:27   ` Segher Boessenkool
2006-11-07  8:42     ` Benjamin Herrenschmidt
2006-11-07  9:04       ` Segher Boessenkool
2006-11-07  9:16         ` Benjamin Herrenschmidt [this message]
2006-11-07 11:12           ` Segher Boessenkool
2006-11-07  7:21 ` [RFC/PATCH 7/7] Enable MSI on Powerpc Michael Ellerman
2006-11-07  7:41 ` [RFC/PATCH 0/7] Powerpc MSI Implementation Benjamin Herrenschmidt
2006-11-07  8:02   ` Greg KH
2006-11-08  5:18     ` Michael Ellerman
2006-11-08 10:26       ` Eric W. Biederman
2006-11-08 23:33         ` Michael Ellerman
2006-11-09  7:36           ` Segher Boessenkool
2006-11-13  6:05             ` Michael Ellerman

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=1162890963.28571.465.camel@localhost.localdomain \
    --to=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=ebiederm@xmission.com \
    --cc=greg@kroah.com \
    --cc=linux-pci@atrey.karlin.mff.cuni.cz \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=segher@kernel.crashing.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).