[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/2] tests/qtest/fuzz: Avoid QTest mmio serialization
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 2/2] tests/qtest/fuzz: Avoid QTest mmio serialization |
Date: |
Tue, 26 May 2020 07:58:20 +0200 |
We don't need to serialize over QTest chardev when we can
directly access the MMIO address space via the first
registered CPU view.
virtio-net-socket gets ~50% performance improvement.
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
tests/qtest/fuzz/virtio_net_fuzz.c | 6 ++++--
tests/qtest/fuzz/virtio_scsi_fuzz.c | 6 +++++-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/tests/qtest/fuzz/virtio_net_fuzz.c
b/tests/qtest/fuzz/virtio_net_fuzz.c
index d08a47e278..ec993c9d5f 100644
--- a/tests/qtest/fuzz/virtio_net_fuzz.c
+++ b/tests/qtest/fuzz/virtio_net_fuzz.c
@@ -19,6 +19,8 @@
#include "fork_fuzz.h"
#include "qos_fuzz.h"
+#include "exec/address-spaces.h"
+#include "hw/core/cpu.h"
#define QVIRTIO_NET_TIMEOUT_US (30 * 1000 * 1000)
#define QVIRTIO_RX_VQ 0
@@ -69,8 +71,8 @@ static void virtio_net_fuzz_multi(QTestState *s,
* If checking used ring, ensure that the fuzzer doesn't trigger
* trivial asserion failure on zero-zied buffer
*/
- qtest_memwrite(s, req_addr, Data, vqa.length);
-
+ address_space_write(first_cpu->as, req_addr,
MEMTXATTRS_UNSPECIFIED,
+ &Data, vqa.length);
free_head = qvirtqueue_add(s, q, req_addr, vqa.length,
vqa.write, vqa.next);
diff --git a/tests/qtest/fuzz/virtio_scsi_fuzz.c
b/tests/qtest/fuzz/virtio_scsi_fuzz.c
index 3b95247f12..5096a5a730 100644
--- a/tests/qtest/fuzz/virtio_scsi_fuzz.c
+++ b/tests/qtest/fuzz/virtio_scsi_fuzz.c
@@ -23,6 +23,9 @@
#include "fork_fuzz.h"
#include "qos_fuzz.h"
+#include "exec/address-spaces.h"
+#include "hw/core/cpu.h"
+
#define PCI_SLOT 0x02
#define PCI_FN 0x00
#define QVIRTIO_SCSI_TIMEOUT_US (1 * 1000 * 1000)
@@ -108,7 +111,8 @@ static void virtio_scsi_fuzz(QTestState *s,
QVirtioSCSIQueues* queues,
/* Copy the data into ram, and place it on the virtqueue */
uint64_t req_addr = guest_alloc(t_alloc, vqa.length);
- qtest_memwrite(s, req_addr, Data, vqa.length);
+ address_space_write(first_cpu->as, req_addr, MEMTXATTRS_UNSPECIFIED,
+ &Data, vqa.length);
if (vq_touched[vqa.queue] == 0) {
vq_touched[vqa.queue] = 1;
free_head[vqa.queue] = qvirtqueue_add(s, q, req_addr, vqa.length,
--
2.21.3
- [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Philippe Mathieu-Daudé, 2020/05/26
- [PATCH 1/2] tests/qtest/fuzz: Avoid QTest ioport serialization, Philippe Mathieu-Daudé, 2020/05/26
- [PATCH 2/2] tests/qtest/fuzz: Avoid QTest mmio serialization,
Philippe Mathieu-Daudé <=
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Stefan Hajnoczi, 2020/05/26
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Philippe Mathieu-Daudé, 2020/05/26
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Alexander Bulekov, 2020/05/26
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Philippe Mathieu-Daudé, 2020/05/26
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Alexander Bulekov, 2020/05/26
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Philippe Mathieu-Daudé, 2020/05/26
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Philippe Mathieu-Daudé, 2020/05/28
- Re: [PATCH 0/2] tests/qtest/fuzz: Avoid QTest serialization, Alexander Bulekov, 2020/05/28