From: Jens Axboe Currently imm uses page_address() which can crash on highmem. It's not directly doable to map the pages properly, at least not without changing some code. In lack of a ->bounce_highio member in the scsi host template, just set ->unchecked_isa_dma which will just bounce everything for us. imm isn't performance critical by any stretch of the imagination, so... Usually I'd not encourage such a silly hack, but in lack of hardware for testing (who has it??), this should suffice as it is obviously correct. Signed-off-by: Jens Axboe Signed-off-by: Andrew Morton --- 25-akpm/drivers/scsi/imm.c | 4 ++++ 1 files changed, 4 insertions(+) diff -puN drivers/scsi/imm.c~scsi-imm-fix drivers/scsi/imm.c --- 25/drivers/scsi/imm.c~scsi-imm-fix Fri Dec 10 15:18:29 2004 +++ 25-akpm/drivers/scsi/imm.c Fri Dec 10 15:18:29 2004 @@ -1140,6 +1140,10 @@ static struct scsi_host_template imm_tem .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 */ }; /*************************************************************************** _