From 4f0cf5fb984f06ddc7e00ea28b2b821f5979e799 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Thu, 16 Oct 2014 18:41:27 -0500 Subject: [PATCH] dahdi: smp_mb_{before,after}_clear_bit -> smp_mb_{before,after}_atomic. This is needed to compile against upstream Linux 3.18 since commit "locking: Remove deprecated smp_mb__() barriers" [1]. [1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2e39465abc4b7856a0ea6fcf4f Signed-off-by: Shaun Ruffell Signed-off-by: Russ Meyerriecks (cherry picked from commit 378986841cbf7c94e43dc34580def06088116652) --- drivers/dahdi/wcaxx-base.c | 2 +- drivers/dahdi/wcte12xp/base.c | 4 ++-- drivers/dahdi/wcte13xp-base.c | 4 ++-- drivers/dahdi/wcte43x-base.c | 2 +- include/dahdi/kernel.h | 12 ++++++++++++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/dahdi/wcaxx-base.c b/drivers/dahdi/wcaxx-base.c index 2d2904b..3d3329f 100644 --- a/drivers/dahdi/wcaxx-base.c +++ b/drivers/dahdi/wcaxx-base.c @@ -3823,7 +3823,7 @@ static void wcaxx_back_out_gracefully(struct wcaxx *wc) unsigned long flags; clear_bit(INITIALIZED, &wc->bit_flags); - smp_mb__after_clear_bit(); + smp_mb__after_atomic(); /* Make sure we're not on the card list anymore. */ mutex_lock(&card_list_lock); diff --git a/drivers/dahdi/wcte12xp/base.c b/drivers/dahdi/wcte12xp/base.c index 0da767f..2fe74bc 100644 --- a/drivers/dahdi/wcte12xp/base.c +++ b/drivers/dahdi/wcte12xp/base.c @@ -2110,7 +2110,7 @@ static int t1xxp_set_linemode(struct dahdi_span *span, enum spantypes linemode) * them. */ clear_bit(INITIALIZED, &wc->bit_flags); synchronize_irq(wc->vb.pdev->irq); - smp_mb__after_clear_bit(); + smp_mb__after_atomic(); del_timer_sync(&wc->timer); flush_workqueue(wc->wq); @@ -3076,7 +3076,7 @@ static void __devexit te12xp_remove_one(struct pci_dev *pdev) remove_sysfs_files(wc); clear_bit(INITIALIZED, &wc->bit_flags); - smp_mb__after_clear_bit(); + smp_mb__after_atomic(); del_timer_sync(&wc->timer); flush_workqueue(wc->wq); diff --git a/drivers/dahdi/wcte13xp-base.c b/drivers/dahdi/wcte13xp-base.c index c061975..1917583 100644 --- a/drivers/dahdi/wcte13xp-base.c +++ b/drivers/dahdi/wcte13xp-base.c @@ -1849,7 +1849,7 @@ static int t13x_set_linemode(struct dahdi_span *span, enum spantypes linemode) clear_bit(INITIALIZED, &wc->bit_flags); disable_irq(wc->xb.pdev->irq); - smp_mb__after_clear_bit(); + smp_mb__after_atomic(); del_timer_sync(&wc->timer); flush_workqueue(wc->wq); @@ -2725,7 +2725,7 @@ static void __devexit te13xp_remove_one(struct pci_dev *pdev) return; clear_bit(INITIALIZED, &wc->bit_flags); - smp_mb__after_clear_bit(); + smp_mb__after_atomic(); /* Quiesce DMA engine interrupts */ wcxb_stop(&wc->xb); diff --git a/drivers/dahdi/wcte43x-base.c b/drivers/dahdi/wcte43x-base.c index dee0574..a718393 100644 --- a/drivers/dahdi/wcte43x-base.c +++ b/drivers/dahdi/wcte43x-base.c @@ -3581,7 +3581,7 @@ static void __devexit t43x_remove_one(struct pci_dev *pdev) return; wc->not_ready = 1; - smp_mb__after_clear_bit(); + smp_mb__after_atomic(); /* Stop everything */ wcxb_stop(&wc->xb); diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h index 831ea5f..365801d 100644 --- a/include/dahdi/kernel.h +++ b/include/dahdi/kernel.h @@ -1408,6 +1408,17 @@ static inline short dahdi_txtone_nextsample(struct dahdi_chan *ss) /*! Maximum audio mask */ #define DAHDI_FORMAT_AUDIO_MASK ((1 << 16) - 1) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) + +/* DAHDI only was using the xxx_clear_bit variants. */ +#ifndef smp_mb__before_atomic +#define smp_mb__before_atomic smp_mb__before_clear_bit +#endif + +#ifndef smp_mb__after_atomic +#define smp_mb__after_atomic smp_mb__after_clear_bit +#endif + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) #ifdef RHEL_RELEASE_VERSION #if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(6, 5) @@ -1523,6 +1534,7 @@ static inline int strcasecmp(const char *s1, const char *s2) #endif /* 2.6.27 */ #endif /* 2.6.31 */ #endif /* 3.10.0 */ +#endif /* 3.16.0 */ #ifndef DEFINE_SPINLOCK #define DEFINE_SPINLOCK(x) spinlock_t x = SPIN_LOCK_UNLOCKED