From: Rusty Russell 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. --- 25-akpm/fs/buffer.c | 30 ------------------------------ 25-akpm/kernel/softirq.c | 28 ---------------------------- 25-akpm/mm/page_alloc.c | 25 ------------------------- 3 files changed, 83 deletions(-) diff -puN fs/buffer.c~remove-more-cpu-notifiers fs/buffer.c --- 25/fs/buffer.c~remove-more-cpu-notifiers Wed Feb 4 12:49:45 2004 +++ 25-akpm/fs/buffer.c Wed Feb 4 12:49:45 2004 @@ -2991,33 +2991,6 @@ init_buffer_head(void *data, kmem_cache_ } } -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) { @@ -3035,9 +3008,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); diff -puN kernel/softirq.c~remove-more-cpu-notifiers kernel/softirq.c --- 25/kernel/softirq.c~remove-more-cpu-notifiers Wed Feb 4 12:49:45 2004 +++ 25-akpm/kernel/softirq.c Wed Feb 4 12:49:45 2004 @@ -311,38 +311,10 @@ void tasklet_kill(struct tasklet_struct 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) diff -puN mm/page_alloc.c~remove-more-cpu-notifiers mm/page_alloc.c --- 25/mm/page_alloc.c~remove-more-cpu-notifiers Wed Feb 4 12:49:45 2004 +++ 25-akpm/mm/page_alloc.c Wed Feb 4 12:49:45 2004 @@ -1556,34 +1556,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); } /* _