mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-06-14 13:26:24 +00:00
move get_command_for_arch() helper to helpers module
Cannot use the is_native_arch() helper inside the function anymore, to avoid a cyclic dependency between the 'CPUConfig' and 'Helpers' modules, inline it. While at it, improve the variable name for the mapping. Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
1cb9f2cb89
commit
0050aa8735
@ -1199,7 +1199,7 @@ my $kvm_mtime = {};
|
|||||||
sub kvm_user_version {
|
sub kvm_user_version {
|
||||||
my ($binary) = @_;
|
my ($binary) = @_;
|
||||||
|
|
||||||
$binary //= get_command_for_arch(get_host_arch()); # get the native arch by default
|
$binary //= PVE::QemuServer::Helpers::get_command_for_arch(get_host_arch()); # get the native arch by default
|
||||||
my $st = stat($binary);
|
my $st = stat($binary);
|
||||||
|
|
||||||
my $cachedmtime = $kvm_mtime->{$binary} // -1;
|
my $cachedmtime = $kvm_mtime->{$binary} // -1;
|
||||||
@ -3397,19 +3397,6 @@ sub get_ovmf_files($$$) {
|
|||||||
return ($ovmf_code, $ovmf_vars);
|
return ($ovmf_code, $ovmf_vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $Arch2Qemu = {
|
|
||||||
aarch64 => '/usr/bin/qemu-system-aarch64',
|
|
||||||
x86_64 => '/usr/bin/qemu-system-x86_64',
|
|
||||||
};
|
|
||||||
sub get_command_for_arch($) {
|
|
||||||
my ($arch) = @_;
|
|
||||||
return '/usr/bin/kvm' if is_native_arch($arch);
|
|
||||||
|
|
||||||
my $cmd = $Arch2Qemu->{$arch}
|
|
||||||
or die "don't know how to emulate architecture '$arch'\n";
|
|
||||||
return $cmd;
|
|
||||||
}
|
|
||||||
|
|
||||||
# To use query_supported_cpu_flags and query_understood_cpu_flags to get flags
|
# To use query_supported_cpu_flags and query_understood_cpu_flags to get flags
|
||||||
# to use in a QEMU command line (-cpu element), first array_intersect the result
|
# to use in a QEMU command line (-cpu element), first array_intersect the result
|
||||||
# of query_supported_ with query_understood_. This is necessary because:
|
# of query_supported_ with query_understood_. This is necessary because:
|
||||||
@ -3444,7 +3431,7 @@ sub query_supported_cpu_flags {
|
|||||||
$arch eq "aarch64";
|
$arch eq "aarch64";
|
||||||
|
|
||||||
my $kvm_supported = defined(kvm_version());
|
my $kvm_supported = defined(kvm_version());
|
||||||
my $qemu_cmd = get_command_for_arch($arch);
|
my $qemu_cmd = PVE::QemuServer::Helpers::get_command_for_arch($arch);
|
||||||
my $fakevmid = -1;
|
my $fakevmid = -1;
|
||||||
my $pidfile = PVE::QemuServer::Helpers::pidfile_name($fakevmid);
|
my $pidfile = PVE::QemuServer::Helpers::pidfile_name($fakevmid);
|
||||||
|
|
||||||
@ -3634,7 +3621,7 @@ sub config_to_command {
|
|||||||
my $machine_conf = PVE::QemuServer::Machine::parse_machine($conf->{machine});
|
my $machine_conf = PVE::QemuServer::Machine::parse_machine($conf->{machine});
|
||||||
|
|
||||||
my $arch = get_vm_arch($conf);
|
my $arch = get_vm_arch($conf);
|
||||||
my $kvm_binary = get_command_for_arch($arch);
|
my $kvm_binary = PVE::QemuServer::Helpers::get_command_for_arch($arch);
|
||||||
my $kvmver = kvm_user_version($kvm_binary);
|
my $kvmver = kvm_user_version($kvm_binary);
|
||||||
|
|
||||||
if (!$kvmver || $kvmver !~ m/^(\d+)\.(\d+)/ || $1 < 5) {
|
if (!$kvmver || $kvmver !~ m/^(\d+)\.(\d+)/ || $1 < 5) {
|
||||||
|
@ -8,6 +8,7 @@ use JSON;
|
|||||||
|
|
||||||
use PVE::INotify;
|
use PVE::INotify;
|
||||||
use PVE::ProcFSTools;
|
use PVE::ProcFSTools;
|
||||||
|
use PVE::Tools qw(get_host_arch);
|
||||||
|
|
||||||
use base 'Exporter';
|
use base 'Exporter';
|
||||||
our @EXPORT_OK = qw(
|
our @EXPORT_OK = qw(
|
||||||
@ -19,6 +20,19 @@ windows_version
|
|||||||
|
|
||||||
my $nodename = PVE::INotify::nodename();
|
my $nodename = PVE::INotify::nodename();
|
||||||
|
|
||||||
|
my $arch_to_qemu_binary = {
|
||||||
|
aarch64 => '/usr/bin/qemu-system-aarch64',
|
||||||
|
x86_64 => '/usr/bin/qemu-system-x86_64',
|
||||||
|
};
|
||||||
|
sub get_command_for_arch($) {
|
||||||
|
my ($arch) = @_;
|
||||||
|
return '/usr/bin/kvm' if get_host_arch() eq $arch; # i.e. native arch
|
||||||
|
|
||||||
|
my $cmd = $arch_to_qemu_binary->{$arch}
|
||||||
|
or die "don't know how to emulate architecture '$arch'\n";
|
||||||
|
return $cmd;
|
||||||
|
}
|
||||||
|
|
||||||
# Paths and directories
|
# Paths and directories
|
||||||
|
|
||||||
our $var_run_tmpdir = "/var/run/qemu-server";
|
our $var_run_tmpdir = "/var/run/qemu-server";
|
||||||
|
Loading…
Reference in New Issue
Block a user