From: Hans Westgaard Ry Date: Fri, 30 Sep 2016 08:36:49 +0000 (+0200) Subject: sif: Retest last allocated entry with roundrobin allocation X-Git-Tag: v4.1.12-92~67^2~21 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4b934fc5f0514516902677e1bc932a4f23694633;p=users%2Fjedix%2Flinux-maple.git sif: Retest last allocated entry with roundrobin allocation Current codebase tests next element if it is unused(freed) when allocating round-robin. In certain cases where an element is allocated and then deallocated immediately it is convenient to reuse the element. Orabug: 24761759 Signed-off-by: Hans Westgaard Ry Reviewed-by: Knut Omang Signed-off-by: Knut Omang --- diff --git a/drivers/infiniband/hw/sif/sif_base.c b/drivers/infiniband/hw/sif/sif_base.c index ac1944245dac9..b912d82c4fe89 100644 --- a/drivers/infiniband/hw/sif/sif_base.c +++ b/drivers/infiniband/hw/sif/sif_base.c @@ -472,7 +472,7 @@ static int init_blocks(struct sif_dev *sdev, enum sif_tab_type type) for (i = 0; i < tp->block_cnt; i++) { struct sif_table_block *b = sif_get_block(tp, i); - b->last_used = tp->entry_per_block - 1; + b->last_used = tp->entry_per_block; } } return 0; diff --git a/drivers/infiniband/hw/sif/sif_pd.c b/drivers/infiniband/hw/sif/sif_pd.c index 7fa0db1078f07..53d37016fddfb 100644 --- a/drivers/infiniband/hw/sif/sif_pd.c +++ b/drivers/infiniband/hw/sif/sif_pd.c @@ -400,7 +400,7 @@ static int alloc_from_block(struct sif_table_block *b, enum sif_tab_type type) struct sif_table *table = b->table; if (table->alloc_rr) - next = (b->last_used + 1) & (table->entry_per_block - 1); + next = b->last_used & (table->entry_per_block - 1); loc_idx = find_next_zero_bit(b->bitmap, table->entry_per_block, next); if (table->alloc_rr && loc_idx >= table->entry_per_block) loc_idx = find_next_zero_bit(b->bitmap, table->entry_per_block, 0); diff --git a/drivers/infiniband/hw/sif/version.c b/drivers/infiniband/hw/sif/version.c index 4b94c7fdccd51..dfc3a07fc9afd 100644 --- a/drivers/infiniband/hw/sif/version.c +++ b/drivers/infiniband/hw/sif/version.c @@ -4,12 +4,12 @@ struct sif_version sif_version = { .git_repo = "sifdrv [origin/master]", -.last_commit = "titan_1.0.4.0 Lift sif_verbs up to be independent of sif internal headers", +.last_commit = "titan_1.0.5.0 Retest last allocated entry with roundrobin allocation", .git_status = "", -.build_git_time = "Fri, 09 Sep 2016 09:58:31 +0000", +.build_git_time = "Mon, 03 Oct 2016 10:12:59 +0000", .build_user = "komang", .git_psifapi_repo = "psifapi [origin/master]", -.last_psifapi_commit = "titan_1.0.4.0 Fix recently introduced checkpatch issues", +.last_psifapi_commit = "titan_1.0.5.0 preparations for venus", .git_psifapi_status = "", }; diff --git a/drivers/infiniband/hw/sif/versioninfo.h b/drivers/infiniband/hw/sif/versioninfo.h index 7cffd353a7938..36cdafaff1f48 100644 --- a/drivers/infiniband/hw/sif/versioninfo.h +++ b/drivers/infiniband/hw/sif/versioninfo.h @@ -1,6 +1,6 @@ /* Misc driver release info */ -#define BUILD_DATE "2016-09-09" -#define BUILD_TIME "09:58:31" -#define BUILD_EPOCH 1473415111 -#define TITAN_RELEASE "1.0.4.0" +#define BUILD_DATE "2016-10-03" +#define BUILD_TIME "10:12:59" +#define BUILD_EPOCH 1475489579 +#define TITAN_RELEASE "1.0.5.0"