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

From: Takao Indoh
Date: Thu Jun 17 2004 - 09:01:38 EST


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;
}

And new function which runs timer during dumping is needed,
like __run_timers() does...

Best Regards,
Takao Indoh

-
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/