发明名称 Splitting direct memory access windows
摘要 A computing device may split a translation table used when performing a DMA operation into two different translation tables. To split the translation table, the computing device may update the registers in the IOMMU to include pointers to the two different translation tables. For example, the IOMMU may update one register to point to the same starting address as the original translation table but assign a shorter length (i.e., fewer entries) to that table. The extra entries may then be used to form the other translation table by adding a new pointer to one of the IOMMU registers. The two translation tables may be owned by the same service provider or two different service providers. Alternatively, the computing device may assign the two tables to the same service provider which in turn assigns the tables to respective client devices executed by the service provider.
申请公布号 US9092365(B2) 申请公布日期 2015.07.28
申请号 US201313973655 申请日期 2013.08.22
申请人 International Business Machines Corporation 发明人 King Justin K.;Oberly, III John R.;Pizel Travis J.
分类号 G06F3/00;G06F12/10 主分类号 G06F3/00
代理机构 Patterson & Sheridan, LLP 代理人 Patterson & Sheridan, LLP
主权项 1. A computing system, comprising: a hypervisor configured to determine when to split a direct memory access (DMA) translation table assigned to a first service provider in the computing system into a first translation table and a second translation table, the first and second translation tables performing a virtual address to physical address translation for accessing data stored in respective DMA windows which define respective portions of memory in the computing system; an I/O adapter; and an I/O memory management unit (IOMMU) configured to: update a first register of a plurality of registers to include a pointer to the first translation table, wherein, before determining to split the DMA translation table, the first register stores a pointer to the starting memory address of the DMA translation table and a length indicator that defines the maximum number of translation entries in the DMA translation table, wherein the DMA translation table and the first translation table share the same starting memory address, and wherein updating the first register comprises changing the length indicator to a value that is less than the maximum number of translation entries in the DMA translation table,store in a second register of the plurality of registers a pointer to the second translation table; and wherein the second translation table is assigned to one of a second service provider in the computing system and a client executed by the first service provider, wherein the second service provider or the client is configured to use the second translation table for performing a DMA operation between the I/O adapter in the computer system and one of the DMA windows.
地址 Armonk NY US