summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2009-06-15 13:47:49 +0000
committerAlexander Motin <mav@FreeBSD.org>2009-06-15 13:47:49 +0000
commitbb74c2db4d880914f1420bba00fa9e98ab23d7ec (patch)
tree18c6a630c0cb43a9a423e1fbb62a505e5c6dd323
parent164e1f20ecf89ccacec38e82360e96dd2e2060b9 (diff)
Notes
-rw-r--r--sys/amd64/amd64/msi.c2
-rw-r--r--sys/i386/i386/msi.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/amd64/amd64/msi.c b/sys/amd64/amd64/msi.c
index b34d835d08ce..0583541859c4 100644
--- a/sys/amd64/amd64/msi.c
+++ b/sys/amd64/amd64/msi.c
@@ -210,6 +210,8 @@ msi_assign_cpu(struct intsrc *isrc, u_int apic_id)
old_id = msi->msi_cpu;
if (old_vector && old_id == apic_id)
return;
+ if (old_vector && !msi->msi_msix && msi->msi_first->msi_count > 1)
+ return;
/* Allocate IDT vector on this cpu. */
vector = apic_alloc_vector(apic_id, msi->msi_irq);
if (vector == 0)
diff --git a/sys/i386/i386/msi.c b/sys/i386/i386/msi.c
index 8b18a10965bf..e42f3d15556e 100644
--- a/sys/i386/i386/msi.c
+++ b/sys/i386/i386/msi.c
@@ -210,6 +210,8 @@ msi_assign_cpu(struct intsrc *isrc, u_int apic_id)
old_id = msi->msi_cpu;
if (old_vector && old_id == apic_id)
return;
+ if (old_vector && !msi->msi_msix && msi->msi_first->msi_count > 1)
+ return;
/* Allocate IDT vector on this cpu. */
vector = apic_alloc_vector(apic_id, msi->msi_irq);
if (vector == 0)