Re: Panic on 8-node system in memblock_virt_alloc_try_nid()

From: Santosh Shilimkar
Date: Fri Jan 24 2014 - 02:23:19 EST


On Friday 24 January 2014 02:04 AM, Yinghai Lu wrote:
> On Thu, Jan 23, 2014 at 10:56 PM, Santosh Shilimkar
> <santosh.shilimkar@xxxxxx> wrote:
>> On Friday 24 January 2014 01:38 AM, Santosh Shilimkar wrote:
>
>> The patch which is now commit 457ff1d {lib/swiotlb.c: use
>> memblock apis for early memory allocations} was the breaking the
>> boot on Andrew's machine. Now if I look back the patch, based on your
>> above description, I believe below hunk waS/is the culprit.
>>
>> @@ -172,8 +172,9 @@ int __init swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose)
>> /*
>> * Get the overflow emergency buffer
>> */
>> - v_overflow_buffer = alloc_bootmem_low_pages_nopanic(
>> - PAGE_ALIGN(io_tlb_overflow));
>> + v_overflow_buffer = memblock_virt_alloc_nopanic(
>> + PAGE_ALIGN(io_tlb_overflow),
>> + PAGE_SIZE);
>> if (!v_overflow_buffer)
>> return -ENOMEM;
>>
>>
>> Looks like 'v_overflow_buffer' must be allocated from low memory in this
>> case. Is that correct ?
>
> yes.
>
> but should the change like following
>
> commit 457ff1de2d247d9b8917c4664c2325321a35e313
> Author: Santosh Shilimkar <santosh.shilimkar@xxxxxx>
> Date: Tue Jan 21 15:50:30 2014 -0800
>
> lib/swiotlb.c: use memblock apis for early memory allocations
>
>
> @@ -215,13 +220,13 @@ swiotlb_init(int verbose)
> bytes = io_tlb_nslabs << IO_TLB_SHIFT;
>
> /* Get IO TLB memory from the low pages */
> - vstart = alloc_bootmem_low_pages_nopanic(PAGE_ALIGN(bytes));
> + vstart = memblock_virt_alloc_nopanic(PAGE_ALIGN(bytes), PAGE_SIZE);
> if (vstart && !swiotlb_init_with_tbl(vstart, io_tlb_nslabs, verbose))
> return;
>
OK. So we need '__alloc_bootmem_low()' equivalent memblock API. We will try
to come up with a patch for the same. Thanks for inputs.

Regards,
Santosh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/