From: Sasha Levin Date: Wed, 5 Sep 2012 08:31:45 +0000 (+0200) Subject: kvm tools: move nrcpus into struct kvm_config X-Git-Tag: next-20120910~8^2~18 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=89f40a7;p=karo-tx-linux.git kvm tools: move nrcpus into struct kvm_config This no longer has to be a global since we now have kvm_config. Signed-off-by: Sasha Levin Signed-off-by: Pekka Enberg --- diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c index cb48eadc9eb3..df8e17ce22c8 100644 --- a/tools/kvm/builtin-run.c +++ b/tools/kvm/builtin-run.c @@ -61,7 +61,6 @@ static int kvm_run_wrapper; bool do_debug_print = false; -static int nrcpus; static int vidmode = -1; extern char _binary_guest_init_start; @@ -377,7 +376,7 @@ static int shmem_parser(const struct option *opt, const char *arg, int unset) OPT_GROUP("Basic options:"), \ OPT_STRING('\0', "name", &(cfg)->guest_name, "guest name", \ "A name for the guest"), \ - OPT_INTEGER('c', "cpus", &nrcpus, "Number of CPUs"), \ + OPT_INTEGER('c', "cpus", &(cfg)->nrcpus, "Number of CPUs"), \ OPT_U64('m', "mem", &(cfg)->ram_size, "Virtual machine memory size\ in MiB."), \ OPT_CALLBACK('\0', "shmem", NULL, \ @@ -528,7 +527,7 @@ static void handle_debug(int fd, u32 type, u32 len, u8 *msg) if (!(dbg_type & KVM_DEBUG_CMD_TYPE_DUMP)) return; - for (i = 0; i < nrcpus; i++) { + for (i = 0; i < kvm->nrcpus; i++) { struct kvm_cpu *cpu = kvm_cpus[i]; if (!cpu) @@ -947,11 +946,11 @@ static int kvm_cmd_run_init(int argc, const char **argv) kvm->cfg.vmlinux_filename = find_vmlinux(); - if (nrcpus == 0) - nrcpus = nr_online_cpus; + if (kvm->cfg.nrcpus == 0) + kvm->cfg.nrcpus = nr_online_cpus; if (!kvm->cfg.ram_size) - kvm->cfg.ram_size = get_ram_size(nrcpus); + kvm->cfg.ram_size = get_ram_size(kvm->cfg.nrcpus); if (kvm->cfg.ram_size < MIN_RAM_SIZE_MB) die("Not enough memory specified: %lluMB (min %lluMB)", kvm->cfg.ram_size, MIN_RAM_SIZE_MB); @@ -1015,20 +1014,20 @@ static int kvm_cmd_run_init(int argc, const char **argv) max_cpus = kvm__max_cpus(kvm); recommended_cpus = kvm__recommended_cpus(kvm); - if (nrcpus > max_cpus) { + if (kvm->cfg.nrcpus > max_cpus) { printf(" # Limit the number of CPUs to %d\n", max_cpus); - nrcpus = max_cpus; - } else if (nrcpus > recommended_cpus) { + kvm->cfg.nrcpus = max_cpus; + } else if (kvm->cfg.nrcpus > recommended_cpus) { printf(" # Warning: The maximum recommended amount of VCPUs" " is %d\n", recommended_cpus); } - kvm->nrcpus = nrcpus; + kvm->nrcpus = kvm->cfg.nrcpus; /* Alloc one pointer too many, so array ends up 0-terminated */ - kvm_cpus = calloc(nrcpus + 1, sizeof(void *)); + kvm_cpus = calloc(kvm->nrcpus + 1, sizeof(void *)); if (!kvm_cpus) - die("Couldn't allocate array for %d CPUs", nrcpus); + die("Couldn't allocate array for %d CPUs", kvm->nrcpus); r = irq__init(kvm); if (r < 0) { @@ -1105,7 +1104,7 @@ static int kvm_cmd_run_init(int argc, const char **argv) } printf(" # %s run -k %s -m %Lu -c %d --name %s\n", KVM_BINARY_NAME, - kvm->cfg.kernel_filename, kvm->cfg.ram_size / 1024 / 1024, nrcpus, kvm->cfg.guest_name); + kvm->cfg.kernel_filename, kvm->cfg.ram_size / 1024 / 1024, kvm->cfg.nrcpus, kvm->cfg.guest_name); if (!kvm->cfg.firmware_filename) { if (!kvm__load_kernel(kvm, kvm->cfg.kernel_filename, @@ -1235,7 +1234,7 @@ static int kvm_cmd_run_init(int argc, const char **argv) } } - for (i = 0; i < nrcpus; i++) { + for (i = 0; i < kvm->nrcpus; i++) { kvm_cpus[i] = kvm_cpu__init(kvm, i); if (!kvm_cpus[i]) die("unable to initialize KVM VCPU"); @@ -1251,7 +1250,7 @@ static int kvm_cmd_run_work(void) int i, r = -1; void *ret = NULL; - for (i = 0; i < nrcpus; i++) { + for (i = 0; i < kvm->nrcpus; i++) { if (pthread_create(&kvm_cpus[i]->thread, NULL, kvm_cpu_thread, kvm_cpus[i]) != 0) die("unable to create KVM VCPU thread"); } @@ -1263,7 +1262,7 @@ static int kvm_cmd_run_work(void) kvm_cpu__delete(kvm_cpus[0]); kvm_cpus[0] = NULL; - for (i = 1; i < nrcpus; i++) { + for (i = 1; i < kvm->nrcpus; i++) { if (kvm_cpus[i]->is_running) { pthread_kill(kvm_cpus[i]->thread, SIGKVMEXIT); if (pthread_join(kvm_cpus[i]->thread, &ret) != 0) diff --git a/tools/kvm/include/kvm/kvm-config.h b/tools/kvm/include/kvm/kvm-config.h index 35cde486aa41..1f06df32b35b 100644 --- a/tools/kvm/include/kvm/kvm-config.h +++ b/tools/kvm/include/kvm/kvm-config.h @@ -24,6 +24,7 @@ struct kvm_config { bool virtio_rng; int active_console; int debug_iodelay; + int nrcpus; const char *kernel_cmdline; const char *kernel_filename; const char *vmlinux_filename;