* [virtio-comment] [PATCH] virtio-net: introduce admin control virtqueue @ 2021-01-22 8:23 Jason Wang 2021-01-22 8:31 ` [virtio-comment] " Michael S. Tsirkin 2021-01-22 10:11 ` [virtio-comment] " Cornelia Huck 0 siblings, 2 replies; 10+ messages in thread From: Jason Wang @ 2021-01-22 8:23 UTC (permalink / raw) To: virtio-comment; +Cc: mst, Jason Wang When implementing multiple (sub)functions virtio device like SRIOV or sub-function. We're suffering from several issues: - There's no management interface for management function (PF) to configure features, attributes for a (sub)function - Per (sub)function control virtqueue could be too expensive as the number of (sub)functions could be very large - Virtualize per (sub)function control virtqueue could be very challenge as we need the support of DMA isolation at queue level So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This allows the device to implement a single admin control virtqueue to manage per (sub)function features and attributes. The idea is simple, a new function id is introduced on top of the exist virtio_net_ctrl structure. This id is transport or device specific to uniquely identify a (sub)function. With this, we get a way of using management function (PF) to configure per (sub)function features and attributes. And since the admin control virtqueue belongs to management function (PF), the DMA is naturally isolated at (sub)function level instead of the queue level for per (sub)function control vq. Signed-off-by: Jason Wang <jasowang@redhat.com> --- content.tex | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/content.tex b/content.tex index 620c0e2..98592a4 100644 --- a/content.tex +++ b/content.tex @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types / Network Device / Feature bits \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control channel. +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is + available. + \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash value and a type of calculated hash. @@ -3864,6 +3867,26 @@ \subsubsection{Control Virtqueue}\label{sec:Device Types / Network Device / Devi do except issue a diagnostic if \field{ack} is not VIRTIO_NET_OK. +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue} + +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the +control virtqueue to manipulate features of individual function where +the control virtqueues is not easily implemented in each function. + +All commands are of the following form: + +\begin{lstlisting} +struct virtio_net_admin_ctrl { + u32 function_id; + struct virtio_net_ctrl ctrl; +}; + +\end{lstlisting} + +The \field{function_id} is an unique transport or device specific +identifier for a function. E.g for the case of PCI SRIOV, it's the id +of PCI function. + \paragraph{Packet Receive Filtering}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering} \label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting Promiscuous Mode}%old label for latexdiff -- 2.25.1 This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [virtio-comment] Re: [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 8:23 [virtio-comment] [PATCH] virtio-net: introduce admin control virtqueue Jason Wang @ 2021-01-22 8:31 ` Michael S. Tsirkin 2021-01-22 8:41 ` Jason Wang 2021-01-22 10:11 ` [virtio-comment] " Cornelia Huck 1 sibling, 1 reply; 10+ messages in thread From: Michael S. Tsirkin @ 2021-01-22 8:31 UTC (permalink / raw) To: Jason Wang; +Cc: virtio-comment On Fri, Jan 22, 2021 at 04:23:25PM +0800, Jason Wang wrote: > When implementing multiple (sub)functions virtio device like SRIOV or > sub-function. We're suffering from several issues: > > - There's no management interface for management function (PF) to > configure features, attributes for a (sub)function > - Per (sub)function control virtqueue could be too expensive as the > number of (sub)functions could be very large > - Virtualize per (sub)function control virtqueue could be very > challenge as we need the support of DMA isolation at queue level > > So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This > allows the device to implement a single admin control virtqueue to > manage per (sub)function features and attributes. > > The idea is simple, a new function id is introduced on top of the > exist virtio_net_ctrl structure. This id is transport or device > specific to uniquely identify a (sub)function. > > With this, we get a way of using management function (PF) to configure > per (sub)function features and attributes. And since the admin control > virtqueue belongs to management function (PF), the DMA is naturally > isolated at (sub)function level instead of the queue level for per > (sub)function control vq. > > Signed-off-by: Jason Wang <jasowang@redhat.com> Let's specify how this works at least for PCI? What about sub-functions under VF level? How are these specified? > --- > content.tex | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/content.tex b/content.tex > index 620c0e2..98592a4 100644 > --- a/content.tex > +++ b/content.tex > @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types / Network Device / Feature bits > \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control > channel. > > +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is > + available. > + > \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash > value and a type of calculated hash. > > @@ -3864,6 +3867,26 @@ \subsubsection{Control Virtqueue}\label{sec:Device Types / Network Device / Devi > do except issue a diagnostic if \field{ack} is not > VIRTIO_NET_OK. > > +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue} > + > +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the > +control virtqueue to manipulate features of individual function where manipulate features? You don't mean feature bits, do you? > +the control virtqueues is not easily implemented in each function. > + > +All commands are of the following form: > + > +\begin{lstlisting} > +struct virtio_net_admin_ctrl { > + u32 function_id; > + struct virtio_net_ctrl ctrl; > +}; > + > +\end{lstlisting} > + > +The \field{function_id} is an unique transport or device specific > +identifier for a function. E.g for the case of PCI SRIOV, it's the id > +of PCI function. > + > \paragraph{Packet Receive Filtering}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering} > \label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting Promiscuous Mode}%old label for latexdiff > > -- > 2.25.1 This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] Re: [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 8:31 ` [virtio-comment] " Michael S. Tsirkin @ 2021-01-22 8:41 ` Jason Wang 2021-01-22 9:03 ` Michael S. Tsirkin 0 siblings, 1 reply; 10+ messages in thread From: Jason Wang @ 2021-01-22 8:41 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: virtio-comment ----- Original Message ----- > On Fri, Jan 22, 2021 at 04:23:25PM +0800, Jason Wang wrote: > > When implementing multiple (sub)functions virtio device like SRIOV or > > sub-function. We're suffering from several issues: > > > > - There's no management interface for management function (PF) to > > configure features, attributes for a (sub)function > > - Per (sub)function control virtqueue could be too expensive as the > > number of (sub)functions could be very large > > - Virtualize per (sub)function control virtqueue could be very > > challenge as we need the support of DMA isolation at queue level > > > > So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This > > allows the device to implement a single admin control virtqueue to > > manage per (sub)function features and attributes. > > > > The idea is simple, a new function id is introduced on top of the > > exist virtio_net_ctrl structure. This id is transport or device > > specific to uniquely identify a (sub)function. > > > > With this, we get a way of using management function (PF) to configure > > per (sub)function features and attributes. And since the admin control > > virtqueue belongs to management function (PF), the DMA is naturally > > isolated at (sub)function level instead of the queue level for per > > (sub)function control vq. > > > > Signed-off-by: Jason Wang <jasowang@redhat.com> > > Let's specify how this works at least for PCI? What about sub-functions > under VF level? How are these specified? Ok, will do. > > > --- > > content.tex | 23 +++++++++++++++++++++++ > > 1 file changed, 23 insertions(+) > > > > diff --git a/content.tex b/content.tex > > index 620c0e2..98592a4 100644 > > --- a/content.tex > > +++ b/content.tex > > @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types / > > Network Device / Feature bits > > \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control > > channel. > > > > +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is > > + available. > > + > > \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash > > value and a type of calculated hash. > > > > @@ -3864,6 +3867,26 @@ \subsubsection{Control Virtqueue}\label{sec:Device > > Types / Network Device / Devi > > do except issue a diagnostic if \field{ack} is not > > VIRTIO_NET_OK. > > > > +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / Network > > Device / Device Operation / Control Virtqueue} > > + > > +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the > > +control virtqueue to manipulate features of individual function where > > manipulate features? You don't mean feature bits, do you? I copy from the control virtqueue paragraph above: """ The driver uses the control virtqueue (if VIRTIO_NET_F_CTRL_VQ is negotiated) to send commands to manipulate various features of the device which would not easily map into the configuration space. """ Do we need to tweak that part as well? Thanks > > > +the control virtqueues is not easily implemented in each function. > > + > > +All commands are of the following form: > > + > > +\begin{lstlisting} > > +struct virtio_net_admin_ctrl { > > + u32 function_id; > > + struct virtio_net_ctrl ctrl; > > +}; > > + > > +\end{lstlisting} > > + > > +The \field{function_id} is an unique transport or device specific > > +identifier for a function. E.g for the case of PCI SRIOV, it's the id > > +of PCI function. > > + > > \paragraph{Packet Receive Filtering}\label{sec:Device Types / Network > > Device / Device Operation / Control Virtqueue / Packet Receive Filtering} > > \label{sec:Device Types / Network Device / Device Operation / Control > > Virtqueue / Setting Promiscuous Mode}%old label for latexdiff > > > > -- > > 2.25.1 > > > This publicly archived list offers a means to provide input to the > OASIS Virtual I/O Device (VIRTIO) TC. > > In order to verify user consent to the Feedback License terms and > to minimize spam in the list archive, subscription is required > before posting. > > Subscribe: virtio-comment-subscribe@lists.oasis-open.org > Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org > List help: virtio-comment-help@lists.oasis-open.org > List archive: https://lists.oasis-open.org/archives/virtio-comment/ > Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf > List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists > Committee: https://www.oasis-open.org/committees/virtio/ > Join OASIS: https://www.oasis-open.org/join/ > > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] Re: [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 8:41 ` Jason Wang @ 2021-01-22 9:03 ` Michael S. Tsirkin 2021-01-22 9:14 ` Jason Wang 0 siblings, 1 reply; 10+ messages in thread From: Michael S. Tsirkin @ 2021-01-22 9:03 UTC (permalink / raw) To: Jason Wang; +Cc: virtio-comment On Fri, Jan 22, 2021 at 03:41:23AM -0500, Jason Wang wrote: > > > ----- Original Message ----- > > On Fri, Jan 22, 2021 at 04:23:25PM +0800, Jason Wang wrote: > > > When implementing multiple (sub)functions virtio device like SRIOV or > > > sub-function. We're suffering from several issues: > > > > > > - There's no management interface for management function (PF) to > > > configure features, attributes for a (sub)function > > > - Per (sub)function control virtqueue could be too expensive as the > > > number of (sub)functions could be very large > > > - Virtualize per (sub)function control virtqueue could be very > > > challenge as we need the support of DMA isolation at queue level > > > > > > So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This > > > allows the device to implement a single admin control virtqueue to > > > manage per (sub)function features and attributes. > > > > > > The idea is simple, a new function id is introduced on top of the > > > exist virtio_net_ctrl structure. This id is transport or device > > > specific to uniquely identify a (sub)function. > > > > > > With this, we get a way of using management function (PF) to configure > > > per (sub)function features and attributes. And since the admin control > > > virtqueue belongs to management function (PF), the DMA is naturally > > > isolated at (sub)function level instead of the queue level for per > > > (sub)function control vq. > > > > > > Signed-off-by: Jason Wang <jasowang@redhat.com> > > > > Let's specify how this works at least for PCI? What about sub-functions > > under VF level? How are these specified? > > Ok, will do. > > > > > > --- > > > content.tex | 23 +++++++++++++++++++++++ > > > 1 file changed, 23 insertions(+) > > > > > > diff --git a/content.tex b/content.tex > > > index 620c0e2..98592a4 100644 > > > --- a/content.tex > > > +++ b/content.tex > > > @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types / > > > Network Device / Feature bits > > > \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control > > > channel. > > > > > > +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is > > > + available. > > > + > > > \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash > > > value and a type of calculated hash. > > > > > > @@ -3864,6 +3867,26 @@ \subsubsection{Control Virtqueue}\label{sec:Device > > > Types / Network Device / Devi > > > do except issue a diagnostic if \field{ack} is not > > > VIRTIO_NET_OK. > > > > > > +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / Network > > > Device / Device Operation / Control Virtqueue} > > > + > > > +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the > > > +control virtqueue to manipulate features of individual function where > > > > manipulate features? You don't mean feature bits, do you? > > I copy from the control virtqueue paragraph above: > > """ > The driver uses the control virtqueue (if VIRTIO_NET_F_CTRL_VQ is > negotiated) to send commands to manipulate various features of > the device which would not easily map into the configuration > space. > """ > > Do we need to tweak that part as well? > > Thanks Maybe, but let's be a bit more specific. For example, is it legal to manipulate the MAC of a VF? When is it legal? > > > > > +the control virtqueues is not easily implemented in each function. > > > + > > > +All commands are of the following form: > > > + > > > +\begin{lstlisting} > > > +struct virtio_net_admin_ctrl { > > > + u32 function_id; > > > + struct virtio_net_ctrl ctrl; > > > +}; > > > + > > > +\end{lstlisting} > > > + > > > +The \field{function_id} is an unique transport or device specific > > > +identifier for a function. E.g for the case of PCI SRIOV, it's the id > > > +of PCI function. > > > + > > > \paragraph{Packet Receive Filtering}\label{sec:Device Types / Network > > > Device / Device Operation / Control Virtqueue / Packet Receive Filtering} > > > \label{sec:Device Types / Network Device / Device Operation / Control > > > Virtqueue / Setting Promiscuous Mode}%old label for latexdiff > > > > > > -- > > > 2.25.1 > > > > > > This publicly archived list offers a means to provide input to the > > OASIS Virtual I/O Device (VIRTIO) TC. > > > > In order to verify user consent to the Feedback License terms and > > to minimize spam in the list archive, subscription is required > > before posting. > > > > Subscribe: virtio-comment-subscribe@lists.oasis-open.org > > Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org > > List help: virtio-comment-help@lists.oasis-open.org > > List archive: https://lists.oasis-open.org/archives/virtio-comment/ > > Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf > > List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists > > Committee: https://www.oasis-open.org/committees/virtio/ > > Join OASIS: https://www.oasis-open.org/join/ > > > > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] Re: [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 9:03 ` Michael S. Tsirkin @ 2021-01-22 9:14 ` Jason Wang 2021-01-22 12:14 ` Michael S. Tsirkin 0 siblings, 1 reply; 10+ messages in thread From: Jason Wang @ 2021-01-22 9:14 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: virtio-comment ----- Original Message ----- > On Fri, Jan 22, 2021 at 03:41:23AM -0500, Jason Wang wrote: > > > > > > ----- Original Message ----- > > > On Fri, Jan 22, 2021 at 04:23:25PM +0800, Jason Wang wrote: > > > > When implementing multiple (sub)functions virtio device like SRIOV or > > > > sub-function. We're suffering from several issues: > > > > > > > > - There's no management interface for management function (PF) to > > > > configure features, attributes for a (sub)function > > > > - Per (sub)function control virtqueue could be too expensive as the > > > > number of (sub)functions could be very large > > > > - Virtualize per (sub)function control virtqueue could be very > > > > challenge as we need the support of DMA isolation at queue level > > > > > > > > So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This > > > > allows the device to implement a single admin control virtqueue to > > > > manage per (sub)function features and attributes. > > > > > > > > The idea is simple, a new function id is introduced on top of the > > > > exist virtio_net_ctrl structure. This id is transport or device > > > > specific to uniquely identify a (sub)function. > > > > > > > > With this, we get a way of using management function (PF) to configure > > > > per (sub)function features and attributes. And since the admin control > > > > virtqueue belongs to management function (PF), the DMA is naturally > > > > isolated at (sub)function level instead of the queue level for per > > > > (sub)function control vq. > > > > > > > > Signed-off-by: Jason Wang <jasowang@redhat.com> > > > > > > Let's specify how this works at least for PCI? What about sub-functions > > > under VF level? How are these specified? > > > > Ok, will do. > > > > > > > > > --- > > > > content.tex | 23 +++++++++++++++++++++++ > > > > 1 file changed, 23 insertions(+) > > > > > > > > diff --git a/content.tex b/content.tex > > > > index 620c0e2..98592a4 100644 > > > > --- a/content.tex > > > > +++ b/content.tex > > > > @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types > > > > / > > > > Network Device / Feature bits > > > > \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control > > > > channel. > > > > > > > > +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is > > > > + available. > > > > + > > > > \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash > > > > value and a type of calculated hash. > > > > > > > > @@ -3864,6 +3867,26 @@ \subsubsection{Control > > > > Virtqueue}\label{sec:Device > > > > Types / Network Device / Devi > > > > do except issue a diagnostic if \field{ack} is not > > > > VIRTIO_NET_OK. > > > > > > > > +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / > > > > Network > > > > Device / Device Operation / Control Virtqueue} > > > > + > > > > +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the > > > > +control virtqueue to manipulate features of individual function where > > > > > > manipulate features? You don't mean feature bits, do you? > > > > I copy from the control virtqueue paragraph above: > > > > """ > > The driver uses the control virtqueue (if VIRTIO_NET_F_CTRL_VQ is > > negotiated) to send commands to manipulate various features of > > the device which would not easily map into the configuration > > space. > > """ > > > > Do we need to tweak that part as well? > > > > Thanks > > Maybe, but let's be a bit more specific. For example, > is it legal to manipulate the MAC of a VF? Right, so we can clarify that the admin control virtqueue should be only used/advertised for the management function like PF. When neogiated, it's always legal to manipulte the MAC of VF through it. > When is it legal? Or do you mean some like "trust" command for iproute2 that allows VF to change its own mac? When PF has admin cvq and VF has normal cvq, management software needs to synrhonize the setting of mac address. E.g management won't set mac address after VM is launched. Thanks > > > > > > > > > +the control virtqueues is not easily implemented in each function. > > > > + > > > > +All commands are of the following form: > > > > + > > > > +\begin{lstlisting} > > > > +struct virtio_net_admin_ctrl { > > > > + u32 function_id; > > > > + struct virtio_net_ctrl ctrl; > > > > +}; > > > > + > > > > +\end{lstlisting} > > > > + > > > > +The \field{function_id} is an unique transport or device specific > > > > +identifier for a function. E.g for the case of PCI SRIOV, it's the id > > > > +of PCI function. > > > > + > > > > \paragraph{Packet Receive Filtering}\label{sec:Device Types / Network > > > > Device / Device Operation / Control Virtqueue / Packet Receive > > > > Filtering} > > > > \label{sec:Device Types / Network Device / Device Operation / Control > > > > Virtqueue / Setting Promiscuous Mode}%old label for latexdiff > > > > > > > > -- > > > > 2.25.1 > > > > > > > > > This publicly archived list offers a means to provide input to the > > > OASIS Virtual I/O Device (VIRTIO) TC. > > > > > > In order to verify user consent to the Feedback License terms and > > > to minimize spam in the list archive, subscription is required > > > before posting. > > > > > > Subscribe: virtio-comment-subscribe@lists.oasis-open.org > > > Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org > > > List help: virtio-comment-help@lists.oasis-open.org > > > List archive: https://lists.oasis-open.org/archives/virtio-comment/ > > > Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf > > > List Guidelines: > > > https://www.oasis-open.org/policies-guidelines/mailing-lists > > > Committee: https://www.oasis-open.org/committees/virtio/ > > > Join OASIS: https://www.oasis-open.org/join/ > > > > > > > > > This publicly archived list offers a means to provide input to the > OASIS Virtual I/O Device (VIRTIO) TC. > > In order to verify user consent to the Feedback License terms and > to minimize spam in the list archive, subscription is required > before posting. > > Subscribe: virtio-comment-subscribe@lists.oasis-open.org > Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org > List help: virtio-comment-help@lists.oasis-open.org > List archive: https://lists.oasis-open.org/archives/virtio-comment/ > Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf > List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists > Committee: https://www.oasis-open.org/committees/virtio/ > Join OASIS: https://www.oasis-open.org/join/ > > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] Re: [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 9:14 ` Jason Wang @ 2021-01-22 12:14 ` Michael S. Tsirkin 2021-01-25 3:57 ` Jason Wang 0 siblings, 1 reply; 10+ messages in thread From: Michael S. Tsirkin @ 2021-01-22 12:14 UTC (permalink / raw) To: Jason Wang; +Cc: virtio-comment On Fri, Jan 22, 2021 at 04:14:19AM -0500, Jason Wang wrote: > ----- Original Message ----- > > On Fri, Jan 22, 2021 at 03:41:23AM -0500, Jason Wang wrote: > > > > > > > > > ----- Original Message ----- > > > > On Fri, Jan 22, 2021 at 04:23:25PM +0800, Jason Wang wrote: > > > > > When implementing multiple (sub)functions virtio device like SRIOV or > > > > > sub-function. We're suffering from several issues: > > > > > > > > > > - There's no management interface for management function (PF) to > > > > > configure features, attributes for a (sub)function > > > > > - Per (sub)function control virtqueue could be too expensive as the > > > > > number of (sub)functions could be very large > > > > > - Virtualize per (sub)function control virtqueue could be very > > > > > challenge as we need the support of DMA isolation at queue level > > > > > > > > > > So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This > > > > > allows the device to implement a single admin control virtqueue to > > > > > manage per (sub)function features and attributes. > > > > > > > > > > The idea is simple, a new function id is introduced on top of the > > > > > exist virtio_net_ctrl structure. This id is transport or device > > > > > specific to uniquely identify a (sub)function. > > > > > > > > > > With this, we get a way of using management function (PF) to configure > > > > > per (sub)function features and attributes. And since the admin control > > > > > virtqueue belongs to management function (PF), the DMA is naturally > > > > > isolated at (sub)function level instead of the queue level for per > > > > > (sub)function control vq. > > > > > > > > > > Signed-off-by: Jason Wang <jasowang@redhat.com> > > > > > > > > Let's specify how this works at least for PCI? What about sub-functions > > > > under VF level? How are these specified? > > > > > > Ok, will do. > > > > > > > > > > > > --- > > > > > content.tex | 23 +++++++++++++++++++++++ > > > > > 1 file changed, 23 insertions(+) > > > > > > > > > > diff --git a/content.tex b/content.tex > > > > > index 620c0e2..98592a4 100644 > > > > > --- a/content.tex > > > > > +++ b/content.tex > > > > > @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types > > > > > / > > > > > Network Device / Feature bits > > > > > \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control > > > > > channel. > > > > > > > > > > +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is > > > > > + available. > > > > > + > > > > > \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash > > > > > value and a type of calculated hash. > > > > > > > > > > @@ -3864,6 +3867,26 @@ \subsubsection{Control > > > > > Virtqueue}\label{sec:Device > > > > > Types / Network Device / Devi > > > > > do except issue a diagnostic if \field{ack} is not > > > > > VIRTIO_NET_OK. > > > > > > > > > > +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / > > > > > Network > > > > > Device / Device Operation / Control Virtqueue} > > > > > + > > > > > +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the > > > > > +control virtqueue to manipulate features of individual function where > > > > > > > > manipulate features? You don't mean feature bits, do you? > > > > > > I copy from the control virtqueue paragraph above: > > > > > > """ > > > The driver uses the control virtqueue (if VIRTIO_NET_F_CTRL_VQ is > > > negotiated) to send commands to manipulate various features of > > > the device which would not easily map into the configuration > > > space. > > > """ > > > > > > Do we need to tweak that part as well? > > > > > > Thanks > > > > Maybe, but let's be a bit more specific. For example, > > is it legal to manipulate the MAC of a VF? > > Right, so we can clarify that the admin control virtqueue should be > only used/advertised for the management function like PF. When > neogiated, it's always legal to manipulte the MAC of VF through it. > > > When is it legal? > > Or do you mean some like "trust" command for iproute2 that allows VF > to change its own mac? > > When PF has admin cvq and VF has normal cvq, management software needs > to synrhonize the setting of mac address. E.g management won't set mac > address after VM is launched. > > Thanks Consider. VF has VIRTIO_NET_F_CTRL_MAC_ADDR. This means guest can set mac address. This is something PF needs ability to control. How is this done? Also, does PF allow setting guest MAC? when? when PF has VIRTIO_NET_F_CTRL_MAC_ADDR? Do we differentiate between that and ability to set MAC for pf? > > > > > > > > > > > > > +the control virtqueues is not easily implemented in each function. > > > > > + > > > > > +All commands are of the following form: > > > > > + > > > > > +\begin{lstlisting} > > > > > +struct virtio_net_admin_ctrl { > > > > > + u32 function_id; > > > > > + struct virtio_net_ctrl ctrl; > > > > > +}; > > > > > + > > > > > +\end{lstlisting} > > > > > + > > > > > +The \field{function_id} is an unique transport or device specific > > > > > +identifier for a function. E.g for the case of PCI SRIOV, it's the id > > > > > +of PCI function. > > > > > + > > > > > \paragraph{Packet Receive Filtering}\label{sec:Device Types / Network > > > > > Device / Device Operation / Control Virtqueue / Packet Receive > > > > > Filtering} > > > > > \label{sec:Device Types / Network Device / Device Operation / Control > > > > > Virtqueue / Setting Promiscuous Mode}%old label for latexdiff > > > > > > > > > > -- > > > > > 2.25.1 > > > > > > > > > > > > This publicly archived list offers a means to provide input to the > > > > OASIS Virtual I/O Device (VIRTIO) TC. > > > > > > > > In order to verify user consent to the Feedback License terms and > > > > to minimize spam in the list archive, subscription is required > > > > before posting. > > > > > > > > Subscribe: virtio-comment-subscribe@lists.oasis-open.org > > > > Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org > > > > List help: virtio-comment-help@lists.oasis-open.org > > > > List archive: https://lists.oasis-open.org/archives/virtio-comment/ > > > > Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf > > > > List Guidelines: > > > > https://www.oasis-open.org/policies-guidelines/mailing-lists > > > > Committee: https://www.oasis-open.org/committees/virtio/ > > > > Join OASIS: https://www.oasis-open.org/join/ > > > > > > > > > > > > > > This publicly archived list offers a means to provide input to the > > OASIS Virtual I/O Device (VIRTIO) TC. > > > > In order to verify user consent to the Feedback License terms and > > to minimize spam in the list archive, subscription is required > > before posting. > > > > Subscribe: virtio-comment-subscribe@lists.oasis-open.org > > Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org > > List help: virtio-comment-help@lists.oasis-open.org > > List archive: https://lists.oasis-open.org/archives/virtio-comment/ > > Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf > > List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists > > Committee: https://www.oasis-open.org/committees/virtio/ > > Join OASIS: https://www.oasis-open.org/join/ > > > > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] Re: [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 12:14 ` Michael S. Tsirkin @ 2021-01-25 3:57 ` Jason Wang 0 siblings, 0 replies; 10+ messages in thread From: Jason Wang @ 2021-01-25 3:57 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: virtio-comment On 2021/1/22 下午8:14, Michael S. Tsirkin wrote: > On Fri, Jan 22, 2021 at 04:14:19AM -0500, Jason Wang wrote: >> ----- Original Message ----- >>> On Fri, Jan 22, 2021 at 03:41:23AM -0500, Jason Wang wrote: >>>> ----- Original Message ----- >>>>> On Fri, Jan 22, 2021 at 04:23:25PM +0800, Jason Wang wrote: >>>>>> When implementing multiple (sub)functions virtio device like SRIOV or >>>>>> sub-function. We're suffering from several issues: >>>>>> >>>>>> - There's no management interface for management function (PF) to >>>>>> configure features, attributes for a (sub)function >>>>>> - Per (sub)function control virtqueue could be too expensive as the >>>>>> number of (sub)functions could be very large >>>>>> - Virtualize per (sub)function control virtqueue could be very >>>>>> challenge as we need the support of DMA isolation at queue level >>>>>> >>>>>> So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This >>>>>> allows the device to implement a single admin control virtqueue to >>>>>> manage per (sub)function features and attributes. >>>>>> >>>>>> The idea is simple, a new function id is introduced on top of the >>>>>> exist virtio_net_ctrl structure. This id is transport or device >>>>>> specific to uniquely identify a (sub)function. >>>>>> >>>>>> With this, we get a way of using management function (PF) to configure >>>>>> per (sub)function features and attributes. And since the admin control >>>>>> virtqueue belongs to management function (PF), the DMA is naturally >>>>>> isolated at (sub)function level instead of the queue level for per >>>>>> (sub)function control vq. >>>>>> >>>>>> Signed-off-by: Jason Wang<jasowang@redhat.com> >>>>> Let's specify how this works at least for PCI? What about sub-functions >>>>> under VF level? How are these specified? >>>> Ok, will do. >>>> >>>>>> --- >>>>>> content.tex | 23 +++++++++++++++++++++++ >>>>>> 1 file changed, 23 insertions(+) >>>>>> >>>>>> diff --git a/content.tex b/content.tex >>>>>> index 620c0e2..98592a4 100644 >>>>>> --- a/content.tex >>>>>> +++ b/content.tex >>>>>> @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types >>>>>> / >>>>>> Network Device / Feature bits >>>>>> \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control >>>>>> channel. >>>>>> >>>>>> +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is >>>>>> + available. >>>>>> + >>>>>> \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash >>>>>> value and a type of calculated hash. >>>>>> >>>>>> @@ -3864,6 +3867,26 @@ \subsubsection{Control >>>>>> Virtqueue}\label{sec:Device >>>>>> Types / Network Device / Devi >>>>>> do except issue a diagnostic if \field{ack} is not >>>>>> VIRTIO_NET_OK. >>>>>> >>>>>> +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / >>>>>> Network >>>>>> Device / Device Operation / Control Virtqueue} >>>>>> + >>>>>> +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the >>>>>> +control virtqueue to manipulate features of individual function where >>>>> manipulate features? You don't mean feature bits, do you? >>>> I copy from the control virtqueue paragraph above: >>>> >>>> """ >>>> The driver uses the control virtqueue (if VIRTIO_NET_F_CTRL_VQ is >>>> negotiated) to send commands to manipulate various features of >>>> the device which would not easily map into the configuration >>>> space. >>>> """ >>>> >>>> Do we need to tweak that part as well? >>>> >>>> Thanks >>> Maybe, but let's be a bit more specific. For example, >>> is it legal to manipulate the MAC of a VF? >> Right, so we can clarify that the admin control virtqueue should be >> only used/advertised for the management function like PF. When >> neogiated, it's always legal to manipulte the MAC of VF through it. >> >>> When is it legal? >> Or do you mean some like "trust" command for iproute2 that allows VF >> to change its own mac? >> >> When PF has admin cvq and VF has normal cvq, management software needs >> to synrhonize the setting of mac address. E.g management won't set mac >> address after VM is launched. >> >> Thanks > Consider. > VF has VIRTIO_NET_F_CTRL_MAC_ADDR. This means guest can set mac address. > This is something PF needs ability to control. How is this done? This requires a new command to allow/deny the mac address setting from the VF. > > Also, does PF allow setting guest MAC? I think the answer is yes. > when? It will work as how ip set vf mac work. Usually, it should be done before launching the guest. Management should make sure there's no conflict in mac address updating. > when PF has > VIRTIO_NET_F_CTRL_MAC_ADDR? Yes, without this feature. We can't set mac address through admin control virtqueue. > Do we differentiate between > that and ability to set MAC for pf? I think not. E.g PF should have a dedicated function_id (or virtual device id) like 0. Then we can set mac address of PF through admin cvq. Thanks > > > > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 8:23 [virtio-comment] [PATCH] virtio-net: introduce admin control virtqueue Jason Wang 2021-01-22 8:31 ` [virtio-comment] " Michael S. Tsirkin @ 2021-01-22 10:11 ` Cornelia Huck 2021-01-25 3:51 ` Jason Wang 1 sibling, 1 reply; 10+ messages in thread From: Cornelia Huck @ 2021-01-22 10:11 UTC (permalink / raw) To: Jason Wang; +Cc: virtio-comment, mst On Fri, 22 Jan 2021 16:23:25 +0800 Jason Wang <jasowang@redhat.com> wrote: > When implementing multiple (sub)functions virtio device like SRIOV or > sub-function. We're suffering from several issues: > > - There's no management interface for management function (PF) to > configure features, attributes for a (sub)function > - Per (sub)function control virtqueue could be too expensive as the > number of (sub)functions could be very large > - Virtualize per (sub)function control virtqueue could be very > challenge as we need the support of DMA isolation at queue level > > So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This > allows the device to implement a single admin control virtqueue to > manage per (sub)function features and attributes. > > The idea is simple, a new function id is introduced on top of the > exist virtio_net_ctrl structure. This id is transport or device > specific to uniquely identify a (sub)function. > > With this, we get a way of using management function (PF) to configure > per (sub)function features and attributes. And since the admin control > virtqueue belongs to management function (PF), the DMA is naturally > isolated at (sub)function level instead of the queue level for per > (sub)function control vq. > > Signed-off-by: Jason Wang <jasowang@redhat.com> > --- > content.tex | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/content.tex b/content.tex > index 620c0e2..98592a4 100644 > --- a/content.tex > +++ b/content.tex > @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types / Network Device / Feature bits > \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control > channel. > > +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is > + available. > + > \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash > value and a type of calculated hash. > > @@ -3864,6 +3867,26 @@ \subsubsection{Control Virtqueue}\label{sec:Device Types / Network Device / Devi > do except issue a diagnostic if \field{ack} is not > VIRTIO_NET_OK. > > +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue} > + > +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the > +control virtqueue to manipulate features of individual function where > +the control virtqueues is not easily implemented in each function. What is a 'function' in the context of the virtio-net device? I don't think that this term is universal across transports. > + > +All commands are of the following form: > + > +\begin{lstlisting} > +struct virtio_net_admin_ctrl { > + u32 function_id; > + struct virtio_net_ctrl ctrl; > +}; > + > +\end{lstlisting} > + > +The \field{function_id} is an unique transport or device specific > +identifier for a function. E.g for the case of PCI SRIOV, it's the id > +of PCI function. > + > \paragraph{Packet Receive Filtering}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering} > \label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting Promiscuous Mode}%old label for latexdiff > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] [PATCH] virtio-net: introduce admin control virtqueue 2021-01-22 10:11 ` [virtio-comment] " Cornelia Huck @ 2021-01-25 3:51 ` Jason Wang 2021-01-25 4:08 ` Jason Wang 0 siblings, 1 reply; 10+ messages in thread From: Jason Wang @ 2021-01-25 3:51 UTC (permalink / raw) To: Cornelia Huck; +Cc: virtio-comment, mst On 2021/1/22 下午6:11, Cornelia Huck wrote: > On Fri, 22 Jan 2021 16:23:25 +0800 > Jason Wang<jasowang@redhat.com> wrote: > >> When implementing multiple (sub)functions virtio device like SRIOV or >> sub-function. We're suffering from several issues: >> >> - There's no management interface for management function (PF) to >> configure features, attributes for a (sub)function >> - Per (sub)function control virtqueue could be too expensive as the >> number of (sub)functions could be very large >> - Virtualize per (sub)function control virtqueue could be very >> challenge as we need the support of DMA isolation at queue level >> >> So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This >> allows the device to implement a single admin control virtqueue to >> manage per (sub)function features and attributes. >> >> The idea is simple, a new function id is introduced on top of the >> exist virtio_net_ctrl structure. This id is transport or device >> specific to uniquely identify a (sub)function. >> >> With this, we get a way of using management function (PF) to configure >> per (sub)function features and attributes. And since the admin control >> virtqueue belongs to management function (PF), the DMA is naturally >> isolated at (sub)function level instead of the queue level for per >> (sub)function control vq. >> >> Signed-off-by: Jason Wang<jasowang@redhat.com> >> --- >> content.tex | 23 +++++++++++++++++++++++ >> 1 file changed, 23 insertions(+) >> >> diff --git a/content.tex b/content.tex >> index 620c0e2..98592a4 100644 >> --- a/content.tex >> +++ b/content.tex >> @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types / Network Device / Feature bits >> \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control >> channel. >> >> +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is >> + available. >> + >> \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash >> value and a type of calculated hash. >> >> @@ -3864,6 +3867,26 @@ \subsubsection{Control Virtqueue}\label{sec:Device Types / Network Device / Devi >> do except issue a diagnostic if \field{ack} is not >> VIRTIO_NET_OK. >> >> +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue} >> + >> +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the >> +control virtqueue to manipulate features of individual function where >> +the control virtqueues is not easily implemented in each function. > What is a 'function' in the context of the virtio-net device? I don't > think that this term is universal across transports. Good point. It might have well definition only in PCI. I wonder whether we can use "virtual device" here? It avoids transport specific terminology. And we can explain "virtual device" in one or two sentences here. Thanks > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [virtio-comment] [PATCH] virtio-net: introduce admin control virtqueue 2021-01-25 3:51 ` Jason Wang @ 2021-01-25 4:08 ` Jason Wang 0 siblings, 0 replies; 10+ messages in thread From: Jason Wang @ 2021-01-25 4:08 UTC (permalink / raw) To: Cornelia Huck; +Cc: virtio-comment, mst ----- Original Message ----- > > On 2021/1/22 下午6:11, Cornelia Huck wrote: > > On Fri, 22 Jan 2021 16:23:25 +0800 > > Jason Wang<jasowang@redhat.com> wrote: > > > >> When implementing multiple (sub)functions virtio device like SRIOV or > >> sub-function. We're suffering from several issues: > >> > >> - There's no management interface for management function (PF) to > >> configure features, attributes for a (sub)function > >> - Per (sub)function control virtqueue could be too expensive as the > >> number of (sub)functions could be very large > >> - Virtualize per (sub)function control virtqueue could be very > >> challenge as we need the support of DMA isolation at queue level > >> > >> So this patch introduces the feature of VIRTIO_NET_CTRL_ADMIN_VQ. This > >> allows the device to implement a single admin control virtqueue to > >> manage per (sub)function features and attributes. > >> > >> The idea is simple, a new function id is introduced on top of the > >> exist virtio_net_ctrl structure. This id is transport or device > >> specific to uniquely identify a (sub)function. > >> > >> With this, we get a way of using management function (PF) to configure > >> per (sub)function features and attributes. And since the admin control > >> virtqueue belongs to management function (PF), the DMA is naturally > >> isolated at (sub)function level instead of the queue level for per > >> (sub)function control vq. > >> > >> Signed-off-by: Jason Wang<jasowang@redhat.com> > >> --- > >> content.tex | 23 +++++++++++++++++++++++ > >> 1 file changed, 23 insertions(+) > >> > >> diff --git a/content.tex b/content.tex > >> index 620c0e2..98592a4 100644 > >> --- a/content.tex > >> +++ b/content.tex > >> @@ -2940,6 +2940,9 @@ \subsection{Feature bits}\label{sec:Device Types / > >> Network Device / Feature bits > >> \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control > >> channel. > >> > >> +\item[VIRTIO_NET_F_ADMIN_CTRL_VQ(56)] Admin control channel is > >> + available. > >> + > >> \item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash > >> value and a type of calculated hash. > >> > >> @@ -3864,6 +3867,26 @@ \subsubsection{Control Virtqueue}\label{sec:Device > >> Types / Network Device / Devi > >> do except issue a diagnostic if \field{ack} is not > >> VIRTIO_NET_OK. > >> > >> +\subsubsection{Admin Control Virtqueue}\label{sec:Device Types / Network > >> Device / Device Operation / Control Virtqueue} > >> + > >> +When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the > >> +control virtqueue to manipulate features of individual function where > >> +the control virtqueues is not easily implemented in each function. > > What is a 'function' in the context of the virtio-net device? I don't > > think that this term is universal across transports. > > > Good point. It might have well definition only in PCI. > > I wonder whether we can use "virtual device" here? It avoids transport > specific terminology. And we can explain "virtual device" in one or two > sentences here. > > Thanks Something like: When VIRTIO_NET_F_ADMIN_CTRL_VQ is negotiated, the driver can use the admin control virtqueue of the management device to manipulate features of individual virtual devices where the control virtqueue is not easily implemented. The definition of management device and virtual device is totally transport specific. E.g in the case of PCI transport, the management device is usually the physical function (PF), and the virtual device is the virtual function (VF). Thanks > > > > > > > This publicly archived list offers a means to provide input to the > OASIS Virtual I/O Device (VIRTIO) TC. > > In order to verify user consent to the Feedback License terms and > to minimize spam in the list archive, subscription is required > before posting. > > Subscribe: virtio-comment-subscribe@lists.oasis-open.org > Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org > List help: virtio-comment-help@lists.oasis-open.org > List archive: https://lists.oasis-open.org/archives/virtio-comment/ > Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf > List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists > Committee: https://www.oasis-open.org/committees/virtio/ > Join OASIS: https://www.oasis-open.org/join/ > > This publicly archived list offers a means to provide input to the OASIS Virtual I/O Device (VIRTIO) TC. In order to verify user consent to the Feedback License terms and to minimize spam in the list archive, subscription is required before posting. Subscribe: virtio-comment-subscribe@lists.oasis-open.org Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org List help: virtio-comment-help@lists.oasis-open.org List archive: https://lists.oasis-open.org/archives/virtio-comment/ Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists Committee: https://www.oasis-open.org/committees/virtio/ Join OASIS: https://www.oasis-open.org/join/ ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-01-25 4:08 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-01-22 8:23 [virtio-comment] [PATCH] virtio-net: introduce admin control virtqueue Jason Wang 2021-01-22 8:31 ` [virtio-comment] " Michael S. Tsirkin 2021-01-22 8:41 ` Jason Wang 2021-01-22 9:03 ` Michael S. Tsirkin 2021-01-22 9:14 ` Jason Wang 2021-01-22 12:14 ` Michael S. Tsirkin 2021-01-25 3:57 ` Jason Wang 2021-01-22 10:11 ` [virtio-comment] " Cornelia Huck 2021-01-25 3:51 ` Jason Wang 2021-01-25 4:08 ` Jason Wang
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.