[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] PCI access virtualization
From: |
Mark Williamson |
Subject: |
Re: [Qemu-devel] PCI access virtualization |
Date: |
Fri, 6 Jan 2006 14:23:34 +0000 |
User-agent: |
KMail/1.9.1 |
> What about 64-bit systems that use an IOMMU? Don't they already have a
> 64-bit physical -> 32-bit IO address space mapping? I don't know if this
> mapping is per-bus or system global.
If it's an Intel x86_64 machine (no IOMMU yet), IIRC the 32-bit PCI devices
are capable of DMA-ing into the bottom of memory - there's no remapping. For
this reason I've seen various discussions about a ZONE_DMA_32 so that 32 bit
devices can request memory in this area...
If there's an IOMMU then the addressable 32 bits could of course map anywhere
in the host memory... For something like the Opteron, I imagine the IOMMU
mappings happen in the on-CPU memory controller, so I'd guess there'd be (at
most) one mapping per processor package. I've not actually looked into the
specifics of this, so take it with a pinch of salt ;-)
There's also a SoftIOMMU driver under Linux that fakes out IOMMU behaviour by
using bounce buffers. Actually, thinking about it I agree with you - it
*ought* to be possible to implement an IOMMU driver that does (at least some)
of what you'd want to do PCI passthrough... the Linux APIs do require the
kernel to be notified of DMA-able memory the driver intends to use.
Cheers,
Mark
Re: [Qemu-devel] PCI access virtualization, Mark Williamson, 2006/01/05