[pve-devel] [PATCH v4 qemu-server 11/12] fix #2318: allow phys-bits and host-phys-bits CPU settings
Stefan Reiter
s.reiter at proxmox.com
Mon Oct 7 14:47:30 CEST 2019
Can be specified for a particular VM or via a custom CPU model (VM takes
precedence).
QEMU's default limit only allows up to 1TB of RAM per VM. Increasing the
physical address bits available to a VM can fix this.
Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
---
v2 -> v3:
* add minimum to phys-bits (8)
PVE/QemuServer/CPUConfig.pm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/PVE/QemuServer/CPUConfig.pm b/PVE/QemuServer/CPUConfig.pm
index 0948f67..d0873b3 100644
--- a/PVE/QemuServer/CPUConfig.pm
+++ b/PVE/QemuServer/CPUConfig.pm
@@ -133,6 +133,19 @@ my $cpu_fmt = {
pattern => qr/[+-][a-zA-Z0-9\-_\.]+(;[+-][a-zA-Z0-9\-_\.]+)*/,
optional => 1,
},
+ 'phys-bits' => {
+ type => 'integer',
+ minimum => 8,
+ maximum => 64,
+ description => "The physical memory address bits that are reported to the guest OS. Should be smaller or equal to the host's.",
+ optional => 1,
+ },
+ 'host-phys-bits' => {
+ type => 'boolean',
+ default => 0,
+ description => "Whether to report the host's physical memory address bits. Overrides 'phys-bits' when set.",
+ optional => 1,
+ },
};
# $cpu_fmt describes both the CPU config passed as part of a VM config, as well
@@ -455,6 +468,17 @@ sub get_cpu_options {
$cpu .= resolve_cpu_flags($pve_flags, $hv_flags, $custom_cputype_flags,
$vm_flags, $pve_forced_flags);
+ my $phys_bits = '';
+ foreach my $conf ($custom_cpuconf, $cpuconf) {
+ next if !defined($conf);
+ if ($conf->{'host-phys-bits'}) {
+ $phys_bits = ",host-phys-bits=true";
+ } elsif ($conf->{'phys-bits'}) {
+ $phys_bits = ",phys-bits=$conf->{'phys-bits'}";
+ }
+ }
+ $cpu .= $phys_bits;
+
return ('-cpu', $cpu);
}
--
2.20.1
More information about the pve-devel
mailing list