[Fwd: Fw: [PATCH] PURR data on iSeries Linux]

Jeff Scheel scheel at vnet.ibm.com
Wed Nov 10 08:27:01 EST 2004


> Shoot, the patch was truncated by my other mailer...I'll repost as soon as I
> dump my current mailer.  Sorry.

Let's try this again.
-Jeff

--- linuxppc-2.6.9_rc1.orig/arch/ppc64/kernel/lparcfg.c	2004-11-09 07:03:43.354383000 -0600
+++ linuxppc-2.6.9_rc1/arch/ppc64/kernel/lparcfg.c	2004-11-09 10:40:36.375934020 -0600
@@ -34,7 +34,7 @@
 #include <asm/rtas.h>
 #include <asm/system.h>
 
-#define MODULE_VERS "1.4"
+#define MODULE_VERS "1.5"
 #define MODULE_NAME "lparcfg"
 
 /* #define LPARCFG_DEBUG */
@@ -70,6 +70,30 @@
 
 #ifdef CONFIG_PPC_ISERIES
 
+static unsigned long get_purr(void);
+
+/*
+ * For iSeries legacy systems, the PPA purr function is available from the
+ * xEmulatedTimeBase field in the paca.
+ */
+static unsigned long get_purr()
+{
+	unsigned long sum_purr=0;
+	int cpu;
+	struct paca_struct *lpaca;
+
+	for_each_online_cpu(cpu) {
+		lpaca = paca + cpu;
+		sum_purr += lpaca->xLpPaca.xEmulatedTimeBase;
+
+#ifdef PURR_DEBUG
+		printk(KERN_INFO "get_purr for cpu (%x) has value (%lx) \n",
+			cpu,lpaca->xLpPaca.xEmulatedTimeBase);
+#endif
+	}
+	return sum_purr;
+}
+
 #define lparcfg_write NULL
 
 /* 
@@ -81,6 +105,7 @@
 	int shared, entitled_capacity, max_entitled_capacity;
 	int processors, max_processors;
 	struct paca_struct *lpaca = get_paca();
+	unsigned long purr = get_purr();
 
 	shared = (int)(lpaca->lppaca_ptr->xSharedProc);
 	seq_printf(m, "serial_number=%c%c%c%c%c%c%c\n",
@@ -131,6 +156,7 @@
 		seq_printf(m, "pool_capacity=%d\n",
 			   (int)(HvLpConfig_getNumProcsInSharedPool(pool_id) *
 				 100));
+		seq_printf(m, "purr=%ld\n", purr);
 	}
 
 	seq_printf(m, "shared_processor_mode=%d\n", shared);





More information about the Linuxppc64-dev mailing list