Re: dma api errors with swiotlb

From: Thomas HellstrÃm (VMware)
Date: Wed Sep 04 2019 - 09:02:20 EST

On 9/4/19 2:55 PM, Christoph Hellwig wrote:
On Wed, Sep 04, 2019 at 02:54:26PM +0200, Thomas HellstrÃm (VMware) wrote:
On 9/4/19 2:17 PM, Christoph Hellwig wrote:
A call to dma_max_mapping_size() to limit the maximum I/O size solves
that problem. With the latest kernel that should actually be done
automatically by the SCSI midlayer for you.
Hmm, OK. I guess with a sufficient queue depth and many mappings waiting for
DMA completion, the SWIOTLB may fill up anyway...

I'll see if I can come up with something.
You are supposed to return SCSI_MLQUEUE_HOST_BUSY in that case,
which means that the kernel won't send more commands until another
one completed.

It looks like it does that, although when we send it, the SWIOTLB error has already occured and been printed out, and then the sequence starts again.

Seems like the most effective way to stop it is to decrease the queue depth.