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 <[email protected]>
---
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);
}
--
2.1.4
On Mon, 9 Jul 2018 16:51:03 +0300
Jan Dakinevich <[email protected]> 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 <[email protected]>
> ---
> 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
> On 16 Jul 2018, at 18:19, Jan Dakinevich <[email protected]> wrote:
>
> On Mon, 9 Jul 2018 16:51:03 +0300
> Jan Dakinevich <[email protected]> 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 <[email protected]>
lgtm,
Reviewed-by: Håkon Bugge <[email protected]>
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 [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
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 <[email protected]>
> Reviewed-by: Håkon Bugge <[email protected]>
> ---
> drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Applied to for-next, thanks
Jason