From: cyril@ti.com (Cyril Chemparathy)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 00/22] Introducing the TI Keystone platform
Date: Sun, 5 Aug 2012 11:10:34 -0400 [thread overview]
Message-ID: <501E8CEA.9050601@ti.com> (raw)
In-Reply-To: <20120804083945.GB6802@n2100.arm.linux.org.uk>
Hi Russell,
On 8/4/2012 4:39 AM, Russell King - ARM Linux wrote:
> On Tue, Jul 31, 2012 at 07:04:36PM -0400, Cyril Chemparathy wrote:
>> This series is a follow on to the RFC series posted earlier (archived at [1]).
>> The major change introduced here is the modification to the kernel patching
>> mechanism for phys_to_virt/virt_to_phys, in order to support LPAE platforms
>> that require late patching. In addition to these changes, we've updated the
>> series based on feedback from the earlier posting.
>>
>> Most of the patches in this series are fixes and extensions to LPAE support on
>> ARM. The last three patches in this series are specific to the TI Keystone
>> platform, and are being provided here for the sake of completeness. These
>> three patches are dependent on the smpops patch set (see [2]), and are not
>> ready to be merged in as yet.
>
> Can you explain why you want the kernel loaded above the 4GB watermark?
> This seems silly to me, as the kernel needs to run at points with a 1:1
> physical to virtual mapping, and you can't do that if the kernel is
> stored in physical memory above the 4GB watermark.
>
The Keystone family of devices is built to run with large (>8G) physical
memory for certain use-cases. From the CPUs perspective, this entire
range of physical memory is mapped in linearly at 08:0000:0000, i.e.,
above the 4GB watermark.
The interconnect provides an aliased view of the first 2GB of this
memory at the 8000:0000 offset. This alias is intended primarily for
boot-time usage, and does not support DMA coherence. We considered the
option of running with the first 2G of memory located under the 4GB
watermark, and the rest located at the native >4GB location, but this
would necessitate sparsemem, and would also break DMA coherence out of
lowmem. Hence the need for the more complicated approach implemented in
this patch series.
The posted patch series manages to get an SMP system running out of
memory beyond the 4GB watermark. We identified a couple of places that
needed the 1:1 physical to virtual mapping, and for these we take
advantage of the alias view provided by the interconnect. The two
places that we found the need for 1:1 mapping were:
1. initial boot code in head.S: here we've taken the approach of
initially running out of the alias space, and then switching over to the
high address space once we are safely in machine-specific territory.
2. idmap for secondary CPU boot: here we've added a virt_to_idmap()
facility that our sub-architecture then overrides to express the
interconnect supported alias view.
We are well aware of the fact that we are barely scratching the surface
of the problem space here, and we'd be very thankful for a heads up on
issues that we may have missed so far. We would similarly appreciate
other better ideas to solve this problem in light of the unique
constraints imposed here.
--
Thanks
- Cyril
WARNING: multiple messages have this Message-ID (diff)
From: Cyril Chemparathy <cyril@ti.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: <linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <arnd@arndb.de>,
<catalin.marinas@arm.com>, <nico@linaro.org>,
<will.deacon@arm.com>
Subject: Re: [PATCH 00/22] Introducing the TI Keystone platform
Date: Sun, 5 Aug 2012 11:10:34 -0400 [thread overview]
Message-ID: <501E8CEA.9050601@ti.com> (raw)
In-Reply-To: <20120804083945.GB6802@n2100.arm.linux.org.uk>
Hi Russell,
On 8/4/2012 4:39 AM, Russell King - ARM Linux wrote:
> On Tue, Jul 31, 2012 at 07:04:36PM -0400, Cyril Chemparathy wrote:
>> This series is a follow on to the RFC series posted earlier (archived at [1]).
>> The major change introduced here is the modification to the kernel patching
>> mechanism for phys_to_virt/virt_to_phys, in order to support LPAE platforms
>> that require late patching. In addition to these changes, we've updated the
>> series based on feedback from the earlier posting.
>>
>> Most of the patches in this series are fixes and extensions to LPAE support on
>> ARM. The last three patches in this series are specific to the TI Keystone
>> platform, and are being provided here for the sake of completeness. These
>> three patches are dependent on the smpops patch set (see [2]), and are not
>> ready to be merged in as yet.
>
> Can you explain why you want the kernel loaded above the 4GB watermark?
> This seems silly to me, as the kernel needs to run at points with a 1:1
> physical to virtual mapping, and you can't do that if the kernel is
> stored in physical memory above the 4GB watermark.
>
The Keystone family of devices is built to run with large (>8G) physical
memory for certain use-cases. From the CPUs perspective, this entire
range of physical memory is mapped in linearly at 08:0000:0000, i.e.,
above the 4GB watermark.
The interconnect provides an aliased view of the first 2GB of this
memory at the 8000:0000 offset. This alias is intended primarily for
boot-time usage, and does not support DMA coherence. We considered the
option of running with the first 2G of memory located under the 4GB
watermark, and the rest located at the native >4GB location, but this
would necessitate sparsemem, and would also break DMA coherence out of
lowmem. Hence the need for the more complicated approach implemented in
this patch series.
The posted patch series manages to get an SMP system running out of
memory beyond the 4GB watermark. We identified a couple of places that
needed the 1:1 physical to virtual mapping, and for these we take
advantage of the alias view provided by the interconnect. The two
places that we found the need for 1:1 mapping were:
1. initial boot code in head.S: here we've taken the approach of
initially running out of the alias space, and then switching over to the
high address space once we are safely in machine-specific territory.
2. idmap for secondary CPU boot: here we've added a virt_to_idmap()
facility that our sub-architecture then overrides to express the
interconnect supported alias view.
We are well aware of the fact that we are barely scratching the surface
of the problem space here, and we'd be very thankful for a heads up on
issues that we may have missed so far. We would similarly appreciate
other better ideas to solve this problem in light of the unique
constraints imposed here.
--
Thanks
- Cyril
next prev parent reply other threads:[~2012-08-05 15:10 UTC|newest]
Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-31 23:04 [PATCH 00/22] Introducing the TI Keystone platform Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 01/22] ARM: add mechanism for late code patching Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-04 5:38 ` Nicolas Pitre
2012-08-04 5:38 ` Nicolas Pitre
2012-08-05 13:56 ` Cyril Chemparathy
2012-08-05 13:56 ` Cyril Chemparathy
2012-08-07 22:52 ` Cyril Chemparathy
2012-08-07 22:52 ` Cyril Chemparathy
2012-08-08 5:56 ` Nicolas Pitre
2012-08-08 5:56 ` Nicolas Pitre
2012-08-08 13:18 ` Cyril Chemparathy
2012-08-08 13:18 ` Cyril Chemparathy
2012-08-08 13:55 ` Nicolas Pitre
2012-08-08 13:55 ` Nicolas Pitre
2012-08-08 16:05 ` Russell King - ARM Linux
2012-08-08 16:05 ` Russell King - ARM Linux
2012-08-08 16:56 ` Nicolas Pitre
2012-08-08 16:56 ` Nicolas Pitre
2012-08-09 6:59 ` Tixy
2012-08-09 6:59 ` Tixy
2012-08-06 11:12 ` Russell King - ARM Linux
2012-08-06 11:12 ` Russell King - ARM Linux
2012-08-06 13:19 ` Cyril Chemparathy
2012-08-06 13:19 ` Cyril Chemparathy
2012-08-06 13:26 ` Russell King - ARM Linux
2012-08-06 13:26 ` Russell King - ARM Linux
2012-08-06 13:38 ` Cyril Chemparathy
2012-08-06 13:38 ` Cyril Chemparathy
2012-08-06 18:02 ` Nicolas Pitre
2012-08-06 18:02 ` Nicolas Pitre
2012-07-31 23:04 ` [PATCH 02/22] ARM: use late patch framework for phys-virt patching Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-04 6:15 ` Nicolas Pitre
2012-08-04 6:15 ` Nicolas Pitre
2012-08-05 14:03 ` Cyril Chemparathy
2012-08-05 14:03 ` Cyril Chemparathy
2012-08-06 2:06 ` Nicolas Pitre
2012-08-06 2:06 ` Nicolas Pitre
2012-07-31 23:04 ` [PATCH 03/22] ARM: LPAE: use phys_addr_t on virt <--> phys conversion Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-04 6:24 ` Nicolas Pitre
2012-08-04 6:24 ` Nicolas Pitre
2012-08-05 14:05 ` Cyril Chemparathy
2012-08-05 14:05 ` Cyril Chemparathy
2012-08-06 11:14 ` Russell King - ARM Linux
2012-08-06 11:14 ` Russell King - ARM Linux
2012-08-06 13:30 ` Cyril Chemparathy
2012-08-06 13:30 ` Cyril Chemparathy
2012-08-09 14:10 ` Cyril Chemparathy
2012-08-09 14:10 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 04/22] ARM: LPAE: support 64-bit virt/phys patching Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-04 6:49 ` Nicolas Pitre
2012-08-04 6:49 ` Nicolas Pitre
2012-08-05 14:21 ` Cyril Chemparathy
2012-08-05 14:21 ` Cyril Chemparathy
2012-08-06 2:19 ` Nicolas Pitre
2012-08-06 2:19 ` Nicolas Pitre
2012-07-31 23:04 ` [PATCH 05/22] ARM: LPAE: use signed arithmetic for mask definitions Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 06/22] ARM: LPAE: use phys_addr_t in alloc_init_pud() Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-01 12:08 ` Sergei Shtylyov
2012-08-01 12:08 ` Sergei Shtylyov
2012-08-01 15:42 ` Cyril Chemparathy
2012-08-01 15:42 ` Cyril Chemparathy
2012-08-04 6:51 ` Nicolas Pitre
2012-08-04 6:51 ` Nicolas Pitre
2012-07-31 23:04 ` [PATCH 07/22] ARM: LPAE: use phys_addr_t in free_memmap() Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-04 6:54 ` Nicolas Pitre
2012-08-04 6:54 ` Nicolas Pitre
2012-07-31 23:04 ` [PATCH 08/22] ARM: LPAE: use phys_addr_t for initrd location and size Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-04 6:57 ` Nicolas Pitre
2012-08-04 6:57 ` Nicolas Pitre
2012-08-05 14:23 ` Cyril Chemparathy
2012-08-05 14:23 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 09/22] ARM: LPAE: use 64-bit pgd physical address in switch_mm() Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-08-04 7:04 ` Nicolas Pitre
2012-08-04 7:04 ` Nicolas Pitre
2012-08-05 14:29 ` Cyril Chemparathy
2012-08-05 14:29 ` Cyril Chemparathy
2012-08-06 2:35 ` Nicolas Pitre
2012-08-06 2:35 ` Nicolas Pitre
2012-07-31 23:04 ` [PATCH 10/22] ARM: LPAE: use 64-bit accessors for TTBR registers Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 11/22] ARM: LPAE: define ARCH_LOW_ADDRESS_LIMIT for bootmem Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 12/22] ARM: LPAE: factor out T1SZ and TTBR1 computations Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 13/22] ARM: LPAE: allow proc override of TTB setup Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 14/22] ARM: LPAE: accomodate >32-bit addresses for page table base Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 15/22] ARM: mm: use physical addresses in highmem sanity checks Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 16/22] ARM: mm: cleanup checks for membank overlap with vmalloc area Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 17/22] ARM: mm: clean up membank size limit checks Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 18/22] ARM: add virt_to_idmap for interconnect aliasing Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [PATCH 19/22] ARM: recreate kernel mappings in early_paging_init() Cyril Chemparathy
2012-07-31 23:04 ` Cyril Chemparathy
2012-07-31 23:04 ` [RFC 20/22] ARM: keystone: introducing TI Keystone platform Cyril Chemparathy
2012-07-31 23:06 ` Cyril Chemparathy
2012-07-31 23:16 ` Arnd Bergmann
2012-07-31 23:16 ` Arnd Bergmann
2012-08-01 15:41 ` Cyril Chemparathy
2012-08-01 15:41 ` Cyril Chemparathy
2012-08-01 17:20 ` Arnd Bergmann
2012-07-31 23:04 ` [RFC 21/22] ARM: keystone: enable SMP on Keystone machines Cyril Chemparathy
2012-07-31 23:05 ` Cyril Chemparathy
2012-07-31 23:04 ` [RFC 22/22] ARM: keystone: add switch over to high physical address range Cyril Chemparathy
2012-07-31 23:05 ` Cyril Chemparathy
2012-08-04 8:39 ` [PATCH 00/22] Introducing the TI Keystone platform Russell King - ARM Linux
2012-08-04 8:39 ` Russell King - ARM Linux
2012-08-05 15:10 ` Cyril Chemparathy [this message]
2012-08-05 15:10 ` Cyril Chemparathy
2012-08-08 15:43 ` Catalin Marinas
2012-08-08 15:43 ` Catalin Marinas
2012-08-08 13:57 ` Will Deacon
2012-08-08 13:57 ` Will Deacon
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=501E8CEA.9050601@ti.com \
--to=cyril@ti.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.