From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/9] arm64: Make full va map code more dynamic
Date: Tue, 23 Feb 2016 13:33:37 -0700 [thread overview]
Message-ID: <56CCC221.70107@wwwdotorg.org> (raw)
In-Reply-To: <CAPnjgZ3PLpnwcHLtxQM8wCLazzLRz78A125gJC+5YAL-HquGSA@mail.gmail.com>
On 02/23/2016 01:00 PM, Simon Glass wrote:
> Hi Stephen,
>
> On 23 February 2016 at 10:40, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 02/23/2016 10:30 AM, Simon Glass wrote:
>>>
>>> Hi Stephen,
>>>
>>> On 23 February 2016 at 10:21, Stephen Warren <swarren@wwwdotorg.org>
>>> wrote:
>>>>
>>>> On 02/23/2016 06:17 AM, Simon Glass wrote:
>>>>>
>>>>>
>>>>> Hi Alex,
>>>>>
>>>>> On 21 February 2016 at 18:57, Alexander Graf <agraf@suse.de> wrote:
>>>>>>
>>>>>>
>>>>>> The idea to generate our pages tables from an array of memory ranges
>>>>>> is very sound. However, instead of hard coding the code to create up
>>>>>> to 2 levels of 64k granule page tables, we really should just create
>>>>>> normal 4k page tables that allow us to set caching attributes on 2M
>>>>>> or 4k level later on.
>>>>>>
>>>>>> So this patch moves the full_va mapping code to 4k page size and
>>>>>> makes it fully flexible to dynamically create as many levels as
>>>>>> necessary for a map (including dynamic 1G/2M pages). It also adds
>>>>>> support to dynamically split a large map into smaller ones when
>>>>>> some code wants to set dcache attributes.
>>>>>>
>>>>>> With all this in place, there is very little reason to create your
>>>>>> own page tables in board specific files.
>>>>
>>>>
>>>>
>>>>>> static struct mm_region mem_map[] = CONFIG_SYS_MEM_MAP;
>>>>>
>>>>>
>>>>>
>>>>> I am not ken on the idea of using a big #define table on these boards.
>>>>> Is there not a device-tree binding for this that we can use? It is
>>>>> just a data table, We are moving to Kconfig and eventually want to
>>>>> drop the config files.
>>>>
>>>>
>>>>
>>>> I would strongly object to making the MMU setup depend on device tree
>>>> parsing. This is low-level system code that should be handled purely by
>>>> simple standalone C code.
>>>
>>>
>>> Because...?
>>
>>
>> There is literally zero benefit from putting the exact same content into DT,
>> and hence having to run significantly more code to parse DT and get back
>> exactly the same hard-coded table.
>
> We do this so that board-specific variations can be described in one
> place. In the board-specific case, there are benefits.
I'd like to see an explicit enumeration of the benefits; I'm not aware
of any (either benefits, or such an enumeration). Board-specific data
can just as easily (actually, more easily due to lack of need for
parsing code) be stored in C data structures vs. stored in DT.
Or put another way, the simple fact that some data is board-specific
does not in-and-of-itself mean there's a benefit to putting it into DT.
To move something into DT, we should be able to enumerate some other
benefit, such as:
- Speeds up boot time.
- Allows code to be simpler.
- Simplifies editing the data.
(Note that I don't believe any of those example potential benefits are
actually true, but in fact are the opposite of the truth).
>> DT is not a goal in-and-of-itself. In some cases there are benefits to
>> placing configuration data outside a binary, and in those cases DT is an
>> acceptable mechanism to do that. However, any benefit from doing so derives
>> from arguments for separating the data out of the code, not because "use DT"
>> is itself a benefit.
>
> That's fine as far as it goes.
>
> The config file is not an acceptable means of providing per-board or
> per-arch configuration. If it is arch-specific and/or SoC-specific,
> but NOT board-specific then we can have it in a C table in a source
> file (not the config header) that is built into the binary. If it is
> board-specific, it must use the device tree.
>
> What category are we talking about here? Unfortunately it's not
> entirely clear from the patches and I lack the knowledge/background to
> figure it out.
I expect this data is SoC-specific. At least for Tegra in the codebase,
that's certainly true. I believe it's true for other SoCs in the current
codebase too. I don't expect this to change going forward, at the very
least for Tegra.
next prev parent reply other threads:[~2016-02-23 20:33 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-22 1:57 [U-Boot] [PATCH 0/9] arm64: Unify MMU code Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 1/9] thunderx: Calculate TCR dynamically Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 2/9] arm64: Make full va map code more dynamic Alexander Graf
2016-02-22 18:18 ` Stephen Warren
2016-02-22 18:37 ` Alexander Graf
2016-02-22 18:45 ` Stephen Warren
2016-02-24 10:21 ` Alexander Graf
2016-02-22 18:42 ` Stephen Warren
2016-02-23 13:17 ` Simon Glass
2016-02-23 17:21 ` Stephen Warren
2016-02-23 17:30 ` Simon Glass
2016-02-23 17:40 ` Stephen Warren
2016-02-23 20:00 ` Simon Glass
2016-02-23 20:33 ` Stephen Warren [this message]
2016-02-24 4:42 ` Simon Glass
2016-02-24 16:56 ` Stephen Warren
2016-02-24 10:55 ` Alexander Graf
2016-02-24 17:01 ` Stephen Warren
2016-02-24 17:04 ` Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 3/9] zymqmp: Replace home grown mmu code with generic table approach Alexander Graf
2016-02-23 11:04 ` Michal Simek
2016-02-23 11:33 ` Alexander Graf
2016-02-23 13:07 ` Michal Simek
2016-02-26 0:49 ` Alexander Graf
2016-02-26 8:29 ` Michal Simek
2016-02-26 8:55 ` Alexander Graf
2017-02-16 15:26 ` brettstahlman
2016-02-22 1:57 ` [U-Boot] [PATCH 4/9] tegra: " Alexander Graf
2016-02-22 18:28 ` Stephen Warren
2016-02-23 10:37 ` Michal Simek
2016-02-23 17:29 ` Stephen Warren
2016-02-24 10:28 ` Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 5/9] vexpress64: Add MMU tables Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 6/9] dwmmc: Increase retry timeout Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 7/9] hikey: Add MMU tables Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 8/9] arm64: Remove non-full-va map code Alexander Graf
2016-02-22 1:57 ` [U-Boot] [PATCH 9/9] arm64: Only allow dcache disabled in SPL builds Alexander Graf
2016-02-22 17:37 ` [U-Boot] [PATCH 0/9] arm64: Unify MMU code york sun
2016-02-22 18:02 ` Alexander Graf
2016-02-22 18:12 ` york sun
2016-02-22 18:31 ` Alexander Graf
2016-02-22 18:39 ` york sun
2016-02-22 19:42 ` Alexander Graf
2016-02-22 19:52 ` york sun
2016-02-22 20:09 ` Alexander Graf
2016-02-22 20:15 ` york sun
2016-02-24 10:19 ` Alexander Graf
2016-02-24 16:57 ` Stephen Warren
2016-02-22 18:34 ` Stephen Warren
2016-02-24 10:33 ` Alexander Graf
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=56CCC221.70107@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=u-boot@lists.denx.de \
/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