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-dev] [PATCH] transitional issues: add new IDs for all devices


On Tue, Sep 24, 2013 at 09:10:09PM +0930, Rusty Russell wrote:
> "Michael S. Tsirkin" <mst@redhat.com> writes:
> > non-transitional devices should have been able to simply update
> > revision ID to make sure legacy drivers are not loaded.
> > Unfortunately, mistakes were made:
> > - we didn't stress that drivers must check revision ID,
> >   and of course there's no easy way for drivers to
> >   test this failure path,
> >   so older versions of Windows drivers ignored revision
> >   (latest vision matches revision correctly)
> > - CCW lacks revision ID field
> >
> > Both facts mean a non-transitional device would need
> > a separate mechanism to prevent legacy drivers from
> > loading.
> > We aren't running out of device IDs yet, so
> > let's use up some to resolve this.
> >
> > I incremented all IDs by 0x100 intentionally -
> > for the PCI bindings, this should help remind people they can't
> > just stick the Subsystem ID into the low byte of the Device ID.
> 
> I don't think this actually works.

Hmm what doesn't work, exactly?

> If you offer a non-transitional device to a legacy driver, it will
> fail anyway (device doesn't work due to missing feature 32).

How does it fail? Legacy drivers don't give devices any chance
to fail gracefully.

> There's not much difference between that and it not finding the device.

Imagine a non transitional device.
It would want to use offset 0 in BAR0 for something else not config.
When legacy driver attempts to access it, it can cause
all kind of mischief.

> Or are you anticipating guests with both legacy and transitional
> drivers?
> 
> Cheers,
> Rusty.

Sure, you can load any number of drivers in any windows OS.


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