IP Library Granted Patent US 12,449,976
Granted Patent B2
US 12,449,976 · App. 18/239,363 · Granted Oct 21, 2025

PASID granularity resource control for IOMMU

Inventors: Kaijie Guo (Shanghai, CN); Ashok Raj (Portland, OR); Ned Smith (Beaverton, OR); Weigang Li (Shanghai, CN); Junyuan Wang (Shanghai, CN); Xin Zeng (Shanghai, CN); Brian Will (Phoenix, AZ); Zijuan Fan (Shanghai, CN); Michael E. Kounavis (Portland, OR); Qianjun Xie (Shanghai, CN); Yuan Wang (Nantong, CN); Yao Huo (Shanghai, CN)
Assignee: Intel Corporation
G06F3/061G06F3/0655G06F3/0673
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,449,976
App. No.
18/239,363
Granted
Oct 21, 2025
Kind
B2
Abstract

An embodiment of an integrated circuit may comprise memory to store respective resource control descriptors in correspondence with respective identifiers, and an input/output (IO) memory management unit (IOMMU) communicatively coupled to the memory, the IOMMU including circuitry to determine resource control information for an IO transaction based on a resource control descriptor stored in the memory that corresponds to an identifier associated with the IO transaction, and control utilization of one or more resources of the IOMMU based on the determined resource control information. Other embodiments are disclosed and claimed.

Claims (74)

1. An integrated circuit, comprising:

memory to store:

one or more virtualization tables comprising resource control descriptors which each correspond to one of a respective process address space identifier (PASID) or a respective domain identifier, the resource control descriptors each to identify a respective one or more quality of service (QOS) requirements; and

a table comprising a first plurality of entries each indexed by a respective PASID; and

an input/output (IO) memory management unit (IOMMU) communicatively coupled to the memory, the IOMMU including circuitry to:

receive an indication of an IO transaction which is to access one or more shared resources;

determine, based on the indication, an identifier of a requester of the IO transaction;

perform a search of the table based on the identifier of the requester, to identify a first entry of the first plurality of entries;

perform an evaluation to determine whether the first entry includes a field that is to provide a pointer to a resource control descriptor;

where the evaluation determines that the first entry includes the field:

determine, based on a value at the field, a first one or more QoS requirements identified by one of the resource control descriptors; and

control a performance of the IO transaction according to the first one or more QoS requirements; and

where the evaluation fails to determine that the first entry includes the field:

determine, based on a domain identifier which corresponds to the requester, a second one or more QoS requirements identified by another of the resource control descriptors; and

control the performance of the IO transaction according to the second one or more QoS requirements.

2. The integrated circuit of claim 1 , wherein the first one or more QoS requirements comprises multiple one or more QoS requirements.

3. The integrated circuit of claim 1 , wherein the identifier of the requester comprises a bus number, a device number, and a function number, and a PASID number.

4. The integrated circuit of claim 1 , wherein the circuitry is to:

determine if a PASID-granularity control is disabled; and, if so determined,

determine the second one or more QoS requirements based on the domain identifier.

5. The integrated circuit of claim 1 , wherein the first one or more QoS requirements comprise a threshold for a number of entries for the identifier in an IO translation lookaside buffer (IOTLB), and wherein, in response to an IOTLB miss for the IO transaction, the circuitry is further to:

determine if a count of entries in the IOTLB associated with the identifier exceeds the threshold for the number of entries for the identifier in the IOTLB; and, if so determined,

identify a least recently used entry in the IOTLB associated with the identifier and invalidate the identified entry.

6. The integrated circuit of claim 1 , wherein the first one or more QoS requirements comprise a threshold for a number of inflight page requests for the identifier, and wherein, in response to a page request for the IO transaction, the circuitry is further to:

determine if a count of inflight page requests associated with the identifier exceeds the threshold for the number of inflight page requests for the identifier; and, if so determined,

reject the page request associated with the identifier.

7. A method, comprising:

storing one or more virtualization tables comprising resource control descriptors which each correspond to one of a respective process address space identifier (PASID) or a respective domain identifier, the resource control descriptors each to identify a respective one or more quality of service (QOS) requirements;

storing a table comprising a first plurality of entries each indexed by a respective PASID;

receiving an indication of an input/output (IO) transaction which is to access one or more shared resources;

determining, based on the indication, an identifier of a requester of the IO transaction;

performing a search of an IO memory management unit (IOMMU) table, based on identifier of the requester, to identify a first entry of the first plurality of entries;

performing an evaluation to determine whether the first entry includes a field that is to provide a pointer to a resource control descriptor;

where the evaluation determines that the first entry includes the field:

determining, based on a value at the field, a first one or more QoS requirements identified by one of the resource control descriptors; and

controlling a performance of the IO transaction according to the first one or more QoS requirements; and

where the evaluation fails to determine that the first entry includes the field:

