Re: [PATCH v1 4/4] swiotlb: panic if nslabs is too small
From: Yu Zhao
Date: Fri Aug 19 2022 - 21:20:41 EST
> Panic on purpose if nslabs is too small, in order to sync with the remap
> retry logic.
>
> In addition, print the number of bytes for tlb alloc failure.
>
> Signed-off-by: Dongli Zhang <dongli.zhang@xxxxxxxxxx>
> ---
> kernel/dma/swiotlb.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
> index fd21f4162f4b..1758b724c7a8 100644
> --- a/kernel/dma/swiotlb.c
> +++ b/kernel/dma/swiotlb.c
> @@ -242,6 +242,9 @@ void __init swiotlb_init_remap(bool addressing_limit, unsigned int flags,
> if (swiotlb_force_disable)
> return;
>
> + if (nslabs < IO_TLB_MIN_SLABS)
> + panic("%s: nslabs = %lu too small\n", __func__, nslabs);
Hi,
This patch breaks MIPS. Please take a look. Thanks.
On v5.19.0:
Linux version 5.19.0 (builder@buildhost) (mips64-openwrt-linux-musl-gcc (OpenWrt GCC 11.2.0 r19590-042d558536) 11.2.0, GNU ld (GNU Binutils) 2.37) #0 SMP Sun Jul 31 15:12:47 2022
Skipping L2 locking due to reduced L2 cache size
CVMSEG size: 0 cache lines (0 bytes)
printk: bootconsole [early0] enabled
CPU0 revision is: 000d9301 (Cavium Octeon II)
Kernel sections are not in the memory maps
Wasting 278528 bytes for tracking 4352 unused pages
Initrd not found or empty - disabling initrd
Using appended Device Tree.
software IO TLB: SWIOTLB bounce buffer size adjusted to 0MB
software IO TLB: mapped [mem 0x0000000004b0c000-0x0000000004b4c000] (0MB)
On v6.0-rc1, with
commit 0bf28fc40d89 ("swiotlb: panic if nslabs is too small")
commit 20347fca71a3 ("swiotlb: split up the global swiotlb lock")
commit 534ea58b3ceb ("Revert "MIPS: octeon: Remove vestiges of CONFIG_CAVIUM_RESERVE32"")
Linux version 6.0.0-rc1 (builder@buildhost) (mips64-openwrt-linux-musl-gcc (OpenWrt GCC 11.2.0 r19590-042d558536) 11.2.0, GNU ld (GNU Binutils) 2.37) #0 SMP Sun Jul 31 15:12:47 2022
Failed to allocate CAVIUM_RESERVE32 memory area
Skipping L2 locking due to reduced L2 cache size
CVMSEG size: 0 cache lines (0 bytes)
printk: bootconsole [early0] enabled
CPU0 revision is: 000d9301 (Cavium Octeon II)
Kernel sections are not in the memory maps
Wasting 278528 bytes for tracking 4352 unused pages
Initrd not found or empty - disabling initrd
Using appended Device Tree.
software IO TLB: SWIOTLB bounce buffer size adjusted to 0MB
software IO TLB: area num 1.
Kernel panic - not syncing: swiotlb_init_remap: nslabs = 128 too small
On v6.0-rc1, with
commit 20347fca71a3 ("swiotlb: split up the global swiotlb lock")
commit 534ea58b3ceb ("Revert "MIPS: octeon: Remove vestiges of CONFIG_CAVIUM_RESERVE32"")
Linux version 6.0.0-rc1+ (builder@buildhost) (mips64-openwrt-linux-musl-gcc (OpenWrt GCC 11.2.0 r19590-042d558536) 11.2.0, GNU ld (GNU Binutils) 2.37) #0 SMP Sun Jul 31 15:12:47 2022
Failed to allocate CAVIUM_RESERVE32 memory area
Skipping L2 locking due to reduced L2 cache size
CVMSEG size: 0 cache lines (0 bytes)
printk: bootconsole [early0] enabled
CPU0 revision is: 000d9301 (Cavium Octeon II)
Kernel sections are not in the memory maps
Wasting 278528 bytes for tracking 4352 unused pages
Initrd not found or empty - disabling initrd
Using appended Device Tree.
software IO TLB: SWIOTLB bounce buffer size adjusted to 0MB
software IO TLB: area num 1.
software IO TLB: mapped [mem 0x0000000004c0c000-0x0000000004c4c000] (0MB)