[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [PATCH v2 5/8] admin: Add requirements of device migration commands
Add device and driver side requirements for the device migration commands. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/176 Signed-off-by: Parav Pandit <parav@nvidia.com> --- changelog: v1->v2: - fixed spelling from membe to member - removed device requirement line of FLR making the device active as it was incorrectly written to mix operational and admin state - added requirements to clarify flr, device reset, pm and admin commands - group sriov requirements - added description for device config space access in stop mode - removed stale requirement around pci ids - made device context write command requirements more robust for future and backward compatibility --- admin-cmds-device-migration.tex | 141 ++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/admin-cmds-device-migration.tex b/admin-cmds-device-migration.tex index bbe5902..5cd9ec7 100644 --- a/admin-cmds-device-migration.tex +++ b/admin-cmds-device-migration.tex @@ -324,3 +324,144 @@ \subsubsection{Device Migration}\label{sec:Basic Facilities of a Virtio Device / the device returns new device context entry. Once the device context is discarded, subsequent VIRTIO_ADMIN_CMD_DEV_CTX_WRITE command writes a new device context. + +\devicenormative{\paragraph}{Device Migration}{Basic Facilities of a Virtio Device / Device groups / Group administration commands / Device Migration} + +A device MUST either support all of, or none of +VIRTIO_ADMIN_CMD_DEV_MODE_GET, +VIRTIO_ADMIN_CMD_DEV_MODE_SET, +VIRTIO_ADMIN_CMD_DEV_CTX_SIZE_GET, +VIRTIO_ADMIN_CMD_DEV_READ, +VIRTIO_ADMIN_CMD_DEV_WRITE and +VIRTIO_ADMIN_CMD_DEV_CTX_DISCARD commands. + +When the device \field{mode} supplied in the command +VIRTIO_ADMIN_CMD_DEV_MODE_SET is same as what the mode in the device, the device +MUST complete the command successfully. + +The device MUST fail the command VIRTIO_ADMIN_CMD_DEV_MODE_SET when the \field{mode} +is other than \field{Active} or \field{Stop} or \field{Freeze}. + +When changing the device mode using the command VIRTIO_ADMIN_CMD_DEV_MODE_SET, +if the command fails, the device MUST retain the current device mode. + +The device MUST fail VIRTIO_ADMIN_CMD_DEV_MODE_SET command when \field{mode} +is set to \field{Active} or \field{Stop} and if the device context is +partially read or written using VIRTIO_ADMIN_CMD_DEV_CTX_READ and +VIRTIO_ADMIN_CMD_DEV_CTX_WRITE commands respectively. + +When VIRTIO_ADMIN_CMD_DEV_CTX_READ command is received multiple times +in a given mode, and when the complete device context is already read by the +driver, on subsequent reception of command VIRTIO_ADMIN_CMD_DEV_CTX_READ, +the device MUST complete the command successfully with +\field{context_len} set to zero. + +The device MUST support reading the device context when the device is +in any mode \field{Active} or \field{Stop} or \field{Freeze} using command +VIRTIO_ADMIN_CMD_DEV_CTX_READ. + +When the device is in any of the mode, and if the device context is read +partially using VIRTIO_ADMIN_CMD_DEV_CTX_READ command, the device MUST discard +the device context when VIRTIO_ADMIN_CMD_DEV_CTX_DISCARD command is executed; +In subsequent execution of VIRTIO_ADMIN_CMD_DEV_CTX_READ and +VIRTIO_ADMIN_CMD_DEV_CTX_SIZE_GET, the device MUST return the remaining +estimated device context size and the device context respectively for the +current mode as if VIRTIO_ADMIN_CMD_DEV_CTX_READ was never received by the +device for the current device mode. + +The device MUST support writing the complete device context multiple times +by the command VIRTIO_ADMIN_CMD_DEV_CTX_WRITE. + +The device MUST fail VIRTIO_ADMIN_CMD_DEV_CTX_WRITE command when the device +mode is not \field{Freeze}. + +For the SR-IOV group type, +\begin{itemize} +\item the device MUST not initiate any PCI transaction + when the device mode is not \field{Active}. +\item the device MUST finish all the outstanding PCI transactions before completing + the command VIRTIO_ADMIN_CMD_DEV_MODE_SET. +\item when the device mode is \field{Stop}, the device MUST accept driver + notifications and the device MAY update any fields of the device context. +\item the device MUST respond with valid values for PCI read requests when + the device mode is \field{Stop}. +\item the device MUST function same for the PCI architected interfaces + regardless of the device mode. +\item the device MUST not generate any PCI PME when the device is + not in \field{Active} state. +\item the device MUST NOT update any fields of the device context when the + device is in \field{Freeze} mode, the device MAY update fields of the + device context when the device transitions from \field{Stop} to + \field{Freeze} mode. +\end{itemize} + +When the device mode is not \field{Active}, +\begin{itemize} +\item the device MUST not access any virtqueue memory or any memory referred + by the virtqueue when the device mode is not \field{Active}. + +\item the device MUST not generate any configuration change notification. +\end{itemize} + +When the device is in \field{Freeze} mode, and if any device context is +written partially by VIRTIO_ADMIN_CMD_DEV_CTX_WRITE, the device MUST discard +the device context when VIRTIO_ADMIN_CMD_DEV_CTX_DISCARD +command is executed, i.e. the device functions as if the command +VIRTIO_ADMIN_CMD_DEV_CTX_WRITE was never received. + +For the SR-IOV group type, +\begin{itemize} +\item when the device is in \field{Freeze} mode, any +write access to virtio configuration space MUST not update any fields and any +configuration space read MAY return any value. + +\item for the VIRTIO_PCI_CAP_PCI_CFG capability area, +the device MUST ignore writes when the device mode is set to \field{Freeze} +and on receiving the reads, the device MUST function same regardless of the +device mode is \field{Active} or \field{Stop} or \field{Freeze}. + +\item the VF device MUST respond to commands +VIRTIO_ADMIN_CMD_DEV_MODE_SET, VIRTIO_ADMIN_CMD_DEV_CTX_WRITE and +VIRTIO_ADMIN_CMD_DEV_CTX_READ after the VF FLR completes in the device, if the VF FLR +is in progress when the device receives any of these commands. + +\item the VF device MUST respond to commands +VIRTIO_ADMIN_CMD_DEV_MODE_SET, VIRTIO_ADMIN_CMD_DEV_CTX_WRITE and +VIRTIO_ADMIN_CMD_DEV_CTX_READ after the device reset completes in the device, if the +device reset is in progress when the device receives any of these commands. + +\item the VF device MUST respond to commands +VIRTIO_ADMIN_CMD_DEV_MODE_SET, VIRTIO_ADMIN_CMD_DEV_CTX_WRITE and +VIRTIO_ADMIN_CMD_DEV_CTX_READ after the device power management state transition completes +in the device, if the power management state transition is in progress +when the device receives any of these commands. +\end{itemize} + +The device MUST respond with an error for the command +VIRTIO_ADMIN_CMD_DEV_CTX_WRITE, if there is a mismatch in the +device context field length between the field provided in the +VIRTIO_ADMIN_CMD_DEV_CTX_WRITE data and the length of the field +in the device. + +\drivernormative{\paragraph}{Device Migration}{Basic Facilities of a Virtio Device / Device groups / Group administration commands / Device Migration} + +The driver SHOULD read the complete device context using one or multiple +VIRTIO_ADMIN_CMD_DEV_CTX_READ commands. + +The driver MAY write the device context before changing the device mode from +\field{Freeze} to \field{Stop} or from \field{Freeze} to \field{Active}; +the driver MUST write a complete device context using one or multiple +VIRTIO_ADMIN_CMD_DEV_CTX_WRITE commands. + +The driver MUST NOT change the device mode to \field{Stop} or \field{Active} +in the command VIRTIO_ADMIN_CMD_DEV_MODE_SET when device context is +partially written. + +For the SR-IOV group type, the driver SHOULD NOT access device configuration +space described in section +\ref{sec:Basic Facilities of a Virtio Device / Device Configuration Space} +when the device mode is set to \field{Freeze} or \field{Stop}. + +For the SR-IOV group type, the driver MUST NOT write into the +VIRTIO_PCI_CAP_PCI_CFG capability area when the device mode is set to +\field{Freeze}. -- 2.34.1
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]