On 12/2/18 11:13 PM, Finn Thain wrote:
On Sun, 2 Dec 2018, Hannes Reinecke wrote:

On 12/2/18 10:21 PM, Finn Thain wrote:
On Sun, 2 Dec 2018, Hannes Reinecke wrote:

Well, that lone 'kmap' is due to a quirk/errata in the datasheet;
essentially
we have to PIO a lone byte out of the FIFO to clear it up.
And this byte is technically still part of the SCSI data, so we need to
stuff it onto the end of the actual data sg list. Which is what the kmap()
thingie does.
So it really shouldn't be affected by the clustering algorithm.


Sorry, I don't follow.

If it's dead code, can it be removed

Oh, it's not dead code. It's required as per datasheet.

If it's not, does it require DISABLE_CLUSTERING?

No, not really. It just affects the very last byte of the sglist,
so I can't really see how it should be affected by clustering.


AIUI, the scsi_kmap_atomic_sg() call which you added to esp_scsi.c assumes
that the sg list elements are page sized and page aligned.

DISABLE_CLUSTERING provides that guarantee, but am53c974.c doesn't use it.

Is this not a bug? What am I missing?

As I said: I need to do PIO for the last two bytes of the data buffer.
For everything else DMA works nicely, it's just the last two bytes which might be left over in the FIFO buffer under certain circumstances. If you have an alternative suggestion without scsi_kmap_atomic_sg() I'd be happy to convert it.

Cheers,

Hannes
--
Dr. Hannes Reinecke                            zSeries & Storage
h...@suse.com                                  +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)

Reply via email to