top | item 36000709

(no title)

ridgered4 | 2 years ago

Is it even possible to passthrough ISA to a VM? Legacy PCI is (well-ish) supported with its own quirks but I've never heard of ISA passthrough even mentioned before.

discuss

order

magnat|2 years ago

Unlike PCI, ISA has no concept of mandatory configuration space, apart from optional Legacy Plug and Play. Worst case scenario is that ISA card responds on some arbitrary I/O port known only to manufacturer and hardcoded in driver. Since all installed cards share the bus, you can't really pass through a single card without exactly knowing its resources.

In principle your VM/emulator could intercept guest reads/writes to those selected addresses and pass them (using host-side kernel driver) directly to the card. If the card uses no IRQ nor DMA, that could work. Routing IRQs would be tricky (again: determining which card raises which interrupt without global configuration registers requires a lot of manual work and/or guessing), but I guess it's doable.

DMA won't work. As far as I can tell, you can't use IOMMU to isolate ISA bus memory requests, let alone isolate a single device from the bus. Without knowing how card receives DMA parameters from the driver and no hardware support to translate device-generated addresses, your card would corrupt host memory on first DMA request.