IP Library › Granted Patent US 12,260,120
Granted Patent B2
US 12,260,120 · App. 16/436,813 · Granted Mar 25, 2025

Guest operating system buffer and log accesses by an input-output memory management unit

Inventors: Maggie Chan (Toronto, CA); Philip Ng (Toronto, CA); Paul Blinzer (Bellevue, WA)
Assignee: Advanced Micro Devices, Inc.
G06F3/0659G06F3/061G06F3/0644G06F3/0656G06F3/0673G06F9/45558G06F13/1668G06F2009/45579
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,260,120
App. No.
16/436,813
Granted
Mar 25, 2025
Kind
B2
Abstract

An electronic device includes a processor that executes a guest operating system; a memory having a guest portion that is reserved for storing data and information to be accessed by the guest operating system; and an input-output memory management unit (IOMMU). The IOMMU writes, in the guest portion, information into guest buffers and/or logs used for communicating information from the IOMMU to the guest operating system. The IOMMU also reads, from the guest portion, information in guest buffers and/or logs used for communicating information from the guest operating system to the IOMMU.

Claims (72)

1. An electronic device, comprising:

a processor that executes a guest operating system;

a memory, the memory having a guest portion that is reserved for storing data and information to be accessed by the guest operating system, wherein each guest operating system on the electronic device is allocated a separate guest portion for storing data and information for that guest operating system; and

an input-output memory management unit (IOMMU) configured to:

write, in the guest portion, information into guest buffers and/or logs used for communicating information from the IOMMU to the guest operating system; and

read, from the guest portion, information in guest buffers and/or logs used for communicating information from the guest operating system to the IOMMU, the IOMMU directly accessing the guest buffers and/or logs in the guest portion for performing the writing and reading.

2. The electronic device of claim 1 , wherein writing, by the IOMMU, information into a given guest buffer or log in the guest portion comprises:

determining, by the IOMMU, a system physical address of the given guest buffer or log in the memory;

writing, by the IOMMU, information to the given guest buffer or log in the memory at the system physical address; and

sending, by the IOMMU, to the guest operating system, an indication that the IOMMU wrote the information to the given guest buffer or log.

3. The electronic device of claim 2 , wherein writing, by the IOMMU, information into the given guest buffer or log in the guest portion further comprises:

determining, by the IOMMU, based on an identifier for the guest operating system, a system physical address of a copy of an IOMMU MMIO register for the guest operating system in an IOMMU backing store;

acquiring, by the IOMMU, the system physical address from the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store; and

updating, by the IOMMU, after writing the information to the guest buffer or log, the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store to indicate the write to the guest buffer or log.

4. The electronic device of claim 2 , wherein sending the indication to the guest operating system comprises:

sending, by the IOMMU, an internal interrupt to the guest operating system via a virtual copy of an interrupt controller for the guest operating system, the internal interrupt informing the guest operating system that the IOMMU wrote the given guest buffer or log.

5. The electronic device of claim 3 , wherein the guest operating system reads, based on the indication, the information from the guest buffer or log in the guest portion at the system physical address.

6. The electronic device of claim 5 , wherein reading, by the guest operating system, the information from the guest buffer or log in the guest portion comprises:

acquiring, by the guest operating system, via the IOMMU, information from the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store; and

using, by the guest operating system, the information from the copy of the IOMMU MMIO register for reading the information from the guest buffer or log in the guest portion.

7. The electronic device of claim 1 , wherein reading, by the IOMMU, information from a given guest buffer or log in the guest portion comprises:

receiving, by the IOMMU, from the guest operating system, a memory write request to update an IOMMU MMIO register that is associated with the given guest buffer or log, the guest operating system having separately written to the given guest buffer or log;

determining, by the IOMMU, based on the update, a system physical address of the given guest buffer or log in the guest portion; and

reading, by the IOMMU, information from the given guest buffer or log in the memory at the system physical address.

8. The electronic device of claim 7 , wherein the IOMMU is further configured to:

determine, based on the memory write request and an identifier for the guest operating system, a system physical address for a copy of the IOMMU MMIO register for the guest operating system in an IOMMU backing store; and

perform, a corresponding update of the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store.

9. The electronic device of claim 1 , wherein the guest buffers and/or logs include some or all of:

a command buffer;

an event log; and

a peripheral page request (PPR) log.

10. The electronic device of claim 1 , wherein:

the processor executes at least one other guest operating system and the memory has a separate guest portion reserved for storing data and information to be accessed by the at least one other guest operating system; and

the IOMMU is configured to:

write, in a corresponding guest portion, information into guest buffers and/or logs used for communicating information from the IOMMU to the at least one other guest operating system; and

read, from the corresponding guest portion, information in guest buffers and/or logs used for communicating information from the at least one other guest operating system to the IOMMU.

11. The electronic device of claim 1 , wherein the IOMMU is implemented in circuitry.

12. The electronic device of claim 1 , wherein the data and information to be accessed by the guest operating system in the guest portion includes guest buffers and/or logs to be accessed by the guest operating system.

13. A method for accessing guest buffers and logs in an electronic device that comprises a processor that executes a guest operating system; a memory, the memory having a guest portion that is reserved for storing data and information to be accessed by the guest operating system, wherein each guest operating system on the electronic device is allocated a separate guest portion for storing data and information for that guest operating system; and an input-output memory management unit (IOMMU), the method comprising:

