On 29 Oct 2015, at 11:53, Roman Kagan <rkagan(a)virtuozzo.com>
wrote:
On Thu, Oct 29, 2015 at 10:33:57AM +0200, Yan Vugenfirer wrote:
>> On 29 Oct 2015, at 10:28, Richard W.M. Jones <rjones(a)redhat.com> wrote:
>> On Thu, Oct 29, 2015 at 11:05:42AM +1100, Vadim Rozenfeld wrote:
>>
>> Seems like looking at this field in the .inf file is better than our
>> current approach of matching path names.
>
> You just need to remember that we have binary compatible versions of
> drivers. For example virtio-net driver for Windows 2012 (Windows 8)
> (6.2) will be used for Windows 2012R2 (Windows 8.1) and Windows Server
> 2016 (Windows 10). So you are getting the lowest compatible version of
> the OS from INF file.
That seems to match Vadim's description:
>>> If you found an inf file with the matching minor OS (6 in our case)
>>> version and matching or less but close minor version number (2 vs 3)
>>> then you are in the right directory.
and it's OK as it's an algorithm that can be coded and made to work
reliably.
However, do I get it right that this is just a convention currently
followed in virtio-win drivers? I.e. there's nothing in the Windows
driver specifications mandating this versioning scheme? I'm trying to
figure out how dependable it is.
This scheme of driver versioning is not mandated by MS specification. It was an internal
decision made several years ago and we intend to continue following it.
Besides, ATM there's at least one driver -- qemupciserial -- which
doesn't fit in this scheme (or any scheme at all :).
It is single INF for all OSes. And we can change the versioning to comply to virtio-win
convention.
Also qxl (Spice driver) has similar versioning scheme. In qxl INF the version will be
5.1.0.10018 for XP and 6.1.0.10018 for Windows 7 for example.
There are other peculiarities which we don't know what to do:
- the netkvm driver directory on virtio-win.iso contains netkvmco.dll
(I'm assuming it's coinstaller dll). However, netkvm.inf doesn't
mention it, and the driver installs just fine without it.
It can be used as co-installer, but eventually it was decided not to use it in this way
and allow the user manual activation of the functionality in netkvmco.dll. MS required
that command line tools should be provided by the NDIS miniport drivers that have GUI
configuration (advanced tab in device manager). The netkvmco is essentially netsh plugin
that can be used to change NetKVM parameters (or actually parameters of any network driver
in the system as the parameters are saved in MS mandated format). The documentation for
the netkvmco.dll is found in readyme.doc file (once again this is MS requirement).
- the balloon driver directory on virtio-win.iso contains blnsvr.exe
(and .pdb) which is apparently a usermode service to report memory
stats to host via balloon virtio queue. However nothing seems to
automatically trigger installation of that service.
Thanks,
Roman.