|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] more changes to PDO revision numbering
Hi,
I've recently realised that the way in which PDO revisions are assigned is
flawed. The nested-for-loop implementation doesn't guarantee that a particular
revision corresponds to a particular combination of interface versions as was
my intention, and also the combinatorial explosion that occurs whenever one
interface version is incremented means we burn through PDO revisions pretty
rapidly. So, I propose a change...
We don't really need to have a revision for *every* possible combination of
interfaces. A bus driver implementing the newest version of one interface and
the oldest version of another possibly would never exist since often multiple
interfaces may be updated by a single (series of) commit(s). I therefore think
that we should move to an implementation that uses a table mapping a set of
interface versions to a PDO revision. To do this, and maintain working
combinations of drivers, we will need to follow some rules though:
1) The last line of the table should always map the latest interface versions
to the highest PDO revision
2) A patch should never *modify* a line in the table, only add or remove
(although I think we can allow that for patches within the same series)
3) A line should not be removed from the table until no child driver relies on
binding to that PDO revision [1]. I.e. child drivers get updated to bind to the
latest PDO revision and *then* old revisions are retired.
Under this scheme, I think we can also drop the need to register individual
interface versions between drivers (i.e. the current provider/subscriber
scheme) since we can infer what interface versions a driver is using by looking
at the MatchingDeviceId value in the device software key.
To get from where we are to this new scheme I also propose that we just start
with a single line table in each bus driver (XENBUS and XENVIF) mapping the
latest interface versions to the current highest PDO revision. The latest
versions of all child drivers are currently binding to the highest PDO
revisions so rule 3 is adhered to.
If anyone has any thoughts on this please let me know, otherwise I will make
changes this Friday (July 15th).
Paul
[1] It may be necessary to deliberately make incompatible changes and thus, in
such exceptional circumstances, a single series may add a new line to the table
and remove all existing lines but we should clearly try to avoid this where
possible. In this case though, patch series to update child drivers should be
simultaneously available and committed to the relevant repositories within the
smallest possible time window.
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |