aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorArthur Jones <arthur.jones@qlogic.com>2007-09-18 17:44:45 -0400
committerRoland Dreier <rolandd@cisco.com>2007-10-09 23:57:54 -0400
commit20bed343142bfaf08765e35aaefa56dc5cc287db (patch)
treeb27c69854e783b41c87a4ed3bbc8c2eecd95b900 /drivers/infiniband
parent4bec0b9155d6757847b754e21b55ecafcecef839 (diff)
IB/ipath: Indicate a couple of chip bugs to userspace
A couple of chip bugs in the iba6110 and in the iba6120 are not in more recent chips. This first bug swaps two of the pioavail register locations. In the second bug, the chip can sometimes forget to dma the pio avail register to memory. We indicate the presence of these bugs with runtime flags and we indicate the presence of the flags by bumping the SWMINOR. Signed-off-by: Arthur Jones <arthur.jones@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_common.h4
-rw-r--r--drivers/infiniband/hw/ipath/ipath_iba6110.c3
-rw-r--r--drivers/infiniband/hw/ipath/ipath_iba6120.c3
3 files changed, 7 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_common.h b/drivers/infiniband/hw/ipath/ipath_common.h
index 6ad822c35930..851df8a75e79 100644
--- a/drivers/infiniband/hw/ipath/ipath_common.h
+++ b/drivers/infiniband/hw/ipath/ipath_common.h
@@ -189,6 +189,8 @@ typedef enum _ipath_ureg {
189#define IPATH_RUNTIME_RCVHDR_COPY 0x8 189#define IPATH_RUNTIME_RCVHDR_COPY 0x8
190#define IPATH_RUNTIME_MASTER 0x10 190#define IPATH_RUNTIME_MASTER 0x10
191/* 0x20 and 0x40 are no longer used, but are reserved for ABI compatibility */ 191/* 0x20 and 0x40 are no longer used, but are reserved for ABI compatibility */
192#define IPATH_RUNTIME_FORCE_PIOAVAIL 0x400
193#define IPATH_RUNTIME_PIO_REGSWAPPED 0x800
192 194
193/* 195/*
194 * This structure is returned by ipath_userinit() immediately after 196 * This structure is returned by ipath_userinit() immediately after
@@ -350,7 +352,7 @@ struct ipath_base_info {
350 * may not be implemented; the user code must deal with this if it 352 * may not be implemented; the user code must deal with this if it
351 * cares, or it must abort after initialization reports the difference. 353 * cares, or it must abort after initialization reports the difference.
352 */ 354 */
353#define IPATH_USER_SWMINOR 5 355#define IPATH_USER_SWMINOR 6
354 356
355#define IPATH_USER_SWVERSION ((IPATH_USER_SWMAJOR<<16) | IPATH_USER_SWMINOR) 357#define IPATH_USER_SWVERSION ((IPATH_USER_SWMAJOR<<16) | IPATH_USER_SWMINOR)
356 358
diff --git a/drivers/infiniband/hw/ipath/ipath_iba6110.c b/drivers/infiniband/hw/ipath/ipath_iba6110.c
index d4940beb58c7..df42a1e3b6b7 100644
--- a/drivers/infiniband/hw/ipath/ipath_iba6110.c
+++ b/drivers/infiniband/hw/ipath/ipath_iba6110.c
@@ -1599,7 +1599,8 @@ static int ipath_ht_get_base_info(struct ipath_portdata *pd, void *kbase)
1599{ 1599{
1600 struct ipath_base_info *kinfo = kbase; 1600 struct ipath_base_info *kinfo = kbase;
1601 1601
1602 kinfo->spi_runtime_flags |= IPATH_RUNTIME_HT; 1602 kinfo->spi_runtime_flags |= IPATH_RUNTIME_HT |
1603 IPATH_RUNTIME_PIO_REGSWAPPED;
1603 1604
1604 if (pd->port_dd->ipath_minrev < 4) 1605 if (pd->port_dd->ipath_minrev < 4)
1605 kinfo->spi_runtime_flags |= IPATH_RUNTIME_RCVHDR_COPY; 1606 kinfo->spi_runtime_flags |= IPATH_RUNTIME_RCVHDR_COPY;
diff --git a/drivers/infiniband/hw/ipath/ipath_iba6120.c b/drivers/infiniband/hw/ipath/ipath_iba6120.c
index d43f0b3a43fe..0103d6f4847b 100644
--- a/drivers/infiniband/hw/ipath/ipath_iba6120.c
+++ b/drivers/infiniband/hw/ipath/ipath_iba6120.c
@@ -1348,7 +1348,8 @@ static int ipath_pe_get_base_info(struct ipath_portdata *pd, void *kbase)
1348 dd = pd->port_dd; 1348 dd = pd->port_dd;
1349 1349
1350done: 1350done:
1351 kinfo->spi_runtime_flags |= IPATH_RUNTIME_PCIE; 1351 kinfo->spi_runtime_flags |= IPATH_RUNTIME_PCIE |
1352 IPATH_RUNTIME_FORCE_PIOAVAIL | IPATH_RUNTIME_PIO_REGSWAPPED;
1352 return 0; 1353 return 0;
1353} 1354}
1354 1355