On 6/11/22 1:25 AM, Dongli Zhang wrote: > 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); > + > /* > * By default allocate the bounce buffer memory from low memory, but > * allow to pick a location everywhere for hypervisors with guest > @@ -254,7 +257,8 @@ void __init swiotlb_init_remap(bool addressing_limit, unsigned int flags, > else > tlb = memblock_alloc_low(bytes, PAGE_SIZE); > if (!tlb) { > - pr_warn("%s: failed to allocate tlb structure\n", __func__); > + pr_warn("%s: Failed to allocate %zu bytes tlb structure\n", > + __func__, bytes); Indeed I have a question on this pr_warn(). (I was going to send another patch to retry with nslabs = ALIGN(nslabs >> 1, IO_TLB_SEGSIZE)). Why not retry with nslabs = ALIGN(nslabs >> 1, IO_TLB_SEGSIZE), or panic here? If the QEMU machine of my VM is i440fx, the boot is almost failed even here is pr_warn. Why not sync with the remap failure handling? 1. retry with nslabs = ALIGN(nslabs >> 1, IO_TLB_SEGSIZE)) 2. and finally panic if nslabs is too small. Thank you very much! Dongli Zhang > return; > } > >