Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Nov 2016 11:20:13 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r308411 - head/sys/dev/mlx5/mlx5_core
Message-ID:  <201611071120.uA7BKD7n095287@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Mon Nov  7 11:20:13 2016
New Revision: 308411
URL: https://svnweb.freebsd.org/changeset/base/308411

Log:
  Ensure the firmware is notified of any host memory allocation
  failures. Else firmware commands may time out waiting for host
  memory.
  
  Sponsored by:	Mellanox Technologies
  MFC after:	1 week

Modified:
  head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c

Modified: head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c	Mon Nov  7 11:16:23 2016	(r308410)
+++ head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c	Mon Nov  7 11:20:13 2016	(r308411)
@@ -246,13 +246,14 @@ static int give_pages(struct mlx5_core_d
 	int inlen;
 	u64 addr;
 	int err;
-	int i;
+	int i = 0;
 
 	inlen = sizeof(*in) + npages * sizeof(in->pas[0]);
 	in = mlx5_vzalloc(inlen);
 	if (!in) {
 		mlx5_core_warn(dev, "vzalloc failed %d\n", inlen);
-		return -ENOMEM;
+		err = -ENOMEM;
+		goto out_alloc;
 	}
 	memset(&out, 0, sizeof(out));
 
@@ -263,7 +264,7 @@ retry:
 			if (err == -ENOMEM)
 				err = alloc_system_page(dev, func_id);
 			if (err)
-				goto out_4k;
+				goto out_alloc;
 
 			goto retry;
 		}
@@ -301,12 +302,11 @@ out_alloc:
 		memset(&out, 0, sizeof(out));
 		nin->hdr.opcode = cpu_to_be16(MLX5_CMD_OP_MANAGE_PAGES);
 		nin->hdr.opmod = cpu_to_be16(MLX5_PAGES_CANT_GIVE);
+		nin->func_id = cpu_to_be16(func_id);
 		if (mlx5_cmd_exec(dev, nin, sizeof(*nin), &out, sizeof(out)))
 			mlx5_core_warn(dev, "page notify failed\n");
 		kfree(nin);
 	}
-
-out_4k:
 	for (i--; i >= 0; i--)
 		free_4k(dev, be64_to_cpu(in->pas[i]));
 out_free:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611071120.uA7BKD7n095287>