public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* Why MSI is limited to 32 MSI's per device
@ 2016-06-14 14:58 valmiki
  2016-06-14 15:45 ` Mark Rutland
  0 siblings, 1 reply; 4+ messages in thread
From: valmiki @ 2016-06-14 14:58 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Why MSI interrupts are limited to 32 per device ?
We have 16 bit data, with which we can have 2^16 combinaitons of different
data, which in turn those many MSI vectors.

Other than increase in number interrupts to 2048 in MSI-X, what advantage we
get by using MSI-X over MSI.

I read MSI-X interrupts can be targeted to different CPU's in an SMP system.
why can't MSI interrupts can be targeted to different processors ?  


Thanks & Regards,
Valmiki
 

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

* Why MSI is limited to 32 MSI's per device
  2016-06-14 14:58 Why MSI is limited to 32 MSI's per device valmiki
@ 2016-06-14 15:45 ` Mark Rutland
  2016-06-15  6:39   ` valmiki
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Rutland @ 2016-06-14 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jun 14, 2016 at 02:58:36PM +0000, valmiki wrote:
> Hi,
> 
> Why MSI interrupts are limited to 32 per device ?
> We have 16 bit data, with which we can have 2^16 combinaitons of different
> data, which in turn those many MSI vectors.

I assume you're specifically asking w.r.t. PCI.
 
Conventional PCI allowed devices to have up to 32 MSIs, no more. PCI
devices are only permitted to choose up to the low 5 bits of an MSI
payload. The remaining bits are shared by all MSIs.

> Other than increase in number interrupts to 2048 in MSI-X, what advantage we
> get by using MSI-X over MSI.

As alluded to below, MSI-X allows MSIs to be targeted at different
doorbell addresses, and provides full control of the payload of each
MSI.

There may be other gains that I am not aware of.

> I read MSI-X interrupts can be targeted to different CPU's in an SMP system.
> why can't MSI interrupts can be targeted to different processors ?  

Conventional PCI has a single doorbell address per device. I believe
that x86 had a doorbell per-cpu, and hence all MSIs for a device
targeted the same CPU. I'm not entirely certain on that, nor whether
things have changed.

Whether or not that holds elsewhere depends on your MSI controller and
IRQ controllers.

Thanks,
Mark.

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

* Why MSI is limited to 32 MSI's per device
  2016-06-14 15:45 ` Mark Rutland
@ 2016-06-15  6:39   ` valmiki
  2016-06-15 12:49     ` Arnd Bergmann
  0 siblings, 1 reply; 4+ messages in thread
From: valmiki @ 2016-06-15  6:39 UTC (permalink / raw)
  To: linux-arm-kernel

Thanks a lot Mark.

I have one more doubt regarding MSI-X, why MSI-X table is maintained in end
points bar memory, why cant it be maintained/allocated in host memory ?

Thanks & Regards,
valmiki

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

* Why MSI is limited to 32 MSI's per device
  2016-06-15  6:39   ` valmiki
@ 2016-06-15 12:49     ` Arnd Bergmann
  0 siblings, 0 replies; 4+ messages in thread
From: Arnd Bergmann @ 2016-06-15 12:49 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday, June 15, 2016 6:39:53 AM CEST valmiki wrote:
> Thanks a lot Mark.
> 
> I have one more doubt regarding MSI-X, why MSI-X table is maintained in end
> points bar memory, why cant it be maintained/allocated in host memory ?

Making the device do a DMA read to fetch the MSI-X descriptor every time it
wants to send an interrupt message would add a serious overhead to very
time-critical operation. I don't think this is something the PCI SIG would
have considered.

	Arnd

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

end of thread, other threads:[~2016-06-15 12:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-14 14:58 Why MSI is limited to 32 MSI's per device valmiki
2016-06-14 15:45 ` Mark Rutland
2016-06-15  6:39   ` valmiki
2016-06-15 12:49     ` Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox