• Robin Murphy's avatar
    swiotlb: don't panic! · 639205ed
    Robin Murphy authored
    The panics in swiotlb are relics of a bygone era, some of them
    inadvertently inherited from a memblock refactor, and all of them
    unnecessary since they are in places that may also fail gracefully
    anyway.
    
    Convert the panics in swiotlb_init_remap() into non-fatal warnings
    more consistent with the other bail-out paths there and in
    swiotlb_init_late() (but don't bother trying to roll anything back,
    since if anything does actually fail that early, the aim is merely to
    keep going as far as possible to get more diagnostic information out
    of the inevitably-dying kernel). It's not for SWIOTLB to decide that the
    system is terminally compromised just because there *might* turn out to
    be one or more 32-bit devices that might want to make streaming DMA
    mappings, especially since we already handle the no-buffer case later
    if it turns out someone did want it.
    
    Similarly though, downgrade that panic in swiotlb_tbl_map_single(),
    since even if we do get to that point it's an overly extreme reaction.
    It makes little difference to the DMA API caller whether a mapping fails
    because the buffer is full or because there is no buffer, and once again
    it's not for SWIOTLB to presume that any particular DMA mapping is so
    fundamental to the operation of the system that it must be terminal if
    it could never succeed. Even if the caller handles failure by futilely
    retrying forever, a single stuck thread is considerably less impactful
    to the user than a needless panic.
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    639205ed
swiotlb.c 28.6 KB