sata_nv and dynamically changing DMA mask?

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Robert Hancock
Date: Monday, October 29, 2007 - 9:17 pm

In the sata_nv driver, when running in ADMA mode, we can do 64-bit DMA. 
However, when an ATAPI device like a DVD drive is connected, we can't 
use ADMA mode, and so we have to abide by the restrictions of a normal 
SFF ATA controller and can only do 32-bit DMA. We detect this and try to 
set the blk_queue_bounce_limit, blk_queue_segment_boundary and 
blk_queue_max_hw_segments to the values corresponding to a normal SFF 
controller.

However, we have this bug report:

https://bugzilla.redhat.com/show_bug.cgi?id=351451

that their DVD drive doesn't work properly on a computer with 4GB of RAM 
unless they either disable ADMA (thus resulting in the DMA parameters 
being initialized to the SFF ones from the start) or pass mem=3000M to 
the kernel to keep the memory above the 4GB mark from being used. Thus I 
suspect that what we're trying to do with the DMA parameters is not taking.

Question is: is setting blk_queue_bounce_limit enough to prevent 
addresses outside that mask from showing up, or does the device DMA mask 
also need to be updated? Is there anything wrong with just changing the 
DMA mask at runtime? Keep in mind, ATAPI and non-ATAPI devices can 
potentially be switched out on the port, so the mask might need to be 
updated at runtime..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
sata_nv and dynamically changing DMA mask?, Robert Hancock, (Mon Oct 29, 9:17 pm)
Re: sata_nv and dynamically changing DMA mask?, Alan Cox, (Tue Oct 30, 3:05 am)
Re: sata_nv and dynamically changing DMA mask?, Robert Hancock, (Tue Oct 30, 4:59 pm)