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.
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.
magnat|2 years ago
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.