LKML Archive on
help / color / mirror / Atom feed
From: Micha Nelissen <>
To: Ingo Molnar <>
Cc: Thomas Gleixner <>,
	Ingo Molnar <>, "H. Peter Anvin" <>,, "Venkatesh Pallipadi (Venki)" <>,
	Jesse Barnes <>,,,
	Matthew Wilcox <>
Subject: Re: [PATCH] Add support for multiple MSI on x86
Date: Mon, 14 Feb 2011 20:47:43 +0100	[thread overview]
Message-ID: <> (raw)
In-Reply-To: <>

Ingo Molnar wrote:
> * Micha Nelissen <> wrote:
>> Patch is based on earlier patch from Matthew Wilcox.
> Hm, there's an awful lot of 'background', 'implementation', 'advantages', 
> 'disadvantages', 'testing' description missing.

Sorry, my bad, wrong assumption that this would be common knowledge.

PCI devices interrupt the CPU using 'legacy' INTx; or PCI-e devices can 
do a special write, called an MSI (message signaled interrupt). The 
interrupt vector is chosen by the CPU, different devices use different 
vectors so that software can keep the interrupt sources separate 
(instead of using shared INTx "lines").

Most PCI-e devices support what's called MSI-X, but not all do. 
Especially for FPGA based endpoints it's easier to implement only 
'regular' MSI support. MSI-X basically involves implementing a lookup 
table that maps interrupt types in the device to interrupt vectors for 
the CPU. 'Regular' MSI (non MSI-X) only supports a contiguous block of 
interrupt vectors: a base vector with a vector count (which is a power 
of 2).

The x86 code to allocate these interrupt vectors does not handle the <> 
1 vector count case; it would return that it could only handle 1. So 
either device drivers had 1 MSI, or the device should support MSI-X to 
have multiple interrupts (and handlers) for one device.

This patch adds the needed code to support multiple MSI per device.

Advantages: separate interrupt handlers for separate tasks in the 
device. This allows device drivers to be better structured. Easy 
'diagnostics' due to /proc/interrupts counting number of interrupts for 
separate functionality separately.

Disadvantages: more complex code due to requirement that it is a 
contiguous block, so needs some effort to look for a free block with the 
requested count.

Tested: on an Atom platform, with a Xilinx based PCI-e core in FPGA.

Please review; thanks,


  reply	other threads:[~2011-02-14 19:48 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-13 20:25 Micha Nelissen
2011-02-14 12:34 ` Ingo Molnar
2011-02-14 19:47   ` Micha Nelissen [this message]
2011-02-15  2:38     ` Ingo Molnar
2011-02-14 20:55 ` Thomas Gleixner
2011-03-04 18:37   ` Jesse Barnes
2011-06-17 17:12   ` Matthew Wilcox
2011-03-04 18:36 ` Jesse Barnes
2011-03-04 19:53   ` Micha Nelissen
2011-03-08 21:05     ` Thomas Gleixner
     [not found]       ` <>
2011-03-08 21:16         ` Thomas Gleixner
     [not found]           ` <>
2011-03-08 22:13             ` Thomas Gleixner
2011-03-10  2:05           ` Roland Dreier
2011-03-10 15:33             ` Clemens Ladisch

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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \ \ \ \ \ \ \
    --subject='Re: [PATCH] Add support for multiple MSI on x86' \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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