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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <BL2PR07MB2306B36343A7E0493018AB158D5F0@BL2PR07MB2306.namprd07.prod.outlook.com>
Date:   Sun, 19 Feb 2017 16:00:59 +0000
From:   "Mintz, Yuval" <Yuval.Mintz@...ium.com>
To:     Jakub Kicinski <jakub.kicinski@...ronome.com>,
        "netdev@...r.kernel.org" <netdev@...r.kernel.org>
CC:     "oss-drivers@...ronome.com" <oss-drivers@...ronome.com>,
        "dinan.gunawardena@...ronome.com" <dinan.gunawardena@...ronome.com>
Subject: RE: [PATCH net-next 7/7] nfp: allow application firmware to limit
 number of SR-IOV VFs

> +static void nfp_pcie_sriov_read_nfd_limit(struct nfp_pf *pf)
> +{
> +	int err;
> +
> +	pf->limit_vfs = nfp_rtsym_read_le(pf->cpp, "nfd_vf_cfg_max_vfs",
> &err);
> +	if (!err)
> +		return;
> +
> +	pf->limit_vfs = ~0;
> +	/* Allow any setting for backwards compatibility if symbol not found
> */
> +	if (err != -ENOENT)
> +		nfp_warn(pf->cpp, "Warning: VF limit read failed: %d\n", err);
> +}
> +

If you're only going to use this under CONFIG_PCI_IOV,
perhaps put this underneath the ifdef as well?

>  static int nfp_pcie_sriov_enable(struct pci_dev *pdev, int num_vfs)
>  {
>  #ifdef CONFIG_PCI_IOV
>  	struct nfp_pf *pf = pci_get_drvdata(pdev);
>  	int err;
> 
> +	if (num_vfs > pf->limit_vfs) {
> +		nfp_info(pf->cpp, "Firmware limits number of VFs to %u\n",
> +			 pf->limit_vfs);
> +		return -EINVAL;
> +	}
> +
>  	err = pci_enable_sriov(pdev, num_vfs);
>  	if (err) {
>  		dev_warn(&pdev->dev, "Failed to enable PCI sriov: %d\n",
> err);
> @@ -333,6 +354,8 @@ static int nfp_pci_probe(struct pci_dev *pdev,
>  	if (err)
>  		goto err_cpp_free;
> 
> +	nfp_pcie_sriov_read_nfd_limit(pf);
> +
>  	err = nfp_net_pci_probe(pf);
>  	if (err)
>  		goto err_fw_unload;
> diff --git a/drivers/net/ethernet/netronome/nfp/nfp_main.h
> b/drivers/net/ethernet/netronome/nfp/nfp_main.h
> index 6c40fa322da3..39105d0435e9 100644
> --- a/drivers/net/ethernet/netronome/nfp/nfp_main.h
> +++ b/drivers/net/ethernet/netronome/nfp/nfp_main.h
> @@ -59,6 +59,7 @@ struct nfp_eth_table;
>   * @tx_area:		Pointer to the CPP area for the TX queues
>   * @rx_area:		Pointer to the CPP area for the FL/RX queues
>   * @irq_entries:	Array of MSI-X entries for all ports
> + * @limit_vfs:		Number of VFs supported by firmware (~0 for PCI
> limit)
>   * @num_vfs:		Number of SR-IOV VFs enabled
>   * @fw_loaded:		Is the firmware loaded?
>   * @eth_tbl:		NSP ETH table
> @@ -77,6 +78,7 @@ struct nfp_pf {
> 
>  	struct msix_entry *irq_entries;
> 
> +	unsigned int limit_vfs;
>  	unsigned int num_vfs;
> 
>  	bool fw_loaded;
> --
> 2.11.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