[PATCH 1/2] powerpc: Add ibm,pft-size to iSeries device tree

Michael Ellerman michael at ellerman.id.au
Wed Jan 11 15:27:24 EST 2006


To make iSeries just a teensy bit less special, create ibm,pft-size properties
in the iSeries device tree. We can then rely on htab_dt_scan_pftsize() to set
ppc64_pft_size for us.

Signed-off-by: Michael Ellerman <michael at ellerman.id.au>
---

 arch/powerpc/platforms/iseries/setup.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

Index: linux/arch/powerpc/platforms/iseries/setup.c
===================================================================
--- linux.orig/arch/powerpc/platforms/iseries/setup.c
+++ linux/arch/powerpc/platforms/iseries/setup.c
@@ -474,8 +474,6 @@ static unsigned long __init build_iSerie
 	printk("HPT absolute addr = %016lx, size = %dK\n",
 			chunk_to_addr(hptFirstChunk), hptSizeChunks * 256);
 
-	ppc64_pft_size = __ilog2(hptSizePages * HW_PAGE_SIZE);
-
 	/*
 	 * The actual hashed page table is in the hypervisor,
 	 * we have no direct access
@@ -861,6 +859,11 @@ void dt_prop_u64_list(struct iseries_fla
 	dt_prop(dt, name, (char *)data, sizeof(u64) * n);
 }
 
+void dt_prop_u32_list(struct iseries_flat_dt *dt, char *name, u32 *data, int n)
+{
+	dt_prop(dt, name, (char *)data, sizeof(u32) * n);
+}
+
 void dt_prop_empty(struct iseries_flat_dt *dt, char *name)
 {
 	dt_prop(dt, name, NULL, 0);
@@ -872,6 +875,7 @@ void dt_cpus(struct iseries_flat_dt *dt)
 	unsigned char *p;
 	unsigned int i, index;
 	struct IoHriProcessorVpd *d;
+	u32 pft_size[2];
 
 	/* yuck */
 	snprintf(buf, 32, "PowerPC,%s", cur_cpu_spec->cpu_name);
@@ -882,6 +886,9 @@ void dt_cpus(struct iseries_flat_dt *dt)
 	dt_prop_u32(dt, "#address-cells", 1);
 	dt_prop_u32(dt, "#size-cells", 0);
 
+	pft_size[0] = 0; /* NUMA CEC cookie, 0 for non NUMA  */
+	pft_size[1] = __ilog2(HvCallHpt_getHptPages() * HW_PAGE_SIZE);
+
 	for (i = 0; i < NR_CPUS; i++) {
 		if (paca[i].lppaca.dyn_proc_status >= 2)
 			continue;
@@ -908,6 +915,8 @@ void dt_cpus(struct iseries_flat_dt *dt)
 
 		dt_prop_u32(dt, "reg", i);
 
+		dt_prop_u32_list(dt, "ibm,pft-size", pft_size, 2);
+
 		dt_end_node(dt);
 	}
 



More information about the Linuxppc64-dev mailing list