[virtio-dev] Re: [PATCH 02/11] transport-pci: Move transitional device id to legacy section

Michael S. Tsirkin
2023-03-31T06:44:05Z

On Fri, Mar 31, 2023 at 01:58:25AM +0300, Parav Pandit wrote:
> Currently PCI device discovery details for the transitional device
> are documented in two different sections.
>
> For example, PCI device and vendor ID registers are documented in
> 'Device Requirements: PCI Device Discovery' section, while PCI
> revision id is documented in 'Legacy Interfaces: A Note on PCI
> Device Discovery' section.
>
> Transitional devices requirements should be documented in "legacy
> interfaces" section as clearly mentioned in
> 'Legacy Interface: A Note on Feature Bits'.

I already commented on this, I disagree.
Modern drivers must be able
to completely ignore legacy interface sections, but they
do bind to transitional device IDs.
This change breaks this assumption.

> Hence,
> 1. Move transitional device requirements to its designated Legacy
> interface section
> 2. Describe regular device requirements without quoting it as "non
> transitional device"
>
> While at it, write the description using a singular object definition.
>
> Reviewed-by: Satananda Burla <sburla@marvell.com>
> Signed-off-by: Parav Pandit <parav@nvidia.com>
> ---
> transport-pci.tex | 70 ++++++++++++++++++++++++-----------------------
> 1 file changed, 36 insertions(+), 34 deletions(-)
>
> diff --git a/transport-pci.tex b/transport-pci.tex
> index 7f27107..1f74c6f 100644
> --- a/transport-pci.tex
> +++ b/transport-pci.tex
> @@ -28,46 +28,24 @@ \subsection{PCI Device Discovery}\label{sec:Virtio Transport Options / Virtio Ov
>
> \devicenormative{\subsubsection}{PCI Device Discovery}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery}
>
> -Devices MUST have the PCI Vendor ID 0x1af4.
> -Devices MUST either have the PCI Device ID calculated by adding 0x1040
> +The device MUST have the PCI Vendor ID 0x1af4.
> +The device MUST calculate PCI Device ID by adding 0x1040
> to the Virtio Device ID, as indicated in section \ref{sec:Device
> -Types} or have the Transitional PCI Device ID depending on the device type,
> -as follows:
> -
> -\begin{tabular}{|l|c|}
> -\hline
> -Transitional PCI Device ID & Virtio Device \\
> -\hline \hline
> -0x1000 & network device \\
> -\hline
> -0x1001 & block device \\
> -\hline
> -0x1002 & memory ballooning (traditional) \\
> -\hline
> -0x1003 & console \\
> -\hline
> -0x1004 & SCSI host \\
> -\hline
> -0x1005 & entropy source \\
> -\hline
> -0x1009 & 9P transport \\
> -\hline
> -\end{tabular}
> +Types}.
>
> For example, the network device with the Virtio Device ID 1
> -has the PCI Device ID 0x1041 or the Transitional 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).
> +has the PCI Device ID 0x1041.
>
> -Non-transitional devices SHOULD have a PCI Device ID in the range
> -0x1040 to 0x107f.
> -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.
> +The device SHOULD have a PCI Device ID in the range 0x1040 to 0x107f.
> +The device SHOULD have a PCI Revision ID of 1 or higher.
> +The device SHOULD 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.
>
> +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).
> +
> \drivernormative{\subsubsection}{PCI Device Discovery}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery}
> Drivers MUST match devices with the PCI Vendor ID 0x1af4 and
> the PCI Device ID in the range 0x1040 to 0x107f,
> @@ -85,8 +63,32 @@ \subsection{PCI Device Discovery}\label{sec:Virtio Transport Options / Virtio Ov
> PCI Subsystem Device ID value.
>
> \subsubsection{Legacy Interfaces: A Note on PCI Device Discovery}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery / Legacy Interfaces: A Note on PCI Device Discovery}
> -Transitional devices MUST have a PCI Revision ID of 0.
> -Transitional devices MUST have the PCI Subsystem Device ID
> +
> +The transitional device has one of the following PCI Device ID
> +depending on the device type:
> +
> +\begin{tabular}{|l|c|}
> +\hline
> +Transitional PCI Device ID & Virtio Device \\
> +\hline \hline
> +0x1000 & network device \\
> +\hline
> +0x1001 & block device \\
> +\hline
> +0x1002 & memory ballooning (traditional) \\
> +\hline
> +0x1003 & console \\
> +\hline
> +0x1004 & SCSI host \\
> +\hline
> +0x1005 & entropy source \\
> +\hline
> +0x1009 & 9P transport \\
> +\hline
> +\end{tabular}
> +
> +The transitional device MUST have a PCI Revision ID of 0.
> +The transitional device MUST have the PCI Subsystem Device ID
> matching the Virtio Device ID, as indicated in section \ref{sec:Device Types}.
> Transitional devices MUST have the Transitional PCI Device ID in
> the range 0x1000 to 0x103f.
> --
> 2.26.2