* [v6 0/3] Cavium ThunderX2 SMMUv3 errata workarounds
@ 2017-05-12 12:41 Geetha sowjanya
2017-05-12 12:41 ` [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model Geetha sowjanya
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Geetha sowjanya @ 2017-05-12 12:41 UTC (permalink / raw)
To: will.deacon, robin.murphy, lorenzo.pieralisi, hanjun.guo,
sudeep.holla, iommu
Cc: robert.moore, lv.zheng, rjw, jcm, linux-kernel, robert.richter,
catalin.marinas, sgoutham, linux-arm-kernel, linux-acpi,
geethasowjanya.akula, devel, linu.cherian, Charles.Garcia-Tobin
From: Linu Cherian <linu.cherian@cavium.com>
Cavium ThunderX2 SMMUv3 implementation has two Silicon Erratas.
1. Errata ID #74
SMMU register alias Page 1 is not implemented
2. Errata ID #126
SMMU doesnt support unique IRQ lines and also MSI for gerror,
eventq and cmdq-sync
The following patchset does software workaround for these two erratas.
This series is based on patchset.
https://www.spinics.net/lists/arm-kernel/msg578443.html
Changes since v5:
- Rebased on Robin's "Update SMMU models for IORT rev. C" patch.
https://www.spinics.net/lists/arm-kernel/msg580728.html
- Replaced ACPI_IORT_SMMU_V3_CAVIUM_CN99XX macro with ACPI_IORT_SMMU_CAVIUM_CN99XX
Changes since v4:
- Replaced all page1 offset macros ARM_SMMU_EVTQ/PRIQ_PROD/CONS with
arm_smmu_page1_fixup(ARM_SMMU_EVTQ/PRIQ_PROD/CONS, smmu)
Changes since v3:
- Merged patches 1, 2 and 4 of Version 3.
- Modified the page1_offset_adjust() and get_irq_flags() implementation as
suggested by Robin.
Changes since v2:
- Updated "Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt" document with
new SMMU option used to enable errata workaround.
Changes since v1:
- Since the use of MIDR register is rejected and SMMU_IIDR is broken on this
silicon, as suggested by Will Deacon modified the patches to use ThunderX2
SMMUv3 IORT model number to enable errata workaround.
Geetha Sowjanya (1):
iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126
Linu Cherian (2):
ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3
model
iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74
Documentation/arm64/silicon-errata.txt | 2 +
.../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 ++
drivers/acpi/arm64/iort.c | 10 ++-
drivers/iommu/arm-smmu-v3.c | 93 +++++++++++++++++-----
4 files changed, 91 insertions(+), 20 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread* [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model 2017-05-12 12:41 [v6 0/3] Cavium ThunderX2 SMMUv3 errata workarounds Geetha sowjanya @ 2017-05-12 12:41 ` Geetha sowjanya 2017-05-13 0:33 ` kbuild test robot 2017-05-12 12:41 ` [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 Geetha sowjanya 2017-05-12 12:41 ` [v6 3/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126 Geetha sowjanya 2 siblings, 1 reply; 11+ messages in thread From: Geetha sowjanya @ 2017-05-12 12:41 UTC (permalink / raw) To: will.deacon, robin.murphy, lorenzo.pieralisi, hanjun.guo, sudeep.holla, iommu Cc: robert.moore, lv.zheng, rjw, jcm, linux-kernel, robert.richter, catalin.marinas, sgoutham, linux-arm-kernel, linux-acpi, geethasowjanya.akula, devel, linu.cherian, Charles.Garcia-Tobin, Geetha Sowjanya From: Linu Cherian <linu.cherian@cavium.com> Cavium ThunderX2 implementation doesn't support second page in SMMU register space. Hence, resource size is set as 64k for this model. Signed-off-by: Linu Cherian <linu.cherian@cavium.com> Signed-off-by: Geetha Sowjanya <geethasowjanya.akula@cavium.com> --- drivers/acpi/arm64/iort.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c index c5fecf9..bba2b59 100644 --- a/drivers/acpi/arm64/iort.c +++ b/drivers/acpi/arm64/iort.c @@ -833,12 +833,20 @@ static void __init arm_smmu_v3_init_resources(struct resource *res, { struct acpi_iort_smmu_v3 *smmu; int num_res = 0; + unsigned long size = SZ_128K; /* Retrieve SMMUv3 specific data */ smmu = (struct acpi_iort_smmu_v3 *)node->node_data; + /* + * Override the size, for Cavium ThunderX2 implementation + * which doesn't support the page 1 SMMU register space. + */ + if (smmu->model == ACPI_IORT_SMMU_CAVIUM_CN99XX) + size = SZ_64K; + res[num_res].start = smmu->base_address; - res[num_res].end = smmu->base_address + SZ_128K - 1; + res[num_res].end = smmu->base_address + size - 1; res[num_res].flags = IORESOURCE_MEM; num_res++; -- 1.8.3.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model 2017-05-12 12:41 ` [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model Geetha sowjanya @ 2017-05-13 0:33 ` kbuild test robot 2017-05-13 3:18 ` Geetha Akula 0 siblings, 1 reply; 11+ messages in thread From: kbuild test robot @ 2017-05-13 0:33 UTC (permalink / raw) To: Geetha sowjanya Cc: kbuild-all, will.deacon, robin.murphy, lorenzo.pieralisi, hanjun.guo, sudeep.holla, iommu, robert.moore, lv.zheng, rjw, jcm, linux-kernel, robert.richter, catalin.marinas, sgoutham, linux-arm-kernel, linux-acpi, geethasowjanya.akula, devel, linu.cherian, Charles.Garcia-Tobin, Geetha Sowjanya [-- Attachment #1: Type: text/plain, Size: 1809 bytes --] Hi Linu, [auto build test ERROR on arm64/for-next/core] [also build test ERROR on v4.11 next-20170512] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Geetha-sowjanya/Cavium-ThunderX2-SMMUv3-errata-workarounds/20170513-065956 base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core config: arm64-defconfig (attached as .config) compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm64 All errors (new ones prefixed by >>): drivers/acpi/arm64/iort.c: In function 'arm_smmu_v3_init_resources': >> drivers/acpi/arm64/iort.c:777:21: error: 'ACPI_IORT_SMMU_CAVIUM_CN99XX' undeclared (first use in this function) if (smmu->model == ACPI_IORT_SMMU_CAVIUM_CN99XX) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/acpi/arm64/iort.c:777:21: note: each undeclared identifier is reported only once for each function it appears in vim +/ACPI_IORT_SMMU_CAVIUM_CN99XX +777 drivers/acpi/arm64/iort.c 771 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; 772 773 /* 774 * Override the size, for Cavium ThunderX2 implementation 775 * which doesn't support the page 1 SMMU register space. 776 */ > 777 if (smmu->model == ACPI_IORT_SMMU_CAVIUM_CN99XX) 778 size = SZ_64K; 779 780 res[num_res].start = smmu->base_address; --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 34579 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model 2017-05-13 0:33 ` kbuild test robot @ 2017-05-13 3:18 ` Geetha Akula 0 siblings, 0 replies; 11+ messages in thread From: Geetha Akula @ 2017-05-13 3:18 UTC (permalink / raw) To: kbuild test robot Cc: Geetha sowjanya, kbuild-all, Will Deacon, Robin Murphy, lorenzo.pieralisi, Hanjun Guo, sudeep.holla, iommu, Robert Moore, Lv Zheng, Rafael J. Wysocki, jcm, linux-kernel, Robert Richter, catalin.marinas, Sunil Goutham, linux-arm-kernel, linux-acpi, devel, Linu Cherian, Charles Garcia-Tobin, Geetha Sowjanya On Sat, May 13, 2017 at 6:03 AM, kbuild test robot <lkp@intel.com> wrote: > Hi Linu, > > [auto build test ERROR on arm64/for-next/core] > [also build test ERROR on v4.11 next-20170512] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/Geetha-sowjanya/Cavium-ThunderX2-SMMUv3-errata-workarounds/20170513-065956 > base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core > config: arm64-defconfig (attached as .config) > compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 > reproduce: > wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=arm64 > > All errors (new ones prefixed by >>): > > drivers/acpi/arm64/iort.c: In function 'arm_smmu_v3_init_resources': >>> drivers/acpi/arm64/iort.c:777:21: error: 'ACPI_IORT_SMMU_CAVIUM_CN99XX' undeclared (first use in this function) > if (smmu->model == ACPI_IORT_SMMU_CAVIUM_CN99XX) > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/acpi/arm64/iort.c:777:21: note: each undeclared identifier is reported only once for each function it appears in > > vim +/ACPI_IORT_SMMU_CAVIUM_CN99XX +777 drivers/acpi/arm64/iort.c > > 771 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; > 772 > 773 /* > 774 * Override the size, for Cavium ThunderX2 implementation > 775 * which doesn't support the page 1 SMMU register space. > 776 */ > > 777 if (smmu->model == ACPI_IORT_SMMU_CAVIUM_CN99XX) > 778 size = SZ_64K; > 779 > 780 res[num_res].start = smmu->base_address; > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation As menctioned in cover letter this patchset is based on Robin' s latest patch "Update SMMU models for IORT rev. C" . https://www.spinics.net/lists/arm-kernel/msg580728.html Thank you, Geetha. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 2017-05-12 12:41 [v6 0/3] Cavium ThunderX2 SMMUv3 errata workarounds Geetha sowjanya 2017-05-12 12:41 ` [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model Geetha sowjanya @ 2017-05-12 12:41 ` Geetha sowjanya 2017-05-13 1:04 ` kbuild test robot ` (2 more replies) 2017-05-12 12:41 ` [v6 3/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126 Geetha sowjanya 2 siblings, 3 replies; 11+ messages in thread From: Geetha sowjanya @ 2017-05-12 12:41 UTC (permalink / raw) To: will.deacon, robin.murphy, lorenzo.pieralisi, hanjun.guo, sudeep.holla, iommu Cc: robert.moore, lv.zheng, rjw, jcm, linux-kernel, robert.richter, catalin.marinas, sgoutham, linux-arm-kernel, linux-acpi, geethasowjanya.akula, devel, linu.cherian, Charles.Garcia-Tobin, Geetha Sowjanya From: Linu Cherian <linu.cherian@cavium.com> Cavium ThunderX2 SMMU implementation doesn't support page 1 register space and PAGE0_REGS_ONLY option is enabled as an errata workaround. This option when turned on, replaces all page 1 offsets used for EVTQ_PROD/CONS, PRIQ_PROD/CONS register access with page 0 offsets. SMMU resource size checks are now based on SMMU option PAGE0_REGS_ONLY, since resource size can be either 64k/128k. For this, arm_smmu_device_dt_probe/acpi_probe has been moved before platform_get_resource call, so that SMMU options are set beforehand. Signed-off-by: Linu Cherian <linu.cherian@cavium.com> Signed-off-by: Geetha Sowjanya <geethasowjanya.akula@cavium.com> --- Documentation/arm64/silicon-errata.txt | 1 + .../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 ++ drivers/iommu/arm-smmu-v3.c | 64 +++++++++++++++++----- 3 files changed, 56 insertions(+), 15 deletions(-) diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt index 10f2ddd..4693a32 100644 --- a/Documentation/arm64/silicon-errata.txt +++ b/Documentation/arm64/silicon-errata.txt @@ -62,6 +62,7 @@ stable kernels. | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 | | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | | Cavium | ThunderX SMMUv2 | #27704 | N/A | +| Cavium | ThunderX2 SMMUv3| #74 | N/A | | | | | | | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | | | | | | diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt index be57550..e6da62b 100644 --- a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt +++ b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt @@ -49,6 +49,12 @@ the PCIe specification. - hisilicon,broken-prefetch-cmd : Avoid sending CMD_PREFETCH_* commands to the SMMU. +- cavium-cn99xx,broken-page1-regspace + : Replaces all page 1 offsets used for EVTQ_PROD/CONS, + PRIQ_PROD/CONS register access with page 0 offsets. + Set for Caviun ThunderX2 silicon that doesn't support + SMMU page1 register space. + ** Example smmu@2b400000 { diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index 380969a..c519927c 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -412,6 +412,9 @@ #define MSI_IOVA_BASE 0x8000000 #define MSI_IOVA_LENGTH 0x100000 +#define ARM_SMMU_PAGE0_REGS_ONLY(smmu) \ + ((smmu)->options & ARM_SMMU_OPT_PAGE0_REGS_ONLY) + static bool disable_bypass; module_param_named(disable_bypass, disable_bypass, bool, S_IRUGO); MODULE_PARM_DESC(disable_bypass, @@ -597,6 +600,7 @@ struct arm_smmu_device { u32 features; #define ARM_SMMU_OPT_SKIP_PREFETCH (1 << 0) +#define ARM_SMMU_OPT_PAGE0_REGS_ONLY (1 << 1) u32 options; struct arm_smmu_cmdq cmdq; @@ -663,9 +667,19 @@ struct arm_smmu_option_prop { static struct arm_smmu_option_prop arm_smmu_options[] = { { ARM_SMMU_OPT_SKIP_PREFETCH, "hisilicon,broken-prefetch-cmd" }, + { ARM_SMMU_OPT_PAGE0_REGS_ONLY, "cavium-cn99xx,broken-page1-regspace"}, { 0, NULL}, }; +static inline void __iomem *arm_smmu_page1_fixup(unsigned long offset, + struct arm_smmu_device *smmu) +{ + if (offset > SZ_64K && ARM_SMMU_PAGE0_REGS_ONLY(smmu)) + offset -= SZ_64K; + + return smmu->base + offset; +} + static struct arm_smmu_domain *to_smmu_domain(struct iommu_domain *dom) { return container_of(dom, struct arm_smmu_domain, domain); @@ -1961,8 +1975,8 @@ static int arm_smmu_init_one_queue(struct arm_smmu_device *smmu, return -ENOMEM; } - q->prod_reg = smmu->base + prod_off; - q->cons_reg = smmu->base + cons_off; + q->prod_reg = arm_smmu_page1_fixup(prod_off, smmu); + q->cons_reg = arm_smmu_page1_fixup(cons_off, smmu); q->ent_dwords = dwords; q->q_base = Q_BASE_RWA; @@ -2363,8 +2377,10 @@ static int arm_smmu_device_reset(struct arm_smmu_device *smmu, bool bypass) /* Event queue */ writeq_relaxed(smmu->evtq.q.q_base, smmu->base + ARM_SMMU_EVTQ_BASE); - writel_relaxed(smmu->evtq.q.prod, smmu->base + ARM_SMMU_EVTQ_PROD); - writel_relaxed(smmu->evtq.q.cons, smmu->base + ARM_SMMU_EVTQ_CONS); + writel_relaxed(smmu->evtq.q.prod, + arm_smmu_page1_fixup(ARM_SMMU_EVTQ_PROD, smmu)); + writel_relaxed(smmu->evtq.q.cons, + arm_smmu_page1_fixup(ARM_SMMU_EVTQ_CONS, smmu)); enables |= CR0_EVTQEN; ret = arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0, @@ -2379,9 +2395,9 @@ static int arm_smmu_device_reset(struct arm_smmu_device *smmu, bool bypass) writeq_relaxed(smmu->priq.q.q_base, smmu->base + ARM_SMMU_PRIQ_BASE); writel_relaxed(smmu->priq.q.prod, - smmu->base + ARM_SMMU_PRIQ_PROD); + arm_smmu_page1_fixup(ARM_SMMU_PRIQ_PROD, smmu)); writel_relaxed(smmu->priq.q.cons, - smmu->base + ARM_SMMU_PRIQ_CONS); + arm_smmu_page1_fixup(ARM_SMMU_PRIQ_CONS, smmu)); enables |= CR0_PRIQEN; ret = arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0, @@ -2605,6 +2621,14 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu) } #ifdef CONFIG_ACPI +static void acpi_smmu_get_options(u32 model, struct arm_smmu_device *smmu) +{ + if (model == ACPI_IORT_SMMU_CAVIUM_CN99XX) + smmu->options |= ARM_SMMU_OPT_PAGE0_REGS_ONLY; + + dev_notice(smmu->dev, "option mask 0x%x\n", smmu->options); +} + static int arm_smmu_device_acpi_probe(struct platform_device *pdev, struct arm_smmu_device *smmu) { @@ -2617,6 +2641,8 @@ static int arm_smmu_device_acpi_probe(struct platform_device *pdev, /* Retrieve SMMUv3 specific data */ iort_smmu = (struct acpi_iort_smmu_v3 *)node->node_data; + acpi_smmu_get_options(iort_smmu->model, smmu); + if (iort_smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE) smmu->features |= ARM_SMMU_FEAT_COHERENCY; @@ -2652,6 +2678,14 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev, return ret; } +static unsigned long arm_smmu_resource_size(struct arm_smmu_device *smmu) +{ + if (ARM_SMMU_PAGE0_REGS_ONLY(smmu)) + return SZ_64K; + else + return SZ_128K; +} + static int arm_smmu_device_probe(struct platform_device *pdev) { int irq, ret; @@ -2668,9 +2702,17 @@ static int arm_smmu_device_probe(struct platform_device *pdev) } smmu->dev = dev; + if (dev->of_node) { + ret = arm_smmu_device_dt_probe(pdev, smmu); + } else { + ret = arm_smmu_device_acpi_probe(pdev, smmu); + if (ret == -ENODEV) + return ret; + } + /* Base address */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (resource_size(res) + 1 < SZ_128K) { + if (resource_size(res) + 1 < arm_smmu_resource_size(smmu)) { dev_err(dev, "MMIO region too small (%pr)\n", res); return -EINVAL; } @@ -2697,14 +2739,6 @@ static int arm_smmu_device_probe(struct platform_device *pdev) if (irq > 0) smmu->gerr_irq = irq; - if (dev->of_node) { - ret = arm_smmu_device_dt_probe(pdev, smmu); - } else { - ret = arm_smmu_device_acpi_probe(pdev, smmu); - if (ret == -ENODEV) - return ret; - } - /* Set bypass mode according to firmware probing result */ bypass = !!ret; -- 1.8.3.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 2017-05-12 12:41 ` [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 Geetha sowjanya @ 2017-05-13 1:04 ` kbuild test robot 2017-05-16 0:15 ` Rob Herring 2017-05-17 10:13 ` Shameerali Kolothum Thodi 2 siblings, 0 replies; 11+ messages in thread From: kbuild test robot @ 2017-05-13 1:04 UTC (permalink / raw) To: Geetha sowjanya Cc: kbuild-all, will.deacon, robin.murphy, lorenzo.pieralisi, hanjun.guo, sudeep.holla, iommu, robert.moore, lv.zheng, rjw, jcm, linux-kernel, robert.richter, catalin.marinas, sgoutham, linux-arm-kernel, linux-acpi, geethasowjanya.akula, devel, linu.cherian, Charles.Garcia-Tobin, Geetha Sowjanya [-- Attachment #1: Type: text/plain, Size: 1782 bytes --] Hi Linu, [auto build test ERROR on arm64/for-next/core] [also build test ERROR on v4.11 next-20170512] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Geetha-sowjanya/Cavium-ThunderX2-SMMUv3-errata-workarounds/20170513-065956 base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core config: arm64-defconfig (attached as .config) compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm64 All errors (new ones prefixed by >>): drivers//iommu/arm-smmu-v3.c: In function 'acpi_smmu_get_options': >> drivers//iommu/arm-smmu-v3.c:2605:15: error: 'ACPI_IORT_SMMU_CAVIUM_CN99XX' undeclared (first use in this function) if (model == ACPI_IORT_SMMU_CAVIUM_CN99XX) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers//iommu/arm-smmu-v3.c:2605:15: note: each undeclared identifier is reported only once for each function it appears in vim +/ACPI_IORT_SMMU_CAVIUM_CN99XX +2605 drivers//iommu/arm-smmu-v3.c 2599 return 0; 2600 } 2601 2602 #ifdef CONFIG_ACPI 2603 static void acpi_smmu_get_options(u32 model, struct arm_smmu_device *smmu) 2604 { > 2605 if (model == ACPI_IORT_SMMU_CAVIUM_CN99XX) 2606 smmu->options |= ARM_SMMU_OPT_PAGE0_REGS_ONLY; 2607 2608 dev_notice(smmu->dev, "option mask 0x%x\n", smmu->options); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 34579 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 2017-05-12 12:41 ` [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 Geetha sowjanya 2017-05-13 1:04 ` kbuild test robot @ 2017-05-16 0:15 ` Rob Herring 2017-05-18 13:43 ` Geetha Akula 2017-05-17 10:13 ` Shameerali Kolothum Thodi 2 siblings, 1 reply; 11+ messages in thread From: Rob Herring @ 2017-05-16 0:15 UTC (permalink / raw) To: Geetha sowjanya Cc: Will Deacon, Robin Murphy, Lorenzo Pieralisi, Hanjun Guo, Sudeep Holla, Linux IOMMU, Charles Garcia-Tobin, Geetha Sowjanya, Geetha Akula, jcm, linu.cherian, Rafael J. Wysocki, Robert Moore, linux-kernel, linux-acpi, robert.richter, Lv Zheng, Catalin Marinas, Sunil Goutham, linux-arm-kernel, devel DT changes should go to DT list. On Fri, May 12, 2017 at 7:41 AM, Geetha sowjanya <gakula@caviumnetworks.com> wrote: > From: Linu Cherian <linu.cherian@cavium.com> > > Cavium ThunderX2 SMMU implementation doesn't support page 1 register space > and PAGE0_REGS_ONLY option is enabled as an errata workaround. > This option when turned on, replaces all page 1 offsets used for > EVTQ_PROD/CONS, PRIQ_PROD/CONS register access with page 0 offsets. > > SMMU resource size checks are now based on SMMU option PAGE0_REGS_ONLY, > since resource size can be either 64k/128k. > For this, arm_smmu_device_dt_probe/acpi_probe has been moved before > platform_get_resource call, so that SMMU options are set beforehand. > > Signed-off-by: Linu Cherian <linu.cherian@cavium.com> > Signed-off-by: Geetha Sowjanya <geethasowjanya.akula@cavium.com> > --- > Documentation/arm64/silicon-errata.txt | 1 + > .../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 ++ > drivers/iommu/arm-smmu-v3.c | 64 +++++++++++++++++----- > 3 files changed, 56 insertions(+), 15 deletions(-) > > diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt > index 10f2ddd..4693a32 100644 > --- a/Documentation/arm64/silicon-errata.txt > +++ b/Documentation/arm64/silicon-errata.txt > @@ -62,6 +62,7 @@ stable kernels. > | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 | > | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | > | Cavium | ThunderX SMMUv2 | #27704 | N/A | > +| Cavium | ThunderX2 SMMUv3| #74 | N/A | > | | | | | > | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | > | | | | | > diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt > index be57550..e6da62b 100644 > --- a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt > +++ b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt > @@ -49,6 +49,12 @@ the PCIe specification. > - hisilicon,broken-prefetch-cmd > : Avoid sending CMD_PREFETCH_* commands to the SMMU. > > +- cavium-cn99xx,broken-page1-regspace "cavium-cn99xx" is not a vendor. I'm sure you have an SoC specific compatible string, so use that to enable any errata work-arounds. Rob ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 2017-05-16 0:15 ` Rob Herring @ 2017-05-18 13:43 ` Geetha Akula 0 siblings, 0 replies; 11+ messages in thread From: Geetha Akula @ 2017-05-18 13:43 UTC (permalink / raw) To: Rob Herring Cc: Geetha sowjanya, Will Deacon, Robin Murphy, Lorenzo Pieralisi, Hanjun Guo, Sudeep Holla, Linux IOMMU, Charles Garcia-Tobin, Geetha Sowjanya, jcm, Linu Cherian, Rafael J. Wysocki, Robert Moore, linux-kernel, linux-acpi, Robert Richter, Lv Zheng, Catalin Marinas, Sunil Goutham, linux-arm-kernel, devel On Tue, May 16, 2017 at 5:45 AM, Rob Herring <robh@kernel.org> wrote: > DT changes should go to DT list. > > On Fri, May 12, 2017 at 7:41 AM, Geetha sowjanya > <gakula@caviumnetworks.com> wrote: >> From: Linu Cherian <linu.cherian@cavium.com> >> >> Cavium ThunderX2 SMMU implementation doesn't support page 1 register space >> and PAGE0_REGS_ONLY option is enabled as an errata workaround. >> This option when turned on, replaces all page 1 offsets used for >> EVTQ_PROD/CONS, PRIQ_PROD/CONS register access with page 0 offsets. >> >> SMMU resource size checks are now based on SMMU option PAGE0_REGS_ONLY, >> since resource size can be either 64k/128k. >> For this, arm_smmu_device_dt_probe/acpi_probe has been moved before >> platform_get_resource call, so that SMMU options are set beforehand. >> >> Signed-off-by: Linu Cherian <linu.cherian@cavium.com> >> Signed-off-by: Geetha Sowjanya <geethasowjanya.akula@cavium.com> >> --- >> Documentation/arm64/silicon-errata.txt | 1 + >> .../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 ++ >> drivers/iommu/arm-smmu-v3.c | 64 +++++++++++++++++----- >> 3 files changed, 56 insertions(+), 15 deletions(-) >> >> diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt >> index 10f2ddd..4693a32 100644 >> --- a/Documentation/arm64/silicon-errata.txt >> +++ b/Documentation/arm64/silicon-errata.txt >> @@ -62,6 +62,7 @@ stable kernels. >> | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 | >> | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | >> | Cavium | ThunderX SMMUv2 | #27704 | N/A | >> +| Cavium | ThunderX2 SMMUv3| #74 | N/A | >> | | | | | >> | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | >> | | | | | >> diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt >> index be57550..e6da62b 100644 >> --- a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt >> +++ b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt >> @@ -49,6 +49,12 @@ the PCIe specification. >> - hisilicon,broken-prefetch-cmd >> : Avoid sending CMD_PREFETCH_* commands to the SMMU. >> >> +- cavium-cn99xx,broken-page1-regspace > > "cavium-cn99xx" is not a vendor. > > I'm sure you have an SoC specific compatible string, so use that to > enable any errata work-arounds. > > Rob Hi Rob, The "cavium-cn99xx" indeed vendor specific. "cavium" is the vendor and "cn99xx" is the chip model number. We can't use just the vendor name because, in future their might be other model chips from the same vendor. Thank you, Geetha. ^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 2017-05-12 12:41 ` [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 Geetha sowjanya 2017-05-13 1:04 ` kbuild test robot 2017-05-16 0:15 ` Rob Herring @ 2017-05-17 10:13 ` Shameerali Kolothum Thodi 2017-06-06 9:38 ` Hanjun Guo 2 siblings, 1 reply; 11+ messages in thread From: Shameerali Kolothum Thodi @ 2017-05-17 10:13 UTC (permalink / raw) To: Geetha sowjanya, will.deacon, robin.murphy, lorenzo.pieralisi, hanjun.guo, sudeep.holla, iommu Cc: Charles.Garcia-Tobin, Geetha Sowjanya, geethasowjanya.akula, jcm, linu.cherian, rjw, robert.moore, linux-kernel, linux-acpi, robert.richter, lv.zheng, catalin.marinas, sgoutham, linux-arm-kernel, devel Hi Geetha, > -----Original Message----- > From: linux-arm-kernel [mailto:linux-arm-kernel- > bounces@lists.infradead.org] On Behalf Of Geetha sowjanya > Sent: Friday, May 12, 2017 1:41 PM > To: will.deacon@arm.com; robin.murphy@arm.com; > lorenzo.pieralisi@arm.com; hanjun.guo@linaro.org; sudeep.holla@arm.com; > iommu@lists.linux-foundation.org > Cc: Charles.Garcia-Tobin@arm.com; Geetha Sowjanya; > geethasowjanya.akula@gmail.com; jcm@redhat.com; > linu.cherian@cavium.com; rjw@rjwysocki.net; robert.moore@intel.com; > linux-kernel@vger.kernel.org; linux-acpi@vger.kernel.org; > robert.richter@cavium.com; lv.zheng@intel.com; catalin.marinas@arm.com; > sgoutham@cavium.com; linux-arm-kernel@lists.infradead.org; > devel@acpica.org > Subject: [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium > ThunderX2 erratum #74 > > From: Linu Cherian <linu.cherian@cavium.com> > > Cavium ThunderX2 SMMU implementation doesn't support page 1 register > space and PAGE0_REGS_ONLY option is enabled as an errata workaround. > This option when turned on, replaces all page 1 offsets used for > EVTQ_PROD/CONS, PRIQ_PROD/CONS register access with page 0 offsets. > > SMMU resource size checks are now based on SMMU option > PAGE0_REGS_ONLY, since resource size can be either 64k/128k. > For this, arm_smmu_device_dt_probe/acpi_probe has been moved before > platform_get_resource call, so that SMMU options are set beforehand. > > Signed-off-by: Linu Cherian <linu.cherian@cavium.com> > Signed-off-by: Geetha Sowjanya <geethasowjanya.akula@cavium.com> > --- > Documentation/arm64/silicon-errata.txt | 1 + > .../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 ++ > drivers/iommu/arm-smmu-v3.c | 64 +++++++++++++++++----- > 3 files changed, 56 insertions(+), 15 deletions(-) > > diff --git a/Documentation/arm64/silicon-errata.txt > b/Documentation/arm64/silicon-errata.txt > index 10f2ddd..4693a32 100644 > --- a/Documentation/arm64/silicon-errata.txt > +++ b/Documentation/arm64/silicon-errata.txt > @@ -62,6 +62,7 @@ stable kernels. > | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 > | > | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 > | > | Cavium | ThunderX SMMUv2 | #27704 | N/A | > +| Cavium | ThunderX2 SMMUv3| #74 | N/A | > | | | | | > | Freescale/NXP | LS2080A/LS1043A | A-008585 | > FSL_ERRATUM_A008585 | > | | | | | > diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt > b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt > index be57550..e6da62b 100644 > --- a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt > +++ b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt > @@ -49,6 +49,12 @@ the PCIe specification. > - hisilicon,broken-prefetch-cmd > : Avoid sending CMD_PREFETCH_* commands to the SMMU. > > +- cavium-cn99xx,broken-page1-regspace > + : Replaces all page 1 offsets used for EVTQ_PROD/CONS, > + PRIQ_PROD/CONS register > access with page 0 offsets. > + Set for Caviun ThunderX2 > silicon that doesn't support > + SMMU page1 register space. > + > ** Example > > smmu@2b400000 { > diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c > index 380969a..c519927c 100644 > --- a/drivers/iommu/arm-smmu-v3.c > +++ b/drivers/iommu/arm-smmu-v3.c > @@ -412,6 +412,9 @@ > #define MSI_IOVA_BASE 0x8000000 > #define MSI_IOVA_LENGTH 0x100000 > > +#define ARM_SMMU_PAGE0_REGS_ONLY(smmu) \ > + ((smmu)->options & ARM_SMMU_OPT_PAGE0_REGS_ONLY) > + > static bool disable_bypass; > module_param_named(disable_bypass, disable_bypass, bool, S_IRUGO); > MODULE_PARM_DESC(disable_bypass, @@ -597,6 +600,7 @@ struct > arm_smmu_device { > u32 features; > > #define ARM_SMMU_OPT_SKIP_PREFETCH (1 << 0) > +#define ARM_SMMU_OPT_PAGE0_REGS_ONLY (1 << 1) > u32 options; > > struct arm_smmu_cmdq cmdq; > @@ -663,9 +667,19 @@ struct arm_smmu_option_prop { > > static struct arm_smmu_option_prop arm_smmu_options[] = { > { ARM_SMMU_OPT_SKIP_PREFETCH, "hisilicon,broken-prefetch- > cmd" }, > + { ARM_SMMU_OPT_PAGE0_REGS_ONLY, > +"cavium-cn99xx,broken-page1-regspace"}, > { 0, NULL}, > }; > > +static inline void __iomem *arm_smmu_page1_fixup(unsigned long offset, > + struct arm_smmu_device > *smmu) > +{ > + if (offset > SZ_64K && ARM_SMMU_PAGE0_REGS_ONLY(smmu)) > + offset -= SZ_64K; > + > + return smmu->base + offset; > +} > + > static struct arm_smmu_domain *to_smmu_domain(struct iommu_domain > *dom) { > return container_of(dom, struct arm_smmu_domain, domain); @@ - > 1961,8 +1975,8 @@ static int arm_smmu_init_one_queue(struct > arm_smmu_device *smmu, > return -ENOMEM; > } > > - q->prod_reg = smmu->base + prod_off; > - q->cons_reg = smmu->base + cons_off; > + q->prod_reg = arm_smmu_page1_fixup(prod_off, smmu); > + q->cons_reg = arm_smmu_page1_fixup(cons_off, smmu); > q->ent_dwords = dwords; > > q->q_base = Q_BASE_RWA; > @@ -2363,8 +2377,10 @@ static int arm_smmu_device_reset(struct > arm_smmu_device *smmu, bool bypass) > > /* Event queue */ > writeq_relaxed(smmu->evtq.q.q_base, smmu->base + > ARM_SMMU_EVTQ_BASE); > - writel_relaxed(smmu->evtq.q.prod, smmu->base + > ARM_SMMU_EVTQ_PROD); > - writel_relaxed(smmu->evtq.q.cons, smmu->base + > ARM_SMMU_EVTQ_CONS); > + writel_relaxed(smmu->evtq.q.prod, > + arm_smmu_page1_fixup(ARM_SMMU_EVTQ_PROD, > smmu)); > + writel_relaxed(smmu->evtq.q.cons, > + arm_smmu_page1_fixup(ARM_SMMU_EVTQ_CONS, > smmu)); > > enables |= CR0_EVTQEN; > ret = arm_smmu_write_reg_sync(smmu, enables, > ARM_SMMU_CR0, @@ -2379,9 +2395,9 @@ static int > arm_smmu_device_reset(struct arm_smmu_device *smmu, bool bypass) > writeq_relaxed(smmu->priq.q.q_base, > smmu->base + ARM_SMMU_PRIQ_BASE); > writel_relaxed(smmu->priq.q.prod, > - smmu->base + ARM_SMMU_PRIQ_PROD); > + > arm_smmu_page1_fixup(ARM_SMMU_PRIQ_PROD, smmu)); > writel_relaxed(smmu->priq.q.cons, > - smmu->base + ARM_SMMU_PRIQ_CONS); > + > arm_smmu_page1_fixup(ARM_SMMU_PRIQ_CONS, smmu)); > > enables |= CR0_PRIQEN; > ret = arm_smmu_write_reg_sync(smmu, enables, > ARM_SMMU_CR0, @@ -2605,6 +2621,14 @@ static int > arm_smmu_device_hw_probe(struct arm_smmu_device *smmu) } > > #ifdef CONFIG_ACPI > +static void acpi_smmu_get_options(u32 model, struct arm_smmu_device > +*smmu) { > + if (model == ACPI_IORT_SMMU_CAVIUM_CN99XX) > + smmu->options |= ARM_SMMU_OPT_PAGE0_REGS_ONLY; HiSIlicon hip06/07 boards have a similar existing option to enable, ARM_SMMU_OPT_SKIP_PREFETCH. I have just sent out a similar patch to enable It-" [PATCH] iommu/arm-smmu-v3: Enable ACPI based HiSilicon CMD_PREFETCH quirk(erratum 161010701)". May be it can be merged here, if this series goes through. Not sure about the protocol though. Thanks, Shameer ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 2017-05-17 10:13 ` Shameerali Kolothum Thodi @ 2017-06-06 9:38 ` Hanjun Guo 0 siblings, 0 replies; 11+ messages in thread From: Hanjun Guo @ 2017-06-06 9:38 UTC (permalink / raw) To: Shameerali Kolothum Thodi, Geetha sowjanya, will.deacon, robin.murphy, lorenzo.pieralisi, sudeep.holla, iommu Cc: Charles.Garcia-Tobin, Geetha Sowjanya, geethasowjanya.akula, jcm, linu.cherian, rjw, robert.moore, linux-kernel, linux-acpi, robert.richter, lv.zheng, catalin.marinas, sgoutham, linux-arm-kernel, devel On 2017/5/17 18:13, Shameerali Kolothum Thodi wrote: >> #ifdef CONFIG_ACPI >> +static void acpi_smmu_get_options(u32 model, struct arm_smmu_device >> +*smmu) { >> + if (model == ACPI_IORT_SMMU_CAVIUM_CN99XX) >> + smmu->options |= ARM_SMMU_OPT_PAGE0_REGS_ONLY; > > HiSIlicon hip06/07 boards have a similar existing option to enable, > ARM_SMMU_OPT_SKIP_PREFETCH. I have just sent out a similar patch to enable > It-" [PATCH] iommu/arm-smmu-v3: Enable ACPI based HiSilicon CMD_PREFETCH > quirk(erratum 161010701)". May be it can be merged here, if this series goes through. > Not sure about the protocol though. I think you can add a patch on top of Geetha's, and clarify the dependency in the change log, then it will be easy for maintainer to apply. Thanks Hanjun ^ permalink raw reply [flat|nested] 11+ messages in thread
* [v6 3/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126 2017-05-12 12:41 [v6 0/3] Cavium ThunderX2 SMMUv3 errata workarounds Geetha sowjanya 2017-05-12 12:41 ` [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model Geetha sowjanya 2017-05-12 12:41 ` [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 Geetha sowjanya @ 2017-05-12 12:41 ` Geetha sowjanya 2 siblings, 0 replies; 11+ messages in thread From: Geetha sowjanya @ 2017-05-12 12:41 UTC (permalink / raw) To: will.deacon, robin.murphy, lorenzo.pieralisi, hanjun.guo, sudeep.holla, iommu Cc: robert.moore, lv.zheng, rjw, jcm, linux-kernel, robert.richter, catalin.marinas, sgoutham, linux-arm-kernel, linux-acpi, geethasowjanya.akula, devel, linu.cherian, Charles.Garcia-Tobin, Geetha Sowjanya From: Geetha Sowjanya <geethasowjanya.akula@cavium.com> Cavium ThunderX2 SMMU doesn't support MSI and also doesn't have unique irq lines for gerror, eventq and cmdq-sync. This patch addresses the issue by checking if any interrupt sources are using same irq number, then they are registered as shared irqs. Signed-off-by: Geetha Sowjanya <geethasowjanya.akula@cavium.com> --- Documentation/arm64/silicon-errata.txt | 1 + drivers/iommu/arm-smmu-v3.c | 29 +++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt index 4693a32..42422f6 100644 --- a/Documentation/arm64/silicon-errata.txt +++ b/Documentation/arm64/silicon-errata.txt @@ -63,6 +63,7 @@ stable kernels. | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | | Cavium | ThunderX SMMUv2 | #27704 | N/A | | Cavium | ThunderX2 SMMUv3| #74 | N/A | +| Cavium | ThunderX2 SMMUv3| #126 | N/A | | | | | | | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | | | | | | diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index c519927c..69d8506 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -2232,6 +2232,25 @@ static void arm_smmu_setup_msis(struct arm_smmu_device *smmu) devm_add_action(dev, arm_smmu_free_msis, dev); } +static int get_irq_flags(struct arm_smmu_device *smmu, int irq) +{ + int match_count = 0; + + if (irq == smmu->evtq.q.irq) + match_count++; + if (irq == smmu->cmdq.q.irq) + match_count++; + if (irq == smmu->gerr_irq) + match_count++; + if (irq == smmu->priq.q.irq) + match_count++; + + if (match_count > 1) + return IRQF_SHARED | IRQF_ONESHOT; + + return IRQF_ONESHOT; +} + static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) { int ret, irq; @@ -2252,7 +2271,7 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) if (irq) { ret = devm_request_threaded_irq(smmu->dev, irq, NULL, arm_smmu_evtq_thread, - IRQF_ONESHOT, + get_irq_flags(smmu, irq), "arm-smmu-v3-evtq", smmu); if (ret < 0) dev_warn(smmu->dev, "failed to enable evtq irq\n"); @@ -2261,7 +2280,8 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) irq = smmu->cmdq.q.irq; if (irq) { ret = devm_request_irq(smmu->dev, irq, - arm_smmu_cmdq_sync_handler, 0, + arm_smmu_cmdq_sync_handler, + get_irq_flags(smmu, irq), "arm-smmu-v3-cmdq-sync", smmu); if (ret < 0) dev_warn(smmu->dev, "failed to enable cmdq-sync irq\n"); @@ -2270,7 +2290,8 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) irq = smmu->gerr_irq; if (irq) { ret = devm_request_irq(smmu->dev, irq, arm_smmu_gerror_handler, - 0, "arm-smmu-v3-gerror", smmu); + get_irq_flags(smmu, irq), + "arm-smmu-v3-gerror", smmu); if (ret < 0) dev_warn(smmu->dev, "failed to enable gerror irq\n"); } @@ -2280,7 +2301,7 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) if (irq) { ret = devm_request_threaded_irq(smmu->dev, irq, NULL, arm_smmu_priq_thread, - IRQF_ONESHOT, + get_irq_flags(smmu, irq), "arm-smmu-v3-priq", smmu); if (ret < 0) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-06-06 9:38 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-05-12 12:41 [v6 0/3] Cavium ThunderX2 SMMUv3 errata workarounds Geetha sowjanya 2017-05-12 12:41 ` [v6 1/3] ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model Geetha sowjanya 2017-05-13 0:33 ` kbuild test robot 2017-05-13 3:18 ` Geetha Akula 2017-05-12 12:41 ` [v6 2/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74 Geetha sowjanya 2017-05-13 1:04 ` kbuild test robot 2017-05-16 0:15 ` Rob Herring 2017-05-18 13:43 ` Geetha Akula 2017-05-17 10:13 ` Shameerali Kolothum Thodi 2017-06-06 9:38 ` Hanjun Guo 2017-05-12 12:41 ` [v6 3/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126 Geetha sowjanya
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®