I understand the old sli/sti interface should no longer be used : unsigned long flags; save_flags(flags); cli(); /* critical section . restore_flags(flags); and should be replaced by the spinlock interface spinlock_t mr_lock = SPIN_LOCK_UNLOCKED; unsigned long flags; spin_lock_irqsave(&mr_lock, flags); /* critical section ... */ spin_unlock_irqrestore(&mr_lock, flags) but I am working with a few different drivers (some of which I didn't write). They are using gpio ports on a embedded arm processor. My critial code would set a single bit in a port (the other modules use other bits in the same port) i.e.: outl(inl(XXXX_PORT) | XXXX_MASK, XXXX_PORT); If I use the spinlocks, the spinlock_t mr_lock is not availble in all the modules.... so do I have a locking problem? how should I code this ? Thanks in advance. unsigned long flags; save_flags(flags); cli(); /* critical section . restore_flags(flags); ____________________________________________________ Start your day with Yahoo! - make it your home page http://www.yahoo.com/r/hs -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/