linux/drivers/infiniband/hw/cxgb4
Steve Wise 2f25e9a540 RDMA/cxgb4: EEH errors can hang the driver
A few more EEH fixes:

c4iw_wait_for_reply(): detect fatal EEH condition on timeout and
return an error.

The iw_cxgb4 driver was only calling ib_deregister_device() on an EEH
event followed by a ib_register_device() when the device was
reinitialized.  However, the RDMA core doesn't allow multiple
iterations of register/deregister by the provider. See
drivers/infiniband/core/sysfs.c: ib_device_unregister_sysfs() where
the kobject ref is held until the device is deallocated in
ib_deallocate_device().  Calling deregister adds this kobj reference,
and then a subsequent register call will generate a WARN_ON() from the
kobject subsystem because the kobject is being initialized but is
already initialized with the ref held.

So the provider must deregister and dealloc when resetting for an EEH
event, then alloc/register to re-initialize.  To do this, we cannot
use the device ptr as our ULD handle since it will change with each
reallocation.  This commit adds a ULD context struct which is used as
the ULD handle, and then contains the device pointer and other state
needed.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2011-05-09 22:06:23 -07:00
..
Kconfig Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
Makefile IB: Replace EXTRA_CFLAGS with ccflags-y 2010-10-23 13:45:03 -07:00
cm.c RDMA/cxgb4: Reset wait condition atomically 2011-05-09 22:06:22 -07:00
cq.c RDMA/cxgb4: Centralize the wait logic 2010-09-28 10:46:34 -07:00
device.c RDMA/cxgb4: EEH errors can hang the driver 2011-05-09 22:06:23 -07:00
ev.c RDMA/cxgb4: Handle CPL_RDMA_TERMINATE messages 2010-09-28 10:46:32 -07:00
iw_cxgb4.h RDMA/cxgb4: EEH errors can hang the driver 2011-05-09 22:06:23 -07:00
mem.c RDMA/cxgb4: Centralize the wait logic 2010-09-28 10:46:34 -07:00
provider.c RDMA/cxgb4: EEH errors can hang the driver 2011-05-09 22:06:23 -07:00
qp.c RDMA/cxgb4: Fix missing parentheses 2011-05-09 22:06:22 -07:00
resource.c RDMA/cxgb4: Support on-chip SQs 2010-09-28 10:46:35 -07:00
t4.h RDMA/cxgb4: Do CIDX_INC updates every 1/16 CQ depth CQE reaps 2011-03-14 12:09:11 -07:00
t4fw_ri_api.h RDMA/cxgb4: Add module option to tweak delayed ack 2010-07-21 10:53:52 -07:00
user.h RDMA/cxgb4: Support on-chip SQs 2010-09-28 10:46:35 -07:00