diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2005-10-11 05:40:20 -0400 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2005-10-11 20:58:00 -0400 |
commit | 3a5f8c5f788d68e325d9fe3c26f4df5a5aee838a (patch) | |
tree | ad0bb508722bb54baca8ad830c569a476f345233 | |
parent | f255f0dd1b4ef7af0e48f5603d1f27ee4bad5848 (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>
-rw-r--r-- | arch/powerpc/Kconfig | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/Makefile | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/Makefile | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/setup.c | 6 |
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 | ||
571 | config PROC_DEVICETREE | 571 | config 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 | ||
5 | ifeq ($(CONFIG_PPC64),y) | ||
6 | EXTRA_CFLAGS += -mno-minimal-toc | ||
7 | endif | ||
8 | |||
5 | obj-y := fault.o mem.o lmb.o | 9 | obj-y := fault.o mem.o lmb.o |
6 | obj-$(CONFIG_PPC32) += init_32.o pgtable_32.o mmu_context_32.o \ | 10 | obj-$(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 @@ | |||
1 | EXTRA_CFLAGS += -mno-minimal-toc | ||
2 | |||
1 | obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o mf.o lpevents.o \ | 3 | obj-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 |
3 | obj-$(CONFIG_PCI) += pci.o irq.o vpdinfo.o | 5 | obj-$(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, |