public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Donald Becker <becker@scyld.com>
Cc: Alan Shieh <ashieh@cs.cornell.edu>,
	Daniel Rodrick <daniel.rodrick@gmail.com>,
	Linux Newbie <linux-newbie@vger.kernel.org>,
	kernelnewbies <kernelnewbies@nl.linux.org>,
	linux-net@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: Univeral Protocol Driver (using UNDI) in Linux
Date: Thu, 10 Aug 2006 14:08:13 -0700	[thread overview]
Message-ID: <44DBA03D.1050505@zytor.com> (raw)
In-Reply-To: <Pine.LNX.4.44.0608101156490.20933-100000@bluewest.scyld.com>

Donald Becker wrote:
> On Tue, 8 Aug 2006, Alan Shieh wrote:
> 
>> With help from the Etherboot Project, I've recently implemented such a 
>> driver for Etherboot 5.4. It currently supports PIO NICs (e.g. cards 
>> that use in*/out* to interface with CPU). It's currently available in a 
>> branch, and will be merged into the trunk by the Etherboot project. It 
>> works reliably with QEMU + PXELINUX, with the virtual ne2k-pci NIC.
>>
>> Barring unforseen issues, I should get MMIO to work soon; target 
>> platform would be pcnet32 or e1000 on VMware, booted with PXELINUX.
> 
> Addressing a very narrow terminology issue:
> 
> I think that there a misuse of terms here.  PIO, or Programmed I/O, is 
> data transfer mode where the CPU explicitly passes data to and from a 
> device through a single register location.
> 
> The term is unrelated to the device being addressed in I/O or memory 
> space.  On the x86, hardware devices were usually in the I/O address space 
> and there are special "string" I/O instructions, so PIO and I/O space were 
> usually paired.  But processors without I/O instructions could still do 
> PIO transfers.
> 
> Memory Mapped I/O, MMIO, is putting the device registers in memory space.  
> In the past it specifically meant sharing memory on the device e.g. when 
> the packet buffer memory on a WD8013 NIC was jumpered into the ISA address 
> space below 1MB.  The CPU still controls the data transfer, generating a 
> write for each word transfered.  But the address changed with each write, 
> just like a memcpy.
> 

Basically:

	PIO	= CPU initiates transfers
	DMA	= device initiates transfers(*)
	IOIO	= I/O mapped PIO
	MMIO	= Memory mapped PIO


> Today "MMIO" is sometimes misused to mean simply using a PCI memory 
> mapping rather than a PCI I/O space mapping.  PCI actually has three 
> address spaces: memory, I/O and config spaces.  Many devices allow 
> accessing the operational registers either through I/O or memory spaces.

Why is that a misuse?

	-hpa


(*) There are actually two kinds of DMA, bus mastering DMA, in which the 
device itself initiates transfers, and slave DMA, in which a third agent 
(the DMA controller) initiates transfers.  In modern PC systems slave 
DMA is extremely slow and is only used for legacy devices, pretty much 
the floppy disk and nothing else, but some other architectures have 
modern implementations and slave DMA is widely used.

  reply	other threads:[~2006-08-10 21:10 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-07 10:39 Univeral Protocol Driver (using UNDI) in Linux Daniel Rodrick
2006-08-07 15:09 ` H. Peter Anvin
2006-08-07 16:11   ` Daniel Rodrick
2006-08-07 16:49     ` H. Peter Anvin
2006-08-08  5:13       ` Daniel Rodrick
2006-08-08 15:04         ` Alan Shieh
2006-08-10  8:18           ` Daniel Rodrick
2006-08-11 20:01             ` Alan Shieh
2006-08-10 20:59           ` Donald Becker
2006-08-10 21:08             ` H. Peter Anvin [this message]
2006-08-11 20:48             ` Alan Shieh
2006-08-08 16:35         ` H. Peter Anvin
2006-08-07 18:00     ` Jan Engelhardt
2006-08-07 18:15       ` H. Peter Anvin
  -- strict thread matches above, loose matches on Subject: below --
2006-09-28  9:59 Deepak Gupta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44DBA03D.1050505@zytor.com \
    --to=hpa@zytor.com \
    --cc=ashieh@cs.cornell.edu \
    --cc=becker@scyld.com \
    --cc=daniel.rodrick@gmail.com \
    --cc=kernelnewbies@nl.linux.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-net@vger.kernel.org \
    --cc=linux-newbie@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox