lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
 <SA6PR21MB42311D71F057BAFBD68353C0CE94A@SA6PR21MB4231.namprd21.prod.outlook.com>
Date: Sun, 11 May 2025 18:16:26 +0000
From: Long Li <longli@...rosoft.com>
To: Konstantin Taranov <kotaranov@...ux.microsoft.com>, Konstantin Taranov
	<kotaranov@...rosoft.com>, "pabeni@...hat.com" <pabeni@...hat.com>, Haiyang
 Zhang <haiyangz@...rosoft.com>, KY Srinivasan <kys@...rosoft.com>,
	"edumazet@...gle.com" <edumazet@...gle.com>, "kuba@...nel.org"
	<kuba@...nel.org>, "davem@...emloft.net" <davem@...emloft.net>, Dexuan Cui
	<decui@...rosoft.com>, "wei.liu@...nel.org" <wei.liu@...nel.org>,
	"jgg@...pe.ca" <jgg@...pe.ca>, "leon@...nel.org" <leon@...nel.org>
CC: "linux-rdma@...r.kernel.org" <linux-rdma@...r.kernel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: RE: [PATCH rdma-next v4 1/4] net: mana: Probe rdma device in mana
 driver



> -----Original Message-----
> From: Konstantin Taranov <kotaranov@...ux.microsoft.com>
> Sent: Wednesday, May 7, 2025 8:59 AM
> To: Konstantin Taranov <kotaranov@...rosoft.com>; pabeni@...hat.com;
> Haiyang Zhang <haiyangz@...rosoft.com>; KY Srinivasan <kys@...rosoft.com>;
> edumazet@...gle.com; kuba@...nel.org; davem@...emloft.net; Dexuan Cui
> <decui@...rosoft.com>; wei.liu@...nel.org; Long Li <longli@...rosoft.com>;
> jgg@...pe.ca; leon@...nel.org
> Cc: linux-rdma@...r.kernel.org; linux-kernel@...r.kernel.org;
> netdev@...r.kernel.org
> Subject: [PATCH rdma-next v4 1/4] net: mana: Probe rdma device in mana driver
> 
> From: Konstantin Taranov <kotaranov@...rosoft.com>
> 
> Initialize gdma device for rdma inside mana module.
> For each gdma device, initialize an auxiliary ib device.
> 
> Signed-off-by: Konstantin Taranov <kotaranov@...rosoft.com>

Reviewed-by: Long Li <longli@...rosoft.com>

