z/OS DFSMSdfp Advanced Services
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


IDAW Requirements for EXCPVR Requests

z/OS DFSMSdfp Advanced Services
SC23-6861-01

For EXCPVR requests, the caller is responsible for creating IDAWs when the data areas associated with the CCWs in your channel program cross certain boundaries. This can be done before issuing the EXCPVR macro or by the SIO appendage after the EXCPVR macro is issued. See SIO Appendage for more information.

For format-0 channel programs, the CCWs and IDAWs must be below 16 MB in central storage. For format-1 channel programs, the CCWs and IDAWs must be below 2 GB in central storage. Regardless of the channel program format, you can use 31-bit or 64-bit IDAWs to point to storage areas above or below 2 GB in central storage.

Note: 64-bit IDAWs are supported only for direct access storage devices (DASD) and on all IBM-supplied cartridge tape devices. You should examine bit UCBEIDAW in the UCB to determine whether 64-bit IDAWs are supported by the device. If you use 64-bit IDAWs, an IOBE must be specified for the EXCPVR request and flag IOBEEIDA in the IOBE must be set.
If data areas do cross boundaries, provide an additional IDAW in the IDAL for each crossed boundary.
  • If you use 31-bit IDAWs , you must use 2 KB boundaries.
  • If you use 64-bit IDAWs, you must use 4 KB boundaries.
The channel subsystem uses the IDAL to identify the address where it will continue reading or writing when a boundary is crossed during a read or write operation. The IDAL must contain central storage addresses when it is processed by the channel subsystem.

Before you convert the virtual addresses in the channel program to real addresses, you must first page fix the data areas in central storage. This can be done before issuing the EXCPVR macro or by the page fix appendage after the EXCPVR macro is issued. After the data areas have been page fixed, you can use the LRA instruction to convert the virtual addresses in the channel program to central storage addresses, as long as the central storage addresses are below 2 GB. The LRA instruction returns a 31-bit central storage address regardless of whether you are in 24-bit or 31-bit addressing mode, but fails in those addressing modes if the central storage address is above 2 GB. If the central storage address is above 2 GB, you must either use the LRAG or STRAG instruction to convert the virtual address to a real address or else use the LRA instruction after first switching to 64-bit addressing mode.

If all of the central storage addresses associated with the data buffers are below 2 GB, then you can use 2 KB (31-bit) IDAWs to address the data. Otherwise, you must use 4 KB (64-bit) IDAWs to address the data. For the most efficient use of system resources, code LOC=(ANY,64) or LOC=(BELOW,64) when you obtain storage with the GETMAIN or STORAGE macro. See z/OS MVS Programming: Assembler Services Reference ABE-HSP.

The following illustration shows the relationship between the CCW and the IDAWs.
REQTEXT
Note the following information about the IDAL:
  • If you are using 31-bit IDAWs, then after the first entry, put one entry in the IDAL for each 2 KB page boundary that your data area crosses.
  • If you are using 64-bit IDAWs, put one entry in the IDAL for each 4 KB page boundary that your data area crosses and set flag IOBEEIDA in the IOBE..
  • If the format 0 CCW has an IDAL address rather than a data address, you must set the indirect address flag (bit 37) on to signal this to the channel. The equivalent format 1 CCW bit is bit 13.
  • You can determine the maximum number of entries needed in the IDAL from the count in the CCW as follows:
    Number of IDAWSs = (CCW-byte-count + P + P - 2 ) / P
    • Substitute 2048 for P in this formula for 31-bit IDAWs.
    • Substitute 4096 for P in this formula for 64-bit IDAWs.
    For example, the following shows the maximum number of IDAWs for a particular CCW byte-count and a page boundary of 4 KB:
    Table 1. Maximum Number of IDAWs for CCW byte-counts
    CCW byte-count Maximum number of IDAWs
    1 1
    2 2
    4095 2
    4096 2
    4097 2
    4098 3

The number of 31-bit IDAWs that are required depends on the number of 2 KB boundaries that are crossed by the data. For example, if your data is 800 bytes long and does not cross a 2 KB boundary, no IDAWs are required. If your data crosses a 4 KB boundary, then two IDAWs are required. If your data is 5000 KB long, at least two IDAWs are required. If your data crosses two 4 KB boundaries, four IDAWs are required.

The first indirect address is the central storage address of the first byte of the data area. The second and subsequent indirect addresses are the central storage addresses of the second and subsequent 2 KB or 4 KB boundaries of the data area. For example, if the data area central storage address is X'707FF' and the byte count is X'1802', the 4-byte IDAL contains the following central storage addresses (assuming the central storage addresses are contiguous):
707FF
70800
71000
If the data area central storage address is X'707FF' and the byte count is X'800', the IDAL contains the following addresses:
707FF
70800

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014