Skip to contentSkip to conversation

content: support SR-IOV

PATCH In review Tiwei Bie 3 participants 6 messages May 24, 2018 – Jun 5, 2018

lore
Share & tools
lore

Tiwei Bie

author
#0 lore raw

PATCH v4 1/1 content: support SR-IOV

Allocate a feature bit for virtio devices which support SR-IOV.

---
More details can be found from this thread:
https://patchwork.kernel.org/patch/10285541/

v3 -> v4:
- Limit the feature to PCI devices with SR-IOV cap (MST);

v2 -> v3:
- Improve the wording (Cornelia);

v1 -> v2:
- s/Reserve/Allocate/ (MST);
- Add a Fixes tag (MST);
- Be more explicit in driver requirement (MST);
- Remove the "device MAY fail" description (MST);
- Rebase on IO_BARRIER patch;

RFC -> v1:
- Mention PCI in the description (Cornelia);

 content.tex | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
content.tex +19 -2
index c4b3b5c..beec6c1 100644
@@ -95,10 +95,10 @@ Feature bits are allocated as follows:
 \begin{description}
 \item[0 to 23] Feature bits for the specific device type
 
-\item[24 to 36] Feature bits reserved for extensions to the queue and
+\item[24 to 37] Feature bits reserved for extensions to the queue and
   feature negotiation mechanisms
 
-\item[37 and above] Feature bits reserved for future extensions.
+\item[38 and above] Feature bits reserved for future extensions.
 \end{description}
 
 \begin{note}
@@ -5365,6 +5365,9 @@ Descriptors} and \ref{sec:Packed Virtqueues / Indirect Flag: Scatter-Gather Supp
   better performance.  This feature indicates whether
   a stronger form of barrier suitable for hardware
   devices is necessary.
+  \item[VIRTIO_F_SR_IOV(37)] This feature indicates that
+  the device supports Single Root I/O Virtualization.
+  Currently only PCI devices support this feature.
 \end{description}
 
 \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
@@ -5384,6 +5387,16 @@ A driver SHOULD accept VIRTIO_F_IO_BARRIER if it is offered.
 If VIRTIO_F_IO_BARRIER has been negotiated, a driver MUST use
 the barriers suitable for hardware devices.
 
+If VIRTIO_F_SR_IOV has been negotiated, a driver can enable
+virtual functions through the device's PCI SR-IOV capability
+structure.  A driver MUST NOT negotiate VIRTIO_F_SR_IOV if
+the device does not have a PCI SR-IOV capability structure
+or is not a PCI device.  A driver MUST negotiate
+VIRTIO_F_SR_IOV and complete the feature negotiation
+(including setting the DRIVER_OK \field{status} bit) before
+enabling virtual functions through the device's PCI SR-IOV
+capability structure.
+
 \devicenormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
 
 A device MUST offer VIRTIO_F_VERSION_1.  A device MAY fail to operate further
@@ -5400,6 +5413,10 @@ buffers in the same order in which they have been available.
 A device MAY fail to operate further if VIRTIO_F_IO_BARRIER
 is not accepted.
 
+A device SHOULD offer VIRTIO_F_SR_IOV if it is a PCI device
+and presents a PCI SR-IOV capability structure, otherwise
+it MUST NOT offer VIRTIO_F_SR_IOV.
+
 \section{Legacy Interface: Reserved Feature Bits}\label{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits}
 
 Transitional devices MAY offer the following:
Signature · 6 lines
2.17.0


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
Acked-by on v4 1/1
#1 lore raw
Quoted 5 lines · Tiwei Bie

Allocate a feature bit for virtio devices which support SR-IOV.

Quoted 85 lines

---
More details can be found from this thread:
https://patchwork.kernel.org/patch/10285541/

v3 -> v4:
- Limit the feature to PCI devices with SR-IOV cap (MST);

v2 -> v3:
- Improve the wording (Cornelia);

v1 -> v2:
- s/Reserve/Allocate/ (MST);
- Add a Fixes tag (MST);
- Be more explicit in driver requirement (MST);
- Remove the "device MAY fail" description (MST);
- Rebase on IO_BARRIER patch;

RFC -> v1:
- Mention PCI in the description (Cornelia);

 content.tex | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
content.tex +19 -2
index c4b3b5c..beec6c1 100644
@@ -95,10 +95,10 @@ Feature bits are allocated as follows:
 \begin{description}
 \item[0 to 23] Feature bits for the specific device type
 
-\item[24 to 36] Feature bits reserved for extensions to the queue and
+\item[24 to 37] Feature bits reserved for extensions to the queue and
   feature negotiation mechanisms
 
-\item[37 and above] Feature bits reserved for future extensions.
+\item[38 and above] Feature bits reserved for future extensions.
 \end{description}
 
 \begin{note}
@@ -5365,6 +5365,9 @@ Descriptors} and \ref{sec:Packed Virtqueues / Indirect Flag: Scatter-Gather Supp
   better performance.  This feature indicates whether
   a stronger form of barrier suitable for hardware
   devices is necessary.
+  \item[VIRTIO_F_SR_IOV(37)] This feature indicates that
+  the device supports Single Root I/O Virtualization.
+  Currently only PCI devices support this feature.
 \end{description}
 
 \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
@@ -5384,6 +5387,16 @@ A driver SHOULD accept VIRTIO_F_IO_BARRIER if it is offered.
 If VIRTIO_F_IO_BARRIER has been negotiated, a driver MUST use
 the barriers suitable for hardware devices.
 
+If VIRTIO_F_SR_IOV has been negotiated, a driver can enable
+virtual functions through the device's PCI SR-IOV capability
+structure.  A driver MUST NOT negotiate VIRTIO_F_SR_IOV if
+the device does not have a PCI SR-IOV capability structure
+or is not a PCI device.  A driver MUST negotiate
+VIRTIO_F_SR_IOV and complete the feature negotiation
+(including setting the DRIVER_OK \field{status} bit) before
+enabling virtual functions through the device's PCI SR-IOV
+capability structure.
+
 \devicenormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
 
 A device MUST offer VIRTIO_F_VERSION_1.  A device MAY fail to operate further
@@ -5400,6 +5413,10 @@ buffers in the same order in which they have been available.
 A device MAY fail to operate further if VIRTIO_F_IO_BARRIER
 is not accepted.
 
+A device SHOULD offer VIRTIO_F_SR_IOV if it is a PCI device
+and presents a PCI SR-IOV capability structure, otherwise
+it MUST NOT offer VIRTIO_F_SR_IOV.
+
 \section{Legacy Interface: Reserved Feature Bits}\label{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits}
 
 Transitional devices MAY offer the following:
Signature · 6 lines
2.17.0


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

author
#2 lore raw
In reply to Tiwei Bie
Quoted 5 lines · Tiwei Bie

Allocate a feature bit for virtio devices which support SR-IOV.

Please start the voting for this proposal. Thanks!

Best regards,
Tiwei Bie

Quoted 86 lines

---
More details can be found from this thread:
https://patchwork.kernel.org/patch/10285541/

v3 -> v4:
- Limit the feature to PCI devices with SR-IOV cap (MST);

v2 -> v3:
- Improve the wording (Cornelia);

v1 -> v2:
- s/Reserve/Allocate/ (MST);
- Add a Fixes tag (MST);
- Be more explicit in driver requirement (MST);
- Remove the "device MAY fail" description (MST);
- Rebase on IO_BARRIER patch;

RFC -> v1:
- Mention PCI in the description (Cornelia);

 content.tex | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
content.tex +19 -2
index c4b3b5c..beec6c1 100644
@@ -95,10 +95,10 @@ Feature bits are allocated as follows:
 \begin{description}
 \item[0 to 23] Feature bits for the specific device type
 
-\item[24 to 36] Feature bits reserved for extensions to the queue and
+\item[24 to 37] Feature bits reserved for extensions to the queue and
   feature negotiation mechanisms
 
-\item[37 and above] Feature bits reserved for future extensions.
+\item[38 and above] Feature bits reserved for future extensions.
 \end{description}
 
 \begin{note}
@@ -5365,6 +5365,9 @@ Descriptors} and \ref{sec:Packed Virtqueues / Indirect Flag: Scatter-Gather Supp
   better performance.  This feature indicates whether
   a stronger form of barrier suitable for hardware
   devices is necessary.
+  \item[VIRTIO_F_SR_IOV(37)] This feature indicates that
+  the device supports Single Root I/O Virtualization.
+  Currently only PCI devices support this feature.
 \end{description}
 
 \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
@@ -5384,6 +5387,16 @@ A driver SHOULD accept VIRTIO_F_IO_BARRIER if it is offered.
 If VIRTIO_F_IO_BARRIER has been negotiated, a driver MUST use
 the barriers suitable for hardware devices.
 
+If VIRTIO_F_SR_IOV has been negotiated, a driver can enable
+virtual functions through the device's PCI SR-IOV capability
+structure.  A driver MUST NOT negotiate VIRTIO_F_SR_IOV if
+the device does not have a PCI SR-IOV capability structure
+or is not a PCI device.  A driver MUST negotiate
+VIRTIO_F_SR_IOV and complete the feature negotiation
+(including setting the DRIVER_OK \field{status} bit) before
+enabling virtual functions through the device's PCI SR-IOV
+capability structure.
+
 \devicenormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
 
 A device MUST offer VIRTIO_F_VERSION_1.  A device MAY fail to operate further
@@ -5400,6 +5413,10 @@ buffers in the same order in which they have been available.
 A device MAY fail to operate further if VIRTIO_F_IO_BARRIER
 is not accepted.
 
+A device SHOULD offer VIRTIO_F_SR_IOV if it is a PCI device
+and presents a PCI SR-IOV capability structure, otherwise
+it MUST NOT offer VIRTIO_F_SR_IOV.
+
 \section{Legacy Interface: Reserved Feature Bits}\label{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits}
 
 Transitional devices MAY offer the following:
Signature · 6 lines
2.17.0


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

Acked-by on v4 1/1
#3 lore raw
In reply to Tiwei Bie
Quoted 22 lines · On Fri, 25 May 2018 00:49:51 +0800 Tiwei Bie <[email protected]> wrote:

Allocate a feature bit for virtio devices which support SR-IOV.

---
More details can be found from this thread:
https://patchwork.kernel.org/patch/10285541/

v3 -> v4:
- Limit the feature to PCI devices with SR-IOV cap (MST);

v2 -> v3:
- Improve the wording (Cornelia);

v1 -> v2:
- s/Reserve/Allocate/ (MST);
- Add a Fixes tag (MST);
- Be more explicit in driver requirement (MST);
- Remove the "device MAY fail" description (MST);
- Rebase on IO_BARRIER patch;

Quoted 5 lines

RFC -> v1:
- Mention PCI in the description (Cornelia);

 content.tex | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

#4 lore raw
In reply to Tiwei Bie
Quoted 5 lines · Tiwei Bie

Allocate a feature bit for virtio devices which support SR-IOV.

I have a question on this: how exactly is reset handled? Does reset disable IOV?

Quoted 80 lines

---
More details can be found from this thread:
https://patchwork.kernel.org/patch/10285541/

v3 -> v4:
- Limit the feature to PCI devices with SR-IOV cap (MST);

v2 -> v3:
- Improve the wording (Cornelia);

v1 -> v2:
- s/Reserve/Allocate/ (MST);
- Add a Fixes tag (MST);
- Be more explicit in driver requirement (MST);
- Remove the "device MAY fail" description (MST);
- Rebase on IO_BARRIER patch;

RFC -> v1:
- Mention PCI in the description (Cornelia);

 content.tex | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
content.tex +19 -2
index c4b3b5c..beec6c1 100644
@@ -95,10 +95,10 @@ Feature bits are allocated as follows:
 \begin{description}
 \item[0 to 23] Feature bits for the specific device type
 
-\item[24 to 36] Feature bits reserved for extensions to the queue and
+\item[24 to 37] Feature bits reserved for extensions to the queue and
   feature negotiation mechanisms
 
-\item[37 and above] Feature bits reserved for future extensions.
+\item[38 and above] Feature bits reserved for future extensions.
 \end{description}
 
 \begin{note}
@@ -5365,6 +5365,9 @@ Descriptors} and \ref{sec:Packed Virtqueues / Indirect Flag: Scatter-Gather Supp
   better performance.  This feature indicates whether
   a stronger form of barrier suitable for hardware
   devices is necessary.
+  \item[VIRTIO_F_SR_IOV(37)] This feature indicates that
+  the device supports Single Root I/O Virtualization.
+  Currently only PCI devices support this feature.
 \end{description}
 
 \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
@@ -5384,6 +5387,16 @@ A driver SHOULD accept VIRTIO_F_IO_BARRIER if it is offered.
 If VIRTIO_F_IO_BARRIER has been negotiated, a driver MUST use
 the barriers suitable for hardware devices.
 
+If VIRTIO_F_SR_IOV has been negotiated, a driver can enable
+virtual functions through the device's PCI SR-IOV capability
+structure.  A driver MUST NOT negotiate VIRTIO_F_SR_IOV if
+the device does not have a PCI SR-IOV capability structure
+or is not a PCI device.  A driver MUST negotiate
+VIRTIO_F_SR_IOV and complete the feature negotiation
+(including setting the DRIVER_OK \field{status} bit) before
+enabling virtual functions through the device's PCI SR-IOV
+capability structure.
+
 \devicenormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
 
 A device MUST offer VIRTIO_F_VERSION_1.  A device MAY fail to operate further
@@ -5400,6 +5413,10 @@ buffers in the same order in which they have been available.
 A device MAY fail to operate further if VIRTIO_F_IO_BARRIER
 is not accepted.
 
+A device SHOULD offer VIRTIO_F_SR_IOV if it is a PCI device
+and presents a PCI SR-IOV capability structure, otherwise
+it MUST NOT offer VIRTIO_F_SR_IOV.
+
 \section{Legacy Interface: Reserved Feature Bits}\label{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits}
 
 Transitional devices MAY offer the following:
Signature · 1 line
2.17.0

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

author
#5 lore raw
Quoted 9 lines · Michael S. Tsirkin
Quoted 5 lines · Tiwei Bie

Allocate a feature bit for virtio devices which support SR-IOV.

I have a question on this: how exactly is reset handled? Does reset disable IOV?

I think a reset doesn't have to disable IOV. Because PF and VFs are managed by PCI core. They are independent from the driver's point of view. Once VFs are allocated, PF and VFs can be bound to different drivers and used independently. So a driver reset on PF doesn't have to disable IOV. The proposal is just to provide a feature bit based virtio way for virtio drivers to know whether a virtio device is SR-IOV capable (and virtio drivers can support configuring SR-IOV based on the feature bit negotiation result).

Best regards,
Tiwei Bie

Quoted 78 lines
Quoted 78 lines

---
More details can be found from this thread:
https://patchwork.kernel.org/patch/10285541/

v3 -> v4:
- Limit the feature to PCI devices with SR-IOV cap (MST);

v2 -> v3:
- Improve the wording (Cornelia);

v1 -> v2:
- s/Reserve/Allocate/ (MST);
- Add a Fixes tag (MST);
- Be more explicit in driver requirement (MST);
- Remove the "device MAY fail" description (MST);
- Rebase on IO_BARRIER patch;

RFC -> v1:
- Mention PCI in the description (Cornelia);

 content.tex | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
content.tex +19 -2
index c4b3b5c..beec6c1 100644
@@ -95,10 +95,10 @@ Feature bits are allocated as follows:
 \begin{description}
 \item[0 to 23] Feature bits for the specific device type
 
-\item[24 to 36] Feature bits reserved for extensions to the queue and
+\item[24 to 37] Feature bits reserved for extensions to the queue and
   feature negotiation mechanisms
 
-\item[37 and above] Feature bits reserved for future extensions.
+\item[38 and above] Feature bits reserved for future extensions.
 \end{description}
 
 \begin{note}
@@ -5365,6 +5365,9 @@ Descriptors} and \ref{sec:Packed Virtqueues / Indirect Flag: Scatter-Gather Supp
   better performance.  This feature indicates whether
   a stronger form of barrier suitable for hardware
   devices is necessary.
+  \item[VIRTIO_F_SR_IOV(37)] This feature indicates that
+  the device supports Single Root I/O Virtualization.
+  Currently only PCI devices support this feature.
 \end{description}
 
 \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
@@ -5384,6 +5387,16 @@ A driver SHOULD accept VIRTIO_F_IO_BARRIER if it is offered.
 If VIRTIO_F_IO_BARRIER has been negotiated, a driver MUST use
 the barriers suitable for hardware devices.
 
+If VIRTIO_F_SR_IOV has been negotiated, a driver can enable
+virtual functions through the device's PCI SR-IOV capability
+structure.  A driver MUST NOT negotiate VIRTIO_F_SR_IOV if
+the device does not have a PCI SR-IOV capability structure
+or is not a PCI device.  A driver MUST negotiate
+VIRTIO_F_SR_IOV and complete the feature negotiation
+(including setting the DRIVER_OK \field{status} bit) before
+enabling virtual functions through the device's PCI SR-IOV
+capability structure.
+
 \devicenormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
 
 A device MUST offer VIRTIO_F_VERSION_1.  A device MAY fail to operate further
@@ -5400,6 +5413,10 @@ buffers in the same order in which they have been available.
 A device MAY fail to operate further if VIRTIO_F_IO_BARRIER
 is not accepted.
 
+A device SHOULD offer VIRTIO_F_SR_IOV if it is a PCI device
+and presents a PCI SR-IOV capability structure, otherwise
+it MUST NOT offer VIRTIO_F_SR_IOV.
+
 \section{Legacy Interface: Reserved Feature Bits}\label{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits}
 
Quoted 3 lines
Quoted 3 lines
content.tex +0 -0
 Transitional devices MAY offer the following:
Signature · 1 line
2.17.0

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]