Messages in this thread Patch in this message |  | | From | PARMELAN Edouard <> | Subject | Patch 2.1.x sr.c | Date | Fri, 22 Nov 96 14:36:00 PST |
| |
Hi,
With 2.1.x, I have lot of "Running low on SCSI DMA..." messages on console and in /var/log/kernel: Nov 19 22:26:08 woxlab kernel: Module inserted: Generic CD-ROM driver, v 1.21 1996/11/08 03:24:49 Nov 19 22:26:08 woxlab kernel: Detected scsi CD-ROM sr0 at scsi0, channel 0, id 3, lun 0 Nov 19 22:26:08 woxlab kernel: Disc change detected. Nov 19 22:26:08 woxlab kernel: sr: use "Sony group" multisession code Nov 19 22:26:08 woxlab kernel: VFS: Disk change detected on device 0b:00 Nov 19 22:26:08 woxlab kernel: Max size:340424 Log zone size:2048 Nov 19 22:26:08 woxlab kernel: First datazone:36 Root inode number 73728 Nov 19 22:26:08 woxlab kernel: ISO9660 Extensions: RRIP_1991A Nov 19 22:27:16 woxlab kernel: Cannot read proc file system. Nov 19 22:27:46 woxlab last message repeated 6511 times Nov 19 22:28:47 woxlab last message repeated 16548 times Nov 19 22:29:48 woxlab last message repeated 18581 times Nov 19 22:30:49 woxlab last message repeated 18053 times Nov 19 22:31:51 woxlab last message repeated 18881 times Nov 19 22:32:51 woxlab last message repeated 19078 times Nov 19 22:33:52 woxlab last message repeated 18998 times Nov 19 22:34:53 woxlab last message repeated 18907 times Nov 19 22:35:54 woxlab last message repeated 19149 times Nov 19 22:36:55 woxlab last message repeated 19187 times Nov 19 22:37:56 woxlab last message repeated 19728 times Nov 19 22:38:58 woxlab last message repeated 18883 times Nov 19 22:39:58 woxlab last message repeated 19002 times Nov 19 22:40:59 woxlab last message repeated 20008 times Nov 19 22:42:00 woxlab last message repeated 19960 times Nov 19 22:43:01 woxlab last message repeated 20287 times Nov 19 22:44:02 woxlab last message repeated 19464 times Nov 19 22:45:04 woxlab last message repeated 18420 times Nov 19 22:46:04 woxlab last message repeated 19373 times Nov 19 22:47:05 woxlab last message repeated 19734 times Nov 19 22:48:07 woxlab last message repeated 20295 times Nov 19 22:49:07 woxlab last message repeated 19428 times
when I read big file from SCSI CD-ROM. (I can read it and file is correct).
I don't have this problem with my SCSI disk (root fs).
After a look to drivers/scsi/sr.c and drivers/scsi/sd.c, I found what's wrong:
In sd.c ALL tests with ISA_DMA_THRESHOLD call virt_to_phys() and virt_to_phys() is ONLY call with ISA_DMA_THRESHOLD tests.
In sr.c virt_to_phys() is NEVER call. In ALL tests with ISA_DMA_THRESHOLD I add the virt_to_phys() call. It's work fine with 2.1.10 and may apply to 2.1.11.
Edouard.Parmelan@France.NCR.COM
--- drivers/scsi/sr.c.orig Thu Nov 21 22:58:02 1996 +++ drivers/scsi/sr.c Thu Nov 21 23:04:17 1996 @@ -35,6 +35,7 @@ #include <linux/interrupt.h> #include <linux/config.h> #include <asm/system.h> +#include <asm/io.h> #define MAJOR_NR SCSI_CDROM_MAJOR #include <linux/blk.h> @@ -617,7 +618,7 @@ if (count+1 != SCpnt->use_sg) panic("Bad sr request list"); break; }; - if (((long) sgpnt[count].address) + sgpnt[count].length - 1 > + if (virt_to_phys(sgpnt[count].address) + sgpnt[count].length - 1 > ISA_DMA_THRESHOLD && SCpnt->host->unchecked_isa_dma) { sgpnt[count].alt_address = sgpnt[count].address; /* We try to avoid exhausting the DMA pool, since it is easier @@ -681,7 +682,7 @@ { this_count -= this_count % 4; buffer = (unsigned char *) SCpnt->request.buffer; - if (((long) buffer) + (this_count << 9) > ISA_DMA_THRESHOLD && + if (virt_to_phys(buffer) + (this_count << 9) > ISA_DMA_THRESHOLD && SCpnt->host->unchecked_isa_dma) buffer = (unsigned char *) scsi_malloc(this_count << 9); }
|  |