Commit 0140b3d0 authored by Jason Wang's avatar Jason Wang Committed by Michael S. Tsirkin
Browse files

virtio-pci library: introduce vp_modern_get_driver_features()



This patch introduce a helper to get driver/guest features from the
device.

Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
Link: https://lore.kernel.org/r/20210602021536.39525-3-jasowang@redhat.com


Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Reviewed-by: default avatarEli Cohen <elic@nvidia.com>
parent 530a5678
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -383,6 +383,27 @@ u64 vp_modern_get_features(struct virtio_pci_modern_device *mdev)
}
EXPORT_SYMBOL_GPL(vp_modern_get_features);

/*
 * vp_modern_get_driver_features - get driver features from device
 * @mdev: the modern virtio-pci device
 *
 * Returns the driver features read from the device
 */
u64 vp_modern_get_driver_features(struct virtio_pci_modern_device *mdev)
{
	struct virtio_pci_common_cfg __iomem *cfg = mdev->common;

	u64 features;

	vp_iowrite32(0, &cfg->guest_feature_select);
	features = vp_ioread32(&cfg->guest_feature);
	vp_iowrite32(1, &cfg->guest_feature_select);
	features |= ((u64)vp_ioread32(&cfg->guest_feature) << 32);

	return features;
}
EXPORT_SYMBOL_GPL(vp_modern_get_driver_features);

/*
 * vp_modern_set_features - set features to device
 * @mdev: the modern virtio-pci device
+1 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ static inline void vp_iowrite64_twopart(u64 val,
}

u64 vp_modern_get_features(struct virtio_pci_modern_device *mdev);
u64 vp_modern_get_driver_features(struct virtio_pci_modern_device *mdev);
void vp_modern_set_features(struct virtio_pci_modern_device *mdev,
		     u64 features);
u32 vp_modern_generation(struct virtio_pci_modern_device *mdev);