All of lore.kernel.org
 help / color / mirror / Atom feed
From: julien.grall@linaro.org (Julien Grall)
To: linux-arm-kernel@lists.infradead.org
Subject: Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: Re: [Xen-devel] [xen-unstable test] 21486: tolerable FAIL - PUSHED))
Date: Tue, 12 Nov 2013 14:35:10 +0000	[thread overview]
Message-ID: <52823C9E.2010007@linaro.org> (raw)
In-Reply-To: <201311121437.55826.arnd@arndb.de>



On 11/12/2013 01:37 PM, Arnd Bergmann wrote:
> On Tuesday 12 November 2013, Stefano Stabellini wrote:
>
> Hi Stefano,
>
> I haven't given it too much thought, but here is what I believe should
> be done:
>
>> The question for you, as arm-soc maintainers, is: do you think this
>> should work and if we find any issues we should just fix them or report
>> them as bugs?
>
> Modifying the DT to mark anything as "reserved" or absent that Dom0
> should or can not touch sounds like the correct way to do this. Whether
> this needs to be done by modifying the reg property of the device node
> or through a different method I can't tell.
>
> If you find bugs in the kernel that prevent this from working, but it
> works fine for everyone else, it's up to you to provide a bug-fix,
> which would most likely be up to Russell to apply.
>
>> Is this entirely going away with multiplatform kernels so we shouldn't
>> worry about it?
>
> Multiplatform kernels are by definition relocatable using
> CONFIG_ARM_PATCH_PHYS_VIRT, within some limitations such as the
> granularity of the mapping. You certainly can't move the start of memory
> to an address of smaller than 2MB (hugepage) alignment, but you might
> need something larger than that.

During some debugging on the Arndale and Midway, I found another 
constraint with CONFIG_ARM_PATCH_PHYS_VIRT.
I have noticed that all the kernel physical addresses must be lower than 
the corresponding virtual addresses. So the delta offset compute in 
__fixup_pv_table (arch/arm/kernel/head.S) must always be negative.
If this assertion is not validated, when the kernel will browse the 
memory bank (sanity_check_info in arch/arm/mm/mmu.c), __phys(...) will 
compute a wrong address and will result to consider all memory bank as 
highmem.

After digging in the code, it seems it's due to some optimization during 
opcode fixup in __fixup_a_pvtable. Is it a wanted constraint?

>> Or is this a lost fight and should we find a workaround (see below if we
>> are curious) to make the start of memory look the same?
>
> I don't see what hack you are referring to, can you elaborate?
>
> My feeling is that we should maintain the requirement that that it must be
> possible to enable Dom0 support on any virtualisation-capable platform
> without breaking other platforms or causing an unreasonable run-time
> overhead.
>
> BTW, does Dom0 require an LPAE-enabled kernel or can it be a regular
> non-LPAE ARMv6/v7 multiplatform build?

It can be both.

Cheers,

-- 
Julien Grall

WARNING: multiple messages have this Message-ID (diff)
From: Julien Grall <julien.grall@linaro.org>
To: Arnd Bergmann <arnd@arndb.de>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: xen-devel@lists.xensource.com,
	Ian Campbell <Ian.Campbell@citrix.com>,
	"xen.org" <ian.jackson@eu.citrix.com>,
	Andre Przywara <andre.przywara@calxeda.com>,
	Stefano Stabellini <stefano.stabellini@citrix.com>,
	Olof Johansson <olof@lixom.net>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: Re: [Xen-devel] [xen-unstable test] 21486: tolerable FAIL - PUSHED))
Date: Tue, 12 Nov 2013 14:35:10 +0000	[thread overview]
Message-ID: <52823C9E.2010007@linaro.org> (raw)
In-Reply-To: <201311121437.55826.arnd@arndb.de>



On 11/12/2013 01:37 PM, Arnd Bergmann wrote:
> On Tuesday 12 November 2013, Stefano Stabellini wrote:
>
> Hi Stefano,
>
> I haven't given it too much thought, but here is what I believe should
> be done:
>
>> The question for you, as arm-soc maintainers, is: do you think this
>> should work and if we find any issues we should just fix them or report
>> them as bugs?
>
> Modifying the DT to mark anything as "reserved" or absent that Dom0
> should or can not touch sounds like the correct way to do this. Whether
> this needs to be done by modifying the reg property of the device node
> or through a different method I can't tell.
>
> If you find bugs in the kernel that prevent this from working, but it
> works fine for everyone else, it's up to you to provide a bug-fix,
> which would most likely be up to Russell to apply.
>
>> Is this entirely going away with multiplatform kernels so we shouldn't
>> worry about it?
>
> Multiplatform kernels are by definition relocatable using
> CONFIG_ARM_PATCH_PHYS_VIRT, within some limitations such as the
> granularity of the mapping. You certainly can't move the start of memory
> to an address of smaller than 2MB (hugepage) alignment, but you might
> need something larger than that.

During some debugging on the Arndale and Midway, I found another 
constraint with CONFIG_ARM_PATCH_PHYS_VIRT.
I have noticed that all the kernel physical addresses must be lower than 
the corresponding virtual addresses. So the delta offset compute in 
__fixup_pv_table (arch/arm/kernel/head.S) must always be negative.
If this assertion is not validated, when the kernel will browse the 
memory bank (sanity_check_info in arch/arm/mm/mmu.c), __phys(...) will 
compute a wrong address and will result to consider all memory bank as 
highmem.

After digging in the code, it seems it's due to some optimization during 
opcode fixup in __fixup_a_pvtable. Is it a wanted constraint?

>> Or is this a lost fight and should we find a workaround (see below if we
>> are curious) to make the start of memory look the same?
>
> I don't see what hack you are referring to, can you elaborate?
>
> My feeling is that we should maintain the requirement that that it must be
> possible to enable Dom0 support on any virtualisation-capable platform
> without breaking other platforms or causing an unreasonable run-time
> overhead.
>
> BTW, does Dom0 require an LPAE-enabled kernel or can it be a regular
> non-LPAE ARMv6/v7 multiplatform build?

It can be both.

Cheers,

-- 
Julien Grall

  reply	other threads:[~2013-11-12 14:35 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-06  6:52 [xen-unstable test] 21486: tolerable FAIL - PUSHED xen.org
2013-11-06  9:52 ` Xen osstest on Calxeda midway progress (Was: Re: [xen-unstable test] 21486: tolerable FAIL - PUSHED) Ian Campbell
2013-11-06 11:14   ` Stefano Stabellini
2013-11-06 11:19     ` Ian Campbell
2013-11-06 19:40       ` Stefano Stabellini
2013-11-06 19:57         ` Andre Przywara
2013-11-07 11:14         ` Ian Campbell
2013-11-11 18:42           ` Stefano Stabellini
2013-11-12  9:53             ` Ian Campbell
2013-11-12 12:25               ` Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: Re: [Xen-devel] [xen-unstable test] 21486: tolerable FAIL - PUSHED)) Stefano Stabellini
2013-11-12 12:25                 ` Stefano Stabellini
2013-11-12 13:20                 ` Russell King - ARM Linux
2013-11-12 13:20                   ` Russell King - ARM Linux
2013-11-12 14:38                   ` Ian Campbell
2013-11-12 14:38                     ` Ian Campbell
2013-11-12 14:44                     ` Russell King - ARM Linux
2013-11-12 14:44                       ` Russell King - ARM Linux
2013-11-12 14:52                       ` Ian Campbell
2013-11-12 14:52                         ` Ian Campbell
2013-11-12 15:24                   ` Michal Simek
2013-11-12 15:24                     ` Michal Simek
2013-11-12 15:39                     ` Russell King - ARM Linux
2013-11-12 15:39                       ` Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: " Russell King - ARM Linux
2013-11-12 15:40                       ` Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: Re: [Xen-devel] " Michal Simek
2013-11-12 15:40                         ` Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: " Michal Simek
2013-11-12 13:37                 ` Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: Re: [Xen-devel] " Arnd Bergmann
2013-11-12 13:37                   ` Arnd Bergmann
2013-11-12 14:35                   ` Julien Grall [this message]
2013-11-12 14:35                     ` Julien Grall
2013-11-12 14:40                     ` Ian Campbell
2013-11-12 14:40                       ` Ian Campbell
2013-11-12 18:39                       ` Arnd Bergmann
2013-11-12 18:39                         ` Arnd Bergmann
2013-11-12 18:47                         ` Stefano Stabellini
2013-11-12 18:47                           ` Stefano Stabellini
2013-11-12 20:08                           ` Arnd Bergmann
2013-11-12 20:08                             ` Arnd Bergmann
2013-11-13 10:50                             ` Ian Campbell
2013-11-13 10:50                               ` Ian Campbell
2013-11-13 17:33                               ` Stefano Stabellini
2013-11-13 17:33                                 ` Stefano Stabellini
2013-11-13 19:42                                 ` Arnd Bergmann
2013-11-13 19:42                                   ` Arnd Bergmann
2013-11-14 15:24                                   ` Stefano Stabellini
2013-11-14 15:24                                     ` Stefano Stabellini
2013-11-12 14:41                     ` Russell King - ARM Linux
2013-11-12 14:41                       ` Russell King - ARM Linux
2013-11-12 14:52                       ` [Xen-devel] Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: " Julien Grall
2013-11-12 14:52                         ` Julien Grall
2013-11-12 14:57                         ` Ian Campbell
2013-11-12 14:57                           ` Ian Campbell
2013-11-12 15:24                           ` Julien Grall
2013-11-12 15:24                             ` Julien Grall
2013-11-12 15:32                             ` Ian Campbell
2013-11-12 15:32                               ` Ian Campbell
2013-11-13 12:57                               ` Julien Grall
2013-11-13 12:57                                 ` Julien Grall
2013-11-12 15:00                   ` Physical memory start contraints in the Linux kernel (Was: Re: Xen osstest on Calxeda midway progress (Was: Re: [Xen-devel] " Stefano Stabellini
2013-11-12 15:00                     ` Stefano Stabellini
2013-11-12 15:16                     ` Russell King - ARM Linux
2013-11-12 15:16                       ` Russell King - ARM Linux
2013-11-12 13:58   ` Xen osstest on Calxeda midway progress (Was: Re: [xen-unstable test] 21486: tolerable FAIL - PUSHED) Julien Grall

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=52823C9E.2010007@linaro.org \
    --to=julien.grall@linaro.org \
    --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.