qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH v2 1/1] virtio-scsi-ccw: use ioeven


From: QingFeng Hao
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH v2 1/1] virtio-scsi-ccw: use ioeventfd even when KVM is disabled
Date: Tue, 4 Jul 2017 15:53:55 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1



在 2017/7/4 15:06, Christian Borntraeger 写道:
On 07/04/2017 05:41 AM, QingFeng Hao wrote:

在 2017/7/3 18:20, Christian Borntraeger 写道:
On 07/03/2017 10:51 AM, QingFeng Hao wrote:
This patch is based on a similar patch from Stefan Hajnoczi -
commit c324fd0a39c (" virtio-pci: use ioeventfd even when KVM is disabled)

Do not check kvm_eventfds_enabled() when KVM is disabled since it
always returns 0.  Since commit 8c56c1a592b5092d91da8d8943c17777d6462a6f
("memory: emulate ioeventfd") it has been possible to use ioeventfds in
qtest or TCG mode.

This patch makes -device virtio-scsi-ccw,iothread=iothread0 work even
when KVM is disabled.

I have tested that virtio-scsi-ccw works under tcg both with and without
iothread.

This patch fixes qemu-iotests 068, which was accidentally merged early
despite the dependency on ioeventfd.

Signed-off-by: QingFeng Hao <address@hidden>
---
   hw/s390x/virtio-ccw.c | 2 +-
   target/s390x/kvm.c    | 3 +++
   2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 90d37cb9ff..35896eb007 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -711,7 +711,7 @@ static void virtio_ccw_device_realize(VirtioCcwDevice *dev, 
Error **errp)
           sch->cssid, sch->ssid, sch->schid, sch->devno,
           ccw_dev->devno.valid ? "user-configured" : "auto-configured");

-    if (!kvm_eventfds_enabled()) {
+    if (kvm_enabled() && !kvm_eventfds_enabled()) {
           dev->flags &= ~VIRTIO_CCW_FLAG_USE_IOEVENTFD;
       }

diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index a3d00196f4..c37f9c3b9e 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -2220,6 +2220,9 @@ int kvm_s390_assign_subch_ioeventfd(EventNotifier 
*notifier, uint32_t sch,
           .addr = sch,
           .len = 8,
       };
+    if (!kvm_enabled()) {
+        return 0;
+    }
thinking more about it. wouldnt it be better to do something like this instead

diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index 058ddad..cc47831 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -1240,7 +1240,11 @@ static inline int 
s390_assign_subch_ioeventfd(EventNotifier *notifier,
                                                 uint32_t sch_id, int vq,
                                                 bool assign)
   {
-    return kvm_s390_assign_subch_ioeventfd(notifier, sch_id, vq, assign);
+    if (kvm_enabled()) {
+        return kvm_s390_assign_subch_ioeventfd(notifier, sch_id, vq, assign);
+    } else {
+        return 0;
+    }
   }
Thanks. It makes sense. I'll change it.
   static inline void s390_crypto_reset(void)


FWIW, it seems that we (s390) do not have a functional equivalent function as 
commit
8c56c1a592b5092d91da8d8943c17777d6462a6f ("memory: emulate ioeventfd") , so we 
will
not use the iothreads.
Ok, but might s390 have skipped the iothread arguments and passed the test, so 
we could
still keep this test case?
Yes, lets just fix the test case. We can implement emulated ioeventfds later.
Fine, thanks!


--
Regards
QingFeng Hao




reply via email to

[Prev in Thread] Current Thread [Next in Thread]