virtio_has_feature
writeback = virtio_has_feature(vdev, VIRTIO_BLK_F_FLUSH);
BUG_ON(!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_CONFIG_WCE));
!virtio_has_feature(vdev, VIRTIO_BLK_F_CONFIG_WCE))
if (virtio_has_feature(vdev, VIRTIO_BLK_F_DISCARD)) {
if (virtio_has_feature(vdev, VIRTIO_BLK_F_WRITE_ZEROES)) {
if (virtio_has_feature(vdev, VIRTIO_BLK_F_SECURE_ERASE)) {
if (virtio_has_feature(vdev, VIRTIO_BLK_F_DISCARD) ||
virtio_has_feature(vdev, VIRTIO_BLK_F_SECURE_ERASE)) {
if (virtio_has_feature(vdev, VIRTIO_BLK_F_ZONED)) {
if (!virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC))
if (virtio_has_feature(vdev, VIRTIO_BLK_F_RO))
if (virtio_has_feature(vdev, VIRTIO_BLK_F_DISCARD)) {
if (virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_GEOMETRY)) {
if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
if (virtio_has_feature(vdev, VIRTIO_BT_F_VND_HCI)) {
if (virtio_has_feature(vdev, VIRTIO_BT_F_CONFIG_V2))
if (virtio_has_feature(vdev, VIRTIO_BT_F_MSFT_EXT)) {
if (virtio_has_feature(vdev, VIRTIO_BT_F_CONFIG_V2))
if (virtio_has_feature(vdev, VIRTIO_BT_F_AOSP_EXT))
virtio_has_feature(vdev, VIRTIO_CONSOLE_F_SIZE))
(virtio_has_feature(vdev, VIRTIO_CONSOLE_F_SIZE)
|| virtio_has_feature(vdev, VIRTIO_CONSOLE_F_MULTIPORT))) {
if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
return virtio_has_feature(vdev, VIRTIO_SCMI_F_P2A_CHANNELS);
if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
if (virtio_has_feature(vdev, VIRTIO_GPIO_F_IRQ)) {
if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
if (virtio_has_feature(vgdev->vdev, VIRTIO_GPU_F_VIRGL))
if (virtio_has_feature(vgdev->vdev, VIRTIO_GPU_F_EDID))
if (virtio_has_feature(vgdev->vdev, VIRTIO_RING_F_INDIRECT_DESC))
if (virtio_has_feature(vgdev->vdev, VIRTIO_GPU_F_RESOURCE_UUID))
if (virtio_has_feature(vgdev->vdev, VIRTIO_GPU_F_RESOURCE_BLOB))
if (virtio_has_feature(vgdev->vdev, VIRTIO_GPU_F_CONTEXT_INIT))
if (!virtio_has_feature(vdev, VIRTIO_I2C_F_ZERO_LENGTH_REQUEST))
if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1) ||
!virtio_has_feature(vdev, VIRTIO_IOMMU_F_MAP_UNMAP))
if (virtio_has_feature(vdev, VIRTIO_IOMMU_F_MMIO))
if (virtio_has_feature(viommu->vdev, VIRTIO_IOMMU_F_BYPASS_CONFIG)) {
if (virtio_has_feature(vdev->viommu->vdev,
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL))
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_SPEED_DUPLEX))
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
feature_hdrlen = virtio_has_feature(vi->vdev,
BUG_ON(!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ));
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STANDBY))
if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_MAC_ADDR)) {
} else if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC) &&
!virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
if (!vi->has_cvq || !virtio_has_feature(vi->vdev, VIRTIO_NET_F_MQ))
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_RX))
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL))
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL))
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_DEVICE_STATS))
if (rx_ctrl_dim_on && !virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL))
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_NOTF_COAL))
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_NOTF_COAL)) {
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL))
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL)) {
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)
&& (virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO4) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ECN) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_UFO) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_CSUM) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_USO4) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_USO6))) {
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_STANDBY))
if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL))
virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ);
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VLAN))
if (!virtio_has_feature(vdev, fbit))
if (!virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ) &&
if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_STANDBY) &&
!virtio_has_feature(vdev, VIRTIO_NET_F_MAC)) {
return virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO4) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ECN) ||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_UFO) ||
(virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_USO4) &&
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_USO6));
if (virtio_has_feature(vdev, VIRTIO_NET_F_MQ) || virtio_has_feature(vdev, VIRTIO_NET_F_RSS))
!virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
if (virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_TSO4))
if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_TSO6))
if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_ECN))
if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_USO))
if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO)) {
virtio_has_feature(vdev, VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO_CSUM)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) ||
virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6))
if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS))
if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_HASH_REPORT))
if (virtio_has_feature(vdev, VIRTIO_NET_F_RSS)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO) ||
virtio_has_feature(vdev, VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO))
else if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF) ||
virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO_CSUM))
if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO))
if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO))
if (virtio_has_feature(vdev, VIRTIO_F_ANY_LAYOUT) ||
virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_NOTF_COAL)) {
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_VQ_NOTF_COAL)) {
if (virtio_has_feature(vdev, VIRTIO_NET_F_STANDBY)) {
if (!virtio_has_feature(vdev, VIRTIO_NET_F_MAC) &&
virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_MAC_ADDR)) {
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_DEVICE_STATS)) {
if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
if (virtio_has_feature(vi->vdev, fbit))
if (virtio_has_feature(vdev, VIRTIO_PMEM_F_SHMEM_REGION) &&
if (virtio_has_feature(vdev, VIRTIO_PMEM_F_SHMEM_REGION)) {
virtio_has_feature(vrp->vdev, VIRTIO_RPMSG_F_NS)) {
virtio_has_feature(vrp->vdev, VIRTIO_RPMSG_F_NS)) {
if (virtio_has_feature(vdev, VIRTIO_RPMSG_F_NS)) {
if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG))
if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG))
if (virtio_has_feature(vscsi->vdev, VIRTIO_SCSI_F_T10_PI)) {
if (virtio_has_feature(vdev, VIRTIO_SCSI_F_T10_PI)) {
if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG))
if (!virtio_has_feature(dev, VIRTIO_F_VERSION_1)) {
if (!virtio_has_feature(dev, VIRTIO_F_ACCESS_PLATFORM)) {
if (!virtio_has_feature(dev, VIRTIO_F_VERSION_1))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING)) {
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_DEFLATE_ON_OOM))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_DEFLATE_ON_OOM))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT)) {
else if (!virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON))
if (!virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_STATS_VQ)) {
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING)) {
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_STATS_VQ)) {
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING))
if (!virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_DEFLATE_ON_OOM))
if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT)) {
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) {
if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON)) {
if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
!virtio_has_feature(vm->vdev, VIRTIO_MEM_F_PERSISTENT_SUSPEND)) {
if (virtio_has_feature(vm->vdev, VIRTIO_MEM_F_ACPI_PXM))
if (!virtio_has_feature(virtio_dev, VIRTIO_F_ADMIN_VQ))
if (!virtio_has_feature(vdev, VIRTIO_F_ADMIN_VQ))
if (!virtio_has_feature(vdev, VIRTIO_F_ADMIN_VQ))
if (!virtio_has_feature(vdev, VIRTIO_F_ADMIN_VQ))
if (!virtio_has_feature(vdev, VIRTIO_F_ADMIN_VQ))
if (!virtio_has_feature(vdev, VIRTIO_F_ADMIN_VQ))
if (!virtio_has_feature(vq->vdev, VIRTIO_F_RING_RESET))
if (!virtio_has_feature(virtio_dev, VIRTIO_F_ADMIN_VQ))
vq->indirect = virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC) &&
vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
vq->layout = virtio_has_feature(vdev, VIRTIO_F_IN_ORDER) ?
if (virtio_has_feature(vdev, VIRTIO_F_ORDER_PLATFORM))
vq->indirect = virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC) &&
vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
vq->layout = virtio_has_feature(vdev, VIRTIO_F_IN_ORDER) ?
if (virtio_has_feature(vdev, VIRTIO_F_ORDER_PLATFORM))
if (virtio_has_feature(vdev, VIRTIO_F_RING_PACKED))
if (virtio_has_feature(vdev, VIRTIO_F_RING_PACKED))
if (virtio_has_feature(vdev, VIRTIO_F_RING_PACKED)) {
virtio_has_feature(vdev, VIRTIO_RTC_F_ALARM);
if (virtio_has_feature(vdev, VIRTIO_F_RING_PACKED)) {
return !virtio_has_feature(vdev, VIRTIO_F_ACCESS_PLATFORM);
return virtio_has_feature(vdev, VIRTIO_F_VERSION_1) ||
if (!virtio_has_feature(vdev, fbit)) \
if (!virtio_has_feature(vdev, fbit)) \
if (virtio_has_feature(vdev, VIRTIO_9P_MOUNT_TAG)) {
if (virtio_has_feature(vdev, VIRTIO_VSOCK_F_SEQPACKET))
if (virtio_has_feature(vdev, VIRTIO_SND_F_CTLS)) {
if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {