Commit 79caa7d5 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] Remove More Unneccessary CPU Notifiers

From: Rusty Russell <rusty@rustcorp.com.au>

Three more removed CPU notifiers extracted from the hotplug CPU patch.

kernel/softirq.c: the tasklet cpu prepration callback is useless:
the vectors are already initialized to NULL.  Even with the hotplug
CPU patches, they're of little or no use.

fs/buffer.c: once again, they are already initialized to zero.

mm/page_alloc.c: once again, already initialized to zero.
parent d01feda8
......@@ -2987,33 +2987,6 @@ init_buffer_head(void *data, kmem_cache_t *cachep, unsigned long flags)
}
}
static void buffer_init_cpu(int cpu)
{
struct bh_accounting *bha = &per_cpu(bh_accounting, cpu);
struct bh_lru *bhl = &per_cpu(bh_lrus, cpu);
bha->nr = 0;
bha->ratelimit = 0;
memset(bhl, 0, sizeof(*bhl));
}
static int __devinit buffer_cpu_notify(struct notifier_block *self,
unsigned long action, void *hcpu)
{
long cpu = (long)hcpu;
switch(action) {
case CPU_UP_PREPARE:
buffer_init_cpu(cpu);
break;
default:
break;
}
return NOTIFY_OK;
}
static struct notifier_block __devinitdata buffer_nb = {
.notifier_call = buffer_cpu_notify,
};
void __init buffer_init(void)
{
......@@ -3031,9 +3004,6 @@ void __init buffer_init(void)
*/
nrpages = (nr_free_buffer_pages() * 10) / 100;
max_buffer_heads = nrpages * (PAGE_SIZE / sizeof(struct buffer_head));
buffer_cpu_notify(&buffer_nb, (unsigned long)CPU_UP_PREPARE,
(void *)(long)smp_processor_id());
register_cpu_notifier(&buffer_nb);
}
EXPORT_SYMBOL(__bforget);
......
......@@ -300,38 +300,10 @@ void tasklet_kill(struct tasklet_struct *t)
EXPORT_SYMBOL(tasklet_kill);
static void tasklet_init_cpu(int cpu)
{
per_cpu(tasklet_vec, cpu).list = NULL;
per_cpu(tasklet_hi_vec, cpu).list = NULL;
}
static int tasklet_cpu_notify(struct notifier_block *self,
unsigned long action, void *hcpu)
{
long cpu = (long)hcpu;
switch(action) {
case CPU_UP_PREPARE:
tasklet_init_cpu(cpu);
break;
default:
break;
}
return 0;
}
static struct notifier_block tasklet_nb = {
.notifier_call = tasklet_cpu_notify,
.next = NULL,
};
void __init softirq_init(void)
{
open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);
open_softirq(HI_SOFTIRQ, tasklet_hi_action, NULL);
tasklet_cpu_notify(&tasklet_nb, (unsigned long)CPU_UP_PREPARE,
(void *)(long)smp_processor_id());
register_cpu_notifier(&tasklet_nb);
}
static int ksoftirqd(void * __bind_cpu)
......
......@@ -1536,34 +1536,9 @@ struct seq_operations vmstat_op = {
#endif /* CONFIG_PROC_FS */
static void __devinit init_page_alloc_cpu(int cpu)
{
struct page_state *ps = &per_cpu(page_states, cpu);
memset(ps, 0, sizeof(*ps));
}
static int __devinit page_alloc_cpu_notify(struct notifier_block *self,
unsigned long action, void *hcpu)
{
int cpu = (unsigned long)hcpu;
switch(action) {
case CPU_UP_PREPARE:
init_page_alloc_cpu(cpu);
break;
default:
break;
}
return NOTIFY_OK;
}
static struct notifier_block __devinitdata page_alloc_nb = {
.notifier_call = page_alloc_cpu_notify,
};
void __init page_alloc_init(void)
{
init_page_alloc_cpu(smp_processor_id());
register_cpu_notifier(&page_alloc_nb);
}
/*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment