mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-21 17:25:09 +00:00
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:
parent
164e1f20ec
commit
bb74c2db4d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=194237
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue