mca_disable_dma – channel to disable DMA on

1. mca_disable_dma – channel to disable DMA on

void mca_disable_dma(unsigned int dmanr);
dmanr  DMA channel

2. Classroom

First  of  all,  DMA  (per  se) is  almost  entirely  obsolete.  As
originally defined,  DMA controllers  depended on thefact  that the
bus had  separate lines  to assert for  memory read/write,  and I/O
read/write. The DMA controller  took advantage of that by asserting
both  a memory  read and  I/O  write (or  vice versa)  at the  same
time. The DMA controller then generated successive addresses on the
bus, and  data was read from  memory and written to  an output port
(or vice versa) each bus cycle.

The  PCI bus,  however, does  not  have separate  lines for  memory
read/write and  I/O read/write. Instead,  it encodes one  (and only
one) command for  any given transaction. Instead of  using DMA, PCI
normally does  bus-masteringtransfers. This means instead  of a DMA
controller that transfers memory between the I/O device and memory,
the I/O device itself transfers data directly to or from memory.

As for what else  the CPU can do at the time,  it all depends. Back
when  DMA was  common, the  answer was  usually "not  much"  -- for
example,  under early  versions of  Windows, reading  or  writing a
floppy disk (which  did use the DMA controller)  pretty much locked
up the system for the duration.

Nowadays,  however, the memory  typically has  considerably greater
bandwidth than the  I/O bus, so even while  a peripheral is reading
or writing memory, there's usually  a fair amount of bandwidth left
over for the CPU to use.  In addition, a modern CPU typically has a
fair large cache, so it  can often execute some instruction without
using main memory at all.

source : http://stackoverflow.com/questions/5150719/direct-memory-access-dma-how-does-it-work

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s