Apparatus and Method for Communicating with an I/O Adapter Using Cached Address Translations
First Claim
1. A method, in a data processing system, for performing an operation between an system image and a locally attached external storage device, comprising:
- receiving a storage transaction request from the system image;
creating a command queue element (CQE) in a command queue data structure, the CQE specifying an untranslated address of a buffer data structure and containing a data transfer operation command;
retrieving, by an input/output (I/O) adapter for communicating with the locally attached external storage device, the CQE from the command queue data structure;
sending the data transfer operation command to the locally attached external storage device coupled to the I/O adapter;
issuing, by the I/O adapter, a request to a root complex of the data processing system for one or more translated addresses, corresponding to the one or more untranslated addresses of the buffer data structure, at substantially a same time as the sending of the data transfer operation command to the locally attached external storage device; and
storing, by the I/O adapter, in a local address translation cache of the I/O adapter, the one or more translated addresses corresponding to the one or more untranslated addresses of the buffer data structure.
1 Assignment
0 Petitions
Accused Products
Abstract
An apparatus and method for communicating with an input/output (I/O) adapter configured to communicate with a locally attached I/O device are provided using cached address translations. With the apparatus and method, in response to receiving a storage transaction request, a queue element is created in a command queue specifying an untranslated buffer address. The queue element may be retrieved by the I/O adapter and a determination may be made as to whether the queue element contains a read operation command. If so, a translation request may be sent from the I/O adapter to a root complex at substantially a same time as the read operation command is sent to a locally attached external I/O device. The translated address corresponding to the untranslated address of the queue element may be returned and stored in the I/O adapter prior to receiving the data read from the external I/O device.
-
Citations
20 Claims
-
1. A method, in a data processing system, for performing an operation between an system image and a locally attached external storage device, comprising:
-
receiving a storage transaction request from the system image; creating a command queue element (CQE) in a command queue data structure, the CQE specifying an untranslated address of a buffer data structure and containing a data transfer operation command; retrieving, by an input/output (I/O) adapter for communicating with the locally attached external storage device, the CQE from the command queue data structure; sending the data transfer operation command to the locally attached external storage device coupled to the I/O adapter; issuing, by the I/O adapter, a request to a root complex of the data processing system for one or more translated addresses, corresponding to the one or more untranslated addresses of the buffer data structure, at substantially a same time as the sending of the data transfer operation command to the locally attached external storage device; and storing, by the I/O adapter, in a local address translation cache of the I/O adapter, the one or more translated addresses corresponding to the one or more untranslated addresses of the buffer data structure. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer program product comprising a computer useable medium having a computer readable program, wherein the computer readable program, when executed on a computing device, causes the computing device to:
-
receive a storage transaction request from the system image; create a command queue element (CQE) in a command queue data structure, the CQE specifying an untranslated address of a buffer data structure and containing a data transfer operation command; retrieve, by an input/output (I/O) adapter for communicating with the locally attached external storage device, the CQE from the command queue data structure; send the data transfer operation command to the locally attached external storage device coupled to the I/O adapter; issue, by the I/O adapter, a request to a root complex of the data processing system for one or more translated addresses, corresponding to the one or more untranslated addresses of the buffer data structure, at substantially a same time as the sending of the data transfer operation command to the locally attached external storage device; and store, by the I/O adapter, in a local address translation cache of the I/O adapter, the one or more translated addresses corresponding to the one or more untranslated addresses of the buffer data structure. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
-
20. An apparatus, comprising:
-
a processor; and an input/output (I/O) adapter coupled to the processor, the I/O adapter being configured for communicating with a locally attached external storage device, wherein the processor; receives a storage transaction request from the system image; and creates a command queue element (CQE) in a command queue data structure, the CQE specifying an untranslated address of a buffer data structure and containing a data transfer operation command, and wherein the I/O adapter retrieves the CQE from the command queue data structure; sends the data transfer operation command to the locally attached external storage device coupled to the I/O adapter; issues a request to a root complex of the data processing system for one or more translated addresses, corresponding to the one or more untranslated addresses of the buffer data structure, at substantially a same time as the sending of the data transfer operation command to the locally attached external storage I/O device; and stores, in a local address translation cache of the I/O adapter, the one or more translated addresses corresponding to the one or more untranslated addresses of the buffer data structure.
-
Specification