diff options
author | Julian Wiedmann <jwi@linux.ibm.com> | 2020-02-10 10:48:11 +0100 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2020-02-19 17:26:32 +0100 |
commit | e9091ffd6a0aaced111b5d6ead5eaab5cd7101bc (patch) | |
tree | d71362ea8a443123ec20874bea2cce7dc1c8d88c /drivers/s390/cio | |
parent | 140588bfed2727e9a4814211617a79401d74922f (diff) | |
download | lwn-e9091ffd6a0aaced111b5d6ead5eaab5cd7101bc.tar.gz lwn-e9091ffd6a0aaced111b5d6ead5eaab5cd7101bc.zip |
s390/qdio: fill SL with absolute addresses
As the comment says, sl->sbal holds an absolute address. qeth currently
solves this through wild casting, while zfcp doesn't care.
Handle this properly in the code that actually builds the SL.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.ibm.com> [for qdio]
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'drivers/s390/cio')
-rw-r--r-- | drivers/s390/cio/qdio_setup.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/cio/qdio_setup.c b/drivers/s390/cio/qdio_setup.c index 3ab8e80d7bbc..e115623b86b2 100644 --- a/drivers/s390/cio/qdio_setup.c +++ b/drivers/s390/cio/qdio_setup.c @@ -8,6 +8,7 @@ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/export.h> +#include <linux/io.h> #include <asm/qdio.h> #include "cio.h" @@ -205,7 +206,7 @@ static void setup_storage_lists(struct qdio_q *q, struct qdio_irq *irq_ptr, /* fill in sl */ for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; j++) - q->sl->element[j].sbal = (unsigned long)q->sbal[j]; + q->sl->element[j].sbal = virt_to_phys(q->sbal[j]); } static void setup_queues(struct qdio_irq *irq_ptr, |