Project

General

Profile

Bug #725

apic_grp_set_cpu misorders check for FIXED interrupts

Added by Garrett D'Amore over 9 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
kernel
Start date:
2011-02-12
Due date:
% Done:

0%

Estimated time:
Difficulty:
Tags:
Gerrit CR:

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.

Also available in: Atom PDF