Message ID | 20220511125805.1377025-2-hch@lst.de (mailing list archive) |
---|---|
State | Accepted |
Commit | 1521c607cabe7c7edb028e211e88ba1e0f19714e |
Headers | show |
Series | [1/3] swiotlb: don't panic when the swiotlb buffer can't be allocated | expand |
On Wed, 11 May 2022, Christoph Hellwig wrote: > For historical reasons the switlb code paniced when the metadata could > not be allocated, but just printed a warning when the actual main > swiotlb buffer could not be allocated. Restore this somewhat unexpected > behavior as changing it caused a boot failure on the Microchip RISC-V > PolarFire SoC Icicle kit. > > Fixes: 6424e31b1c05 ("swiotlb: remove swiotlb_init_with_tbl and swiotlb_init_late_with_tbl") > Reported-by: Conor Dooley <Conor.Dooley@microchip.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > Tested-by: Conor Dooley <Conor.Dooley@microchip.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > kernel/dma/swiotlb.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c > index e2ef0864eb1e5..3e992a308c8a1 100644 > --- a/kernel/dma/swiotlb.c > +++ b/kernel/dma/swiotlb.c > @@ -254,8 +254,10 @@ void __init swiotlb_init_remap(bool addressing_limit, unsigned int flags, > tlb = memblock_alloc(bytes, PAGE_SIZE); > else > tlb = memblock_alloc_low(bytes, PAGE_SIZE); > - if (!tlb) > - panic("%s: failed to allocate tlb structure\n", __func__); > + if (!tlb) { > + pr_warn("%s: failed to allocate tlb structure\n", __func__); > + return; > + } > > if (remap && remap(tlb, nslabs) < 0) { > memblock_free(tlb, PAGE_ALIGN(bytes)); > -- > 2.30.2 >
On 11/05/2022 13:58, Christoph Hellwig wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > For historical reasons the switlb code paniced when the metadata could > not be allocated, but just printed a warning when the actual main > swiotlb buffer could not be allocated. Restore this somewhat unexpected > behavior as changing it caused a boot failure on the Microchip RISC-V > PolarFire SoC Icicle kit. > > Fixes: 6424e31b1c05 ("swiotlb: remove swiotlb_init_with_tbl and swiotlb_init_late_with_tbl") > Reported-by: Conor Dooley <Conor.Dooley@microchip.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > Tested-by: Conor Dooley <Conor.Dooley@microchip.com> FWIW: Acked-by: Conor Dooley <conor.dooley@microchip.com> > --- > kernel/dma/swiotlb.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c > index e2ef0864eb1e5..3e992a308c8a1 100644 > --- a/kernel/dma/swiotlb.c > +++ b/kernel/dma/swiotlb.c > @@ -254,8 +254,10 @@ void __init swiotlb_init_remap(bool addressing_limit, unsigned int flags, > tlb = memblock_alloc(bytes, PAGE_SIZE); > else > tlb = memblock_alloc_low(bytes, PAGE_SIZE); > - if (!tlb) > - panic("%s: failed to allocate tlb structure\n", __func__); > + if (!tlb) { > + pr_warn("%s: failed to allocate tlb structure\n", __func__); > + return; > + } > > if (remap && remap(tlb, nslabs) < 0) { > memblock_free(tlb, PAGE_ALIGN(bytes)); > -- > 2.30.2 >
diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c index e2ef0864eb1e5..3e992a308c8a1 100644 --- a/kernel/dma/swiotlb.c +++ b/kernel/dma/swiotlb.c @@ -254,8 +254,10 @@ void __init swiotlb_init_remap(bool addressing_limit, unsigned int flags, tlb = memblock_alloc(bytes, PAGE_SIZE); else tlb = memblock_alloc_low(bytes, PAGE_SIZE); - if (!tlb) - panic("%s: failed to allocate tlb structure\n", __func__); + if (!tlb) { + pr_warn("%s: failed to allocate tlb structure\n", __func__); + return; + } if (remap && remap(tlb, nslabs) < 0) { memblock_free(tlb, PAGE_ALIGN(bytes));