Forbid multi-vector MSI interrupt vectors migration to another CPU once

allocated. MSI have strict vectors allocation requirements, which are not
satisfied now during reallocation. This is not the best possible solution,
but better then just broken, as it was.

No objections: current@, arch@, jhb@
This commit is contained in:
Alexander Motin 2009-06-15 13:47:49 +00:00
parent 164e1f20ec
commit bb74c2db4d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=194237
2 changed files with 4 additions and 0 deletions

View file

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

View file

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