Arnd Bergmann wrote: > > One interesting aspect of the PS3 hypervisor is that some of the > low-speed interfaces are implemented as a virtual UART, meaning > something that only has read and write operations and uses an > interrupt for flow control. The implementation in > drivers/ps3/vuart.c is probably more complex than what we want > as a generic transport mechanism, but simply having a bidirectional > data stream sounds like an ideal abstraction for the "simple" > case. Some more or less obvious users of this include: > > - console > - additional tty > - random > - slow network (using ppp) > - printer > - watchdog > - hid (e.g. mouse) > - system management (like ps3) > - fast network (in combination with > shared memory segment) > > The transport can be hypervisor specific, e.g. there could be > a virtual PCI serial port on kvm, an hcall interface on the ps3 > and a virtual CTC on s390 (kidding), while all of them can have > the same kind of hardware _behind_ the serial connection. > Note that at least for PIO-based devices, there is nothing that says you can't implement PCI over another transport, if you wish. It's really just a very simple RPC protocol. DMA is trickier, as it makes the data appear into the address space of the guest in a way that is both device- and host-dependent (in the presence of PCI domains, IOMMU etc.) There may be reason to avoid DMA for that reason. -hpa _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization