mirror of https://gitee.com/openkylin/linux.git
s390: KVM guest: fix compile error
Fix kvm compile error: Commitc45a6816c1
(virtio: explicit advertisement of driver features) and commite976a2b997
(s390: KVM guest: virtio device support, and kvm hypercalls) don't like each other: CC drivers/s390/kvm/kvm_virtio.o drivers/s390/kvm/kvm_virtio.c:224: error: unknown field 'feature' specified in initializer drivers/s390/kvm/kvm_virtio.c:224: warning: initialization from incompatible pointer type make[3]: *** [drivers/s390/kvm/kvm_virtio.o] Error 1 Cc: Adrian Bunk <bunk@kernel.org> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: Carsten Otte <cotte@de.ibm.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
parent
107d6d2efa
commit
5ca9fd54e3
|
@ -78,27 +78,32 @@ static unsigned desc_size(const struct kvm_device_desc *desc)
|
|||
+ desc->config_len;
|
||||
}
|
||||
|
||||
/*
|
||||
* This tests (and acknowleges) a feature bit.
|
||||
*/
|
||||
static bool kvm_feature(struct virtio_device *vdev, unsigned fbit)
|
||||
/* This gets the device's feature bits. */
|
||||
static u32 kvm_get_features(struct virtio_device *vdev)
|
||||
{
|
||||
unsigned int i;
|
||||
u32 features = 0;
|
||||
struct kvm_device_desc *desc = to_kvmdev(vdev)->desc;
|
||||
u8 *features;
|
||||
u8 *in_features = kvm_vq_features(desc);
|
||||
|
||||
if (fbit / 8 > desc->feature_len)
|
||||
return false;
|
||||
for (i = 0; i < min(desc->feature_len * 8, 32); i++)
|
||||
if (in_features[i / 8] & (1 << (i % 8)))
|
||||
features |= (1 << i);
|
||||
return features;
|
||||
}
|
||||
|
||||
features = kvm_vq_features(desc);
|
||||
if (!(features[fbit / 8] & (1 << (fbit % 8))))
|
||||
return false;
|
||||
static void kvm_set_features(struct virtio_device *vdev, u32 features)
|
||||
{
|
||||
unsigned int i;
|
||||
struct kvm_device_desc *desc = to_kvmdev(vdev)->desc;
|
||||
/* Second half of bitmap is features we accept. */
|
||||
u8 *out_features = kvm_vq_features(desc) + desc->feature_len;
|
||||
|
||||
/*
|
||||
* We set the matching bit in the other half of the bitmap to tell the
|
||||
* Host we want to use this feature.
|
||||
*/
|
||||
features[desc->feature_len + fbit / 8] |= (1 << (fbit % 8));
|
||||
return true;
|
||||
memset(out_features, 0, desc->feature_len);
|
||||
for (i = 0; i < min(desc->feature_len * 8, 32); i++) {
|
||||
if (features & (1 << i))
|
||||
out_features[i / 8] |= (1 << (i % 8));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -221,7 +226,8 @@ static void kvm_del_vq(struct virtqueue *vq)
|
|||
* The config ops structure as defined by virtio config
|
||||
*/
|
||||
static struct virtio_config_ops kvm_vq_configspace_ops = {
|
||||
.feature = kvm_feature,
|
||||
.get_features = kvm_get_features,
|
||||
.set_features = kvm_set_features,
|
||||
.get = kvm_get,
|
||||
.set = kvm_set,
|
||||
.get_status = kvm_get_status,
|
||||
|
|
Loading…
Reference in New Issue