libvmm icon indicating copy to clipboard operation
libvmm copied to clipboard

VirtIO sound TODOs

Open alexandermbrown opened this issue 1 year ago • 0 comments

Future TODOs following this PR https://github.com/au-ts/libvmm/pull/37

  • [ ] Merge examples/virtio-sndwith examples/virtio. Tracking issue: https://github.com/au-ts/libvmm/issues/60. This will involve multiplexing the shared bus on the OdroidC4.

  • [ ] Virtualiser ownership bug: Currently if you play audio in a client VM then immediately stop the stream (CTRL+C) the virtualiser it sometimes errors saying "invalid owner id -1". This is probably something to do with it getting released before all frames have been responded to. Note you need to play a long sound file (e.g., cantina.c from old commit) to get this to appear.

  • [ ] WFI Interrupt: I have implemented a prototype implementation which handles aarch64's "wait for interrupt" instruction to suspend the VM until a notification is recieved (on https://github.com/au-ts/libvmm/tree/virtio_snd_wfi). Currently the VMM gets a WFI but never gets a notification to wake the VM. This needs to be investigated.

  • [ ] Benchmarking: I implemented a benchmark which measures CPU usage of a native client client, virtualiser and driver VM (on https://github.com/au-ts/libvmm/tree/virtio_snd_bench). This needs to be redone with WFI interrupt handling. benchmark-setup

  • [ ] Passthrough IRQ 5: snd_driver_vmm.c contains passthrough IRQ 5. We are not sure what this is but Linux doesn't boot without it.

  • [ ] Use libuio: The userlevel driver doesn't use our UIO library at the moment. It may need some modifications to integrate.

  • [ ] Additional virtIO sound features: We currently don't support virtIO sound features such as the event queue, jacks or channel maps. This should be investigated.

  • [ ] Generic queues (ivanv): I don't like that we have multiple generic queue implementations, would be good to avoid if possible.

  • [ ] Userlevel program compilation: We currently use zig cc to build userlevel programs as I have been unable to get aarch64-linux-gnu-gcc or clang to work on macOS with Nix. Ideally zig wouldn't be a requirement.

  • [ ] CI simulation It would be good if the virtio-snd example was run and tested in the CI. A possible solution is described here https://github.com/au-ts/libvmm/pull/87#issuecomment-2229628678

alexandermbrown avatar May 09 '24 04:05 alexandermbrown