On 09/24/2013 09:23 PM, Tejun Heo wrote: > On Tue, Sep 24, 2013 at 09:17:16PM +0800, Zhang Yanfei wrote: >>> Maybe just print warning only on the first failure? >> >> Hmmm... This message is for each memblock allocation, that said, if the >> allocation this time fails, it prints the message and we use so called top-down. >> But next time, we still use bottom up first again. >> >> Did you mean if we fail on one bottom-up allocation, then we never try >> bottom-up again and will always use top-down? > > Nope, it's just that it might end up printing something for each alloc > which can end up flooding console / log. The first failure is the > most interesting and pretty much defeats the purpose of the whole > thing after all. If it's expected to fail very rarely, I'd just stick > in WARN_ONCE() there as the stack trace would be interesting too. > I see. I think it is rarely to fail. But here is case that it must fail in the current bottom-up implementation. For example, we allocate memory in reserve_real_mode() by calling this: memblock_find_in_range(0, 1<<20, size, PAGE_SIZE); Both the start and end is below the kernel, so trying bottom-up for this must fail. So I am now thinking that if we should take this as the special case for bottom-up. That said, if we limit start and end both below the kernel, we should allocate memory below the kernel instead of make it fail. The cases are also rare, in early boot time, only these two: |->early_reserve_e820_mpc_new() /* allocate memory under 1MB */ |->reserve_real_mode() /* allocate memory under 1MB */ How do you think? -- Thanks. Zhang Yanfei -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html