[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [XEN][POWERPC] workaround for broken claim is insufficient
# HG changeset patch # User Jimi Xenidis <jimix@xxxxxxxxxxxxxx> # Node ID 639eb7e6446e0caa97d0432cd07533988aa1cb8b # Parent 47078e89e663e58145e6890862c86254be84b7ae [XEN][POWERPC] workaround for broken claim is insufficient Ifdef'ed out so we can revisit, maybe. Also add a check to make sure we allocated enough for the devtree. Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx> Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> --- xen/arch/powerpc/boot_of.c | 34 +++++++++++++++++++++++----------- 1 files changed, 23 insertions(+), 11 deletions(-) diff -r 47078e89e663 -r 639eb7e6446e xen/arch/powerpc/boot_of.c --- a/xen/arch/powerpc/boot_of.c Thu Aug 17 19:03:06 2006 -0400 +++ b/xen/arch/powerpc/boot_of.c Thu Aug 17 20:38:08 2006 -0400 @@ -685,7 +685,6 @@ static int boot_of_fixup_chosen(void *me } static ulong space_base; -static int broken_claim; /* * The following function is necessary because we cannot depend on all @@ -706,14 +705,20 @@ static ulong find_space(u32 size, u32 al if (align == 0) of_panic("cannot call %s() with align of 0\n", __func__); - if (!broken_claim) { - /* just try and claim it to the FW chosen address */ - base = of_claim(0, size, align); - if (base != OF_FAILURE) - return base; - of_printf("%s: Firmware does not allocate memory for you\n", __func__); - broken_claim = 1; - } +#ifdef BROKEN_CLAIM_WORKAROUND + { + static int broken_claim; + if (!broken_claim) { + /* just try and claim it to the FW chosen address */ + base = of_claim(0, size, align); + if (base != OF_FAILURE) + return base; + of_printf("%s: Firmware does not allocate memory for you\n", + __func__); + broken_claim = 1; + } + } +#endif of_printf("%s base=0x%016lx eomem=0x%016lx size=0x%08x align=0x%x\n", __func__, space_base, eomem, size, align); @@ -915,15 +920,22 @@ static void boot_of_module(ulong r3, ulo /* snapshot the tree */ oftree = (void*)find_space(oftree_sz, PAGE_SIZE, mbi); - if (oftree == 0) of_panic("Could not allocate OFD tree\n"); + if (oftree == 0) + of_panic("Could not allocate OFD tree\n"); of_printf("creating oftree\n"); of_test("package-to-path"); - ofd_create(oftree, oftree_sz); + oftree = ofd_create(oftree, oftree_sz); pkg_save(oftree); + + if (ofd_size(oftree) > oftree_sz) + of_panic("Could not fit all of native devtree\n"); boot_of_fixup_refs(oftree); boot_of_fixup_chosen(oftree); + + if (ofd_size(oftree) > oftree_sz) + of_panic("Could not fit all devtree fixups\n"); ofd_walk(oftree, OFD_ROOT, /* add_hype_props */ NULL, 2); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |