> So I guess these are the specific ones to watch out for. Is it safe for me to
> just remove each of the above (lance, cs89x0, floppy, etc) from the kernel
> configuration? Also, lots of things include <asm/io.h> - is that safe?
> Ian mentioned that it may be trivial to implement isa_virt_to_bus; if you do,
> have floppies to test it out on ;)
asm/io.h is in general safe, but the drivers that use isa_virt_to_bus
Implementing isa_virt_to_bus() is currently not possible -- the issue
is that ISA devices can only DMA to/from the lowest 16MB of physical
memory. In native Linux the ZONE_DMA allocator region contains
suitable memory -- drivers can allocate from there then program the
ISA DMA controller with addresses from isa_virt_to_bus().
On XenLinux the ZONE_DMA is filled with the lowest 16MB of
*pseudophysical* memory, not real physical. This means that
isa_virt_to_bus() on an address allocated with, e.g. the GFP_DMA flag,
is a nonsense. The resulting address is almost certainly above 16MB in
real physical memory -- also drivers will assume that buffers alloc'ed
with GFP_DMA are contiguous in real physical memory, but XenLinux does
not guarantee this.
So --- the drivers you list are basically non-starters for
XenLinux. The floppy driver can probably be salvaged, however. What
I'll do is customise floppy.h for Xen so that it always uses 'virtual
DMA' mode (basically PIO). It does this for memory >1MB by default
anyway, so that code path should be well tested and cause no
PS. We have a similar problem for any device that has a DMA limit !=
architectural physmem limit. We need to audit checks in the kernel
that they are doing the comparison of DMA buffers against the device
limit in real physical addresses, not pseudophysical.
We also probably need to add a list of unsupported devices to a README
or a FAQ.
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
Xen-devel mailing list