diff mbox

IPoIB: use kvzalloc to allocate an array of bucket pointers

Message ID 1531144263-24717-1-git-send-email-jan.dakinevich@virtuozzo.com (mailing list archive)
State Accepted
Delegated to: Jason Gunthorpe
Headers show

Commit Message

Jan Dakinevich July 9, 2018, 1:51 p.m. UTC
This table by default takes 32KiB which is 3rd memory order. Meanwhile,
this memory is not aimed for DMA operation and could be safely allocated
by vmalloc.

Signed-off-by: Jan Dakinevich <jan.dakinevich@virtuozzo.com>
---
 drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Jan Dakinevich July 16, 2018, 4:19 p.m. UTC | #1
On Mon,  9 Jul 2018 16:51:03 +0300
Jan Dakinevich <jan.dakinevich@virtuozzo.com> wrote:

> This table by default takes 32KiB which is 3rd memory order.
> Meanwhile, this memory is not aimed for DMA operation and could be
> safely allocated by vmalloc.
> 
> Signed-off-by: Jan Dakinevich <jan.dakinevich@virtuozzo.com>
> ---
>  drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c
> b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 26cde95..cb752df
> 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> @@ -1526,7 +1526,7 @@ static int ipoib_neigh_hash_init(struct
> ipoib_dev_priv *priv) return -ENOMEM;
>  	set_bit(IPOIB_STOP_NEIGH_GC, &priv->flags);
>  	size = roundup_pow_of_two(arp_tbl.gc_thresh3);
> -	buckets = kcalloc(size, sizeof(*buckets), GFP_KERNEL);
> +	buckets = kvcalloc(size, sizeof(*buckets), GFP_KERNEL);
>  	if (!buckets) {
>  		kfree(htbl);
>  		return -ENOMEM;
> @@ -1554,7 +1554,7 @@ static void neigh_hash_free_rcu(struct rcu_head
> *head) struct ipoib_neigh __rcu **buckets = htbl->buckets;
>  	struct ipoib_neigh_table *ntbl = htbl->ntbl;
>  
> -	kfree(buckets);
> +	kvfree(buckets);
>  	kfree(htbl);
>  	complete(&ntbl->deleted);
>  }

ping
Haakon Bugge July 16, 2018, 6:18 p.m. UTC | #2
> On 16 Jul 2018, at 18:19, Jan Dakinevich <jan.dakinevich@virtuozzo.com> wrote:
> 
> On Mon,  9 Jul 2018 16:51:03 +0300
> Jan Dakinevich <jan.dakinevich@virtuozzo.com> wrote:
> 
>> This table by default takes 32KiB which is 3rd memory order.

Only if PAGE_SIZE is 4KiB...

>> Meanwhile, this memory is not aimed for DMA operation and could be
>> safely allocated by vmalloc.
>> 
>> Signed-off-by: Jan Dakinevich <jan.dakinevich@virtuozzo.com>

lgtm,

Reviewed-by: Håkon Bugge <haakon.bugge@oracle.com>


Thxs, Håkon

>> ---
>> drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c
>> b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 26cde95..cb752df
>> 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
>> +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
>> @@ -1526,7 +1526,7 @@ static int ipoib_neigh_hash_init(struct
>> ipoib_dev_priv *priv) return -ENOMEM;
>> 	set_bit(IPOIB_STOP_NEIGH_GC, &priv->flags);
>> 	size = roundup_pow_of_two(arp_tbl.gc_thresh3);
>> -	buckets = kcalloc(size, sizeof(*buckets), GFP_KERNEL);
>> +	buckets = kvcalloc(size, sizeof(*buckets), GFP_KERNEL);
>> 	if (!buckets) {
>> 		kfree(htbl);
>> 		return -ENOMEM;
>> @@ -1554,7 +1554,7 @@ static void neigh_hash_free_rcu(struct rcu_head
>> *head) struct ipoib_neigh __rcu **buckets = htbl->buckets;
>> 	struct ipoib_neigh_table *ntbl = htbl->ntbl;
>> 
>> -	kfree(buckets);
>> +	kvfree(buckets);
>> 	kfree(htbl);
>> 	complete(&ntbl->deleted);
>> }
> 
> ping
> 
> -- 
> Best regards
> Jan Dakinevich
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jason Gunthorpe July 23, 2018, 9:38 p.m. UTC | #3
On Mon, Jul 09, 2018 at 04:51:03PM +0300, Jan Dakinevich wrote:
> This table by default takes 32KiB which is 3rd memory order. Meanwhile,
> this memory is not aimed for DMA operation and could be safely allocated
> by vmalloc.
> 
> Signed-off-by: Jan Dakinevich <jan.dakinevich@virtuozzo.com>
> Reviewed-by: Håkon Bugge <haakon.bugge@oracle.com>
> ---
>  drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Applied to for-next, thanks

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 26cde95..cb752df 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -1526,7 +1526,7 @@  static int ipoib_neigh_hash_init(struct ipoib_dev_priv *priv)
 		return -ENOMEM;
 	set_bit(IPOIB_STOP_NEIGH_GC, &priv->flags);
 	size = roundup_pow_of_two(arp_tbl.gc_thresh3);
-	buckets = kcalloc(size, sizeof(*buckets), GFP_KERNEL);
+	buckets = kvcalloc(size, sizeof(*buckets), GFP_KERNEL);
 	if (!buckets) {
 		kfree(htbl);
 		return -ENOMEM;
@@ -1554,7 +1554,7 @@  static void neigh_hash_free_rcu(struct rcu_head *head)
 	struct ipoib_neigh __rcu **buckets = htbl->buckets;
 	struct ipoib_neigh_table *ntbl = htbl->ntbl;
 
-	kfree(buckets);
+	kvfree(buckets);
 	kfree(htbl);
 	complete(&ntbl->deleted);
 }