diff -urNX dontdiff linux-2.5.23/drivers/cdrom/cm206.c linux-2.5.23-imm/drivers/cdrom/cm206.c --- linux-2.5.23/drivers/cdrom/cm206.c Mon Jun 17 04:49:04 2002 +++ linux-2.5.23-imm/drivers/cdrom/cm206.c Thu Jun 20 07:58:09 2002 @@ -345,6 +345,8 @@ } } +static struct tasklet_struct cm206_tasklet; + /* The interrupt handler. When the cm260 generates an interrupt, very much care has to be taken in reading out the registers in the right order; in case of a receive_buffer_full interrupt, first the @@ -432,7 +434,7 @@ if (cd->background && (cd->adapter_last - cd->adapter_first == cd->max_sectors || cd->fifo_overflowed)) - mark_bh(CM206_BH); /* issue a stop read command */ + tasklet_schedule(&cm206_tasklet); /* issue a stop read command */ stats(interrupt); } @@ -701,7 +703,7 @@ 4 c_stop waits for receive_buffer_full: 0xff */ -void cm206_bh(void) +static void cm206_tasklet_func(unsigned long ignore) { debug(("bh: %d\n", cd->background)); switch (cd->background) { @@ -745,6 +747,8 @@ } } +static DECLARE_TASKLET(cm206_tasklet, cm206_tasklet_func, 0); + /* This command clears the dsb_possible_media_change flag, so we must * retain it. */ @@ -1503,7 +1507,6 @@ blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_cm206_request, &cm206_lock); blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), 2048); - init_bh(CM206_BH, cm206_bh); memset(cd, 0, sizeof(*cd)); /* give'm some reasonable value */ cd->sector_last = -1; /* flag no data buffered */ diff -urNX dontdiff linux-2.5.23/include/linux/interrupt.h linux-2.5.23-imm/include/linux/interrupt.h --- linux-2.5.23/include/linux/interrupt.h Thu Jun 6 06:57:51 2002 +++ linux-2.5.23-imm/include/linux/interrupt.h Thu Jun 20 08:01:04 2002 @@ -28,20 +28,17 @@ enum { TIMER_BH = 0, - TQUEUE_BH, - DIGI_BH, - SERIAL_BH, - RISCOM8_BH, - SPECIALIX_BH, - AURORA_BH, - ESP_BH, - SCSI_BH, - IMMEDIATE_BH, - CYCLADES_BH, - CM206_BH, - JS_BH, - MACSERIAL_BH, - ISICOM_BH + TQUEUE_BH = 1, + DIGI_BH = 2, + SERIAL_BH = 3, + RISCOM8_BH = 4, + SPECIALIX_BH = 5, + AURORA_BH = 6, + ESP_BH = 7, + IMMEDIATE_BH = 9, + CYCLADES_BH = 10, + MACSERIAL_BH = 13, + ISICOM_BH = 14 }; #include