This breaks out the logical steps to convert the qla2xxx timers: 1) init_timer() -> setup_timer() 2) refactor qla2x00_start_timer() to not pass callback as argument 3) qla2x00_timer() to use timer_setup() 4) qla2x00_sp_timeout() to use timer_setup() The resulting diff is identical to the patch that appears to lock up the driver. This should help identify which step causes this behavior. -Kees