Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

IB/ipath: Fix spi_pioindex value

ipath_piobufbase was a single value offset, but is multiple values on
newer chips, so use only the 32 bits for the 2K buffers (4K buffers
are currently used only by the driver).

Signed-off-by: Dave Olson <dave.olson@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>

authored by

Dave Olson and committed by
Roland Dreier
1bf7724e 6114d4cd

+7 -2
+7 -2
drivers/infiniband/hw/ipath/ipath_file_ops.c
··· 223 223 (unsigned long long) kinfo->spi_subport_rcvhdr_base); 224 224 } 225 225 226 - kinfo->spi_pioindex = (kinfo->spi_piobufbase - dd->ipath_piobufbase) / 227 - dd->ipath_palign; 226 + /* 227 + * All user buffers are 2KB buffers. If we ever support 228 + * giving 4KB buffers to user processes, this will need some 229 + * work. 230 + */ 231 + kinfo->spi_pioindex = (kinfo->spi_piobufbase - 232 + (dd->ipath_piobufbase & 0xffffffff)) / dd->ipath_palign; 228 233 kinfo->spi_pioalign = dd->ipath_palign; 229 234 230 235 kinfo->spi_qpair = IPATH_KD_QP;