IP Library › Granted Patent US 10,754,676
Granted Patent B2
US 10,754,676 · App. 15/001,874 · Granted Aug 25, 2020

Sharing ownership of an input/output device using a device driver partition

Inventors: Juan J. Alvarez (Rochester, MN); Jesse P. Arroyo (Rochester, MN); Paul G. Crumley (Yorktown Heights, NY); Charles S. Graham (Rochester, MN); Joefon Jann (Ossining, NY); Timothy J. Schimke (Stewartville, MN); Ching-Farn E. Wu (Yorktown Heights, NY)
Assignee: International Business Machines Corporation
G06F9/45558G06F11/0712G06F9/3861G06F2009/45579G06F2009/45591
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 10,754,676
App. No.
15/001,874
Granted
Aug 25, 2020
Kind
B2
Abstract

The present disclosure relates to sharing an I/O device across multiple virtual machines. According to one embodiment, a computing system configures shared ownership of the I/O device between a first partition and one or more of the plurality of virtual machines. The computing system transfers partial ownership of the I/O device from the first partition to the one or more virtual machines and generates device configuration information for the I/O device. The virtual machines can use the generated device configuration information to access and configure the I/O device. Once the I/O device is configured for shared ownership, the computing system boots the one or more virtual machines.

Claims (64)

1. A method for sharing a physical I/O device across a plurality of virtual machines, comprising:

configuring shared ownership of the physical I/O device between a first partition and one or more of the plurality of virtual machines, wherein each virtual machine of the one or more virtual machines hosts a driver for the physical I/O device, and wherein the first partition comprises a hidden partition that does not host a general purpose operating system;

transferring partial ownership of the physical I/O device from the first partition to the one or more virtual machines, wherein partial ownership of the physical I/O device allows the one or more virtual machines to directly access the physical I/O device;

generating device configuration information for the physical I/O device to be used by the one or more virtual machines to access and configure the physical I/O device, wherein the device configuration information identifies a number of interrupts and memory spaces exclusively assigned to each of the one or more virtual machines for each respective virtual machine of the one or more virtual machines to directly access the physical I/O device using one or more physical functions and the identified interrupts and memory spaces exclusively assigned to the respective virtual machine;

booting the one or more virtual machines;

detecting an error at the physical I/O device;

initiating error recovery operations at the first partition; and

blocking error recovery operations at the one or more virtual machines until error recovery operations are completed at the first partition.

2. The method of claim 1 , wherein the blocking error recovery operations at the one or more virtual machines comprises:

setting a flag indicating that error recovery operations are executing at the first partition;

receiving, from a first virtual machine of the one or more virtual machines, a request for information about the error; and

transmitting, to the first virtual machine, information indicating that the first virtual machine is blocked from beginning error recovery operations.

3. The method of claim 1 , further comprising: upon receiving information indicating that error recovery operations at the first partition are complete, allowing error recovery operations to begin at the one or more virtual machines.

4. The method of claim 1 , further comprising:

detecting a fatal error at the physical I/O device;

terminating physical I/O device operations at the one or more virtual machines;

revoking partial ownership of the physical I/O device from the one or more virtual machines; and

initiating device recovery procedures.

5. The method of claim 4 , wherein the device recovery procedures comprise:

revoking ownership of the physical I/O device from the first partition; and

upon replacement of the physical I/O device with a second physical I/O device, configuring the second physical I/O device and granting full ownership of the second physical I/O device to the first partition.

6. The method of claim 4 , further comprising:

upon completing device recovery procedures, restoring physical I/O device access to the one or more virtual machines.

7. The computer program product of claim 1 , wherein the operations further comprise:

detecting a fatal error at the physical I/O device;

terminating physical I/O device operations at the one or more virtual machines;

revoking partial ownership of the physical I/O device from the one or more virtual machines; and

initiating device recovery procedures.

8. The computer program product of claim 7 , wherein the operations further comprise:

upon completing device recovery procedures, restoring physical I/O device access to the one or more virtual machines.

9. The method of claim 1 , wherein allowing the virtual machines to directly access the physical I/O device comprises allowing the virtual machines to use the device configuration information to communicate with the physical I/O device without communicating through a hypervisor or virtual functions.

10. A computer program product, comprising:

a computer-readable storage medium having computer readable program code embodied therewith, the computer readable program code configured to perform an operation for sharing a physical I/O device across a plurality of virtual machines, the operation comprising:

configuring shared ownership of the physical I/O device between a first partition and one or more of the plurality of virtual machines, wherein each virtual machine of the one or more virtual machines hosts a driver for the physical I/O device, and wherein the first partition comprises a hidden partition that does not host a general purpose operating system;

transferring partial ownership of the physical I/O device from the first partition to the one or more virtual machines, wherein partial ownership of the physical I/O device allows the one or more virtual machines to directly access the physical I/O device, wherein the device configuration information identifies a number of interrupts and memory spaces exclusively assigned to each of the one or more virtual machines for each respective virtual machine of the one or more virtual machines to directly access the physical I/O device using one or more physical functions and the identified interrupts and memory spaces exclusively assigned to the respective virtual machine;

generating device configuration information for the physical I/O device to be used by the one or more virtual machines to access and configure the physical I/O device;

booting the one or more virtual machines;

detecting an error at the physical I/O device;

initiating error recovery operations at the first partition; and

blocking error recovery operations at the one or more virtual machines until error recovery operations are completed at the first partition.

11. The computer program product of claim 10 , wherein the blocking error recovery operations at the one or more virtual machines comprises:

setting a flag indicating that error recovery operations are executing at the first partition;

receiving, from a first virtual machine of the one or more virtual machines, a request for information about the error; and

transmitting, to the first virtual machine, information indicating that the first virtual machine is blocked from beginning error recovery operations.

12. The computer program product of claim 10 , wherein the operations further comprise:

upon receiving information indicating that error recovery operations at the first partition are complete, allowing error recovery operations to begin at the one or more virtual machines.

13. A system, comprising:

a processor; and a memory storing one or more instructions which, when executed by the processor, performs an operation for sharing a physical I/O device across a plurality of virtual machines, the operation comprising:

configuring shared ownership of the physical I/O device between a first partition and one or more of the plurality of virtual machines, wherein each virtual machine of the one or more virtual machines hosts a driver for the physical I/O device, and wherein the first partition comprises a hidden partition that does not host a general purpose operating system;

transferring partial ownership of the physical I/O device from the first partition to the one or more virtual machines, wherein partial ownership of the physical I/O device allows the one or more virtual machines to directly access the physical I/O device;

generating device configuration information for the physical I/O device to be used by the one or more virtual machines to access and configure the physical I/O device, wherein the device configuration information identifies a number of interrupts and memory spaces exclusively assigned to each of the one or more virtual machines for each respective virtual machine of the one or more virtual machines to directly access the physical I/O device using one or more physical functions and the interrupts and memory spaces exclusively assigned to the respective virtual machine; and

booting the one or more virtual machines;

detecting an error at the physical I/O device;

initiating error recovery operations at the first partition; and

blocking error recovery operations at the one or more virtual machines until error recovery operations are completed at the first partition.

14. The system of claim 13 , wherein the operations further comprise:

upon receiving information indicating that error recovery operations at the first partition are complete, allowing error recovery operations to begin at the one or more virtual machines.

15. The system of claim 13 , wherein the operations further comprise:

detecting a fatal error at the physical I/O device;

terminating physical I/O device operations at the one or more virtual machines;

revoking partial ownership of the physical I/O device from the one or more virtual machines; and

initiating device recovery procedures.

16. The system of claim 15 , wherein the operations further comprise:

upon completing device recovery procedures, restoring physical I/O device access to the one or more virtual machines.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2016
From: ALVAREZ, JUAN J.; ARROYO, JESSE P.; CRUMLEY, PAUL G.; GRAHAM, CHARLES S.; JANN, JOEFON; SCHIMKE, TIMOTHY J.; WU, CHING-FARN E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 037537/0087 →
Continuity (1)
Related Publication 20170206105A1 · Jul 20, 2017
Cited By (1)
US 12,639,098