linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] iommu/arm-smmu: don't touch the secure STLBIALL register
Date: Wed, 7 Jan 2015 18:04:20 +0000	[thread overview]
Message-ID: <20150107180420.GR7485@arm.com> (raw)
In-Reply-To: <vnkw4ms2cwb5.fsf@mitchelh-linux.qualcomm.com>

On Wed, Jan 07, 2015 at 05:52:46PM +0000, Mitchel Humpherys wrote:
> On Wed, Jan 07 2015 at 02:13:00 AM, Will Deacon <will.deacon@arm.com> wrote:
> > On Tue, Jan 06, 2015 at 11:30:49PM +0000, Mitchel Humpherys wrote:
> >> On Tue, Jan 06 2015 at 02:35:28 PM, Rob Herring <robherring2@gmail.com> wrote:
> >> > On Tue, Jan 6, 2015 at 2:16 PM, Mitchel Humpherys
> >> > <mitchelh@codeaurora.org> wrote:
> >> >> On Tue, Jan 06 2015 at 06:15:07 AM, Will Deacon <will.deacon@arm.com> wrote:
> >> >>>>      /* Invalidate the TLB, just in case */
> >> >>>> -    writel_relaxed(0, gr0_base + ARM_SMMU_GR0_STLBIALL);
> >> >>>>      writel_relaxed(0, gr0_base + ARM_SMMU_GR0_TLBIALLH);
> >> >>>>      writel_relaxed(0, gr0_base + ARM_SMMU_GR0_TLBIALLNSNH);
> >> >>>
> >> >>> I was slightly worried that this would break the Calxeda implementation
> >> >>> with ARM_SMMU_OPT_SECURE_CFG_ACCESS, but actually these registers aren't
> >> >>> even aliased there so I think there's a bigger bug for them.
> >> >>>
> >> >>> Anyway, given that their hardware has gone the way of the dodo, I'll take
> >> >>> the patch as-is unless you have any further comments?
> >> >>>
> >> >>> Will
> >> >>
> >> >> Yeah I agree that this shouldn't affect the (now defunct) Calxeda
> >> >> implementation.  I've tested this on some hardware here and we crash
> >> >> when we touch that register since it's secure-only (not banked, as you
> >> >> mentioned).
> >> >
> >> > It's not quite dead:
> >> >
> >> > http://www.eweek.com/servers/calxedas-arm-based-server-chips-re-emerge-with-new-company.html
> >> >
> >> > But AFAIK, production systems don't enable the SMMU, but someone could
> >> > still want to at some point. A note in the commit log here would be
> >> > nice so it gets recorded.
> >> 
> >> Actually, as Will mentioned this shouldn't affect Calxeda since this
> >> isn't a banked register.  I think the confusion is from the `S' prefix
> >> in the spec.  The /s/ (lower-case, italic) prefix means that there are
> >> secure and non-secure versions of the register, while the S (upper-case,
> >> non-italic) prefix means "this is a secure register" (which may or may
> >> not have a banked non-secure counterpart).  This particular register is
> >> an S-only register (there's no non-secure counterpart) so the Calxeda
> >> workaround isn't relevant here, AFAICT.
> >
> > Right, but I think the problem is that we go and write zero to
> > ARM_SMMU_GR0_TLBIALLH and ARM_SMMU_GR0_TLBIALLNSNH at what *would be* their
> > non-secure aliases for the secure side (i.e. + 0x400).
> 
> This sounds like a separate problem.  Since these GR0 registers aren't
> banked the calxeda workaround doesn't work...  SMMU_STLBIALL, on the
> other hand, is not only not banked but it's also "secure only" so I
> don't think we have any business touching it ever.
> 
> > If would be better to check for the ARM_SMMU_OPT_SECURE_CFG_ACCESS feature
> > and, if it's set then zero ARM_SMMU_GR0_STLBIALL at the correct address
> > otherwise do the ARM_SMMU_GR0_TLBIALLH and ARM_SMMU_GR0_TLBIALLNSNH.
> 
> I'm confused.  The problem I'm addressing here is that we're touching a
> register that's marked as "secure only", which causes our system to
> crash.  Why would we ever want to touch a secure only register, calxeda
> workaround or not?

Because I think the way the SMMU is wired for Calxeda is that the CPU can
only see the secure side of the register interface, so the only way to nuke
the whole TLB would be to use ARM_SMMU_GR0_STLBIALL.

Will

  reply	other threads:[~2015-01-07 18:04 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-23 17:39 [PATCH] iommu/arm-smmu: don't touch the secure STLBIALL register Mitchel Humpherys
2015-01-06 14:15 ` Will Deacon
2015-01-06 20:16   ` Mitchel Humpherys
2015-01-06 22:35     ` Rob Herring
2015-01-06 23:30       ` Mitchel Humpherys
2015-01-07 10:13         ` Will Deacon
2015-01-07 17:52           ` Mitchel Humpherys
2015-01-07 18:04             ` Will Deacon [this message]
2015-01-07 18:35               ` Mitchel Humpherys
2015-01-07 18:53                 ` Will Deacon
2015-01-08 20:58                   ` Rob Herring

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=20150107180420.GR7485@arm.com \
    --to=will.deacon@arm.com \
    --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).