From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <alucero@netronome.com>
Received: from netronome.com (host-79-78-33-110.static.as9105.net
 [79.78.33.110]) by dpdk.org (Postfix) with ESMTP id AA428397D
 for <dev@dpdk.org>; Fri,  5 Oct 2018 14:46:51 +0200 (CEST)
Received: from netronome.com (localhost [127.0.0.1])
 by netronome.com (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id
 w95CjVGp008386 for <dev@dpdk.org>; Fri, 5 Oct 2018 13:45:31 +0100
Received: (from alucero@localhost)
 by netronome.com (8.14.4/8.14.4/Submit) id w95CjVn4008385
 for dev@dpdk.org; Fri, 5 Oct 2018 13:45:31 +0100
From: Alejandro Lucero <alejandro.lucero@netronome.com>
To: dev@dpdk.org
Date: Fri,  5 Oct 2018 13:45:26 +0100
Message-Id: <1538743527-8285-6-git-send-email-alejandro.lucero@netronome.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1538743527-8285-1-git-send-email-alejandro.lucero@netronome.com>
References: <1538743527-8285-1-git-send-email-alejandro.lucero@netronome.com>
Subject: [dpdk-dev] [PATCH v3 5/6] net/nfp: check hugepages IOVAs based on
	DMA mask
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 05 Oct 2018 12:46:52 -0000

NFP devices can not handle DMA addresses requiring more than
40 bits. This patch uses rte_dev_check_dma_mask with 40 bits
and avoids device initialization if memory out of NFP range.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 170b5d6..3910980 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -2680,6 +2680,14 @@ uint32_t nfp_net_txq_full(struct nfp_net_txq *txq)
 
 	pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
 
+	/* NFP can not handle DMA addresses requiring more than 40 bits */
+	if (rte_eal_check_dma_mask(40)) {
+		RTE_LOG(ERR, PMD, "device %s can not be used:",
+				   pci_dev->device.name);
+		RTE_LOG(ERR, PMD, "\trestricted dma mask to 40 bits!\n");
+		return -ENODEV;
+	};
+
 	if ((pci_dev->id.device_id == PCI_DEVICE_ID_NFP4000_PF_NIC) ||
 	    (pci_dev->id.device_id == PCI_DEVICE_ID_NFP6000_PF_NIC)) {
 		port = get_pf_port_number(eth_dev->data->name);
-- 
1.9.1