public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-next] RDMA/efa: Fail probe on missing BARs
@ 2024-05-13  8:10 Michael Margolin
  2024-05-20 10:43 ` Gal Pressman
  2024-05-30 12:11 ` Leon Romanovsky
  0 siblings, 2 replies; 3+ messages in thread
From: Michael Margolin @ 2024-05-13  8:10 UTC (permalink / raw)
  To: jgg, leon, linux-rdma
  Cc: sleybo, matua, gal.pressman, Daniel Kranzdorf, Firas Jahjah

In case any of PCI BARs is missing during device probe we would like to
fail as early as possible. Fail if any of the required BARs isn't listed
as a memory BAR.

Reviewed-by: Daniel Kranzdorf <dkkranzd@amazon.com>
Reviewed-by: Firas Jahjah <firasj@amazon.com>
Signed-off-by: Michael Margolin <mrgolin@amazon.com>
---
 drivers/infiniband/hw/efa/efa_main.c | 30 ++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/drivers/infiniband/hw/efa/efa_main.c b/drivers/infiniband/hw/efa/efa_main.c
index d1a48f988f6c..99f9ac23c721 100644
--- a/drivers/infiniband/hw/efa/efa_main.c
+++ b/drivers/infiniband/hw/efa/efa_main.c
@@ -190,15 +190,23 @@ static int efa_request_doorbell_bar(struct efa_dev *dev)
 {
 	u8 db_bar_idx = dev->dev_attr.db_bar;
 	struct pci_dev *pdev = dev->pdev;
-	int bars;
+	int pci_mem_bars;
+	int db_bar;
 	int err;
 
-	if (!(BIT(db_bar_idx) & EFA_BASE_BAR_MASK)) {
-		bars = pci_select_bars(pdev, IORESOURCE_MEM) & BIT(db_bar_idx);
+	db_bar = BIT(db_bar_idx);
+	if (!(db_bar & EFA_BASE_BAR_MASK)) {
+		pci_mem_bars = pci_select_bars(pdev, IORESOURCE_MEM);
+		if (db_bar & ~pci_mem_bars) {
+			dev_err(&pdev->dev,
+				"Doorbells BAR unavailable. Requested %#x, available %#x\n",
+				db_bar, pci_mem_bars);
+			return -ENODEV;
+		}
 
-		err = pci_request_selected_regions(pdev, bars, DRV_MODULE_NAME);
+		err = pci_request_selected_regions(pdev, db_bar, DRV_MODULE_NAME);
 		if (err) {
-			dev_err(&dev->pdev->dev,
+			dev_err(&pdev->dev,
 				"pci_request_selected_regions for bar %d failed %d\n",
 				db_bar_idx, err);
 			return err;
@@ -531,7 +539,7 @@ static struct efa_dev *efa_probe_device(struct pci_dev *pdev)
 {
 	struct efa_com_dev *edev;
 	struct efa_dev *dev;
-	int bars;
+	int pci_mem_bars;
 	int err;
 
 	err = pci_enable_device_mem(pdev);
@@ -556,8 +564,14 @@ static struct efa_dev *efa_probe_device(struct pci_dev *pdev)
 	dev->pdev = pdev;
 	xa_init(&dev->cqs_xa);
 
-	bars = pci_select_bars(pdev, IORESOURCE_MEM) & EFA_BASE_BAR_MASK;
-	err = pci_request_selected_regions(pdev, bars, DRV_MODULE_NAME);
+	pci_mem_bars = pci_select_bars(pdev, IORESOURCE_MEM);
+	if (EFA_BASE_BAR_MASK & ~pci_mem_bars) {
+		dev_err(&pdev->dev, "BARs unavailable. Requested %#x, available %#x\n",
+			(int)EFA_BASE_BAR_MASK, pci_mem_bars);
+		err = -ENODEV;
+		goto err_ibdev_destroy;
+	}
+	err = pci_request_selected_regions(pdev, EFA_BASE_BAR_MASK, DRV_MODULE_NAME);
 	if (err) {
 		dev_err(&pdev->dev, "pci_request_selected_regions failed %d\n",
 			err);
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH for-next] RDMA/efa: Fail probe on missing BARs
  2024-05-13  8:10 [PATCH for-next] RDMA/efa: Fail probe on missing BARs Michael Margolin
@ 2024-05-20 10:43 ` Gal Pressman
  2024-05-30 12:11 ` Leon Romanovsky
  1 sibling, 0 replies; 3+ messages in thread
From: Gal Pressman @ 2024-05-20 10:43 UTC (permalink / raw)
  To: Michael Margolin, jgg, leon, linux-rdma
  Cc: sleybo, matua, Daniel Kranzdorf, Firas Jahjah

On 13/05/2024 11:10, Michael Margolin wrote:
> In case any of PCI BARs is missing during device probe we would like to
> fail as early as possible. Fail if any of the required BARs isn't listed
> as a memory BAR.
> 
> Reviewed-by: Daniel Kranzdorf <dkkranzd@amazon.com>
> Reviewed-by: Firas Jahjah <firasj@amazon.com>
> Signed-off-by: Michael Margolin <mrgolin@amazon.com>

Reviewed-by: Gal Pressman <gal.pressman@linux.dev>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH for-next] RDMA/efa: Fail probe on missing BARs
  2024-05-13  8:10 [PATCH for-next] RDMA/efa: Fail probe on missing BARs Michael Margolin
  2024-05-20 10:43 ` Gal Pressman
@ 2024-05-30 12:11 ` Leon Romanovsky
  1 sibling, 0 replies; 3+ messages in thread
From: Leon Romanovsky @ 2024-05-30 12:11 UTC (permalink / raw)
  To: linux-rdma, Jason Gunthorpe, Michael Margolin
  Cc: sleybo, matua, gal.pressman, Daniel Kranzdorf, Firas Jahjah


On Mon, 13 May 2024 08:10:19 +0000, Michael Margolin wrote:
> In case any of PCI BARs is missing during device probe we would like to
> fail as early as possible. Fail if any of the required BARs isn't listed
> as a memory BAR.
> 
> 

Applied, thanks!

[1/1] RDMA/efa: Fail probe on missing BARs
      https://git.kernel.org/rdma/rdma/c/435cdbe9f7a879

Best regards,
-- 
Leon Romanovsky <leon@kernel.org>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-05-30 14:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-13  8:10 [PATCH for-next] RDMA/efa: Fail probe on missing BARs Michael Margolin
2024-05-20 10:43 ` Gal Pressman
2024-05-30 12:11 ` Leon Romanovsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox