On Fri, Nov 08, 2013 at 01:54:18AM +0100, Alexander Graf wrote: > > On 14.10.2013, at 16:58, Michael S. Tsirkin <m...@redhat.com> wrote: > > > Support ROM blobs not mapped into guest memory: > > same as ROM files really but use caller's buffer. > > > > Support invoking callback on access and > > return memory pointer making it easier > > for caller to update memory if necessary. > > > > Reviewed-by: Gerd Hoffmann <kra...@redhat.com> > > Tested-by: Gerd Hoffmann <kra...@redhat.com> > > Reviewed-by: Laszlo Ersek <ler...@redhat.com> > > Reviewed-by: Igor Mammedov <imamm...@redhat.com> > > Tested-by: Igor Mammedov <imamm...@redhat.com> > > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > > This patch breaks -M bamboo. Let explain inline why.
Thanks a lot for the report and the explanation. rom_add_blob never fails, so I think it's easiest to just avoid checking the return value. If we do, we can remove the return value from rom_add_blob_fixed, too. Could you please confirm that the below helps? --> loader: drop return value for rom_add_blob_fixed rom_add_blob never fails, and neither does rom_add_blob_fixed, so there's no need to return value from it. In fact, rom_add_blob_fixed was erroneously returning -1 unconditionally which made the only system that checked the return value -M bamboo fail to start. Drop the return value and drop checks from ppc440_bamboo to fix this failure. Reported-by: Alexander Graf <ag...@suse.de> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> --- diff --git a/include/hw/loader.h b/include/hw/loader.h index 58eca98..7a23d6b 100644 --- a/include/hw/loader.h +++ b/include/hw/loader.h @@ -55,7 +55,7 @@ void do_info_roms(Monitor *mon, const QDict *qdict); #define rom_add_file_fixed(_f, _a, _i) \ rom_add_file(_f, NULL, _a, _i) #define rom_add_blob_fixed(_f, _b, _l, _a) \ - (rom_add_blob(_f, _b, _l, _a, NULL, NULL, NULL) ? 0 : -1) + rom_add_blob(_f, _b, _l, _a, NULL, NULL, NULL) #define PC_ROM_MIN_VGA 0xc0000 #define PC_ROM_MIN_OPTION 0xc8000 diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 655e499..67597df 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -110,8 +110,9 @@ static int bamboo_load_device_tree(hwaddr addr, qemu_devtree_setprop_cell(fdt, "/cpus/cpu@0", "timebase-frequency", tb_freq); - ret = rom_add_blob_fixed(BINARY_DEVICE_TREE_FILE, fdt, fdt_size, addr); + rom_add_blob_fixed(BINARY_DEVICE_TREE_FILE, fdt, fdt_size, addr); g_free(fdt); + return 0; out: