All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christopher Covington <cov@codeaurora.org>
To: Jon Masters <jonathan@jonmasters.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	linux-kernel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	Will Deacon <will.deacon@arm.com>
Subject: Re: [PATCH 08/36] AArch64: Kernel booting and initialisation
Date: Fri, 20 Jul 2012 09:47:36 -0400	[thread overview]
Message-ID: <50096178.9060902@codeaurora.org> (raw)
In-Reply-To: <5009044E.9060908@jonmasters.org>

Hi Jon,

On 07/20/2012 03:10 AM, Jon Masters wrote:
> On 07/19/2012 01:31 PM, Christopher Covington wrote:
>> On 07/18/2012 02:57 AM, Jon Masters wrote:
>>> On 07/06/2012 05:05 PM, Catalin Marinas wrote:
>>>
>>>> +- CPU mode
>>>> +  All forms of interrupts must be masked in PSTATE.DAIF (Debug, SError,
>>>> +  IRQ and FIQ).
>>>> +  The CPU must be in either EL2 (RECOMMENDED) or non-secure EL1.
>>
>> Why not secure EL1?
> 
> Because secure world and non-secure world are separated. Although ARMv8
> does define EL0 and EL1 in both secure and non-secure worlds, they're
> really two different things. General purpose OSes run their kernel in
> EL1 (userspace in EL0). We don't ever even see the secure EL1.

I do not understand how the separation between the secure world and
non-secure world affects the ability of separate instances of Linux to
run as the non-secure OS, the secure OS, or both. Is there something
different about secure EL1 that makes it unsuitable for a general
purpose OS? I consider your assumption that the people on this mailing
list will never see their code executed in secure EL1 to be wrong.
Surely on the simulators and development boards that will eventually be
available, the possibility will be there, and explored by somebody.

What I really mean to suggest is that if there's a clear technical
reason for a requirement, give it. If the requirement is really more of
a convention, then say so. If there might be a technical reason but
nobody has bothered to investigate, write that it's untested. Some very
basic explanation of the requirements would make them better, and give
someone looking to support a more exotic use case a helpful starting point.

>>> Even though this stuff is likely to be replaced with the result of some
>>> of the other standardization, I'd like it if you'd strongly consider
>>> removing the "or non-secure EL1". If you give an inch, someone will take
>>> a mile and build a system that enters other than in EL2. Or, something
>>> to the effect of "the highest non-secure exception level implemented"
>>> would be my preference if you don't want to specify.
>>
>> I think it would be best to list the technical limitations, from the
>> kernel's perspective, of the unsupported exception levels and the
>> advantages of the supported exception levels here. If you want to guide
>> system builders towards EL2, I think it'd be more convincing to document
>> the relevant technical aspects (perhaps KVM needs facilities only
>> available in EL2) than just providing an unexplained requirement.
> 
> Unless you enter at EL2 you can never install a hypervisor. That's the
> reason for the requirement for generally entering at EL2 when possible.

That brief explanation would make a useful addition to the documentation
in my opinion.

Christopher

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum

  parent reply	other threads:[~2012-07-20 13:47 UTC|newest]

Thread overview: 185+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-06 21:05 [PATCH 00/36] AArch64 Linux kernel port Catalin Marinas
2012-07-06 21:05 ` [PATCH 01/36] atomic64_test: Simplify the #ifdef for atomic64_dec_if_positive() test Catalin Marinas
2012-07-18  4:33   ` Benjamin Herrenschmidt
2012-07-18  9:06     ` Catalin Marinas
2012-07-06 21:05 ` [PATCH 02/36] ipc: Add COMPAT_SHMLBA support Catalin Marinas
2012-07-18  5:53   ` Jon Masters
2012-07-18  9:03     ` Will Deacon
2012-07-06 21:05 ` [PATCH 03/36] ipc: allow compat IPC version field parsing if !ARCH_WANT_OLD_COMPAT_IPC Catalin Marinas
2012-07-06 21:05 ` [PATCH 04/36] ipc: compat: use signed size_t types for msgsnd and msgrcv Catalin Marinas
2012-07-06 21:05 ` [PATCH 05/36] fs: Build sys_stat64() and friends if __ARCH_WANT_COMPAT_STAT64 Catalin Marinas
2012-07-06 21:05 ` [PATCH 06/36] fdt: Add generic dt_memblock_reserve() function Catalin Marinas
2012-07-07 21:18   ` Rob Herring
2012-07-07 21:18     ` Rob Herring
2012-07-08  9:43     ` Catalin Marinas
2012-07-08  9:43       ` Catalin Marinas
2012-07-06 21:05 ` [PATCH 07/36] AArch64: Assembly macros and definitions Catalin Marinas
2012-07-07  5:57   ` Greg KH
2012-07-08  9:23     ` Catalin Marinas
2012-07-20 14:22   ` [07/36] " Christopher Covington
2012-07-24 16:40     ` Catalin Marinas
2012-07-06 21:05 ` [PATCH 08/36] AArch64: Kernel booting and initialisation Catalin Marinas
2012-07-06 21:32   ` Stephen Warren
2012-07-08  9:18     ` Catalin Marinas
2012-07-23 17:48       ` Stephen Warren
2012-07-23 17:58         ` Catalin Marinas
2012-07-18  6:57   ` Jon Masters
2012-07-18  9:07     ` Will Deacon
2012-07-20  7:11       ` Jon Masters
2012-07-19 17:31     ` Christopher Covington
2012-07-20  7:10       ` Jon Masters
2012-07-20  8:28         ` Arnd Bergmann
2012-07-20 10:52           ` Catalin Marinas
2012-07-20 12:32             ` Geert Uytterhoeven
2012-07-20 13:16               ` Catalin Marinas
2012-07-20 13:47         ` Christopher Covington [this message]
2012-07-20 13:52           ` Catalin Marinas
2012-07-20 13:48       ` Catalin Marinas
2012-07-20 14:53         ` Christopher Covington
2012-07-23 20:52   ` [08/36] " Christopher Covington
2012-07-24 16:24     ` Catalin Marinas
2012-07-24 18:53       ` Arnd Bergmann
2012-07-24 23:20         ` Frank Rowand
2012-07-25  8:34         ` Catalin Marinas
2012-07-24 19:42   ` Christopher Covington
2012-07-25  8:47     ` Catalin Marinas
2012-07-25 13:39       ` Christopher Covington
2012-07-06 21:05 ` [PATCH 09/36] AArch64: Exception handling Catalin Marinas
2012-08-09 17:05   ` [09/36] " Christopher Covington
2012-08-09 17:23     ` Catalin Marinas
2012-08-09 19:19       ` Christopher Covington
2012-07-06 21:05 ` [PATCH 10/36] AArch64: MMU definitions Catalin Marinas
2012-10-02  0:43   ` Jon Masters
2012-10-02 15:39     ` Catalin Marinas
2012-07-06 21:05 ` [PATCH 11/36] AArch64: MMU initialisation Catalin Marinas
2012-07-06 21:05 ` [PATCH 12/36] AArch64: MMU fault handling and page table management Catalin Marinas
2012-07-06 21:05 ` [PATCH 13/36] AArch64: Process management Catalin Marinas
2012-07-06 21:05 ` [PATCH 14/36] AArch64: CPU support Catalin Marinas
2012-07-06 21:05 ` [PATCH 15/36] AArch64: Cache maintenance routines Catalin Marinas
2012-07-06 21:05 ` [PATCH 16/36] AArch64: TLB maintenance functionality Catalin Marinas
2012-07-06 21:05 ` [PATCH 17/36] AArch64: IRQ handling Catalin Marinas
2012-07-06 21:05 ` [PATCH 18/36] AArch64: Atomic operations Catalin Marinas
2012-07-06 21:06 ` [PATCH 19/36] AArch64: Device specific operations Catalin Marinas
2012-07-06 21:06 ` [PATCH 20/36] AArch64: DMA mapping API Catalin Marinas
2012-07-06 21:06 ` [PATCH 21/36] AArch64: SMP support Catalin Marinas
2012-07-06 21:06 ` [PATCH 22/36] AArch64: ELF definitions Catalin Marinas
2012-07-06 21:06 ` [PATCH 23/36] AArch64: System calls handling Catalin Marinas
2012-07-06 21:06 ` [PATCH 24/36] AArch64: VDSO support Catalin Marinas
2012-07-06 21:06 ` [PATCH 25/36] AArch64: Signal handling support Catalin Marinas
2012-07-06 21:06 ` [PATCH 26/36] AArch64: User access library functions Catalin Marinas
2012-07-06 21:06 ` [PATCH 27/36] AArch64: 32-bit (compat) applications support Catalin Marinas
2012-07-06 21:06 ` [PATCH 28/36] AArch64: Floating point and SIMD Catalin Marinas
2012-07-06 21:06 ` [PATCH 29/36] AArch64: Debugging support Catalin Marinas
2012-07-06 21:06 ` [PATCH 30/36] AArch64: Performance counters support Catalin Marinas
2012-07-06 21:06 ` [PATCH 31/36] AArch64: Miscellaneous library functions Catalin Marinas
2012-07-06 21:06 ` [PATCH 32/36] AArch64: Loadable modules Catalin Marinas
2012-07-06 21:06 ` [PATCH 33/36] AArch64: Generic timers support Catalin Marinas
2012-07-12  0:18   ` Linus Walleij
2012-07-12 10:09     ` Marc Zyngier
2012-07-12 10:56       ` Linus Walleij
2012-07-12 16:57         ` John Stultz
2012-07-12 17:31           ` Marc Zyngier
2012-07-12 17:39             ` John Stultz
2012-07-13 12:40               ` Arnd Bergmann
2012-07-13 16:02                 ` Catalin Marinas
2012-07-13 16:32                   ` Arnd Bergmann
2012-07-13 18:30                   ` John Stultz
2012-07-06 21:06 ` [PATCH 34/36] AArch64: Miscellaneous header files Catalin Marinas
2012-07-06 21:06 ` [PATCH 35/36] AArch64: Build infrastructure Catalin Marinas
2012-07-06 21:06 ` [PATCH 36/36] AArch64: MAINTAINERS update Catalin Marinas
2012-08-10 16:24   ` [36/36] " Christopher Covington
2012-08-10 16:24     ` Christopher Covington
2012-07-06 22:58 ` [PATCH 00/36] AArch64 Linux kernel port Alan Cox
2012-07-07 21:30   ` Arnd Bergmann
2012-07-07 23:14   ` Catalin Marinas
2012-07-07 23:29     ` Alan Cox
2012-07-09 11:35       ` Catalin Marinas
2012-07-09 13:51         ` Alan Cox
2012-07-09 15:32           ` Arnd Bergmann
2012-07-09 15:49             ` Alan Cox
2012-07-09 16:02             ` Catalin Marinas
2012-07-09 16:33               ` Arnd Bergmann
2012-07-07  3:29 ` Matthew Garrett
2012-07-09 12:32   ` Mark Brown
2012-07-09 13:06     ` Matthew Garrett
2012-07-09 13:56       ` Mark Brown
2012-07-09 14:02         ` Matthew Garrett
2012-07-09 15:46           ` Mark Brown
2012-07-07  3:53 ` Olof Johansson
2012-07-07 19:27   ` Arnd Bergmann
2012-07-07 23:45     ` Jan Engelhardt
2012-07-08  5:05       ` Henrique de Moraes Holschuh
2012-07-08 20:28         ` Jan Engelhardt
2012-07-08  7:54     ` Jon Masters
2012-07-08 11:17       ` Dr. David Alan Gilbert
2012-07-08 18:13         ` Jon Masters
2012-07-08 18:31       ` Jon Masters
2012-07-08 22:24         ` Dennis Gilmore
2012-07-09  2:01           ` Jon Masters
2012-07-09  8:57             ` Catalin Marinas
2012-07-09 13:33             ` Geert Uytterhoeven
2012-07-08 20:31       ` Jan Engelhardt
2012-07-08 23:32         ` Jon Masters
2012-07-10  7:10     ` Ingo Molnar
2012-07-10 10:10       ` Catalin Marinas
2012-07-10 15:33         ` Alan Cox
2012-07-10 16:52           ` Arnd Bergmann
2012-07-10 20:35             ` Ingo Molnar
2012-07-10 21:19               ` Arnd Bergmann
2012-07-10 21:48                 ` Catalin Marinas
2012-07-11  8:20                 ` Ingo Molnar
2012-07-11 11:30                 ` Alan Cox
2012-07-10 21:44               ` Catalin Marinas
2012-07-11  8:55                 ` Catalin Marinas
2012-07-11  5:26             ` Rusty Russell
2012-07-11 10:53               ` Catalin Marinas
2012-07-12  2:08                 ` Rusty Russell
2012-07-10 16:57           ` Catalin Marinas
2012-07-10 16:52         ` Dennis Gilmore
2012-07-10 17:14         ` Joe Perches
2012-07-10 18:01           ` Jan Ceuleers
2012-07-10 18:05             ` richard -rw- weinberger
2012-07-10 20:16           ` Alexander Holler
2012-07-14 22:16             ` Jon Masters
2012-07-10 22:08         ` Chris Adams
2012-07-14  9:30         ` Pavel Machek
2012-07-15 12:16           ` Catalin Marinas
2012-07-15 19:43             ` Arnd Bergmann
2012-07-15 21:33               ` Catalin Marinas
2012-07-16 12:16                 ` Pavel Machek
2012-07-17  7:05                   ` Jon Masters
2012-07-17  8:02                     ` Arnd Bergmann
2012-07-17  9:50                       ` Alan Cox
2012-07-18  2:36                         ` Jon Masters
2012-07-17 10:45                   ` Catalin Marinas
2012-07-16  9:26               ` Geert Uytterhoeven
2012-07-17  6:53               ` Christoph Hellwig
2012-07-17  8:07                 ` Arnd Bergmann
2012-07-16  8:24             ` Avi Kivity
2012-07-17  7:09               ` Jon Masters
2012-07-17  8:37               ` Catalin Marinas
2012-07-15 23:21         ` Måns Rullgård
2012-07-15 23:53           ` Linus Torvalds
2012-07-17 22:18             ` Catalin Marinas
2012-07-17 22:35               ` Joe Perches
2012-07-18  2:33                 ` Jon Masters
2012-07-18 15:27                   ` Dennis Gilmore
2012-07-18 17:14                     ` Catalin Marinas
2012-07-18 17:25                       ` Måns Rullgård
2012-07-18 19:35                       ` Jon Masters
2012-07-18 19:55                         ` Linus Torvalds
2012-07-19 14:16     ` Guillem Jover
2012-07-07 23:42   ` Jan Engelhardt
2012-07-08 10:18   ` Catalin Marinas
2012-07-09 12:31     ` Jan Engelhardt
2012-07-07  9:30 ` Mikael Pettersson
2012-07-07 19:21   ` Kirill A. Shutemov
2012-07-10 10:12   ` Catalin Marinas
2012-07-14  9:35     ` Pavel Machek
2012-07-15 11:36       ` Catalin Marinas
2012-07-16 16:19         ` Pavel Machek
2012-07-16 19:45           ` Arnd Bergmann
2012-07-16 19:47           ` Måns Rullgård
2012-07-18  5:35 ` Jon Masters
2012-07-18  9:13   ` Catalin Marinas
2012-07-26 11:59 ` Catalin Marinas
     [not found] <jknWN-4WG-3@gated-at.bofh.it>
     [not found] ` <jkulA-O3-3@gated-at.bofh.it>
     [not found]   ` <jkIRz-2Hu-11@gated-at.bofh.it>

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=50096178.9060902@codeaurora.org \
    --to=cov@codeaurora.org \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=jonathan@jonmasters.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=will.deacon@arm.com \
    /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.