Message ID | 20210602021536.39525-3-jasowang@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | Packed virtqueue state support for vDPA | expand |
On Wed, Jun 02, 2021 at 10:15:34AM +0800, Jason Wang wrote: > This patch introduce a helper to get driver/guest features from the > device. > > Signed-off-by: Jason Wang <jasowang@redhat.com> Reviewed-by: Eli Cohen <elic@nvidia.com> > --- > drivers/virtio/virtio_pci_modern_dev.c | 21 +++++++++++++++++++++ > include/linux/virtio_pci_modern.h | 1 + > 2 files changed, 22 insertions(+) > > diff --git a/drivers/virtio/virtio_pci_modern_dev.c b/drivers/virtio/virtio_pci_modern_dev.c > index 54f297028586..e11ed748e661 100644 > --- a/drivers/virtio/virtio_pci_modern_dev.c > +++ b/drivers/virtio/virtio_pci_modern_dev.c > @@ -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 > diff --git a/include/linux/virtio_pci_modern.h b/include/linux/virtio_pci_modern.h > index 6a95b58fd0f4..eb2bd9b4077d 100644 > --- a/include/linux/virtio_pci_modern.h > +++ b/include/linux/virtio_pci_modern.h > @@ -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); > -- > 2.25.1 >
diff --git a/drivers/virtio/virtio_pci_modern_dev.c b/drivers/virtio/virtio_pci_modern_dev.c index 54f297028586..e11ed748e661 100644 --- a/drivers/virtio/virtio_pci_modern_dev.c +++ b/drivers/virtio/virtio_pci_modern_dev.c @@ -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 diff --git a/include/linux/virtio_pci_modern.h b/include/linux/virtio_pci_modern.h index 6a95b58fd0f4..eb2bd9b4077d 100644 --- a/include/linux/virtio_pci_modern.h +++ b/include/linux/virtio_pci_modern.h @@ -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);
This patch introduce a helper to get driver/guest features from the device. Signed-off-by: Jason Wang <jasowang@redhat.com> --- drivers/virtio/virtio_pci_modern_dev.c | 21 +++++++++++++++++++++ include/linux/virtio_pci_modern.h | 1 + 2 files changed, 22 insertions(+)