13.02.2016 16:56, Vladimir 'phcoder' Serbinenko пишет: > Le sam. 13 févr. 2016 06:30, Andrei Borzenkov <arvidj...@gmail.com> a > écrit : > >> 13.02.2016 00:35, Eric Snowberg пишет: >>> OBP available region contains grub. Start at grub_phys_end. >>> >>> This prevents a problem where grub was being overwritten since >>> grub_phys_start does not start at a zero offset within the memory >>> map. >>> >>> Signed-off-by: Eric Snowberg <eric.snowb...@oracle.com> >>> --- >>> grub-core/loader/sparc64/ieee1275/linux.c | 16 ++++++++-------- >>> 1 files changed, 8 insertions(+), 8 deletions(-) >>> >>> diff --git a/grub-core/loader/sparc64/ieee1275/linux.c >> b/grub-core/loader/sparc64/ieee1275/linux.c >>> index d44d7a1..67ef048 100644 >>> --- a/grub-core/loader/sparc64/ieee1275/linux.c >>> +++ b/grub-core/loader/sparc64/ieee1275/linux.c >>> @@ -203,20 +203,20 @@ alloc_phys_choose (grub_uint64_t addr, >> grub_uint64_t len, >>> if (addr + ctx->size >= end) >>> return 0; >>> >>> - if (addr >= grub_phys_start && addr < grub_phys_end) >>> - { >>> - addr = ALIGN_UP (grub_phys_end, FOUR_MB); >>> - if (addr + ctx->size >= end) >>> - return 0; >>> - } >>> - if ((addr + ctx->size) >= grub_phys_start >>> - && (addr + ctx->size) < grub_phys_end) >>> + /* OBP available region contains grub. Start at grub_phys_end. */ >>> + /* grub_phys_start does not start at the beginning of the memory >> region */ >>> + if ((grub_phys_start >= addr && grub_phys_end < end) || >>> + (addr > grub_phys_start && addr < grub_phys_end)) >> >> What about >> >> a) overlapping regions? >> >> addr < grub_phys_start < end < grub_phys_end >> >> Good catch. Condition should have been > grub_phys_start >= addr && grub_phys_start < end) || (addr > > grub_phys_start && addr < grub_phys_end)) > My pattern matching algorithm failed and I thought it was standard check > for segment intersection but it wasn't. I'll fix this > > >> >> b) is is possible for requested region to fit before grub? >> > There is only 16KiB of memory before GRUB but thinking about it again, it's > 16 KiB of virtual memory, not physical. What about attached patch? >
As far as I understand what it does looks OK. _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel