Re: [3/4] [PATCH]Diskdump - yet another crash dump function

From: Nobuhiro Tachino
Date: Thu Jun 17 2004 - 09:47:27 EST


Hello,

Takao Indoh wrote:
On Thu, 17 Jun 2004 15:11:40 +0200, Ingo Molnar wrote:


* Ingo Molnar <mingo@xxxxxxx> wrote:


* Takao Indoh <indou.takao@xxxxxxxxxxxxxxxx> wrote:


It sounds good because change of timer/tasklet code is not needed.
But, I wonder whether this method is safe. For example, if kernel
crashes because of problem of timer, clearing lists may be dangerous
before dumping. Is it possible to clear all timer lists safely?

yes it can be done safely - just INIT_LIST_HEAD() all the timer list
heads - like init_timers_cpu() does.

obviously this only involves the dumping CPU - no other CPU will run any
kernel code. On SMP you should also clear the timer spinlock of the
dumping CPU's timer base, if the crash happened within the timer code.

Ingo



How about this?

void clear_timers(void)
{
int j;
tvec_base_t *base;
base = &per_cpu(tvec_bases, smp_processor_id());
spin_lock_init(&base->lock);
for (j = 0; j < TVN_SIZE; j++) {
INIT_LIST_HEAD(base->tv5.vec + j);
INIT_LIST_HEAD(base->tv4.vec + j);
INIT_LIST_HEAD(base->tv3.vec + j);
INIT_LIST_HEAD(base->tv2.vec + j);
}
for (j = 0; j < TVR_SIZE; j++)
INIT_LIST_HEAD(base->tv1.vec + j);

base->timer_jiffies = jiffies;
}

I think you should save original values to somewhere else, so you can
refer these values from vmcore if you want.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/