On 6/21/20 1:35 AM, Geert Uytterhoeven wrote: > Hi Günter, > > On Sat, Jun 20, 2020 at 10:09 PM Guenter Roeck <li...@roeck-us.net> wrote: >> On Mon, Jun 08, 2020 at 03:22:17PM +0200, Geert Uytterhoeven wrote: >>> On systems with at least 32 MiB, but less than 32 GiB of RAM, the DMA >>> memory pools are much larger than intended (e.g. 2 MiB instead of 128 >>> KiB on a 256 MiB system). >>> >>> Fix this by correcting the calculation of the number of GiBs of RAM in >>> the system. Invert the order of the min/max operations, to keep on >>> calculating in pages until the last step, which aids readability. >>> >>> Fixes: 1d659236fb43c4d2 ("dma-pool: scale the default DMA coherent pool >>> size with memory capacity") >>> Signed-off-by: Geert Uytterhoeven <ge...@linux-m68k.org> >>> Acked-by: David Rientjes <rient...@google.com> >> >> This patch results in a boot failure in some of my powerpc boot tests, >> specifically those testing boots from mptsas1068 devices. Error message: >> >> mptsas 0000:00:02.0: enabling device (0000 -> 0002) >> mptbase: ioc0: Initiating bringup >> ioc0: LSISAS1068 A0: Capabilities={Initiator} >> mptbase: ioc0: ERROR - Unable to allocate Reply, Request, Chain Buffers! >> mptbase: ioc0: ERROR - didn't initialize properly! (-3) >> mptsas: probe of 0000:00:02.0 failed with error -3 >> >> Configuration is bamboo:44x/bamboo_defconfig plus various added drivers. >> Qemu command line is >> >> qemu-system-ppc -kernel vmlinux -M bamboo \ >> -m 256 -no-reboot -snapshot -device mptsas1068,id=scsi \ >> -device scsi-hd,bus=scsi.0,drive=d0,wwn=0x5000c50015ea71ac -drive \ >> file=rootfs.ext2,format=raw,if=none,id=d0 \ >> --append "panic=-1 slub_debug=FZPUA root=/dev/sda mem=256M >> console=ttyS0" \ >> -monitor none -nographic >> >> canyonlands_defconfig with sam460ex machine and otherwise similar command >> line >> fails as well. >> >> Reverting this patch fixes the problem. > > This looks like the minimum value of 128 KiB is not sufficient, and the > bug is in the intention of 1d659236fb43c4d2 ("dma-pool: scale the > default DMA coherent pool size with memory capacity")? > Before, there was a single pool of (fixed) 256 KiB size, now there are > up to three coherent pools (DMA, DMA32, and kernel), albeit of smaller > size (128 KiB each). > > Can you print the requested size in drivers/message/fusion/mptbase.c: > PrimeIocFifos()?
172928 bytes > Does replacing all SZ_128K by SZ_256K in my patch help? Yes, it does. Guenter