Displaying 20 results from an estimated 23 matches for "virtio_disable_feature".
2014 Nov 13
1
[PATCH 2/2] virtio-net: fix buggy features advertised by host
...virtio_device *dev)
> +{
> + if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
> + if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
> + pr_warning("Disable VIRTIO_NET_F_CTRL_RX since host "
> + "does not advertise VIRTIO_NET_F_CTRL_VQ");
> + virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
> + }
> + if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VLAN)) {
> + pr_warning("Disable VIRTIO_NET_F_CTRL_VLAN since host "
> + "does not advertise VIRTIO_NET_F_CTRL_VQ");
> + virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_V...
2014 Nov 13
1
[PATCH 2/2] virtio-net: fix buggy features advertised by host
...virtio_device *dev)
> +{
> + if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
> + if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
> + pr_warning("Disable VIRTIO_NET_F_CTRL_RX since host "
> + "does not advertise VIRTIO_NET_F_CTRL_VQ");
> + virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
> + }
> + if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VLAN)) {
> + pr_warning("Disable VIRTIO_NET_F_CTRL_VLAN since host "
> + "does not advertise VIRTIO_NET_F_CTRL_VQ");
> + virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_V...
2014 Nov 13
2
[PATCH 1/2] virito: introduce methods of fixing device features
...fig.h b/include/linux/virtio_config.h
index 7f4ef66..7bd89ea 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
return test_bit(fbit, vdev->features);
}
+static inline void virtio_disable_feature(struct virtio_device *vdev,
+ unsigned int fbit)
+{
+ BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
+ BUG_ON(vdev->config->get_status(vdev) &
+ ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER));
+
+ virtio_check_driver_offered_feature(...
2014 Nov 13
2
[PATCH 1/2] virito: introduce methods of fixing device features
...fig.h b/include/linux/virtio_config.h
index 7f4ef66..7bd89ea 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
return test_bit(fbit, vdev->features);
}
+static inline void virtio_disable_feature(struct virtio_device *vdev,
+ unsigned int fbit)
+{
+ BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
+ BUG_ON(vdev->config->get_status(vdev) &
+ ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER));
+
+ virtio_check_driver_offered_feature(...
2014 Nov 18
1
[PATCH V3 2/2] virtio-net: sanitize buggy features advertised by host
...>
> However, assuming that we do want this change:
> This can be replaced with a table driven design in virtio core, but
> since you chose to open code it, I would drop table below altogether.
>
>
> Just make it
> if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
> virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
> virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_VLAN);
> virtio_disable_feature(dev, VIRTIO_NET_F_GUEST_ANNOUNCE);
> virtio_disable_feature(dev, VIRTIO_NET_F_MQ);
> virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_MAC_ADDR);
> }
>
This is similar...
2014 Nov 18
1
[PATCH V3 2/2] virtio-net: sanitize buggy features advertised by host
...>
> However, assuming that we do want this change:
> This can be replaced with a table driven design in virtio core, but
> since you chose to open code it, I would drop table below altogether.
>
>
> Just make it
> if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
> virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
> virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_VLAN);
> virtio_disable_feature(dev, VIRTIO_NET_F_GUEST_ANNOUNCE);
> virtio_disable_feature(dev, VIRTIO_NET_F_MQ);
> virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_MAC_ADDR);
> }
>
This is similar...
2014 Nov 13
7
[PATCH 1/2] virito: introduce methods of fixing device features
...fig.h b/include/linux/virtio_config.h
index 7f4ef66..7bd89ea 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
return test_bit(fbit, vdev->features);
}
+static inline void virtio_disable_feature(struct virtio_device *vdev,
+ unsigned int fbit)
+{
+ BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
+ BUG_ON(vdev->config->get_status(vdev) &
+ ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER));
+
+ virtio_check_driver_offered_feature(...
2014 Nov 13
7
[PATCH 1/2] virito: introduce methods of fixing device features
...fig.h b/include/linux/virtio_config.h
index 7f4ef66..7bd89ea 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
return test_bit(fbit, vdev->features);
}
+static inline void virtio_disable_feature(struct virtio_device *vdev,
+ unsigned int fbit)
+{
+ BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
+ BUG_ON(vdev->config->get_status(vdev) &
+ ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER));
+
+ virtio_check_driver_offered_feature(...
2014 Nov 17
0
[PATCH V3 2/2] virtio-net: sanitize buggy features advertised by host
...ssing what hypervisor wants us to do.
However, assuming that we do want this change:
This can be replaced with a table driven design in virtio core, but
since you chose to open code it, I would drop table below altogether.
Just make it
if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_VLAN);
virtio_disable_feature(dev, VIRTIO_NET_F_GUEST_ANNOUNCE);
virtio_disable_feature(dev, VIRTIO_NET_F_MQ);
virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_MAC_ADDR);
}
> ---
> Changes from V1:
> - fix...
2014 Nov 17
1
[PATCH V3 2/2] virtio-net: sanitize buggy features advertised by host
...TIO_NET_F_GUEST_ANNOUNCE,
+ VIRTIO_NET_F_MQ,
+ VIRTIO_NET_F_CTRL_MAC_ADDR
+ };
+ int i;
+
+ if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
+ for (i = 0; i < ARRAY_SIZE(features_for_ctrl_vq); i++) {
+ unsigned int f = features_for_ctrl_vq[i];
+ if (virtio_has_feature(dev, f)) {
+ virtio_disable_feature(dev, f);
+ dev_warn(&dev->dev,
+ "buggy hyperviser: disable feature "
+ "0x%x since VIRTIO_NET_F_CTRL_VQ was "
+ "not advertised.\n", f);
+ }
+ }
+ }
+}
+
static struct virtio_device_id id_table[] = {
{ VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID },...
2014 Nov 17
1
[PATCH V3 2/2] virtio-net: sanitize buggy features advertised by host
...TIO_NET_F_GUEST_ANNOUNCE,
+ VIRTIO_NET_F_MQ,
+ VIRTIO_NET_F_CTRL_MAC_ADDR
+ };
+ int i;
+
+ if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
+ for (i = 0; i < ARRAY_SIZE(features_for_ctrl_vq); i++) {
+ unsigned int f = features_for_ctrl_vq[i];
+ if (virtio_has_feature(dev, f)) {
+ virtio_disable_feature(dev, f);
+ dev_warn(&dev->dev,
+ "buggy hyperviser: disable feature "
+ "0x%x since VIRTIO_NET_F_CTRL_VQ was "
+ "not advertised.\n", f);
+ }
+ }
+ }
+}
+
static struct virtio_device_id id_table[] = {
{ VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID },...
2014 Nov 13
0
[PATCH 2/2] virtio-net: fix buggy features advertised by host
...id virtnet_fix_features(struct virtio_device *dev)
+{
+ if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
+ if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
+ pr_warning("Disable VIRTIO_NET_F_CTRL_RX since host "
+ "does not advertise VIRTIO_NET_F_CTRL_VQ");
+ virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
+ }
+ if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VLAN)) {
+ pr_warning("Disable VIRTIO_NET_F_CTRL_VLAN since host "
+ "does not advertise VIRTIO_NET_F_CTRL_VQ");
+ virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_VLAN);
+ }
+ if (virtio_...
2014 Nov 13
0
[PATCH 2/2] virtio-net: fix buggy features advertised by host
...id virtnet_fix_features(struct virtio_device *dev)
+{
+ if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
+ if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
+ pr_warning("Disable VIRTIO_NET_F_CTRL_RX since host "
+ "does not advertise VIRTIO_NET_F_CTRL_VQ");
+ virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
+ }
+ if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VLAN)) {
+ pr_warning("Disable VIRTIO_NET_F_CTRL_VLAN since host "
+ "does not advertise VIRTIO_NET_F_CTRL_VQ");
+ virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_VLAN);
+ }
+ if (virtio_...
2014 Nov 13
0
[PATCH 2/2] virtio-net: fix buggy features advertised by host
...id virtnet_fix_features(struct virtio_device *dev)
+{
+ if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
+ if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
+ pr_warning("Disable VIRTIO_NET_F_CTRL_RX since host "
+ "does not advertise VIRTIO_NET_F_CTRL_VQ");
+ virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
+ }
+ if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VLAN)) {
+ pr_warning("Disable VIRTIO_NET_F_CTRL_VLAN since host "
+ "does not advertise VIRTIO_NET_F_CTRL_VQ");
+ virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_VLAN);
+ }
+ if (virtio_...
2014 Nov 17
4
[PATCH V3 1/2] virtio: introduce methods of sanitizing device features
...fig.h b/include/linux/virtio_config.h
index 7f4ef66..7bd89ea 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
return test_bit(fbit, vdev->features);
}
+static inline void virtio_disable_feature(struct virtio_device *vdev,
+ unsigned int fbit)
+{
+ BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
+ BUG_ON(vdev->config->get_status(vdev) &
+ ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER));
+
+ virtio_check_driver_offered_feature(...
2014 Nov 17
4
[PATCH V3 1/2] virtio: introduce methods of sanitizing device features
...fig.h b/include/linux/virtio_config.h
index 7f4ef66..7bd89ea 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
return test_bit(fbit, vdev->features);
}
+static inline void virtio_disable_feature(struct virtio_device *vdev,
+ unsigned int fbit)
+{
+ BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
+ BUG_ON(vdev->config->get_status(vdev) &
+ ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER));
+
+ virtio_check_driver_offered_feature(...
2014 Nov 13
2
[PATCH 1/2] virito: introduce methods of fixing device features
...100644
>> --- a/include/linux/virtio_config.h
>> +++ b/include/linux/virtio_config.h
>> @@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
>> return test_bit(fbit, vdev->features);
>> }
>>
>> +static inline void virtio_disable_feature(struct virtio_device *vdev,
>> + unsigned int fbit)
>> +{
>> + BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
>> + BUG_ON(vdev->config->get_status(vdev) &
>> + ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVE...
2014 Nov 13
2
[PATCH 1/2] virito: introduce methods of fixing device features
...100644
>> --- a/include/linux/virtio_config.h
>> +++ b/include/linux/virtio_config.h
>> @@ -96,6 +96,18 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
>> return test_bit(fbit, vdev->features);
>> }
>>
>> +static inline void virtio_disable_feature(struct virtio_device *vdev,
>> + unsigned int fbit)
>> +{
>> + BUG_ON(fbit >= VIRTIO_TRANSPORT_F_START);
>> + BUG_ON(vdev->config->get_status(vdev) &
>> + ~(VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVE...
2014 Nov 13
1
[PATCH 2/2] virtio-net: fix buggy features advertised by host
...virtio_device *dev)
> +{
> + if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
> + if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
> + pr_warning("Disable VIRTIO_NET_F_CTRL_RX since host "
> + "does not advertise VIRTIO_NET_F_CTRL_VQ");
> + virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
> + }
You should probably use dev_warn() or so, so that the user can figure
out which device the message is for. And perhaps add "buggy hypervisor"
to the message to make clear that it's not a guest problem.
I also like the suggestion to use a depende...
2014 Nov 13
1
[PATCH 2/2] virtio-net: fix buggy features advertised by host
...virtio_device *dev)
> +{
> + if (!virtio_has_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
> + if (virtio_has_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
> + pr_warning("Disable VIRTIO_NET_F_CTRL_RX since host "
> + "does not advertise VIRTIO_NET_F_CTRL_VQ");
> + virtio_disable_feature(dev, VIRTIO_NET_F_CTRL_RX);
> + }
You should probably use dev_warn() or so, so that the user can figure
out which device the message is for. And perhaps add "buggy hypervisor"
to the message to make clear that it's not a guest problem.
I also like the suggestion to use a depende...