From: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Introduce machine specific default memory size
Date: Wed, 04 Mar 2015 14:00:17 +0530 [thread overview]
Message-ID: <87vbih6u7a.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <87zj7t2pit.fsf@blackfin.pond.sub.org>
Markus Armbruster <armbru@redhat.com> writes:
> Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> writes:
>
>> diff --git a/vl.c b/vl.c
>> index eb89d62..dd56754 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -4053,6 +4053,18 @@ int main(int argc, char **argv, char **envp)
>> exit(1);
>> }
>>
>> + if (machine_class->default_ram_size && ram_size < machine_class->default_ram_size) {
>> + fprintf(stderr, "qemu: %s guest ram size defaulting to %ld MB\n",
>> + machine_class->name,
>> + machine_class->default_ram_size / (1024 * 1024));
>
> If the user explicitly asks for something, we either provide it
> silently, or we error out. This does neither. Why?
In case the user has provided memory not enough to boot the machine, I
could error out. My idea was to have a sane default which is provided by
the machine.
Initially, I had just "ram_size == default_ram_size", but then it was
allowing "-m 128M" to go through. And the VM would not boot.
This can as well be converted to an error report and fail here to boot
the VM.
>
>> + ram_size = machine_class->default_ram_size;
>> +
>> + /* if maxram size is not provided in options use machine default */
>> + if (maxram_size == default_ram_size) {
>> + maxram_size = machine_class->default_ram_size;
>> + }
>> + }
>> +
>> /* store value for the future use */
>> qemu_opt_set_number(qemu_find_opts_singleton("memory"), "size", ram_size);
>
> Does not apply to master, please name your prerequisite patches or
> rebase.
Rebased patch:
Introduce machine specific default memory size
Qemu default memory of 128MB is not enough to boot sPAPR
guest. Introduce a member in the machine class to override the default
memory size enforced by qemu.
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 23cde20..f6b1137 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1738,6 +1738,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
mc->max_cpus = MAX_CPUS;
mc->no_parallel = 1;
mc->default_boot_order = NULL;
+ mc->default_ram_size = SPAPR_DEFAULT_RAM_SIZE;
mc->kvm_type = spapr_kvm_type;
mc->has_dynamic_sysbus = true;
diff --git a/include/hw/boards.h b/include/hw/boards.h
index 3ddc449..b2b4698 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -108,6 +108,7 @@ struct MachineClass {
const char *default_display;
GlobalProperty *compat_props;
const char *hw_version;
+ ram_addr_t default_ram_size;
HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
DeviceState *dev);
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 716bff4..d401dd0 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -444,6 +444,9 @@ int spapr_rtas_device_tree_setup(void *fdt, hwaddr rtas_addr,
#define SPAPR_VIO_BASE_LIOBN 0x00000000
#define SPAPR_PCI_BASE_LIOBN 0x80000000
+/* Default to 1GB guest ram_size */
+#define SPAPR_DEFAULT_RAM_SIZE (1ULL << 30)
+
#define RTAS_ERROR_LOG_MAX 2048
typedef struct sPAPRTCETable sPAPRTCETable;
diff --git a/vl.c b/vl.c
index 801d487..4519ccc 100644
--- a/vl.c
+++ b/vl.c
@@ -2684,6 +2684,18 @@ static void set_memory_options(uint64_t *ram_slots, ram_addr_t *maxram_size)
exit(EXIT_FAILURE);
}
+ if (machine_class->default_ram_size && ram_size < machine_class->default_ram_size) {
+ fprintf(stderr, "qemu: %s guest ram size defaulting to %ld MB\n",
+ machine_class->name,
+ machine_class->default_ram_size / (1024 * 1024));
+ ram_size = machine_class->default_ram_size;
+
+ /* if maxram size is not provided in options use machine default */
+ if (maxram_size == default_ram_size) {
+ maxram_size = machine_class->default_ram_size;
+ }
+ }
+
/* store value for the future use */
qemu_opt_set_number(opts, "size", ram_size, &error_abort);
*maxram_size = ram_size;
next prev parent reply other threads:[~2015-03-04 8:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-03 12:54 [Qemu-devel] [PATCH] Introduce machine specific default memory size Nikunj A Dadhania
2015-03-04 7:24 ` Markus Armbruster
2015-03-04 8:30 ` Nikunj A Dadhania [this message]
2015-03-04 8:59 ` Thomas Huth
2015-03-04 9:04 ` Nikunj A Dadhania
2015-03-04 9:19 ` Thomas Huth
2015-03-04 9:29 ` Nikunj A Dadhania
2015-03-04 9:39 ` Thomas Huth
2015-03-04 9:56 ` Nikunj A Dadhania
2015-03-04 11:11 ` [Qemu-devel] [Qemu-ppc] " Nikunj A Dadhania
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vbih6u7a.fsf@linux.vnet.ibm.com \
--to=nikunj@linux.vnet.ibm.com \
--cc=armbru@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.