kvm: Add --mem= option

Which allow an user to specify the amount of memory
he would like to provide for kernel.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This commit is contained in:
Cyrill Gorcunov
2015-06-01 16:39:40 +01:00
committed by Will Deacon
parent 6e7b99ee3f
commit 192a99d1d7
3 changed files with 16 additions and 5 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ struct kvm {
struct interrupt_table interrupt_table;
};
struct kvm *kvm__init(const char *kvm_dev);
struct kvm *kvm__init(const char *kvm_dev, unsigned long ram_size);
void kvm__delete(struct kvm *self);
void kvm__setup_cpuid(struct kvm *self);
void kvm__enable_singlestep(struct kvm *self);
+2 -2
View File
@@ -151,7 +151,7 @@ static bool kvm__cpu_supports_vm(void)
return regs.ecx & (1 << feature);
}
struct kvm *kvm__init(const char *kvm_dev)
struct kvm *kvm__init(const char *kvm_dev, unsigned long ram_size)
{
struct kvm_userspace_memory_region mem;
struct kvm_pit_config pit_config = { .flags = 0, };
@@ -192,7 +192,7 @@ struct kvm *kvm__init(const char *kvm_dev)
if (ret < 0)
die_perror("KVM_CREATE_PIT2 ioctl");
self->ram_size = 64UL * 1024UL * 1024UL;
self->ram_size = ram_size;
page_size = sysconf(_SC_PAGESIZE);
if (posix_memalign(&self->ram_start, page_size, self->ram_size) != 0)
+13 -2
View File
@@ -14,7 +14,10 @@ extern bool ioport_debug;
static void usage(char *argv[])
{
fprintf(stderr, " usage: %s [--single-step] [--ioport-debug] [--params=<kernel-params>] [--kernel=]<kernel-image>\n",
fprintf(stderr, " usage: %s "
"[--single-step] [--ioport-debug] "
"[--kvm-dev=device] [--mem=MB] [--params=<kernel-params>] "
"[--kernel=]<kernel-image>\n",
argv[0]);
exit(1);
}
@@ -44,6 +47,7 @@ int main(int argc, char *argv[])
const char *kernel_filename = NULL;
const char *kernel_cmdline = NULL;
const char *kvm_dev = "/dev/kvm";
unsigned long ram_size = 64UL << 20;
bool single_step = false;
int i;
@@ -62,6 +66,13 @@ int main(int argc, char *argv[])
} else if (option_matches(argv[i], "--single-step")) {
single_step = true;
continue;
} else if (option_matches(argv[i], "--mem=")) {
unsigned long val = atol(&argv[i][6]) << 20;
if (val < ram_size)
die("Not enough memory specified: %sMB (min %luMB)",
argv[i], ram_size >> 20);
ram_size = val;
continue;
} else if (option_matches(argv[i], "--ioport-debug")) {
ioport_debug = true;
continue;
@@ -78,7 +89,7 @@ int main(int argc, char *argv[])
if (!kernel_filename)
usage(argv);
kvm = kvm__init(kvm_dev);
kvm = kvm__init(kvm_dev, ram_size);
kvm__setup_cpuid(kvm);