> ---
>  .../net/ethernet/microsoft/mana/gdma_main.c   | 15 ++++++-
>  drivers/net/ethernet/microsoft/mana/mana_en.c | 39 +++++++++++++++++--
>  include/net/mana/mana.h                       |  3 ++
>  3 files changed, 52 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c
> b/drivers/net/ethernet/microsoft/mana/gdma_main.c
> index 8ee1aa3..59e7814 100644
> --- a/drivers/net/ethernet/microsoft/mana/gdma_main.c
> +++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c
> @@ -1005,7 +1005,6 @@ int mana_gd_register_device(struct gdma_dev *gd)
> 
>  	return 0;
>  }
> -EXPORT_SYMBOL_NS(mana_gd_register_device, "NET_MANA");
> 
>  int mana_gd_deregister_device(struct gdma_dev *gd)  { @@ -1036,7 +1035,6
> @@ int mana_gd_deregister_device(struct gdma_dev *gd)
> 
>  	return err;
>  }
> -EXPORT_SYMBOL_NS(mana_gd_deregister_device, "NET_MANA");
> 
>  u32 mana_gd_wq_avail_space(struct gdma_queue *wq)  { @@ -1579,8
> +1577,14 @@ static int mana_gd_probe(struct pci_dev *pdev, const struct
> pci_device_id *ent)
>  	if (err)
>  		goto cleanup_gd;
> 
> +	err = mana_rdma_probe(&gc->mana_ib);
> +	if (err)
> +		goto cleanup_mana;
> +
>  	return 0;
> 
> +cleanup_mana:
> +	mana_remove(&gc->mana, false);
>  cleanup_gd:
>  	mana_gd_cleanup(pdev);
>  unmap_bar:
> @@ -1608,6 +1612,7 @@ static void mana_gd_remove(struct pci_dev *pdev)  {
>  	struct gdma_context *gc = pci_get_drvdata(pdev);
> 
> +	mana_rdma_remove(&gc->mana_ib);
>  	mana_remove(&gc->mana, false);
> 
>  	mana_gd_cleanup(pdev);
> @@ -1631,6 +1636,7 @@ static int mana_gd_suspend(struct pci_dev *pdev,
> pm_message_t state)  {
>  	struct gdma_context *gc = pci_get_drvdata(pdev);
> 
> +	mana_rdma_remove(&gc->mana_ib);
>  	mana_remove(&gc->mana, true);
> 
>  	mana_gd_cleanup(pdev);
> @@ -1655,6 +1661,10 @@ static int mana_gd_resume(struct pci_dev *pdev)
>  	if (err)
>  		return err;
> 
> +	err = mana_rdma_probe(&gc->mana_ib);
> +	if (err)
> +		return err;
> +
>  	return 0;
>  }
> 
> @@ -1665,6 +1675,7 @@ static void mana_gd_shutdown(struct pci_dev *pdev)
> 
>  	dev_info(&pdev->dev, "Shutdown was called\n");
> 
> +	mana_rdma_remove(&gc->mana_ib);
>  	mana_remove(&gc->mana, true);
> 
>  	mana_gd_cleanup(pdev);
> diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c
> b/drivers/net/ethernet/microsoft/mana/mana_en.c
> index 5be0585..2013d0e 100644
> --- a/drivers/net/ethernet/microsoft/mana/mana_en.c
> +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
> @@ -2944,7 +2944,7 @@ static void remove_adev(struct gdma_dev *gd)
>  	gd->adev = NULL;
>  }
> 
> -static int add_adev(struct gdma_dev *gd)
> +static int add_adev(struct gdma_dev *gd, const char *name)
>  {
>  	struct auxiliary_device *adev;
>  	struct mana_adev *madev;
> @@ -2960,7 +2960,7 @@ static int add_adev(struct gdma_dev *gd)
>  		goto idx_fail;
>  	adev->id = ret;
> 
> -	adev->name = "rdma";
> +	adev->name = name;
>  	adev->dev.parent = gd->gdma_context->dev;
>  	adev->dev.release = adev_release;
>  	madev->mdev = gd;
> @@ -3076,7 +3076,7 @@ int mana_probe(struct gdma_dev *gd, bool resuming)
>  		}
>  	}
> 
> -	err = add_adev(gd);
> +	err = add_adev(gd, "eth");
>  out:
>  	if (err) {
>  		mana_remove(gd, false);
> @@ -3150,6 +3150,39 @@ out:
>  	dev_dbg(dev, "%s succeeded\n", __func__);  }
> 
> +int mana_rdma_probe(struct gdma_dev *gd) {
> +	int err = 0;
> +
> +	if (gd->dev_id.type != GDMA_DEVICE_MANA_IB) {
> +		/* RDMA device is not detected on pci */
> +		return err;
> +	}
> +
> +	err = mana_gd_register_device(gd);
> +	if (err)
> +		return err;
> +
> +	err = add_adev(gd, "rdma");
> +	if (err)
> +		mana_gd_deregister_device(gd);
> +
> +	return err;
> +}
> +
> +void mana_rdma_remove(struct gdma_dev *gd) {
> +	if (gd->dev_id.type != GDMA_DEVICE_MANA_IB) {
> +		/* RDMA device is not detected on pci */
> +		return;
> +	}
> +
> +	if (gd->adev)
> +		remove_adev(gd);
> +
> +	mana_gd_deregister_device(gd);
> +}
> +
>  struct net_device *mana_get_primary_netdev(struct mana_context *ac,
>  					   u32 port_index,
>  					   netdevice_tracker *tracker)
> diff --git a/include/net/mana/mana.h b/include/net/mana/mana.h index
> 0f78065..5857efc 100644
> --- a/include/net/mana/mana.h
> +++ b/include/net/mana/mana.h
> @@ -488,6 +488,9 @@ int mana_detach(struct net_device *ndev, bool
> from_close);  int mana_probe(struct gdma_dev *gd, bool resuming);  void
> mana_remove(struct gdma_dev *gd, bool suspending);
> 
> +int mana_rdma_probe(struct gdma_dev *gd); void mana_rdma_remove(struct
> +gdma_dev *gd);
> +
>  void mana_xdp_tx(struct sk_buff *skb, struct net_device *ndev);  int
> mana_xdp_xmit(struct net_device *ndev, int n, struct xdp_frame **frames,
>  		  u32 flags);
> --
> 2.43.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