Subject: Re: kern/36716: cd(4) problem with transfers exceeding 65535 bytes
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: netbsd-bugs
Date: 08/01/2007 17:05:03
The following reply was made to PR kern/36716; it has been noted by GNATS.

From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
To: rumble@ephemeral.org
Cc: gnats-bugs@NetBSD.org, kern-bug-people@NetBSD.org,
	gnats-admin@NetBSD.org, netbsd-bugs@NetBSD.org,
	tsutsui@ceres.dti.ne.jp
Subject: Re: kern/36716: cd(4) problem with transfers exceeding 65535 bytes
Date: Thu, 2 Aug 2007 02:02:05 +0900

 stephen.rumble@utoronto.ca wrote:
 
 > If I understand things correctly, the problem is that non-2048b  
 > sectors weren't working properly and your solution was to use 2048b  
 > sectors and update the disklabel offsets/lengths in memory, yes? If  
 > that's the case, I think it's only hiding the problem. We need  
 > d_secsize == 512 for EFS images, and it should 'just work'.
 
 Hmm, I thought d_secsize represented hardware sector size
 so it should be the same with params.blksize, but if d_secsize
 represents logical sector size, my fix might be wrong.
 
 I'm not sure why my fix works if d_secsize should be 512 though,
 and I wonder if logical sector size which is different from hardware
 sector size should be handled in lower drivers such as cd(4) or
 upper filesystem layers.
 
 >    1) Is issuing requests > MAXPHYS to scsipi inherently bad or unsupported?
 
 Ususally lower device drivers don't allocate resources for
 xfers more than MAXPHYS. In most case bus_dmamap_create(9)
 takes MAXPHYS for "size" arg so bus_dmamap_load(9) will
 fail on a request for >MAXPHYS xfer.
 
 >    2) To satisfy my curiosity, can anybody tell me why limiting the ATAPI DMA
 >       transfer size to 0xfffd or lower avoids the problem, while limiting to
 >       0xfffe or 0xffff does not?
 
 I guess DMA on pciide(4) is done per 32bit and can't across 64k boundary.
 (per dev/pci/pciide_common.c etc.)
 ---
 Izumi Tsutsui