From: Marc Zyngier <marc.zyngier-5wv7dgnIgG8@public.gmane.org>
To: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: Peter De Schrijver
<pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"andrew-g2DYL2Zd6BY@public.gmane.org"
<andrew-g2DYL2Zd6BY@public.gmane.org>,
"linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org"
<linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
"jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org"
<jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
"johnstul-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org"
<johnstul-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
"devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
"linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org"
<rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
"tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org"
<tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH 5/9] clocksource: tegra: Enable ARM arch_timer with TSC
Date: Thu, 20 Dec 2012 17:09:04 +0000 [thread overview]
Message-ID: <50D34630.9020708@arm.com> (raw)
In-Reply-To: <20121220.164230.292625215885249791.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
On 20/12/12 14:42, Hiroshi Doyu wrote:
> Marc Zyngier <marc.zyngier-5wv7dgnIgG8@public.gmane.org> wrote @ Thu, 20 Dec 2012 14:32:21 +0100:
>
>> On 20/12/12 12:55, Peter De Schrijver wrote:
>>> On Thu, Dec 20, 2012 at 01:33:42PM +0100, Marc Zyngier wrote:
>>>> On 20/12/12 12:22, Peter De Schrijver wrote:
>>>>>>>>> +
>>>>>>>>> + /* CNTFRQ */
>>>>>>>>> + asm("mcr p15, 0, %0, c14, c0, 0\n" : : "r" (freq));
>>>>>>>>> + asm("mrc p15, 0, %0, c14, c0, 0\n" : "=r" (val));
>>>>>>>>> + BUG_ON(val != freq);
>>>>>>>>
>>>>>>>> This is scary. CNTFRQ is only writable from secure mode, and will
>>>>>>>> explode in any other situation.
>>>>>>>>
>>>>>>>> Also, writing to CNTFRQ doesn't change the timer frequency! This is just
>>>>>>>> a way for secure mode to tell the rest of the world the frequency the
>>>>>>>> timer is ticking at. Unless you've wired the input clock to be able to
>>>>>>>> change the frequency?
>>>>>>>
>>>>>>> ATM, our upstream kernel is expected in secure mode. This situation
>>>>>>> may be changed later, though....
>>>>>>
>>>>>> I appreciate this. But I expect this kernel to be also used on the
>>>>>> non-secure side if someone tried to run KVM with it. And this would go
>>>>>> bang right away.
>>>>>>
>>>>>
>>>>> But the guest wouldn't necessarily have this peripheral, or any other Tegra114
>>>>> peripheral for that matter?
>>>>
>>>> The problem is not so much the guest but the host. The host has to be
>>>> booted in non-secure, so just saying "we do not support non-secure" is
>>>> not a very convincing argument.
>>>>
>>>> Unless of course you've already decided that you don't want to support
>>>> KVM on this SoC...
>>>>
>>>
>>> I guess that means we can't support KVM yet. Tegra does not have a secure
>>> monitor by default. It all depends on what that system integrator does.
>>
>> VExpress doesn't have a secure monitor either, and yet we run KVM on it
>> (by switching to non-secure before loading the kernel). Same for Exynos5.
>>
>> What I'm trying to say is that this code is rather pointless (this
>> should be done by the firmware/bootloader, not the kernel, or the
>> information should be provided in DT if CNTFRQ is not set).
>
> "tegra114.dtsi" has the folloiwng "tsc" entry. So can we consider that
> if dts has this entry, CNTFRQ is not set, which implies it's in secure
> mode. kernel should set it up by itself? Otherwise, skip this setup
> and use it. For example:
>
> tsc {
> compatible = "nvidia,tegra114-tsc";
> reg = <0x700f0000 0x20000>;
> + setup-cntfrq;
> };
>
> Is this what you explained in the above?
> At least, kernel can survive without bootloader/firmware support, ATM.
No. The DT should only describe the hardware, and not something that is
Linux specific.
Just use the "clock-frequency" attribute in the timer arch-timer node,
and get rid of this CNTFRQ setting. The driver already knows how to deal
with this situation if this attribute is set.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/9] clocksource: tegra: Enable ARM arch_timer with TSC
Date: Thu, 20 Dec 2012 17:09:04 +0000 [thread overview]
Message-ID: <50D34630.9020708@arm.com> (raw)
In-Reply-To: <20121220.164230.292625215885249791.hdoyu@nvidia.com>
On 20/12/12 14:42, Hiroshi Doyu wrote:
> Marc Zyngier <marc.zyngier@arm.com> wrote @ Thu, 20 Dec 2012 14:32:21 +0100:
>
>> On 20/12/12 12:55, Peter De Schrijver wrote:
>>> On Thu, Dec 20, 2012 at 01:33:42PM +0100, Marc Zyngier wrote:
>>>> On 20/12/12 12:22, Peter De Schrijver wrote:
>>>>>>>>> +
>>>>>>>>> + /* CNTFRQ */
>>>>>>>>> + asm("mcr p15, 0, %0, c14, c0, 0\n" : : "r" (freq));
>>>>>>>>> + asm("mrc p15, 0, %0, c14, c0, 0\n" : "=r" (val));
>>>>>>>>> + BUG_ON(val != freq);
>>>>>>>>
>>>>>>>> This is scary. CNTFRQ is only writable from secure mode, and will
>>>>>>>> explode in any other situation.
>>>>>>>>
>>>>>>>> Also, writing to CNTFRQ doesn't change the timer frequency! This is just
>>>>>>>> a way for secure mode to tell the rest of the world the frequency the
>>>>>>>> timer is ticking at. Unless you've wired the input clock to be able to
>>>>>>>> change the frequency?
>>>>>>>
>>>>>>> ATM, our upstream kernel is expected in secure mode. This situation
>>>>>>> may be changed later, though....
>>>>>>
>>>>>> I appreciate this. But I expect this kernel to be also used on the
>>>>>> non-secure side if someone tried to run KVM with it. And this would go
>>>>>> bang right away.
>>>>>>
>>>>>
>>>>> But the guest wouldn't necessarily have this peripheral, or any other Tegra114
>>>>> peripheral for that matter?
>>>>
>>>> The problem is not so much the guest but the host. The host has to be
>>>> booted in non-secure, so just saying "we do not support non-secure" is
>>>> not a very convincing argument.
>>>>
>>>> Unless of course you've already decided that you don't want to support
>>>> KVM on this SoC...
>>>>
>>>
>>> I guess that means we can't support KVM yet. Tegra does not have a secure
>>> monitor by default. It all depends on what that system integrator does.
>>
>> VExpress doesn't have a secure monitor either, and yet we run KVM on it
>> (by switching to non-secure before loading the kernel). Same for Exynos5.
>>
>> What I'm trying to say is that this code is rather pointless (this
>> should be done by the firmware/bootloader, not the kernel, or the
>> information should be provided in DT if CNTFRQ is not set).
>
> "tegra114.dtsi" has the folloiwng "tsc" entry. So can we consider that
> if dts has this entry, CNTFRQ is not set, which implies it's in secure
> mode. kernel should set it up by itself? Otherwise, skip this setup
> and use it. For example:
>
> tsc {
> compatible = "nvidia,tegra114-tsc";
> reg = <0x700f0000 0x20000>;
> + setup-cntfrq;
> };
>
> Is this what you explained in the above?
> At least, kernel can survive without bootloader/firmware support, ATM.
No. The DT should only describe the hardware, and not something that is
Linux specific.
Just use the "clock-frequency" attribute in the timer arch-timer node,
and get rid of this CNTFRQ setting. The driver already knows how to deal
with this situation if this attribute is set.
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: Hiroshi Doyu <hdoyu@nvidia.com>
Cc: Peter De Schrijver <pdeschrijver@nvidia.com>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"andrew@lunn.ch" <andrew@lunn.ch>,
"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
"jason@lakedaemon.net" <jason@lakedaemon.net>,
"johnstul@us.ibm.com" <johnstul@us.ibm.com>,
"devicetree-discuss@lists.ozlabs.org"
<devicetree-discuss@lists.ozlabs.org>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 5/9] clocksource: tegra: Enable ARM arch_timer with TSC
Date: Thu, 20 Dec 2012 17:09:04 +0000 [thread overview]
Message-ID: <50D34630.9020708@arm.com> (raw)
In-Reply-To: <20121220.164230.292625215885249791.hdoyu@nvidia.com>
On 20/12/12 14:42, Hiroshi Doyu wrote:
> Marc Zyngier <marc.zyngier@arm.com> wrote @ Thu, 20 Dec 2012 14:32:21 +0100:
>
>> On 20/12/12 12:55, Peter De Schrijver wrote:
>>> On Thu, Dec 20, 2012 at 01:33:42PM +0100, Marc Zyngier wrote:
>>>> On 20/12/12 12:22, Peter De Schrijver wrote:
>>>>>>>>> +
>>>>>>>>> + /* CNTFRQ */
>>>>>>>>> + asm("mcr p15, 0, %0, c14, c0, 0\n" : : "r" (freq));
>>>>>>>>> + asm("mrc p15, 0, %0, c14, c0, 0\n" : "=r" (val));
>>>>>>>>> + BUG_ON(val != freq);
>>>>>>>>
>>>>>>>> This is scary. CNTFRQ is only writable from secure mode, and will
>>>>>>>> explode in any other situation.
>>>>>>>>
>>>>>>>> Also, writing to CNTFRQ doesn't change the timer frequency! This is just
>>>>>>>> a way for secure mode to tell the rest of the world the frequency the
>>>>>>>> timer is ticking at. Unless you've wired the input clock to be able to
>>>>>>>> change the frequency?
>>>>>>>
>>>>>>> ATM, our upstream kernel is expected in secure mode. This situation
>>>>>>> may be changed later, though....
>>>>>>
>>>>>> I appreciate this. But I expect this kernel to be also used on the
>>>>>> non-secure side if someone tried to run KVM with it. And this would go
>>>>>> bang right away.
>>>>>>
>>>>>
>>>>> But the guest wouldn't necessarily have this peripheral, or any other Tegra114
>>>>> peripheral for that matter?
>>>>
>>>> The problem is not so much the guest but the host. The host has to be
>>>> booted in non-secure, so just saying "we do not support non-secure" is
>>>> not a very convincing argument.
>>>>
>>>> Unless of course you've already decided that you don't want to support
>>>> KVM on this SoC...
>>>>
>>>
>>> I guess that means we can't support KVM yet. Tegra does not have a secure
>>> monitor by default. It all depends on what that system integrator does.
>>
>> VExpress doesn't have a secure monitor either, and yet we run KVM on it
>> (by switching to non-secure before loading the kernel). Same for Exynos5.
>>
>> What I'm trying to say is that this code is rather pointless (this
>> should be done by the firmware/bootloader, not the kernel, or the
>> information should be provided in DT if CNTFRQ is not set).
>
> "tegra114.dtsi" has the folloiwng "tsc" entry. So can we consider that
> if dts has this entry, CNTFRQ is not set, which implies it's in secure
> mode. kernel should set it up by itself? Otherwise, skip this setup
> and use it. For example:
>
> tsc {
> compatible = "nvidia,tegra114-tsc";
> reg = <0x700f0000 0x20000>;
> + setup-cntfrq;
> };
>
> Is this what you explained in the above?
> At least, kernel can survive without bootloader/firmware support, ATM.
No. The DT should only describe the hardware, and not something that is
Linux specific.
Just use the "clock-frequency" attribute in the timer arch-timer node,
and get rid of this CNTFRQ setting. The driver already knows how to deal
with this situation if this attribute is set.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2012-12-20 17:09 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-20 9:43 [PATCH 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
2012-12-20 9:43 ` Hiroshi Doyu
2012-12-20 9:43 ` Hiroshi Doyu
2012-12-20 9:44 ` [PATCH 3/9] ARM: tegra: # of CPU cores detection w/ & w/o HAVE_ARM_SCU Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
[not found] ` <1355996654-6579-4-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 10:06 ` Felipe Balbi
2012-12-20 10:06 ` Felipe Balbi
2012-12-20 10:06 ` Felipe Balbi
2012-12-20 11:21 ` Hiroshi Doyu
2012-12-20 11:21 ` Hiroshi Doyu
2012-12-20 11:21 ` Hiroshi Doyu
[not found] ` <20121220.132136.1599315430686323669.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 18:18 ` Felipe Balbi
2012-12-20 18:18 ` Felipe Balbi
2012-12-20 18:18 ` Felipe Balbi
2012-12-20 11:17 ` Marc Zyngier
2012-12-20 11:17 ` Marc Zyngier
2012-12-20 11:26 ` Hiroshi Doyu
2012-12-20 11:26 ` Hiroshi Doyu
2012-12-20 11:32 ` Marc Zyngier
2012-12-20 11:32 ` Marc Zyngier
2012-12-20 9:44 ` [PATCH 4/9] clocksource: tegra: Reorganize funcs by clock functionarities Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` [PATCH 5/9] clocksource: tegra: Enable ARM arch_timer with TSC Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
[not found] ` <1355996654-6579-6-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 11:01 ` Marc Zyngier
2012-12-20 11:01 ` Marc Zyngier
2012-12-20 11:01 ` Marc Zyngier
2012-12-20 11:57 ` Hiroshi Doyu
2012-12-20 11:57 ` Hiroshi Doyu
2012-12-20 12:05 ` Marc Zyngier
2012-12-20 12:05 ` Marc Zyngier
[not found] ` <50D2FF19.4060600-5wv7dgnIgG8@public.gmane.org>
2012-12-20 12:22 ` Peter De Schrijver
2012-12-20 12:22 ` Peter De Schrijver
2012-12-20 12:22 ` Peter De Schrijver
[not found] ` <20121220122246.GA6819-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2012-12-20 12:33 ` Marc Zyngier
2012-12-20 12:33 ` Marc Zyngier
2012-12-20 12:33 ` Marc Zyngier
[not found] ` <50D305A6.2080904-5wv7dgnIgG8@public.gmane.org>
2012-12-20 12:55 ` Peter De Schrijver
2012-12-20 12:55 ` Peter De Schrijver
2012-12-20 12:55 ` Peter De Schrijver
2012-12-20 13:32 ` Marc Zyngier
2012-12-20 13:32 ` Marc Zyngier
2012-12-20 14:42 ` Hiroshi Doyu
2012-12-20 14:42 ` Hiroshi Doyu
[not found] ` <20121220.164230.292625215885249791.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 17:09 ` Marc Zyngier [this message]
2012-12-20 17:09 ` Marc Zyngier
2012-12-20 17:09 ` Marc Zyngier
[not found] ` <50D34630.9020708-5wv7dgnIgG8@public.gmane.org>
2012-12-20 22:13 ` Peter De Schrijver
2012-12-20 22:13 ` Peter De Schrijver
2012-12-20 22:13 ` Peter De Schrijver
2012-12-20 13:25 ` Hiroshi Doyu
2012-12-20 13:25 ` Hiroshi Doyu
2012-12-20 13:25 ` Hiroshi Doyu
2012-12-20 13:33 ` Marc Zyngier
2012-12-20 13:33 ` Marc Zyngier
2012-12-20 9:44 ` [PATCH 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
[not found] ` <1355996654-6579-7-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 11:27 ` Marc Zyngier
2012-12-20 11:27 ` Marc Zyngier
2012-12-20 11:27 ` Marc Zyngier
2012-12-29 6:39 ` Olof Johansson
2012-12-29 6:39 ` Olof Johansson
2012-12-29 6:39 ` Olof Johansson
2012-12-31 7:12 ` Hiroshi Doyu
2012-12-31 7:12 ` Hiroshi Doyu
2012-12-24 9:58 ` [PATCH 0/9] ARM: Initial support for " Mark Zhang
2012-12-24 9:58 ` Mark Zhang
[not found] ` <1355996654-6579-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 9:43 ` [PATCH 1/9] ARM: tegra: fuse: Add chipid TEGRA114 0x35 Hiroshi Doyu
2012-12-20 9:43 ` Hiroshi Doyu
2012-12-20 9:43 ` Hiroshi Doyu
2012-12-20 9:44 ` [PATCH 2/9] HACK: ARM: tegra: Use CLK_IGNORE_UNUSED for Tegra 114 SoC Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` [PATCH 7/9] ARM: dt: tegra114: Add new board, Dalmore Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` [PATCH 8/9] ARM: dt: tegra114: Add new board, Pluto Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` [PATCH 9/9] ARM: tegra: Add initial support for Tegra 114 SoC Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2012-12-20 9:44 ` Hiroshi Doyu
2013-01-03 16:28 ` Arnd Bergmann
2013-01-03 16:28 ` Arnd Bergmann
2013-01-04 7:16 ` Hiroshi Doyu
2013-01-04 7:16 ` Hiroshi Doyu
2013-01-04 7:16 ` Hiroshi Doyu
2013-01-03 14:06 ` [PATCH 0/9] ARM: Initial " Hiroshi Doyu
2013-01-03 14:06 ` Hiroshi Doyu
2013-01-03 14:06 ` Hiroshi Doyu
2013-01-03 21:00 ` Thierry Reding
2013-01-03 21:00 ` Thierry Reding
2013-01-03 21:00 ` Thierry Reding
2013-01-03 21:16 ` Stephen Warren
2013-01-03 21:16 ` Stephen Warren
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=50D34630.9020708@arm.com \
--to=marc.zyngier-5wv7dgnigg8@public.gmane.org \
--cc=andrew-g2DYL2Zd6BY@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org \
--cc=johnstul-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@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.