[dpdk-dev] [PATCH v2 4/4] net/virtio: enable feature checking on virtio-user

Xia, Chenbo chenbo.xia at intel.com
Wed Aug 5 12:57:23 CEST 2020


> -----Original Message-----
> From: Adrian Moreno <amorenoz at redhat.com>
> Sent: Tuesday, August 4, 2020 3:25 PM
> To: dev at dpdk.org
> Cc: Wang, Zhihong <zhihong.wang at intel.com>; Xia, Chenbo
> <chenbo.xia at intel.com>; maxime.coquelin at redhat.com; Adrian Moreno
> <amorenoz at redhat.com>
> Subject: [PATCH v2 4/4] net/virtio: enable feature checking on virtio-user
> 
> virtio 1.0 introduced a mechanism for the driver to verify that the
> feature bits it sets are accepted by the device. This mechanism consists
> in setting the VIRTIO_STATUS_FEATURE_OK status bit and re-reading it,
> whitch gives a chance for the device to clear it if the the features
> were not accepted.
> 
> This is currently being done only in modern virtio-pci devices but since
> the appropriate vhost-user messages have been added, it can also be done
> in virtio-user (vhost-user only).
> 
> This patch activates this mechanism on virtio-user.
> 
> Signed-off-by: Adrian Moreno <amorenoz at redhat.com>
> ---
>  drivers/net/virtio/virtio_ethdev.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/virtio/virtio_ethdev.c
> b/drivers/net/virtio/virtio_ethdev.c
> index dc0093bdf..9063bfeb2 100644
> --- a/drivers/net/virtio/virtio_ethdev.c
> +++ b/drivers/net/virtio/virtio_ethdev.c
> @@ -1355,12 +1355,13 @@ virtio_negotiate_features(struct virtio_hw *hw,
> uint64_t req_features)
>  	PMD_INIT_LOG(DEBUG, "features after negotiate = %" PRIx64,
>  		hw->guest_features);
> 
> -	if (hw->modern) {
> -		if (!vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) {
> -			PMD_INIT_LOG(ERR,
> -				"VIRTIO_F_VERSION_1 features is not enabled.");
> -			return -1;
> -		}
> +	if (hw->modern && !vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) {
> +		PMD_INIT_LOG(ERR,
> +			"VIRTIO_F_VERSION_1 features is not enabled.");
> +		return -1;
> +	}
> +
> +	if (hw->modern || hw->virtio_user_dev) {
>  		vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_FEATURES_OK);
>  		if (!(vtpci_get_status(hw) & VIRTIO_CONFIG_STATUS_FEATURES_OK))
> {
>  			PMD_INIT_LOG(ERR,
> --
> 2.26.2

Reviewed-by: Chenbo Xia <chenbo.xia at intel.com>


More information about the dev mailing list