This commit adds the minimum set of changes required for modern virtio
support.
Signed-off-by: Andrei Tudor Topală <topala.andrei@gmail.com>
Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1115
static inline void virtio_dev_drv_up(struct virtio_dev *vdev)
{
- virtio_dev_status_update(vdev, VIRTIO_CONFIG_STATUS_DRIVER_OK);
+ __u8 status = VIRTIO_CONFIG_STATUS_ACK |
+ VIRTIO_CONFIG_STATUS_DRIVER |
+ VIRTIO_CONFIG_STATUS_FEATURES_OK |
+ VIRTIO_CONFIG_STATUS_DRIVER_OK;
+
+ virtio_dev_status_update(vdev, status);
}
#define VIRTIO_BUS_REGISTER_DRIVER(b) \
}
/* Acknowledge the virtio device */
rc = virtio_dev_status_update(vdev, VIRTIO_CONFIG_STATUS_ACK);
- if (rc != 0) {
+ if (unlikely(rc)) {
uk_pr_err("Failed to acknowledge the virtio device %p: %d\n",
vdev, rc);
return rc;
}
/* Acknowledge the virtio driver */
- rc = virtio_dev_status_update(vdev, VIRTIO_CONFIG_STATUS_DRIVER);
- if (rc != 0) {
+ rc = virtio_dev_status_update(vdev, (VIRTIO_CONFIG_STATUS_ACK |
+ VIRTIO_CONFIG_STATUS_DRIVER));
+ if (unlikely(rc)) {
uk_pr_err("Failed to acknowledge the virtio driver %p: %d\n",
vdev, rc);
return rc;