Guest-programmable location of advanced configuration and power interface (ACPI) tables in virtualized systems
AssigneeRed Hat Israel, Ltd.
InventorsMichael Tsirkin, Gerd Hoffman
Life of this patent
Estimating the term…
Loading patent…
AssigneeRed Hat Israel, Ltd.
InventorsMichael Tsirkin, Gerd Hoffman
Estimating the term…
A system and method are disclosed for guest-programmable relocation of system tables in a virtualized computer system. In accordance with one embodiment, a hypervisor that is executed by a computer system obtains a first base address of a first portion of memory, where the first base address is in an address space of a guest of a virtual machine, and where the first base address is for a set of one or more system tables that is currently exposed by the hypervisor at a second portion of memory having a second base address in the address space of the guest. The hypervisor then generates a new version of the set of one or more system tables that is exposed to the guest at the first base address.
A method comprising:
A computer system comprising:
A non-transitory computer readable storage medium, having instructions stored therein, which when executed, cause a processing device to execute a hypervisor to:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
On a parallel bus: being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
Hypervisors; Virtual machine monitors: hypervisor-specific management and integration aspects
Multiprogramming arrangements: allocation of resources, e.g. of the central processing unit [CPU]
User address space allocation, e.g. contiguous or non contiguous base addressing: multiple user address space allocation, e.g. using different…
About 7 years 9 months of term left · ends 2 Aug 2034 (estimated)
This disclosure relates to computer systems, and more particularly, to virtualized computer systems.
An operating system (OS) is a set of programs that manage computer hardware resources and provide common services for application software. For hardware functions such as input and output and memory allocation, the operating system typically acts as an intermediary between application programs and hardware. Operating systems may be found on a variety of devices, including desktop computers, servers, smartphones, video game consoles, and so forth.
The Advanced Configuration and Power Interface (ACPI) specification provides an open standard for device configuration and power management by the operating system. The ACPI specification defines four global “Gx” states G0 through G3, six sleep “Sx” states S0 through S5, four device states D0 through D3, four processor states C0 through C3, and up to 17 implementation-dependent power-performance states P0 through Pn, where n is an integer between 1 and 16 inclusive. In addition, ACPI defines several tables that provide an interface between an ACPI-compliant operating system and system firmware, including a Differentiated System Description Table (DSDT), a Secondary System Description Table (SSDT), and a System Resource Affinity Table (SRAT).
The present disclosure is illustrated by way of example, and not by way of limitation, and can be more fully understood with reference to the following detailed description when considered in connection with the figures in which:
FIG. 1 depicts an illustrative computer system architecture, in accordance with an embodiment of the present disclosure.
FIG. 2 depicts a flow diagram of one embodiment of a method by which a hypervisor detects and processes a guest request to relocate ACPI tables.
Described herein is a system and method for guest-programmable relocation of Advanced Configuration and Power Interface (ACPI) tables in virtualized computer systems. In one embodiment, a hypervisor that is executed by a computer system obtains a new base address for the ACPI tables, where the new base address is in an address space of a guest of a virtual machine (e.g., a guest operating system [OS] of the virtual machine, a guest basic input/output system [BIOS] of the virtual machine, etc.), and where the ACPI tables are currently exposed to the guest by the hypervisor at an old base address in the address space of the guest. The hypervisor then generates a new version of the ACPI tables that is exposed to the guest at the new address.
In one example, each entry of the new version of the ACPI tables is the same as the corresponding entry of the original ACPI tables when the corresponding entry is not a pointer to another entry of the ACPI tables. When the corresponding entry of the original ACPI tables is in fact a pointer to another entry of the original ACPI tables, the entry of the new version is set to the address of this pointer minus the old base address, plus the new base address. In this way, the entry is updated in the new version so that it continues pointing to the other entry, rather than to the old location at which this other entry was stored in the original ACPI tables. For example, suppose that the original set of ACPI tables has a base address of 1000, and that the new base address is 5000. Then if an entry of the original ACPI tables is a pointer to another entry of the original ACPI tables having, say, address 1035, then the corresponding entry of the new version will be a pointer to the table entry at address 5035.
In accordance with one example, the guest determines that the ACPI tables are to be relocated to the new base address (e.g., as part of a re-organization of guest memory, etc.) and notifies the hypervisor by writing the new base address to a particular register that is protected by the hypervisor (e.g., a Peripheral Component Interconnect [PCI] base address register [BAR], a configuration register of a PCI device, etc.). In one such example, this register may be specified by the ACPI tables.