IP Library Granted Patent US 9,262,353
Granted Patent B2
US 9,262,353 · App. 14/590,203 · Granted Feb 16, 2016

Interrupt distribution scheme

Inventors: Josh P. de Cesare (Campbell, CA); Ruchi Wadhawan (Saratoga, CA); Erik P. Machnicki (San Jose, CA); Mark D. Hayter (Menlo Park, CA)
Assignee: Apple Inc.
G06F13/24G06F2213/2424Y02B60/1228
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,262,353
App. No.
14/590,203
Granted
Feb 16, 2016
Kind
B2
Abstract

In one embodiment, an interrupt controller may implement an interrupt distribution scheme for distributing interrupts among multiple processors. The scheme may take into account various processor state in determining which processor should receive a given interrupt. For example, the processor state may include whether or not the processor is in a sleep state, whether or not interrupts are enabled, whether or not the processor has responded to previous interrupts, etc. The interrupt controller may implement timeout mechanisms to detect that an interrupt is being delayed (e.g. after being offered to a processor). The interrupt may be re-evaluated at the expiration of a timeout, and potentially offered to another processor. The interrupt controller may be configured to automatically, and atomically, mask an interrupt in response to delivering an interrupt vector for the interrupt to a responding processor.

Claims (39)

1. An interrupt controller comprising:

circuitry coupled to one or more devices in a system to receive interrupts from the one or more devices; and

an interrupt router coupled to the circuitry, wherein the interrupt router is configured to:

select a processor from a plurality of processors in the system for a first interrupt received from one of the devices;

signal the first interrupt only to the selected processor from the plurality of processors;

initialize a timeout counter to a first timeout value in response to signaling the first interrupt to the selected processor, wherein the first timeout value is one of a plurality of timeout values and is selected responsive to a state of the selected processor, and wherein the state includes whether or not interrupts are enabled in the selected processor, wherein a given timeout value of the plurality of timeout values corresponds to the state in which interrupts are disabled in the selected processor, and wherein the given timeout value is dependent on a typical amount of time that interrupts are disabled in the selected processor;

select another processor for the first interrupt responsive to detecting expiration of the timeout counter for the interrupt without a response from the selected processor; and

signal the first interrupt to the other processor responsive to selecting the other processor.

2. The interrupt controller as recited in claim 1 , wherein the first timeout value is selected further responsive to a state of a second processor of the plurality of processors.

3. The interrupt controller as recited in claim 2 , wherein the second processor is the other processor to be selected responsive to expiration of the timeout counter for the selected processor.

4. The interrupt controller as recited in claim 1 , wherein the response is an interrupt acknowledgement response.

5. The interrupt controller as recited in claim 1 , wherein the state includes whether or not the selected processor is in a low power state.

6. The interrupt controller as recited in claim 5 , wherein a second given timeout value of the plurality of timeout values corresponds to the low power state and is higher than a third timeout value of the plurality of values that corresponds to a full on state of the selected processor.

7. The interrupt controller as recited in claim 6 , wherein the second given timeout value is dependent on an amount of time used to transition the selected processor from the low power state to the full on state.

8. The interrupt controller as recited in claim 1 , wherein the state includes an offline state programmed by software executing on the system.

9. The interrupt controller as recited in claim 1 , wherein the state includes an indication of a virtualized guest operating system being executed on the selected processor.

10. A system comprising:

a plurality of devices;

a plurality of processors; and

an interrupt controller coupled to the plurality of devices and the plurality of processors, wherein the interrupt controller is configured to:

receive a first interrupt from one of the plurality of devices;

select a processor from a plurality of processors for the first interrupt;

signal the first interrupt only to the selected processor from the plurality of processors;

initialize a timeout counter to a first timeout value in response to signaling the first interrupt to the selected processor, wherein the first timeout value is one of a plurality of timeout values and is selected responsive to a state of the selected processor, and wherein the state includes whether or not interrupts are enabled in the selected processor, and wherein a given timeout value of the plurality of timeout values corresponds to the state in which interrupts are disabled in the selected processor, and wherein the given timeout value is dependent on a typical amount of time that interrupts are disabled in the selected processor; and

select another processor for the first interrupt responsive to detecting expiration of the timeout counter for the interrupt without a response from the selected processor; and

signal the first interrupt to the other processor responsive to selecting the other processor.

11. The system as recited in claim 10 , wherein the state includes whether or not the selected processor is in a low power state.

12. The system as recited in claim 11 , wherein a second given timeout value of the plurality of timeout values corresponds to the low power state and is dependent on an amount of time used to transition the selected processor from the low power state to a full on state.

13. A method comprising:

an interrupt controller receiving an interrupt from a device;

the interrupt controller selecting a selected processor from a plurality of processors in a system including the interrupt controller;

offering the interrupt only to the selected processor from the plurality of processors;

selecting a timeout value from a plurality of timeout values responsive to a state of the selected processor, wherein the state includes whether or not interrupts are enabled in the selected processor, and wherein a given timeout value of the plurality of timeout values corresponds to the state in which interrupts are disabled in the selected processor, and wherein the given timeout value is dependent on a typical amount of time that interrupts are disabled in the selected processor;

initializing a timeout counter with the selected timeout value for the selected processor;

detecting a timeout for the selected processor without receiving an interrupt acknowledgement from the selected processor for the interrupt;

selecting a different processor of the plurality of processors responsive to the timeout; and

offering the interrupt to the different processor responsive to selecting the different processor.

14. The method as recited in claim 13 wherein the state includes whether or not the selected processor is in a low power state.

15. The method as recited in claim 14 wherein a second given timeout value of the plurality of timeout values corresponds to the low power state and is dependent on an amount of time used to transition the selected processor from the low power state to a full on state.

Continuity (2)
Continuation 12962146 · Dec 7, 2010
Related Publication 20150113193A1 · Apr 23, 2015