On 29.04.2013, at 21:18, Scott Wood wrote: > On 04/28/2013 05:30:09 AM, Tiejun Chen wrote: >> We should sync params->ram_size after we fixup memory size on >> a alignment boundary. Otherwise Guest would exceed the actual >> memory region. >> Signed-off-by: Tiejun Chen <tiejun.c...@windriver.com> >> --- >> hw/ppc/e500.c | 2 ++ >> 1 file changed, 2 insertions(+) >> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c >> index c1bdb6b..145da0e 100644 >> --- a/hw/ppc/e500.c >> +++ b/hw/ppc/e500.c >> @@ -523,6 +523,8 @@ void ppce500_init(PPCE500Params *params) >> /* Fixup Memory size on a alignment boundary */ >> ram_size &= ~(RAM_SIZES_ALIGN - 1); >> + /* Sync this for the system. */ >> + params->ram_size = ram_size; > > Could you explain this further? When does params->ram_size ever get used > after this point?
This is the respective code in vl.c: > QEMUMachineInitArgs args = { .ram_size = ram_size, > .boot_device = (boot_devices[0] == '\0') ? > machine->boot_order : > boot_devices, > .kernel_filename = kernel_filename, > .kernel_cmdline = kernel_cmdline, > .initrd_filename = initrd_filename, > .cpu_model = cpu_model }; > machine->init(&args); After this, args in unused. So as you can see, params->ram_size never gets used after it's read once. What bug are you trying to fix? Maybe there really is something broken here, that this patch doesn't fix either. Alex