Vlad, Please pull from
ssh://[email protected]/~swise/scm/ofed_kernel ofed_1_5 This commit adds the cxgb3 backport for 2.6.33. Thanks, Steve. ---- RDMA/cxgb3: Add 2.6.33 backport. Signed-off-by: Steve Wise <[email protected]> --- .../backport/2.6.33/iw_cxgb3_to_2.6.33.patch | 238 ++++++++++++++++++++ 1 files changed, 238 insertions(+), 0 deletions(-) create mode 100644 kernel_patches/backport/2.6.33/iw_cxgb3_to_2.6.33.patch diff --git a/kernel_patches/backport/2.6.33/iw_cxgb3_to_2.6.33.patch b/kernel_patches/backport/2.6.33/iw_cxgb3_to_2.6.33.patch new file mode 100644 index 0000000..5114841 --- /dev/null +++ b/kernel_patches/backport/2.6.33/iw_cxgb3_to_2.6.33.patch @@ -0,0 +1,238 @@ +diff -up a/drivers/infiniband/hw/cxgb3/cxio_hal.h b/drivers/infiniband/hw/cxgb3/cxio_hal.h +--- a/drivers/infiniband/hw/cxgb3/cxio_hal.h 2010-08-12 13:40:01.000000000 -0500 ++++ b/drivers/infiniband/hw/cxgb3/cxio_hal.h 2010-08-12 11:18:49.000000000 -0500 +@@ -34,6 +34,7 @@ + + #include <linux/list.h> + #include <linux/mutex.h> ++#include <linux/kfifo.h> + + #include "t3_cpl.h" + #include "t3cdev.h" +@@ -75,13 +76,13 @@ struct cxio_hal_ctrl_qp { + }; + + struct cxio_hal_resource { +- struct kfifo *tpt_fifo; ++ struct kfifo tpt_fifo; + spinlock_t tpt_fifo_lock; +- struct kfifo *qpid_fifo; ++ struct kfifo qpid_fifo; + spinlock_t qpid_fifo_lock; +- struct kfifo *cqid_fifo; ++ struct kfifo cqid_fifo; + spinlock_t cqid_fifo_lock; +- struct kfifo *pdid_fifo; ++ struct kfifo pdid_fifo; + spinlock_t pdid_fifo_lock; + }; + +diff -up a/drivers/infiniband/hw/cxgb3/cxio_resource.c b/drivers/infiniband/hw/cxgb3/cxio_resource.c +--- a/drivers/infiniband/hw/cxgb3/cxio_resource.c 2010-08-12 13:40:01.000000000 -0500 ++++ b/drivers/infiniband/hw/cxgb3/cxio_resource.c 2010-08-12 13:28:30.000000000 -0500 +@@ -41,12 +41,12 @@ + + #include "genalloc.c" + +-static struct kfifo *rhdl_fifo; ++static struct kfifo rhdl_fifo; + static spinlock_t rhdl_fifo_lock; + + #define RANDOM_SIZE 16 + +-static int __cxio_init_resource_fifo(struct kfifo **fifo, ++static int __cxio_init_resource_fifo(struct kfifo *fifo, + spinlock_t *fifo_lock, + u32 nr, u32 skip_low, + u32 skip_high, +@@ -57,12 +57,11 @@ static int __cxio_init_resource_fifo(str + u32 rarray[16]; + spin_lock_init(fifo_lock); + +- *fifo = kfifo_alloc(nr * sizeof(u32), GFP_KERNEL, fifo_lock); +- if (IS_ERR(*fifo)) ++ if (kfifo_alloc(fifo, nr * sizeof(u32), GFP_KERNEL)) + return -ENOMEM; + + for (i = 0; i < skip_low + skip_high; i++) +- __kfifo_put(*fifo, (unsigned char *) &entry, sizeof(u32)); ++ kfifo_in(fifo, (unsigned char *) &entry, sizeof(u32)); + if (random) { + j = 0; + random_bytes = random32(); +@@ -74,33 +73,34 @@ static int __cxio_init_resource_fifo(str + random_bytes = random32(); + } + idx = (random_bytes >> (j * 2)) & 0xF; +- __kfifo_put(*fifo, +- (unsigned char *) &rarray[idx], +- sizeof(u32)); ++ kfifo_in(fifo, (unsigned char *) &rarray[idx], ++ sizeof(u32)); + rarray[idx] = i; + j++; + } + for (i = 0; i < RANDOM_SIZE; i++) +- __kfifo_put(*fifo, ++ kfifo_in(fifo, + (unsigned char *) &rarray[i], + sizeof(u32)); + } else + for (i = skip_low; i < nr - skip_high; i++) +- __kfifo_put(*fifo, (unsigned char *) &i, sizeof(u32)); ++ kfifo_in(fifo, (unsigned char *) &i, sizeof(u32)); + + for (i = 0; i < skip_low + skip_high; i++) +- kfifo_get(*fifo, (unsigned char *) &entry, sizeof(u32)); ++ if (kfifo_out_locked(fifo, (unsigned char *) &entry, ++ sizeof(u32), fifo_lock)) ++ break; + return 0; + } + +-static int cxio_init_resource_fifo(struct kfifo **fifo, spinlock_t * fifo_lock, ++static int cxio_init_resource_fifo(struct kfifo *fifo, spinlock_t * fifo_lock, + u32 nr, u32 skip_low, u32 skip_high) + { + return (__cxio_init_resource_fifo(fifo, fifo_lock, nr, skip_low, + skip_high, 0)); + } + +-static int cxio_init_resource_fifo_random(struct kfifo **fifo, ++static int cxio_init_resource_fifo_random(struct kfifo *fifo, + spinlock_t * fifo_lock, + u32 nr, u32 skip_low, u32 skip_high) + { +@@ -115,16 +115,14 @@ static int cxio_init_qpid_fifo(struct cx + + spin_lock_init(&rdev_p->rscp->qpid_fifo_lock); + +- rdev_p->rscp->qpid_fifo = kfifo_alloc(T3_MAX_NUM_QP * sizeof(u32), +- GFP_KERNEL, +- &rdev_p->rscp->qpid_fifo_lock); +- if (IS_ERR(rdev_p->rscp->qpid_fifo)) ++ if (kfifo_alloc(&rdev_p->rscp->qpid_fifo, T3_MAX_NUM_QP * sizeof(u32), ++ GFP_KERNEL)) + return -ENOMEM; + + for (i = 16; i < T3_MAX_NUM_QP; i++) + if (!(i & rdev_p->qpmask)) +- __kfifo_put(rdev_p->rscp->qpid_fifo, +- (unsigned char *) &i, sizeof(u32)); ++ kfifo_in(&rdev_p->rscp->qpid_fifo, (unsigned char *)&i, ++ sizeof(u32)); + return 0; + } + +@@ -136,7 +134,7 @@ int cxio_hal_init_rhdl_resource(u32 nr_r + + void cxio_hal_destroy_rhdl_resource(void) + { +- kfifo_free(rhdl_fifo); ++ kfifo_free(&rhdl_fifo); + } + + /* nr_* must be power of 2 */ +@@ -169,11 +167,11 @@ int cxio_hal_init_resource(struct cxio_r + goto pdid_err; + return 0; + pdid_err: +- kfifo_free(rscp->cqid_fifo); ++ kfifo_free(&rscp->cqid_fifo); + cqid_err: +- kfifo_free(rscp->qpid_fifo); ++ kfifo_free(&rscp->qpid_fifo); + qpid_err: +- kfifo_free(rscp->tpt_fifo); ++ kfifo_free(&rscp->tpt_fifo); + tpt_err: + return -ENOMEM; + } +@@ -181,33 +179,35 @@ tpt_err: + /* + * returns 0 if no resource available + */ +-static u32 cxio_hal_get_resource(struct kfifo *fifo) ++static u32 cxio_hal_get_resource(struct kfifo *fifo, spinlock_t *lock) + { + u32 entry; +- if (kfifo_get(fifo, (unsigned char *) &entry, sizeof(u32))) ++ if (kfifo_out_locked(fifo, (unsigned char *) &entry, sizeof(u32), lock)) + return entry; + else + return 0; /* fifo emptry */ + } + +-static void cxio_hal_put_resource(struct kfifo *fifo, u32 entry) ++static void cxio_hal_put_resource(struct kfifo *fifo, u32 entry, ++ spinlock_t *lock) + { +- BUG_ON(kfifo_put(fifo, (unsigned char *) &entry, sizeof(u32)) == 0); ++ kfifo_in_locked(fifo, (unsigned char *) &entry, sizeof(u32), lock); + } + + u32 cxio_hal_get_stag(struct cxio_hal_resource *rscp) + { +- return cxio_hal_get_resource(rscp->tpt_fifo); ++ return cxio_hal_get_resource(&rscp->tpt_fifo, &rscp->tpt_fifo_lock); + } + + void cxio_hal_put_stag(struct cxio_hal_resource *rscp, u32 stag) + { +- cxio_hal_put_resource(rscp->tpt_fifo, stag); ++ cxio_hal_put_resource(&rscp->tpt_fifo, stag, &rscp->tpt_fifo_lock); + } + + u32 cxio_hal_get_qpid(struct cxio_hal_resource *rscp) + { +- u32 qpid = cxio_hal_get_resource(rscp->qpid_fifo); ++ u32 qpid = cxio_hal_get_resource(&rscp->qpid_fifo, ++ &rscp->qpid_fifo_lock); + PDBG("%s qpid 0x%x\n", __func__, qpid); + return qpid; + } +@@ -215,35 +215,35 @@ u32 cxio_hal_get_qpid(struct cxio_hal_re + void cxio_hal_put_qpid(struct cxio_hal_resource *rscp, u32 qpid) + { + PDBG("%s qpid 0x%x\n", __func__, qpid); +- cxio_hal_put_resource(rscp->qpid_fifo, qpid); ++ cxio_hal_put_resource(&rscp->qpid_fifo, qpid, &rscp->qpid_fifo_lock); + } + + u32 cxio_hal_get_cqid(struct cxio_hal_resource *rscp) + { +- return cxio_hal_get_resource(rscp->cqid_fifo); ++ return cxio_hal_get_resource(&rscp->cqid_fifo, &rscp->cqid_fifo_lock); + } + + void cxio_hal_put_cqid(struct cxio_hal_resource *rscp, u32 cqid) + { +- cxio_hal_put_resource(rscp->cqid_fifo, cqid); ++ cxio_hal_put_resource(&rscp->cqid_fifo, cqid, &rscp->cqid_fifo_lock); + } + + u32 cxio_hal_get_pdid(struct cxio_hal_resource *rscp) + { +- return cxio_hal_get_resource(rscp->pdid_fifo); ++ return cxio_hal_get_resource(&rscp->pdid_fifo, &rscp->pdid_fifo_lock); + } + + void cxio_hal_put_pdid(struct cxio_hal_resource *rscp, u32 pdid) + { +- cxio_hal_put_resource(rscp->pdid_fifo, pdid); ++ cxio_hal_put_resource(&rscp->pdid_fifo, pdid, &rscp->pdid_fifo_lock); + } + + void cxio_hal_destroy_resource(struct cxio_hal_resource *rscp) + { +- kfifo_free(rscp->tpt_fifo); +- kfifo_free(rscp->cqid_fifo); +- kfifo_free(rscp->qpid_fifo); +- kfifo_free(rscp->pdid_fifo); ++ kfifo_free(&rscp->tpt_fifo); ++ kfifo_free(&rscp->cqid_fifo); ++ kfifo_free(&rscp->qpid_fifo); ++ kfifo_free(&rscp->pdid_fifo); + kfree(rscp); + } + _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
