Emulating a line-based interrupt transaction in response to a message signaled interrupt
View Patent ↗Methods, systems, apparatuses and program products are disclosed for managing interrupt services in hypervisor and hypervisor-related environments in Message Signaled Interrupts are emulated as other type(s) of interrupt. According to an aspect of the present invention, a method of executing a program includes receiving a MSI (message signaled interrupt). Responsively, a virtual interrupt is generated and an ISR (interrupt service routine) is invoked that handles a line-based virtual interrupt transaction. A surrogate or virtual peripheral device status may also be provided and may be associated with the virtual interrupt. A single device interrupt event may, in certain circumstances, be serviced both as a line-based interrupt and also as an MSI, or as either responsive to run-time context. Embodiments of the present invention enable superior tradeoffs in regards to the interrupt sharing to a greater and more flexible extent than with previous implementations. Moreover, it makes possible interrupt sharing using an ISR that was not expressly designed for interrupt sharing.
1. A method of executing a program comprising:
receiving a message signaled interrupt associated with a peripheral device by a first interrupt service routine in a privileged domain;
calling a second interrupt service routine in a non-privileged domain responsive to receiving the message signaled interrupt;
emulating a line-based interrupt transaction into the second interrupt service routine;
trapping, by a hypervisor in the privileged domain, input/output (I/O) functions invoked by the second interrupt service routine; and
performing, by the hypervisor, virtualized I/Os by emulating the peripheral device associated with the message signaled interrupt.
2. The method of claim 1 wherein:
the first interrupt service routine runs in a more privileged processor mode; and
the second interrupt service routine runs in a less privileged processor mode.
3. The method of claim 1 wherein:
the first interrupt service routine is associated with a hypervisor program that runs in a privileged domain; and
the second interrupt service routine is associated with an operating system program.
4. The method of claim 3 wherein the step of:
emulating is performed by service routines that provide a virtualized sharing of the peripheral device.
5. The method of claim 3 wherein:
the second interrupt service routine is shared by multiple interrupt-capable virtual devices.
6. The method of claim 4 wherein:
the virtualized sharing provides a surrogate peripheral device status to the second interrupt service routine; and
the privileged domain processes input-output data to or from the peripheral device.
7. A computer program product comprising:
at least one computer-readable medium having instructions encoded therein, the instructions when executed by at least one processor cause said at least one processor to:
operate for interrupt handling by steps comprising the acts of:
receiving a message signaled interrupt associated with a peripheral device by a first interrupt service routine in a privileged domain;
calling a second interrupt service routine in a non-privileged domain responsive to receiving the message signaled interrupt;
emulating a line-based interrupt transaction into the second interrupt service routine;
trapping, by a hypervisor in the privileged domain, input/output (I/O) functions invoked by the second interrupt service routine; and
performing, by the hypervisor, virtualized I/Os by emulating the peripheral device associated with the message signaled interrupt.
8. The computer program product of claim 7 wherein:
the first interrupt service routine runs in a more privileged processor mode; and
the second interrupt service routine runs in a less privileged processor mode.
9. The computer program product of claim 7 wherein the emulating is performed by service routines that provide a virtualized sharing of the peripheral device.
10. A method comprising:
an act of modulating a signal onto an electro-magnetic carrier wave impressed into a tangible medium, or of demodulating the signal from the electro-magnetic carrier wave, the signal having instructions encoded therein, the instructions when executed by at least one processor causing said at least one processor to:
operate for interrupt handling by steps comprising the acts of:
receiving a message signaled interrupt associated with a peripheral device by a first interrupt service routine in a privileged domain;
calling a second interrupt service routine in a non-privileged domain responsive to receiving the message signaled interrupt;
emulating a line-based interrupt transaction into the second interrupt service routine;
trapping, by a hypervisor in the privileged domain, input/output (I/O) functions invoked by the second interrupt service routine; and
performing, by the hypervisor, virtualized I/Os by emulating the peripheral device associated with the message signaled interrupt.
11. The method of claim 10 wherein:
the first interrupt service routine runs in a more privileged processor mode; and
the second interrupt service routine runs in a less privileged processor mode.
12. The method of claim 10 wherein the emulating is performed by service routines that provide a virtualized sharing of the peripheral device.