aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorTrent Piepho <tpiepho@freescale.com>2008-12-08 22:34:58 -0500
committerKumar Gala <galak@kernel.crashing.org>2009-01-28 19:16:54 -0500
commit96051465fdc29e00dd14b484a45daac089c657f8 (patch)
tree4aa82c96d9a7e8c8b3b0c0c7f4ada4bf903ea422 /arch
parentc8f3570b7e2dd070ba6da41f3ed4ffb4e1d296af (diff)
powerpc/fsl-booke: Make CAM entries used for lowmem configurable
On booke processors, the code that maps low memory only uses up to three CAM entries, even though there are sixteen and nothing else uses them. Make this number configurable in the advanced options menu along with max low memory size. If one wants 1 GB of lowmem, then it's typically necessary to have four CAM entries. Signed-off-by: Trent Piepho <tpiepho@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/Kconfig16
-rw-r--r--arch/powerpc/mm/fsl_booke_mmu.c6
2 files changed, 21 insertions, 1 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index b408e352198c..8782b4b689a7 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -730,6 +730,22 @@ config LOWMEM_SIZE
730 hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL 730 hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
731 default "0x30000000" 731 default "0x30000000"
732 732
733config LOWMEM_CAM_NUM_BOOL
734 bool "Set number of CAMs to use to map low memory"
735 depends on ADVANCED_OPTIONS && FSL_BOOKE
736 help
737 This option allows you to set the maximum number of CAM slots that
738 will be used to map low memory. There are a limited number of slots
739 available and even more limited number that will fit in the L1 MMU.
740 However, using more entries will allow mapping more low memory. This
741 can be useful in optimizing the layout of kernel virtual memory.
742
743 Say N here unless you know what you are doing.
744
745config LOWMEM_CAM_NUM
746 int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL
747 default 3
748
733config RELOCATABLE 749config RELOCATABLE
734 bool "Build a relocatable kernel (EXPERIMENTAL)" 750 bool "Build a relocatable kernel (EXPERIMENTAL)"
735 depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE 751 depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c
index dfd292748e6e..0b9ba6be49d9 100644
--- a/arch/powerpc/mm/fsl_booke_mmu.c
+++ b/arch/powerpc/mm/fsl_booke_mmu.c
@@ -56,10 +56,14 @@
56 56
57extern void loadcam_entry(unsigned int index); 57extern void loadcam_entry(unsigned int index);
58unsigned int tlbcam_index; 58unsigned int tlbcam_index;
59static unsigned long cam[3]; 59static unsigned long cam[CONFIG_LOWMEM_CAM_NUM];
60 60
61#define NUM_TLBCAMS (16) 61#define NUM_TLBCAMS (16)
62 62
63#if defined(CONFIG_LOWMEM_CAM_NUM_BOOL) && (CONFIG_LOWMEM_CAM_NUM >= NUM_TLBCAMS)
64#error "LOWMEM_CAM_NUM must be less than NUM_TLBCAMS"
65#endif
66
63struct tlbcam TLBCAM[NUM_TLBCAMS]; 67struct tlbcam TLBCAM[NUM_TLBCAMS];
64 68
65struct tlbcamrange { 69struct tlbcamrange {