forked from Minki/linux
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>
This commit is contained in:
parent
f255f0dd1b
commit
3a5f8c5f78
@ -570,7 +570,7 @@ config SCHED_SMT
|
||||
|
||||
config PROC_DEVICETREE
|
||||
bool "Support for Open Firmware device tree in /proc"
|
||||
depends on PPC_OF && PROC_FS
|
||||
depends on (PPC_OF || PPC_ISERIES) && PROC_FS
|
||||
help
|
||||
This option adds a device-tree directory under /proc which contains
|
||||
an image of the device tree that the kernel copies from Open
|
||||
|
@ -2,6 +2,10 @@
|
||||
# Makefile for the linux ppc-specific parts of the memory manager.
|
||||
#
|
||||
|
||||
ifeq ($(CONFIG_PPC64),y)
|
||||
EXTRA_CFLAGS += -mno-minimal-toc
|
||||
endif
|
||||
|
||||
obj-y := fault.o mem.o lmb.o
|
||||
obj-$(CONFIG_PPC32) += init_32.o pgtable_32.o mmu_context_32.o \
|
||||
tlb_32.o
|
||||
|
@ -1,3 +1,5 @@
|
||||
EXTRA_CFLAGS += -mno-minimal-toc
|
||||
|
||||
obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o mf.o lpevents.o \
|
||||
hvcall.o proc.o htab.o iommu.o misc.o
|
||||
obj-$(CONFIG_PCI) += pci.o irq.o vpdinfo.o
|
||||
|
@ -430,7 +430,6 @@ static void __init build_iSeries_Memory_Map(void)
|
||||
u32 loadAreaFirstChunk, loadAreaLastChunk, loadAreaSize;
|
||||
u32 nextPhysChunk;
|
||||
u32 hptFirstChunk, hptLastChunk, hptSizeChunks, hptSizePages;
|
||||
u32 num_ptegs;
|
||||
u32 totalChunks,moreChunks;
|
||||
u32 currChunk, thisChunk, absChunk;
|
||||
u32 currDword;
|
||||
@ -493,10 +492,7 @@ static void __init build_iSeries_Memory_Map(void)
|
||||
printk("HPT absolute addr = %016lx, size = %dK\n",
|
||||
chunk_to_addr(hptFirstChunk), hptSizeChunks * 256);
|
||||
|
||||
/* Fill in the hashed page table hash mask */
|
||||
num_ptegs = hptSizePages *
|
||||
(PAGE_SIZE / (sizeof(hpte_t) * HPTES_PER_GROUP));
|
||||
htab_hash_mask = num_ptegs - 1;
|
||||
ppc64_pft_size = __ilog2(hptSizePages * PAGE_SIZE);
|
||||
|
||||
/*
|
||||
* The actual hashed page table is in the hypervisor,
|
||||
|
Loading…
Reference in New Issue
Block a user