← Prev in month ← Prev in thread
Next in thread → Next in month →

[PATCH] compatibility: extendable config space and pci cfg

From
Michael S. Tsirkin
Date
2013-11-04T16:34:00+00:00
ID
Thread
[PATCH] compatibility: extendable config space and pci cfg
We often specify specific layout of config space, in the past drivers took this to mean "there will be no other fields" and failed devices where config space was larger.  To avoid such issues in the future, document that drivers should only check size is >= the required value.  VIRTIO-48  Signed-off-by: Michael S. Tsirkin <> ---  virtio-v1.0-wd01-part1-specification.txt
29 +++++++++++++++++++++++++++++  1 file changed, 29 insertions(+)  diff --git a/virtio-v1.0-wd01-part1-specification.txt b/virtio-v1.0-wd01-part1-specification.txt index b3f7c9e..a2ecbb9 100644 --- a/virtio-v1.0-wd01-part1-specification.txt +++ b/virtio-v1.0-wd01-part1-specification.txt @@ -232,6 +232,21 @@ Thus drivers should read configuration space fields like so:  Note that configuration space generally uses the little-endian format  for multi-byte fields.
+Note that future versions of this specification will likely +extend the configuration space for devices by adding extra fields +at the tail end of some structures in configuration space. + +To allow forward compatibility with such extensions, drivers must +not limit structure size and configuration space size.  Instead, +drivers should only check that configuration space is *large enough* to +contain the fields required for device operation. + +For example, if the specification states that configuration +space 'includes a single 8-bit field' drivers should understand this to mean that +the configuration space can also include an arbitrary amount of +tail padding, and accept any configuration space size equal to or +greater than the specified 8-bit size. +  100.100.4.1. Legacy Interface: A Note on Configuration Space endian-ness

--------------------------------------

@@ -1075,6 +1090,20 @@ struct virtio_pci_cap {  This structure can optionally followed by extra data, depending on  other fields, as documented below.
+Note that future versions of this specification will likely +extend devices by adding extra fields at the tail end of some structures. + +To allow forward compatibility with such extensions, drivers must +not limit structure size.  Instead, drivers should only +check that structures are *large enough* to contain the fields +required for device operation. + +For example, if the specification states 'structure includes a +single 8-bit field' drivers should understand this to mean that +the structure can also include an arbitrary amount of tail padding, +and accept any structure size equal to or greater than the +specified 8-bit size. +  The fields are interpreted as follows:
cap_vndr

--
MST
← Prev in month ← Prev in thread
Next in thread → Next in month →