On Thu, Mar 21, 2013 at 12:13:00PM +0200, Michael S. Tsirkin wrote: > On Thu, Mar 21, 2013 at 06:59:37PM +1030, Rusty Russell wrote: > > (MST, is this what you were thinking?) > > Almost. > > Three points: > > 1. this is still an offset in BAR so for KVM we are still forced to use > an IO BAR. I would like an option for hypervisor to simply say "Do IO > to this fixed address for this VQ". Then virtio can avoid using IO BARs > completely. > > 2. for a real virtio device, offset is only 16 bit, using a 32 bit > offset in a memory BAR giving each VQ a separate 4K page would allow > priveledge separation where e.g. RXVQ/TXVQ are passed through to > hardware but CVQ is handled by the hypervisor. > > 3. last thing - (1) applies to ISR reads as well. > > So I had in mind a structure like: > > struct vq_notify { > u32 offset; > u16 data; > u16 flags; > } > > enum vq_notify_flags { > VQ_NOTIFY_BAR0, > VQ_NOTIFY_BAR1, > VQ_NOTIFY_BAR2, > VQ_NOTIFY_BAR3, > VQ_NOTIFY_BAR4, > VQ_NOTIFY_BAR5, > VQ_NOTIFY_FIXED_IOPORT, > } > > And then to notify a vq we write a given data at given offset > or into a given port for VQ_NOTIFY_FIXED_IOPORT. > > Only point 1 is really important for me though, I can be > flexible on the rest of it.
So the minimal change on top of this patch, would be adding a FIXED option to BIR and reporting data and not just offset for queue_notify (so it can include device info if we share same address between devices). -- MST _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization