aboutsummaryrefslogtreecommitdiff
path: root/target/s390x/kvm.c
diff options
context:
space:
mode:
authorDavid Hildenbrand <david@redhat.com>2017-07-20 14:37:19 +0200
committerCornelia Huck <cohuck@redhat.com>2017-07-25 09:17:42 +0200
commit3d1cfc3c682ffe937526a31a4161735338558985 (patch)
tree7942a3a362d5dc267932f554824f55b7aed4c796 /target/s390x/kvm.c
parentcc18f90762412c657a37a17809be9613ac7f0b00 (diff)
target/s390x: introduce (test|set)_be_bit
Using ordinary bitmap operations to set/test bits does not work properly on architectures !s390x. Let's drop (test|set)_bit_inv and introduce (test|set)_be_bit instead. These functions work on uint8_t array, not on unsigned longs arrays and are for now only used in the context of CPU features. Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20170720123721.12366-4-david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'target/s390x/kvm.c')
-rw-r--r--target/s390x/kvm.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index 999ea570c3..9bec48152f 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -2430,16 +2430,6 @@ int kvm_arch_msi_data_to_gsi(uint32_t data)
abort();
}
-static inline int test_bit_inv(long nr, const unsigned long *addr)
-{
- return test_bit(BE_BIT_NR(nr), addr);
-}
-
-static inline void set_bit_inv(long nr, unsigned long *addr)
-{
- set_bit(BE_BIT_NR(nr), addr);
-}
-
static int query_cpu_subfunc(S390FeatBitmap features)
{
struct kvm_s390_vm_cpu_subfunc prop;
@@ -2566,7 +2556,7 @@ static int query_cpu_feat(S390FeatBitmap features)
}
for (i = 0; i < ARRAY_SIZE(kvm_to_feat); i++) {
- if (test_bit_inv(kvm_to_feat[i][0], (unsigned long *)prop.feat)) {
+ if (test_be_bit(kvm_to_feat[i][0], (uint8_t *) prop.feat)) {
set_bit(kvm_to_feat[i][1], features);
}
}
@@ -2585,7 +2575,7 @@ static int configure_cpu_feat(const S390FeatBitmap features)
for (i = 0; i < ARRAY_SIZE(kvm_to_feat); i++) {
if (test_bit(kvm_to_feat[i][1], features)) {
- set_bit_inv(kvm_to_feat[i][0], (unsigned long *)prop.feat);
+ set_be_bit(kvm_to_feat[i][0], (uint8_t *) prop.feat);
}
}
return kvm_vm_ioctl(kvm_state, KVM_SET_DEVICE_ATTR, &attr);