[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [win-pv-devel] XENIFACE not attaching to XENBUS



> -----Original Message-----
> From: win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx [mailto:win-pv-devel-
> bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Rafal Wojdyla
> Sent: 20 May 2015 11:05
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Subject: [win-pv-devel] XENIFACE not attaching to XENBUS
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hello,
> 
> I've noticed something strange when I was experimenting with adding new
> APIs to Xenbus. I added a Store API to set key permissions and
> incremented the store interface version as usual (to 2 from 1).

Presumably you created a new interface version, left the old one as version 1, 
called the new one 2, and then bumped the max version to 2? It looks like 
that's what you did.

> Everything seemed fine, the driver installed normally. I rebuilt
> Xeniface with the new header and proceeded to install it on the test
> system. The install went fine as well. However, after a reboot the
> Xeniface driver wasn't being loaded. Or, to be more precise, it got
> loaded and then immediately unloaded by PnP for some reason. I haven't
> changed INFs or anything except the store interface header and the .c
> file.

Well, the lack of change in the xeniface INF is a problem. It's a bit hacky 
but, each combination of interface versions exported by a driver correspond to 
a unique revision number for PDOs created by that driver, so by bumping the max 
version of the store interface a whole new set of xenbus PDO revisions are 
available. Any client driver must bind to the PDO revision corresponding to the 
set of interface versions which it plans to use. This is so that, should an old 
version of any interface be retired, all corresponding PDO revisions will 
disappear and thus any old client driver will no longer bind (causing Windows 
to go and look for something new on Windows Update - where Citrix hope to 
eventually have drivers available).

> 
> When I moved my new function to the v1 interface and removed the v2
> everything went back to normal. That's not a solution of course, just
> wanted to test what would happen. I'm not sure what's going on, is there
> some limit to the number of revisions? With many different interface
> versions the revision count seems to be going up very quickly...
> 

However, since you did not modify the inf, xeniface should still be binding to 
revision 1 of the PDO and your log shows that is still being created. The doc 
at 
https://msdn.microsoft.com/en-us/library/windows/hardware/ff539950%28v=vs.85%29.aspx
 says that the maximum number is 64 and there are only 0x28 (40) in the list so 
the old compatible ID should still be there. You should be able to check via 
device manager to make sure though.

> I've attached a debug log from test system boot that shows xeniface
> being loaded and unloaded.

Perhaps the fact that the binding went from the actual hardware id to a 
compatible id is a problem... maybe Windows doesn't like that even though the 
driver should still bind. After Windows has unloaded xeniface, what happens if 
you right click on the device in device manager and do a 'Update Driver 
Software'? Does it reload, or does Windows genuinely believe the driver is not 
compatible?

  Paul

> 
> - --
> RafaÅ WojdyÅa
> Qubes Tools for Windows developer
> -----BEGIN PGP SIGNATURE-----
> 
> iQEcBAEBAgAGBQJVXFwyAAoJEIWi9rB2GrW7zv8H/jyexqUlL7qTq7z++s/pHcC
> u
> bo1Gz6IeY1T0fJto4UcQH1Qs8JZ9SVpiP94UT9BorJCvll1FRSSFpyXP3aHtkOKP
> P8aCktaZ7EuUL6wy7WryIYtHD9tG46xYe1N0lqKoQASZZH97qWaNrl/4B06/nvY
> x
> 32yS3sqEwMzAKpDit17KcslZM9LES55IhWGggLag+tvPBKCdNHIG6sqebnFbfySl
> 6Xh5qoSTqWzbDU2pejKklmpxIONSzUxXMxLckScn1TjY8PGmEpjF1LpmVCc+f
> 0cz
> YKpuHBruStcmELvZO5t+Yg9RN89sX3EAtuJVfEaBOewq+Q5Om6ToY/k0Y+FGG
> CA=
> =MIh4
> -----END PGP SIGNATURE-----
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.