[lkml]   [2009]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Disabling DMA with ICH10?
On Tue, 29 Sep 2009 09:54:16 +0200
"Lennart Baruschka" <> wrote:

> Hi,
> On Mon, 2009-09-28 at 23:40 +0100, Alan Cox wrote:
> > > 2. My system uses an ICH10 chipset, the harddrive is connected to
> > > the Intel SATA controller. Is there a way to disable DMA and
> > > switch back to PIO? I tried compiling with libata support and
> > > without SCSI support, but the kernel is unable to mount root (no
> > > matter if /dev/sda1 or /dev/hda1), then.
> >
> > If you disable DMA you will make your performance and latency worse
> > not better as the PIO transfers will stall the bus and thus the
> > processor.
> I thought that PIO transfers (which I understand to be
> write32()/read32()'s) unlike DMA transfers could be interrupted by an
> high-priority interrupt. Is that wrong?

a single PIO instruction will NOT be interrupted by an interrupt.
And can easily take several microseconds (remember: 8Mhz bus emulation)

while DMA is going on, the CPU on the other hand is just happy
executing instructions, fetching stuff from memory etc etc.

> Actually, that's what I do - except for locking the page, yet. I do
> need to access the PCI bus in real time, though. So I wonder what
> happens when the RT CPU is getting data from the PCI device, doing
> some calculations on it and then writing back some data to the device,
> __while at the same time__ another (non-RT) CPU starts a DMA
> transfer. I figured the DMA would block the PCI bus, having my
> interrupt wait for it to finish. That's why I'm trying to avoid DMA.

the PCI bus is time sliced, with typical transfer sizes being like 256
byte bursts...

Arjan van de Ven Intel Open Source Technology Centre
For development, discussion and tips for power savings,

 \ /
  Last update: 2009-09-29 10:13    [W:0.043 / U:0.064 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site