Information for setting up SMT related parameters on linux 2.6.16 on POWER5
From: Meswani, Mitesh <hidden>
Date: 2006-05-08 18:09:08
Hello I am looking to use the SMT related parameters like Snooze delay, HMT thread priorities, SMT ON/Off and wanted to know how to invoke and set them. I am running Open Suse 10 with 2.6.16.rc4-3-ppc64 kernel on eServer p590 2-way POWER5 partition. I noticed the parameters in /sys/devices/system/cpu/cpu# with the following : mmcr0 online pmc2 pmc5 smt_snooze_delay mmcr1 physical_id pmc3 pmc6 topology crash_notes mmcra pmc1 pmc4 purr setting the value in online to 0 seems to turn off the logical processor, but I am not sure what the others are for and the meaning of their hex values? It seems that there is include/asm-ppc64/processor.h with macros like HMT_very_low() , wonder if these can be set on command line since I am running unmodified app binaries. Thanks, Mitesh Mitesh R. Meswani Ph.D. Candidate Research Associate, PLS2 Group Room 106 F, Department of Computer Science The University of Texas at El Paso, El Paso, Texas 79968 Tel: 915 747 8012 (O) Email: mmeswani@utep.edu ________________________________ From: linuxppc-dev-bounces+mmeswani=utep.edu@ozlabs.org on behalf of Geoff Levand Sent: Fri 5/5/2006 6:00 PM To: Paul Mackerras Cc: Arnd Bergmann; Levand,Geoffrey; linux-kernel@vger.kernel.org; linuxppc-dev@ozlabs.org; Arnd Bergmann; cbe-oss-dev@ozlabs.org Subject: Re: [PATCH 04/13] cell: remove broken __setup_cpu_be function Paul Mackerras wrote:
Arnd Bergmann writes:quoted
From: Geoff Levand [off-list ref] This patch removes the incorrect Cell processor setup routine __setup_cpu_be. This routine improperly accesses the hypervisor page size configuration at SPR HID6. The correct behavior is for firmware, or if needed, platform setup code, to set the correct page size.quoted
- .cpu_setup = __setup_cpu_be, + .cpu_setup = __setup_cpu_power4,That looks a bit dodgy. Either just remove the contents of __setup_cpu_be (leaving only the blr), or define a __setup_cpu_null that does nothing, or make the identify_cpu not call the cpu setup function if the pointer is NULL.
OK, I set it up with __setup_cpu_null. An updated patch follows. It falls out from this that we can replace the do-nothing routines __setup_cpu_power3 and __setup_cpu_power4 with __setup_cpu_null also. I'll post a separate patch for consideration. -Geoff Replaced the Cell processor specific routine __setup_cpu_be with a new generic routine __setup_cpu_null. __setup_cpu_be improperly accessed the hypervisor page size configuration at SPR HID6. Correct behavior is for firmware, or if needed, platform setup code, to set the correct page size. Signed-off-by: Geoff Levand <redacted> Index: cell--alp--3/arch/powerpc/kernel/cpu_setup_power4.S ===================================================================
--- cell--alp--3.orig/arch/powerpc/kernel/cpu_setup_power4.S 2006-04-26 19:19:25.000000000 -0700
+++ cell--alp--3/arch/powerpc/kernel/cpu_setup_power4.S 2006-05-05 15:59:58.000000000 -0700@@ -76,20 +76,6 @@ _GLOBAL(__setup_cpu_power4) blr -_GLOBAL(__setup_cpu_be) - /* Set large page sizes LP=0: 16MB, LP=1: 64KB */ - addi r3, 0, 0 - ori r3, r3, HID6_LB - sldi r3, r3, 32 - nor r3, r3, r3 - mfspr r4, SPRN_HID6 - and r4, r4, r3 - addi r3, 0, 0x02000 - sldi r3, r3, 32 - or r4, r4, r3 - mtspr SPRN_HID6, r4 - blr - _GLOBAL(__setup_cpu_ppc970) mfspr r0,SPRN_HID0 li r11,5 /* clear DOZE and SLEEP */
Index: cell--alp--3/arch/powerpc/kernel/cputable.c ===================================================================
--- cell--alp--3.orig/arch/powerpc/kernel/cputable.c 2006-04-26 19:19:25.000000000 -0700
+++ cell--alp--3/arch/powerpc/kernel/cputable.c 2006-05-05 16:29:06.000000000 -0700@@ -31,9 +31,9 @@ * and ppc64 */ #ifdef CONFIG_PPC64 +extern void __setup_cpu_null(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec); -extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec); #else extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
@@ -273,7 +273,7 @@ PPC_FEATURE_SMT, .icache_bsize = 128, .dcache_bsize = 128, - .cpu_setup = __setup_cpu_be, + .cpu_setup = __setup_cpu_null, .platform = "ppc-cell-be", }, { /* default match */
Index: cell--alp--3/arch/powerpc/kernel/misc_64.S ===================================================================
--- cell--alp--3.orig/arch/powerpc/kernel/misc_64.S 2006-04-26 19:19:25.000000000 -0700
+++ cell--alp--3/arch/powerpc/kernel/misc_64.S 2006-05-05 16:04:59.000000000 -0700@@ -768,6 +768,9 @@ #endif /* CONFIG_ALTIVEC */ +_GLOBAL(__setup_cpu_null) + blr + _GLOBAL(__setup_cpu_power3) blr
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev