* [PATCH] powerpc: print cores passed to firmware in decimal @ 2010-07-22 5:15 Michael Neuling 2010-07-22 15:11 ` Segher Boessenkool 2010-07-22 21:09 ` Jesse Larrew 0 siblings, 2 replies; 7+ messages in thread From: Michael Neuling @ 2010-07-22 5:15 UTC (permalink / raw) To: benh, linuxppc-dev Currently we look pretty stupid when printing out the number of cores passed to FW Max number of cores passed to firmware: 0x0000000000000080 So I've change this to print in decimal: Max number of cores passed to firmware: 128 (NR_CPUS = 256) This required adding a prom_print_dec() function. Signed-off-by: Michael Neuling <mikey@neuling.org> -- Anton suggested printing it in EBCDIC, but I nixed that. arch/powerpc/kernel/prom_init.c | 32 +++++++++++++++++++++++++++++--- 1 files changed, 29 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 3b6f8ae..4428d26 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -311,6 +311,27 @@ static void __init prom_print_hex(unsigned long val) call_prom("write", 3, 1, _prom->stdout, buf, nibbles); } +/* max number of decimal digits in an unsigned long */ +#define UL_DIGITS 21 +static void __init prom_print_dec(unsigned long val) +{ + int i, size; + char buf[UL_DIGITS+1]; + struct prom_t *_prom = &RELOC(prom); + + for (i = UL_DIGITS-1; i >= 0; i--) { + buf[i] = (val % 10) + '0'; + val = val/10; + if (val == 0) + break; + } + /* shift stuff down */ + size = UL_DIGITS - i; + for (i = 0 ; i < size ; i++) + buf[i] = buf[i + UL_DIGITS - size]; + buf[size+1] = '\0'; + call_prom("write", 3, 1, _prom->stdout, buf, size); +} static void __init prom_printf(const char *format, ...) { @@ -350,6 +371,11 @@ static void __init prom_printf(const char *format, ...) v = va_arg(args, unsigned long); prom_print_hex(v); break; + case 'i': + ++q; + v = va_arg(args, unsigned long); + prom_print_dec(v); + break; } } } @@ -869,12 +895,12 @@ static void __init prom_send_capabilities(void) cores = (u32 *)PTRRELOC(&ibm_architecture_vec[IBM_ARCH_VEC_NRCORES_OFFSET]); if (*cores != NR_CPUS) { prom_printf("WARNING ! " - "ibm_architecture_vec structure inconsistent: 0x%x !\n", + "ibm_architecture_vec structure inconsistent: 0x%i !\n", *cores); } else { *cores = DIV_ROUND_UP(NR_CPUS, prom_count_smt_threads()); - prom_printf("Max number of cores passed to firmware: 0x%x\n", - (unsigned long)*cores); + prom_printf("Max number of cores passed to firmware: %i (NR_CPUS = %i)\n", + *cores, NR_CPUS); } /* try calling the ibm,client-architecture-support method */ ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: print cores passed to firmware in decimal 2010-07-22 5:15 [PATCH] powerpc: print cores passed to firmware in decimal Michael Neuling @ 2010-07-22 15:11 ` Segher Boessenkool 2010-07-22 23:15 ` Michael Neuling 2010-07-22 21:09 ` Jesse Larrew 1 sibling, 1 reply; 7+ messages in thread From: Segher Boessenkool @ 2010-07-22 15:11 UTC (permalink / raw) To: Michael Neuling; +Cc: linuxppc-dev > + case 'i': > + ++q; > + v = va_arg(args, unsigned long); > + prom_print_dec(v); > + break; Unsigned long should be "%lu". Segher ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: print cores passed to firmware in decimal 2010-07-22 15:11 ` Segher Boessenkool @ 2010-07-22 23:15 ` Michael Neuling 0 siblings, 0 replies; 7+ messages in thread From: Michael Neuling @ 2010-07-22 23:15 UTC (permalink / raw) To: Segher Boessenkool; +Cc: linuxppc-dev Currently we look pretty stupid when printing out the number of cores passed to FW Max number of cores passed to firmware: 0x0000000000000080 So I've change this to print in decimal: Max number of cores passed to firmware: 128 (NR_CPUS = 256) This required adding a prom_print_dec() function. Signed-off-by: Michael Neuling <mikey@neuling.org> -- > Unsigned long should be "%lu". Changed %i to %lu as per Segher request arch/powerpc/kernel/prom_init.c | 35 ++++++++++++++++++++++++++++++++--- 1 files changed, 32 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 3b6f8ae..e8b68ff 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -311,6 +311,27 @@ static void __init prom_print_hex(unsigned long val) call_prom("write", 3, 1, _prom->stdout, buf, nibbles); } +/* max number of decimal digits in an unsigned long */ +#define UL_DIGITS 21 +static void __init prom_print_dec(unsigned long val) +{ + int i, size; + char buf[UL_DIGITS+1]; + struct prom_t *_prom = &RELOC(prom); + + for (i = UL_DIGITS-1; i >= 0; i--) { + buf[i] = (val % 10) + '0'; + val = val/10; + if (val == 0) + break; + } + /* shift stuff down */ + size = UL_DIGITS - i; + for (i = 0 ; i < size ; i++) + buf[i] = buf[i + UL_DIGITS - size]; + buf[size+1] = '\0'; + call_prom("write", 3, 1, _prom->stdout, buf, size); +} static void __init prom_printf(const char *format, ...) { @@ -350,6 +371,14 @@ static void __init prom_printf(const char *format, ...) v = va_arg(args, unsigned long); prom_print_hex(v); break; + case 'l': + ++q; + if (*q == 'u') { /* '%lx' */ + ++q; + v = va_arg(args, unsigned long); + prom_print_dec(v); + } + break; } } } @@ -869,12 +898,12 @@ static void __init prom_send_capabilities(void) cores = (u32 *)PTRRELOC(&ibm_architecture_vec[IBM_ARCH_VEC_NRCORES_OFFSET]); if (*cores != NR_CPUS) { prom_printf("WARNING ! " - "ibm_architecture_vec structure inconsistent: 0x%x !\n", + "ibm_architecture_vec structure inconsistent: 0x%lu !\n", *cores); } else { *cores = DIV_ROUND_UP(NR_CPUS, prom_count_smt_threads()); - prom_printf("Max number of cores passed to firmware: 0x%x\n", - (unsigned long)*cores); + prom_printf("Max number of cores passed to firmware: %lu (NR_CPUS = %lu)\n", + *cores, NR_CPUS); } /* try calling the ibm,client-architecture-support method */ ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: print cores passed to firmware in decimal 2010-07-22 5:15 [PATCH] powerpc: print cores passed to firmware in decimal Michael Neuling 2010-07-22 15:11 ` Segher Boessenkool @ 2010-07-22 21:09 ` Jesse Larrew 2010-07-23 1:44 ` Michael Neuling 1 sibling, 1 reply; 7+ messages in thread From: Jesse Larrew @ 2010-07-22 21:09 UTC (permalink / raw) To: linuxppc-dev On 07/22/2010 12:15 AM, Michael Neuling wrote: > @@ -869,12 +895,12 @@ static void __init prom_send_capabilities(void) > cores = (u32 *)PTRRELOC(&ibm_architecture_vec[IBM_ARCH_VEC_NRCORES_OFFSET]); > if (*cores != NR_CPUS) { > prom_printf("WARNING ! " > - "ibm_architecture_vec structure inconsistent: 0x%x !\n", > + "ibm_architecture_vec structure inconsistent: 0x%i !\n", > *cores); > Since we're changing from hex to decimal, we shouldn't print the "0x". Sincerely, -- Jesse Larrew Software Engineer, Linux on Power Kernel Team IBM Linux Technology Center Phone: (512) 973-2052 (T/L: 363-2052) jlarrew@linux.vnet.ibm.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: print cores passed to firmware in decimal 2010-07-22 21:09 ` Jesse Larrew @ 2010-07-23 1:44 ` Michael Neuling 2010-07-28 1:24 ` [PATCH] powerpc: print decimal values in prom_init.c Michael Neuling 0 siblings, 1 reply; 7+ messages in thread From: Michael Neuling @ 2010-07-23 1:44 UTC (permalink / raw) To: Jesse Larrew, benh; +Cc: linuxppc-dev Currently we look pretty stupid when printing out the number of cores passed to FW Max number of cores passed to firmware: 0x0000000000000080 So I've change this to print in decimal: Max number of cores passed to firmware: 128 (NR_CPUS = 256) This required adding a prom_print_dec() function. Signed-off-by: Michael Neuling <mikey@neuling.org> --- > > cores = (u32 *)PTRRELOC(&ibm_architecture_vec[IBM_ARCH_VEC_NRCO RES_OFFSET]); > > if (*cores != NR_CPUS) { > > prom_printf("WARNING ! " > > - "ibm_architecture_vec structure inconsisten t: 0x%x !\n", > > + "ibm_architecture_vec structure inconsisten t: 0x%i !\n", > > *cores); > > > > Since we're changing from hex to decimal, we shouldn't print the "0x". Oops yes. Thanks! BTW please CC me directly rather than sending only to the list. arch/powerpc/kernel/prom_init.c | 35 ++++++++++++++++++++++++++++++++--- 1 files changed, 32 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 3b6f8ae..28b9116 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -311,6 +311,27 @@ static void __init prom_print_hex(unsigned long val) call_prom("write", 3, 1, _prom->stdout, buf, nibbles); } +/* max number of decimal digits in an unsigned long */ +#define UL_DIGITS 21 +static void __init prom_print_dec(unsigned long val) +{ + int i, size; + char buf[UL_DIGITS+1]; + struct prom_t *_prom = &RELOC(prom); + + for (i = UL_DIGITS-1; i >= 0; i--) { + buf[i] = (val % 10) + '0'; + val = val/10; + if (val == 0) + break; + } + /* shift stuff down */ + size = UL_DIGITS - i; + for (i = 0 ; i < size ; i++) + buf[i] = buf[i + UL_DIGITS - size]; + buf[size+1] = '\0'; + call_prom("write", 3, 1, _prom->stdout, buf, size); +} static void __init prom_printf(const char *format, ...) { @@ -350,6 +371,14 @@ static void __init prom_printf(const char *format, ...) v = va_arg(args, unsigned long); prom_print_hex(v); break; + case 'l': + ++q; + if (*q == 'u') { /* '%lu' */ + ++q; + v = va_arg(args, unsigned long); + prom_print_dec(v); + } + break; } } } @@ -869,12 +898,12 @@ static void __init prom_send_capabilities(void) cores = (u32 *)PTRRELOC(&ibm_architecture_vec[IBM_ARCH_VEC_NRCORES_OFFSET]); if (*cores != NR_CPUS) { prom_printf("WARNING ! " - "ibm_architecture_vec structure inconsistent: 0x%x !\n", + "ibm_architecture_vec structure inconsistent: %lu !\n", *cores); } else { *cores = DIV_ROUND_UP(NR_CPUS, prom_count_smt_threads()); - prom_printf("Max number of cores passed to firmware: 0x%x\n", - (unsigned long)*cores); + prom_printf("Max number of cores passed to firmware: %lu (NR_CPUS = %lu)\n", + *cores, NR_CPUS); } /* try calling the ibm,client-architecture-support method */ ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH] powerpc: print decimal values in prom_init.c 2010-07-23 1:44 ` Michael Neuling @ 2010-07-28 1:24 ` Michael Neuling 2010-07-28 4:26 ` Michael Neuling 0 siblings, 1 reply; 7+ messages in thread From: Michael Neuling @ 2010-07-28 1:24 UTC (permalink / raw) To: Jesse Larrew, benh, linuxppc-dev, Olof Johansson, anton Currently we look pretty stupid when printing out a bunch of things in prom_init.c. eg. Max number of cores passed to firmware: 0x0000000000000080 So I've change this to print in decimal: Max number of cores passed to firmware: 128 (NR_CPUS = 256) This required adding a prom_print_dec() function and changing some prom_printk() calls from %x to %lu. Signed-off-by: Michael Neuling <mikey@neuling.org> --- This version changes more things over to decimal. arch/powerpc/kernel/prom_init.c | 47 +++++++++++++++++++++++++++++++------- 1 files changed, 38 insertions(+), 9 deletions(-) diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 3b6f8ae..7bc5ae8 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -311,6 +311,27 @@ static void __init prom_print_hex(unsigned long val) call_prom("write", 3, 1, _prom->stdout, buf, nibbles); } +/* max number of decimal digits in an unsigned long */ +#define UL_DIGITS 21 +static void __init prom_print_dec(unsigned long val) +{ + int i, size; + char buf[UL_DIGITS+1]; + struct prom_t *_prom = &RELOC(prom); + + for (i = UL_DIGITS-1; i >= 0; i--) { + buf[i] = (val % 10) + '0'; + val = val/10; + if (val == 0) + break; + } + /* shift stuff down */ + size = UL_DIGITS - i; + for (i = 0 ; i < size ; i++) + buf[i] = buf[i + UL_DIGITS - size]; + buf[size+1] = '\0'; + call_prom("write", 3, 1, _prom->stdout, buf, size); +} static void __init prom_printf(const char *format, ...) { @@ -350,6 +371,14 @@ static void __init prom_printf(const char *format, ...) v = va_arg(args, unsigned long); prom_print_hex(v); break; + case 'l': + ++q; + if (*q == 'u') { /* '%lu' */ + ++q; + v = va_arg(args, unsigned long); + prom_print_dec(v); + } + break; } } } @@ -835,11 +864,11 @@ static int __init prom_count_smt_threads(void) if (plen == PROM_ERROR) break; plen >>= 2; - prom_debug("Found 0x%x smt threads per core\n", (unsigned long)plen); + prom_debug("Found %lu smt threads per core\n", (unsigned long)plen); /* Sanity check */ if (plen < 1 || plen > 64) { - prom_printf("Threads per core 0x%x out of bounds, assuming 1\n", + prom_printf("Threads per core %lu out of bounds, assuming 1\n", (unsigned long)plen); return 1; } @@ -869,12 +898,12 @@ static void __init prom_send_capabilities(void) cores = (u32 *)PTRRELOC(&ibm_architecture_vec[IBM_ARCH_VEC_NRCORES_OFFSET]); if (*cores != NR_CPUS) { prom_printf("WARNING ! " - "ibm_architecture_vec structure inconsistent: 0x%x !\n", + "ibm_architecture_vec structure inconsistent: %lu!\n", *cores); } else { *cores = DIV_ROUND_UP(NR_CPUS, prom_count_smt_threads()); - prom_printf("Max number of cores passed to firmware: 0x%x\n", - (unsigned long)*cores); + prom_printf("Max number of cores passed to firmware: %lu (NR_CPUS = %lu)\n", + *cores, NR_CPUS); } /* try calling the ibm,client-architecture-support method */ @@ -1482,7 +1511,7 @@ static void __init prom_hold_cpus(void) reg = -1; prom_getprop(node, "reg", ®, sizeof(reg)); - prom_debug("cpu hw idx = 0x%x\n", reg); + prom_debug("cpu hw idx = %lu\n", reg); /* Init the acknowledge var which will be reset by * the secondary cpu when it awakens from its OF @@ -1492,7 +1521,7 @@ static void __init prom_hold_cpus(void) if (reg != _prom->cpu) { /* Primary Thread of non-boot cpu */ - prom_printf("starting cpu hw idx %x... ", reg); + prom_printf("starting cpu hw idx %lu... ", reg); call_prom("start-cpu", 3, 0, node, secondary_hold, reg); @@ -1507,7 +1536,7 @@ static void __init prom_hold_cpus(void) } #ifdef CONFIG_SMP else - prom_printf("boot cpu hw idx %x\n", reg); + prom_printf("boot cpu hw idx %lu\n", reg); #endif /* CONFIG_SMP */ } @@ -2420,7 +2449,7 @@ static void __init prom_find_boot_cpu(void) prom_getprop(cpu_pkg, "reg", &getprop_rval, sizeof(getprop_rval)); _prom->cpu = getprop_rval; - prom_debug("Booting CPU hw index = 0x%x\n", _prom->cpu); + prom_debug("Booting CPU hw index = %lu\n", _prom->cpu); } static void __init prom_check_initrd(unsigned long r3, unsigned long r4) ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: print decimal values in prom_init.c 2010-07-28 1:24 ` [PATCH] powerpc: print decimal values in prom_init.c Michael Neuling @ 2010-07-28 4:26 ` Michael Neuling 0 siblings, 0 replies; 7+ messages in thread From: Michael Neuling @ 2010-07-28 4:26 UTC (permalink / raw) To: benh; +Cc: Olof Johansson, Paul Mackerras, linuxppc-dev, Jesse Larrew, anton Currently we look pretty stupid when printing out a bunch of things in prom_init.c. eg. Max number of cores passed to firmware: 0x0000000000000080 So I've change this to print in decimal: Max number of cores passed to firmware: 128 (NR_CPUS = 256) This required adding a prom_print_dec() function and changing some prom_printk() calls from %x to %lu. Signed-off-by: Michael Neuling <mikey@neuling.org> --- Bike shed colour status: Mauve. Thanks to a suggestion from paulus, we are now 3 lines shorter. arch/powerpc/kernel/prom_init.c | 44 +++++++++++++++++++++++++++++++-------- 1 files changed, 35 insertions(+), 9 deletions(-) diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 3b6f8ae..941ff4d 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -311,6 +311,24 @@ static void __init prom_print_hex(unsigned long val) call_prom("write", 3, 1, _prom->stdout, buf, nibbles); } +/* max number of decimal digits in an unsigned long */ +#define UL_DIGITS 21 +static void __init prom_print_dec(unsigned long val) +{ + int i, size; + char buf[UL_DIGITS+1]; + struct prom_t *_prom = &RELOC(prom); + + for (i = UL_DIGITS-1; i >= 0; i--) { + buf[i] = (val % 10) + '0'; + val = val/10; + if (val == 0) + break; + } + /* shift stuff down */ + size = UL_DIGITS - i; + call_prom("write", 3, 1, _prom->stdout, buf+i, size); +} static void __init prom_printf(const char *format, ...) { @@ -350,6 +368,14 @@ static void __init prom_printf(const char *format, ...) v = va_arg(args, unsigned long); prom_print_hex(v); break; + case 'l': + ++q; + if (*q == 'u') { /* '%lu' */ + ++q; + v = va_arg(args, unsigned long); + prom_print_dec(v); + } + break; } } } @@ -835,11 +861,11 @@ static int __init prom_count_smt_threads(void) if (plen == PROM_ERROR) break; plen >>= 2; - prom_debug("Found 0x%x smt threads per core\n", (unsigned long)plen); + prom_debug("Found %lu smt threads per core\n", (unsigned long)plen); /* Sanity check */ if (plen < 1 || plen > 64) { - prom_printf("Threads per core 0x%x out of bounds, assuming 1\n", + prom_printf("Threads per core %lu out of bounds, assuming 1\n", (unsigned long)plen); return 1; } @@ -869,12 +895,12 @@ static void __init prom_send_capabilities(void) cores = (u32 *)PTRRELOC(&ibm_architecture_vec[IBM_ARCH_VEC_NRCORES_OFFSET]); if (*cores != NR_CPUS) { prom_printf("WARNING ! " - "ibm_architecture_vec structure inconsistent: 0x%x !\n", + "ibm_architecture_vec structure inconsistent: %lu!\n", *cores); } else { *cores = DIV_ROUND_UP(NR_CPUS, prom_count_smt_threads()); - prom_printf("Max number of cores passed to firmware: 0x%x\n", - (unsigned long)*cores); + prom_printf("Max number of cores passed to firmware: %lu (NR_CPUS = %lu)\n", + *cores, NR_CPUS); } /* try calling the ibm,client-architecture-support method */ @@ -1482,7 +1508,7 @@ static void __init prom_hold_cpus(void) reg = -1; prom_getprop(node, "reg", ®, sizeof(reg)); - prom_debug("cpu hw idx = 0x%x\n", reg); + prom_debug("cpu hw idx = %lu\n", reg); /* Init the acknowledge var which will be reset by * the secondary cpu when it awakens from its OF @@ -1492,7 +1518,7 @@ static void __init prom_hold_cpus(void) if (reg != _prom->cpu) { /* Primary Thread of non-boot cpu */ - prom_printf("starting cpu hw idx %x... ", reg); + prom_printf("starting cpu hw idx %lu... ", reg); call_prom("start-cpu", 3, 0, node, secondary_hold, reg); @@ -1507,7 +1533,7 @@ static void __init prom_hold_cpus(void) } #ifdef CONFIG_SMP else - prom_printf("boot cpu hw idx %x\n", reg); + prom_printf("boot cpu hw idx %lu\n", reg); #endif /* CONFIG_SMP */ } @@ -2420,7 +2446,7 @@ static void __init prom_find_boot_cpu(void) prom_getprop(cpu_pkg, "reg", &getprop_rval, sizeof(getprop_rval)); _prom->cpu = getprop_rval; - prom_debug("Booting CPU hw index = 0x%x\n", _prom->cpu); + prom_debug("Booting CPU hw index = %lu\n", _prom->cpu); } static void __init prom_check_initrd(unsigned long r3, unsigned long r4) ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2010-07-28 4:26 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-07-22 5:15 [PATCH] powerpc: print cores passed to firmware in decimal Michael Neuling 2010-07-22 15:11 ` Segher Boessenkool 2010-07-22 23:15 ` Michael Neuling 2010-07-22 21:09 ` Jesse Larrew 2010-07-23 1:44 ` Michael Neuling 2010-07-28 1:24 ` [PATCH] powerpc: print decimal values in prom_init.c Michael Neuling 2010-07-28 4:26 ` Michael Neuling
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).