On Tue, 2020-07-21 at 20:52 +0530, Amit Pundir wrote: [...]
> > > > Can you try booting *without* my patch and this in the kernel > > > > command > > > > line: "cma=16M@0x100000000-0x200000000". > > > > > > It doesn't boot with this added kernel command line. > > > > For the record, this placed the CMA in the [4GB, 8GB] address space > > instead of you setup's default: [3GB, 4GB]. All atomic pools fall > > in > > that memory area without my patch, which makes me think some of the > > devices on your board might not like higher addresses. > > > > Thank you Nicolas for the details. Though we don't set the CMA > alloc-ranges explicitly in upstream sdm845 dts, but I dug around and > found that CMA alloc-ranges in the downstream kernel are indeed in > lower address space. > https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/dipper-q-oss/arch/arm64/boot/dts/qcom/sdm845.dtsi#L662 > > /* global autoconfigured region for contiguous allocations */ > linux,cma { > compatible = "shared-dma-pool"; > alloc-ranges = <0 0x00000000 0 0xffffffff>; > reusable; > alignment = <0 0x400000>; > size = <0 0x2000000>; > linux,cma-default; > }; Pretty standard, and similar to what it's being used upstream by default. > > > What happens if you boot with my troublesome patch with this in > > your > > device tree? (insert it at the bottom of sdm845-beryllium.dts) > > > > &soc { > > dma-ranges = <0 0 0 0 0x1 0>; > > }; > > > > Device still doesn't boot up to adb shell. Let's get a bigger hammer, I'm just looking for clues here. Can you apply this and provide the dmesg output. diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c index 6bc74a2d5127..2160676bf488 100644 --- a/kernel/dma/pool.c +++ b/kernel/dma/pool.c @@ -268,6 +268,8 @@ void *dma_alloc_from_pool(struct device *dev, size_t size, schedule_work(&atomic_pool_work); } + dev_info(dev, "%s: size %lx, phys addr %llx, flags 0x%x\n", __func__, size, phys, flags); + return ptr; } Regards, Nicolas