On Thu, Jun 23, 2016 at 6:02 PM, Denis Kirjanov <kirja...@gmail.com> wrote: > On 6/23/16, Oliver O'Halloran <ooh...@gmail.com> wrote: >> +static void __init set_decrementer_max(void) >> +{ >> + struct device_node *cpu; >> + const __be32 *fp; >> + u64 bits = 32; >> + >> + /* Prior to ISAv3 the decrementer is always 32 bit */ >> + if (!cpu_has_feature(CPU_FTR_ARCH_300)) >> + return; >> + >> + cpu = of_find_node_by_type(NULL, "cpu"); >> + if (cpu) >> + fp = of_get_property(cpu, "ibm,dec-bits", NULL); >> + >> + if (cpu && fp) { >> + bits = of_read_number(fp, 1); >> + >> + if (bits > 64 || bits < 32) { >> + pr_warn("time_init: firmware supplied invalid >> ibm,dec-bits"); >> + bits = 32; >> + } >> + >> + >> + /* calculate the signed maximum given this many bits */ >> + decrementer_max = (1ul << (bits - 1)) - 1; >> + } >> + >> + pr_info("time_init: %llu bit decrementer (max: %llx)\n", >> + bits, decrementer_max); >> +} > the call to of_node_put(cpu) is missing in the function.
Well spotted, thanks. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev