linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Problems with MSI-X on ia64
@ 2006-01-26 17:14 Miller, Mike (OS Dev)
  2006-01-26 17:24 ` Mark Maule
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Miller, Mike (OS Dev) @ 2006-01-26 17:14 UTC (permalink / raw)
  To: linux-kernel, linux-scsi, linux-ia64

Hello,
Has anyone tested MSI-X on ia64 based platforms? We're using a 2.6.9
variant and a cciss driver with MSI/MSI-X support. The kernel has MSI
enabled. On ia64 the MSI-X table is all zeroes. On Intel x86_64
platforms the table contains valid data and everything works as
expected.

If I understand how this works the Linux kernel is supposed to program
up the table based on the HW platform. I can't find anything in the ia64
code that does this. For x86_64 and i386 it looks like the magic address
is 

	#define APIC_DEFAULT_BASE	0xfee00000

Anybody know why this isn't defined for ia64? Any answers, input, or
flames are appreciated.

Thanks,
mikem

^ permalink raw reply	[flat|nested] 18+ messages in thread
* RE: Problems with MSI-X on ia64
@ 2006-01-26 20:37 Miller, Mike (OS Dev)
  2006-01-27  4:37 ` Greg KH
  0 siblings, 1 reply; 18+ messages in thread
From: Miller, Mike (OS Dev) @ 2006-01-26 20:37 UTC (permalink / raw)
  To: Grundler, Grant G; +Cc: linux-kernel, linux-scsi, linux-ia64

> -----Original Message-----
> From: Grundler, Grant G 
> > We're using a 2.6.9 variant and a cciss driver with 
> MSI/MSI-X support.
> > The kernel has MSI enabled. On ia64 the MSI-X table is all zeroes.
> 
> Could you post the debug output you've collected so far?

There are 2 MSI-X capable controllers in the system. On IPF this is what
the tables look like:

cciss: offset = 0xfe000 table offset = 0xfe000 BIR = 0x0
cciss: 0: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: 1: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: 2: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: 3: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: using DAC cycles
ACPI: PCI interrupt 0000:88:00.0[A] -> GSI 71 (level, low) -> IRQ 61
cciss: MSI-X enabled
cciss: offset = 0xfe000 table offset = 0xfe000 BIR = 0x0
cciss: 0: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: 1: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: 2: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: 3: vector = 0,msg data = 0, msg upper addr = 0,msg addr = 0
cciss: using DAC cycles
blocks= 143305920 block_size= 512
heads= 255, sectors= 32, cylinders= 17562
 
blocks= 142130880 block_size= 512
heads= 255, sectors= 32, cylinders= 17418
 
cciss/c2d0:

And this is where we hang, when enabling interrupts in the driver.

The table on x86_64 looks like this:

cciss: Device 0x3230 has been found at bus 11 dev 0 func 0
ACPI: PCI Interrupt 0000:0b:00.0[A] -> GSI 16 (level, low) -> IRQ 169
cciss: offset = 0xfe000 table offset = 0xfe000 BIR = 0x0
cciss: 0: vector = 0,msg data = 40d1, msg upper addr = 0,msg addr =
fee00000
cciss: 1: vector = 0,msg data = 40d9, msg upper addr = 0,msg addr =
fee00000
cciss: 2: vector = 0,msg data = 40e1, msg upper addr = 0,msg addr =
fee00000
cciss: 3: vector = 0,msg data = 40e9, msg upper addr = 0,msg addr =
fee00000
cciss: using DAC cycles

mikem
















> 
> > On Intel x86_64 platforms the table contains valid data and 
> everything 
> > works as expected.
> 
> It should look similar for ia64 since both use 0xfeeXXXXX 
> Processor Interrupt Block address and similar intr vectors.
> 
> > If I understand how this works the Linux kernel is supposed 
> to program 
> > up the table based on the HW platform. I can't find anything in the 
> > ia64 code that does this. For x86_64 and i386 it looks like 
> the magic 
> > address is
> > 
> > 	#define APIC_DEFAULT_BASE	0xfee00000
> > 
> > Anybody know why this isn't defined for ia64? Any answers, 
> input, or 
> > flames are appreciated.
> 
> APIC_DEAFULT_BASE isn't used.  See 
> 
> fgrep MSI_ADDRESS_HEADER drivers/pci/*
> drivers/pci/msi.c:      dest_id = (MSI_ADDRESS_HEADER << 
> MSI_ADDRESS_HEADER_SHIFT);
> drivers/pci/msi.h:#define MSI_ADDRESS_HEADER            0xfee
> drivers/pci/msi.h:#define MSI_ADDRESS_HEADER_SHIFT      12
> drivers/pci/msi.h:#define MSI_ADDRESS_HEADER_MASK       0xfff000
> 
> This is one of the things that Mark Maule/SGI needs to change 
> to support MSI on SN2.
> 
> grant
> 

^ permalink raw reply	[flat|nested] 18+ messages in thread
* RE: Problems with MSI-X on ia64
@ 2006-01-27 15:34 Miller, Mike (OS Dev)
  0 siblings, 0 replies; 18+ messages in thread
From: Miller, Mike (OS Dev) @ 2006-01-27 15:34 UTC (permalink / raw)
  To: Greg KH; +Cc: Grundler, Grant G, linux-kernel, linux-scsi, linux-ia64

> -----Original Message-----
> From: Greg KH [mailto:greg@kroah.com] 
> cciss/c2d0:
> > 
> > And this is where we hang, when enabling interrupts in the driver.
> 
> Can you try 2.6.15, or possibly 2.6.16-rc1-mm3?
> 
That's the next step. Unfortunately the system is at another site so
there is latency in the process.

mikem

^ permalink raw reply	[flat|nested] 18+ messages in thread
* RE: Problems with MSI-X on ia64
@ 2006-02-17 19:52 Luck, Tony
  2006-02-17 20:04 ` Grant Grundler
  0 siblings, 1 reply; 18+ messages in thread
From: Luck, Tony @ 2006-02-17 19:52 UTC (permalink / raw)
  To: Chris Wedgwood, Grant Grundler
  Cc: Greg KH, linux-kernel, linux-scsi, linux-ia64, linux-pci, Miller,
	Mike (OS Dev),
	Jesse Barnes

> Hrm, it may be doing this.  I wonder how that works though with 4GB's
> of RAM installed?

Systems with 4G of RAM usually map part of the RAM above 4G so as to
leave a hole for i/o mapping etc.

-Tony

^ permalink raw reply	[flat|nested] 18+ messages in thread
* RE: Problems with MSI-X on ia64
@ 2006-02-21 20:21 Miller, Mike (OS Dev)
  2006-02-25 16:23 ` Grant Grundler
  0 siblings, 1 reply; 18+ messages in thread
From: Miller, Mike (OS Dev) @ 2006-02-21 20:21 UTC (permalink / raw)
  To: Grundler, Grant G, Luck, Tony
  Cc: Chris Wedgwood, Grant Grundler, Greg KH, linux-kernel,
	linux-scsi, linux-ia64, linux-pci, Jesse Barnes, Patterson,
	Andrew D (Linux R&D)

> -----Original Message-----
> From: Grundler, Grant G 
> 
> On Fri, Feb 17, 2006 at 11:52:45AM -0800, Luck, Tony wrote:
> > > Hrm, it may be doing this.  I wonder how that works though with 
> > > 4GB's of RAM installed?
> > 
> > Systems with 4G of RAM usually map part of the RAM above 4G 
> so as to 
> > leave a hole for i/o mapping etc.
> 
> exactly.
> rx2600 physical memory map only has 1GB of RAM below 4GB 
> address space.

So I looked at 2.6.16-rc3 which works in my lab, but phys_addr is still
an int. How can that work? I believe Andrew saw the same thing in
2.6.15.

mikem

^ permalink raw reply	[flat|nested] 18+ messages in thread
* RE: Problems with MSI-X on ia64
@ 2006-02-27 18:36 Miller, Mike (OS Dev)
  0 siblings, 0 replies; 18+ messages in thread
From: Miller, Mike (OS Dev) @ 2006-02-27 18:36 UTC (permalink / raw)
  To: Grant Grundler
  Cc: Grundler, Grant G, Luck, Tony, Chris Wedgwood, Greg KH,
	linux-kernel, linux-scsi, linux-ia64, linux-pci, Jesse Barnes,
	Patterson, Andrew D (Linux R&D)

> -----Original Message-----
> From: Grant Grundler [mailto:grundler@parisc-linux.org] 
> Sent: Saturday, February 25, 2006 10:24 AM
> To: Miller, Mike (OS Dev)
> Cc: Grundler, Grant G; Luck, Tony; Chris Wedgwood; Grant 
> Grundler; Greg KH; linux-kernel@vger.kernel.org; 
> linux-scsi@vger.kernel.org; linux-ia64@vger.kernel.org; 
> linux-pci@atrey.karlin.mff.cuni.cz; Jesse Barnes; Patterson, 
> Andrew D (Linux R&D)
> Subject: Re: Problems with MSI-X on ia64
> 
> On Tue, Feb 21, 2006 at 02:21:42PM -0600, Miller, Mike (OS Dev) wrote:
> > So I looked at 2.6.16-rc3 which works in my lab, but phys_addr is 
> > still an int. How can that work?
> 
> "int" (u32) will work if the top bits are zero or alias to 
> the same thing as the full 64-bit address.
> Can you apply the patch and add printk's to dump the
> pci_resource_start(dev,bir) in msix_capability_init()?

My box is in a vegetative state. Working with HW folks to resolve.

mikem

> 
> 
> > I believe Andrew saw the same thing in 2.6.15.
> 
> Yes, AFIACT 2.6.15 has the same code.
> 
> thanks,
> grant
> 

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2006-06-01  6:34 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-26 17:14 Problems with MSI-X on ia64 Miller, Mike (OS Dev)
2006-01-26 17:24 ` Mark Maule
2006-01-26 20:24 ` Grant Grundler
2006-02-17  7:58 ` Grant Grundler
2006-02-17  8:46   ` Chris Wedgwood
2006-02-17 14:11     ` Matthew Wilcox
2006-02-17 16:36     ` Grant Grundler
2006-02-17 19:10       ` Chris Wedgwood
2006-06-01  6:35   ` Grant Grundler
2006-01-26 20:37 Miller, Mike (OS Dev)
2006-01-27  4:37 ` Greg KH
2006-01-27 15:34 Miller, Mike (OS Dev)
2006-02-17 19:52 Luck, Tony
2006-02-17 20:04 ` Grant Grundler
2006-02-17 20:21   ` Roland Dreier
2006-02-21 20:21 Miller, Mike (OS Dev)
2006-02-25 16:23 ` Grant Grundler
2006-02-27 18:36 Miller, Mike (OS Dev)

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).