The patch titled 3w-9xxx: kmap_atomic in twa_scsiop_execute_scsi has been removed from the -mm tree. Its filename is 3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. ------------------------------------------------------ Subject: 3w-9xxx: kmap_atomic in twa_scsiop_execute_scsi From: Vasily Averin <vvs@xxxxx> Avoid taking KM_IRQn with local interrupts enabled: it's deadlocky. (akpm: this might not be a bug, but it's surely a confidence-boost) (There's a debug patch in -mm which will detect this bug at runtime. There have been no reports..) Signed-off-by: Vasily Averin <vvs@xxxxx> Cc: adam radford <aradford@xxxxxxxxx> Cc: Adam Radford <linuxraid@xxxxxxxx> Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/scsi/3w-9xxx.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff -puN drivers/scsi/3w-9xxx.c~3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi drivers/scsi/3w-9xxx.c --- devel/drivers/scsi/3w-9xxx.c~3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi 2006-06-04 02:15:20.000000000 -0700 +++ devel-akpm/drivers/scsi/3w-9xxx.c 2006-06-04 02:15:20.000000000 -0700 @@ -1864,9 +1864,13 @@ static int twa_scsiop_execute_scsi(TW_De if ((tw_dev->srb[request_id]->use_sg == 1) && (tw_dev->srb[request_id]->request_bufflen < TW_MIN_SGL_LENGTH)) { if (tw_dev->srb[request_id]->sc_data_direction == DMA_TO_DEVICE || tw_dev->srb[request_id]->sc_data_direction == DMA_BIDIRECTIONAL) { struct scatterlist *sg = (struct scatterlist *)tw_dev->srb[request_id]->request_buffer; - char *buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset; + unsigned long flags = 0; + char *buf; + local_irq_save(flags); + buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset; memcpy(tw_dev->generic_buffer_virt[request_id], buf, sg->length); kunmap_atomic(buf - sg->offset, KM_IRQ0); + local_irq_restore(flags); } command_packet->sg_list[0].address = TW_CPU_TO_SGL(tw_dev->generic_buffer_phys[request_id]); command_packet->sg_list[0].length = cpu_to_le32(TW_MIN_SGL_LENGTH); _ Patches currently in -mm which might be from vvs@xxxxx are git-acpi.patch 3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html