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 device, 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 virtual memory manager to the I/O device driver.
- 12. The method of claim 1 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 I/O 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 |
09946892 |
Sep 2001 |
US |