IP Library › Granted Patent US 9,760,661
Granted Patent B2
US 9,760,661 · App. 14/372,110 · Granted Sep 12, 2017

Providing virtual optical disk drive

Inventor: Hua Shao (Shanghai, CN)
Assignee: Hewlett-Packard Development Company, L.P.
G06F17/5009G06F13/102G06F13/105G06F13/20G06F3/0664G06F2213/0024G06F2213/0058
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,760,661
App. No.
14/372,110
Granted
Sep 12, 2017
Kind
B2
Abstract

A method for providing a virtual optical disk drive (ODD) is provided. The method can comprise: simulating a PCI IDE controller through PCI configuration space IO trap and simulating the ODD through IDE device IO trap.

Claims (52)

1. A method for providing a virtual optical disk drive (ODD), comprising:

simulating a Peripheral Component Interconnect (PCI) Integrated Drive Electronics (IDE) controller through a PCI configuration space Input/Output (I/O) trap to provide a virtual PCI IDE controller; and

simulating the ODD through an IDE device I/O trap, wherein the simulating the ODD comprises:

sending, by an IDE bus driver, a command to an I/O port of the virtual PCI IDE controller;

triggering a system management interrupt (SMI) and identifying that the SMI is caused by an access to the I/O port of the virtual PCI IDE controller; and

reading, by an SMI handler, the command and simulating an ODD response according to the command.

2. The method of claim 1 , wherein the simulating the PCI IDE controller comprises the following operations performed by a system firmware:

allocating a PCI address to the virtual PCI IDE controller;

allocating a memory space to store the virtual PCI IDE controller;

enabling an I/O trap for a PCI configuration space; and

loading a PCI bus driver to perform PCI scanning to find the virtual PCI IDE controller.

3. The method of claim 2 , wherein the performing the PCI scanning to find the virtual PCI IDE controller comprises:

reading, by the PCI bus driver, a PCI register of the virtual PCI IDE controller;

obtaining, by the PCI bus driver, a valid PCI register from the PCI address of the virtual PCI IDE controller;

allocating, by the PCI bus driver, an I/O resource and an interrupt request (IRQ) to the virtual PCI IDE controller;

writing, by the PCI bus driver, the I/O resource to the virtual PCI IDE controller; and

storing the I/O resource and the IRQ, and initializing an I/O trap for an I/O space of the virtual PCI IDE controller.

4. The method of claim 1 , wherein the command comprises a read of the ODD, a write of the ODD, or closing the ODD.

5. The method of claim 1 , wherein the simulating the ODD response is carried out according to an AT Attachment/ATA Packet Interface (ATA/ATAPI) specification.

6. The method of claim 1 , wherein when the command is one of read or write, the simulating the ODD response comprises performing a data transfer according to a type of the data transfer, wherein the type of the data transfer comprises a Programmed Input-Output or a Direct Memory Access.

7. The method of claim 1 , wherein the simulating the PCI IDE controller and the simulating the ODD are implemented during boot time of a computer.

8. A non-transitory computer-readable medium comprising code that upon execution causes a system to:

simulate a Peripheral Component Interconnect (PCI) Integrated Drive Electronics (IDE) controller, to provide a virtual PCI IDE controller, by using a PCI configuration space Input/Output (I/O) trap that includes triggering a first System Management Interrupt (SMI) in response to an access of a PCI configuration space, and using a first SMI handler to handle the access of the PCI configuration space; and

simulate a virtual optical disk drive (ODD) through an IDE device I/O trap that includes triggering a second SMI in response to an access of the virtual PCI IDE controller, and using a second SMI handler to simulate an ODD response to the access of the virtual PCI IDE controller.

9. The non-transitory computer-readable medium of claim 8 , wherein the simulating the PCI IDE controller comprises:

allocating a PCI address to the virtual PCI IDE controller;

allocating a memory space to store the virtual PCI IDE controller;

enabling an I/O trap for the PCI configuration space; and

loading a PCI bus driver to perform PCI scanning to find the virtual PCI IDE controller.

10. The non-transitory computer-readable medium of claim 9 , wherein the non-transitory computer-readable medium comprises code configured to perform the PCI scanning to find the virtual PCI IDE controller by:

reading, by the PCI bus driver, a PCI register of the virtual PCI IDE controller;

obtaining, by the PCI bus driver, a valid PCI register from the PCI address of the virtual PCI IDE controller;

allocating, by the PCI bus driver, an I/O resource and an interrupt request (IRQ) to the virtual PCI IDE controller;

writing, by the PCI bus driver, the I/O resource to the virtual PCI IDE controller; and

storing the I/O resource and the IRQ, and initializing an I/O trap for an I/O space of the virtual PCI IDE controller.

11. The non-transitory computer-readable medium of claim 8 , wherein the simulating the ODD comprises:

sending, by an IDE bus driver, a command to an I/O port of the virtual PCI IDE controller;

triggering the second SMI and identifying that the second SMI is caused by an access to the I/O port of the virtual PCI IDE controller.

12. The non-transitory computer-readable medium of claim 11 , wherein the command comprises a read of the ODD, a write of the ODD, or closing the ODD.

13. The non-transitory computer-readable medium of claim 11 , wherein the simulating the ODD response is carried out according to an AT Attachment/ATA Packet Interface (ATA/ATAPI) specification.

14. The non-transitory computer-readable medium of claim 8 , wherein the code is executed during boot time of a computer.

15. A system comprising:

a processor; and

a non-transitory storage medium storing instructions executable on the processor to:

simulate a Peripheral Component Interconnect (PCI) Integrated Drive Electronics (IDE) controller through a PCI configuration space Input/Output (I/O) trap to provide a virtual PCI IDE controller; and

simulate the ODD through an IDE device I/O trap, wherein the simulating the ODD comprises:

send, by an IDE bus driver, a command to an I/O port of the virtual PCI IDE controller;

trigger a system management interrupt (SMI) and identifying that the SMI is caused by an access to the I/O port of the virtual PCI IDE controller; and

read, by an SMI handler, the command and simulate an ODD response according to the command.

16. The system of claim 15 , wherein the PCI configuration space I/O trap comprises triggering a further SMI in response to an access of a PCI configuration space, and using a further SMI handler to handle the access of the PCI configuration space.

17. The system of claim 16 , wherein the triggering of the further SMI is in response to determining that the access of the PCI configuration space is targeted to a virtual PCI device address.

18. The non-transitory computer-readable medium of claim 8 , wherein the triggering of the first SMI is in response to determining that the access of the PCI configuration space is targeted to a virtual PCI device address.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2014
From: SHAO, HUA
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 033318/0625 →
Continuity (1)
Related Publication 20140343917A1 · Nov 20, 2014