All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com>
To: shameer <shameerali.kolothum.thodi@huawei.com>,
	will.deacon@arm.com, mark.rutland@arm.com,
	lorenzo.pieralisi@arm.com, hanjun.guo@linaro.org
Cc: devicetree@vger.kernel.org, gabriele.paoloni@huawei.com,
	john.garry@huawei.com, linuxarm@huawei.com,
	linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org,
	wangzhou1@hisilicon.com, guohanjun@huawei.com,
	linux-arm-kernel@lists.infradead.org, devel@acpica.org
Subject: Re: [RFC v1 4/7] iommu/arm-smmu-v3: Enable HiSilicon erratum 161010701
Date: Tue, 16 May 2017 14:13:13 +0100	[thread overview]
Message-ID: <6d290334-cb68-5b20-a969-0cc6010922d5@arm.com> (raw)
In-Reply-To: <20170513094731.3676-5-shameerali.kolothum.thodi@huawei.com>

On 13/05/17 10:47, shameer wrote:
> This replaces the existing broken_prefetch_cmd quirk using
> the new erratum framework.
> 
> Signed-off-by: shameer <shameerali.kolothum.thodi@huawei.com>
> ---
>  arch/arm64/Kconfig          | 10 +++++++++-
>  drivers/iommu/arm-smmu-v3.c | 36 ++++++++++--------------------------
>  2 files changed, 19 insertions(+), 27 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index a39029b..21d61ff 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -508,8 +508,16 @@ config QCOM_FALKOR_ERRATUM_1009
>  
>  	  If unsure, say Y.
>  
> -endmenu
> +config HISILICON_ERRATUM_161010701
> +	bool "HiSilicon erratum 161010701: Skip SMMU Prefetch Cmd"
> +	default y
> +	help
> +	  On HiSilicon Hip06/Hip07 platforms, the SMMU v3 doesn't support the
> +	  CMD_PREFETCH_CFG. This will skip the prefetch cmd usage.
>  
> +	  If unsure, say Y.

We don't need a config. This feature (not to mention others like it) is
runtime-detected, and has effectively zero execution overhead and
negligible Image-size overhead either way; why would anyone ever turn it
off?

Robin.

> +
> +endmenu
>  
>  choice
>  	prompt "Page size"
> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
> index f20d5d5..14538cb 100644
> --- a/drivers/iommu/arm-smmu-v3.c
> +++ b/drivers/iommu/arm-smmu-v3.c
> @@ -650,16 +650,6 @@ struct arm_smmu_domain {
>  	struct iommu_domain		domain;
>  };
>  
> -struct arm_smmu_option_prop {
> -	u32 opt;
> -	const char *prop;
> -};
> -
> -static struct arm_smmu_option_prop arm_smmu_options[] = {
> -	{ ARM_SMMU_OPT_SKIP_PREFETCH, "hisilicon,broken-prefetch-cmd" },
> -	{ 0, NULL},
> -};
> -
>  enum smmu_erratum_match_type {
>  	se_match_dt,
>  };
> @@ -677,7 +667,17 @@ struct smmu_erratum_workaround {
>  };
>  
>  static const struct smmu_erratum_workaround smmu_workarounds[] = {
> +#ifdef CONFIG_HISILICON_ERRATUM_161010701
> +	{
> +		.match_type = se_match_dt,
> +		.id = "hisilicon,erratum-161010701",
> +		.desc_str = "HiSilicon erratum 161010701",
> +		.enable = erratum_skip_prefetch_cmd,
> +	},
> +#endif
> +	{
>  
> +	},
>  };
>  
>  typedef bool (*se_match_fn_t)(const struct smmu_erratum_workaround *,
> @@ -735,20 +735,6 @@ static struct arm_smmu_domain *to_smmu_domain(struct iommu_domain *dom)
>  	return container_of(dom, struct arm_smmu_domain, domain);
>  }
>  
> -static void parse_driver_options(struct arm_smmu_device *smmu)
> -{
> -	int i = 0;
> -
> -	do {
> -		if (of_property_read_bool(smmu->dev->of_node,
> -						arm_smmu_options[i].prop)) {
> -			smmu->options |= arm_smmu_options[i].opt;
> -			dev_notice(smmu->dev, "option %s\n",
> -				arm_smmu_options[i].prop);
> -		}
> -	} while (arm_smmu_options[++i].opt);
> -}
> -
>  /* Low-level queue manipulation functions */
>  static bool queue_full(struct arm_smmu_queue *q)
>  {
> @@ -2695,8 +2681,6 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev,
>  	else
>  		ret = 0;
>  
> -	parse_driver_options(smmu);
> -
>  	smmu_check_workarounds(smmu, se_match_dt, dev->of_node);
>  
>  	if (of_dma_is_coherent(dev->of_node))
> 


WARNING: multiple messages have this Message-ID (diff)
From: robin.murphy@arm.com (Robin Murphy)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC v1 4/7] iommu/arm-smmu-v3: Enable HiSilicon erratum 161010701
Date: Tue, 16 May 2017 14:13:13 +0100	[thread overview]
Message-ID: <6d290334-cb68-5b20-a969-0cc6010922d5@arm.com> (raw)
In-Reply-To: <20170513094731.3676-5-shameerali.kolothum.thodi@huawei.com>

