@@ -43,7 +43,7 @@
#define smp_read_barrier_depends() asm volatile("mb":::"memory")
#endif
-#if defined(__i386__) || defined(__x86_64__) || defined(__s390x__)
+#if defined(__i386__) || defined(__x86_64__)
/*
* Because of the strongly ordered storage model, wmb() and rmb() are nops
@@ -53,6 +53,10 @@
#define smp_wmb() barrier()
#define smp_rmb() barrier()
+#endif
+
+#if defined(__i386__) || defined(__x86_64__) || defined(__s390x__)
+
/*
* __sync_lock_test_and_set() is documented to be an acquire barrier only,
* but it is a full barrier at the hardware level. Add a compiler barrier
@@ -527,11 +527,17 @@ static const TypeInfo s390_virtio_net = {
.class_init = s390_virtio_net_class_init,
};
+static Property s390_virtio_blk_properties[] = {
+ DEFINE_VIRTIO_COMMON_FEATURES(VirtIOS390Device, host_features),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
static void s390_virtio_blk_class_init(ObjectClass *klass, void *data)
{
VirtIOS390DeviceClass *k = VIRTIO_S390_DEVICE_CLASS(klass);
k->realize = s390_virtio_blk_realize;
+ dc->props = s390_virtio_blk_properties;
}
static const TypeInfo s390_virtio_blk = {