Displaying 20 results from an estimated 119 matches for "__virtio_test_bit".
2014 Nov 27
4
[PATCH v6 01/46] virtio: add low-level APIs for feature bits
.....249fcd6 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -77,11 +77,47 @@ void virtio_check_driver_offered_feature(const struct virtio_device *vdev,
unsigned int fbit);
/**
- * virtio_has_feature - helper to determine if this device has this feature.
+ * __virtio_test_bit - helper to test feature bits. For use by transports.
+ * Devices should normally use virtio_has_feature,
+ * which includes more checks.
* @vdev: the device
* @fbit: the feature bit
*/
-static inline bool virtio_has_feature(const struct virtio_device *...
2014 Nov 27
4
[PATCH v6 01/46] virtio: add low-level APIs for feature bits
.....249fcd6 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -77,11 +77,47 @@ void virtio_check_driver_offered_feature(const struct virtio_device *vdev,
unsigned int fbit);
/**
- * virtio_has_feature - helper to determine if this device has this feature.
+ * __virtio_test_bit - helper to test feature bits. For use by transports.
+ * Devices should normally use virtio_has_feature,
+ * which includes more checks.
* @vdev: the device
* @fbit: the feature bit
*/
-static inline bool virtio_has_feature(const struct virtio_device *...
2020 Jun 10
5
[PATCH] s390: protvirt: virtio: Refuse device without IOMMU
...100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -986,6 +986,11 @@ static void virtio_ccw_set_status(struct virtio_device *vdev, u8 status)
if (!ccw)
return;
+ /* Protected Virtualisation guest needs IOMMU */
+ if (is_prot_virt_guest() &&
+ !__virtio_test_bit(vdev, VIRTIO_F_IOMMU_PLATFORM))
+ status &= ~VIRTIO_CONFIG_S_FEATURES_OK;
+
/* Write the status to the host. */
vcdev->dma_area->status = status;
ccw->cmd_code = CCW_CMD_WRITE_STATUS;
--
2.25.1
2020 Jun 10
5
[PATCH] s390: protvirt: virtio: Refuse device without IOMMU
...100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -986,6 +986,11 @@ static void virtio_ccw_set_status(struct virtio_device *vdev, u8 status)
if (!ccw)
return;
+ /* Protected Virtualisation guest needs IOMMU */
+ if (is_prot_virt_guest() &&
+ !__virtio_test_bit(vdev, VIRTIO_F_IOMMU_PLATFORM))
+ status &= ~VIRTIO_CONFIG_S_FEATURES_OK;
+
/* Write the status to the host. */
vcdev->dma_area->status = status;
ccw->cmd_code = CCW_CMD_WRITE_STATUS;
--
2.25.1
2020 Jun 10
2
[PATCH] s390: protvirt: virtio: Refuse device without IOMMU
...irtio/virtio_ccw.c
>> @@ -986,6 +986,11 @@ static void virtio_ccw_set_status(struct virtio_device *vdev, u8 status)
>> if (!ccw)
>> return;
>>
>> + /* Protected Virtualisation guest needs IOMMU */
>> + if (is_prot_virt_guest() &&
>> + !__virtio_test_bit(vdev, VIRTIO_F_IOMMU_PLATFORM))
>> + status &= ~VIRTIO_CONFIG_S_FEATURES_OK;
>> +
>
> set_status seems like an odd place to look at features; shouldn't that
> rather be done in finalize_features?
Right, looks better to me too.
What about:
diff --git a/drivers/s39...
2020 Jun 10
2
[PATCH] s390: protvirt: virtio: Refuse device without IOMMU
...irtio/virtio_ccw.c
>> @@ -986,6 +986,11 @@ static void virtio_ccw_set_status(struct virtio_device *vdev, u8 status)
>> if (!ccw)
>> return;
>>
>> + /* Protected Virtualisation guest needs IOMMU */
>> + if (is_prot_virt_guest() &&
>> + !__virtio_test_bit(vdev, VIRTIO_F_IOMMU_PLATFORM))
>> + status &= ~VIRTIO_CONFIG_S_FEATURES_OK;
>> +
>
> set_status seems like an odd place to look at features; shouldn't that
> rather be done in finalize_features?
Right, looks better to me too.
What about:
diff --git a/drivers/s39...
2014 Nov 30
0
[PATCH v7 02/46] virtio: use u32, not bitmap for features
...bit-style bitmap. */
- unsigned long features[1];
+ u32 features;
void *priv;
};
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index d8e28a2..ffc2ae0 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -92,7 +92,7 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- return test_bit(fbit, vdev->features);
+ return vdev->features & BIT(fbit);
}
/**
@@ -109,7 +109,7 @@ static inline void __virtio_set_bit(struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- set_bit(fbi...
2014 Dec 01
0
[PATCH v8 02/50] virtio: use u32, not bitmap for features
...bit-style bitmap. */
- unsigned long features[1];
+ u32 features;
void *priv;
};
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index d8e28a2..ffc2ae0 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -92,7 +92,7 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- return test_bit(fbit, vdev->features);
+ return vdev->features & BIT(fbit);
}
/**
@@ -109,7 +109,7 @@ static inline void __virtio_set_bit(struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- set_bit(fbi...
2014 Nov 30
0
[PATCH v7 02/46] virtio: use u32, not bitmap for features
...bit-style bitmap. */
- unsigned long features[1];
+ u32 features;
void *priv;
};
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index d8e28a2..ffc2ae0 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -92,7 +92,7 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- return test_bit(fbit, vdev->features);
+ return vdev->features & BIT(fbit);
}
/**
@@ -109,7 +109,7 @@ static inline void __virtio_set_bit(struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- set_bit(fbi...
2014 Dec 01
0
[PATCH v8 02/50] virtio: use u32, not bitmap for features
...bit-style bitmap. */
- unsigned long features[1];
+ u32 features;
void *priv;
};
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index d8e28a2..ffc2ae0 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -92,7 +92,7 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- return test_bit(fbit, vdev->features);
+ return vdev->features & BIT(fbit);
}
/**
@@ -109,7 +109,7 @@ static inline void __virtio_set_bit(struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- set_bit(fbi...
2023 Mar 23
1
[PATCH v4] virtio: add VIRTIO_F_NOTIFICATION_DATA feature support
...)
> > > {
> > > @@ -501,6 +511,9 @@ static struct virtqueue *virtio_ccw_setup_vq(struct virtio_device *vdev,
> > > u64 queue;
> > > unsigned long flags;
> > > bool may_reduce;
> > > + bool (*notify)(struct virtqueue *vq) = __virtio_test_bit(vdev,
> > > + VIRTIO_F_NOTIFICATION_DATA) ?
> > > + virtio_ccw_kvm_notify_with_data : virtio_ccw_kvm_notify;
> > >
> > > /* Allocate queue. */
> > > info = kzalloc(sizeof(struct virtio_ccw_vq_info), GFP_KERNEL);
> &...
2018 May 30
8
[PATCH] virtio_pci: support enabling VFs
...num_vfs)
+{
+ struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
+ struct virtio_device *vdev = &vp_dev->vdev;
+ int (*sriov_configure)(struct pci_dev *pci_dev, int num_vfs);
+
+ if (!(vdev->config->get_status(vdev) & VIRTIO_CONFIG_S_DRIVER_OK))
+ return -EBUSY;
+
+ if (!__virtio_test_bit(vdev, VIRTIO_F_SR_IOV))
+ return -EINVAL;
+
+ sriov_configure = pci_sriov_configure_simple;
+ if (sriov_configure == NULL)
+ return -ENOENT;
+
+ return sriov_configure(pci_dev, num_vfs);
+}
+
static struct pci_driver virtio_pci_driver = {
.name = "virtio-pci",
.id_table = virtio_p...
2018 May 30
8
[PATCH] virtio_pci: support enabling VFs
...num_vfs)
+{
+ struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
+ struct virtio_device *vdev = &vp_dev->vdev;
+ int (*sriov_configure)(struct pci_dev *pci_dev, int num_vfs);
+
+ if (!(vdev->config->get_status(vdev) & VIRTIO_CONFIG_S_DRIVER_OK))
+ return -EBUSY;
+
+ if (!__virtio_test_bit(vdev, VIRTIO_F_SR_IOV))
+ return -EINVAL;
+
+ sriov_configure = pci_sriov_configure_simple;
+ if (sriov_configure == NULL)
+ return -ENOENT;
+
+ return sriov_configure(pci_dev, num_vfs);
+}
+
static struct pci_driver virtio_pci_driver = {
.name = "virtio-pci",
.id_table = virtio_p...
2018 Jun 01
3
[PATCH v2] virtio_pci: support enabling VFs
...tio_pci_sriov_configure(struct pci_dev *pci_dev, int num_vfs)
+{
+ struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
+ struct virtio_device *vdev = &vp_dev->vdev;
+ int ret;
+
+ if (!(vdev->config->get_status(vdev) & VIRTIO_CONFIG_S_DRIVER_OK))
+ return -EBUSY;
+
+ if (!__virtio_test_bit(vdev, VIRTIO_F_SR_IOV))
+ return -EINVAL;
+
+ if (pci_vfs_assigned(pci_dev))
+ return -EPERM;
+
+ if (num_vfs == 0) {
+ pci_disable_sriov(pci_dev);
+ return 0;
+ }
+
+ ret = pci_enable_sriov(pci_dev, num_vfs);
+ if (ret < 0)
+ return ret;
+
+ return num_vfs;
+}
+
static struct pci_driver v...
2018 Jun 01
3
[PATCH v2] virtio_pci: support enabling VFs
...tio_pci_sriov_configure(struct pci_dev *pci_dev, int num_vfs)
+{
+ struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
+ struct virtio_device *vdev = &vp_dev->vdev;
+ int ret;
+
+ if (!(vdev->config->get_status(vdev) & VIRTIO_CONFIG_S_DRIVER_OK))
+ return -EBUSY;
+
+ if (!__virtio_test_bit(vdev, VIRTIO_F_SR_IOV))
+ return -EINVAL;
+
+ if (pci_vfs_assigned(pci_dev))
+ return -EPERM;
+
+ if (num_vfs == 0) {
+ pci_disable_sriov(pci_dev);
+ return 0;
+ }
+
+ ret = pci_enable_sriov(pci_dev, num_vfs);
+ if (ret < 0)
+ return ret;
+
+ return num_vfs;
+}
+
static struct pci_driver v...
2014 Nov 27
2
[PATCH v6 02/46] virtio: use u32, not bitmap for features
...bit-style bitmap. */
- unsigned long features[1];
+ u32 features;
void *priv;
};
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index 249fcd6..1761106 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -92,7 +92,7 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- return test_bit(fbit, vdev->features);
+ return vdev->features & BIT(fbit);
}
/**
@@ -109,7 +109,7 @@ static inline void __virtio_set_bit(struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- set_bit(fbi...
2014 Nov 27
2
[PATCH v6 02/46] virtio: use u32, not bitmap for features
...bit-style bitmap. */
- unsigned long features[1];
+ u32 features;
void *priv;
};
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index 249fcd6..1761106 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -92,7 +92,7 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- return test_bit(fbit, vdev->features);
+ return vdev->features & BIT(fbit);
}
/**
@@ -109,7 +109,7 @@ static inline void __virtio_set_bit(struct virtio_device *vdev,
else
BUG_ON(fbit >= 32);
- set_bit(fbi...
2014 Dec 14
0
[PATCH 1/6] tools/virtio: more stubs
...- a/tools/virtio/linux/virtio_config.h
+++ b/tools/virtio/linux/virtio_config.h
@@ -1,8 +1,7 @@
#include <linux/virtio_byteorder.h>
#include <linux/virtio.h>
+#include <uapi/linux/virtio_config.h>
-#define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 32
/*
* __virtio_test_bit - helper to test feature bits. For use by transports.
* Devices should normally use virtio_has_feature,
@@ -16,6 +15,28 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
return vdev->features & (1ULL << fbit);
}
+/**
+ * __virtio_set_b...
2014 Dec 14
0
[PATCH 1/6] tools/virtio: more stubs
...- a/tools/virtio/linux/virtio_config.h
+++ b/tools/virtio/linux/virtio_config.h
@@ -1,8 +1,7 @@
#include <linux/virtio_byteorder.h>
#include <linux/virtio.h>
+#include <uapi/linux/virtio_config.h>
-#define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 32
/*
* __virtio_test_bit - helper to test feature bits. For use by transports.
* Devices should normally use virtio_has_feature,
@@ -16,6 +15,28 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
return vdev->features & (1ULL << fbit);
}
+/**
+ * __virtio_set_b...
2014 Nov 28
0
[PATCH v6 01/46] virtio: add low-level APIs for feature bits
...ux/virtio_config.h
> +++ b/include/linux/virtio_config.h
> @@ -77,11 +77,47 @@ void virtio_check_driver_offered_feature(const struct virtio_device *vdev,
> unsigned int fbit);
>
> /**
> - * virtio_has_feature - helper to determine if this device has this feature.
> + * __virtio_test_bit - helper to test feature bits. For use by transports.
> + * Devices should normally use virtio_has_feature,
> + * which includes more checks.
> * @vdev: the device
> * @fbit: the feature bit
> */
> -static inline bool virtio_has_featur...