On 13/05/17 10:47, shameer wrote:
> This replaces the existing broken_prefetch_cmd quirk using
> the new erratum framework.
> 
> Signed-off-by: shameer <shameerali.kolothum.thodi@huawei.com>
> ---
>  arch/arm64/Kconfig          | 10 +++++++++-
>  drivers/iommu/arm-smmu-v3.c | 36 ++++++++++--------------------------
>  2 files changed, 19 insertions(+), 27 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index a39029b..21d61ff 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -508,8 +508,16 @@ config QCOM_FALKOR_ERRATUM_1009
>  
>  	  If unsure, say Y.
>  
> -endmenu
> +config HISILICON_ERRATUM_161010701
> +	bool "HiSilicon erratum 161010701: Skip SMMU Prefetch Cmd"
> +	default y
> +	help
> +	  On HiSilicon Hip06/Hip07 platforms, the SMMU v3 doesn't support the
> +	  CMD_PREFETCH_CFG. This will skip the prefetch cmd usage.
>  
> +	  If unsure, say Y.

We don't need a config. This feature (not to mention others like it) is
runtime-detected, and has effectively zero execution overhead and
negligible Image-size overhead either way; why would anyone ever turn it
off?

Robin.

> +
> +endmenu
>  
>  choice
>  	prompt "Page size"
> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
> index f20d5d5..14538cb 100644
> --- a/drivers/iommu/arm-smmu-v3.c
> +++ b/drivers/iommu/arm-smmu-v3.c
> @@ -650,16 +650,6 @@ struct arm_smmu_domain {
>  	struct iommu_domain		domain;
>  };
>  
> -struct arm_smmu_option_prop {
> -	u32 opt;
> -	const char *prop;
> -};
> -
> -static struct arm_smmu_option_prop arm_smmu_options[] = {
> -	{ ARM_SMMU_OPT_SKIP_PREFETCH, "hisilicon,broken-prefetch-cmd" },
> -	{ 0, NULL},
> -};
> -
>  enum smmu_erratum_match_type {
>  	se_match_dt,
>  };
> @@ -677,7 +667,17 @@ struct smmu_erratum_workaround {
>  };
>  
>  static const struct smmu_erratum_workaround smmu_workarounds[] = {
> +#ifdef CONFIG_HISILICON_ERRATUM_161010701
> +	{
> +		.match_type = se_match_dt,
> +		.id = "hisilicon,erratum-161010701",
> +		.desc_str = "HiSilicon erratum 161010701",
> +		.enable = erratum_skip_prefetch_cmd,
> +	},
> +#endif
> +	{
>  
> +	},
>  };
>  
>  typedef bool (*se_match_fn_t)(const struct smmu_erratum_workaround *,
> @@ -735,20 +735,6 @@ static struct arm_smmu_domain *to_smmu_domain(struct iommu_domain *dom)
>  	return container_of(dom, struct arm_smmu_domain, domain);
>  }
>  
> -static void parse_driver_options(struct arm_smmu_device *smmu)
> -{
> -	int i = 0;
> -
> -	do {
> -		if (of_property_read_bool(smmu->dev->of_node,
> -						arm_smmu_options[i].prop)) {
> -			smmu->options |= arm_smmu_options[i].opt;
> -			dev_notice(smmu->dev, "option %s\n",
> -				arm_smmu_options[i].prop);
> -		}
> -	} while (arm_smmu_options[++i].opt);
> -}
> -
>  /* Low-level queue manipulation functions */
>  static bool queue_full(struct arm_smmu_queue *q)
>  {
> @@ -2695,8 +2681,6 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev,
>  	else
>  		ret = 0;
>  
> -	parse_driver_options(smmu);
> -
>  	smmu_check_workarounds(smmu, se_match_dt, dev->of_node);
>  
>  	if (of_dma_is_coherent(dev->of_node))
> 

  reply	other threads:[~2017-05-16 13:13 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-13  9:47 [RFC v1 0/7] iommu/smmu-v3: Workaround for hisilicon 161010801 erratum(reserve HW MSI) shameer
2017-05-13  9:47 ` shameer
2017-05-13  9:47 ` [RFC v1 1/7] iommu/arm-smmu-v3: Add erratum framework structures shameer
2017-05-13  9:47   ` shameer
     [not found] ` <20170513094731.3676-1-shameerali.kolothum.thodi-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2017-05-13  9:47   ` [RFC v1 2/7] iommu/arm-smmu-v3: Add erratum framework functions shameer
2017-05-13  9:47     ` shameer
2017-05-16 13:08     ` Robin Murphy
2017-05-16 13:08       ` Robin Murphy
2017-05-16 13:45       ` Shameerali Kolothum Thodi
2017-05-16 13:45         ` Shameerali Kolothum Thodi
2017-05-13  9:47   ` [RFC v1 6/7] iommu/arm-smmu-v3: Rearrange msi resv alloc functions shameer
2017-05-13  9:47     ` shameer
2017-05-16 13:27     ` Robin Murphy
2017-05-16 13:27       ` Robin Murphy
     [not found]       ` <d2d90929-6e79-70a3-5c82-a25e67931b4a-5wv7dgnIgG8@public.gmane.org>
2017-05-16 13:54         ` Shameerali Kolothum Thodi
2017-05-16 13:54           ` Shameerali Kolothum Thodi
2017-05-13  9:47 ` [RFC v1 3/7] iommu/arm-smmu-v3: Replace the device tree binding for hisilicon broken prefetch cmd with erratum id shameer
2017-05-13  9:47   ` shameer
2017-05-15 15:23   ` Rob Herring
2017-05-15 15:23     ` Rob Herring
2017-05-16 10:15     ` Shameerali Kolothum Thodi
2017-05-16 10:15       ` Shameerali Kolothum Thodi
2017-05-13  9:47 ` [RFC v1 4/7] iommu/arm-smmu-v3: Enable HiSilicon erratum 161010701 shameer
2017-05-13  9:47   ` shameer
2017-05-16 13:13   ` Robin Murphy [this message]
2017-05-16 13:13     ` Robin Murphy
     [not found]     ` <6d290334-cb68-5b20-a969-0cc6010922d5-5wv7dgnIgG8@public.gmane.org>
2017-05-16 13:46       ` Shameerali Kolothum Thodi
2017-05-16 13:46         ` Shameerali Kolothum Thodi
2017-05-13  9:47 ` [RFC v1 5/7] iommu/arm-smmu-v3: Enable ACPI based " shameer
2017-05-13  9:47   ` shameer
2017-05-13  9:47 ` [RFC v1 7/7] iommu/arm-smmu-v3: Enable ACPI based HiSilicon erratum 161010801 shameer
2017-05-13  9:47   ` shameer
2017-05-16 13:50   ` Robin Murphy
2017-05-16 13:50     ` Robin Murphy
2017-05-16 14:03     ` Shameerali Kolothum Thodi
2017-05-16 14:03       ` Shameerali Kolothum Thodi
     [not found]       ` <5FC3163CFD30C246ABAA99954A238FA838350A62-WFPaWmAhWqtUuCJht5byYAK1hpo4iccwjNknBlVQO8k@public.gmane.org>
2017-05-17  8:05         ` John Garry
2017-05-17  8:05           ` John Garry

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=6d290334-cb68-5b20-a969-0cc6010922d5@arm.com \
    --to=robin.murphy@arm.com \
    --cc=devel@acpica.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gabriele.paoloni@huawei.com \
    --cc=guohanjun@huawei.com \
    --cc=hanjun.guo@linaro.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=john.garry@huawei.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linuxarm@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=wangzhou1@hisilicon.com \
    --cc=will.deacon@arm.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.