Subject: Re: [virtio-dev] [PATCH] transitional issues: add new IDs for all devices
"Michael S. Tsirkin" <firstname.lastname@example.org> writes: > On Tue, Sep 24, 2013 at 09:10:09PM +0930, Rusty Russell wrote: >> "Michael S. Tsirkin" <email@example.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. As per call, I think we should check that the existing Windows drivers fail if BAR0 does not exist, and then make that a recommendation for PCI, eg: On a platform where legacy devices can exist, devices should not offer BAR0 at all. Cheers, Rusty.