History

[PATCH] Change synchronize_kernel to _rcu and _sched

This patch changes calls to synchronize_kernel(), deprecated in the earlier "Deprecate synchronize_kernel, GPL replacement" patch to instead call the new synchronize_rcu() and synchronize_sched() APIs.

Paul E. McKenney committed 21 years ago

Commit fbd568a1 parent 9b06e8116 files · +18 −18Browse files

Unified · Split

16 files
  1. arch/i386/oprofile/nmi_timer_int.c +1 −1
  2. arch/ppc64/kernel/HvLpEvent.c +1 −1
  3. drivers/acpi/processor_idle.c +1 −1
  4. drivers/char/ipmi/ipmi_si_intf.c +2 −2
  5. drivers/input/keyboard/atkbd.c +1 −1
  6. drivers/md/multipath.c +1 −1
  7. drivers/md/raid1.c +1 −1
  8. drivers/md/raid10.c +1 −1
  9. drivers/md/raid5.c +1 −1
  10. drivers/md/raid6main.c +1 −1
  11. drivers/net/r8169.c +1 −1
  12. drivers/s390/cio/airq.c +2 −2
  13. kernel/module.c +1 −1
  14. kernel/profile.c +1 −1
  15. mm/slab.c +1 −1
  16. net/core/dev.c +1 −1
arch/i386/oprofile/nmi_timer_int.c+1−1
@@ -36,7 +36,7 @@ static void timer_stop(void) · 35 unmodified lines
3636 {
3737 enable_timer_nmi_watchdog();
3838 unset_nmi_callback();
39− synchronize_kernel();
39+ synchronize_sched(); /* Allow already-started NMIs to complete. */
4040 }
4141
4242
arch/ppc64/kernel/HvLpEvent.c+1−1
@@ -45,7 +45,7 @@ int HvLpEvent_unregisterHandler( HvLpEvent_Type eventType ) · 44 unmodified lines
4545 /* We now sleep until all other CPUs have scheduled. This ensures that
4646 * the deletion is seen by all other CPUs, and that the deleted handler
4747 * isn't still running on another CPU when we return. */
48− synchronize_kernel();
48+ synchronize_rcu();
4949 }
5050 }
5151 return rc;
drivers/acpi/processor_idle.c+1−1
@@ -838,7 +838,7 @@ int acpi_processor_cst_has_changed (struct acpi_processor *pr) · 837 unmodified lines
838838
839839 /* Fall back to the default idle loop */
840840 pm_idle = pm_idle_save;
841− synchronize_kernel();
841+ synchronize_sched(); /* Relies on interrupts forcing exit from idle. */
842842
843843 pr->flags.power = 0;
844844 result = acpi_processor_get_power_info(pr);
drivers/char/ipmi/ipmi_si_intf.c+2−2
@@ -2199,7 +2199,7 @@ static int init_one_smi(int intf_num, struct smi_info **smi) · 2198 unmodified lines
21992199 /* Wait until we know that we are out of any interrupt
22002200 handlers might have been running before we freed the
22012201 interrupt. */
2202− synchronize_kernel();
2202+ synchronize_sched();
22032203
22042204 if (new_smi->si_sm) {
22052205 if (new_smi->handlers)
@@ -2312,7 +2312,7 @@ static void __exit cleanup_one_si(struct smi_info *to_clean) · 106 unmodified lines
23122312 /* Wait until we know that we are out of any interrupt
23132313 handlers might have been running before we freed the
23142314 interrupt. */
2315− synchronize_kernel();
2315+ synchronize_sched();
23162316
23172317 /* Wait for the timer to stop. This avoids problems with race
23182318 conditions removing the timer here. */
drivers/input/keyboard/atkbd.c+1−1
@@ -678,7 +678,7 @@ static void atkbd_disconnect(struct serio *serio) · 677 unmodified lines
678678 atkbd_disable(atkbd);
679679
680680 /* make sure we don't have a command in flight */
681− synchronize_kernel();
681+ synchronize_sched(); /* Allow atkbd_interrupt()s to complete. */
682682 flush_scheduled_work();
683683
684684 device_remove_file(&serio->dev, &atkbd_attr_extra);
drivers/md/multipath.c+1−1
@@ -355,7 +355,7 @@ static int multipath_remove_disk(mddev_t *mddev, int number) · 354 unmodified lines
355355 goto abort;
356356 }
357357 p->rdev = NULL;
358− synchronize_kernel();
358+ synchronize_rcu();
359359 if (atomic_read(&rdev->nr_pending)) {
360360 /* lost the race, try later */
361361 err = -EBUSY;
drivers/md/raid1.c+1−1
@@ -797,7 +797,7 @@ static int raid1_remove_disk(mddev_t *mddev, int number) · 796 unmodified lines
797797 goto abort;
798798 }
799799 p->rdev = NULL;
800− synchronize_kernel();
800+ synchronize_rcu();
801801 if (atomic_read(&rdev->nr_pending)) {
802802 /* lost the race, try later */
803803 err = -EBUSY;
drivers/md/raid10.c+1−1
@@ -977,7 +977,7 @@ static int raid10_remove_disk(mddev_t *mddev, int number) · 976 unmodified lines
977977 goto abort;
978978 }
979979 p->rdev = NULL;
980− synchronize_kernel();
980+ synchronize_rcu();
981981 if (atomic_read(&rdev->nr_pending)) {
982982 /* lost the race, try later */
983983 err = -EBUSY;
drivers/md/raid5.c+1−1
@@ -1873,7 +1873,7 @@ static int raid5_remove_disk(mddev_t *mddev, int number) · 1872 unmodified lines
18731873 goto abort;
18741874 }
18751875 p->rdev = NULL;
1876− synchronize_kernel();
1876+ synchronize_rcu();
18771877 if (atomic_read(&rdev->nr_pending)) {
18781878 /* lost the race, try later */
18791879 err = -EBUSY;
drivers/md/raid6main.c+1−1
@@ -2038,7 +2038,7 @@ static int raid6_remove_disk(mddev_t *mddev, int number) · 2037 unmodified lines
20382038 goto abort;
20392039 }
20402040 p->rdev = NULL;
2041− synchronize_kernel();
2041+ synchronize_rcu();
20422042 if (atomic_read(&rdev->nr_pending)) {
20432043 /* lost the race, try later */
20442044 err = -EBUSY;
drivers/net/r8169.c+1−1
@@ -2385,7 +2385,7 @@ core_down: · 2384 unmodified lines
23852385 }
23862386
23872387 /* Give a racing hard_start_xmit a few cycles to complete. */
2388− synchronize_kernel();
2388+ synchronize_sched(); /* FIXME: should this be synchronize_irq()? */
23892389
23902390 /*
23912391 * And now for the 50k$ question: are IRQ disabled or not ?
drivers/s390/cio/airq.c+2−2
@@ -45,7 +45,7 @@ s390_register_adapter_interrupt (adapter_int_handler_t handler) · 44 unmodified lines
4545 else
4646 ret = (cmpxchg(&adapter_handler, NULL, handler) ? -EBUSY : 0);
4747 if (!ret)
48− synchronize_kernel();
48+ synchronize_sched(); /* Allow interrupts to complete. */
4949
5050 sprintf (dbf_txt, "ret:%d", ret);
5151 CIO_TRACE_EVENT (4, dbf_txt);
@@ -65,7 +65,7 @@ s390_unregister_adapter_interrupt (adapter_int_handler_t handler) · 13 unmodified lines
6565 ret = -EINVAL;
6666 else {
6767 adapter_handler = NULL;
68− synchronize_kernel();
68+ synchronize_sched(); /* Allow interrupts to complete. */
6969 ret = 0;
7070 }
7171 sprintf (dbf_txt, "ret:%d", ret);
kernel/module.c+1−1
@@ -1801,7 +1801,7 @@ sys_init_module(void __user *umod, · 1800 unmodified lines
18011801 /* Init routine failed: abort. Try to protect us from
18021802 buggy refcounters. */
18031803 mod->state = MODULE_STATE_GOING;
1804− synchronize_kernel();
1804+ synchronize_sched();
18051805 if (mod->unsafe)
18061806 printk(KERN_ERR "%s: module is now stuck!\n",
18071807 mod->name);
kernel/profile.c+1−1
@@ -184,7 +184,7 @@ void unregister_timer_hook(int (*hook)(struct pt_regs *)) · 183 unmodified lines
184184 WARN_ON(hook != timer_hook);
185185 timer_hook = NULL;
186186 /* make sure all CPUs see the NULL hook */
187− synchronize_kernel();
187+ synchronize_sched(); /* Allow ongoing interrupts to complete. */
188188 }
189189
190190 EXPORT_SYMBOL_GPL(register_timer_hook);
mm/slab.c+1−1
@@ -1666,7 +1666,7 @@ int kmem_cache_destroy(kmem_cache_t * cachep) · 1665 unmodified lines
16661666 }
16671667
16681668 if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU))
1669− synchronize_kernel();
1669+ synchronize_rcu();
16701670
16711671 /* no cpu_online check required here since we clear the percpu
16721672 * array on cpu offline and set this to NULL.
net/core/dev.c+1−1
@@ -3091,7 +3091,7 @@ void free_netdev(struct net_device *dev) · 3090 unmodified lines
30913091 void synchronize_net(void)
30923092 {
30933093 might_sleep();
3094− synchronize_kernel();
3094+ synchronize_rcu();
30953095 }
30963096
30973097 /**