diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2008-07-25 13:06:07 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2008-07-24 22:06:12 -0400 |
commit | c624896e488ba2bff5ae497782cfb265c8b00646 (patch) | |
tree | 714145903ff8c889e9544e8366b2ee2a62234c0c /drivers/s390/kvm | |
parent | dd7c7bc46211785a1aa7d70feb15830f62682b3c (diff) |
virtio: Rename set_features to finalize_features
Rather than explicitly handing the features to the lower-level, we just
hand the virtio_device and have it set the features. This make it clear
that it has the chance to manipulate the features of the device at this
point (and that all feature negotiation is already done).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/s390/kvm')
-rw-r--r-- | drivers/s390/kvm/kvm_virtio.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c index d41f234bb2c2..5953510e7d5f 100644 --- a/drivers/s390/kvm/kvm_virtio.c +++ b/drivers/s390/kvm/kvm_virtio.c | |||
@@ -88,16 +88,17 @@ static u32 kvm_get_features(struct virtio_device *vdev) | |||
88 | return features; | 88 | return features; |
89 | } | 89 | } |
90 | 90 | ||
91 | static void kvm_set_features(struct virtio_device *vdev, u32 features) | 91 | static void kvm_finalize_features(struct virtio_device *vdev) |
92 | { | 92 | { |
93 | unsigned int i; | 93 | unsigned int i, bits; |
94 | struct kvm_device_desc *desc = to_kvmdev(vdev)->desc; | 94 | struct kvm_device_desc *desc = to_kvmdev(vdev)->desc; |
95 | /* Second half of bitmap is features we accept. */ | 95 | /* Second half of bitmap is features we accept. */ |
96 | u8 *out_features = kvm_vq_features(desc) + desc->feature_len; | 96 | u8 *out_features = kvm_vq_features(desc) + desc->feature_len; |
97 | 97 | ||
98 | memset(out_features, 0, desc->feature_len); | 98 | memset(out_features, 0, desc->feature_len); |
99 | for (i = 0; i < min(desc->feature_len * 8, 32); i++) { | 99 | bits = min_t(unsigned, desc->feature_len, sizeof(vdev->features)) * 8; |
100 | if (features & (1 << i)) | 100 | for (i = 0; i < bits; i++) { |
101 | if (test_bit(i, vdev->features)) | ||
101 | out_features[i / 8] |= (1 << (i % 8)); | 102 | out_features[i / 8] |= (1 << (i % 8)); |
102 | } | 103 | } |
103 | } | 104 | } |
@@ -223,7 +224,7 @@ static void kvm_del_vq(struct virtqueue *vq) | |||
223 | */ | 224 | */ |
224 | static struct virtio_config_ops kvm_vq_configspace_ops = { | 225 | static struct virtio_config_ops kvm_vq_configspace_ops = { |
225 | .get_features = kvm_get_features, | 226 | .get_features = kvm_get_features, |
226 | .set_features = kvm_set_features, | 227 | .finalize_features = kvm_finalize_features, |
227 | .get = kvm_get, | 228 | .get = kvm_get, |
228 | .set = kvm_set, | 229 | .set = kvm_set, |
229 | .get_status = kvm_get_status, | 230 | .get_status = kvm_get_status, |