net/virtio-user: enable feature checking
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, which gives a chance for the device to clear it if 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. Reviewed-by: Chenbo Xia <chenbo.xia@intel.com> Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
This commit is contained in:
parent
0b0dc66c72
commit
ce40b4a881
@ -1354,12 +1354,13 @@ virtio_negotiate_features(struct virtio_hw *hw, uint64_t req_features)
|
|||||||
PMD_INIT_LOG(DEBUG, "features after negotiate = %" PRIx64,
|
PMD_INIT_LOG(DEBUG, "features after negotiate = %" PRIx64,
|
||||||
hw->guest_features);
|
hw->guest_features);
|
||||||
|
|
||||||
if (hw->modern) {
|
if (hw->modern && !vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) {
|
||||||
if (!vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) {
|
PMD_INIT_LOG(ERR,
|
||||||
PMD_INIT_LOG(ERR,
|
"VIRTIO_F_VERSION_1 features is not enabled.");
|
||||||
"VIRTIO_F_VERSION_1 features is not enabled.");
|
return -1;
|
||||||
return -1;
|
}
|
||||||
}
|
|
||||||
|
if (hw->modern || hw->virtio_user_dev) {
|
||||||
vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_FEATURES_OK);
|
vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_FEATURES_OK);
|
||||||
if (!(vtpci_get_status(hw) & VIRTIO_CONFIG_STATUS_FEATURES_OK)) {
|
if (!(vtpci_get_status(hw) & VIRTIO_CONFIG_STATUS_FEATURES_OK)) {
|
||||||
PMD_INIT_LOG(ERR,
|
PMD_INIT_LOG(ERR,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user