[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [PATCH] pci: reserve revision > 1
If the proposed change to resolve VIRTIO-102 is accepted, devices can use all 16 bits of the subsystem device id for versioning. This makes it unnecessary to reserve revision ID for this purpose. Let's use it for the interface version again: it served us in the 0.X -> 1.X transition, will be handy for 1.X -> 2.X as well. Require that devices have revision <= 1. Require that drivers not match devices with revision > 1. This way, if devices ever want to make an incompatible change, they can prevent drivers from loading by incrementing the revision ID. VIRTIO-109 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- content.tex | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/content.tex b/content.tex index 7f1eecb..c16f79c 100644 --- a/content.tex +++ b/content.tex @@ -969,6 +969,12 @@ indicates which virtio device is supported by the device. The PCI Device ID is calculated by adding 0xFFF to the Virtio Device ID, as indicated in section \ref{sec:Device Types}. +The PCI Revision ID reflects the lowest interface version +supported by the device. This is to allow future backwards-incompatible +changes. Drivers check the device revision to avoid conflicts +with future versions of the specification. + + \devicenormative{\subsubsection}{PCI Device Discovery}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery} Devices MUST have the PCI Vendor ID 0x1AF4. @@ -981,8 +987,9 @@ has the PCI Device ID 0x1000. The PCI Subsystem Vendor ID and the PCI Subsystem Device ID MAY reflect the PCI Vendor and Device ID of the environment (for informational purposes by the driver). -Non-transitional devices SHOULD have a PCI Revision ID of 1 or higher. -Non-transitional devices SHOULD have a PCI Subsystem Device ID of 0x40 or higher. +Devices MUST have the PCI Revision ID not higher than 1. +Non-transitional devices MUST have a PCI Revision ID of 1. +Non-transitional devices MUST have a PCI Subsystem Device ID of 0x40 or higher. This is to reduce the chance of a legacy driver attempting to drive the device. @@ -992,12 +999,13 @@ Drivers MUST match devices with the PCI Vendor ID 0x1AF4 and the PCI Device ID calculated by adding 0xFFF to the Virtio Device ID, as indicated in section \ref{sec:Device Types}. -Drivers MUST match devices with any Revision ID, and +Drivers MUST match devices with any Revision ID not higher than 1, and MAY match devices with any Subsystem Vendor ID and Subsystem Device ID, this is to allow devices to be versioned without breaking drivers. -Drivers MUST match any PCI Revision ID value. +Drivers MUST match any PCI Revision ID value that does not exceed 1. +Drivers MUST NOT match PCI Revision ID values higher than 1. Drivers MAY match any PCI Subsystem Vendor ID and any PCI Subsystem Device ID value. -- MST
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]