DPDK patches and discussions
 help / color / mirror / Atom feed
From: Hemant Agrawal <hemant.agrawal@nxp.com>
To: "Sachin Saxena (OSS)" <sachin.saxena@oss.nxp.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	"ferruh.yigit@intel.com" <ferruh.yigit@intel.com>
Subject: Re: [dpdk-dev] [PATCH v2 2/8] bus/fslmc: run secondary debug app without blocklist devices
Date: Mon, 14 Sep 2020 10:49:52 +0000
Message-ID: <AM6PR04MB4456502695E5A5B253BE153689230@AM6PR04MB4456.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <20200911083520.24020-3-sachin.saxena@oss.nxp.com>

Hi,
> -----Original Message-----
> From: Sachin Saxena (OSS) <sachin.saxena@oss.nxp.com>
> Sent: Friday, September 11, 2020 2:05 PM
> To: dev@dpdk.org; ferruh.yigit@intel.com
> Cc: Sachin Saxena (OSS) <sachin.saxena@oss.nxp.com>
> Subject: [PATCH v2 2/8] bus/fslmc: run secondary debug app without
> blocklist devices
> 
> From: Rohit Raj <rohit.raj@nxp.com>
> 
> dpaa2 hw impose limits on some HW access devices like DPMCP(Mnagement
> control Port) and DPIO (HW portal). This causes issue in their usages in shared
> uses in case of multi-process applications. It can overcome by using
> allowlist/blocklist in primary and secondary applications.
> However it imposes restrictions on standard debugging apps like dpdk-
> procinfo, which can be used to debug any existing application.
> 
> This patch introduces reserving extra DPMCP and DPIO to be used by
> secondary process if devices are not blocked previously in primary application.
> This leaves the last DPMCP and DPIO for the secondary process usages.

[Hemant]  It may be good to also document this behavior in the dpaa2 nic guide. 

