Virtual Root Bus Address Allocation for Hot-Plug
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In virtualized systems, hot-plugging of hardware devices into multiple virtual root buses is challenging due to uncertainty in address range requirements and limitations in non-uniform memory access (NUMA) systems, where devices attached to non-root PCI buses cannot perform certain functions like system boot.
Innovation Solution
A hypervisor obtains resource quantity values for each virtual bus, determines and allocates non-overlapping address ranges, and notifies the guest component to enable hot-plugging of virtual devices across multiple virtual root buses, leveraging proximity to NUMA nodes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If devices are hot-plugged into multiple virtual root buses in virtualized systems, then device functionality and system versatility are improved, but address range allocation complexity and system complexity increase due to uncertainty in address range requirements and NUMA system limitations
Solution Approach 1:
The patent segments the address space into distinct ranges for different virtual root buses. The hypervisor allocates specific address ranges to each virtual bus, allowing independent device hot-plugging on each bus without conflicts. This segmentation resolves the complexity by dividing the overall address allocation problem into manageable per-bus allocations.
Solution Approach 2:
The patent performs preliminary address range allocation before device hot-plugging occurs. The hypervisor pre-allocates address ranges to virtual root buses and updates system tables (ACPI, PCI) in advance, ensuring that when devices are hot-plugged, the address space is already prepared and configured, eliminating allocation complexity during the hot-plug operation.
2Adaptability or versatility
If address ranges are allocated for virtual devices on multiple virtual root buses, then hot-plugging functionality is enabled, but system resource allocation complexity increases
Solution Approach 1:
The hypervisor performs preliminary allocation of system resources (address ranges) to virtual root buses before devices are hot-plugged. System tables are updated in advance with the allocated ranges, so when hot-plugging occurs, resources are already prepared and assigned, simplifying the hot-plug operation itself.
Solution Approach 2:
The patent introduces system tables (ACPI, PCI) as intermediaries between the hypervisor and virtual devices. These tables store and manage address range allocations, acting as a mediator that automatically handles resource tracking and assignment, reducing the complexity of direct resource management by the hypervisor.
3Adaptability or versatility
If non-overlapping address ranges are assigned to multiple virtual root buses, then device attachment capability is improved, but processing time and notification overhead increase
Solution Approach 1:
The hypervisor performs preliminary assignment of non-overlapping address ranges to virtual root buses and pre-updates system tables before devices are attached. This preliminary configuration ensures that when devices are hot-plugged, the address space is already prepared, eliminating the need for time-consuming allocation calculations during the attachment process.
Data Source
AI summary
A system and method for enabling hot-plugging of devices in virtualized systems. A hypervisor obtains respective values representing respective quantities of a resource for a plurality of virtual root buses of a virtual machine (VM). The hypervisor determines a first set of address ranges of the resource that are allocated for one or more virtual devices attached to at least one of the plurality of virtual root buses. The hypervisor determines, in view of the first set of allocated address ranges, a second set of address ranges of the resource available for attaching one or more additional virtual devices to at least one of the plurality of virtual root buses. The hypervisor assigns to the plurality of virtual root buses non-overlapping respective address ranges of the resource within the second set.


