From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] clocksource: arch_timer: Allow the device tree to specify the physical timer
Date: Fri, 12 Sep 2014 11:20:57 +0100 [thread overview]
Message-ID: <5412C909.50004@arm.com> (raw)
In-Reply-To: <CAD=FV=XZVs-Xr72Rah1YwnTqB6Zj=ZwkvsEytctO9sp5dL=eCA@mail.gmail.com>
On 12/09/14 01:01, Doug Anderson wrote:
> Stephen,
>
> On Thu, Sep 11, 2014 at 4:56 PM, Stephen Boyd <sboyd@codeaurora.org> wrote:
>> On 09/11/14 10:43, Marc Zyngier wrote:
>>>>> If I was suicidal, I'd suggest you could pass a parameter to the command
>>>>> line, interpreted by the timer code... But I since I'm not, let's
>>>>> pretend I haven't said anything... ;-)
>>>> I did this in the past (again, see Sonny's thread), but didn't
>>>> consider myself knowledgeable to know if that was truly a good test:
>>>>
>>>> asm volatile("mrc p15, 0, %0, c1, c1, 0" : "=r" (val));
>>>> pr_info("DOUG: val is %#010x", val);
>>>> val |= (1 << 2);
>>>> asm volatile("mcr p15, 0, %0, c1, c1, 0" : : "r" (val));
>>>> val = 0xffffffff;
>>>> asm volatile("mrc p15, 0, %0, c1, c1, 0" : "=r" (val));
>>>> pr_info("DOUG: val is %#010x", val);
>>>>
>>>> The idea being that if you can make modifications to the SCR register
>>>> (and see your changes take effect) then you must be in secure mode.
>>>> In my case the first printout was 0x0 and the second was 0x4.
>>> The main issue is when you're *not* in secure mode. It is likely that
>>> this will explode badly. This is why I suggested something that is set
>>> by the bootloader (after all. it knows which mode it is booted in), and
>>> that the timer driver can use when the CPU comes up.
>>
>> Where does this platform jump to when a CPU comes up? Is it
>> rockchip_secondary_startup()? I wonder if that path could have this
>> little bit of assembly to poke the cntvoff in monitor mode and then jump
>> to secondary_startup()? Before we boot any secondary CPUs we could also
>> read the cntvoff for CPU0 in the platform specific layer (where we know
>> we're running in secure mode) and then use that value as the "reset"
>> value for the secondaries. Or does this platform boot up in secure mode
>> some times and non-secure mode other times?
>
> I guess it would depend a whole lot on the bootloader, wouldn't it?
Yes, hence my suggestion of hooking such a thing from the timer code,
where we could have a clue what to do (and what not to).
> With our current "get out of the way" bootloader, Linux always sees
> "Secure SVC". ...but if someone decided to put a new bootloader on
> the system that wanted to do something different (implement security
> and boot the kernel in nonsecure HYP or implement a hypervisor and
> boot the kernel in nonsecure SVC) then everything would be different.
>
> If someone were to write a bootloader like that (or perhaps if we're
> running in a VM?) then I'd imagine that the whole world would be
> different. Somehow this secure bootloader and/or hypervisor would
> _have_ to be involved in processor bringup and suspend/resume. Since
> I've never looked at code implementing either of these I'm just making
> assumptions, though.
Exactly. That's why we're so hell bent on PSCI, because it solves all
these issues (and that's why I've added some rudimentary support for it
in u-boot).
Thanks,
M.
--
Jazz is not dead. It just smells funny...
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: Doug Anderson <dianders@chromium.org>
Cc: Stephen Boyd <sboyd@codeaurora.org>,
Will Deacon <Will.Deacon@arm.com>,
"olof@lixom.net" <olof@lixom.net>,
Sonny Rao <sonnyrao@chromium.org>,
Catalin Marinas <Catalin.Marinas@arm.com>,
Mark Rutland <Mark.Rutland@arm.com>,
Sudeep Holla <Sudeep.Holla@arm.com>,
Christopher Covington <cov@codeaurora.org>,
Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Nathan Lynch <Nathan_Lynch@mentor.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"robh+dt@kernel.org" <robh+dt@kernel.org>,
Pawel Moll <Pawel.Moll@arm.com>,
"ijc+devicetree@hellion.org.uk" <ijc+devicetree@hellion.org.uk>,
"galak@codeaurora.org" <galak@codeaurora.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] clocksource: arch_timer: Allow the device tree to specify the physical timer
Date: Fri, 12 Sep 2014 11:20:57 +0100 [thread overview]
Message-ID: <5412C909.50004@arm.com> (raw)
In-Reply-To: <CAD=FV=XZVs-Xr72Rah1YwnTqB6Zj=ZwkvsEytctO9sp5dL=eCA@mail.gmail.com>
On 12/09/14 01:01, Doug Anderson wrote:
> Stephen,
>
> On Thu, Sep 11, 2014 at 4:56 PM, Stephen Boyd <sboyd@codeaurora.org> wrote:
>> On 09/11/14 10:43, Marc Zyngier wrote:
>>>>> If I was suicidal, I'd suggest you could pass a parameter to the command
>>>>> line, interpreted by the timer code... But I since I'm not, let's
>>>>> pretend I haven't said anything... ;-)
>>>> I did this in the past (again, see Sonny's thread), but didn't
>>>> consider myself knowledgeable to know if that was truly a good test:
>>>>
>>>> asm volatile("mrc p15, 0, %0, c1, c1, 0" : "=r" (val));
>>>> pr_info("DOUG: val is %#010x", val);
>>>> val |= (1 << 2);
>>>> asm volatile("mcr p15, 0, %0, c1, c1, 0" : : "r" (val));
>>>> val = 0xffffffff;
>>>> asm volatile("mrc p15, 0, %0, c1, c1, 0" : "=r" (val));
>>>> pr_info("DOUG: val is %#010x", val);
>>>>
>>>> The idea being that if you can make modifications to the SCR register
>>>> (and see your changes take effect) then you must be in secure mode.
>>>> In my case the first printout was 0x0 and the second was 0x4.
>>> The main issue is when you're *not* in secure mode. It is likely that
>>> this will explode badly. This is why I suggested something that is set
>>> by the bootloader (after all. it knows which mode it is booted in), and
>>> that the timer driver can use when the CPU comes up.
>>
>> Where does this platform jump to when a CPU comes up? Is it
>> rockchip_secondary_startup()? I wonder if that path could have this
>> little bit of assembly to poke the cntvoff in monitor mode and then jump
>> to secondary_startup()? Before we boot any secondary CPUs we could also
>> read the cntvoff for CPU0 in the platform specific layer (where we know
>> we're running in secure mode) and then use that value as the "reset"
>> value for the secondaries. Or does this platform boot up in secure mode
>> some times and non-secure mode other times?
>
> I guess it would depend a whole lot on the bootloader, wouldn't it?
Yes, hence my suggestion of hooking such a thing from the timer code,
where we could have a clue what to do (and what not to).
> With our current "get out of the way" bootloader, Linux always sees
> "Secure SVC". ...but if someone decided to put a new bootloader on
> the system that wanted to do something different (implement security
> and boot the kernel in nonsecure HYP or implement a hypervisor and
> boot the kernel in nonsecure SVC) then everything would be different.
>
> If someone were to write a bootloader like that (or perhaps if we're
> running in a VM?) then I'd imagine that the whole world would be
> different. Somehow this secure bootloader and/or hypervisor would
> _have_ to be involved in processor bringup and suspend/resume. Since
> I've never looked at code implementing either of these I'm just making
> assumptions, though.
Exactly. That's why we're so hell bent on PSCI, because it solves all
these issues (and that's why I've added some rudimentary support for it
in u-boot).
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2014-09-12 10:20 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-11 16:16 [PATCH v2] clocksource: arch_timer: Allow the device tree to specify the physical timer Doug Anderson
2014-09-11 16:16 ` Doug Anderson
2014-09-11 16:47 ` Will Deacon
2014-09-11 16:47 ` Will Deacon
2014-09-11 16:47 ` Will Deacon
2014-09-11 16:59 ` Doug Anderson
2014-09-11 16:59 ` Doug Anderson
2014-09-11 16:59 ` Doug Anderson
2014-09-11 17:07 ` Will Deacon
2014-09-11 17:07 ` Will Deacon
2014-09-11 17:14 ` Doug Anderson
2014-09-11 17:14 ` Doug Anderson
2014-09-11 17:00 ` Marc Zyngier
2014-09-11 17:00 ` Marc Zyngier
2014-09-11 17:11 ` Doug Anderson
2014-09-11 17:11 ` Doug Anderson
2014-09-11 17:11 ` Doug Anderson
2014-09-11 17:22 ` Marc Zyngier
2014-09-11 17:22 ` Marc Zyngier
2014-09-11 17:22 ` Marc Zyngier
2014-09-11 17:29 ` Doug Anderson
2014-09-11 17:29 ` Doug Anderson
2014-09-11 17:29 ` Doug Anderson
2014-09-11 17:43 ` Marc Zyngier
2014-09-11 17:43 ` Marc Zyngier
2014-09-11 17:43 ` Marc Zyngier
2014-09-11 23:55 ` Doug Anderson
2014-09-11 23:55 ` Doug Anderson
2014-09-11 23:55 ` Doug Anderson
2014-09-11 23:56 ` Stephen Boyd
2014-09-11 23:56 ` Stephen Boyd
2014-09-11 23:56 ` Stephen Boyd
2014-09-12 0:01 ` Doug Anderson
2014-09-12 0:01 ` Doug Anderson
2014-09-12 0:01 ` Doug Anderson
2014-09-12 10:20 ` Marc Zyngier [this message]
2014-09-12 10:20 ` Marc Zyngier
2014-09-12 0:14 ` Sonny Rao
2014-09-12 1:17 ` Stephen Boyd
2014-09-12 3:25 ` Sonny Rao
2014-09-12 3:25 ` Sonny Rao
2014-09-12 3:25 ` Sonny Rao
2014-09-12 11:43 ` Christopher Covington
2014-09-12 11:43 ` Christopher Covington
2014-09-12 11:43 ` Christopher Covington
2014-09-12 12:14 ` Marc Zyngier
2014-09-12 12:14 ` Marc Zyngier
2014-09-12 18:59 ` Stephen Boyd
2014-09-12 18:59 ` Stephen Boyd
2014-09-12 18:59 ` Stephen Boyd
2014-09-15 11:10 ` Catalin Marinas
2014-09-15 11:10 ` Catalin Marinas
2014-09-15 11:10 ` Catalin Marinas
2014-09-15 20:33 ` Stephen Boyd
2014-09-15 20:33 ` Stephen Boyd
2014-09-15 21:47 ` Sonny Rao
2014-09-15 21:47 ` Sonny Rao
2014-09-15 21:47 ` Sonny Rao
2014-09-15 21:49 ` Stephen Boyd
2014-09-15 21:49 ` Stephen Boyd
2014-09-15 21:49 ` Stephen Boyd
2014-09-15 21:52 ` Sonny Rao
2014-09-15 21:52 ` Sonny Rao
2014-09-15 21:52 ` Sonny Rao
2014-09-15 22:04 ` Sonny Rao
2014-09-15 22:04 ` Sonny Rao
2014-09-15 22:04 ` Sonny Rao
2014-09-15 22:51 ` Christopher Covington
2014-09-15 22:51 ` Christopher Covington
2014-09-15 22:51 ` Christopher Covington
2014-09-16 0:24 ` Sonny Rao
2014-09-16 0:24 ` Sonny Rao
2014-09-16 0:24 ` Sonny Rao
2014-09-16 10:42 ` Catalin Marinas
2014-09-16 10:42 ` Catalin Marinas
2014-09-16 10:42 ` Catalin Marinas
2014-09-16 11:22 ` Christopher Covington
2014-09-16 11:22 ` Christopher Covington
2014-09-16 11:22 ` Christopher Covington
2014-09-16 11:03 ` Catalin Marinas
2014-09-16 11:03 ` Catalin Marinas
2014-09-16 11:03 ` Catalin Marinas
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=5412C909.50004@arm.com \
--to=marc.zyngier@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 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.