From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> To: will.deacon@arm.com Cc: lorenzo.pieralisi@arm.com, zhongmiao@hisilicon.com, okaya@kernel.org, joro@8bytes.org, rjw@rjwysocki.net, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, hanjun.guo@linaro.org, sudeep.holla@arm.com, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, lenb@kernel.org Subject: [PATCH 4/4] iommu/arm-smmu-v3: Disable tagged pointers Date: Wed, 20 Mar 2019 17:36:34 +0000 [thread overview] Message-ID: <20190320173634.21895-5-jean-philippe.brucker@arm.com> (raw) In-Reply-To: <20190320173634.21895-1-jean-philippe.brucker@arm.com> The ARM architecture has a "Top Byte Ignore" (TBI) option that makes the MMU mask out bits [63:56] of an address, allowing a userspace application to store data in its pointers. This option is incompatible with PCI ATS. If TBI is enabled in the SMMU and userspace triggers DMA transactions on tagged pointers, the endpoint might create ATC entries for addresses that include a tag. Software would then have to send ATC invalidation packets for each 255 possible alias of an address, or just wipe the whole address space. This is not a viable option, so disable TBI. The impact of this change is unclear, since there are very few users of tagged pointers, much less SVA. But the requirement introduced by this patch doesn't seem excessive: a userspace application using both tagged pointers and SVA should now sanitize addresses (clear the tag) before using them for device DMA. Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> --- drivers/iommu/arm-smmu-v3.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index c605d6f1b2df..69afffdaf907 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -1076,7 +1076,6 @@ static u64 arm_smmu_cpu_tcr_to_cd(u64 tcr) val |= ARM_SMMU_TCR2CD(tcr, EPD0); val |= ARM_SMMU_TCR2CD(tcr, EPD1); val |= ARM_SMMU_TCR2CD(tcr, IPS); - val |= ARM_SMMU_TCR2CD(tcr, TBI0); return val; } -- 2.21.0
WARNING: multiple messages have this Message-ID (diff)
From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> To: will.deacon@arm.com Cc: lorenzo.pieralisi@arm.com, zhongmiao@hisilicon.com, okaya@kernel.org, joro@8bytes.org, rjw@rjwysocki.net, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, hanjun.guo@linaro.org, sudeep.holla@arm.com, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, lenb@kernel.org Subject: [PATCH 4/4] iommu/arm-smmu-v3: Disable tagged pointers Date: Wed, 20 Mar 2019 17:36:34 +0000 [thread overview] Message-ID: <20190320173634.21895-5-jean-philippe.brucker@arm.com> (raw) In-Reply-To: <20190320173634.21895-1-jean-philippe.brucker@arm.com> The ARM architecture has a "Top Byte Ignore" (TBI) option that makes the MMU mask out bits [63:56] of an address, allowing a userspace application to store data in its pointers. This option is incompatible with PCI ATS. If TBI is enabled in the SMMU and userspace triggers DMA transactions on tagged pointers, the endpoint might create ATC entries for addresses that include a tag. Software would then have to send ATC invalidation packets for each 255 possible alias of an address, or just wipe the whole address space. This is not a viable option, so disable TBI. The impact of this change is unclear, since there are very few users of tagged pointers, much less SVA. But the requirement introduced by this patch doesn't seem excessive: a userspace application using both tagged pointers and SVA should now sanitize addresses (clear the tag) before using them for device DMA. Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> --- drivers/iommu/arm-smmu-v3.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index c605d6f1b2df..69afffdaf907 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -1076,7 +1076,6 @@ static u64 arm_smmu_cpu_tcr_to_cd(u64 tcr) val |= ARM_SMMU_TCR2CD(tcr, EPD0); val |= ARM_SMMU_TCR2CD(tcr, EPD1); val |= ARM_SMMU_TCR2CD(tcr, IPS); - val |= ARM_SMMU_TCR2CD(tcr, TBI0); return val; } -- 2.21.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-03-20 17:36 UTC|newest] Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-03-20 17:36 [PATCH 0/4] Add PCI ATS support to Arm SMMUv3 Jean-Philippe Brucker 2019-03-20 17:36 ` Jean-Philippe Brucker 2019-03-20 17:36 ` [PATCH 1/4] ACPI/IORT: Check ATS capability in root complex nodes Jean-Philippe Brucker 2019-03-20 17:36 ` Jean-Philippe Brucker [not found] ` <20190320173634.21895-2-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org> 2019-03-21 16:00 ` Sinan Kaya 2019-03-21 16:00 ` Sinan Kaya [not found] ` <fc53b2f7-53c4-c32d-8588-6f8d98ef5e7f-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2019-03-25 15:02 ` Jean-Philippe Brucker 2019-03-25 15:02 ` Jean-Philippe Brucker 2019-03-20 17:36 ` [PATCH 2/4] iommu/arm-smmu-v3: Link domains and devices Jean-Philippe Brucker 2019-03-20 17:36 ` Jean-Philippe Brucker [not found] ` <20190320173634.21895-3-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org> 2019-04-04 14:39 ` Will Deacon 2019-04-04 14:39 ` Will Deacon 2019-04-05 16:35 ` Jean-Philippe Brucker 2019-04-05 16:35 ` Jean-Philippe Brucker 2019-04-05 16:35 ` Jean-Philippe Brucker 2019-04-05 16:35 ` Jean-Philippe Brucker 2019-04-05 16:39 ` Will Deacon 2019-04-05 16:39 ` Will Deacon 2019-04-05 16:39 ` Will Deacon 2019-04-05 16:39 ` Will Deacon 2019-04-05 18:07 ` Jean-Philippe Brucker 2019-04-05 18:07 ` Jean-Philippe Brucker 2019-04-05 18:07 ` Jean-Philippe Brucker 2019-04-05 18:07 ` Jean-Philippe Brucker 2019-03-20 17:36 ` [PATCH 3/4] iommu/arm-smmu-v3: Add support for PCI ATS Jean-Philippe Brucker 2019-03-20 17:36 ` Jean-Philippe Brucker [not found] ` <20190320173634.21895-4-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org> 2019-03-21 15:52 ` Sinan Kaya 2019-03-21 15:52 ` Sinan Kaya [not found] ` <6a4fb991-b8cd-d64d-25bd-dbbefcf69fa5-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2019-03-25 15:01 ` Jean-Philippe Brucker 2019-03-25 15:01 ` Jean-Philippe Brucker 2019-03-20 17:36 ` Jean-Philippe Brucker [this message] 2019-03-20 17:36 ` [PATCH 4/4] iommu/arm-smmu-v3: Disable tagged pointers Jean-Philippe Brucker
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=20190320173634.21895-5-jean-philippe.brucker@arm.com \ --to=jean-philippe.brucker@arm.com \ --cc=hanjun.guo@linaro.org \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=lenb@kernel.org \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=okaya@kernel.org \ --cc=rjw@rjwysocki.net \ --cc=robin.murphy@arm.com \ --cc=sudeep.holla@arm.com \ --cc=will.deacon@arm.com \ --cc=zhongmiao@hisilicon.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: linkBe 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.