Hi Nicolas, Sorry I got stuck on other things yesterday.
On Tue, 21 Jul 2020 at 21:57, Nicolas Saenz Julienne <nsaenzjulie...@suse.de> wrote: > > 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; > } I never made it to dma_alloc_from_pool() call from dma_direct_alloc_pages(), dma_should_alloc_from_pool() returns False from gfpflags_allow_blocking() block. Regards, Amit Pundir > > > Regards, > Nicolas > _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu