On Thu, Jan 23, 2014 at 11:22 PM, Santosh Shilimkar wrote: > On Friday 24 January 2014 02:04 AM, Yinghai Lu wrote: >> On Thu, Jan 23, 2014 at 10:56 PM, Santosh Shilimkar >> 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 >> 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. Yes, Andrew, can you try attached two patches in your setup? Assume your system does not have intel iommu support? Thanks Yinghai