poll: problems with MTRRs?
D. Hugh Redelmeier
hugh-pmF8o41NoarQT0dZR+AlfA at public.gmane.org
Tue Mar 17 15:23:39 UTC 2009
| From: Lennart Sorensen <lsorense-1wCw9BSqJbv44Nm34jS7GywD8/FfD2ys at public.gmane.org>
| Reply-To: tlug-lxSQFCZeNF4 at public.gmane.org
| To: tlug-lxSQFCZeNF4 at public.gmane.org
| Subject: Re: [TLUG]: poll: problems with MTRRs?
|
| On Mon, Mar 16, 2009 at 09:28:51PM -0400, D. Hugh Redelmeier wrote:
| > PCI addresses are 64 bits but most devices only use 32-bit addresses.
| > On ordinary (non-64-bit) PCI, passing 64-bit addresses takes two
| > transfers. I don't know about PCIe.
|
| No PCI can be 32 or 64bit. If a device is 32bit then it can only address
| 32bit addresses at all. Many devices are this way. It's simpler and
| cheaper to implement them with only room for 32bit addresses. Why intel
| decided that in IDE mode it should be 32bit and in AHCI it should be
| 64bit capable I have no idea. Maybe PCI IDE was simply always defined
| as 32bit only. At least on the current ICH10 series they finally made
| AHCI officially available on both the raid and nonraid versions.
Even with a 32-bit PCI bus, 64-bit addresses can be supported.
Look at http://pinouts.ru/Slots/PCI_pinout.shtml
Although it is not widely implemented, PCI supports 64-bit addressing.
Unlike the 64-bit data bus option which requires a longer connector
with an additional 32-bits of data signals, 64-bit addressing can be
supported through the base 32-bit connector. Dual Address Cycles are
issued in which the low order 32-bits of the address are driven onto
the AD[31:0] signals during the first address phase, and the high
order 32-bits of the address (if non-zero) are driven onto the
AD[31:0] signals during a second address phase. The remainder of the
transfer continues like a normal bus transfer.
On the 64-bit PCI bus, there are 64 AD lines so that a 64-bit address
can be transmitted in one cycle.
My *guess* is that any 32-bit device could choose to support 64-bit
addresses but the computer would not need to handle this if it chose
never to program any DMAs beyond 4GiB.
| Unfortunately, while AMD CPUs with their onboard memory controller also
| included an IOMMU on almost all of the chips (some early ones didn't
| have it as far as I recall), intel did not do the same in their chipsets,
| except for some server chipsets. Hence my Core2Quad + P35 chipset has
| no IOMMU and has to do a softIOMMU using a bounce buffer.
I wonder why. Intel seems to be really stingy about VT and VT-d
compared with AMD. I guess that Intel can use this to price
differentiate but AMD is kind of desperate for any sale.
I don't remember any Athlon 64 without an IOMMU. Not that I would
necessarily know. Do you have any more solid information?
--
The Toronto Linux Users Group. Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists
More information about the Legacy
mailing list