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

Reply via email to