X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fscsi%2Fimm.c;h=be7f2ca0183fdcaccb16ab7c8197a4084258e147;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=a4e953bed5b0084a58152055460e5153ab3b1acc;hpb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;p=linux-2.6.git diff --git a/drivers/scsi/imm.c b/drivers/scsi/imm.c index a4e953bed..be7f2ca01 100644 --- a/drivers/scsi/imm.c +++ b/drivers/scsi/imm.c @@ -60,7 +60,7 @@ static inline imm_struct *imm_dev(struct Scsi_Host *host) return *(imm_struct **)&host->hostdata; } -static spinlock_t arbitration_lock = SPIN_LOCK_UNLOCKED; +static DEFINE_SPINLOCK(arbitration_lock); static void got_it(imm_struct *dev) { @@ -758,7 +758,7 @@ static void imm_interrupt(void *data) case DID_OK: break; case DID_NO_CONNECT: - printk("imm: no device at SCSI ID %i\n", cmd->target); + printk("imm: no device at SCSI ID %i\n", cmd->device->id); break; case DID_BUS_BUSY: printk("imm: BUS BUSY - EPP timeout detected\n"); @@ -793,7 +793,7 @@ static void imm_interrupt(void *data) imm_pb_dismiss(dev); spin_lock_irqsave(host->host_lock, flags); - dev->cur_cmd = 0; + dev->cur_cmd = NULL; cmd->scsi_done(cmd); spin_unlock_irqrestore(host->host_lock, flags); return; @@ -1118,6 +1118,12 @@ static int device_check(imm_struct *dev) return -ENODEV; } +static int imm_adjust_queue(struct scsi_device *device) +{ + blk_queue_bounce_limit(device->request_queue, BLK_BOUNCE_HIGH); + return 0; +} + static struct scsi_host_template imm_template = { .module = THIS_MODULE, .proc_name = "imm", @@ -1133,6 +1139,11 @@ static struct scsi_host_template imm_template = { .cmd_per_lun = 1, .use_clustering = ENABLE_CLUSTERING, .can_queue = 1, + .slave_alloc = imm_adjust_queue, + .unchecked_isa_dma = 1, /* imm cannot deal with highmem, so + * this is an easy trick to ensure + * all io pages for this host reside + * in low memory */ }; /***************************************************************************