determining, based on a domain identifier which corresponds to the requester, a second one or more QoS requirements identified by another of the resource control descriptors; and

controlling the performance of the IO transaction according to the second one or more QoS requirements.

8. The method of claim 7 , wherein the first one or more QoS requirements comprises multiple one or more QoS requirements.

9. The method of claim 7 , wherein the identifier of the requester comprises a bus number, a device number, and a function number, and a PASID number.

10. The method of claim 7 , further comprising:

determining if a PASID-granularity control is disabled; and, if so determined,

determining the second one or more QoS requirements based on the domain identifier.

11. The method of claim 7 , wherein the first one or more QoS requirements comprise a threshold for a number of entries in an IO translation lookaside buffer (IOTLB) for the identifier, and wherein, in response to an IOTLB miss for the IO transaction, the method further comprises:

determining if a count of entries in the IOTLB associated with the identifier exceeds the threshold for the number of entries in the IOTLB for the identifier; and, if so determined,

identifying a least recently used entry in the IOTLB associated with the identifier and invalidating the identified entry.

12. The method of claim 7 , wherein the first one or more QoS requirements comprise a threshold for a number of inflight page requests for the identifier, and wherein, in response to a page request for the IO transaction, the method further comprises:

determining if a count of inflight page requests associated with the identifier exceeds the threshold for the number of inflight page requests for the identifier; and, if so determined,

rejecting the page request associated with the identifier.

13. An apparatus, comprising:

a core;

a memory management unit (MMU) communicatively coupled to the core;

memory communicatively coupled to the MMU to store:

one or more virtualization tables comprising resource control descriptors which each correspond to one of a respective process address space identifier (PASID) or a respective domain identifier, the resource control descriptors each to identify a respective one or more quality of service (QOS) requirements; and

a table comprising a first plurality of entries each indexed by a respective PASID; and

an input/output (IO) memory management unit (IOMMU) communicatively coupled to the memory, the IOMMU including circuitry to:

receive an indication of an IO transaction which is to access one or more shared resources;

determine, based on the indication, an identifier of a requester of the IO transaction;

perform a search of the table based on the identifier of the requester, to identify a first entry of the first plurality of entries;

perform an evaluation to determine whether the first entry includes a field that is to provide a pointer to a resource control descriptor;

where the evaluation determines that the first entry includes the field:

determine, based on a value at the field, a first one or more QoS requirements identified by one of the resource control descriptors; and

control a performance of the IO transaction according to the first one or more QoS requirements; and

where the evaluation fails to determine that the first entry includes the field:

determine, based on a domain identifier which corresponds to the requester, a second one or more QoS requirements identified by another of the resource control descriptors; and

control the performance of the IO transaction according to the second one or more QoS requirements.

14. The apparatus of claim 13 , wherein the first one or more QoS requirements comprises multiple one or more QoS requirements.

15. The apparatus of claim 13 , wherein the identifier of the requester comprises a bus number, a device number, and a function number, and a PASID number.

16. The apparatus of claim 13 , wherein the circuitry is to:

determine if a PASID-granularity control is disabled; and, if so determined,

determine the second one or more QoS requirements based on the domain identifier.

17. The apparatus of claim 13 , wherein the first one or more QoS requirements comprise a threshold for a number of entries for the identifier in an IO translation lookaside buffer (IOTLB), and wherein, in response to an IOTLB miss for the IO transaction, the circuitry is further to:

determine if a count of entries in the IOTLB associated with the identifier exceeds the threshold for the number of entries for the identifier in the IOTLB; and, if so determined, identify a least recently used entry in the IOTLB associated with the identifier and invalidate the identified entry.

Continuity (2)
Continuation PCTCN2021082908 · Mar 25, 2021
Related Publication 20230409197A1 · Dec 21, 2023
References Cited (12)
US 10491584B2 · Tewari et al. · 2019 [cited by applicant]
US 20130080714A1 · Kegel · 2013 [cited by examiner]
US 20130138840A1 · Kegel · 2013 [cited by examiner]
US 20180203807A1 · Krueger · 2018 [cited by examiner]
US 20190042463A1 · Shanbhogue et al. · 2019 [cited by applicant]
US 20190377687A1 · Raisch · 2019 [cited by examiner]
US 20190384722A1 · Basu · 2019 [cited by examiner]
US 20200320017A1 · Lakshman et al. · 2020 [cited by applicant]
US 20210004338A1 · Morolia et al. · 2021 [cited by applicant]
International Search Report and Written Opinion from PCT/CN2021/082908 notified Mar. 4, 2022, 9 pgs. [cited by applicant]
International Preliminary Report on Patentability from PCT/CN2021/082908 notified Oct. 5, 2023, 6 pgs. [cited by applicant]
Extended European Search Report from European Patent Application No. 21932176.7 notified Nov. 7, 2024, 9 pgs. [cited by applicant]
Cited By (1)
US 12,639,220