linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Best way to segments/requests
@ 2007-12-13 22:59 Adrian McMenamin
  2007-12-14 15:05 ` Tejun Heo
  0 siblings, 1 reply; 4+ messages in thread
From: Adrian McMenamin @ 2007-12-13 22:59 UTC (permalink / raw)
  To: linux-ide

I am working on a driver for the CD Rom drive on the Sega Dreamcast
(the so-called "GD Rom" drive). This device is electorically
compatible with IDE-3 devices and has a pretty good match in terms of
the control block registers but it implements its own packet command
interface.

I now have a working driver but the performance is lousy.

The driver reads data off the disk using DMA and the target for the
DMA has to be a contiguous. Therefore I have set:

	/* using DMA so memory will need to be contiguous */
	blk_queue_max_hw_segments(gd.gdrom_rq, 1);
	/* set a large max size to get most from DMA */
	blk_queue_max_segment_size(gd.gdrom_rq, 0x40000);

ie only one segment per request but a big (for a small device) maximum
size for the segment.

A priori I can see no performance advantage in allowing each request
to include multiple segments because then I'd only have to reshake
them so they went in one at a time. But from the looks of it if I do
set the maximum number of segments to 1 then each request is limited
to the smallest size - ie what I set in blk_queue_hardsect_size.

Is that right? What is the best way to go here?

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-12-14 15:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-13 22:59 Best way to segments/requests Adrian McMenamin
2007-12-14 15:05 ` Tejun Heo
2007-12-14 15:22   ` Adrian McMenamin
2007-12-14 15:34     ` Mark Lord

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).