Actions
Bug #725
openapic_grp_set_cpu misorders check for FIXED interrupts
Status:
New
Priority:
Normal
Assignee:
-
Category:
kernel
Start date:
2011-02-12
Due date:
% Done:
0%
Estimated time:
Difficulty:
Tags:
Gerrit CR:
External Bug:
Description
While I have been researching some bizarreness in interrupt handling on VMware, I noticed this:
A fixed interrupt, coming into
uts/i86pc/io/pcplusmp/apic_introp.c:apic_grp_set_cpu()
will wind up getting passed to apic_set_cpu(), even though reassignment of CPUs is only meant for MSI and MSI-X interrupts.
The problem is this code:
/* A "group" of 1 */
if (num_vectors == 1) {
mutex_exit(&airq_mutex);
return (apic_set_cpu(irqno, new_cpu, result));
}
That check is done before the check for MSI interrupts, which means that single FIXED interrupt will bypass the ordinary MSI check. Probably the simplest solution is to move that check a bit later in the code path, but an alternate solution might be add a check apic_set_cpu(), although that seems overkill.
No data to display
Actions