dahdi: smp_mb_{before,after}_clear_bit -> smp_mb_{before,after}_atomic.
authorShaun Ruffell <sruffell@digium.com>
Thu, 16 Oct 2014 23:41:27 +0000 (18:41 -0500)
committerRuss Meyerriecks <rmeyerriecks@digium.com>
Mon, 20 Oct 2014 16:26:14 +0000 (11:26 -0500)
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 <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>

drivers/dahdi/wcaxx-base.c
drivers/dahdi/wcte12xp/base.c
drivers/dahdi/wcte13xp-base.c
drivers/dahdi/wcte43x-base.c
include/dahdi/kernel.h

index 2d2904b..3d3329f 100644 (file)
@@ -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);
index 0da767f..2fe74bc 100644 (file)
@@ -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);
index c061975..1917583 100644 (file)
@@ -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);
index dee0574..a718393 100644 (file)
@@ -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);
index 831ea5f..365801d 100644 (file)
@@ -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