Claims
- 1. A recoverable input/output (I/O) request processor comprising computer instructions embodied in a computer-readable medium and executable by an I/O device for performing steps comprising:
receiving requests for performing an I/O operation for writing data to or reading data from a virtual memory address; searching for a physical memory address corresponding to the virtual memory address in address translation tables accessible by an I/O devices in response to failing to locate the physical memory address, requesting virtual to physical memory mapping information from an operating system; receiving virtual to physical memory mapping operation from the operating system, and, in response, translating the virtual memory address to a physical memory address; and performing the I/O operation.
- 2. The recoverable input/output request processor of claim 1 wherein performing the I/O operation includes sending data from the virtual memory address from a first computer to a second computer over a network.
- 3. The recoverable input/output request processor of claim 1 wherein performing the I/O operation includes transferring computer graphics from the virtual memory address to a display device.
- 4. The recoverable input/output request processor of claim 1 wherein performing the I/O operation includes transferring data from the virtual memory address to a storage device.
- 5. The recoverable input/output request processor of claim 1 wherein performing the I/O operation includes transferring audio information from the virtual memory address to an audio device.
- 6. The recoverable input/output request processor of claim 1 searching for a physical memory address includes searching address translation tables stored in memory local to the I/O device.
- 7. The recoverable input/output request processor of claim 1 wherein searching for a physical memory address includes searching address translation tables stored in memory local to a host device connected to the I/O device.
- 8. The recoverable input/output request processor according to claim 1 wherein receiving requests for performing an I/O operation comprises receiving a request for storing data received from a first computer at a virtual memory address of a second computer connected to the first computer through a network.
- 9. The recoverable input/output request processor according to claim 1 comprising computer-executable instructions for requesting that the operating system move a page containing the virtual memory address in from a disk device to main memory of a computer.
- 10. A method for maintaining coherence between virtual memory mapping information of a virtual memory manager and virtual memory mapping information of an I/O device comprising:
in an I/O device driver
registering a callback routine associated with a virtual memory address with a virtual memory manager; in a virtual memory manager:
receiving requests to alter or move the contents of a virtual memory address; and in response to the requests, executing the callback routine to notify an I/O device of the request.
- 11. The method of claim 10 further comprising transmitting virtual memory mapping information from the viral memory manager to the I/O device driver.
- 12. The method of claim 11 further comprising transmitting the virtual memory mapping information from the I/O device driver to a recoverable I/O request processor of the I/O device.
- 13. The method of claim 12 wherein the recoverable I/O request processor updates page tables local to an I/O device based on the virtual memory mapping information.
- 14. A descriptor for communicating an I/O request to an I/O device, the descriptor comprising:
a control field for storing a code indicative of an I/O operation; a buffer virtual address field for storing a virtual memory address of a buffer to be utilized in an I/O operation; and a mechanism for instructing a recoverable I/O request processor of an I/O device to attempt to recover from a virtual address translation failure.
- 15. The descriptor of claim 14 wherein mechanism comprises a translation error control flag field including a translation error control flag having a first value for instructing the recoverable I/O request processor to attempt to recover from virtual address translation failures.
- 16. The descriptor of claim 15 wherein the translation error control flag has a second value for instructing the recoverable I/O request processor not to recover from virtual address translation failures.
- 17. The descriptor of claim 16 wherein the mechanism comprises a handle communicated to the recoverable I/O request processor, the handle having a first value for instructing the recoverable I/O request processor to attempt to recover from virtual address translation failures.
- 18. The descriptor of claim 17 wherein the handle has a second value for instructing the recoverable I/O request processor not to recover from virtual address translation failures.
- 19. A method for processing an I/O request comprising:
receiving, at an I/O device, a virtual memory address to be translated to a physical memory address; attempting to translate the virtual memory address to a physical memory address using translation tables accessible by the I/O device; in response to failing to translate the virtual memory address, generating an interrupt to a host processor and halting processing of the I/O operation; receiving virtual address mapping information from an I/O device driver in response to the interrupt; and restarting processing of the I/O operation in response to a request from an application program.
- 20. A translation error recovery routine for registering memory and restarting processing of an I/O operation when an I/O device fails to translate a virtual memory address to a physical memory address, the translation error recovery routine including computer-executable instructions embodied in a computer-readable medium for performing steps comprising:
receiving notification that an I/O device is incapable of translating a virtual memory address of data used in an I/O request to a physical memory address; in response to the notification, requesting registration of the virtual memory address from a device driver for the I/O device; and if the registration is successful, communicating the virtual memory address to the I/O device for translation.
- 21. The translation error recovery routine of claim 20 comprising:
when the registration is not successful, requesting de-registration of memory pages from the device driver and re-requesting memory registration.
- 22. The translation error recovery routine of claim 20 wherein memory registration includes locking a page containing the data in main memory and communicating a corresponding physical memory address to the I/O device.
- 23. A system for processing input/output requests for sending and receiving data over a network comprising:
an I/O request queue for receiving descriptors specifying I/O requests from application programs; and a recoverable I/O request processor for processing the descriptors, including translating the virtual memory addresses of the descriptors to physical memory addresses, suspending processing of the descriptors in the I/O request queue when an address translation failure occurs, and resuming processing of the descriptors when the address translation failure is corrected.
- 24. The system of claim 23 comprising a device driver for registering and deregistering memory with the I/O request processor in response to memory registration requests from an application program.
- 25. The system of claim 23 comprising an asynchronous virtual address translation failure recovery routine for requesting registration of memory used by the application when the recoverable I/O request processor fails to translate a virtual memory address to a physical memory address.
- 26. The system of claim 25 wherein the asynchronous virtual address translation failure recovery routine resides in and is called by a device driver associate with an 1,0 device for processing the I/O requests.
- 27. The system of claim 25 comprising a user agent for receiving I/O requests from an application and, in response, posting the descriptors the I/O request queue, wherein the asynchronous translation failure recovery routine is located in the user agent.
- 28. An input/output device comprising:
a processing unit; a memory unit coupled to the processing unit, the memory unit including computer-executable instructions for performing steps comprising:
receiving an input/output request including a virtual memory address; attempting to translate the virtual memory address to a physical memory address; when an address translation failure occurs, requesting virtual memory mapping information from an operating system; and in response to receiving the virtual memory mapping information, processing the input/output request.
- 29. The input/output device according to claim 28 wherein processing the input/output request includes sending data to a receiving data from a network.
- 30. The input/output device according to claim 29 wherein processing the input/output request includes manipulating graphical images on a computer display device.
- 31. The input/output device according to claim 29 wherein processing the input/output request includes storing information in a storage device.
- 32. The input/output device according to claim 29 wherein processing the input/output request includes transferring audio information to an audio device.
Parent Case Info
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 60/095,297, filed Aug. 4, 1998, the disclosure of which is incorporated herein by reference in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60095297 |
Aug 1998 |
US |
Divisions (1)
|
Number |
Date |
Country |
| Parent |
09222696 |
Dec 1998 |
US |
| Child |
09907222 |
Jul 2001 |
US |