> 
> Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
> Reviewed-by: Sachin Saxena <sachin.saxena@oss.nxp.com>
> ---
>  drivers/bus/fslmc/fslmc_vfio.c | 66
> +++++++++++++++++++++++++++++++---
>  1 file changed, 61 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c
> index 9134ec552..6dd797632 100644
> --- a/drivers/bus/fslmc/fslmc_vfio.c
> +++ b/drivers/bus/fslmc/fslmc_vfio.c
> @@ -802,10 +802,29 @@ fslmc_vfio_process_group(void)
>  	int ret;
>  	int found_mportal = 0;
>  	struct rte_dpaa2_device *dev, *dev_temp;
> +	bool is_dpmcp_in_blocklist = false, is_dpio_in_blocklist = false;
> +	int dpmcp_count = 0, dpio_count = 0, current_device;
> +
> +	TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next,
> dev_temp) {
> +		if (dev->dev_type == DPAA2_MPORTAL) {
> +			dpmcp_count++;
> +			if (dev->device.devargs &&
> +			    dev->device.devargs->policy ==
> RTE_DEV_BLACKLISTED)
> +				is_dpmcp_in_blocklist = true;
> +		}
> +		if (dev->dev_type == DPAA2_IO) {
> +			dpio_count++;
> +			if (dev->device.devargs &&
> +			    dev->device.devargs->policy ==
> RTE_DEV_BLACKLISTED)
> +				is_dpmcp_in_blocklist = true;

 [Hemant]  This shall be is_dpio_in_blocklist

> +		}
> +	}
> 
>  	/* Search the MCP as that should be initialized first. */
> +	current_device = 0;
>  	TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next,
> dev_temp) {
>  		if (dev->dev_type == DPAA2_MPORTAL) {
> +			current_device++;
>  			if (dev->device.devargs &&
>  			    dev->device.devargs->policy ==
> RTE_DEV_BLACKLISTED) {
>  				DPAA2_BUS_LOG(DEBUG, "%s Blacklisted,
> skipping", @@ -815,13 +834,24 @@ fslmc_vfio_process_group(void)
>  				continue;
>  			}
> 
> -			ret = fslmc_process_mcp(dev);
> -			if (ret) {
> -				DPAA2_BUS_ERR("Unable to map MC
> Portal");
> -				return -1;
> +			if (rte_eal_process_type() ==
> RTE_PROC_SECONDARY &&
> +			    !is_dpmcp_in_blocklist) {
> +				if (dpmcp_count == 1 ||
> +				    current_device != dpmcp_count) {
> +
> 	TAILQ_REMOVE(&rte_fslmc_bus.device_list,
> +						     dev, next);
> +					continue;
> +				}
>  			}
> -			if (!found_mportal)
> +
> +			if (!found_mportal) {
> +				ret = fslmc_process_mcp(dev);
> +				if (ret) {
> +					DPAA2_BUS_ERR("Unable to map
> MC Portal");
> +					return -1;
> +				}
>  				found_mportal = 1;
> +			}
> 
>  			TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev,
> next);
>  			free(dev);
> @@ -838,7 +868,10 @@ fslmc_vfio_process_group(void)
>  		return -1;
>  	}
> 
> +	current_device = 0;
>  	TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next,
> dev_temp) {
> +		if (dev->dev_type == DPAA2_IO)
> +			current_device++;
>  		if (dev->device.devargs &&
>  		    dev->device.devargs->policy == RTE_DEV_BLACKLISTED) {
>  			DPAA2_BUS_LOG(DEBUG, "%s Blacklisted, skipping",
> @@ -846,6 +879,14 @@ fslmc_vfio_process_group(void)
>  			TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev,
> next);
>  			continue;
>  		}
> +		if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
> +		    dev->dev_type != DPAA2_ETH &&
> +		    dev->dev_type != DPAA2_CRYPTO &&
> +		    dev->dev_type != DPAA2_QDMA &&
> +		    dev->dev_type != DPAA2_IO) {
> +			TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev,
> next);
> +			continue;
> +		}
>  		switch (dev->dev_type) {
>  		case DPAA2_ETH:
>  		case DPAA2_CRYPTO:
> @@ -882,6 +923,21 @@ fslmc_vfio_process_group(void)
> 
>  			break;
>  		case DPAA2_IO:
> +			if (!is_dpio_in_blocklist && dpio_count > 1) {
> +				if (rte_eal_process_type() ==
> RTE_PROC_SECONDARY
> +				    && current_device != dpio_count) {
> +
> 	TAILQ_REMOVE(&rte_fslmc_bus.device_list,
> +						     dev, next);
> +					break;
> +				}
> +				if (rte_eal_process_type() ==
> RTE_PROC_PRIMARY
> +				    && current_device == dpio_count) {
> +
> 	TAILQ_REMOVE(&rte_fslmc_bus.device_list,
> +						     dev, next);
> +					break;
> +				}
> +			}
> +
>  			ret = fslmc_process_iodevices(dev);
>  			if (ret) {
>  				DPAA2_BUS_DEBUG("Dev (%s) init failed",
> --
> 2.28.0


  reply	other threads:[~2020-09-14 10:49 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-11  8:35 [dpdk-dev] [PATCH v2 0/8] enhancement and fixes for nxp dpaax platform Sachin Saxena (OSS)
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 1/8] bus/fslmc: fix atomic queues on nxp lx2 platform Sachin Saxena (OSS)
2020-09-14 10:25   ` Hemant Agrawal
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 2/8] bus/fslmc: run secondary debug app without blocklist devices Sachin Saxena (OSS)
2020-09-14 10:49   ` Hemant Agrawal [this message]
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 3/8] net/dpaa2: fix check for key size Sachin Saxena (OSS)
2020-09-14 10:51   ` Hemant Agrawal
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 4/8] bus/dpaa: RX/TX error queues Sachin Saxena (OSS)
2020-09-14 10:57   ` Hemant Agrawal
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 5/8] bus/fslmc: fix usage of dpio blocklist flag Sachin Saxena (OSS)
2020-09-14 10:58   ` Hemant Agrawal
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 6/8] bus/dpaa: enhance link status support Sachin Saxena (OSS)
2020-09-14 11:01   ` Hemant Agrawal
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 7/8] bus/dpaa: send error packets to application Sachin Saxena (OSS)
2020-09-14 11:01   ` Hemant Agrawal
2020-09-11  8:35 ` [dpdk-dev] [PATCH v2 8/8] net/dpaa: " Sachin Saxena (OSS)
2020-09-24  4:02 ` [dpdk-dev] [PATCH v3 0/6] enhancement and fixes for nxp dpaax platform Sachin Saxena (OSS)
2020-09-24  4:02   ` [dpdk-dev] [PATCH v3 1/6] bus/fslmc: fix atomic queues on nxp lx2 platform Sachin Saxena (OSS)
2020-09-24  4:02   ` [dpdk-dev] [PATCH v3 2/6] bus/fslmc: run secondary debug app without blacklist devices Sachin Saxena (OSS)
2020-09-24  4:02   ` [dpdk-dev] [PATCH v3 3/6] net/dpaa2: fix check for key size Sachin Saxena (OSS)
2020-09-24  4:02   ` [dpdk-dev] [PATCH v3 4/6] bus/dpaa: enables RX/TX error queues Sachin Saxena (OSS)
2020-09-24  4:02   ` [dpdk-dev] [PATCH v3 5/6] net/dpaa: send error packets to application Sachin Saxena (OSS)
2020-09-24  4:02   ` [dpdk-dev] [PATCH v3 6/6] bus/dpaa: enhance link status support Sachin Saxena (OSS)
2020-09-30  5:27   ` [dpdk-dev] [PATCH v3 0/6] enhancement and fixes for nxp dpaax platform Nipun Gupta
2020-10-06 12:46     ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AM6PR04MB4456502695E5A5B253BE153689230@AM6PR04MB4456.eurprd04.prod.outlook.com \
    --to=hemant.agrawal@nxp.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=sachin.saxena@oss.nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git