Upcoming glibc header files have no visible definition of HZ anymore. A glibc macro exist to query the current tick rate. This macro will likely work for all other apps, Unfortunately crash wants to know the HZ value of the crashed kernel. My patch makes the assumption that the dump file is analyzed on a system similar to the crashed one. I dont know how accurate that is. If I read the source right, HZ is currently forced to be 1000 which is not true either. Newer kernels can be configured for 100, 250 and 1000. Ideally, the core file exports HZ in some way. I see cfq_slice_async is used to get the HZ value in task_init(). --- alpha.c | 2 +- ia64.c | 2 +- ppc.c | 4 +--- ppc64.c | 4 +--- s390.c | 2 +- s390x.c | 2 +- x86.c | 4 +--- x86_64.c | 4 +--- 8 files changed, 8 insertions(+), 16 deletions(-) Index: crash-4.0-2.33/alpha.c =================================================================== --- crash-4.0-2.33.orig/alpha.c +++ crash-4.0-2.33/alpha.c @@ -186,7 +186,7 @@ alpha_init(int when) "irq_desc", NULL, 0); else machdep->nr_irqs = 0; - machdep->hz = HZ; + machdep->hz = sysconf(_SC_CLK_TCK); break; case POST_INIT: Index: crash-4.0-2.33/ppc.c =================================================================== --- crash-4.0-2.33.orig/ppc.c +++ crash-4.0-2.33/ppc.c @@ -135,9 +135,7 @@ ppc_init(int when) "irq_desc", NULL, 0); else machdep->nr_irqs = 0; - machdep->hz = HZ; - if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) - machdep->hz = 1000; + machdep->hz = sysconf(_SC_CLK_TCK); machdep->section_size_bits = _SECTION_SIZE_BITS; machdep->max_physmem_bits = _MAX_PHYSMEM_BITS; break; Index: crash-4.0-2.33/ppc64.c =================================================================== --- crash-4.0-2.33.orig/ppc64.c +++ crash-4.0-2.33/ppc64.c @@ -237,9 +237,7 @@ ppc64_init(int when) */ BZERO(&machdep->machspec->hwintrstack, NR_CPUS*sizeof(ulong)); - machdep->hz = HZ; - if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) - machdep->hz = 1000; + machdep->hz = sysconf(_SC_CLK_TCK); /* * IRQ stacks are introduced in 2.6 and also configurable. */ Index: crash-4.0-2.33/s390.c =================================================================== --- crash-4.0-2.33.orig/s390.c +++ crash-4.0-2.33/s390.c @@ -158,7 +158,7 @@ s390_init(int when) machdep->nr_irqs = 0; /* TBD */ machdep->vmalloc_start = s390_vmalloc_start; machdep->dump_irq = s390_dump_irq; - machdep->hz = HZ; + machdep->hz = sysconf(_SC_CLK_TCK); break; case POST_INIT: Index: crash-4.0-2.33/s390x.c =================================================================== --- crash-4.0-2.33.orig/s390x.c +++ crash-4.0-2.33/s390x.c @@ -173,7 +173,7 @@ s390x_init(int when) machdep->nr_irqs = 0; /* TBD */ machdep->vmalloc_start = s390x_vmalloc_start; machdep->dump_irq = s390x_dump_irq; - machdep->hz = HZ; + machdep->hz = sysconf(_SC_CLK_TCK); break; case POST_INIT: Index: crash-4.0-2.33/x86.c =================================================================== --- crash-4.0-2.33.orig/x86.c +++ crash-4.0-2.33/x86.c @@ -1775,9 +1775,7 @@ x86_init(int when) "irq_desc", NULL, 0); else machdep->nr_irqs = 224; /* NR_IRQS */ - machdep->hz = HZ; - if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) - machdep->hz = 1000; + machdep->hz = sysconf(_SC_CLK_TCK); if (machdep->flags & PAE){ machdep->section_size_bits = _SECTION_SIZE_BITS_PAE; Index: crash-4.0-2.33/x86_64.c =================================================================== --- crash-4.0-2.33.orig/x86_64.c +++ crash-4.0-2.33/x86_64.c @@ -238,9 +238,7 @@ x86_64_init(int when) machdep->nr_irqs = 224; /* NR_IRQS (at least) */ machdep->vmalloc_start = x86_64_vmalloc_start; machdep->dump_irq = x86_64_dump_irq; - machdep->hz = HZ; - if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) - machdep->hz = 1000; + machdep->hz = sysconf(_SC_CLK_TCK); machdep->section_size_bits = _SECTION_SIZE_BITS; machdep->max_physmem_bits = _MAX_PHYSMEM_BITS; if (XEN()) { Index: crash-4.0-2.33/ia64.c =================================================================== --- crash-4.0-2.33.orig/ia64.c +++ crash-4.0-2.33/ia64.c @@ -205,7 +205,7 @@ ia64_init(int when) else if (symbol_exists("_irq_desc")) ARRAY_LENGTH_INIT(machdep->nr_irqs, irq_desc, "_irq_desc", NULL, 0); - machdep->hz = 1024; + machdep->hz = sysconf(_SC_CLK_TCK); ia64_create_memmap(); break;