[PATCH CYCLADES 1/2] fix cli()/sti() for ISA Cyclom-Y boards

From: John Stoffel (stoffel@lucent.com)
Date: Wed Jun 18 2003 - 16:48:17 EST


Hi Linus,

This trivially fixes the cyclades driver under ISA to get rid of the
cli()/sti() locking and use a spin lock as described in the
Documentation/cli-sti-removal.txt instructions. I'm using this on an
SMP system without any problems so far.

Thanks,
John
john@stoffel.org

diff -ur l-2.5.72/drivers/char/cyclades.c l-2.5.72-cyclades/drivers/char/cyclades.c
--- l-2.5.72/drivers/char/cyclades.c Wed Jun 18 10:26:21 2003
+++ l-2.5.72-cyclades/drivers/char/cyclades.c Wed Jun 18 17:33:06 2003
@@ -867,6 +867,7 @@
 static int cyz_issue_cmd(struct cyclades_card *, uclong, ucchar, uclong);
 #ifdef CONFIG_ISA
 static unsigned detect_isa_irq (volatile ucchar *);
+spinlock_t isa_card_lock = SPIN_LOCK_UNLOCKED;
 #endif /* CONFIG_ISA */
 
 static int cyclades_get_proc_info(char *, char **, off_t , int , int *, void *);
@@ -1050,14 +1051,14 @@
     udelay(5000L);
 
     /* Enable the Tx interrupts on the CD1400 */
- save_flags(flags); cli();
+ spin_lock_irqsave(&isa_card_lock,flags);
         cy_writeb((u_long)address + (CyCAR<<index), 0);
         cyy_issue_cmd(address, CyCHAN_CTL|CyENB_XMTR, index);
 
         cy_writeb((u_long)address + (CyCAR<<index), 0);
         cy_writeb((u_long)address + (CySRER<<index),
                 cy_readb(address + (CySRER<<index)) | CyTxRdy);
- restore_flags(flags);
+ spin_unlock_irqrestore(&isa_card_lock, flags);
 
     /* Wait ... */
     udelay(5000L);
@@ -5675,13 +5676,13 @@
     }
 #endif /* CONFIG_CYZ_INTR */
 
- save_flags(flags); cli();
+ spin_lock_irqsave(&isa_card_lock, flags);
 
     if ((e1 = tty_unregister_driver(cy_serial_driver)))
             printk("cyc: failed to unregister Cyclades serial driver(%d)\n",
                 e1);
 
- restore_flags(flags);
+ spin_unlock_irqrestore(&isa_card_lock,flags);
     put_tty_driver(cy_serial_driver);
 
     for (i = 0; i < NR_CARDS; i++) {
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jun 23 2003 - 22:00:26 EST