[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [PATCH] pci: reserve revision > 1
On Sun, Jun 01, 2014 at 11:09:19AM +0300, Michael S. Tsirkin wrote: > 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> OK it turns out our PCI Discovery is even messier than I thought, and we will have to either stick to using the subsystem ID or allocate a new ID range with cleaner allocation rules. So after all, the interface version that we reserved wasn't helpful even for 0.x -> 1.x and even for linux. Self-NACK this patch, and I'll close the issue. > --- > 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]