All of lore.kernel.org
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
To: Russell King - ARM Linux <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>
Cc: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
	ARM kernel mailing list
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Subject: Re: Multi-platform, and secure-only ARM errata workarounds
Date: Wed, 27 Feb 2013 11:37:08 +0530	[thread overview]
Message-ID: <512DA28C.1080909@ti.com> (raw)
In-Reply-To: <20130226184942.GV17833-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>

On Wednesday 27 February 2013 12:19 AM, Russell King - ARM Linux wrote:
> On Tue, Feb 26, 2013 at 11:30:08AM -0700, Stephen Warren wrote:
>> On 02/26/2013 11:11 AM, Russell King - ARM Linux wrote:
>>> On Tue, Feb 26, 2013 at 11:01:30AM -0700, Stephen Warren wrote:
>>>> The conditional in that statement makes me wonder which of the following
>>>> operations will fault in non-secure mode:
>>>>
>>>> 1) Reading from the diagnostic register.
>>>
>>> Won't fault.
>>>
>>>> 2) Writing to the diagnostic register, of a value the same as what's
>>>> already there.
>>>
>>> Will fault.
>>>
>>>> 3) Writing to the diagnostic register, of a value different than what's
>>>> already there.
>>>
>>> Will fault.
>>>
>>>> Would the following not fault in both secure and non-secure mode:
>>>>
>>>> read diagnostic register
>>>> if desired bit already set:
>>>>      b 1f
>>>> set desired bit
>>>> write value back to diagnostic register
>>>> 1:
>>>
>>> That is exactly what we do
>>
>> Well, I asked because for the 3 WARs in question at least, that isn't
>> what the code does. For example, from proc-v7.s:
>>
>> #ifdef CONFIG_ARM_ERRATA_742230
>> 	cmp	r6, #0x22		@ only present up to r2p2
>> 	mrcle	p15, 0, r10, c15, c0, 1	@ read diagnostic register
>> 	orrle	r10, r10, #1 << 4	@ set bit #4
>> 	mcrle	p15, 0, r10, c15, c0, 1	@ write diagnostic register
>> #endif
>>
>> (unless that orrle affects the flags and hence skips the mcrle, but I
>> don't think so.)
>
> Hmm.  I've not really been taking much notice of how these work-arounds
> all work - maybe it's safe to write this diagnostic register from
> non-secure mode then?
>
> I have noticed this kind of fishy thing with OMAP4430 running in non-secure
> mode - some registers I thought would cause an exception don't.  No idea
> why not...
>
They do fault on OMAP. We discussed the issue in the past [1] [2].
The only way we could get around is to disable those WA flags in config.
I was told to move such requirements to boot-loaders then

Regards,
Santosh

[1] https://patchwork.kernel.org/patch/1743211/
[2] https://lkml.org/lkml/2012/12/10/321

WARNING: multiple messages have this Message-ID (diff)
From: santosh.shilimkar@ti.com (Santosh Shilimkar)
To: linux-arm-kernel@lists.infradead.org
Subject: Multi-platform, and secure-only ARM errata workarounds
Date: Wed, 27 Feb 2013 11:37:08 +0530	[thread overview]
Message-ID: <512DA28C.1080909@ti.com> (raw)
In-Reply-To: <20130226184942.GV17833@n2100.arm.linux.org.uk>

On Wednesday 27 February 2013 12:19 AM, Russell King - ARM Linux wrote:
> On Tue, Feb 26, 2013 at 11:30:08AM -0700, Stephen Warren wrote:
>> On 02/26/2013 11:11 AM, Russell King - ARM Linux wrote:
>>> On Tue, Feb 26, 2013 at 11:01:30AM -0700, Stephen Warren wrote:
>>>> The conditional in that statement makes me wonder which of the following
>>>> operations will fault in non-secure mode:
>>>>
>>>> 1) Reading from the diagnostic register.
>>>
>>> Won't fault.
>>>
>>>> 2) Writing to the diagnostic register, of a value the same as what's
>>>> already there.
>>>
>>> Will fault.
>>>
>>>> 3) Writing to the diagnostic register, of a value different than what's
>>>> already there.
>>>
>>> Will fault.
>>>
>>>> Would the following not fault in both secure and non-secure mode:
>>>>
>>>> read diagnostic register
>>>> if desired bit already set:
>>>>      b 1f
>>>> set desired bit
>>>> write value back to diagnostic register
>>>> 1:
>>>
>>> That is exactly what we do
>>
>> Well, I asked because for the 3 WARs in question at least, that isn't
>> what the code does. For example, from proc-v7.s:
>>
>> #ifdef CONFIG_ARM_ERRATA_742230
>> 	cmp	r6, #0x22		@ only present up to r2p2
>> 	mrcle	p15, 0, r10, c15, c0, 1	@ read diagnostic register
>> 	orrle	r10, r10, #1 << 4	@ set bit #4
>> 	mcrle	p15, 0, r10, c15, c0, 1	@ write diagnostic register
>> #endif
>>
>> (unless that orrle affects the flags and hence skips the mcrle, but I
>> don't think so.)
>
> Hmm.  I've not really been taking much notice of how these work-arounds
> all work - maybe it's safe to write this diagnostic register from
> non-secure mode then?
>
> I have noticed this kind of fishy thing with OMAP4430 running in non-secure
> mode - some registers I thought would cause an exception don't.  No idea
> why not...
>
They do fault on OMAP. We discussed the issue in the past [1] [2].
The only way we could get around is to disable those WA flags in config.
I was told to move such requirements to boot-loaders then

Regards,
Santosh

[1] https://patchwork.kernel.org/patch/1743211/
[2] https://lkml.org/lkml/2012/12/10/321

  parent reply	other threads:[~2013-02-27  6:07 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-25 23:47 Multi-platform, and secure-only ARM errata workarounds Stephen Warren
2013-02-25 23:47 ` Stephen Warren
2013-02-26  9:36 ` Marc Dietrich
2013-02-26  9:36   ` Marc Dietrich
     [not found]   ` <4928288.ie8EUukfVD-D3pzGp0ZKuDWZbiwp4sFPyrtisivX6KghOMvlBiLbJSELgA04lAiVw@public.gmane.org>
2013-02-26 16:39     ` Stephen Warren
2013-02-26 16:39       ` Stephen Warren
     [not found]       ` <512CE533.6020005-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-26 22:31         ` Nicolas Pitre
2013-02-26 22:31           ` Nicolas Pitre
2013-02-27  9:03         ` Marc Dietrich
2013-02-27  9:03           ` Marc Dietrich
     [not found]           ` <22709540.96uJddbx1U-D3pzGp0ZKuDWZbiwp4sFPyrtisivX6KghOMvlBiLbJSELgA04lAiVw@public.gmane.org>
2013-02-27 14:00             ` Rob Herring
2013-02-27 14:00               ` Rob Herring
2013-02-27 17:42             ` Stephen Warren
2013-02-27 17:42               ` Stephen Warren
2013-02-28 13:58               ` Marc Dietrich
2013-02-28 13:58                 ` Marc Dietrich
     [not found] ` <512BF81A.3080700-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-26 10:23   ` Arnd Bergmann
2013-02-26 10:23     ` Arnd Bergmann
     [not found]     ` <201302261023.26939.arnd-r2nGTMty4D4@public.gmane.org>
2013-02-26 10:31       ` Catalin Marinas
2013-02-26 10:31         ` Catalin Marinas
     [not found]         ` <20130226103114.GA16875-5wv7dgnIgG8@public.gmane.org>
2013-02-26 10:35           ` Catalin Marinas
2013-02-26 10:35             ` Catalin Marinas
     [not found]             ` <20130226103503.GB16875-5wv7dgnIgG8@public.gmane.org>
2013-02-26 10:48               ` Arnd Bergmann
2013-02-26 10:48                 ` Arnd Bergmann
     [not found]                 ` <201302261048.06644.arnd-r2nGTMty4D4@public.gmane.org>
2013-02-26 11:11                   ` Catalin Marinas
2013-02-26 11:11                     ` Catalin Marinas
2013-02-26 11:35       ` Russell King - ARM Linux
2013-02-26 11:35         ` Russell King - ARM Linux
     [not found]         ` <20130226113538.GS17833-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-02-26 14:07           ` Rob Herring
2013-02-26 14:07             ` Rob Herring
2013-02-26 18:01           ` Stephen Warren
2013-02-26 18:01             ` Stephen Warren
     [not found]             ` <512CF87A.4090404-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-26 18:11               ` Russell King - ARM Linux
2013-02-26 18:11                 ` Russell King - ARM Linux
     [not found]                 ` <20130226181114.GU17833-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-02-26 18:30                   ` Stephen Warren
2013-02-26 18:30                     ` Stephen Warren
     [not found]                     ` <512CFF30.9080300-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-26 18:49                       ` Russell King - ARM Linux
2013-02-26 18:49                         ` Russell King - ARM Linux
     [not found]                         ` <20130226184942.GV17833-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-02-27  6:07                           ` Santosh Shilimkar [this message]
2013-02-27  6:07                             ` Santosh Shilimkar
2013-03-01 17:37                   ` Stephen Warren
2013-03-01 17:37                     ` Stephen Warren
     [not found]                     ` <5130E757.6090500-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-03-01 18:05                       ` Russell King - ARM Linux
2013-03-01 18:05                         ` Russell King - ARM Linux
2013-03-04  6:34                       ` Peter De Schrijver
2013-03-04  6:34                         ` Peter De Schrijver
     [not found]                         ` <20130304063436.GB27241-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2013-03-04  9:16                           ` Peter De Schrijver
2013-03-04  9:16                             ` Peter De Schrijver
     [not found]                             ` <20130304091600.GC27241-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2013-03-04 17:08                               ` Stephen Warren
2013-03-04 17:08                                 ` Stephen Warren
     [not found]                                 ` <5134D50B.8060001-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-03-05  7:40                                   ` Peter De Schrijver
2013-03-05  7:40                                     ` Peter De Schrijver
     [not found]                                     ` <20130305074047.GH27241-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2013-03-05 17:00                                       ` Stephen Warren
2013-03-05 17:00                                         ` Stephen Warren
     [not found]                                         ` <513624AA.4090207-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-03-06  8:14                                           ` Peter De Schrijver
2013-03-06  8:14                                             ` Peter De Schrijver
     [not found]                                             ` <20130306081401.GN27241-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2013-03-06 16:18                                               ` Stephen Warren
2013-03-06 16:18                                                 ` Stephen Warren
2013-03-10 17:25                                           ` Santosh Shilimkar
2013-03-10 17:25                                             ` Santosh Shilimkar
     [not found]                                             ` <513CC21E.7080901-l0cyMroinI0@public.gmane.org>
2013-03-10 18:47                                               ` Olof Johansson
2013-03-10 18:47                                                 ` Olof Johansson
     [not found]                                                 ` <CAOesGMgYL19+u-bLp080iasct5xtC=qfNCoz=SY7bbVgF=7JQg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-03-11 16:59                                                   ` Stephen Warren
2013-03-11 16:59                                                     ` Stephen Warren
2013-03-11 18:54                                                   ` Jason Gunthorpe
2013-03-11 18:54                                                     ` Jason Gunthorpe

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=512DA28C.1080909@ti.com \
    --to=santosh.shilimkar-l0cymroini0@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
    --cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
    --cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.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 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.