@whitequark @hailey oh yeah i forgot to mention how utterly bonkers the timing can be.
It's not always the controller either. Like, you can submit a buffer for completion to the controller and context switch / copy it - this is what userland libusb + ugen devices do! - if you can do it to a process then you can do it to a VM! - but the devices themselves are also very latency sensitive and in a lot of cases shit the bed if your transfers aren't setup fast enough!