diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-06-01 03:46:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-06-01 11:18:27 -0400 |
commit | 0dd11f9be47188ce08543ef65e9ece9beb2027dc (patch) | |
tree | 28a76160faedd4a506e19c2debd1d0a022bf3dfe /drivers/pci | |
parent | 4eb527a0ca83de28e773371f42abad2ab1ed7fdf (diff) |
msi: fix the ordering of msix irqs
"Mike Miller (OS Dev)" <mikem@beardog.cca.cpqcorp.net> writes:
Found what seems the problem with our vectors being listed backward. In
drivers/pci/msi.c we should be using list_add_tail rather than list_add to
preserve the ordering across various kernels. Please consider this for
inclusion.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Screwed-up-by: Michael Ellerman <michael@ellerman.id.au>
Cc: "Mike Miller (OS Dev)" <mikem@beardog.cca.cpqcorp.net>
Cc: Andi Kleen <ak@suse.de>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/msi.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index f7f747016ecd..61c46d66c01e 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c | |||
@@ -333,7 +333,7 @@ static int msi_capability_init(struct pci_dev *dev) | |||
333 | msi_mask_bits_reg(pos, is_64bit_address(control)), | 333 | msi_mask_bits_reg(pos, is_64bit_address(control)), |
334 | maskbits); | 334 | maskbits); |
335 | } | 335 | } |
336 | list_add(&entry->list, &dev->msi_list); | 336 | list_add_tail(&entry->list, &dev->msi_list); |
337 | 337 | ||
338 | /* Configure MSI capability structure */ | 338 | /* Configure MSI capability structure */ |
339 | ret = arch_setup_msi_irqs(dev, 1, PCI_CAP_ID_MSI); | 339 | ret = arch_setup_msi_irqs(dev, 1, PCI_CAP_ID_MSI); |
@@ -404,7 +404,7 @@ static int msix_capability_init(struct pci_dev *dev, | |||
404 | entry->dev = dev; | 404 | entry->dev = dev; |
405 | entry->mask_base = base; | 405 | entry->mask_base = base; |
406 | 406 | ||
407 | list_add(&entry->list, &dev->msi_list); | 407 | list_add_tail(&entry->list, &dev->msi_list); |
408 | } | 408 | } |
409 | 409 | ||
410 | ret = arch_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSIX); | 410 | ret = arch_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSIX); |