s390/qdio: allow for non-contiguous SBAL array in init_data
authorJulian Wiedmann <jwi@linux.ibm.com>
Fri, 20 Mar 2020 13:00:00 +0000 (14:00 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 6 Apr 2020 11:13:50 +0000 (13:13 +0200)
commitd8564e19da8c8b31c7fc160942f95b113f554211
treeaed39c231d9207fee043094363b911e3cbf663f8
parentad96401cdb147efd486761db8159d5e3489c9ca8
s390/qdio: allow for non-contiguous SBAL array in init_data

Upper-layer drivers allocate their SBALs by calling qdio_alloc_buffers()
for each individual queue. But when later passing the SBAL addresses to
qdio_establish(), they need to be in a single array of pointers.
So if the driver uses multiple Input or Output queues, it needs to
allocate a temporary array just to present all its SBAL pointers in this
layout.

This patch slightly changes the format of the QDIO initialization data,
so that drivers can pass a per-queue array where each element points to
a queue's SBAL array.
zfcp doesn't use multiple queues, so the impact there is trivial.
For qeth this brings a nice reduction in complexity, and removes
a page-sized allocation.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/qdio.h
drivers/s390/cio/qdio_setup.c
drivers/s390/net/qeth_core.h
drivers/s390/net/qeth_core_main.c
drivers/s390/scsi/zfcp_qdio.c