8.0.0 (2014-07-24):
* Drivers with new API version scheme
+
+8.1.0 (2015-07-24):
+* Revised API versioning and unplug mechanism
--- /dev/null
+Interface Versions and PDO Revisions\r
+====================================\r
+\r
+It is important that introduction of a new API, introduction of a new\r
+version of an existing API or retirement of an old version of an API is\r
+managed carefully to avoid incompatibilities between clients and\r
+providers. The general API versioning policy is described below:\r
+\r
+Each distinct set of API versions exported by a bus driver maps to a PDO\r
+revision. The DeviceID of each PDO created will specify the latest\r
+revision supported and all others will be contained within the\r
+HardwareIDs and CompatibleIDs. When a new version of an API is added,\r
+a new PDO revision must be added. When a version of an API is removed\r
+then ALL revisions that API version maps to must be removed. The mapping\r
+of interface versions to PDO revisions is specified in the header file\r
+include/revision.h in the bus driver source repository.\r
+\r
+Whe introducing a new version of an interface in a bus driver it is good\r
+practice to continue to support the previous version so it is not\r
+necessary to simultaneously introduce a new PDO revision and retire a\r
+previous one that child drivers may still be binding to.\r
+Child drivers should, of course, always be built to use the latest\r
+interface versions (which can be copied from the include directory in the\r
+source repository of the bus driver providing them) but it may take\r
+some time to make the necessary changes and deploy new builds of child\r
+drivers and so some overlap is desirable.\r
+\r
+To try to avoid installation of a version of a bus driver that is\r
+incompatible with child drivers installed on a system. There is a check\r
+in the pre-install phase in the co-intaller which compares the\r
+MatchingDeviceId values for each child driver against the table in\r
+include/revision.h in the bus driver source to make sure that the\r
+matching revision number is present.\r
See INSTALL.md
-Interfaces
-==========
-
-The XenBus package exports several APIs, as defined by the various
-'interface' headers in the include subdirectory. It is important that
-introduction of a new API, introduction of a new version of an existing
-API or retirement of an old version of an API is managed carefully to
-avoid incompatibilities between clients and providers. The general API
-versioning policy is described below:
-
-Each distinct set of API versions maps to a PDO revision. The DeviceID of
-each PDO created by xenbus.sys will specify the latest revision supported
-and all others will be contained within the HardwareIDs and CompatibleIDs.
-Hence, when a new version of an API is added, a new PDO revision will be
-added. When a version of an API is removed then ALL revisions that API
-version maps to will be removed. This is all handled automatically by the
-function PdoSetRevisions().
-
-To avoid a situation where a new version of the package is installed that
-is incompatible with any child drivers that make use of the APIs, each
-child 'subscribes' to an API by writing a registry value with the version
-number of that API that they consume into a registry key under the service
-key of the providing driver. E.g. if driver 'foo' consumes version 1 of
-driver 'bar''s 'widget' API, then it will write
-HLKM/CurrentControlSet/Services/BAR/Interfaces/FOO/WIDGET with the value 1.
-The 'bar' package co-installer can then check, prior to installation of a
-new version of a driver, that it can still support all of its subscribers.
-If any of the API versions subscribed to has been removed then installation
-will be vetoed until all the subscriber drivers have been updated to use
-the newer versions of the APIs exported by the newer providing driver.
+Driver Interfaces
+=================
+
+See INTERFACES.md
Miscellaneous
=============
------------------
This will import any necessary headers from a given tag of that Xen
-repository at git://xenbits.xen.org/xen.git.
\ No newline at end of file
+repository at git://xenbits.xen.org/xen.git.
os.environ['PRODUCT_NAME'] = 'Xen'
os.environ['MAJOR_VERSION'] = '8'
- os.environ['MINOR_VERSION'] = '0'
+ os.environ['MINOR_VERSION'] = '1'
os.environ['MICRO_VERSION'] = '0'
if 'BUILD_NUMBER' not in os.environ.keys():