aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2005-10-11 05:40:20 -0400
committerStephen Rothwell <sfr@canb.auug.org.au>2005-10-11 20:58:00 -0400
commit3a5f8c5f788d68e325d9fe3c26f4df5a5aee838a (patch)
treead0bb508722bb54baca8ad830c569a476f345233 /arch
parentf255f0dd1b4ef7af0e48f5603d1f27ee4bad5848 (diff)
powerpc: make iSeries boot again
On ARCH=ppc64 we were getting htab_hash_mask recalculated to the correct value for our particular machine by accident. In the merge tree, that code was commented out, so htab_hash_mask was being corrupted. We now set ppc64_pft_size instead which gets htab_has_mask calculated correctly for us later. We should put an ibm,pft-size property in the device tree at some point. Also set -mno-minimal-toc in some makefiles. Allow iSeries to configure PROC_DEVICETREE. Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/powerpc/mm/Makefile4
-rw-r--r--arch/powerpc/platforms/iseries/Makefile2
-rw-r--r--arch/powerpc/platforms/iseries/setup.c6
4 files changed, 8 insertions, 6 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 330376b74c87..cd55c9b0f7ea 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -570,7 +570,7 @@ config SCHED_SMT
570 570
571config PROC_DEVICETREE 571config PROC_DEVICETREE
572 bool "Support for Open Firmware device tree in /proc" 572 bool "Support for Open Firmware device tree in /proc"
573 depends on PPC_OF && PROC_FS 573 depends on (PPC_OF || PPC_ISERIES) && PROC_FS
574 help 574 help
575 This option adds a device-tree directory under /proc which contains 575 This option adds a device-tree directory under /proc which contains
576 an image of the device tree that the kernel copies from Open 576 an image of the device tree that the kernel copies from Open
diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile
index 612bc4ec72b1..14b2ffb6c2d8 100644
--- a/arch/powerpc/mm/Makefile
+++ b/arch/powerpc/mm/Makefile
@@ -2,6 +2,10 @@
2# Makefile for the linux ppc-specific parts of the memory manager. 2# Makefile for the linux ppc-specific parts of the memory manager.
3# 3#
4 4
5ifeq ($(CONFIG_PPC64),y)
6EXTRA_CFLAGS += -mno-minimal-toc
7endif
8
5obj-y := fault.o mem.o lmb.o 9obj-y := fault.o mem.o lmb.o
6obj-$(CONFIG_PPC32) += init_32.o pgtable_32.o mmu_context_32.o \ 10obj-$(CONFIG_PPC32) += init_32.o pgtable_32.o mmu_context_32.o \
7 tlb_32.o 11 tlb_32.o
diff --git a/arch/powerpc/platforms/iseries/Makefile b/arch/powerpc/platforms/iseries/Makefile
index 18bf40077561..127b465308be 100644
--- a/arch/powerpc/platforms/iseries/Makefile
+++ b/arch/powerpc/platforms/iseries/Makefile
@@ -1,3 +1,5 @@
1EXTRA_CFLAGS += -mno-minimal-toc
2
1obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o mf.o lpevents.o \ 3obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o mf.o lpevents.o \
2 hvcall.o proc.o htab.o iommu.o misc.o 4 hvcall.o proc.o htab.o iommu.o misc.o
3obj-$(CONFIG_PCI) += pci.o irq.o vpdinfo.o 5obj-$(CONFIG_PCI) += pci.o irq.o vpdinfo.o
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
index c3e532b766ef..b6cf050a8c27 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -430,7 +430,6 @@ static void __init build_iSeries_Memory_Map(void)
430 u32 loadAreaFirstChunk, loadAreaLastChunk, loadAreaSize; 430 u32 loadAreaFirstChunk, loadAreaLastChunk, loadAreaSize;
431 u32 nextPhysChunk; 431 u32 nextPhysChunk;
432 u32 hptFirstChunk, hptLastChunk, hptSizeChunks, hptSizePages; 432 u32 hptFirstChunk, hptLastChunk, hptSizeChunks, hptSizePages;
433 u32 num_ptegs;
434 u32 totalChunks,moreChunks; 433 u32 totalChunks,moreChunks;
435 u32 currChunk, thisChunk, absChunk; 434 u32 currChunk, thisChunk, absChunk;
436 u32 currDword; 435 u32 currDword;
@@ -493,10 +492,7 @@ static void __init build_iSeries_Memory_Map(void)
493 printk("HPT absolute addr = %016lx, size = %dK\n", 492 printk("HPT absolute addr = %016lx, size = %dK\n",
494 chunk_to_addr(hptFirstChunk), hptSizeChunks * 256); 493 chunk_to_addr(hptFirstChunk), hptSizeChunks * 256);
495 494
496 /* Fill in the hashed page table hash mask */ 495 ppc64_pft_size = __ilog2(hptSizePages * PAGE_SIZE);
497 num_ptegs = hptSizePages *
498 (PAGE_SIZE / (sizeof(hpte_t) * HPTES_PER_GROUP));
499 htab_hash_mask = num_ptegs - 1;
500 496
501 /* 497 /*
502 * The actual hashed page table is in the hypervisor, 498 * The actual hashed page table is in the hypervisor,