]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mlx4: indicate memory resource exhaustion
authorAjaykumar Hotchandani <ajaykumar.hotchandani@oracle.com>
Wed, 14 Oct 2015 23:30:26 +0000 (16:30 -0700)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Wed, 21 Oct 2015 15:08:26 +0000 (08:08 -0700)
Change here provides details about pid, which resource got exhausted and
current limits for that resource.

These details are requested by database folks to attempt recovery.

This is port from UEK2 commit f3774780e30

Orabug: 21549767

Signed-off-by: Ajaykumar Hotchandani <ajaykumar.hotchandani@oracle.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Guangyu Sun <guangyu.sun@oracle.com>
Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>
drivers/net/ethernet/mellanox/mlx4/mr.c

index e6fb7e1c6a3b26e617a6956a423da22d255c8623..3288f09d29d24b1f5415f2fd268401243090fd3b 100644 (file)
@@ -160,8 +160,13 @@ u32 __mlx4_alloc_mtt_range(struct mlx4_dev *dev, int order)
        seg_order = max_t(int, order - log_mtts_per_seg, 0);
 
        seg = mlx4_buddy_alloc(&mr_table->mtt_buddy, seg_order);
-       if (seg == -1)
+       if (seg == -1) {
+               printk_once(KERN_NOTICE
+                               "[%d]: Exhausted MTT entries, current size=%u. "
+                               "Try updating log_num_mtt module parameter\n",
+                               task_pid_nr(current), mr_table->mtt_buddy.max_order);
                return -1;
+       }
 
        offset = seg * (1 << log_mtts_per_seg);
 
@@ -445,7 +450,15 @@ int __mlx4_mpt_reserve(struct mlx4_dev *dev)
 {
        struct mlx4_priv *priv = mlx4_priv(dev);
 
-       return mlx4_bitmap_alloc(&priv->mr_table.mpt_bitmap);
+       int ret = mlx4_bitmap_alloc(&priv->mr_table.mpt_bitmap);
+
+       if (ret == -1)
+               printk_once(KERN_NOTICE
+                               "[%d]: MR: Exhausted MPT entries, current size=%u. "
+                               "Try updating log_num_mpt module parameter\n",
+                               task_pid_nr(current), priv->mr_table.mpt_bitmap.max);
+
+       return ret;
 }
 
 static int mlx4_mpt_reserve(struct mlx4_dev *dev)