You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1.1 KiB
27 lines
1.1 KiB
Interrupt Affinity Filter -- How it works:
|
|
==========================================
|
|
|
|
IntFiltr works by intercepting a specific PnP IRP that is passed to
|
|
devices (IRP_MN_START_DEVICE).
|
|
|
|
The filter looks at the (translated) resource list that is passed along
|
|
with this IRP, and modifies the affinity mask (according to settings
|
|
specified by the user) for any of the Interrupt resources in the device's
|
|
resource list. This modified IRP is then passed-on to lower drivers in
|
|
the stack.
|
|
|
|
As a result, lower drivers (which use entries in this resource list when
|
|
setting up their ISRs) will get their ISRs installed only on the set of
|
|
processors that the user has specified (via the IntFiltr configuration
|
|
tool).
|
|
|
|
The end result is that the APIC gets programmed to direct certain
|
|
interrupts to certain subsets of the CPUs in the system (which can be
|
|
verified by doing a "!ioapic" in the debugger).
|
|
|
|
------------------------------
|
|
|
|
NOTE: one of the main challenges in writing this filter was ensuring
|
|
that it could be installed on _any_ device stack.
|
|
|
|
|