Configurable I/O address translation data structure

US10241923B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10241923-B2
Application numberUS-201213670009-A
CountryUS
Kind codeB2
Filing dateNov 6, 2012
Priority dateNov 6, 2012
Publication dateMar 26, 2019
Grant dateMar 26, 2019

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

In response to a determination to allocate additional storage, within a real address space employed by a system memory of a data processing system, for translation control entries (TCEs) that translate addresses from an input/output (I/O) address space to the real address space, a determination is made whether or not a first real address range contiguous with an existing TCE data structure is available for allocation. In response to determining that the first real address range is available for allocation, the first real address range is allocated for storage of TCEs, and a number of levels in the TCE data structure is retained. In response to determining that the first real address range is not available for allocation, a second real address range discontiguous with the existing TCE data structure is allocated for storage of the TCEs, and a number of levels in the TCE data structure is increased.

First claim

Opening claim text (preview).

What is claimed is: 1. A data processing system, comprising: a processor; data storage coupled to the processor, wherein the data storage includes a system memory including a translation control entry (TCE) data structure, and wherein the system memory utilizes a real address space; an I/O subsystem coupled to the data storage, wherein the data storage utilizes an input/output (I/O) address space; and program code stored within the data storage and executable by the processor, wherein the program code, when executed by the processor, causes the data processing system to perform: in response to determining to allocate additional storage, within the real address space, for TCEs that translate addresses from the I/O address space to the real address space, determining whether or not a first real address range contiguous with the existing TCE data structure in the system memory is currently unallocated and available for allocation; in response to determining that the first real address range is currently unallocated and available for allocation, allocating the first real address range for storage of the TCEs and retaining a first number of levels in the existing TCE data structure; in response to determining that the first real address range is not currently unallocated and available for allocation: determining whether or not to move a data set from the first real address range based on at least one input in a set consisting of (1) a priority of a logical partition of a partitionable endpoint in the I/O subsystem for which addresses are translated by reference to the TCE data structure, (2) a type of workload of the logical partition, (3) a priority of a process utilizing the partitionable endpoint, and (4) a utilization percentage of the partitionable endpoint; in response to determining to move the data set, moving the data set from the first real address range to a third real address range, allocating the first real address range for storage of the TCEs, and retaining the first number of levels in the existing TCE data structure; and in response to determining not to move the data set, allocating storage for the TCEs in a second real address range discontiguous with the existing TCE data structure and increasing the number of levels in the TCE data structure from the first number to a greater second number. 2. The data processing system of claim 1 , wherein the program code, when executed by the processor, causes the data processing system to perform: in response to allocation of the second real address range, updating an I/O device and an I/O bridge in the data processing system with the second number of levels in the TCE data structure. 3. The data processing system of claim 1 , wherein the program code, when executed by the processor, causes the data processing system to perform: in response to allocation of the second real address range, setting a pointer in the TCE data structure to point to the second real address range. 4. The data processing system of claim 1 , wherein retaining the first number of levels in the TCE data structure comprises retaining a single level TCE data structure. 5. A program product for configuring an input/output (I/O) address translation data structure in a data processing system, the program product comprising: a computer-readable storage device; and program code stored within the computer-readable storage device, wherein the program code, when executed by a computer, causes the computer to perform: in response to determining to allocate additional storage, within a real address space employed by a system memory of a data processing system, for translation control entries (TCEs) that translate addresses from an input/output (I/O) address space to the real address space, determining whether or not a first real address range contiguous with an existing TCE data structure in the system memory is currently unallocated and available for allocation; in response to determining that the first real address range is currently unallocated and available for allocation, allocating the first real address range for storage of the TCEs and retaining a first number of levels in the existing TCE data structure; in response to determining that the first real address range is not currently unallocated and available for allocation: determining whether or not to move a data set from the first real address range based on at least one input in a set consisting of (1) a priority of a logical partition of a partitionable endpoint in the I/O subsystem for which addresses are translated by reference to the TCE data structure, (2) a type of workload of the logical partition, (3) a priority of a process utilizing the partitionable endpoint, and (4) a utilization percentage of the partitionable endpoint; in response to determining to move the data set, moving the data set from the first real address range to a third real address range, allocating the first real address range for storage of the TCEs, and retaining the first number of levels in the existing TCE data structure; and in response to determining not to move the data set, allocating storage for the TCEs in a second real address range discontiguous with the existing TCE data structure and increasing the number of levels in the TCE data structure from the first number to a greater second number. 6. The program product of claim 5 , wherein the program code, when executed by the computer, causes the computer to perform: in response to allocation of the second real address range, updating an I/O device and an I/O bridge in the data processing system with the second number of levels in the TCE data structure. 7. The program product of claim 5 , wherein the program code, when executed by the computer, causes the computer to perform: in response to allocation of the second real address range, setting a pointer in the TCE data structure to point to the second real address range. 8. The program product of claim 5 , wherein retaining the first number of levels in the TCE data structure comprises retaining a single level TCE data structure. 9. A method of configuring an input/output (I/O) address translation data structure in a data processing system, the method comprising: in response to determining to allocate additional storage, within a real address space employed by a system memory of a data processing system, for translation control entries (TCEs) that translate addresses from an input/output (I/O) address space to the real address space, a processor of the data processing system determining whether or not a first real address range contiguous with an existing TCE data structure in the system memory is currently unallocated and available for allocation, wherein the existing TCE data structure has a first number of levels; based on a determination that the first real address range is not currently unallocated and available for allocation, the processor: determining whether or not to move a data set from the first real address range based on at least one input in a set consisting of (1) a priority of a logical partition of a partitionable endpoint in the I/O subsystem for which addresses are translated by reference to the TCE data structure, (2) a type of workload of the logical partition, (3) a priority of a process utilizing the partitionable endpoint, and (4) a utilization percentage of the partitionable endpoint; based on a determination to move the data set, moving the data set from the first real address range to a third real address range, allocating the first real address range for storage of the TCEs, and retaining the first number of levels in the existing TCE data structure; and based on a determination not to move the data set, allocating storage

Assignees

Inventors

Classifications

  • User address space allocation, e.g. contiguous or non contiguous base addressing · CPC title

  • using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] · CPC title

  • for peripheral access to main memory, e.g. direct memory access [DMA] · CPC title

  • Defragmentation · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10241923B2 cover?
In response to a determination to allocate additional storage, within a real address space employed by a system memory of a data processing system, for translation control entries (TCEs) that translate addresses from an input/output (I/O) address space to the real address space, a determination is made whether or not a first real address range contiguous with an existing TCE data structure is a…
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F12/1027. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 26 2019 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).