Bug 1410580

Summary: [RFE] PCI: Reserve MMIO space over 4G for PCI hotplug
Product: Red Hat Enterprise Virtualization Manager Reporter: Marcel Apfelbaum <marcel>
Component: ovirt-engineAssignee: Nobody <nobody>
Status: CLOSED DEFERRED QA Contact: meital avital <mavital>
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedCC: ailan, chayang, dyuan, jinzhao, juzhang, lhuang, libvirt-maint, lsurette, marcel, mtessun, rbarry, Rhev-m-bugs, srevivo, virt-maint, xuzhang
Target Milestone: ---Keywords: FutureFeature, TestOnly
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: 1408813 Environment:
Last Closed: 2019-01-09 12:21:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Virt RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1390346, 1408813    
Bug Blocks:    

Description Marcel Apfelbaum 2017-01-05 19:34:15 UTC
+++ This bug was initially created as a clone of Bug #1408813 +++

+++ This bug was initially created as a clone of Bug #1390346 +++

QEMU reserves only 32-bit memory range for hotplug. The range can be rather limited and not enough to hot-plug devices with large BARs.

Add a parameter to QEMU to reserve a 64-bit range in CRS
starting after the memory ranged reserved for memory hotplug.

Check that all the range is addressable by VM's CPU.

Add libvirt support for the new command line parameters.

Comment 1 Marcel Apfelbaum 2017-01-05 19:57:17 UTC
This should work the same as with Memory Hotplug.
If for Memory Hotplug we need to specify the slots and max size at command line, for the PCI Hotplug over 4G we only need to specify the size.

By default the allocated size will be 0, because when we reserve the space we add a constraint on the VM CPU addressable bits. Reserving a bigger chunk may create problems when we want to migrate the VM to a host with less addressable bits.

Because of the above, libvirt can't decide by itself and the upper layers need to handle this trade-off: more hot-pluggable space VS potential migration limitations.