writing, by the IOMMU, in the guest portion, information into guest buffers and/or logs used for communicating information from the IOMMU to the guest operating system; and

reading, by the IOMMU, from the guest portion, information in guest buffers and/or logs used for communicating information from the guest operating system to the IOMMU, the IOMMU directly accessing the guest buffers and/or logs in the guest portion for performing the writing and reading.

14. The method of claim 13 , wherein writing, by the IOMMU, information into a given guest buffer or log in the guest portion comprises:

determining, by the IOMMU, a system physical address of the given guest buffer or log in the memory;

writing, by the IOMMU, information to the given guest buffer or log in the memory at the system physical address; and

sending, by the IOMMU, to the guest operating system, an indication that the IOMMU wrote the information to the given guest buffer or log.

15. The method of claim 14 , wherein writing, by the IOMMU, information into the given guest buffer or log in the guest portion further comprises:

determining, by the IOMMU, based on an identifier for the guest operating system, a system physical address of a copy of an IOMMU MMIO register for the guest operating system in an IOMMU backing store;

acquiring, by the IOMMU, the system physical address from the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store; and

updating, by the IOMMU, after writing the information to the guest buffer or log, the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store to indicate the write to the guest buffer or log.

16. The method of claim 14 , wherein sending the indication to the guest operating system comprises:

sending, by the IOMMU, an internal interrupt to the guest operating system via a virtual copy of an interrupt controller for the guest operating system, the internal interrupt informing the guest operating system that the IOMMU wrote the given guest buffer or log.

17. The method of claim 15 , further comprising:

reading, by the guest operating system, based on the indication, the information from the guest buffer or log in the guest portion at the system physical address.

18. The method of claim 17 , wherein reading, by the guest operating system, the information from the guest buffer or log in the guest portion comprises:

acquiring, by the guest operating system, via the IOMMU, information from the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store; and

using, by the guest operating system, the information from the copy of the IOMMU MMIO register for reading the information from the guest buffer or log in the guest portion.

19. The method of claim 13 , wherein reading, by the IOMMU, information from a given guest buffer or log in the guest portion comprises:

receiving, by the IOMMU, from the guest operating system, a memory write request to update an IOMMU MMIO register that is associated with the given guest buffer or log, the guest operating system having separately written to the given guest buffer or log;

determining, by the IOMMU, based on the update, a system physical address of the given guest buffer or log in the guest portion; and

reading, by the IOMMU, information from the given guest buffer or log in the memory at the system physical address.

20. The method of claim 19 , wherein the IOMMU is further configured to:

determine, based on the memory write request and an identifier for the guest operating system, a system physical address for a copy of the IOMMU MMIO register for the guest operating system in an IOMMU backing store; and

perform, a corresponding update of the copy of the IOMMU MMIO register for the guest operating system in the IOMMU backing store.

21. The method of claim 13 , wherein the guest buffers and/or logs include some or all of:

a command buffer;

an event log; and

a peripheral page request (PPR) log.

22. The method of claim 13 , wherein:

the processor executes at least one other guest operating system and the memory has a separate guest portion reserved for storing data and information to be accessed by the at least one other guest operating system; and

the IOMMU is configured to:

write, in a corresponding guest portion, information into guest buffers and/or logs used for communicating information from the IOMMU to the at least one other guest operating system; and

read, from the corresponding guest portion, information in guest buffers and/or logs used for communicating information from the at least one other guest operating system to the IOMMU.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2019
From: CHAN, MAGGIE; NG, PHILIP; BLINZER, PAUL
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 049425/0166 →
Continuity (1)
Related Publication 20200387326A1 · Dec 10, 2020
References Cited (13)
US 20070168641A1 · Hummel · 2007 [cited by examiner]
US 20130145051A1 · Kegel et al. · 2013 [cited by applicant]
US 20140068137A1 · Kegel · 2014 [cited by examiner]
US 20150355883A1 · Kegel · 2015 [cited by examiner]
Introduction of AMD Advanced Virtual Interrupt Controller, XenSummit 2012 by Wei Huang, Aug. 2012 (Year: 2012). [cited by examiner]
A Meriam Webster definition of “copy” that defines a copy as a duplicate, for example of copy (duplicate) of a computer file attached as a snapshot of the merriam-webster page taken was taken from https://web.archive.or… [cited by examiner]
Random House Webster's College Dictionary, 373, 374, 691, 695-696 (2nd Random House ed. 1999). [cited by examiner]
Microsoft Computer Dictionary, 126, 367 (5th ed. 2002). [cited by examiner]
Advanced Micro Devices, Inc., AMD I/O Virtualization Technology (IOMMU) Specification, rev. 3.00, Dec. 2016. [cited by applicant]
“Notice of Allowance”, CN Application No. 2020080043003.7, Oct. 28, 2024, 5 pages. [cited by applicant]
“Foreign Office Action”, EP Application No. 20821688.7, 6 pages. [cited by applicant]
Advanced Micro Devices, Inc., “AMD 1/0 Virtualization Technology (IOMMU) Specification”, 48882-Rev3.00, Dec. 2016, 269 pages. [cited by applicant]
Intel, “PCI-SIG SR-IOV Primer”, An Introduction to SR-IOV Technology, 321211-002, Jan. 2011, 28 pages. [cited by applicant]