All Power servers for Power7 and newer allow for improved I/O adapter performance by reserving additional memory for high speed adapters. This additional memory is used to increase the I/O Address Translation Tables (ATT) in the Hypervisor and in turn increase the maximum DMA window a device driver can map for I/O at any one time. See the Background on I/O Address Translation section later in this document to better understand I/O ATTs. The correct setting for I/O Adapter Enlarged Capacity for your server depends on the operating system, the device driver capabilities, the adapter and the slot used for the adapter. The following sections will guide you on how to properly configure your system for I/O Adapter Enlarged Capacity and give details on the changes in PowerVM 2.2.5 to reduce the amount of memory reserved for these high speed adapters.
AIX and IBM i
The AIX and IBM i operating systems do not require or make use of very large DMA windows which consume memory that is set aside for I/O Adapter Enlarged Capacity. If your server is not going to be running Linux, you can make a significant reduction in the amount of memory set aside by the firmware if you disable the I/O Adapter Enlarged Capacity feature. To disable this feature, first power off the server as changes are only allowed when the server is powered off. Next, from the HMC in the Operations section select the Launch Advanced System Management (ASM) option. After you sign on to the ASM screen, select the System Configuration option and then select the I/O Adapter Enlarged Capacity option. An image similar to the following panel will be presented:
The diagram above is provided to help explain I/O Address Translation Tables (ATT), DMA windows, platform memory addresses and DMA addresses. The Hypervisor must allocate space at platform IPL time for an ATT for each I/O Adapter present or targeted to be plugged in the future. The size of this ATT directly corresponds to the maximum DMA window the I/O device driver in the partition may allocate. The larger the ATT, the more pages that can be mapped, and hence the larger the DMA window. If a DMA window is large enough, it is possible for the I/O device driver to map every page in partition memory at partition IPL time. This removes the latency of mapping and remapping individual pages as they are used during normal OS operations.
Here is the general flow of how the I/O ATT works - When the I/O device driver wishes to give the I/O adapter an address to DMA to or from, it must call the Hypervisor to have the Hypervisor update an ATTE with the real page number (RPN) of the main storage address. From this Hypervisor call the device driver receives a 64 Bit DMA Address to pass to the I/O Adapter for the DMA. At a later point in time the I/O Adapter initiates a DMA by placing the 64 Bit DMA Address on the PCIe link as the DMA address. The PCI Host Bridge (PHB) picks up this 64 Bit DMA Address, and splits it into the ATTE Index and the Page Offset. The PHB uses the ATTE Index to fetch the Real Page Number (RPN) from the ATT. This RPN is merged with the Page Offset to form the 64 Bit Platform Memory Address. This 64 Bit Platform Memory Address is then used to perform the DMA operation.
Summary
The I/O Adapter Enlarged Capacity setting is not for everyone. AIX and IBM i customers can save memory by disabling it. I/O Adapter Enlarged Capacity will help LINUX customers using high performance adapters maximize I/O performance. The changes in PowerVM 2.2.5 allow customers to enable this performance improvement while using less memory for the Hypervisor than previous releases. With the information provided in this article you should now be able to take your system configuration and correctly adjust the I/O Adapter Enlarged Capacity setting.
Contacting the PowerVM Team
Have questions for the PowerVM team or want to learn more? Follow our discussion group on LinkedIn IBM PowerVM or IBM Community Discussions
#PowerVM#powervmblog