IP Library › Granted Patent US 12,248,800
Granted Patent B2
US 12,248,800 · App. 17/561,433 · Granted Mar 11, 2025

Virtualization of interprocessor interrupts

Inventors: Gilbert Neiger (Portland, OR); Rajesh Sankaran (Portland, OR); Hisham Shafi (Akko, IL)
Assignee: Intel Corporation
G06F9/45558G06F13/24G06F2213/24
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 12,248,800
App. No.
17/561,433
Granted
Mar 11, 2025
Kind
B2
Abstract

Embodiments of apparatuses, methods, and systems for virtualization of interprocessor interrupts are disclosed. In an embodiment, an apparatus includes a plurality of processor cores; an interrupt controller register; and logic to, in response to a write from a virtual machine to the interrupt controller register, record an interprocessor interrupt in a first data structure configured by a virtual machine monitor and send a notification of the interprocessor interrupt to at least one of the plurality of processor cores.

Claims (33)

1. An apparatus comprising:

a plurality of processor cores;

a local interrupt controller comprising:

an interrupt controller register; and

logic to, in response to a write from a virtual machine to the interrupt controller register, record an interprocessor interrupt in a first data structure configured by a virtual machine monitor and send a notification of the interprocessor interrupt to at least one of the plurality of processor cores,

wherein the interrupt controller register is accessed by software according to a method that depends on a mode of the local interrupt controller, wherein the mode comprises a first mode in which the interrupt controller register is accessed by the software through memory accesses to a specified address, and a second mode in which the interrupt controller register is accessed by the software through a write instruction to a different register.

2. The apparatus of claim 1 , wherein the logic is to record the interprocessor interrupt and send the notification from within the virtual machine.

3. The apparatus of claim 2 , wherein the at least one of the plurality of processor cores is a processor core on which the virtual machine executes.

4. The apparatus of claim 3 , wherein the logic is to reference a second data structure to check that the at least one of the plurality of processor cores is a valid destination, the second data structure to be configured with interrupt controller identifiers corresponding to processor cores in a same subset of processor cores as the processor core on which the virtual machine executes.

5. The apparatus of claim 4 , wherein the interrupt controller register has a first field to indicate a destination of the interprocessor interrupt.

6. The apparatus of claim 5 , wherein the interrupt controller register has a second field to indicate whether to send the interprocessor interrupt only to the destination indicated in the first field, only to the core on which the virtual machine executes, to all of the subset of processor cores including the core on which the virtual machine executes, or to all of the subset of processor cores excluding the core on which the virtual machine executes.

7. The apparatus of claim 5 , wherein the interrupt controller register has a second field to indicate an interrupt vector.

8. The apparatus of claim 5 , wherein the interrupt controller register has a second field to indicate a destination mode.

9. The apparatus of claim 5 , wherein the interrupt controller register has a second field to indicate a delivery status.

10. The apparatus of claim 1 , wherein the interprocessor interrupt is a user-level interrupt.

11. A method comprising:

configuring, by a virtual machine monitor, a first data structure to record interprocessor interrupts;

configuring an interrupt controller register of a local interrupt controller to send an interprocessor interrupt from a virtual machine;

writing, by software running on the virtual machine, to an interrupt controller register;

recording, in response to writing, the interprocessor interrupt in the first data structure;

sending, in response to writing, a notification of the interprocessor interrupt to at least one of a plurality of processor cores;

wherein the method further comprises accessing the interrupt controller register by the software according to a method that depends on a mode of the local interrupt controller, wherein the mode comprises a first mode in which the interrupt controller register is accessed by the software through memory accesses to a specified address, and a second mode in which the interrupt controller register is accessed by the software through a write instruction to a different register.

12. The method of claim 11 , wherein recording and sending is performed from within the virtual machine.

13. The method of claim 12 , wherein the at least one of the plurality of processor cores is a processor core on which the virtual machine executes.

14. The method of claim 13 , wherein the logic is to reference a second data structure to check that the at least one of the plurality of processor cores is a valid destination, the second data structure to be configured with interrupt controller identifiers corresponding to processor cores in a same subset of processor cores as the processor core on which the virtual machine executes.

15. A system comprising:

a system bus;

a plurality of processors coupled to the system bus, at least one of the processors having a plurality of cores;

a local interrupt controller corresponding to one of the processor cores, including:

an interrupt controller register; and

logic to, in response to a write from a virtual machine to the interrupt controller register, record an interprocessor interrupt in a first data structure configured by a virtual machine monitor and send a notification of the interprocessor interrupt to at least one of the plurality of processor cores;

wherein the interrupt controller register is accessed by software according to a method that depends on a mode of the local interrupt controller, wherein the mode comprises a first mode in which the interrupt controller register is accessed by the software through memory accesses to a specified address, and a second mode in which the interrupt controller register is accessed by the software through a write instruction to a different register.

16. The system of claim 15 further comprising an input/output interrupt controller coupled to the system bus.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2022
From: NEIGER, GILBERT; SANKARAN, RAJESH; SHAFI, HISHAM
To: INTEL CORPORATION
Reel/Frame 058725/0808 →
Continuity (2)
Provisional Application 63189616 · May 17, 2021
Related Publication 20220365802A1 · Nov 17, 2022
References Cited (4)
US 20100191888A1 · Serebrin et al. · 2010 [cited by applicant]
US 20170206177A1 · Tsai et al. · 2017 [cited by applicant]
US 20200409735A1 · Grandhi et al. · 2020 [cited by applicant]
European Search Report and Search Opinion, EP App. No. 22165411.4, Aug. 19, 2022, 11 pages. [cited by applicant]