linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: sgoel@codeaurora.org (Goel, Sameer)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] iommu/arm-smmu-v3: Set GBPA to abort all transactions
Date: Wed, 11 Apr 2018 09:58:05 -0600	[thread overview]
Message-ID: <3772fb2d-01b7-4820-6d13-a0263654dabc@codeaurora.org> (raw)
In-Reply-To: <3350f0eb84c8c621cf43aa06ed117cfb@www.loen.fr>



On 3/28/2018 9:00 AM, Marc Zyngier wrote:
> On 2018-03-28 15:39, Timur Tabi wrote:
>> From: Sameer Goel <sgoel@codeaurora.org>
>>
>> Set SMMU_GBPA to abort all incoming translations during the SMMU reset
>> when SMMUEN==0.
>>
>> This prevents a race condition where a stray DMA from the crashed primary
>> kernel can try to access an IOVA address as an invalid PA when SMMU is
>> disabled during reset in the crash kernel.
>>
>> Signed-off-by: Sameer Goel <sgoel@codeaurora.org>
>> ---
>> ?drivers/iommu/arm-smmu-v3.c | 12 ++++++++++++
>> ?1 file changed, 12 insertions(+)
>>
>> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
>> index 3f2f1fc68b52..c04a89310c59 100644
>> --- a/drivers/iommu/arm-smmu-v3.c
>> +++ b/drivers/iommu/arm-smmu-v3.c
>> @@ -2458,6 +2458,18 @@ static int arm_smmu_device_reset(struct
>> arm_smmu_device *smmu, bool bypass)
>> ???? if (reg & CR0_SMMUEN)
>> ???????? dev_warn(smmu->dev, "SMMU currently enabled! Resetting...\n");
>>
>> +??? /*
>> +???? * Abort all incoming translations. This can happen in a kdump case
>> +???? * where SMMU is initialized when a prior DMA is pending. Just
>> +???? * disabling the SMMU in this case might result in writes to invalid
>> +???? * PAs.
>> +???? */
>> +??? ret = arm_smmu_update_gbpa(smmu, 1, GBPA_ABORT);
>> +??? if (ret) {
>> +??????? dev_err(smmu->dev, "GBPA not responding to update\n");
>> +??????? return ret;
>> +??? }
>> +
>> ???? ret = arm_smmu_device_disable(smmu);
>> ???? if (ret)
>> ???????? return ret;
> 
> A tangential question: can we reliably detect that the SMMU already has valid mappings, which would indicate that we're in a pretty bad shape already by the time we set that bit? For all we know, memory could have been corrupted long before we hit this point, and this patch barely narrows the window of opportunity.
:) Yes that is correct. This only covers the kdump scenario. Trying to get some reliability when booting up the crash kernel. The system is already in a bad state. I don't think that this will happen in a normal scenario. But please point me to the GICv3 change and I'll have a look.
Thanks,
Sameer 
> 
> At the very least, we should emit a warning and taint the kernel (we've recently added such measures to the GICv3 driver).
> 
> Thanks,
> 
> ??????? M.

-- 
 Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

  reply	other threads:[~2018-04-11 15:58 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-28 14:39 [PATCH] iommu/arm-smmu-v3: Set GBPA to abort all transactions Timur Tabi
2018-03-28 15:00 ` Marc Zyngier
2018-04-11 15:58   ` Goel, Sameer [this message]
2018-04-11 16:54     ` Marc Zyngier
2018-04-12 10:17       ` Robin Murphy
2018-04-12 10:55         ` Will Deacon
2018-04-12 11:56         ` Marc Zyngier
2018-05-11 16:15           ` Goel, Sameer
2018-05-11 20:52           ` Nate Watterson
2018-04-05 11:26 ` Will Deacon
2018-04-11 15:54   ` Goel, Sameer

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=3772fb2d-01b7-4820-6d13-a0263654dabc@codeaurora.org \
    --to=sgoel@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).