OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [virtio] [OASIS Issue Tracker] (VIRTIO-104) PCI Operatoin


On Mon, May 19, 2014 at 10:22:27PM +0930, Rusty Russell wrote:
> OASIS Issues Tracker <workgroup_mailer@lists.oasis-open.org> writes:
> 
> > Rusty Russell created VIRTIO-104:
> > ------------------------------------
> >
> >              Summary: PCI Operatoin
> >                  Key: VIRTIO-104
> >                  URL: https://tools.oasis-open.org/issues/browse/VIRTIO-104
> >              Project: OASIS Virtual I/O Device (VIRTIO) TC
> >           Issue Type: Sub-task
> >     Affects Versions: virtio 1.0 csprd01
> >             Reporter: Rusty Russell
> >             Assignee: Michael Tsirkin
> 
> Since Michael hasn't replied to this, I'll tackle it.
> 
> > 4.1.3.1 Device Initialization
> >
> > The driver must enable PCI bus mastering before programming any virtio
> > queues.  (Otherwise the device shouldn’t be accessing memory but this
> > has been historically ignored).  What happens when the bus master
> > enable bit is cleared when virtio is running?
> 
> Undefined, but I think that's OK: don't do this?

Device could set NEEDS_RESET, though it won't be able
to send interrupts.

> > 4.1.3.1.1 Virtio Device Configuration Layout Detection
> >
> > Instead of using PCI_CAP_ID_VNDR could a unique capability be
> > allocated from the PCI SIG?  It would be useful to be able to identify
> > the VIRTIO capability without special driver knowledge.
> 
> It would be possible, but I can't see a reason we'd want to attach
> virtio capabilities to random devices.  But perhaps I just lack
> imagination - and willingness to deal with not one but two standards
> bodies.  I look forward to someone carrying that flag for virtio 2.0 :)
> 
> > 4.1.3.1.3 Virtio Configuration
> >
> > What happens when an invalid size is written to the queue_size register?
> 
> Undefined.  Though it might be OK if it is corrected before the queue is
> enabled.  At which point in the latest draft there is a
> DEVICE_NEEDS_RESET status bit which *could* be set by the device.
> 
> > 4.1.3.4 Notification of Device Configuration Changes
> >
> > What portion of configuration space should be re-examined?  We assume just the device specific fields and not BARs or other generic configuration.  The spec should clarify this.
> 
> The draft 02 has the following (clearer) language:
> 
> Some virtio PCI devices can change the device configuration state, as
> reflected in the device-specific configuration region of the device. In
> this case:
> 
> > In the MSI-X enablement case no mention of setting an interrupt status
> > bit.  In the case where a unique MSI isn’t allocated to this table
> > entry how does the driver detect this?  
> 
> Yes, if you share MSI-X vectors you'll need to poll the virtqueues to
> see which one needs servicing.  Having an interrupt status bit would
> cause an exit.

But we could set an ISR bit for the config interrupt, if people
want to share these vectors between devices.
I'll post a spec patch shortly.

> > Clarification of runtime device error handling
> >
> > When an error occurs such as invalid descriptor or a DMA to an invalid
> > address what does the device do?  i.e. does it continue processing the
> > current descriptor or does it halt (our preference).
> 
> It is currently undefined.
> 
> > How does the driver recover the device?  Is a virtio reset sufficient?
> > What about inflight DMAs?
> 
> Yes, a virtio reset is our big hammer.  It must be sufficient to stop
> in-flight DMAs and reset the device.
> 
> Cheers,
> Rusty.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]