[PATCH v3 2/2] ARM : change fixmap mapping region to support 32 CPUs
From: Nicolas Pitre <hidden>
Date: 2014-08-06 03:11:45
Also in:
lkml
On Tue, 5 Aug 2014, Kees Cook wrote:
On Fri, May 30, 2014 at 12:25 PM, Nicolas Pitre [off-list ref] wrote:quoted
On Fri, 30 May 2014, Rob Herring wrote:quoted
There's work in flight to support early_ioremap, early console, and RO text patching which all use the fixmap region. There's a couple of options to solve this: - Only support up to 16 cpus. It could be anywhere between 17-31, but that seems somewhat unlikely. Are we really ever going to see 32-bit 32 core systems?I wouldn't rule that out. I've seen 16-core ARM chips in 2008 (although they didn't go into production). Silly limitations like that always come back to bite you. And we have better alternatives.quoted
- Reduce KM_TYPE_NR from 16 to 15. Based on the comment for it, we probably don't want to do that. Is increasing it to the default of 20 worthwhile? Some of the options here would allow doing that. - Add 0xffe00000-0xfff00000 to the fixmap region. This would make fixmap span 2 PMDs with the top PMD having a mixture of uses like we had before.That would be my preferred approach. Note here it could be 0xffe00000-0xfffe0000 to include the whole of the previous fixmap area curently unused.quoted
- push the PCI i/o space down to 0xfec00000 and make fixmap 4MB. This is a cleaner solution as the 2 PMDs are only used for fixmap. This may require some static mapping adjustments on some platforms.No need. With the latest changes, the fixmap area is between 0xffc00000 and 0xffe00000 (there is apparently a mistake in Documentation/arm/memory.txt). So currently 0xff000000-0xffc00000 is free, which makes the fixmap area far away from the PCI i/o area with plenti of space in between.So, it seems there is something wrong with this patch series. I had to revert "ARM: 8031/2: change fixmap mapping region to support 32 CPUs" to make other fixmap changes work correctly. I think this is due to the non-highmem config case moving the fixmap to a location where there is to page table entry...
Could you elaborate please? How can the non-highmem config move the fixmap area? And what are those other fixmap changes? Nicolas