[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: use/cause of ide=nodma boot parameter?



On Wed, Sep 15, 2004 at 09:50:13AM +0200, Pavel R wrote:

> John Best wrote:
> 
> >Through my difficult time trying to get started with FC2, I found that I
> >needed to use the ide=nodma boot parameter to get things to work.   Failure
> >to do so resulted in a system hang while loading the appropriate disk/io
> >drivers during boot/install.  My question to the group is..
> >
> >Is this caused by a misconfiguration of the IDE environment or other HW
> >problem?  Or is this just something that happens?  Does use of this
> >parameter cause/create any other issues (disable functionality, increase
> >risk, compatibility?)
> > 
> >
> I think that it just happens. Some drives do not work reliable with DMA. 
> This setting  supposed to be harmless in terms of 
> compatibility/functionality.
> 
> >Computer is ....

This is not something that 'just happens' it is a bug of unknown
nature that has yet to be isolated and fixed for this specific
hardware and specific set of drivers.

Turning off DMA is commonly safe.  It might consume
processor cycles...

I cannot speak to the specifics of your problem but in general DMA can
interact with cache memory in complex ways or interact with kernel
task queues in bad ways if the coherency model of the hardware is
mismatched to the code/driver.

Various chip sets manage memory and cache differently. Some chip sets
have latency/race issues to memory as well.

So to speculate, If cache and memory at address 0xABC contains data or
a flag and a DMA engine modifies memory at address 0xABC how can the
processor get the new data without the driver author triggering some
magic to update cache.  Some memory is DMA coherent some is not....

For some chip sets the DMA engines are shared and if the DMA engine is
not available when the disk needs to DMA data then either the data is
lost or the system stalls.  

If the DMA engine can modify data without synchronization with the
processor those data regions would be bad for mutual exclusion flags
or other critical code paths.  Data in registers saved on a stack in
not guaranteed equal to data in memory that the register was loaded
from.

Then there are issues with cache line size and data alignment...
DMA and read-modify-write is a tangle.

Device driver authors commonly use a set of standard functions that are
hardware aware and specific.  If a driver author establishes
additional code paths for data or device registers then there can be a
loss of correctness and bad things happen (like a hang).

By turning off DMA, cache memory consistency from the processor side
is simpler to manage and sharing of DMA hardware can be eliminated.

One hardware problem might be a DMA engine with a four cache line deep
FIFO to memory.  If the engine reports done (interrupts) when the last
cache line is in the FIFO but prior to the memory functional block
pushing that data out to memory a modern gigahertz processor can be
well down multiple speculation execution paths before the fourth cache
lines of DMAed bits gets committed to memory.

It is important to think of a DMA engine as a co-processor that
requires full synchronization little different than a second processor.

The larger the cache the larger the impact of such problems is.

Above I said that there was a bug....
Now the trick is to report that bug in a productive way.

Review the previous posts and draft a bug so folks can help you flesh
it out.  When a couple of the better folks here have had a go at it
then file the final draft.

The bug needs to be rich in facts.  
 unique descriptive subject.
 you see...
 your hardware is...
 your software is...
 your active drivers are...
 your work around is/are...

In a bug report do not speculate as I have above.
Try to not diagnose the problem in the initial report.
(You might in a subsequent conversation if you feel it can help.)
i.e. in the initial report skip the "I think" and  "I suspect" stuff.
Just the facts... save long data sets that might clutter the
initial report (stuff like "lspci -vvv") for attachments or a 
follow up message.   

Offer to help... and then help.


-- 
	T o m  M i t c h e l l 
	In the USA, vote informed, second Tuesday Nov 2004.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]