All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
@ 2020-03-09 23:53 Liran Alon
  2020-03-09 23:53 ` [PATCH 01/14] hw/i386/vmport: Propagate IOPort read to vCPU EAX register Liran Alon
                   ` (23 more replies)
  0 siblings, 24 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, rth, ehabkost, mst

Hi,

This series aims to fix several bugs in VMPort and improve it by supporting
more VMPort commands and make command results more configurable to
user via QEMU command-line.

This functionality was proven to be useful to run various VMware VMs
when attempting to run them as-is on top of QEMU/KVM.

For more details, see commit messages.

Regards,
-Liran



^ permalink raw reply	[flat|nested] 79+ messages in thread

* [PATCH 01/14] hw/i386/vmport: Propagate IOPort read to vCPU EAX register
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
@ 2020-03-09 23:53 ` Liran Alon
  2020-03-09 23:53 ` [PATCH 02/14] hw/i386/vmport: Set EAX to -1 on failed and unsupported commands Liran Alon
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

vmport_ioport_read() returns the value that should propagate to vCPU EAX
register when guest reads VMPort IOPort (i.e. By x86 IN instruction).

However, because vmport_ioport_read() calls cpu_synchronize_state(), the
returned value gets overridden by the value in QEMU vCPU EAX register.
i.e. cpu->env.regs[R_EAX].

To fix this issue, change vmport_ioport_read() to explicitly override
cpu->env.regs[R_EAX] with the value it wish to propagate to vCPU EAX
register.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 1f31e27c8aa4..9319720e8204 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -72,25 +72,36 @@ static uint64_t vmport_ioport_read(void *opaque, hwaddr addr,
 
     eax = env->regs[R_EAX];
     if (eax != VMPORT_MAGIC) {
-        return eax;
+        goto out;
     }
 
     command = env->regs[R_ECX];
     trace_vmport_command(command);
     if (command >= VMPORT_ENTRIES || !s->func[command]) {
         qemu_log_mask(LOG_UNIMP, "vmport: unknown command %x\n", command);
-        return eax;
+        goto out;
     }
 
-    return s->func[command](s->opaque[command], addr);
+    eax = s->func[command](s->opaque[command], addr);
+
+out:
+    /*
+     * The call above to cpu_synchronize_state() gets vCPU registers values
+     * to QEMU but also cause QEMU to write QEMU vCPU registers values to
+     * vCPU implementation (e.g. Accelerator such as KVM) just before
+     * resuming guest.
+     *
+     * Therefore, in order to make IOPort return value propagate to
+     * guest EAX, we need to explicitly update QEMU EAX register value.
+     */
+    cpu->env.regs[R_EAX] = eax;
+    return eax;
 }
 
 static void vmport_ioport_write(void *opaque, hwaddr addr,
                                 uint64_t val, unsigned size)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-
-    cpu->env.regs[R_EAX] = vmport_ioport_read(opaque, addr, 4);
+    vmport_ioport_read(opaque, addr, 4);
 }
 
 static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 02/14] hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
  2020-03-09 23:53 ` [PATCH 01/14] hw/i386/vmport: Propagate IOPort read to vCPU EAX register Liran Alon
@ 2020-03-09 23:53 ` Liran Alon
  2020-03-09 23:54 ` [PATCH 03/14] hw/i386/vmport: Add device properties Liran Alon
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

This is used as a signal for VMware Tools to know if a command it
attempted to invoke, failed or is unsupported. As a result, VMware Tools
will either report failure to user or fallback to another backdoor command
in attempt to perform some operation.

A few examples:
* open-vm-tools TimeSyncReadHost() function fallbacks to
CMD_GETTIMEFULL command when CMD_GETTIMEFULL_WITH_LAG
fails/unsupported.
* open-vm-tools Hostinfo_NestingSupported() function verifies
EAX != -1 to check for success.
* open-vm-tools Hostinfo_VCPUInfoBackdoor() functions checks
if reserved-bit is set to indicate command is unimplemented.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 9319720e8204..a78e20040a79 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -72,6 +72,7 @@ static uint64_t vmport_ioport_read(void *opaque, hwaddr addr,
 
     eax = env->regs[R_EAX];
     if (eax != VMPORT_MAGIC) {
+        eax = UINT32_MAX;
         goto out;
     }
 
@@ -79,6 +80,7 @@ static uint64_t vmport_ioport_read(void *opaque, hwaddr addr,
     trace_vmport_command(command);
     if (command >= VMPORT_ENTRIES || !s->func[command]) {
         qemu_log_mask(LOG_UNIMP, "vmport: unknown command %x\n", command);
+        eax = UINT32_MAX;
         goto out;
     }
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 03/14] hw/i386/vmport: Add device properties
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
  2020-03-09 23:53 ` [PATCH 01/14] hw/i386/vmport: Propagate IOPort read to vCPU EAX register Liran Alon
  2020-03-09 23:53 ` [PATCH 02/14] hw/i386/vmport: Set EAX to -1 on failed and unsupported commands Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-09 23:54 ` [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property Liran Alon
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

No functional change.

This is done as a preparation for the following patches that will
introduce several device properties.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index a78e20040a79..7c21e56081b0 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -25,6 +25,7 @@
 #include "hw/isa/isa.h"
 #include "hw/i386/pc.h"
 #include "hw/input/i8042.h"
+#include "hw/qdev-properties.h"
 #include "sysemu/hw_accel.h"
 #include "qemu/log.h"
 #include "trace.h"
@@ -167,6 +168,10 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
     vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
 }
 
+static Property vmport_properties[] = {
+    DEFINE_PROP_END_OF_LIST(),
+};
+
 static void vmport_class_initfn(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -174,6 +179,7 @@ static void vmport_class_initfn(ObjectClass *klass, void *data)
     dc->realize = vmport_realizefn;
     /* Reason: realize sets global port_state */
     dc->user_creatable = false;
+    device_class_set_props(dc, vmport_properties);
 }
 
 static const TypeInfo vmport_info = {
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (2 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 03/14] hw/i386/vmport: Add device properties Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-10  9:32   ` Michael S. Tsirkin
  2020-03-09 23:54 ` [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION Liran Alon
                   ` (19 subsequent siblings)
  23 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

Instead of hard-coding the VMX version, make it a VMPORT object property.
This would allow user to control it's value via "-global vmport.vmx-version=X".

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 7c21e56081b0..a2c8ff4b59cf 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -44,6 +44,8 @@ typedef struct VMPortState {
     MemoryRegion io;
     VMPortReadFunc *func[VMPORT_ENTRIES];
     void *opaque[VMPORT_ENTRIES];
+
+    uint32_t vmx_version;
 } VMPortState;
 
 static VMPortState *port_state;
@@ -112,7 +114,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
     X86CPU *cpu = X86_CPU(current_cpu);
 
     cpu->env.regs[R_EBX] = VMPORT_MAGIC;
-    return 6;
+    return port_state->vmx_version;
 }
 
 static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
@@ -169,6 +171,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
 }
 
 static Property vmport_properties[] = {
+    /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
+    DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
     DEFINE_PROP_END_OF_LIST(),
 };
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (3 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-10  9:20   ` Michael S. Tsirkin
  2020-03-10 12:14   ` Michael S. Tsirkin
  2020-03-09 23:54 ` [PATCH 06/14] hw/i386/vmport: Define enum for all commands Liran Alon
                   ` (18 subsequent siblings)
  23 siblings, 2 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

As can be seen from VmCheck_GetVersion() in open-vm-tools code,
CMD_GETVERSION should return VMX type in ECX register.

Default is to fake host as VMware ESX server. But user can control
this value by "-global vmport.vmx-type=X".

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index a2c8ff4b59cf..c03f57f2f636 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -36,6 +36,15 @@
 #define VMPORT_ENTRIES 0x2c
 #define VMPORT_MAGIC   0x564D5868
 
+typedef enum {
+   VMX_TYPE_UNSET = 0,
+   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
+   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
+   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
+   VMX_TYPE_WORKSTATION,
+   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
+} VMX_Type;
+
 #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
 
 typedef struct VMPortState {
@@ -46,6 +55,7 @@ typedef struct VMPortState {
     void *opaque[VMPORT_ENTRIES];
 
     uint32_t vmx_version;
+    uint8_t vmx_type;
 } VMPortState;
 
 static VMPortState *port_state;
@@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
     X86CPU *cpu = X86_CPU(current_cpu);
 
     cpu->env.regs[R_EBX] = VMPORT_MAGIC;
+    cpu->env.regs[R_ECX] = port_state->vmx_type;
     return port_state->vmx_version;
 }
 
@@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
 static Property vmport_properties[] = {
     /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
     DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
+    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
+                      VMX_TYPE_SCALABLE_SERVER),
     DEFINE_PROP_END_OF_LIST(),
 };
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 06/14] hw/i386/vmport: Define enum for all commands
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (4 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-10  9:28   ` Michael S. Tsirkin
  2020-03-09 23:54 ` [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID Liran Alon
                   ` (17 subsequent siblings)
  23 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

No functional change.

Defining an enum for all VMPort commands have the following advantages:
* It gets rid of the error-prone requirement to update VMPORT_ENTRIES
when new VMPort commands are added to QEMU.
* It makes it clear to know by looking at one place at the source, what
are all the VMPort commands supported by QEMU.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmmouse.c    | 18 ++++++------------
 hw/i386/vmport.c     | 11 ++---------
 include/hw/i386/pc.h | 11 ++++++++++-
 3 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index e8e62bd96b8c..a61042fc0c5e 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -33,12 +33,6 @@
 /* debug only vmmouse */
 //#define DEBUG_VMMOUSE
 
-/* VMMouse Commands */
-#define VMMOUSE_GETVERSION	10
-#define VMMOUSE_DATA		39
-#define VMMOUSE_STATUS		40
-#define VMMOUSE_COMMAND		41
-
 #define VMMOUSE_READ_ID			0x45414552
 #define VMMOUSE_DISABLE			0x000000f5
 #define VMMOUSE_REQUEST_RELATIVE	0x4c455252
@@ -196,10 +190,10 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
     command = data[2] & 0xFFFF;
 
     switch (command) {
-    case VMMOUSE_STATUS:
+    case VMPORT_CMD_VMMOUSE_STATUS:
         data[0] = vmmouse_get_status(s);
         break;
-    case VMMOUSE_COMMAND:
+    case VMPORT_CMD_VMMOUSE_COMMAND:
         switch (data[1]) {
         case VMMOUSE_DISABLE:
             vmmouse_disable(s);
@@ -218,7 +212,7 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
             break;
         }
         break;
-    case VMMOUSE_DATA:
+    case VMPORT_CMD_VMMOUSE_DATA:
         vmmouse_data(s, data, data[1]);
         break;
     default:
@@ -275,9 +269,9 @@ static void vmmouse_realizefn(DeviceState *dev, Error **errp)
         return;
     }
 
-    vmport_register(VMMOUSE_STATUS, vmmouse_ioport_read, s);
-    vmport_register(VMMOUSE_COMMAND, vmmouse_ioport_read, s);
-    vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s);
+    vmport_register(VMPORT_CMD_VMMOUSE_STATUS, vmmouse_ioport_read, s);
+    vmport_register(VMPORT_CMD_VMMOUSE_COMMAND, vmmouse_ioport_read, s);
+    vmport_register(VMPORT_CMD_VMMOUSE_DATA, vmmouse_ioport_read, s);
 }
 
 static Property vmmouse_properties[] = {
diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index c03f57f2f636..2ae5afc42b50 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -30,10 +30,6 @@
 #include "qemu/log.h"
 #include "trace.h"
 
-#define VMPORT_CMD_GETVERSION 0x0a
-#define VMPORT_CMD_GETRAMSIZE 0x14
-
-#define VMPORT_ENTRIES 0x2c
 #define VMPORT_MAGIC   0x564D5868
 
 typedef enum {
@@ -60,12 +56,9 @@ typedef struct VMPortState {
 
 static VMPortState *port_state;
 
-void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque)
+void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque)
 {
-    if (command >= VMPORT_ENTRIES) {
-        return;
-    }
-
+    assert(command < VMPORT_ENTRIES);
     trace_vmport_register(command, func, opaque);
     port_state->func[command] = func;
     port_state->opaque[command] = opaque;
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index d5ac76d54e1f..7f15a01137b1 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -138,12 +138,21 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled);
 #define TYPE_VMPORT "vmport"
 typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
 
+typedef enum {
+    VMPORT_CMD_GETVERSION       = 10,
+    VMPORT_CMD_GETRAMSIZE       = 20,
+    VMPORT_CMD_VMMOUSE_DATA     = 39,
+    VMPORT_CMD_VMMOUSE_STATUS   = 40,
+    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
+    VMPORT_ENTRIES
+} VMPortCommand;
+
 static inline void vmport_init(ISABus *bus)
 {
     isa_create_simple(bus, TYPE_VMPORT);
 }
 
-void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
+void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque);
 void vmmouse_get_data(uint32_t *data);
 void vmmouse_set_data(const uint32_t *data);
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (5 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 06/14] hw/i386/vmport: Define enum for all commands Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-10  9:22   ` Michael S. Tsirkin
  2020-03-10  9:34   ` Michael S. Tsirkin
  2020-03-09 23:54 ` [PATCH 08/14] hw/i386/vmport: Add support for CMD_GETTIME Liran Alon
                   ` (16 subsequent siblings)
  23 siblings, 2 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

This is VMware documented functionallity that some guests rely on.
Returns the BIOS UUID of the current virtual machine.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c     | 14 ++++++++++++++
 include/hw/i386/pc.h |  1 +
 2 files changed, 15 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 2ae5afc42b50..7687f3368a55 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -26,6 +26,7 @@
 #include "hw/i386/pc.h"
 #include "hw/input/i8042.h"
 #include "hw/qdev-properties.h"
+#include "sysemu/sysemu.h"
 #include "sysemu/hw_accel.h"
 #include "qemu/log.h"
 #include "trace.h"
@@ -121,6 +122,18 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
     return port_state->vmx_version;
 }
 
+static uint32_t vmport_cmd_get_bios_uuid(void *opaque, uint32_t addr)
+{
+    X86CPU *cpu = X86_CPU(current_cpu);
+    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);
+
+    cpu->env.regs[R_EAX] = uuid_parts[0];
+    cpu->env.regs[R_EBX] = uuid_parts[1];
+    cpu->env.regs[R_ECX] = uuid_parts[2];
+    cpu->env.regs[R_EDX] = uuid_parts[3];
+    return cpu->env.regs[R_EAX];
+}
+
 static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
 {
     X86CPU *cpu = X86_CPU(current_cpu);
@@ -171,6 +184,7 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
     port_state = s;
     /* Register some generic port commands */
     vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL);
+    vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_get_bios_uuid, NULL);
     vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
 }
 
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 7f15a01137b1..ea87eb93511e 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -140,6 +140,7 @@ typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
 
 typedef enum {
     VMPORT_CMD_GETVERSION       = 10,
+    VMPORT_CMD_GETBIOSUUID      = 19,
     VMPORT_CMD_GETRAMSIZE       = 20,
     VMPORT_CMD_VMMOUSE_DATA     = 39,
     VMPORT_CMD_VMMOUSE_STATUS   = 40,
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 08/14] hw/i386/vmport: Add support for CMD_GETTIME
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (6 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-09 23:54 ` [PATCH 09/14] hw/i386/vmport: Add support for CMD_GETTIMEFULL Liran Alon
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

This command is used by guest to gettimeofday() from host.
See usage example in open-vm-tools TimeSyncReadHost() function.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c     | 21 +++++++++++++++++++++
 include/hw/i386/pc.h |  1 +
 2 files changed, 22 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 7687f3368a55..21253933215b 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -53,6 +53,7 @@ typedef struct VMPortState {
 
     uint32_t vmx_version;
     uint8_t vmx_type;
+    uint32_t max_time_lag_us;
 } VMPortState;
 
 static VMPortState *port_state;
@@ -142,6 +143,20 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
     return ram_size;
 }
 
+static uint32_t vmport_cmd_time(void *opaque, uint32_t addr)
+{
+    X86CPU *cpu = X86_CPU(current_cpu);
+    qemu_timeval tv;
+
+    if (qemu_gettimeofday(&tv) < 0) {
+        return UINT32_MAX;
+    }
+
+    cpu->env.regs[R_EBX] = (uint32_t)tv.tv_usec;
+    cpu->env.regs[R_ECX] = port_state->max_time_lag_us;
+    return (uint32_t)tv.tv_sec;
+}
+
 /* vmmouse helpers */
 void vmmouse_get_data(uint32_t *data)
 {
@@ -186,6 +201,7 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
     vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL);
     vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_get_bios_uuid, NULL);
     vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
+    vmport_register(VMPORT_CMD_GETTIME, vmport_cmd_time, NULL);
 }
 
 static Property vmport_properties[] = {
@@ -193,6 +209,11 @@ static Property vmport_properties[] = {
     DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
     DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
                       VMX_TYPE_SCALABLE_SERVER),
+    /*
+     * Max amount of time lag that can go uncorrected.
+     * Value taken from VMware Workstation 5.5.
+     **/
+    DEFINE_PROP_UINT32("max-time-lag", VMPortState, max_time_lag_us, 1000000),
     DEFINE_PROP_END_OF_LIST(),
 };
 
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index ea87eb93511e..3ab3541b3a90 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -142,6 +142,7 @@ typedef enum {
     VMPORT_CMD_GETVERSION       = 10,
     VMPORT_CMD_GETBIOSUUID      = 19,
     VMPORT_CMD_GETRAMSIZE       = 20,
+    VMPORT_CMD_GETTIME          = 23,
     VMPORT_CMD_VMMOUSE_DATA     = 39,
     VMPORT_CMD_VMMOUSE_STATUS   = 40,
     VMPORT_CMD_VMMOUSE_COMMAND  = 41,
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 09/14] hw/i386/vmport: Add support for CMD_GETTIMEFULL
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (7 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 08/14] hw/i386/vmport: Add support for CMD_GETTIME Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-09 23:54 ` [PATCH 10/14] hw/i386/vmport: Add support for CMD_GET_VCPU_INFO Liran Alon
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

Similar to CMD_GETTIME but lacks the 136-year overflow issue,
by returning full 64-bit of host uSeconds.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c     | 17 +++++++++++++++++
 include/hw/i386/pc.h |  1 +
 2 files changed, 18 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 21253933215b..26231fc9d718 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -157,6 +157,22 @@ static uint32_t vmport_cmd_time(void *opaque, uint32_t addr)
     return (uint32_t)tv.tv_sec;
 }
 
+static uint32_t vmport_cmd_time_full(void *opaque, uint32_t addr)
+{
+    X86CPU *cpu = X86_CPU(current_cpu);
+    qemu_timeval tv;
+
+    if (qemu_gettimeofday(&tv) < 0) {
+        return UINT32_MAX;
+    }
+
+    cpu->env.regs[R_ESI] = (uint32_t)((uint64_t)tv.tv_sec >> 32);
+    cpu->env.regs[R_EDX] = (uint32_t)tv.tv_sec;
+    cpu->env.regs[R_EBX] = (uint32_t)tv.tv_usec;
+    cpu->env.regs[R_ECX] = port_state->max_time_lag_us;
+    return VMPORT_MAGIC;
+}
+
 /* vmmouse helpers */
 void vmmouse_get_data(uint32_t *data)
 {
@@ -202,6 +218,7 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
     vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_get_bios_uuid, NULL);
     vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
     vmport_register(VMPORT_CMD_GETTIME, vmport_cmd_time, NULL);
+    vmport_register(VMPORT_CMD_GETTIMEFULL, vmport_cmd_time_full, NULL);
 }
 
 static Property vmport_properties[] = {
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 3ab3541b3a90..14d321e3cbbe 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -146,6 +146,7 @@ typedef enum {
     VMPORT_CMD_VMMOUSE_DATA     = 39,
     VMPORT_CMD_VMMOUSE_STATUS   = 40,
     VMPORT_CMD_VMMOUSE_COMMAND  = 41,
+    VMPORT_CMD_GETTIMEFULL      = 46,
     VMPORT_ENTRIES
 } VMPortCommand;
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 10/14] hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (8 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 09/14] hw/i386/vmport: Add support for CMD_GETTIMEFULL Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-09 23:54 ` [PATCH 11/14] hw/i386/vmport: Allow x2apic without IR Liran Alon
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

Command currently returns that it is unimplemented by setting
the reserved-bit in it's return value.

Following patches will return various useful vCPU information
to guest.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c     | 13 +++++++++++++
 include/hw/i386/pc.h |  1 +
 2 files changed, 14 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 26231fc9d718..b33ef9c01d65 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -42,6 +42,13 @@ typedef enum {
    VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
 } VMX_Type;
 
+/* vCPU features reported by CMD_GET_VCPU_INFO */
+#define VCPU_INFO_SLC64_BIT             0
+#define VCPU_INFO_SYNC_VTSCS_BIT        1
+#define VCPU_INFO_HV_REPLAY_OK_BIT      2
+#define VCPU_INFO_LEGACY_X2APIC_BIT     3
+#define VCPU_INFO_RESERVED_BIT          31
+
 #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
 
 typedef struct VMPortState {
@@ -173,6 +180,11 @@ static uint32_t vmport_cmd_time_full(void *opaque, uint32_t addr)
     return VMPORT_MAGIC;
 }
 
+static uint32_t vmport_cmd_get_vcpu_info(void *opaque, uint32_t addr)
+{
+    return (1 << VCPU_INFO_RESERVED_BIT);
+}
+
 /* vmmouse helpers */
 void vmmouse_get_data(uint32_t *data)
 {
@@ -219,6 +231,7 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
     vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
     vmport_register(VMPORT_CMD_GETTIME, vmport_cmd_time, NULL);
     vmport_register(VMPORT_CMD_GETTIMEFULL, vmport_cmd_time_full, NULL);
+    vmport_register(VMPORT_CMD_GET_VCPU_INFO, vmport_cmd_get_vcpu_info, NULL);
 }
 
 static Property vmport_properties[] = {
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 14d321e3cbbe..e880ca39ee3b 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -147,6 +147,7 @@ typedef enum {
     VMPORT_CMD_VMMOUSE_STATUS   = 40,
     VMPORT_CMD_VMMOUSE_COMMAND  = 41,
     VMPORT_CMD_GETTIMEFULL      = 46,
+    VMPORT_CMD_GET_VCPU_INFO    = 68,
     VMPORT_ENTRIES
 } VMPortCommand;
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 11/14] hw/i386/vmport: Allow x2apic without IR
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (9 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 10/14] hw/i386/vmport: Add support for CMD_GET_VCPU_INFO Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-09 23:54 ` [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure Liran Alon
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

Signal to guest that hypervisor supports x2apic without VT-d/IOMMU
Interrupt-Remapping support. This allows guest to use x2apic in
case all APIC IDs fits in 8-bit (i.e. Max APIC ID < 255).

See Linux kernel commit 4cca6ea04d31 ("x86/apic: Allow x2apic
without IR on VMware platform") and Linux try_to_enable_x2apic()
function.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index b33ef9c01d65..2b0a623f19c1 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -182,7 +182,14 @@ static uint32_t vmport_cmd_time_full(void *opaque, uint32_t addr)
 
 static uint32_t vmport_cmd_get_vcpu_info(void *opaque, uint32_t addr)
 {
-    return (1 << VCPU_INFO_RESERVED_BIT);
+    X86CPU *cpu = X86_CPU(current_cpu);
+    uint32_t ret = 0;
+
+    if (cpu->env.features[FEAT_1_ECX] & CPUID_EXT_X2APIC) {
+        ret |= 1 << VCPU_INFO_LEGACY_X2APIC_BIT;
+    }
+
+    return ret;
 }
 
 /* vmmouse helpers */
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (10 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 11/14] hw/i386/vmport: Allow x2apic without IR Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-10  9:29   ` Michael S. Tsirkin
  2020-03-09 23:54 ` [PATCH 13/14] hw/i386/vmport: Add support for CMD_GETHZ Liran Alon
                   ` (11 subsequent siblings)
  23 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

No functional change.
This information will be used by following patches.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 linux-headers/asm-x86/kvm.h | 4 ++++
 target/i386/cpu.h           | 1 +
 target/i386/kvm.c           | 6 +++---
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
index 503d3f42da16..99eeaaf2f0b4 100644
--- a/linux-headers/asm-x86/kvm.h
+++ b/linux-headers/asm-x86/kvm.h
@@ -446,4 +446,8 @@ struct kvm_pmu_event_filter {
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
 
+/* From arch/x86/kvm/lapic.h */
+#define KVM_APIC_BUS_CYCLE_NS       1
+#define KVM_APIC_BUS_FREQUENCY      (1000000000ULL / KVM_APIC_BUS_CYCLE_NS)
+
 #endif /* _ASM_X86_KVM_H */
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 576f309bbfc8..9c7cd7cde107 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -1580,6 +1580,7 @@ typedef struct CPUX86State {
     bool tsc_valid;
     int64_t tsc_khz;
     int64_t user_tsc_khz; /* for sanity check only */
+    uint64_t apic_bus_freq;
 #if defined(CONFIG_KVM) || defined(CONFIG_HVF)
     void *xsave_buf;
 #endif
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index 69eb43d796e6..00917196dffb 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -1496,6 +1496,8 @@ int kvm_arch_init_vcpu(CPUState *cs)
         }
     }
 
+    env->apic_bus_freq = KVM_APIC_BUS_FREQUENCY;
+
     /* Paravirtualization CPUIDs */
     r = hyperv_handle_properties(cs, cpuid_data.entries);
     if (r < 0) {
@@ -1800,9 +1802,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
         c = &cpuid_data.entries[cpuid_i++];
         c->function = KVM_CPUID_SIGNATURE | 0x10;
         c->eax = env->tsc_khz;
-        /* LAPIC resolution of 1ns (freq: 1GHz) is hardcoded in KVM's
-         * APIC_BUS_CYCLE_NS */
-        c->ebx = 1000000;
+        c->ebx = env->apic_bus_freq / 1000; /* Hz to KHz */
         c->ecx = c->edx = 0;
 
         c = cpuid_find_entry(&cpuid_data.cpuid, kvm_base, 0);
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 13/14] hw/i386/vmport: Add support for CMD_GETHZ
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (11 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-09 23:54 ` [PATCH 14/14] hw/i386/vmport: Assert vmport initialized before registering commands Liran Alon
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

This command returns to guest information on LAPIC bus frequency and TSC
frequency.

One can see how this interface is used by Linux vmware_platform_setup()
introduced in Linux commit 88b094fb8d4f ("x86: Hypervisor detection and
get tsc_freq from hypervisor").

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c     | 19 +++++++++++++++++++
 include/hw/i386/pc.h |  1 +
 2 files changed, 20 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 2b0a623f19c1..95d4a23ce9ba 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -150,6 +150,24 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
     return ram_size;
 }
 
+static uint32_t vmport_cmd_get_hz(void *opaque, uint32_t addr)
+{
+    X86CPU *cpu = X86_CPU(current_cpu);
+
+    if (cpu->env.tsc_khz && cpu->env.apic_bus_freq) {
+        uint64_t tsc_freq = (uint64_t)cpu->env.tsc_khz * 1000;
+
+        cpu->env.regs[R_ECX] = cpu->env.apic_bus_freq;
+        cpu->env.regs[R_EBX] = (uint32_t)(tsc_freq >> 32);
+        cpu->env.regs[R_EAX] = (uint32_t)tsc_freq;
+    } else {
+        /* Signal cmd as not supported */
+        cpu->env.regs[R_EBX] = UINT32_MAX;
+    }
+
+    return cpu->env.regs[R_EAX];
+}
+
 static uint32_t vmport_cmd_time(void *opaque, uint32_t addr)
 {
     X86CPU *cpu = X86_CPU(current_cpu);
@@ -237,6 +255,7 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
     vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_get_bios_uuid, NULL);
     vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
     vmport_register(VMPORT_CMD_GETTIME, vmport_cmd_time, NULL);
+    vmport_register(VMPORT_CMD_GETHZ, vmport_cmd_get_hz, NULL);
     vmport_register(VMPORT_CMD_GETTIMEFULL, vmport_cmd_time_full, NULL);
     vmport_register(VMPORT_CMD_GET_VCPU_INFO, vmport_cmd_get_vcpu_info, NULL);
 }
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index e880ca39ee3b..679bf429c6a5 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -146,6 +146,7 @@ typedef enum {
     VMPORT_CMD_VMMOUSE_DATA     = 39,
     VMPORT_CMD_VMMOUSE_STATUS   = 40,
     VMPORT_CMD_VMMOUSE_COMMAND  = 41,
+    VMPORT_CMD_GETHZ            = 45,
     VMPORT_CMD_GETTIMEFULL      = 46,
     VMPORT_CMD_GET_VCPU_INFO    = 68,
     VMPORT_ENTRIES
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 14/14] hw/i386/vmport: Assert vmport initialized before registering commands
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (12 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 13/14] hw/i386/vmport: Add support for CMD_GETHZ Liran Alon
@ 2020-03-09 23:54 ` Liran Alon
  2020-03-10  9:30   ` Michael S. Tsirkin
  2020-03-10  0:13 ` [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements no-reply
                   ` (9 subsequent siblings)
  23 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-09 23:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: ehabkost, mst, Liran Alon, Nikita Leshenko, pbonzini, rth

vmport_register() is also called from other modules such as vmmouse.
Therefore, these modules rely that vmport is realized before those call
sites. If this is violated, vmport_register() will NULL-deref.

To make such issues easier to debug, assert in vmport_register() that
vmport is already realized.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
---
 hw/i386/vmport.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 95d4a23ce9ba..659a323e8448 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -68,6 +68,8 @@ static VMPortState *port_state;
 void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque)
 {
     assert(command < VMPORT_ENTRIES);
+    assert(port_state);
+
     trace_vmport_register(command, func, opaque);
     port_state->func[command] = func;
     port_state->opaque[command] = opaque;
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (13 preceding siblings ...)
  2020-03-09 23:54 ` [PATCH 14/14] hw/i386/vmport: Assert vmport initialized before registering commands Liran Alon
@ 2020-03-10  0:13 ` no-reply
  2020-03-10  0:16   ` Liran Alon
  2020-03-10  0:53 ` no-reply
                   ` (8 subsequent siblings)
  23 siblings, 1 reply; 79+ messages in thread
From: no-reply @ 2020-03-10  0:13 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
Message-id: 20200309235411.76587-1-liran.alon@oracle.com
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Switched to a new branch 'test'
ec54414 hw/i386/vmport: Assert vmport initialized before registering commands
77ea4ed hw/i386/vmport: Add support for CMD_GETHZ
b1ed920 i386/cpu: Store LAPIC bus frequency in CPU structure
62d770f hw/i386/vmport: Allow x2apic without IR
5c97d52 hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
e4a716d hw/i386/vmport: Add support for CMD_GETTIMEFULL
febcb47 hw/i386/vmport: Add support for CMD_GETTIME
25890df hw/i386/vmport: Add support for CMD_GETBIOSUUID
9e6211d hw/i386/vmport: Define enum for all commands
fc5f5ec hw/i386/vmport: Report VMX type in CMD_GETVERSION
f284754 hw/i386/vmport: Introduce vmx-version property
114bf59 hw/i386/vmport: Add device properties
8acf5a2 hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
97c3de7 hw/i386/vmport: Propagate IOPort read to vCPU EAX register

=== OUTPUT BEGIN ===
1/14 Checking commit 97c3de7b1b98 (hw/i386/vmport: Propagate IOPort read to vCPU EAX register)
2/14 Checking commit 8acf5a2b7630 (hw/i386/vmport: Set EAX to -1 on failed and unsupported commands)
3/14 Checking commit 114bf59021b3 (hw/i386/vmport: Add device properties)
4/14 Checking commit f284754e01a3 (hw/i386/vmport: Introduce vmx-version property)
5/14 Checking commit fc5f5ec6f72f (hw/i386/vmport: Report VMX type in CMD_GETVERSION)
6/14 Checking commit 9e6211d4df01 (hw/i386/vmport: Define enum for all commands)
7/14 Checking commit 25890df0767b (hw/i386/vmport: Add support for CMD_GETBIOSUUID)
ERROR: "(foo*)" should be "(foo *)"
#33: FILE: hw/i386/vmport.c:128:
+    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);

total: 1 errors, 0 warnings, 39 lines checked

Patch 7/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

8/14 Checking commit febcb4730cb2 (hw/i386/vmport: Add support for CMD_GETTIME)
9/14 Checking commit e4a716de3f06 (hw/i386/vmport: Add support for CMD_GETTIMEFULL)
10/14 Checking commit 5c97d52c360a (hw/i386/vmport: Add support for CMD_GET_VCPU_INFO)
ERROR: return is not a function, parentheses are not required
#41: FILE: hw/i386/vmport.c:185:
+    return (1 << VCPU_INFO_RESERVED_BIT);

total: 1 errors, 0 warnings, 38 lines checked

Patch 10/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

11/14 Checking commit 62d770f375b6 (hw/i386/vmport: Allow x2apic without IR)
12/14 Checking commit b1ed920b0bf3 (i386/cpu: Store LAPIC bus frequency in CPU structure)
13/14 Checking commit 77ea4ed42420 (hw/i386/vmport: Add support for CMD_GETHZ)
14/14 Checking commit ec54414bea14 (hw/i386/vmport: Assert vmport initialized before registering commands)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-10  0:13 ` [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements no-reply
@ 2020-03-10  0:16   ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10  0:16 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, mst, ehabkost, rth


On 10/03/2020 2:13, no-reply@patchew.org wrote:
> Patchew URL: https://urldefense.com/v3/__https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/__;!!GqivPVa7Brio!IXfneuptZ4caQyQEEgsIN74dLYkkLHJ8XSqL2iGyrzODUx_Jt8Vk-eKN_QQftVU$
>
>
>
> Hi,
>
> This series seems to have some coding style problems. See output below for
> more information:
>
> Subject: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
> Message-id: 20200309235411.76587-1-liran.alon@oracle.com
> Type: series
>
> === TEST SCRIPT BEGIN ===
> #!/bin/bash
> git rev-parse base > /dev/null || exit 0
> git config --local diff.renamelimit 0
> git config --local diff.renames True
> git config --local diff.algorithm histogram
> ./scripts/checkpatch.pl --mailback base..
> === TEST SCRIPT END ===
>
> Switched to a new branch 'test'
> ec54414 hw/i386/vmport: Assert vmport initialized before registering commands
> 77ea4ed hw/i386/vmport: Add support for CMD_GETHZ
> b1ed920 i386/cpu: Store LAPIC bus frequency in CPU structure
> 62d770f hw/i386/vmport: Allow x2apic without IR
> 5c97d52 hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
> e4a716d hw/i386/vmport: Add support for CMD_GETTIMEFULL
> febcb47 hw/i386/vmport: Add support for CMD_GETTIME
> 25890df hw/i386/vmport: Add support for CMD_GETBIOSUUID
> 9e6211d hw/i386/vmport: Define enum for all commands
> fc5f5ec hw/i386/vmport: Report VMX type in CMD_GETVERSION
> f284754 hw/i386/vmport: Introduce vmx-version property
> 114bf59 hw/i386/vmport: Add device properties
> 8acf5a2 hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
> 97c3de7 hw/i386/vmport: Propagate IOPort read to vCPU EAX register
>
> === OUTPUT BEGIN ===
> 1/14 Checking commit 97c3de7b1b98 (hw/i386/vmport: Propagate IOPort read to vCPU EAX register)
> 2/14 Checking commit 8acf5a2b7630 (hw/i386/vmport: Set EAX to -1 on failed and unsupported commands)
> 3/14 Checking commit 114bf59021b3 (hw/i386/vmport: Add device properties)
> 4/14 Checking commit f284754e01a3 (hw/i386/vmport: Introduce vmx-version property)
> 5/14 Checking commit fc5f5ec6f72f (hw/i386/vmport: Report VMX type in CMD_GETVERSION)
> 6/14 Checking commit 9e6211d4df01 (hw/i386/vmport: Define enum for all commands)
> 7/14 Checking commit 25890df0767b (hw/i386/vmport: Add support for CMD_GETBIOSUUID)
> ERROR: "(foo*)" should be "(foo *)"
> #33: FILE: hw/i386/vmport.c:128:
> +    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);
>
> total: 1 errors, 0 warnings, 39 lines checked
>
> Patch 7/14 has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
>
> 8/14 Checking commit febcb4730cb2 (hw/i386/vmport: Add support for CMD_GETTIME)
> 9/14 Checking commit e4a716de3f06 (hw/i386/vmport: Add support for CMD_GETTIMEFULL)
> 10/14 Checking commit 5c97d52c360a (hw/i386/vmport: Add support for CMD_GET_VCPU_INFO)
> ERROR: return is not a function, parentheses are not required
> #41: FILE: hw/i386/vmport.c:185:
> +    return (1 << VCPU_INFO_RESERVED_BIT);
>
> total: 1 errors, 0 warnings, 38 lines checked
>
> Patch 10/14 has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
>
> 11/14 Checking commit 62d770f375b6 (hw/i386/vmport: Allow x2apic without IR)
> 12/14 Checking commit b1ed920b0bf3 (i386/cpu: Store LAPIC bus frequency in CPU structure)
> 13/14 Checking commit 77ea4ed42420 (hw/i386/vmport: Add support for CMD_GETHZ)
> 14/14 Checking commit ec54414bea14 (hw/i386/vmport: Assert vmport initialized before registering commands)
> === OUTPUT END ===
>
> Test command exited with code: 1

Arr...
Will fix these minor coding-conventions after the patches are reviewed 
so I will take all into account in v2.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (14 preceding siblings ...)
  2020-03-10  0:13 ` [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements no-reply
@ 2020-03-10  0:53 ` no-reply
  2020-03-10  0:54 ` no-reply
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  0:53 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
Message-id: 20200309235411.76587-1-liran.alon@oracle.com
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
9a5eea3 hw/i386/vmport: Assert vmport initialized before registering commands
1e6dd04 hw/i386/vmport: Add support for CMD_GETHZ
0ac0d03 i386/cpu: Store LAPIC bus frequency in CPU structure
a7c67f7 hw/i386/vmport: Allow x2apic without IR
45a8906 hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
b2e5182 hw/i386/vmport: Add support for CMD_GETTIMEFULL
781c578 hw/i386/vmport: Add support for CMD_GETTIME
b9766e1 hw/i386/vmport: Add support for CMD_GETBIOSUUID
45d84ea hw/i386/vmport: Define enum for all commands
4fd0f2a hw/i386/vmport: Report VMX type in CMD_GETVERSION
fb9a37d hw/i386/vmport: Introduce vmx-version property
42c9b1b hw/i386/vmport: Add device properties
ef80fe3 hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
4f4c376 hw/i386/vmport: Propagate IOPort read to vCPU EAX register

=== OUTPUT BEGIN ===
1/14 Checking commit 4f4c3766dab8 (hw/i386/vmport: Propagate IOPort read to vCPU EAX register)
2/14 Checking commit ef80fe384f2a (hw/i386/vmport: Set EAX to -1 on failed and unsupported commands)
3/14 Checking commit 42c9b1bcba22 (hw/i386/vmport: Add device properties)
4/14 Checking commit fb9a37d94ae8 (hw/i386/vmport: Introduce vmx-version property)
5/14 Checking commit 4fd0f2a4fbd8 (hw/i386/vmport: Report VMX type in CMD_GETVERSION)
6/14 Checking commit 45d84eaad9b8 (hw/i386/vmport: Define enum for all commands)
7/14 Checking commit b9766e1d7b89 (hw/i386/vmport: Add support for CMD_GETBIOSUUID)
ERROR: "(foo*)" should be "(foo *)"
#33: FILE: hw/i386/vmport.c:128:
+    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);

total: 1 errors, 0 warnings, 39 lines checked

Patch 7/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

8/14 Checking commit 781c5786106a (hw/i386/vmport: Add support for CMD_GETTIME)
9/14 Checking commit b2e51824129e (hw/i386/vmport: Add support for CMD_GETTIMEFULL)
10/14 Checking commit 45a8906700f6 (hw/i386/vmport: Add support for CMD_GET_VCPU_INFO)
ERROR: return is not a function, parentheses are not required
#41: FILE: hw/i386/vmport.c:185:
+    return (1 << VCPU_INFO_RESERVED_BIT);

total: 1 errors, 0 warnings, 38 lines checked

Patch 10/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

11/14 Checking commit a7c67f736cd1 (hw/i386/vmport: Allow x2apic without IR)
12/14 Checking commit 0ac0d0363873 (i386/cpu: Store LAPIC bus frequency in CPU structure)
13/14 Checking commit 1e6dd042d2a2 (hw/i386/vmport: Add support for CMD_GETHZ)
14/14 Checking commit 9a5eea388576 (hw/i386/vmport: Assert vmport initialized before registering commands)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (15 preceding siblings ...)
  2020-03-10  0:53 ` no-reply
@ 2020-03-10  0:54 ` no-reply
  2020-03-10  0:57   ` Liran Alon
  2020-03-10  1:10 ` no-reply
                   ` (6 subsequent siblings)
  23 siblings, 1 reply; 79+ messages in thread
From: no-reply @ 2020-03-10  0:54 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
export ARCH=x86_64
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===

PASS 1 fdc-test /x86_64/fdc/cmos
PASS 2 fdc-test /x86_64/fdc/no_media_on_start
PASS 3 fdc-test /x86_64/fdc/read_without_media
==6572==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 fdc-test /x86_64/fdc/media_change
PASS 5 fdc-test /x86_64/fdc/sense_interrupt
PASS 6 fdc-test /x86_64/fdc/relative_seek
---
PASS 32 test-opts-visitor /visitor/opts/range/beyond
PASS 33 test-opts-visitor /visitor/opts/dict/unvisited
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" 
==6620==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6620==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd8e97f000; bottom 0x7fc55e2d3000; size: 0x0038306ac000 (241330470912)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-coroutine /basic/no-dangling-access
---
PASS 12 test-aio /aio/event/flush
PASS 13 test-aio /aio/event/wait/no-flush-cb
PASS 14 test-aio /aio/timer/schedule
==6635==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 test-aio /aio/coroutine/queue-chaining
PASS 16 test-aio /aio-gsource/flush
PASS 17 test-aio /aio-gsource/bh/schedule
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" 
PASS 28 test-aio /aio-gsource/timer/schedule
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" 
==6646==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-aio-multithread /aio/multi/lifecycle
==6643==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ide-test /x86_64/ide/identify
==6663==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 test-aio-multithread /aio/multi/schedule
PASS 2 ide-test /x86_64/ide/flush
==6674==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ide-test /x86_64/ide/bmdma/simple_rw
PASS 3 test-aio-multithread /aio/multi/mutex/contended
==6680==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ide-test /x86_64/ide/bmdma/trim
==6691==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 test-aio-multithread /aio/multi/mutex/handoff
PASS 5 test-aio-multithread /aio/multi/mutex/mcs
PASS 6 test-aio-multithread /aio/multi/mutex/pthread
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" 
==6708==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-throttle /throttle/leak_bucket
PASS 2 test-throttle /throttle/compute_wait
PASS 3 test-throttle /throttle/init
---
PASS 14 test-throttle /throttle/config/max
PASS 15 test-throttle /throttle/config/iops_size
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" 
==6712==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-thread-pool /thread-pool/submit
PASS 2 test-thread-pool /thread-pool/submit-aio
PASS 3 test-thread-pool /thread-pool/submit-co
PASS 4 test-thread-pool /thread-pool/submit-many
==6779==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 test-thread-pool /thread-pool/cancel
PASS 6 test-thread-pool /thread-pool/cancel-async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-hbitmap -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-hbitmap" 
---
PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium
PASS 29 test-hbitmap /hbitmap/truncate/shrink/large
PASS 30 test-hbitmap /hbitmap/meta/zero
==6789==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 test-hbitmap /hbitmap/meta/one
PASS 32 test-hbitmap /hbitmap/meta/byte
PASS 33 test-hbitmap /hbitmap/meta/word
==6795==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 34 test-hbitmap /hbitmap/meta/sector
PASS 35 test-hbitmap /hbitmap/serialize/align
PASS 36 test-hbitmap /hbitmap/serialize/basic
---
PASS 44 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4
PASS 45 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_after_truncate
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" 
==6802==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-drain /bdrv-drain/nested
PASS 2 test-bdrv-drain /bdrv-drain/multiparent
PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context
---
PASS 41 test-bdrv-drain /bdrv-drain/bdrv_drop_intermediate/poll
PASS 42 test-bdrv-drain /bdrv-drain/replace_child/mid-drain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod" 
==6841==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree
PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob" 
==6845==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob /blockjob/ids
PASS 2 test-blockjob /blockjob/cancel/created
PASS 3 test-blockjob /blockjob/cancel/running
---
PASS 7 test-blockjob /blockjob/cancel/pending
PASS 8 test-blockjob /blockjob/cancel/concluded
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn" 
==6849==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob-txn /single/success
PASS 2 test-blockjob-txn /single/failure
PASS 3 test-blockjob-txn /single/cancel
---
PASS 6 test-blockjob-txn /pair/cancel
PASS 7 test-blockjob-txn /pair/fail-cancel-race
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend" 
==6853==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-backend /block-backend/drain_aio_error
PASS 2 test-block-backend /block-backend/drain_all_aio_error
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread" 
==6857==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-iothread /sync-op/pread
PASS 2 test-block-iothread /sync-op/pwrite
PASS 3 test-block-iothread /sync-op/load_vmstate
---
PASS 15 test-block-iothread /propagate/diamond
PASS 16 test-block-iothread /propagate/mirror
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking" 
==6877==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-image-locking /image-locking/basic
PASS 2 test-image-locking /image-locking/set-perm-abort
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid" 
---
PASS 22 test-vmstate /vmstate/qlist/save/saveqlist
PASS 23 test-vmstate /vmstate/qlist/load/loadqlist
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-cutils -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-cutils" 
==6886==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-cutils /cutils/parse_uint/null
PASS 2 test-cutils /cutils/parse_uint/empty
PASS 3 test-cutils /cutils/parse_uint/whitespace
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list" 
PASS 1 test-rcu-list /rcu/qlist/single-threaded
PASS 2 test-rcu-list /rcu/qlist/short-few
==6968==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-rcu-list /rcu/qlist/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-simpleq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-simpleq" 
PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded
PASS 2 test-rcu-simpleq /rcu/qsimpleq/short-few
PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" 
==7007==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded
PASS 2 test-rcu-tailq /rcu/qtailq/short-few
PASS 3 test-rcu-tailq /rcu/qtailq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-slist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-slist" 
PASS 1 test-rcu-slist /rcu/qslist/single-threaded
==7052==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 test-rcu-slist /rcu/qslist/short-few
PASS 3 test-rcu-slist /rcu/qslist/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qdist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdist" 
---
PASS 7 test-qdist /qdist/binning/expand
PASS 8 test-qdist /qdist/binning/shrink
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht" 
==7092==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 ide-test /x86_64/ide/bmdma/various_prdts
==7098==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7098==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffe055e000; bottom 0x7fae24ffe000; size: 0x0051bb560000 (351035326464)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 6 ide-test /x86_64/ide/bmdma/no_busmaster
PASS 7 ide-test /x86_64/ide/flush/nodev
==7109==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 ide-test /x86_64/ide/flush/empty_drive
==7114==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 ide-test /x86_64/ide/flush/retry_pci
==7120==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 ide-test /x86_64/ide/flush/retry_isa
==7126==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 ide-test /x86_64/ide/cdrom/pio
==7132==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 ide-test /x86_64/ide/cdrom/pio_large
PASS 1 test-qht /qht/mode/default
==7138==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 ide-test /x86_64/ide/cdrom/dma
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" 
PASS 2 test-qht /qht/mode/resize
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par" 
==7161==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ahci-test /x86_64/ahci/sanity
PASS 1 test-qht-par /qht/parallel/2threads-0%updates-1s
==7167==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ahci-test /x86_64/ahci/pci_spec
PASS 2 test-qht-par /qht/parallel/2threads-20%updates-1s
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bitops -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitops" 
==7179==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ahci-test /x86_64/ahci/pci_enable
PASS 1 test-bitops /bitops/sextract32
PASS 2 test-bitops /bitops/sextract64
---
PASS 3 test-bitcnt /bitcnt/ctpop32
PASS 4 test-bitcnt /bitcnt/ctpop64
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qdev-global-props -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdev-global-props" 
==7188==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-qdev-global-props /qdev/properties/static/default
PASS 2 test-qdev-global-props /qdev/properties/static/global
PASS 3 test-qdev-global-props /qdev/properties/dynamic/global
---
PASS 18 test-qemu-opts /qemu-opts/to_qdict/filtered
PASS 19 test-qemu-opts /qemu-opts/to_qdict/duplicates
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-keyval -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-keyval" 
==7219==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-keyval /keyval/keyval_parse
PASS 2 test-keyval /keyval/keyval_parse/list
PASS 3 test-keyval /keyval/visit/bool
---
PASS 3 test-crypto-hmac /crypto/hmac/prealloc
PASS 4 test-crypto-hmac /crypto/hmac/digest
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-cipher -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-cipher" 
==7236==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-cipher /crypto/cipher/aes-ecb-128
PASS 2 test-crypto-cipher /crypto/cipher/aes-ecb-192
PASS 3 test-crypto-cipher /crypto/cipher/aes-ecb-256
---
PASS 6 ahci-test /x86_64/ahci/identify
PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver
PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient
==7263==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 ahci-test /x86_64/ahci/max
PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1
PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2
==7269==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 ahci-test /x86_64/ahci/reset
==7275==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca3
PASS 6 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca1
PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2
PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3
==7275==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff002bd000; bottom 0x7f9d075fe000; size: 0x0061f8cbf000 (420785942528)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero
PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1
PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2
==7281==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3
==7281==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd61bc4000; bottom 0x7f2f5cffe000; size: 0x00ce04bc6000 (884842717184)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low
==7287==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4
PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5
==7287==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe34264000; bottom 0x7fe2117fe000; size: 0x001c22a66000 (120840413184)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high
==7293==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7293==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff56b64000; bottom 0x7f62601fe000; size: 0x009cf6966000 (674151948288)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero
PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6
==7299==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7299==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc64720000; bottom 0x7f64605fe000; size: 0x009804122000 (652903325696)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low
---
PASS 32 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive1
PASS 33 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive2
PASS 34 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive3
==7305==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 35 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain1
PASS 36 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain2
PASS 37 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingca
PASS 38 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingserver
PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession" 
==7305==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff6cc4c000; bottom 0x7f56a17fe000; size: 0x00a8cb44e000 (724964794368)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high
PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk
==7315==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7315==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc227fc000; bottom 0x7f83a1ffe000; size: 0x0078807fe000 (517551939584)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca
---
PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero
PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1
PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2
==7321==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3
==7321==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff81f6d000; bottom 0x7f44809fe000; size: 0x00bb0156f000 (803181359104)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low
PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4
==7327==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7327==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffe5714000; bottom 0x7fad17dfe000; size: 0x0052cd916000 (355636174848)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high
PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5
==7333==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero
==7339==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6
PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low
==7345==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1
PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high
PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2
==7351==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7351==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcf3a3b000; bottom 0x7f3c985fe000; size: 0x00c05b43d000 (826164891648)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3
PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero
PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4
PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5
==7357==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7357==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdcaf2c000; bottom 0x7f5027dfe000; size: 0x00ada312e000 (745765265408)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low
PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6
==7363==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7363==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffffd000000; bottom 0x7f21b2ffe000; size: 0x00de4a002000 (954724261888)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high
PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga" 
==7369==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7369==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffef2970000; bottom 0x7f88655fe000; size: 0x00768d372000 (509175341056)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero
---
PASS 6 test-qga /qga/get-vcpus
PASS 7 test-qga /qga/get-fsinfo
PASS 8 test-qga /qga/get-memory-block-info
==7383==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-qga /qga/get-memory-blocks
PASS 10 test-qga /qga/file-ops
PASS 11 test-qga /qga/file-write-read
---
PASS 15 test-qga /qga/invalid-cmd
PASS 16 test-qga /qga/invalid-args
PASS 17 test-qga /qga/fsfreeze-status
==7383==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd9e89e000; bottom 0x7fbbaaffe000; size: 0x0041f38a0000 (283258781696)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low
==7392==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7392==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeae63d000; bottom 0x7f5c7b7fe000; size: 0x00a232e3f000 (696638500864)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high
---
PASS 19 test-qga /qga/config
PASS 20 test-qga /qga/guest-exec
PASS 21 test-qga /qga/guest-exec-invalid
==7398==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7398==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffe5b49000; bottom 0x7fd2477fe000; size: 0x002d9e34b000 (195927781376)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero
---
PASS 24 test-qga /qga/guest-get-timezone
PASS 25 test-qga /qga/guest-get-users
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-timed-average -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-timed-average" 
==7416==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-timed-average /timed-average/average
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-util-filemonitor -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-filemonitor" 
==7416==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe3805e000; bottom 0x7fe46437c000; size: 0x0019d3ce2000 (110927683584)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-util-filemonitor /util/filemonitor
---
PASS 5 test-authz-list /auth/list/explicit/deny
PASS 6 test-authz-list /auth/list/explicit/allow
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-authz-listfile -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-authz-listfile" 
==7436==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-authz-listfile /auth/list/complex
PASS 2 test-authz-listfile /auth/list/default/deny
PASS 3 test-authz-listfile /auth/list/default/allow
PASS 4 test-authz-listfile /auth/list/explicit/deny
PASS 5 test-authz-listfile /auth/list/explicit/allow
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-task -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-task" 
==7436==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc0b00a000; bottom 0x7f6e47b24000; size: 0x008dc34e6000 (608867082240)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-io-task /crypto/task/complete
---
PASS 4 test-io-channel-file /io/channel/pipe/sync
PASS 5 test-io-channel-file /io/channel/pipe/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-tls -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-tls" 
==7503==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero
PASS 1 test-io-channel-tls /qio/channel/tls/basic
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-command -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-command" 
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-buffer -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-buffer" 
PASS 1 test-io-channel-buffer /io/channel/buf
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-base64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-base64" 
==7522==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-base64 /util/base64/good
PASS 2 test-base64 /util/base64/embedded-nul
PASS 3 test-base64 /util/base64/not-nul-terminated
---
PASS 3 test-crypto-afsplit /crypto/afsplit/sha256/big
PASS 4 test-crypto-afsplit /crypto/afsplit/sha1/1000
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-xts -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-xts" 
==7547==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-xts /crypto/xts/t-1-key-32-ptx-32/basic
PASS 2 test-crypto-xts /crypto/xts/t-1-key-32-ptx-32/split
PASS 3 test-crypto-xts /crypto/xts/t-1-key-32-ptx-32/unaligned
---
PASS 3 test-logging /logging/logfile_write_path
PASS 4 test-logging /logging/logfile_lock_path
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication" 
==7572==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7568==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-replication /replication/primary/read
PASS 2 test-replication /replication/primary/write
PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented
==7580==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-replication /replication/primary/start
PASS 4 test-replication /replication/primary/stop
PASS 5 test-replication /replication/primary/do_checkpoint
PASS 6 test-replication /replication/primary/get_error_all
PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry
==7586==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 test-replication /replication/secondary/read
PASS 35 ahci-test /x86_64/ahci/io/dma/lba28/simple/zero
==7592==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 test-replication /replication/secondary/write
PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low
==7598==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high
==7604==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero
==7611==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7572==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff0833c000; bottom 0x7f0912b5b000; size: 0x00f5f57e1000 (1056385667072)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low
==7632==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-replication /replication/secondary/start
PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high
==7638==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7638==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc7cf43000; bottom 0x7f5f3bf7b000; size: 0x009d40fc8000 (675400155136)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero
==7645==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7645==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeeffac000; bottom 0x7f25ed57b000; size: 0x00d902a31000 (932052144128)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low
PASS 10 test-replication /replication/secondary/stop
==7653==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7653==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcc3883000; bottom 0x7f6c5af23000; size: 0x009068960000 (620229951488)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high
==7660==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero
==7666==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low
PASS 11 test-replication /replication/secondary/continuous_replication
==7672==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high
==7678==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero
==7684==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 test-replication /replication/secondary/do_checkpoint
PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low
==7690==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 test-replication /replication/secondary/get_error_all
PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero" 
==7696==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero
==7705==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low
==7711==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high
==7717==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7717==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc31157000; bottom 0x7faabaf23000; size: 0x005176234000 (349874372608)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero
==7724==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7724==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe83130000; bottom 0x7f6ac49fd000; size: 0x0093be733000 (634555412480)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low
==7731==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7731==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffaec42000; bottom 0x7f0618123000; size: 0x00f996b1f000 (1071975100416)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high
==7738==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero
==7744==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low
==7750==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high
==7756==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 59 ahci-test /x86_64/ahci/io/ncq/simple
==7762==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 60 ahci-test /x86_64/ahci/io/ncq/retry
==7768==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 61 ahci-test /x86_64/ahci/flush/simple
==7774==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 62 ahci-test /x86_64/ahci/flush/retry
==7780==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7786==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 63 ahci-test /x86_64/ahci/flush/migrate
==7794==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7800==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 64 ahci-test /x86_64/ahci/migrate/sanity
==7808==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7814==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple
==7822==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7828==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted
==7836==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7842==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple
==7850==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7856==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted
==7864==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 69 ahci-test /x86_64/ahci/cdrom/eject
==7869==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single
==7875==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi
PASS 1 test-bufferiszero /cutils/bufferiszero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-uuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-uuid" 
==7881==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single
PASS 1 test-uuid /uuid/is_null
PASS 2 test-uuid /uuid/generate
---
PASS 1 test-qapi-util /qapi/util/qapi_enum_parse
PASS 2 test-qapi-util /qapi/util/parse_qapi_name
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qgraph -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qgraph" 
==7890==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7890==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffff9df0000; bottom 0x7f72e9fba000; size: 0x008d0fe36000 (605856948224)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-qgraph /qgraph/init_nop
---
PASS 22 test-qgraph /qgraph/test_test_in_path
PASS 23 test-qgraph /qgraph/test_double_edge
PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi
==7906==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" 
PASS 1 hd-geo-test /x86_64/hd-geo/ide/none
==7920==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0
==7926==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank
==7932==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba
==7938==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs
==7944==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank
==7950==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba
==7956==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs
==7962==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs
==7967==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst
==7973==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7977==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7981==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7985==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7989==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7993==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7997==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8001==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8004==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 hd-geo-test /x86_64/hd-geo/override/ide
==8011==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8015==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8019==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8023==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8027==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8031==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8035==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8039==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8042==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 hd-geo-test /x86_64/hd-geo/override/scsi
==8049==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8053==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8057==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8061==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8065==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8069==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8073==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8077==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8080==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 hd-geo-test /x86_64/hd-geo/override/scsi_2_controllers
==8087==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8091==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8095==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8099==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8102==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 hd-geo-test /x86_64/hd-geo/override/virtio_blk
==8109==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8113==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8116==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 hd-geo-test /x86_64/hd-geo/override/zero_chs
==8123==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8127==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8131==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8135==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8138==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 16 hd-geo-test /x86_64/hd-geo/override/scsi_hot_unplug
==8145==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8149==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8153==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8157==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==8160==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 17 hd-geo-test /x86_64/hd-geo/override/virtio_hot_unplug
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test" 
PASS 1 boot-order-test /x86_64/boot-order/pc
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8229==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP'
Using expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8235==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP'
Using expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8241==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.bridge'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8247==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8253==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.cphp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8260==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.memhp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8266==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.numamem'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8272==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8281==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8288==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.bridge'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8294==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.mmio64'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8300==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8306==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.cphp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8313==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.memhp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8319==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.numamem'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8325==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8334==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
PASS 1 i440fx-test /x86_64/i440fx/defaults
PASS 2 i440fx-test /x86_64/i440fx/pam
PASS 3 i440fx-test /x86_64/i440fx/firmware/bios
==8426==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test" 
PASS 1 fw_cfg-test /x86_64/fw_cfg/signature
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test" 
PASS 1 drive_del-test /x86_64/drive_del/without-dev
PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add
==8519==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test" 
PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause
---
dbus-daemon[8689]: Could not get password database information for UID of current process: User "???" unknown or no memory to allocate password entry

**
ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
cleaning up pid 8689
ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
make: *** [/tmp/qemu-test/src/tests/Makefile.include:632: check-qtest-x86_64] Error 1
make: *** Waiting for unfinished jobs....
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 664, in <module>
---
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=7b3f2786458443e69818e5382692a70b', '-u', '1003', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=x86_64-softmmu', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew2/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-25lfez9y/src/docker-src.2020-03-09-20.27.01.14215:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-debug']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=7b3f2786458443e69818e5382692a70b
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-25lfez9y/src'
make: *** [docker-run-test-debug@fedora] Error 2

real    26m57.844s
user    0m8.803s


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-10  0:54 ` no-reply
@ 2020-03-10  0:57   ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10  0:57 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, mst, ehabkost, rth


On 10/03/2020 2:54, no-reply@patchew.org wrote:
> Patchew URL: https://urldefense.com/v3/__https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnVicygP6jf4$
>
>
>
> Hi,
>
> This series failed the asan build test. Please find the testing commands and
> their output below. If you have Docker installed, you can probably reproduce it
> locally.
These failures doesn't seem to relate to the patch-series I have 
submitted...
The test seems to be broken.

-Liran

>
> === TEST SCRIPT BEGIN ===
> #!/bin/bash
> export ARCH=x86_64
> make docker-image-fedora V=1 NETWORK=1
> time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
> === TEST SCRIPT END ===
>
> PASS 1 fdc-test /x86_64/fdc/cmos
> PASS 2 fdc-test /x86_64/fdc/no_media_on_start
> PASS 3 fdc-test /x86_64/fdc/read_without_media
> ==6572==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 4 fdc-test /x86_64/fdc/media_change
> PASS 5 fdc-test /x86_64/fdc/sense_interrupt
> PASS 6 fdc-test /x86_64/fdc/relative_seek
> ---
> PASS 32 test-opts-visitor /visitor/opts/range/beyond
> PASS 33 test-opts-visitor /visitor/opts/dict/unvisited
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine"
> ==6620==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==6620==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd8e97f000; bottom 0x7fc55e2d3000; size: 0x0038306ac000 (241330470912)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 1 test-coroutine /basic/no-dangling-access
> ---
> PASS 12 test-aio /aio/event/flush
> PASS 13 test-aio /aio/event/wait/no-flush-cb
> PASS 14 test-aio /aio/timer/schedule
> ==6635==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 15 test-aio /aio/coroutine/queue-chaining
> PASS 16 test-aio /aio-gsource/flush
> PASS 17 test-aio /aio-gsource/bh/schedule
> ---
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test"
> PASS 28 test-aio /aio-gsource/timer/schedule
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread"
> ==6646==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-aio-multithread /aio/multi/lifecycle
> ==6643==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 ide-test /x86_64/ide/identify
> ==6663==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 2 test-aio-multithread /aio/multi/schedule
> PASS 2 ide-test /x86_64/ide/flush
> ==6674==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 3 ide-test /x86_64/ide/bmdma/simple_rw
> PASS 3 test-aio-multithread /aio/multi/mutex/contended
> ==6680==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 4 ide-test /x86_64/ide/bmdma/trim
> ==6691==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 4 test-aio-multithread /aio/multi/mutex/handoff
> PASS 5 test-aio-multithread /aio/multi/mutex/mcs
> PASS 6 test-aio-multithread /aio/multi/mutex/pthread
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle"
> ==6708==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-throttle /throttle/leak_bucket
> PASS 2 test-throttle /throttle/compute_wait
> PASS 3 test-throttle /throttle/init
> ---
> PASS 14 test-throttle /throttle/config/max
> PASS 15 test-throttle /throttle/config/iops_size
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool"
> ==6712==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-thread-pool /thread-pool/submit
> PASS 2 test-thread-pool /thread-pool/submit-aio
> PASS 3 test-thread-pool /thread-pool/submit-co
> PASS 4 test-thread-pool /thread-pool/submit-many
> ==6779==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 5 test-thread-pool /thread-pool/cancel
> PASS 6 test-thread-pool /thread-pool/cancel-async
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-hbitmap -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-hbitmap"
> ---
> PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium
> PASS 29 test-hbitmap /hbitmap/truncate/shrink/large
> PASS 30 test-hbitmap /hbitmap/meta/zero
> ==6789==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 31 test-hbitmap /hbitmap/meta/one
> PASS 32 test-hbitmap /hbitmap/meta/byte
> PASS 33 test-hbitmap /hbitmap/meta/word
> ==6795==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 34 test-hbitmap /hbitmap/meta/sector
> PASS 35 test-hbitmap /hbitmap/serialize/align
> PASS 36 test-hbitmap /hbitmap/serialize/basic
> ---
> PASS 44 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4
> PASS 45 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_after_truncate
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain"
> ==6802==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-bdrv-drain /bdrv-drain/nested
> PASS 2 test-bdrv-drain /bdrv-drain/multiparent
> PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context
> ---
> PASS 41 test-bdrv-drain /bdrv-drain/bdrv_drop_intermediate/poll
> PASS 42 test-bdrv-drain /bdrv-drain/replace_child/mid-drain
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod"
> ==6841==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree
> PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob"
> ==6845==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-blockjob /blockjob/ids
> PASS 2 test-blockjob /blockjob/cancel/created
> PASS 3 test-blockjob /blockjob/cancel/running
> ---
> PASS 7 test-blockjob /blockjob/cancel/pending
> PASS 8 test-blockjob /blockjob/cancel/concluded
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn"
> ==6849==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-blockjob-txn /single/success
> PASS 2 test-blockjob-txn /single/failure
> PASS 3 test-blockjob-txn /single/cancel
> ---
> PASS 6 test-blockjob-txn /pair/cancel
> PASS 7 test-blockjob-txn /pair/fail-cancel-race
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend"
> ==6853==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-block-backend /block-backend/drain_aio_error
> PASS 2 test-block-backend /block-backend/drain_all_aio_error
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread"
> ==6857==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-block-iothread /sync-op/pread
> PASS 2 test-block-iothread /sync-op/pwrite
> PASS 3 test-block-iothread /sync-op/load_vmstate
> ---
> PASS 15 test-block-iothread /propagate/diamond
> PASS 16 test-block-iothread /propagate/mirror
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking"
> ==6877==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-image-locking /image-locking/basic
> PASS 2 test-image-locking /image-locking/set-perm-abort
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid"
> ---
> PASS 22 test-vmstate /vmstate/qlist/save/saveqlist
> PASS 23 test-vmstate /vmstate/qlist/load/loadqlist
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-cutils -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-cutils"
> ==6886==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-cutils /cutils/parse_uint/null
> PASS 2 test-cutils /cutils/parse_uint/empty
> PASS 3 test-cutils /cutils/parse_uint/whitespace
> ---
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list"
> PASS 1 test-rcu-list /rcu/qlist/single-threaded
> PASS 2 test-rcu-list /rcu/qlist/short-few
> ==6968==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 3 test-rcu-list /rcu/qlist/long-many
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-simpleq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-simpleq"
> PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded
> PASS 2 test-rcu-simpleq /rcu/qsimpleq/short-few
> PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq"
> ==7007==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded
> PASS 2 test-rcu-tailq /rcu/qtailq/short-few
> PASS 3 test-rcu-tailq /rcu/qtailq/long-many
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-slist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-slist"
> PASS 1 test-rcu-slist /rcu/qslist/single-threaded
> ==7052==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 2 test-rcu-slist /rcu/qslist/short-few
> PASS 3 test-rcu-slist /rcu/qslist/long-many
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qdist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdist"
> ---
> PASS 7 test-qdist /qdist/binning/expand
> PASS 8 test-qdist /qdist/binning/shrink
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht"
> ==7092==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 5 ide-test /x86_64/ide/bmdma/various_prdts
> ==7098==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7098==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffe055e000; bottom 0x7fae24ffe000; size: 0x0051bb560000 (351035326464)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 6 ide-test /x86_64/ide/bmdma/no_busmaster
> PASS 7 ide-test /x86_64/ide/flush/nodev
> ==7109==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 8 ide-test /x86_64/ide/flush/empty_drive
> ==7114==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 9 ide-test /x86_64/ide/flush/retry_pci
> ==7120==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 10 ide-test /x86_64/ide/flush/retry_isa
> ==7126==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 11 ide-test /x86_64/ide/cdrom/pio
> ==7132==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 12 ide-test /x86_64/ide/cdrom/pio_large
> PASS 1 test-qht /qht/mode/default
> ==7138==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 13 ide-test /x86_64/ide/cdrom/dma
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test"
> PASS 2 test-qht /qht/mode/resize
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par"
> ==7161==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 ahci-test /x86_64/ahci/sanity
> PASS 1 test-qht-par /qht/parallel/2threads-0%updates-1s
> ==7167==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 2 ahci-test /x86_64/ahci/pci_spec
> PASS 2 test-qht-par /qht/parallel/2threads-20%updates-1s
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bitops -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitops"
> ==7179==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 3 ahci-test /x86_64/ahci/pci_enable
> PASS 1 test-bitops /bitops/sextract32
> PASS 2 test-bitops /bitops/sextract64
> ---
> PASS 3 test-bitcnt /bitcnt/ctpop32
> PASS 4 test-bitcnt /bitcnt/ctpop64
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qdev-global-props -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdev-global-props"
> ==7188==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-qdev-global-props /qdev/properties/static/default
> PASS 2 test-qdev-global-props /qdev/properties/static/global
> PASS 3 test-qdev-global-props /qdev/properties/dynamic/global
> ---
> PASS 18 test-qemu-opts /qemu-opts/to_qdict/filtered
> PASS 19 test-qemu-opts /qemu-opts/to_qdict/duplicates
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-keyval -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-keyval"
> ==7219==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-keyval /keyval/keyval_parse
> PASS 2 test-keyval /keyval/keyval_parse/list
> PASS 3 test-keyval /keyval/visit/bool
> ---
> PASS 3 test-crypto-hmac /crypto/hmac/prealloc
> PASS 4 test-crypto-hmac /crypto/hmac/digest
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-cipher -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-cipher"
> ==7236==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-crypto-cipher /crypto/cipher/aes-ecb-128
> PASS 2 test-crypto-cipher /crypto/cipher/aes-ecb-192
> PASS 3 test-crypto-cipher /crypto/cipher/aes-ecb-256
> ---
> PASS 6 ahci-test /x86_64/ahci/identify
> PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver
> PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient
> ==7263==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 7 ahci-test /x86_64/ahci/max
> PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1
> PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2
> ==7269==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 8 ahci-test /x86_64/ahci/reset
> ==7275==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 5 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca3
> PASS 6 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca1
> PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2
> PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3
> ==7275==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff002bd000; bottom 0x7f9d075fe000; size: 0x0061f8cbf000 (420785942528)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero
> PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1
> PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2
> ==7281==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3
> ==7281==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd61bc4000; bottom 0x7f2f5cffe000; size: 0x00ce04bc6000 (884842717184)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low
> ==7287==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4
> PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5
> ==7287==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe34264000; bottom 0x7fe2117fe000; size: 0x001c22a66000 (120840413184)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high
> ==7293==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7293==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff56b64000; bottom 0x7f62601fe000; size: 0x009cf6966000 (674151948288)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero
> PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6
> ==7299==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7299==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc64720000; bottom 0x7f64605fe000; size: 0x009804122000 (652903325696)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low
> ---
> PASS 32 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive1
> PASS 33 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive2
> PASS 34 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive3
> ==7305==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 35 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain1
> PASS 36 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain2
> PASS 37 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingca
> PASS 38 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingserver
> PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession"
> ==7305==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff6cc4c000; bottom 0x7f56a17fe000; size: 0x00a8cb44e000 (724964794368)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high
> PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk
> ==7315==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7315==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc227fc000; bottom 0x7f83a1ffe000; size: 0x0078807fe000 (517551939584)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca
> ---
> PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero
> PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1
> PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2
> ==7321==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3
> ==7321==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff81f6d000; bottom 0x7f44809fe000; size: 0x00bb0156f000 (803181359104)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low
> PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4
> ==7327==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7327==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffe5714000; bottom 0x7fad17dfe000; size: 0x0052cd916000 (355636174848)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high
> PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5
> ==7333==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero
> ==7339==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6
> PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low
> ==7345==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1
> PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high
> PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2
> ==7351==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7351==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcf3a3b000; bottom 0x7f3c985fe000; size: 0x00c05b43d000 (826164891648)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3
> PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero
> PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4
> PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5
> ==7357==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7357==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdcaf2c000; bottom 0x7f5027dfe000; size: 0x00ada312e000 (745765265408)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low
> PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6
> ==7363==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7363==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffffd000000; bottom 0x7f21b2ffe000; size: 0x00de4a002000 (954724261888)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high
> PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga"
> ==7369==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7369==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffef2970000; bottom 0x7f88655fe000; size: 0x00768d372000 (509175341056)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero
> ---
> PASS 6 test-qga /qga/get-vcpus
> PASS 7 test-qga /qga/get-fsinfo
> PASS 8 test-qga /qga/get-memory-block-info
> ==7383==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 9 test-qga /qga/get-memory-blocks
> PASS 10 test-qga /qga/file-ops
> PASS 11 test-qga /qga/file-write-read
> ---
> PASS 15 test-qga /qga/invalid-cmd
> PASS 16 test-qga /qga/invalid-args
> PASS 17 test-qga /qga/fsfreeze-status
> ==7383==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd9e89e000; bottom 0x7fbbaaffe000; size: 0x0041f38a0000 (283258781696)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low
> ==7392==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7392==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeae63d000; bottom 0x7f5c7b7fe000; size: 0x00a232e3f000 (696638500864)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high
> ---
> PASS 19 test-qga /qga/config
> PASS 20 test-qga /qga/guest-exec
> PASS 21 test-qga /qga/guest-exec-invalid
> ==7398==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7398==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffe5b49000; bottom 0x7fd2477fe000; size: 0x002d9e34b000 (195927781376)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero
> ---
> PASS 24 test-qga /qga/guest-get-timezone
> PASS 25 test-qga /qga/guest-get-users
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-timed-average -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-timed-average"
> ==7416==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-timed-average /timed-average/average
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-util-filemonitor -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-filemonitor"
> ==7416==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe3805e000; bottom 0x7fe46437c000; size: 0x0019d3ce2000 (110927683584)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 1 test-util-filemonitor /util/filemonitor
> ---
> PASS 5 test-authz-list /auth/list/explicit/deny
> PASS 6 test-authz-list /auth/list/explicit/allow
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-authz-listfile -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-authz-listfile"
> ==7436==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-authz-listfile /auth/list/complex
> PASS 2 test-authz-listfile /auth/list/default/deny
> PASS 3 test-authz-listfile /auth/list/default/allow
> PASS 4 test-authz-listfile /auth/list/explicit/deny
> PASS 5 test-authz-listfile /auth/list/explicit/allow
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-task -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-task"
> ==7436==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc0b00a000; bottom 0x7f6e47b24000; size: 0x008dc34e6000 (608867082240)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 1 test-io-task /crypto/task/complete
> ---
> PASS 4 test-io-channel-file /io/channel/pipe/sync
> PASS 5 test-io-channel-file /io/channel/pipe/async
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-tls -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-tls"
> ==7503==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero
> PASS 1 test-io-channel-tls /qio/channel/tls/basic
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-command -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-command"
> ---
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-buffer -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-buffer"
> PASS 1 test-io-channel-buffer /io/channel/buf
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-base64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-base64"
> ==7522==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-base64 /util/base64/good
> PASS 2 test-base64 /util/base64/embedded-nul
> PASS 3 test-base64 /util/base64/not-nul-terminated
> ---
> PASS 3 test-crypto-afsplit /crypto/afsplit/sha256/big
> PASS 4 test-crypto-afsplit /crypto/afsplit/sha1/1000
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-xts -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-xts"
> ==7547==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-crypto-xts /crypto/xts/t-1-key-32-ptx-32/basic
> PASS 2 test-crypto-xts /crypto/xts/t-1-key-32-ptx-32/split
> PASS 3 test-crypto-xts /crypto/xts/t-1-key-32-ptx-32/unaligned
> ---
> PASS 3 test-logging /logging/logfile_write_path
> PASS 4 test-logging /logging/logfile_lock_path
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication"
> ==7572==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7568==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 1 test-replication /replication/primary/read
> PASS 2 test-replication /replication/primary/write
> PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented
> ==7580==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 3 test-replication /replication/primary/start
> PASS 4 test-replication /replication/primary/stop
> PASS 5 test-replication /replication/primary/do_checkpoint
> PASS 6 test-replication /replication/primary/get_error_all
> PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry
> ==7586==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 7 test-replication /replication/secondary/read
> PASS 35 ahci-test /x86_64/ahci/io/dma/lba28/simple/zero
> ==7592==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 8 test-replication /replication/secondary/write
> PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low
> ==7598==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high
> ==7604==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero
> ==7611==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7572==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff0833c000; bottom 0x7f0912b5b000; size: 0x00f5f57e1000 (1056385667072)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low
> ==7632==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 9 test-replication /replication/secondary/start
> PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high
> ==7638==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7638==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc7cf43000; bottom 0x7f5f3bf7b000; size: 0x009d40fc8000 (675400155136)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero
> ==7645==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7645==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeeffac000; bottom 0x7f25ed57b000; size: 0x00d902a31000 (932052144128)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low
> PASS 10 test-replication /replication/secondary/stop
> ==7653==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7653==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcc3883000; bottom 0x7f6c5af23000; size: 0x009068960000 (620229951488)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high
> ==7660==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero
> ==7666==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low
> PASS 11 test-replication /replication/secondary/continuous_replication
> ==7672==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high
> ==7678==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero
> ==7684==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 12 test-replication /replication/secondary/do_checkpoint
> PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low
> ==7690==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 13 test-replication /replication/secondary/get_error_all
> PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero"
> ==7696==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero
> ==7705==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low
> ==7711==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high
> ==7717==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7717==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc31157000; bottom 0x7faabaf23000; size: 0x005176234000 (349874372608)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero
> ==7724==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7724==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe83130000; bottom 0x7f6ac49fd000; size: 0x0093be733000 (634555412480)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low
> ==7731==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7731==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffaec42000; bottom 0x7f0618123000; size: 0x00f996b1f000 (1071975100416)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high
> ==7738==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero
> ==7744==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low
> ==7750==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high
> ==7756==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 59 ahci-test /x86_64/ahci/io/ncq/simple
> ==7762==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 60 ahci-test /x86_64/ahci/io/ncq/retry
> ==7768==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 61 ahci-test /x86_64/ahci/flush/simple
> ==7774==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 62 ahci-test /x86_64/ahci/flush/retry
> ==7780==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7786==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 63 ahci-test /x86_64/ahci/flush/migrate
> ==7794==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7800==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 64 ahci-test /x86_64/ahci/migrate/sanity
> ==7808==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7814==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple
> ==7822==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7828==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted
> ==7836==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7842==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple
> ==7850==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7856==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted
> ==7864==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 69 ahci-test /x86_64/ahci/cdrom/eject
> ==7869==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single
> ==7875==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi
> PASS 1 test-bufferiszero /cutils/bufferiszero
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-uuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-uuid"
> ==7881==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single
> PASS 1 test-uuid /uuid/is_null
> PASS 2 test-uuid /uuid/generate
> ---
> PASS 1 test-qapi-util /qapi/util/qapi_enum_parse
> PASS 2 test-qapi-util /qapi/util/parse_qapi_name
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qgraph -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qgraph"
> ==7890==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7890==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffff9df0000; bottom 0x7f72e9fba000; size: 0x008d0fe36000 (605856948224)
> False positive error reports may follow
> For details see https://urldefense.com/v3/__https://github.com/google/sanitizers/issues/189__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnViceiqsExY$
> PASS 1 test-qgraph /qgraph/init_nop
> ---
> PASS 22 test-qgraph /qgraph/test_test_in_path
> PASS 23 test-qgraph /qgraph/test_double_edge
> PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi
> ==7906==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test"
> PASS 1 hd-geo-test /x86_64/hd-geo/ide/none
> ==7920==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0
> ==7926==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank
> ==7932==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba
> ==7938==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs
> ==7944==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank
> ==7950==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba
> ==7956==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs
> ==7962==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs
> ==7967==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst
> ==7973==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7977==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7981==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7985==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7989==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7993==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==7997==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8001==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8004==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 11 hd-geo-test /x86_64/hd-geo/override/ide
> ==8011==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8015==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8019==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8023==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8027==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8031==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8035==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8039==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8042==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 12 hd-geo-test /x86_64/hd-geo/override/scsi
> ==8049==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8053==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8057==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8061==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8065==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8069==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8073==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8077==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8080==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 13 hd-geo-test /x86_64/hd-geo/override/scsi_2_controllers
> ==8087==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8091==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8095==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8099==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8102==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 14 hd-geo-test /x86_64/hd-geo/override/virtio_blk
> ==8109==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8113==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8116==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 15 hd-geo-test /x86_64/hd-geo/override/zero_chs
> ==8123==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8127==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8131==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8135==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8138==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 16 hd-geo-test /x86_64/hd-geo/override/scsi_hot_unplug
> ==8145==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8149==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8153==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8157==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> ==8160==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 17 hd-geo-test /x86_64/hd-geo/override/virtio_hot_unplug
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test"
> PASS 1 boot-order-test /x86_64/boot-order/pc
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8229==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP'
> Using expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8235==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP'
> Using expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8241==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP.bridge'
> Looking for expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8247==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs'
> Looking for expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8253==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP.cphp'
> Looking for expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8260==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP.memhp'
> Looking for expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8266==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP.numamem'
> Looking for expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8272==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm'
> Looking for expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8281==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/pc/FACP.acpihmat'
> Looking for expected file 'tests/data/acpi/pc/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8288==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.bridge'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8294==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.mmio64'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8300==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8306==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.cphp'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8313==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.memhp'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8319==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.numamem'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8325==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> Could not access KVM kernel module: No such file or directory
> qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
> qemu-system-x86_64: falling back to tcg
> ==8334==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
>
> Looking for expected file 'tests/data/acpi/q35/FACP.acpihmat'
> Looking for expected file 'tests/data/acpi/q35/FACP'
> ---
> PASS 1 i440fx-test /x86_64/i440fx/defaults
> PASS 2 i440fx-test /x86_64/i440fx/pam
> PASS 3 i440fx-test /x86_64/i440fx/firmware/bios
> ==8426==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test"
> PASS 1 fw_cfg-test /x86_64/fw_cfg/signature
> ---
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test"
> PASS 1 drive_del-test /x86_64/drive_del/without-dev
> PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add
> ==8519==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
> PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test"
> PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause
> ---
> dbus-daemon[8689]: Could not get password database information for UID of current process: User "???" unknown or no memory to allocate password entry
>
> **
> ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
> cleaning up pid 8689
> ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
> make: *** [/tmp/qemu-test/src/tests/Makefile.include:632: check-qtest-x86_64] Error 1
> make: *** Waiting for unfinished jobs....
> Traceback (most recent call last):
>    File "./tests/docker/docker.py", line 664, in <module>
> ---
>      raise CalledProcessError(retcode, cmd)
> subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=7b3f2786458443e69818e5382692a70b', '-u', '1003', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=x86_64-softmmu', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew2/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-25lfez9y/src/docker-src.2020-03-09-20.27.01.14215:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-debug']' returned non-zero exit status 2.
> filter=--filter=label=com.qemu.instance.uuid=7b3f2786458443e69818e5382692a70b
> make[1]: *** [docker-run] Error 1
> make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-25lfez9y/src'
> make: *** [docker-run-test-debug@fedora] Error 2
>
> real    26m57.844s
> user    0m8.803s
>
>
> The full log is available at
> https://urldefense.com/v3/__http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.asan/?type=message__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnVicvfj4wMY$ .
> ---
> Email generated automatically by Patchew [https://urldefense.com/v3/__https://patchew.org/__;!!GqivPVa7Brio!N5car8IBDE_QFIGGfZAaPfF3gc3sv_CIDltJvgI8K5bvOLgPcGxKnVicsceQOUQ$ ].
> Please send your feedback to patchew-devel@redhat.com


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (16 preceding siblings ...)
  2020-03-10  0:54 ` no-reply
@ 2020-03-10  1:10 ` no-reply
  2020-03-10  1:49 ` no-reply
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  1:10 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
Message-id: 20200309235411.76587-1-liran.alon@oracle.com
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Switched to a new branch 'test'
a905012 hw/i386/vmport: Assert vmport initialized before registering commands
aad4359 hw/i386/vmport: Add support for CMD_GETHZ
3edb9da i386/cpu: Store LAPIC bus frequency in CPU structure
b72a3e0 hw/i386/vmport: Allow x2apic without IR
7504676 hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
79d0a3f hw/i386/vmport: Add support for CMD_GETTIMEFULL
0d6e6b1 hw/i386/vmport: Add support for CMD_GETTIME
805b514 hw/i386/vmport: Add support for CMD_GETBIOSUUID
8271871 hw/i386/vmport: Define enum for all commands
9266505 hw/i386/vmport: Report VMX type in CMD_GETVERSION
7e250cd hw/i386/vmport: Introduce vmx-version property
b57af82 hw/i386/vmport: Add device properties
db12fa9 hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
8eab8de hw/i386/vmport: Propagate IOPort read to vCPU EAX register

=== OUTPUT BEGIN ===
1/14 Checking commit 8eab8ded095b (hw/i386/vmport: Propagate IOPort read to vCPU EAX register)
2/14 Checking commit db12fa95ba3b (hw/i386/vmport: Set EAX to -1 on failed and unsupported commands)
3/14 Checking commit b57af82026fc (hw/i386/vmport: Add device properties)
4/14 Checking commit 7e250cdab468 (hw/i386/vmport: Introduce vmx-version property)
5/14 Checking commit 9266505822e8 (hw/i386/vmport: Report VMX type in CMD_GETVERSION)
6/14 Checking commit 82718710613d (hw/i386/vmport: Define enum for all commands)
7/14 Checking commit 805b5146d2ea (hw/i386/vmport: Add support for CMD_GETBIOSUUID)
ERROR: "(foo*)" should be "(foo *)"
#33: FILE: hw/i386/vmport.c:128:
+    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);

total: 1 errors, 0 warnings, 39 lines checked

Patch 7/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

8/14 Checking commit 0d6e6b1b6230 (hw/i386/vmport: Add support for CMD_GETTIME)
9/14 Checking commit 79d0a3f89d9c (hw/i386/vmport: Add support for CMD_GETTIMEFULL)
10/14 Checking commit 75046767a647 (hw/i386/vmport: Add support for CMD_GET_VCPU_INFO)
ERROR: return is not a function, parentheses are not required
#41: FILE: hw/i386/vmport.c:185:
+    return (1 << VCPU_INFO_RESERVED_BIT);

total: 1 errors, 0 warnings, 38 lines checked

Patch 10/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

11/14 Checking commit b72a3e03d26d (hw/i386/vmport: Allow x2apic without IR)
12/14 Checking commit 3edb9da71251 (i386/cpu: Store LAPIC bus frequency in CPU structure)
13/14 Checking commit aad435930bec (hw/i386/vmport: Add support for CMD_GETHZ)
14/14 Checking commit a9050129b333 (hw/i386/vmport: Assert vmport initialized before registering commands)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (17 preceding siblings ...)
  2020-03-10  1:10 ` no-reply
@ 2020-03-10  1:49 ` no-reply
  2020-03-10  1:50 ` no-reply
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  1:49 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
Message-id: 20200309235411.76587-1-liran.alon@oracle.com
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
df39962 hw/i386/vmport: Assert vmport initialized before registering commands
3e26c93 hw/i386/vmport: Add support for CMD_GETHZ
1104ba2 i386/cpu: Store LAPIC bus frequency in CPU structure
a07269e hw/i386/vmport: Allow x2apic without IR
9cb233c hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
b2753ce hw/i386/vmport: Add support for CMD_GETTIMEFULL
8f1b2dd hw/i386/vmport: Add support for CMD_GETTIME
e8bda24 hw/i386/vmport: Add support for CMD_GETBIOSUUID
3164756 hw/i386/vmport: Define enum for all commands
1936d4d hw/i386/vmport: Report VMX type in CMD_GETVERSION
ae1085f hw/i386/vmport: Introduce vmx-version property
a035d7a hw/i386/vmport: Add device properties
22e9fa5 hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
b6e0ed2 hw/i386/vmport: Propagate IOPort read to vCPU EAX register

=== OUTPUT BEGIN ===
1/14 Checking commit b6e0ed2af9c7 (hw/i386/vmport: Propagate IOPort read to vCPU EAX register)
2/14 Checking commit 22e9fa57d34e (hw/i386/vmport: Set EAX to -1 on failed and unsupported commands)
3/14 Checking commit a035d7ae1b0c (hw/i386/vmport: Add device properties)
4/14 Checking commit ae1085ff7507 (hw/i386/vmport: Introduce vmx-version property)
5/14 Checking commit 1936d4d49f3f (hw/i386/vmport: Report VMX type in CMD_GETVERSION)
6/14 Checking commit 316475662bbc (hw/i386/vmport: Define enum for all commands)
7/14 Checking commit e8bda2444824 (hw/i386/vmport: Add support for CMD_GETBIOSUUID)
ERROR: "(foo*)" should be "(foo *)"
#33: FILE: hw/i386/vmport.c:128:
+    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);

total: 1 errors, 0 warnings, 39 lines checked

Patch 7/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

8/14 Checking commit 8f1b2ddcfe39 (hw/i386/vmport: Add support for CMD_GETTIME)
9/14 Checking commit b2753ce908ed (hw/i386/vmport: Add support for CMD_GETTIMEFULL)
10/14 Checking commit 9cb233c214ea (hw/i386/vmport: Add support for CMD_GET_VCPU_INFO)
ERROR: return is not a function, parentheses are not required
#41: FILE: hw/i386/vmport.c:185:
+    return (1 << VCPU_INFO_RESERVED_BIT);

total: 1 errors, 0 warnings, 38 lines checked

Patch 10/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

11/14 Checking commit a07269e3c600 (hw/i386/vmport: Allow x2apic without IR)
12/14 Checking commit 1104ba291496 (i386/cpu: Store LAPIC bus frequency in CPU structure)
13/14 Checking commit 3e26c9393aef (hw/i386/vmport: Add support for CMD_GETHZ)
14/14 Checking commit df39962e3458 (hw/i386/vmport: Assert vmport initialized before registering commands)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (18 preceding siblings ...)
  2020-03-10  1:49 ` no-reply
@ 2020-03-10  1:50 ` no-reply
  2020-03-10  2:04 ` no-reply
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  1:50 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
export ARCH=x86_64
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===

PASS 1 fdc-test /x86_64/fdc/cmos
PASS 2 fdc-test /x86_64/fdc/no_media_on_start
PASS 3 fdc-test /x86_64/fdc/read_without_media
==6149==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-clone-visitor /visitor/clone/struct
PASS 2 test-clone-visitor /visitor/clone/alternate
PASS 3 test-clone-visitor /visitor/clone/list_union
---
PASS 32 test-opts-visitor /visitor/opts/range/beyond
PASS 33 test-opts-visitor /visitor/opts/dict/unvisited
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" 
==6191==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6191==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc33232000; bottom 0x7fb21c920000; size: 0x004a16912000 (318206189568)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-coroutine /basic/no-dangling-access
---
PASS 13 test-aio /aio/event/wait/no-flush-cb
PASS 11 fdc-test /x86_64/fdc/read_no_dma_18
PASS 14 test-aio /aio/timer/schedule
==6206==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 test-aio /aio/coroutine/queue-chaining
PASS 16 test-aio /aio-gsource/flush
PASS 17 test-aio /aio-gsource/bh/schedule
---
PASS 27 test-aio /aio-gsource/event/wait/no-flush-cb
PASS 28 test-aio /aio-gsource/timer/schedule
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" 
==6211==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-aio-multithread /aio/multi/lifecycle
PASS 2 test-aio-multithread /aio/multi/schedule
PASS 12 fdc-test /x86_64/fdc/read_no_dma_19
PASS 13 fdc-test /x86_64/fdc/fuzz-registers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" 
PASS 3 test-aio-multithread /aio/multi/mutex/contended
==6233==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ide-test /x86_64/ide/identify
==6244==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ide-test /x86_64/ide/flush
==6250==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ide-test /x86_64/ide/bmdma/simple_rw
==6256==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ide-test /x86_64/ide/bmdma/trim
==6262==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 test-aio-multithread /aio/multi/mutex/handoff
PASS 5 test-aio-multithread /aio/multi/mutex/mcs
PASS 6 test-aio-multithread /aio/multi/mutex/pthread
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" 
==6279==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-throttle /throttle/leak_bucket
PASS 2 test-throttle /throttle/compute_wait
PASS 3 test-throttle /throttle/init
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" 
PASS 1 test-thread-pool /thread-pool/submit
PASS 2 test-thread-pool /thread-pool/submit-aio
==6283==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-thread-pool /thread-pool/submit-co
PASS 4 test-thread-pool /thread-pool/submit-many
PASS 5 test-thread-pool /thread-pool/cancel
==6350==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 test-thread-pool /thread-pool/cancel-async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-hbitmap -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-hbitmap" 
PASS 1 test-hbitmap /hbitmap/granularity
---
PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium
PASS 29 test-hbitmap /hbitmap/truncate/shrink/large
PASS 30 test-hbitmap /hbitmap/meta/zero
==6360==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 test-hbitmap /hbitmap/meta/one
PASS 32 test-hbitmap /hbitmap/meta/byte
PASS 33 test-hbitmap /hbitmap/meta/word
PASS 34 test-hbitmap /hbitmap/meta/sector
PASS 35 test-hbitmap /hbitmap/serialize/align
==6366==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 36 test-hbitmap /hbitmap/serialize/basic
PASS 37 test-hbitmap /hbitmap/serialize/part
PASS 38 test-hbitmap /hbitmap/serialize/zeroes
---
PASS 44 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4
PASS 45 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_after_truncate
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" 
==6373==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-drain /bdrv-drain/nested
PASS 2 test-bdrv-drain /bdrv-drain/multiparent
PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context
---
PASS 41 test-bdrv-drain /bdrv-drain/bdrv_drop_intermediate/poll
PASS 42 test-bdrv-drain /bdrv-drain/replace_child/mid-drain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod" 
==6412==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree
PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob" 
==6416==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob /blockjob/ids
PASS 2 test-blockjob /blockjob/cancel/created
PASS 3 test-blockjob /blockjob/cancel/running
---
PASS 7 test-blockjob /blockjob/cancel/pending
PASS 8 test-blockjob /blockjob/cancel/concluded
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn" 
==6420==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob-txn /single/success
PASS 2 test-blockjob-txn /single/failure
PASS 3 test-blockjob-txn /single/cancel
---
PASS 6 test-blockjob-txn /pair/cancel
PASS 7 test-blockjob-txn /pair/fail-cancel-race
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend" 
==6424==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-backend /block-backend/drain_aio_error
PASS 2 test-block-backend /block-backend/drain_all_aio_error
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread" 
==6428==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-iothread /sync-op/pread
PASS 2 test-block-iothread /sync-op/pwrite
PASS 3 test-block-iothread /sync-op/load_vmstate
---
PASS 15 test-block-iothread /propagate/diamond
PASS 16 test-block-iothread /propagate/mirror
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking" 
==6448==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-image-locking /image-locking/basic
PASS 2 test-image-locking /image-locking/set-perm-abort
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid" 
---
PASS 9 test-int128 /int128/int128_gt
PASS 10 test-int128 /int128/int128_rshift
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/rcutorture -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="rcutorture" 
==6473==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 rcutorture /rcu/torture/1reader
PASS 2 rcutorture /rcu/torture/10readers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list" 
PASS 1 test-rcu-list /rcu/qlist/single-threaded
PASS 2 test-rcu-list /rcu/qlist/short-few
==6539==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-rcu-list /rcu/qlist/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-simpleq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-simpleq" 
PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded
---
PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" 
PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded
==6584==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 test-rcu-tailq /rcu/qtailq/short-few
PASS 3 test-rcu-tailq /rcu/qtailq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-slist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-slist" 
PASS 1 test-rcu-slist /rcu/qslist/single-threaded
PASS 2 test-rcu-slist /rcu/qslist/short-few
==6629==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-rcu-slist /rcu/qslist/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qdist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdist" 
PASS 1 test-qdist /qdist/none
---
PASS 7 test-qdist /qdist/binning/expand
PASS 8 test-qdist /qdist/binning/shrink
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht" 
==6663==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 ide-test /x86_64/ide/bmdma/various_prdts
==6669==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6669==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe96e20000; bottom 0x7eff2b9fe000; size: 0x00ff6b422000 (1097016156160)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 6 ide-test /x86_64/ide/bmdma/no_busmaster
PASS 7 ide-test /x86_64/ide/flush/nodev
==6680==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 ide-test /x86_64/ide/flush/empty_drive
==6685==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 ide-test /x86_64/ide/flush/retry_pci
==6691==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 ide-test /x86_64/ide/flush/retry_isa
==6697==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 ide-test /x86_64/ide/cdrom/pio
==6703==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-qht /qht/mode/default
PASS 2 test-qht /qht/mode/resize
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par" 
PASS 12 ide-test /x86_64/ide/cdrom/pio_large
==6712==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 ide-test /x86_64/ide/cdrom/dma
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" 
PASS 1 test-qht-par /qht/parallel/2threads-0%updates-1s
==6738==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ahci-test /x86_64/ahci/sanity
PASS 2 test-qht-par /qht/parallel/2threads-20%updates-1s
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bitops -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitops" 
---
PASS 5 test-bitops /bitops/half_unshuffle32
PASS 6 test-bitops /bitops/half_unshuffle64
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bitcnt -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitcnt" 
==6744==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bitcnt /bitcnt/ctpop8
PASS 2 test-bitcnt /bitcnt/ctpop16
PASS 3 test-bitcnt /bitcnt/ctpop32
---
PASS 1 check-qom-interface /qom/interface/direct_impl
PASS 2 check-qom-interface /qom/interface/intermediate_impl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/check-qom-proplist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="check-qom-proplist" 
==6762==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 check-qom-proplist /qom/proplist/createlist
PASS 2 check-qom-proplist /qom/proplist/createv
PASS 3 check-qom-proplist /qom/proplist/createcmdline
---
PASS 18 test-qemu-opts /qemu-opts/to_qdict/filtered
PASS 19 test-qemu-opts /qemu-opts/to_qdict/duplicates
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-keyval -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-keyval" 
==6788==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-keyval /keyval/keyval_parse
PASS 2 test-keyval /keyval/keyval_parse/list
PASS 3 test-keyval /keyval/visit/bool
---
PASS 3 test-crypto-hmac /crypto/hmac/prealloc
PASS 4 test-crypto-hmac /crypto/hmac/digest
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-cipher -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-cipher" 
==6806==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-cipher /crypto/cipher/aes-ecb-128
PASS 2 test-crypto-cipher /crypto/cipher/aes-ecb-192
PASS 3 test-crypto-cipher /crypto/cipher/aes-ecb-256
---
PASS 15 test-crypto-secret /crypto/secret/crypt/missingiv
PASS 16 test-crypto-secret /crypto/secret/crypt/badiv
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlscredsx509 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlscredsx509" 
==6824==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 ahci-test /x86_64/ahci/identify
==6834==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver
PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient
PASS 7 ahci-test /x86_64/ahci/max
PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1
==6840==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 ahci-test /x86_64/ahci/reset
PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2
PASS 5 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca3
PASS 6 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca1
PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2
PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3
==6846==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1
==6846==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc76f06000; bottom 0x7fec437fe000; size: 0x001033708000 (69582487552)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero
PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2
==6852==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6852==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffba687000; bottom 0x7fed837fe000; size: 0x001236e89000 (78230622208)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3
PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low
==6858==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6858==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffff63cc000; bottom 0x7f3ce5bfe000; size: 0x00c3107ce000 (837795241984)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high
PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4
PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5
==6864==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6864==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff50130000; bottom 0x7f3a377fe000; size: 0x00c518932000 (846520852480)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero
PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6
==6870==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver7
PASS 16 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badserver1
PASS 17 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badserver2
---
PASS 32 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive1
PASS 33 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive2
PASS 34 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive3
==6870==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcde642000; bottom 0x7f72d77fe000; size: 0x008a06e44000 (592821108736)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low
---
PASS 38 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingserver
PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession" 
==6876==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6876==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff091ca000; bottom 0x7f8ec27fe000; size: 0x0070469cc000 (482221015040)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high
PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk
==6886==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6886==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc04aec000; bottom 0x7f59d35fe000; size: 0x00a2314ee000 (696611954688)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero
PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca
==6892==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-crypto-tlssession /qcrypto/tlssession/differentca
==6892==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdcfbab000; bottom 0x7f24adbfe000; size: 0x00d921fad000 (932577988608)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low
PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1
PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2
==6898==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3
==6898==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc44c66000; bottom 0x7f48985fe000; size: 0x00b3ac668000 (771691544576)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high
PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4
PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5
==6904==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero
==6910==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6
PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low
PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1
PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2
==6916==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high
==6922==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3
==6922==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd3b6ed000; bottom 0x7f2f32ffe000; size: 0x00ce086ef000 (884904751104)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero
PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4
==6928==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6928==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd0f2bf000; bottom 0x7fd6841fe000; size: 0x00268b0c1000 (165541580800)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low
PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5
==6934==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6
==6934==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffee6a65000; bottom 0x7fa46c1fe000; size: 0x005a7a867000 (388602687488)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high
PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga" 
==6940==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6940==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff59af5000; bottom 0x7ff723ffe000; size: 0x000835af7000 (35260428288)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero
==6954==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6954==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffffcd54000; bottom 0x7f9c0d5fe000; size: 0x0063ef756000 (429219209216)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-qga /qga/sync-delimited
---
PASS 15 test-qga /qga/invalid-cmd
PASS 16 test-qga /qga/invalid-args
PASS 17 test-qga /qga/fsfreeze-status
==6960==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6960==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcb6999000; bottom 0x7f9bb57fe000; size: 0x00610119b000 (416630288384)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high
---
PASS 19 test-qga /qga/config
PASS 20 test-qga /qga/guest-exec
PASS 21 test-qga /qga/guest-exec-invalid
==6969==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6969==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff0cbb0000; bottom 0x7f83f75fe000; size: 0x007b155b2000 (528639270912)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero
---
PASS 24 test-qga /qga/guest-get-timezone
PASS 25 test-qga /qga/guest-get-users
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-timed-average -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-timed-average" 
==6987==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-timed-average /timed-average/average
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-util-filemonitor -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-filemonitor" 
==6987==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcbf7bd000; bottom 0x7faeee57c000; size: 0x004dd1241000 (334221283328)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-util-filemonitor /util/filemonitor
---
PASS 5 test-authz-list /auth/list/explicit/deny
PASS 6 test-authz-list /auth/list/explicit/allow
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-authz-listfile -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-authz-listfile" 
==7011==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-authz-listfile /auth/list/complex
PASS 2 test-authz-listfile /auth/list/default/deny
PASS 3 test-authz-listfile /auth/list/default/allow
PASS 4 test-authz-listfile /auth/list/explicit/deny
PASS 5 test-authz-listfile /auth/list/explicit/allow
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-task -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-task" 
==7011==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffffe56e000; bottom 0x7fdfe357c000; size: 0x00201aff2000 (137891880960)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-io-task /crypto/task/complete
---
PASS 4 test-io-channel-file /io/channel/pipe/sync
PASS 5 test-io-channel-file /io/channel/pipe/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-tls -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-tls" 
==7074==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-io-channel-tls /qio/channel/tls/basic
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-command -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-command" 
PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero
---
PASS 4 test-io-channel-command /io/channel/command/echo/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-buffer -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-buffer" 
PASS 1 test-io-channel-buffer /io/channel/buf
==7096==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-base64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-base64" 
PASS 1 test-base64 /util/base64/good
PASS 2 test-base64 /util/base64/embedded-nul
---
PASS 8 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c
PASS 9 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c5b6a7988
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-afsplit -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-afsplit" 
==7114==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-afsplit /crypto/afsplit/sha256/5
PASS 2 test-crypto-afsplit /crypto/afsplit/sha256/5000
PASS 3 test-crypto-afsplit /crypto/afsplit/sha256/big
---
PASS 3 test-logging /logging/logfile_write_path
PASS 4 test-logging /logging/logfile_lock_path
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication" 
==7132==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7143==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented
PASS 1 test-replication /replication/primary/read
PASS 2 test-replication /replication/primary/write
==7151==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-replication /replication/primary/start
PASS 4 test-replication /replication/primary/stop
PASS 5 test-replication /replication/primary/do_checkpoint
PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry
PASS 6 test-replication /replication/primary/get_error_all
==7157==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 test-replication /replication/secondary/read
PASS 35 ahci-test /x86_64/ahci/io/dma/lba28/simple/zero
==7163==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 test-replication /replication/secondary/write
PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low
==7169==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high
==7175==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero
==7182==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7143==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff7cda9000; bottom 0x7f992b8d6000; size: 0x0066514d3000 (439450677248)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 test-replication /replication/secondary/start
PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low
==7205==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high
==7211==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7211==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff67566000; bottom 0x7fae9177b000; size: 0x0050d5deb000 (347185524736)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero
==7218==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 test-replication /replication/secondary/stop
==7218==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe0c734000; bottom 0x7fe7e397b000; size: 0x001628db9000 (95174758400)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low
==7225==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7225==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcfb6d8000; bottom 0x7f1c56d7b000; size: 0x00e0a495d000 (964833955840)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high
==7232==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero
PASS 11 test-replication /replication/secondary/continuous_replication
==7238==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low
==7244==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high
==7250==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 test-replication /replication/secondary/do_checkpoint
PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero
==7256==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 test-replication /replication/secondary/get_error_all
PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero" 
==7262==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high
==7271==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero
==7277==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low
==7283==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high
==7289==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7289==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe691d9000; bottom 0x7f44167fd000; size: 0x00ba529dc000 (800249987072)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero
==7296==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7296==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc3dd60000; bottom 0x7f7d2cb7b000; size: 0x007f111e5000 (545748045824)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low
==7303==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7303==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc9a7f6000; bottom 0x7f5fe85fd000; size: 0x009cb21f9000 (673003311104)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high
==7310==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero
==7316==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low
==7322==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high
==7328==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 59 ahci-test /x86_64/ahci/io/ncq/simple
==7334==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 60 ahci-test /x86_64/ahci/io/ncq/retry
==7340==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 61 ahci-test /x86_64/ahci/flush/simple
==7346==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 62 ahci-test /x86_64/ahci/flush/retry
==7352==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7358==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 63 ahci-test /x86_64/ahci/flush/migrate
==7366==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7372==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 64 ahci-test /x86_64/ahci/migrate/sanity
==7380==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7386==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple
==7394==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7400==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted
==7408==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7414==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple
==7422==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7428==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted
==7436==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 69 ahci-test /x86_64/ahci/cdrom/eject
==7441==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bufferiszero /cutils/bufferiszero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-uuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-uuid" 
PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single
---
PASS 527 ptimer-test /ptimer/periodic_with_load_0 policy=wrap_after_one_period,continuous_trigger,no_immediate_reload,no_counter_rounddown,trigger_only_on_decrement,
PASS 528 ptimer-test /ptimer/oneshot_with_load_0 policy=wrap_after_one_period,continuous_trigger,no_immediate_reload,no_counter_rounddown,trigger_only_on_decrement,
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qapi-util -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qapi-util" 
==7450==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi
PASS 1 test-qapi-util /qapi/util/qapi_enum_parse
PASS 2 test-qapi-util /qapi/util/parse_qapi_name
---
PASS 21 test-qgraph /qgraph/test_two_test_same_interface
PASS 22 test-qgraph /qgraph/test_test_in_path
PASS 23 test-qgraph /qgraph/test_double_edge
==7463==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single
==7472==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7472==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd22d6b000; bottom 0x7faee49fe000; size: 0x004e3e36d000 (336051228672)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi
==7478==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" 
PASS 1 hd-geo-test /x86_64/hd-geo/ide/none
==7492==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0
==7498==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank
==7504==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba
==7510==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs
==7516==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank
==7522==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba
==7528==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs
==7534==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs
==7539==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst
==7545==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7549==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7553==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7557==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7561==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7565==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7569==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7573==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7576==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 hd-geo-test /x86_64/hd-geo/override/ide
==7583==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7587==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7591==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7595==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7599==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7603==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7607==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7611==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7614==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 hd-geo-test /x86_64/hd-geo/override/scsi
==7621==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7625==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7629==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7633==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7637==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7641==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7645==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7649==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7652==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 hd-geo-test /x86_64/hd-geo/override/scsi_2_controllers
==7659==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7663==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7667==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7671==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7674==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 hd-geo-test /x86_64/hd-geo/override/virtio_blk
==7681==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7685==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7688==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 hd-geo-test /x86_64/hd-geo/override/zero_chs
==7695==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7699==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7703==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7707==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7710==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 16 hd-geo-test /x86_64/hd-geo/override/scsi_hot_unplug
==7717==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7721==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7725==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7729==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7732==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 17 hd-geo-test /x86_64/hd-geo/override/virtio_hot_unplug
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test" 
PASS 1 boot-order-test /x86_64/boot-order/pc
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7801==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP'
Using expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7807==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP'
Using expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7813==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.bridge'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7819==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7825==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.cphp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7832==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.memhp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7838==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.numamem'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7844==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7853==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7860==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.bridge'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7866==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.mmio64'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7872==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7878==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.cphp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7885==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.memhp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7891==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.numamem'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7897==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7906==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
PASS 1 i440fx-test /x86_64/i440fx/defaults
PASS 2 i440fx-test /x86_64/i440fx/pam
PASS 3 i440fx-test /x86_64/i440fx/firmware/bios
==7998==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test" 
PASS 1 fw_cfg-test /x86_64/fw_cfg/signature
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test" 
PASS 1 drive_del-test /x86_64/drive_del/without-dev
PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add
==8091==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test" 
PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause
---
dbus-daemon[8261]: Could not get password database information for UID of current process: User "???" unknown or no memory to allocate password entry

**
ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
cleaning up pid 8261
make: *** [/tmp/qemu-test/src/tests/Makefile.include:632: check-qtest-x86_64] Error 1
make: *** Waiting for unfinished jobs....
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 664, in <module>
---
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=6a04222c093c4b6aa169790ea03a5653', '-u', '1003', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=x86_64-softmmu', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew2/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-lqc3y8bx/src/docker-src.2020-03-09-21.23.14.26275:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-debug']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=6a04222c093c4b6aa169790ea03a5653
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-lqc3y8bx/src'
make: *** [docker-run-test-debug@fedora] Error 2

real    27m17.677s
user    0m8.152s


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (19 preceding siblings ...)
  2020-03-10  1:50 ` no-reply
@ 2020-03-10  2:04 ` no-reply
  2020-03-10  2:22 ` no-reply
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  2:04 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
Message-id: 20200309235411.76587-1-liran.alon@oracle.com
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
e612415 hw/i386/vmport: Assert vmport initialized before registering commands
9aad846 hw/i386/vmport: Add support for CMD_GETHZ
de3b721 i386/cpu: Store LAPIC bus frequency in CPU structure
25cba27 hw/i386/vmport: Allow x2apic without IR
f779fc6 hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
42ff7b9 hw/i386/vmport: Add support for CMD_GETTIMEFULL
1df74aa hw/i386/vmport: Add support for CMD_GETTIME
bef18ba hw/i386/vmport: Add support for CMD_GETBIOSUUID
8d00a31 hw/i386/vmport: Define enum for all commands
59dd012 hw/i386/vmport: Report VMX type in CMD_GETVERSION
9d6dcf5 hw/i386/vmport: Introduce vmx-version property
83c777e hw/i386/vmport: Add device properties
76c35fd hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
3415e5c hw/i386/vmport: Propagate IOPort read to vCPU EAX register

=== OUTPUT BEGIN ===
1/14 Checking commit 3415e5c8f2bb (hw/i386/vmport: Propagate IOPort read to vCPU EAX register)
2/14 Checking commit 76c35fd191ac (hw/i386/vmport: Set EAX to -1 on failed and unsupported commands)
3/14 Checking commit 83c777e525f3 (hw/i386/vmport: Add device properties)
4/14 Checking commit 9d6dcf5f85dc (hw/i386/vmport: Introduce vmx-version property)
5/14 Checking commit 59dd012575b6 (hw/i386/vmport: Report VMX type in CMD_GETVERSION)
6/14 Checking commit 8d00a315ff15 (hw/i386/vmport: Define enum for all commands)
7/14 Checking commit bef18baf157e (hw/i386/vmport: Add support for CMD_GETBIOSUUID)
ERROR: "(foo*)" should be "(foo *)"
#33: FILE: hw/i386/vmport.c:128:
+    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);

total: 1 errors, 0 warnings, 39 lines checked

Patch 7/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

8/14 Checking commit 1df74aaccdd2 (hw/i386/vmport: Add support for CMD_GETTIME)
9/14 Checking commit 42ff7b94f787 (hw/i386/vmport: Add support for CMD_GETTIMEFULL)
10/14 Checking commit f779fc608aac (hw/i386/vmport: Add support for CMD_GET_VCPU_INFO)
ERROR: return is not a function, parentheses are not required
#41: FILE: hw/i386/vmport.c:185:
+    return (1 << VCPU_INFO_RESERVED_BIT);

total: 1 errors, 0 warnings, 38 lines checked

Patch 10/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

11/14 Checking commit 25cba27733da (hw/i386/vmport: Allow x2apic without IR)
12/14 Checking commit de3b7215948c (i386/cpu: Store LAPIC bus frequency in CPU structure)
13/14 Checking commit 9aad8462bcc2 (hw/i386/vmport: Add support for CMD_GETHZ)
14/14 Checking commit e612415198f4 (hw/i386/vmport: Assert vmport initialized before registering commands)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (20 preceding siblings ...)
  2020-03-10  2:04 ` no-reply
@ 2020-03-10  2:22 ` no-reply
  2020-03-10  2:56 ` no-reply
  2020-03-10  2:56 ` no-reply
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  2:22 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
export ARCH=x86_64
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===

PASS 1 fdc-test /x86_64/fdc/cmos
PASS 2 fdc-test /x86_64/fdc/no_media_on_start
PASS 3 fdc-test /x86_64/fdc/read_without_media
==6129==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 fdc-test /x86_64/fdc/media_change
PASS 5 fdc-test /x86_64/fdc/sense_interrupt
PASS 6 fdc-test /x86_64/fdc/relative_seek
---
PASS 32 test-opts-visitor /visitor/opts/range/beyond
PASS 33 test-opts-visitor /visitor/opts/dict/unvisited
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" 
==6193==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6193==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc912f0000; bottom 0x7faa23580000; size: 0x00526dd70000 (354030125056)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-coroutine /basic/no-dangling-access
---
PASS 11 test-aio /aio/event/wait
PASS 12 test-aio /aio/event/flush
PASS 13 test-aio /aio/event/wait/no-flush-cb
==6208==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 test-aio /aio/timer/schedule
PASS 15 test-aio /aio/coroutine/queue-chaining
PASS 16 test-aio /aio-gsource/flush
---
PASS 12 fdc-test /x86_64/fdc/read_no_dma_19
PASS 13 fdc-test /x86_64/fdc/fuzz-registers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" 
==6216==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 28 test-aio /aio-gsource/timer/schedule
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" 
PASS 1 ide-test /x86_64/ide/identify
==6223==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-aio-multithread /aio/multi/lifecycle
==6225==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ide-test /x86_64/ide/flush
PASS 2 test-aio-multithread /aio/multi/schedule
==6242==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ide-test /x86_64/ide/bmdma/simple_rw
==6253==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ide-test /x86_64/ide/bmdma/trim
PASS 3 test-aio-multithread /aio/multi/mutex/contended
==6259==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 test-aio-multithread /aio/multi/mutex/handoff
PASS 5 test-aio-multithread /aio/multi/mutex/mcs
PASS 6 test-aio-multithread /aio/multi/mutex/pthread
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" 
==6281==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-throttle /throttle/leak_bucket
PASS 2 test-throttle /throttle/compute_wait
PASS 3 test-throttle /throttle/init
---
PASS 14 test-throttle /throttle/config/max
PASS 15 test-throttle /throttle/config/iops_size
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" 
==6285==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-thread-pool /thread-pool/submit
PASS 2 test-thread-pool /thread-pool/submit-aio
PASS 3 test-thread-pool /thread-pool/submit-co
PASS 4 test-thread-pool /thread-pool/submit-many
PASS 5 test-thread-pool /thread-pool/cancel
==6352==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 test-thread-pool /thread-pool/cancel-async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-hbitmap -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-hbitmap" 
PASS 1 test-hbitmap /hbitmap/granularity
---
PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium
PASS 29 test-hbitmap /hbitmap/truncate/shrink/large
PASS 30 test-hbitmap /hbitmap/meta/zero
==6362==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 test-hbitmap /hbitmap/meta/one
PASS 32 test-hbitmap /hbitmap/meta/byte
PASS 33 test-hbitmap /hbitmap/meta/word
---
PASS 44 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4
PASS 45 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_after_truncate
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" 
==6371==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-drain /bdrv-drain/nested
PASS 2 test-bdrv-drain /bdrv-drain/multiparent
PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context
---
PASS 28 test-bdrv-drain /bdrv-drain/blockjob/iothread/drain_all
PASS 29 test-bdrv-drain /bdrv-drain/blockjob/iothread/drain
PASS 30 test-bdrv-drain /bdrv-drain/blockjob/iothread/drain_subtree
==6368==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 test-bdrv-drain /bdrv-drain/blockjob/iothread/error/drain_all
PASS 32 test-bdrv-drain /bdrv-drain/blockjob/iothread/error/drain
PASS 33 test-bdrv-drain /bdrv-drain/blockjob/iothread/error/drain_subtree
---
PASS 41 test-bdrv-drain /bdrv-drain/bdrv_drop_intermediate/poll
PASS 42 test-bdrv-drain /bdrv-drain/replace_child/mid-drain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod" 
==6414==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree
PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob" 
==6418==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob /blockjob/ids
PASS 2 test-blockjob /blockjob/cancel/created
PASS 3 test-blockjob /blockjob/cancel/running
---
PASS 7 test-blockjob /blockjob/cancel/pending
PASS 8 test-blockjob /blockjob/cancel/concluded
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn" 
==6422==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob-txn /single/success
PASS 2 test-blockjob-txn /single/failure
PASS 3 test-blockjob-txn /single/cancel
---
PASS 6 test-blockjob-txn /pair/cancel
PASS 7 test-blockjob-txn /pair/fail-cancel-race
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend" 
==6426==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-backend /block-backend/drain_aio_error
PASS 2 test-block-backend /block-backend/drain_all_aio_error
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread" 
==6430==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-iothread /sync-op/pread
PASS 2 test-block-iothread /sync-op/pwrite
PASS 3 test-block-iothread /sync-op/load_vmstate
---
PASS 15 test-block-iothread /propagate/diamond
PASS 16 test-block-iothread /propagate/mirror
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking" 
==6450==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-image-locking /image-locking/basic
PASS 2 test-image-locking /image-locking/set-perm-abort
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid" 
---
PASS 1 rcutorture /rcu/torture/1reader
PASS 2 rcutorture /rcu/torture/10readers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list" 
==6502==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-rcu-list /rcu/qlist/single-threaded
PASS 2 test-rcu-list /rcu/qlist/short-few
PASS 3 test-rcu-list /rcu/qlist/long-many
---
PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded
PASS 2 test-rcu-simpleq /rcu/qsimpleq/short-few
PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many
==6574==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" 
PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded
PASS 2 test-rcu-tailq /rcu/qtailq/short-few
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-slist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-slist" 
PASS 1 test-rcu-slist /rcu/qslist/single-threaded
PASS 2 test-rcu-slist /rcu/qslist/short-few
==6625==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-rcu-slist /rcu/qslist/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qdist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdist" 
PASS 1 test-qdist /qdist/none
---
PASS 7 test-qdist /qdist/binning/expand
PASS 8 test-qdist /qdist/binning/shrink
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht" 
==6659==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6665==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-qht /qht/mode/default
PASS 2 test-qht /qht/mode/resize
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par" 
---
PASS 5 ide-test /x86_64/ide/bmdma/various_prdts
PASS 2 test-qht-par /qht/parallel/2threads-20%updates-1s
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bitops -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitops" 
==6686==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bitops /bitops/sextract32
PASS 2 test-bitops /bitops/sextract64
PASS 3 test-bitops /bitops/half_shuffle32
---
PASS 5 test-bitops /bitops/half_unshuffle32
PASS 6 test-bitops /bitops/half_unshuffle64
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bitcnt -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitcnt" 
==6686==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcbf31f000; bottom 0x7f34843fe000; size: 0x00c83af21000 (859982401536)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 6 ide-test /x86_64/ide/bmdma/no_busmaster
---
PASS 4 test-write-threshold /write-threshold/not-trigger
PASS 5 test-write-threshold /write-threshold/trigger
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-hash -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-hash" 
==6729==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-hash /crypto/hash/iov
PASS 2 test-crypto-hash /crypto/hash/alloc
PASS 3 test-crypto-hash /crypto/hash/prealloc
---
PASS 15 test-crypto-secret /crypto/secret/crypt/missingiv
PASS 16 test-crypto-secret /crypto/secret/crypt/badiv
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlscredsx509 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlscredsx509" 
==6750==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 ide-test /x86_64/ide/flush/retry_pci
==6768==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 ide-test /x86_64/ide/flush/retry_isa
==6774==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 ide-test /x86_64/ide/cdrom/pio
PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver
PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient
==6780==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1
PASS 12 ide-test /x86_64/ide/cdrom/pio_large
PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2
==6786==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 ide-test /x86_64/ide/cdrom/dma
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" 
PASS 5 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca3
---
PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2
PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3
PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1
==6800==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2
PASS 1 ahci-test /x86_64/ahci/sanity
==6806==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ahci-test /x86_64/ahci/pci_spec
PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3
PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4
PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5
==6812==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ahci-test /x86_64/ahci/pci_enable
PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6
==6818==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ahci-test /x86_64/ahci/hba_spec
==6824==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver7
PASS 16 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badserver1
PASS 17 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badserver2
---
PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession" 
PASS 5 ahci-test /x86_64/ahci/hba_enable
==6833==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk
PASS 6 ahci-test /x86_64/ahci/identify
==6840==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca
PASS 7 ahci-test /x86_64/ahci/max
PASS 3 test-crypto-tlssession /qcrypto/tlssession/differentca
PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1
==6846==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2
PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3
PASS 8 ahci-test /x86_64/ahci/reset
PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4
==6852==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6852==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe7cadf000; bottom 0x7f27521fe000; size: 0x00d72a8e1000 (924131921920)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero
==6858==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5
==6858==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe99f08000; bottom 0x7fa9349fe000; size: 0x00556550a000 (366772002816)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low
PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6
==6864==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6864==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd43afd000; bottom 0x7ff94c5fe000; size: 0x0003f74ff000 (17034113024)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high
==6870==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6870==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc18a94000; bottom 0x7fb4d87fe000; size: 0x004740296000 (306019131392)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero
==6876==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1
==6876==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcb7d53000; bottom 0x7f5db55fe000; size: 0x009f02755000 (682941042688)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low
PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2
PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3
==6882==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6882==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdc0d86000; bottom 0x7f5d081fe000; size: 0x00a0b8b88000 (690293866496)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high
PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4
==6888==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5
==6888==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffccf79a000; bottom 0x7f9bb43fe000; size: 0x00611b39c000 (417068597248)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6
PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero
==6894==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga" 
==6894==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe646ed000; bottom 0x7fe076f7c000; size: 0x001ded771000 (128538054656)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low
---
PASS 15 test-qga /qga/invalid-cmd
PASS 16 test-qga /qga/invalid-args
PASS 17 test-qga /qga/fsfreeze-status
==6908==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6908==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff5934b000; bottom 0x7f1c53ffe000; size: 0x00e30534d000 (975044923392)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 18 test-qga /qga/blacklist
---
PASS 19 test-qga /qga/config
PASS 20 test-qga /qga/guest-exec
PASS 21 test-qga /qga/guest-exec-invalid
==6919==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero
PASS 22 test-qga /qga/guest-get-osinfo
PASS 23 test-qga /qga/guest-get-host-name
PASS 24 test-qga /qga/guest-get-timezone
PASS 25 test-qga /qga/guest-get-users
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-timed-average -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-timed-average" 
==6935==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-timed-average /timed-average/average
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-util-filemonitor -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-filemonitor" 
PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low
---
PASS 7 test-util-sockets /socket/fd-pass/num/bad
PASS 8 test-util-sockets /socket/fd-pass/num/nocli
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-authz-simple -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-authz-simple" 
==6951==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-authz-simple /authz/simple
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-authz-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-authz-list" 
PASS 1 test-authz-list /auth/list/complex
---
PASS 4 test-io-channel-file /io/channel/pipe/sync
PASS 5 test-io-channel-file /io/channel/pipe/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-tls -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-tls" 
==6979==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6979==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc53134000; bottom 0x7f4effdfe000; size: 0x00ad53336000 (744425218048)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero
---
PASS 3 test-io-channel-command /io/channel/command/echo/sync
PASS 4 test-io-channel-command /io/channel/command/echo/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-buffer -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-buffer" 
==7039==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7039==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdfe97b000; bottom 0x7ff11a3fe000; size: 0x000ce457d000 (55370567680)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-io-channel-buffer /io/channel/buf
---
PASS 7 test-crypto-ivgen /crypto/ivgen/essiv/1
PASS 8 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c
PASS 9 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c5b6a7988
==7058==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-afsplit -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-afsplit" 
==7058==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff2f86e000; bottom 0x7fb55b5fe000; size: 0x0049d4270000 (317091938304)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-crypto-afsplit /crypto/afsplit/sha256/5
---
PASS 3 test-logging /logging/logfile_write_path
PASS 4 test-logging /logging/logfile_lock_path
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication" 
==7080==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7091==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7080==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe7d1ec000; bottom 0x7fd79fbfe000; size: 0x0026dd5ee000 (166922739712)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero
PASS 1 test-replication /replication/primary/read
PASS 2 test-replication /replication/primary/write
==7099==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7099==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffac520000; bottom 0x7f85d89fe000; size: 0x0079d3b22000 (523242708992)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 3 test-replication /replication/primary/start
---
PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low
PASS 5 test-replication /replication/primary/do_checkpoint
PASS 6 test-replication /replication/primary/get_error_all
==7105==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7105==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff5b019000; bottom 0x7f43627fe000; size: 0x00bbf881b000 (807328133120)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 7 test-replication /replication/secondary/read
PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high
==7111==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7111==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeade60000; bottom 0x7fce63124000; size: 0x00304ad3c000 (207413821440)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 8 test-replication /replication/secondary/write
PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero
==7117==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7117==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc5ad87000; bottom 0x7ffa6db7c000; size: 0x0001ed20b000 (8273309696)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 28 ahci-test /x86_64/ahci/io/pio/lba48/long/low
==7124==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7124==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffec34ba000; bottom 0x7f0e901fe000; size: 0x00f0332bc000 (1031650656256)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
==7091==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd5287e000; bottom 0x7f144ee61000; size: 0x00e903a1d000 (1000788316160)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 test-replication /replication/secondary/start
PASS 29 ahci-test /x86_64/ahci/io/pio/lba48/long/high
==7147==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero
==7153==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 ahci-test /x86_64/ahci/io/pio/lba48/short/low
==7159==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 32 ahci-test /x86_64/ahci/io/pio/lba48/short/high
PASS 10 test-replication /replication/secondary/stop
==7165==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented
==7171==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry
==7177==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 test-replication /replication/secondary/continuous_replication
PASS 35 ahci-test /x86_64/ahci/io/dma/lba28/simple/zero
==7183==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low
==7189==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 test-replication /replication/secondary/do_checkpoint
PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high
==7195==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 test-replication /replication/secondary/get_error_all
PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero" 
==7201==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low
==7210==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high
==7216==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7216==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffddf576000; bottom 0x7f970a5fd000; size: 0x0066d4f79000 (441659658240)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero
==7223==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7223==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdf3292000; bottom 0x7f793df23000; size: 0x0084b536f000 (569975959552)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low
==7230==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7230==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffbf3e3000; bottom 0x7f9d52923000; size: 0x00626cac0000 (422730006528)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high
==7237==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero
==7243==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low
==7249==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high
==7255==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero
==7261==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low
==7267==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high
==7273==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero
==7279==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low
==7285==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high
==7291==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7291==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc886c6000; bottom 0x7f7851d7b000; size: 0x00843694b000 (567851397120)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero
==7298==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7298==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd5f3e2000; bottom 0x7f0151b7b000; size: 0x00fc0d867000 (1082558672896)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low
==7305==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7305==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd352d1000; bottom 0x7f54b537b000; size: 0x00a87ff56000 (723701293056)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high
==7312==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero
==7318==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low
==7324==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high
==7330==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 59 ahci-test /x86_64/ahci/io/ncq/simple
==7336==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 60 ahci-test /x86_64/ahci/io/ncq/retry
==7342==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 61 ahci-test /x86_64/ahci/flush/simple
==7348==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 62 ahci-test /x86_64/ahci/flush/retry
==7354==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7360==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 63 ahci-test /x86_64/ahci/flush/migrate
==7368==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7374==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 64 ahci-test /x86_64/ahci/migrate/sanity
==7382==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bufferiszero /cutils/bufferiszero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-uuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-uuid" 
PASS 1 test-uuid /uuid/is_null
---
PASS 4 test-uuid /uuid/unparse
PASS 5 test-uuid /uuid/unparse_strdup
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/ptimer-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ptimer-test" 
==7391==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ptimer-test /ptimer/set_count policy=default
PASS 2 ptimer-test /ptimer/set_limit policy=default
PASS 3 ptimer-test /ptimer/oneshot policy=default
---
PASS 22 test-qgraph /qgraph/test_test_in_path
PASS 23 test-qgraph /qgraph/test_double_edge
PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple
==7409==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7415==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted
==7423==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7429==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple
==7437==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7443==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted
==7451==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 69 ahci-test /x86_64/ahci/cdrom/eject
==7456==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single
==7462==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi
==7468==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single
==7474==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7474==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcb6787000; bottom 0x7f80d39fe000; size: 0x007be2d89000 (532086820864)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi
==7480==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" 
PASS 1 hd-geo-test /x86_64/hd-geo/ide/none
==7494==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0
==7500==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank
==7506==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba
==7512==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs
==7518==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank
==7524==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba
==7530==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs
==7536==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs
==7541==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst
==7547==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7551==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7555==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7559==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7563==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7567==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7571==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7575==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7578==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 hd-geo-test /x86_64/hd-geo/override/ide
==7585==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7589==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7593==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7597==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7601==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7605==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7609==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7613==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7616==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 hd-geo-test /x86_64/hd-geo/override/scsi
==7623==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7627==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7631==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7635==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7639==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7643==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7647==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7651==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7654==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 hd-geo-test /x86_64/hd-geo/override/scsi_2_controllers
==7661==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7665==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7669==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7673==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7676==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 hd-geo-test /x86_64/hd-geo/override/virtio_blk
==7683==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7687==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7690==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 hd-geo-test /x86_64/hd-geo/override/zero_chs
==7697==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7701==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7705==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7709==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7712==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 16 hd-geo-test /x86_64/hd-geo/override/scsi_hot_unplug
==7719==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7723==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7727==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7731==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7734==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 17 hd-geo-test /x86_64/hd-geo/override/virtio_hot_unplug
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test" 
PASS 1 boot-order-test /x86_64/boot-order/pc
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7803==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP'
Using expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7809==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP'
Using expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7815==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.bridge'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7821==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7827==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.cphp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7834==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.memhp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7840==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.numamem'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7846==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7855==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7862==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.bridge'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7868==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.mmio64'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7874==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7880==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.cphp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7887==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.memhp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7893==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.numamem'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7899==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7908==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
PASS 1 i440fx-test /x86_64/i440fx/defaults
PASS 2 i440fx-test /x86_64/i440fx/pam
PASS 3 i440fx-test /x86_64/i440fx/firmware/bios
==8000==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test" 
PASS 1 fw_cfg-test /x86_64/fw_cfg/signature
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test" 
PASS 1 drive_del-test /x86_64/drive_del/without-dev
PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add
==8093==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test" 
PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause
---
dbus-daemon[8263]: Could not get password database information for UID of current process: User "???" unknown or no memory to allocate password entry

**
ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
cleaning up pid 8263
make: *** [/tmp/qemu-test/src/tests/Makefile.include:632: check-qtest-x86_64] Error 1
make: *** Waiting for unfinished jobs....
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 664, in <module>
---
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=701b88b919e3459fb3c8b767abeae0ab', '-u', '1003', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=x86_64-softmmu', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew2/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-nl5gjtyx/src/docker-src.2020-03-09-21.55.13.19243:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-debug']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=701b88b919e3459fb3c8b767abeae0ab
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-nl5gjtyx/src'
make: *** [docker-run-test-debug@fedora] Error 2

real    27m32.417s
user    0m8.316s


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (21 preceding siblings ...)
  2020-03-10  2:22 ` no-reply
@ 2020-03-10  2:56 ` no-reply
  2020-03-10  2:56 ` no-reply
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  2:56 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
export ARCH=x86_64
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===

PASS 1 fdc-test /x86_64/fdc/cmos
PASS 2 fdc-test /x86_64/fdc/no_media_on_start
PASS 3 fdc-test /x86_64/fdc/read_without_media
==6120==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 fdc-test /x86_64/fdc/media_change
PASS 5 fdc-test /x86_64/fdc/sense_interrupt
PASS 6 fdc-test /x86_64/fdc/relative_seek
---
PASS 33 test-opts-visitor /visitor/opts/dict/unvisited
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" 
PASS 11 fdc-test /x86_64/fdc/read_no_dma_18
==6195==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-coroutine /basic/no-dangling-access
==6195==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc61dec000; bottom 0x7f9a87484000; size: 0x0061da968000 (420279123968)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 2 test-coroutine /basic/lifecycle
---
PASS 12 fdc-test /x86_64/fdc/read_no_dma_19
PASS 13 fdc-test /x86_64/fdc/fuzz-registers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" 
==6210==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 test-aio /aio/timer/schedule
PASS 15 test-aio /aio/coroutine/queue-chaining
PASS 16 test-aio /aio-gsource/flush
---
PASS 25 test-aio /aio-gsource/event/wait
PASS 26 test-aio /aio-gsource/event/flush
PASS 27 test-aio /aio-gsource/event/wait/no-flush-cb
==6218==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ide-test /x86_64/ide/identify
==6224==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ide-test /x86_64/ide/flush
PASS 28 test-aio /aio-gsource/timer/schedule
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" 
==6233==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-aio-multithread /aio/multi/lifecycle
==6230==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ide-test /x86_64/ide/bmdma/simple_rw
PASS 2 test-aio-multithread /aio/multi/schedule
==6250==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ide-test /x86_64/ide/bmdma/trim
==6261==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-aio-multithread /aio/multi/mutex/contended
PASS 4 test-aio-multithread /aio/multi/mutex/handoff
PASS 5 test-aio-multithread /aio/multi/mutex/mcs
PASS 6 test-aio-multithread /aio/multi/mutex/pthread
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" 
==6282==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6288==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-throttle /throttle/leak_bucket
PASS 2 test-throttle /throttle/compute_wait
PASS 3 test-throttle /throttle/init
---
PASS 14 test-throttle /throttle/config/max
PASS 15 test-throttle /throttle/config/iops_size
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" 
==6293==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-thread-pool /thread-pool/submit
PASS 2 test-thread-pool /thread-pool/submit-aio
PASS 3 test-thread-pool /thread-pool/submit-co
---
PASS 10 test-hbitmap /hbitmap/set/all
PASS 11 test-hbitmap /hbitmap/set/one
PASS 12 test-hbitmap /hbitmap/set/two-elem
==6364==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 test-hbitmap /hbitmap/set/general
PASS 14 test-hbitmap /hbitmap/set/twice
PASS 15 test-hbitmap /hbitmap/set/overlap
---
PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium
PASS 29 test-hbitmap /hbitmap/truncate/shrink/large
PASS 30 test-hbitmap /hbitmap/meta/zero
==6370==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 test-hbitmap /hbitmap/meta/one
PASS 32 test-hbitmap /hbitmap/meta/byte
PASS 33 test-hbitmap /hbitmap/meta/word
---
PASS 44 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4
PASS 45 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_after_truncate
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" 
==6377==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-drain /bdrv-drain/nested
PASS 2 test-bdrv-drain /bdrv-drain/multiparent
PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context
---
PASS 41 test-bdrv-drain /bdrv-drain/bdrv_drop_intermediate/poll
PASS 42 test-bdrv-drain /bdrv-drain/replace_child/mid-drain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod" 
==6416==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree
PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob" 
==6420==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob /blockjob/ids
PASS 2 test-blockjob /blockjob/cancel/created
PASS 3 test-blockjob /blockjob/cancel/running
---
PASS 7 test-blockjob /blockjob/cancel/pending
PASS 8 test-blockjob /blockjob/cancel/concluded
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn" 
==6426==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob-txn /single/success
PASS 2 test-blockjob-txn /single/failure
PASS 3 test-blockjob-txn /single/cancel
---
PASS 6 test-blockjob-txn /pair/cancel
PASS 7 test-blockjob-txn /pair/fail-cancel-race
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend" 
==6422==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6433==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-backend /block-backend/drain_aio_error
PASS 2 test-block-backend /block-backend/drain_all_aio_error
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread" 
==6438==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-iothread /sync-op/pread
PASS 2 test-block-iothread /sync-op/pwrite
PASS 3 test-block-iothread /sync-op/load_vmstate
---
PASS 15 test-block-iothread /propagate/diamond
PASS 16 test-block-iothread /propagate/mirror
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking" 
==6458==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-image-locking /image-locking/basic
PASS 2 test-image-locking /image-locking/set-perm-abort
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid" 
---
PASS 1 rcutorture /rcu/torture/1reader
PASS 2 rcutorture /rcu/torture/10readers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list" 
==6516==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-rcu-list /rcu/qlist/single-threaded
PASS 2 test-rcu-list /rcu/qlist/short-few
PASS 3 test-rcu-list /rcu/qlist/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-simpleq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-simpleq" 
PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded
PASS 2 test-rcu-simpleq /rcu/qsimpleq/short-few
==6561==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" 
PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded
PASS 2 test-rcu-tailq /rcu/qtailq/short-few
==6621==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-rcu-tailq /rcu/qtailq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-slist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-slist" 
PASS 1 test-rcu-slist /rcu/qslist/single-threaded
---
PASS 7 test-qdist /qdist/binning/expand
PASS 8 test-qdist /qdist/binning/shrink
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht" 
==6663==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 ide-test /x86_64/ide/bmdma/various_prdts
==6673==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6673==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcf9119000; bottom 0x7f577a9ba000; size: 0x00a57e75f000 (710791262208)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 6 ide-test /x86_64/ide/bmdma/no_busmaster
PASS 7 ide-test /x86_64/ide/flush/nodev
==6684==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 ide-test /x86_64/ide/flush/empty_drive
==6689==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 ide-test /x86_64/ide/flush/retry_pci
==6695==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 ide-test /x86_64/ide/flush/retry_isa
==6701==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 ide-test /x86_64/ide/cdrom/pio
==6707==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 ide-test /x86_64/ide/cdrom/pio_large
==6713==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 ide-test /x86_64/ide/cdrom/dma
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" 
==6727==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ahci-test /x86_64/ahci/sanity
PASS 1 test-qht /qht/mode/default
PASS 2 test-qht /qht/mode/resize
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par" 
==6733==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ahci-test /x86_64/ahci/pci_spec
==6748==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ahci-test /x86_64/ahci/pci_enable
PASS 1 test-qht-par /qht/parallel/2threads-0%updates-1s
==6754==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ahci-test /x86_64/ahci/hba_spec
PASS 2 test-qht-par /qht/parallel/2threads-20%updates-1s
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bitops -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitops" 
==6766==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bitops /bitops/sextract32
PASS 2 test-bitops /bitops/sextract64
PASS 3 test-bitops /bitops/half_shuffle32
---
PASS 3 test-qdev-global-props /qdev/properties/dynamic/global
PASS 4 test-qdev-global-props /qdev/properties/global/subclass
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/check-qom-interface -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="check-qom-interface" 
==6778==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 check-qom-interface /qom/interface/direct_impl
PASS 2 check-qom-interface /qom/interface/intermediate_impl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/check-qom-proplist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="check-qom-proplist" 
---
PASS 9 test-keyval /keyval/visit/alternate
PASS 10 test-keyval /keyval/visit/any
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-write-threshold -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-write-threshold" 
==6810==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-write-threshold /write-threshold/not-set-on-init
PASS 2 test-write-threshold /write-threshold/set-get
PASS 3 test-write-threshold /write-threshold/multi-set-get
---
PASS 15 test-crypto-secret /crypto/secret/crypt/missingiv
PASS 16 test-crypto-secret /crypto/secret/crypt/badiv
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlscredsx509 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlscredsx509" 
==6832==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver
PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient
PASS 8 ahci-test /x86_64/ahci/reset
==6850==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6850==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffb63cf000; bottom 0x7fc9dd9fe000; size: 0x0035d89d1000 (231267438592)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero
==6856==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1
==6856==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc72391000; bottom 0x7f72263fe000; size: 0x008a4bf93000 (593980108800)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2
PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low
==6862==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6862==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffda5fb2000; bottom 0x7f5ce99fe000; size: 0x00a0bc5b4000 (690354864128)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high
---
PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2
PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3
PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1
==6868==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6868==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffde0c7b000; bottom 0x7fc96b9fe000; size: 0x00347527d000 (225303842816)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero
PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2
==6874==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6874==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeedb9f000; bottom 0x7f18db5fe000; size: 0x00e6125a1000 (988150370304)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low
PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3
==6880==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6880==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc59fc9000; bottom 0x7f3ca05fe000; size: 0x00bfb99cb000 (823452807168)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high
PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4
PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5
==6886==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6886==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcfbf72000; bottom 0x7f219eb7c000; size: 0x00db5d3f6000 (942162272256)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6
---
PASS 32 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive1
PASS 33 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive2
PASS 34 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive3
==6892==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6892==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc3d669000; bottom 0x7f8cafdfe000; size: 0x006f8d86b000 (479115784192)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low
---
PASS 38 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingserver
PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession" 
==6898==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6898==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc70ad0000; bottom 0x7f68d1f7c000; size: 0x00939eb54000 (634022871040)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high
PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk
PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca
==6908==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero
PASS 3 test-crypto-tlssession /qcrypto/tlssession/differentca
==6914==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1
PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low
==6920==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high
==6926==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6926==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc51899000; bottom 0x7f6ccedfe000; size: 0x008f82a9b000 (616372482048)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero
PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2
==6932==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3
==6932==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdca211000; bottom 0x7f20ad9fe000; size: 0x00dd1c813000 (949666000896)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low
PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4
==6938==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6938==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe82a1b000; bottom 0x7f93afdfe000; size: 0x006ad2c1d000 (458802450432)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high
PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5
PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6
==6944==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1
PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2
==6944==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc03716000; bottom 0x7f17bc7fe000; size: 0x00e446f18000 (980442775552)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero
==6950==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6950==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff32807000; bottom 0x7fec05ffe000; size: 0x00132c809000 (82351001600)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low
PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3
==6956==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6956==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc963e2000; bottom 0x7f76fe5fe000; size: 0x008597de4000 (573778575360)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high
==6962==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6962==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd12a2c000; bottom 0x7f6784ffe000; size: 0x00958da2e000 (642326388736)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero
PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4
==6968==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6968==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff82328000; bottom 0x7f4517dfe000; size: 0x00ba6a52a000 (800647716864)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 28 ahci-test /x86_64/ahci/io/pio/lba48/long/low
PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5
PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6
==6974==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6974==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd95326000; bottom 0x7f4d217fe000; size: 0x00b073b28000 (757855322112)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga" 
PASS 29 ahci-test /x86_64/ahci/io/pio/lba48/long/high
==6988==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-qga /qga/sync-delimited
PASS 2 test-qga /qga/sync
PASS 3 test-qga /qga/ping
---
PASS 15 test-qga /qga/invalid-cmd
PASS 16 test-qga /qga/invalid-args
PASS 17 test-qga /qga/fsfreeze-status
==6994==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 ahci-test /x86_64/ahci/io/pio/lba48/short/low
PASS 18 test-qga /qga/blacklist
PASS 19 test-qga /qga/config
PASS 20 test-qga /qga/guest-exec
PASS 21 test-qga /qga/guest-exec-invalid
==7003==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 32 ahci-test /x86_64/ahci/io/pio/lba48/short/high
==7021==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 22 test-qga /qga/guest-get-osinfo
PASS 23 test-qga /qga/guest-get-host-name
PASS 24 test-qga /qga/guest-get-timezone
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-util-filemonitor -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-filemonitor" 
PASS 1 test-util-filemonitor /util/filemonitor
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-util-sockets -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-sockets" 
==7032==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-util-sockets /util/socket/is-socket/bad
PASS 2 test-util-sockets /util/socket/is-socket/good
PASS 3 test-util-sockets /socket/fd-pass/name/good
---
PASS 4 test-authz-listfile /auth/list/explicit/deny
PASS 5 test-authz-listfile /auth/list/explicit/allow
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-task -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-task" 
==7054==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-io-task /crypto/task/complete
PASS 2 test-io-task /crypto/task/datafree
PASS 3 test-io-task /crypto/task/failure
---
PASS 4 test-io-channel-file /io/channel/pipe/sync
PASS 5 test-io-channel-file /io/channel/pipe/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-tls -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-tls" 
==7111==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low
==7129==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-io-channel-tls /qio/channel/tls/basic
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-command -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-command" 
PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high
---
PASS 3 test-io-channel-command /io/channel/command/echo/sync
PASS 4 test-io-channel-command /io/channel/command/echo/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-buffer -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-buffer" 
==7143==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-io-channel-buffer /io/channel/buf
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-base64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-base64" 
PASS 1 test-base64 /util/base64/good
---
PASS 8 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c
PASS 9 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c5b6a7988
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-afsplit -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-afsplit" 
==7160==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-afsplit /crypto/afsplit/sha256/5
PASS 2 test-crypto-afsplit /crypto/afsplit/sha256/5000
PASS 3 test-crypto-afsplit /crypto/afsplit/sha256/big
---
PASS 3 test-logging /logging/logfile_write_path
PASS 4 test-logging /logging/logfile_lock_path
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication" 
==7178==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7189==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high
PASS 1 test-replication /replication/primary/read
PASS 2 test-replication /replication/primary/write
==7197==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7197==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe4bbaf000; bottom 0x7f2cde323000; size: 0x00d16d88c000 (899485843456)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 3 test-replication /replication/primary/start
---
PASS 5 test-replication /replication/primary/do_checkpoint
PASS 6 test-replication /replication/primary/get_error_all
PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero
==7204==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7204==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffed1cda000; bottom 0x7f3406bfd000; size: 0x00cacb0dd000 (870990073856)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 7 test-replication /replication/secondary/read
PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low
==7211==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7211==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffebd228000; bottom 0x7f9ce7ffd000; size: 0x0061d522b000 (420187648000)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 8 test-replication /replication/secondary/write
PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high
==7218==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero
==7224==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low
==7231==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7189==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffef6f4e000; bottom 0x7f5437c9b000; size: 0x00aabf2b3000 (733351718912)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high
==7252==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-replication /replication/secondary/start
PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero
==7258==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low
==7264==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high
==7270==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 test-replication /replication/secondary/stop
PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero
==7277==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low
==7283==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high
==7289==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7289==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcfae7e000; bottom 0x7f635997b000; size: 0x0099a1503000 (659836383232)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 test-replication /replication/secondary/continuous_replication
PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero
==7296==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7296==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff19ef6000; bottom 0x7fdbb5ffd000; size: 0x002363ef9000 (152000499712)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low
==7303==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7303==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe2ac30000; bottom 0x7f0c2d5fd000; size: 0x00f1fd633000 (1039338254336)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 12 test-replication /replication/secondary/do_checkpoint
PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high
==7310==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 test-replication /replication/secondary/get_error_all
PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero" 
==7316==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low
==7325==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high
==7331==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 59 ahci-test /x86_64/ahci/io/ncq/simple
==7337==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 60 ahci-test /x86_64/ahci/io/ncq/retry
==7343==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 61 ahci-test /x86_64/ahci/flush/simple
==7349==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 62 ahci-test /x86_64/ahci/flush/retry
==7355==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7361==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 63 ahci-test /x86_64/ahci/flush/migrate
==7369==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7375==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 64 ahci-test /x86_64/ahci/migrate/sanity
==7383==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7389==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple
==7397==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7403==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted
==7411==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7417==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple
==7425==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7431==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted
==7439==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 69 ahci-test /x86_64/ahci/cdrom/eject
==7444==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single
==7450==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi
==7456==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single
==7462==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7462==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe04251000; bottom 0x7f5c15ffe000; size: 0x00a1ee253000 (695485149184)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi
==7468==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" 
PASS 1 hd-geo-test /x86_64/hd-geo/ide/none
==7482==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0
==7488==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank
==7494==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba
==7500==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs
==7506==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank
==7512==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba
PASS 1 test-bufferiszero /cutils/bufferiszero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-uuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-uuid" 
==7518==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-uuid /uuid/is_null
PASS 2 test-uuid /uuid/generate
PASS 3 test-uuid /uuid/parse
---
PASS 1 test-qapi-util /qapi/util/qapi_enum_parse
PASS 2 test-qapi-util /qapi/util/parse_qapi_name
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qgraph -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qgraph" 
==7530==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-qgraph /qgraph/init_nop
PASS 2 test-qgraph /qgraph/test_machine
PASS 3 test-qgraph /qgraph/test_contains
---
PASS 22 test-qgraph /qgraph/test_test_in_path
PASS 23 test-qgraph /qgraph/test_double_edge
PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs
==7542==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst
==7548==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7552==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7556==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7560==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7564==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7568==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7572==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7576==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7579==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 hd-geo-test /x86_64/hd-geo/override/ide
==7586==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7590==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7594==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7598==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7602==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7606==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7610==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7614==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7617==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 hd-geo-test /x86_64/hd-geo/override/scsi
==7624==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7628==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7632==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7636==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7640==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7644==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7648==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7652==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7655==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 hd-geo-test /x86_64/hd-geo/override/scsi_2_controllers
==7662==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7666==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7670==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7674==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7677==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 hd-geo-test /x86_64/hd-geo/override/virtio_blk
==7684==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7688==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7691==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 hd-geo-test /x86_64/hd-geo/override/zero_chs
==7698==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7702==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7706==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7710==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7713==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 16 hd-geo-test /x86_64/hd-geo/override/scsi_hot_unplug
==7720==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7724==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7728==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7732==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7735==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 17 hd-geo-test /x86_64/hd-geo/override/virtio_hot_unplug
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test" 
PASS 1 boot-order-test /x86_64/boot-order/pc
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7804==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP'
Using expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7810==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP'
Using expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7816==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.bridge'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7822==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7828==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.cphp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7835==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.memhp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7841==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.numamem'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7847==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7856==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7863==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.bridge'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7869==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.mmio64'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7875==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7881==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.cphp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7888==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.memhp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7894==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.numamem'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7900==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7909==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
PASS 1 i440fx-test /x86_64/i440fx/defaults
PASS 2 i440fx-test /x86_64/i440fx/pam
PASS 3 i440fx-test /x86_64/i440fx/firmware/bios
==8001==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test" 
PASS 1 fw_cfg-test /x86_64/fw_cfg/signature
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test" 
PASS 1 drive_del-test /x86_64/drive_del/without-dev
PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add
==8094==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test" 
PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause
---
dbus-daemon[8264]: Could not get password database information for UID of current process: User "???" unknown or no memory to allocate password entry

**
ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
cleaning up pid 8264
ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/qtest/dbus-vmstate-test.c:114:get_connection: assertion failed (err == NULL): The connection is closed (g-io-error-quark, 18)
make: *** [/tmp/qemu-test/src/tests/Makefile.include:632: check-qtest-x86_64] Error 1
make: *** Waiting for unfinished jobs....
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 664, in <module>
---
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=80673fe085b14b21ac3d7ea2153fcda6', '-u', '1003', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=x86_64-softmmu', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew2/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-anphposc/src/docker-src.2020-03-09-22.29.38.15345:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-debug']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=80673fe085b14b21ac3d7ea2153fcda6
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-anphposc/src'
make: *** [docker-run-test-debug@fedora] Error 2

real    26m48.683s
user    0m8.171s


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
  2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
                   ` (22 preceding siblings ...)
  2020-03-10  2:56 ` no-reply
@ 2020-03-10  2:56 ` no-reply
  23 siblings, 0 replies; 79+ messages in thread
From: no-reply @ 2020-03-10  2:56 UTC (permalink / raw)
  To: liran.alon; +Cc: pbonzini, mst, qemu-devel, ehabkost, rth

Patchew URL: https://patchew.org/QEMU/20200309235411.76587-1-liran.alon@oracle.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements
Message-id: 20200309235411.76587-1-liran.alon@oracle.com
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 - [tag update]      patchew/20200309235411.76587-1-liran.alon@oracle.com -> patchew/20200309235411.76587-1-liran.alon@oracle.com
Switched to a new branch 'test'
3a9a905 hw/i386/vmport: Assert vmport initialized before registering commands
a1e45e6 hw/i386/vmport: Add support for CMD_GETHZ
10e0ccf i386/cpu: Store LAPIC bus frequency in CPU structure
b4b58a3 hw/i386/vmport: Allow x2apic without IR
04d32bb hw/i386/vmport: Add support for CMD_GET_VCPU_INFO
7925d7e hw/i386/vmport: Add support for CMD_GETTIMEFULL
b919c87 hw/i386/vmport: Add support for CMD_GETTIME
87fe8e2 hw/i386/vmport: Add support for CMD_GETBIOSUUID
8cad96e hw/i386/vmport: Define enum for all commands
e167453 hw/i386/vmport: Report VMX type in CMD_GETVERSION
e70b2d1 hw/i386/vmport: Introduce vmx-version property
4c37f8b hw/i386/vmport: Add device properties
6aeb201 hw/i386/vmport: Set EAX to -1 on failed and unsupported commands
78864e8 hw/i386/vmport: Propagate IOPort read to vCPU EAX register

=== OUTPUT BEGIN ===
1/14 Checking commit 78864e828d9a (hw/i386/vmport: Propagate IOPort read to vCPU EAX register)
2/14 Checking commit 6aeb2014d982 (hw/i386/vmport: Set EAX to -1 on failed and unsupported commands)
3/14 Checking commit 4c37f8b7fcc5 (hw/i386/vmport: Add device properties)
4/14 Checking commit e70b2d1864b7 (hw/i386/vmport: Introduce vmx-version property)
5/14 Checking commit e1674539df49 (hw/i386/vmport: Report VMX type in CMD_GETVERSION)
6/14 Checking commit 8cad96e6c606 (hw/i386/vmport: Define enum for all commands)
7/14 Checking commit 87fe8e21b595 (hw/i386/vmport: Add support for CMD_GETBIOSUUID)
ERROR: "(foo*)" should be "(foo *)"
#33: FILE: hw/i386/vmport.c:128:
+    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);

total: 1 errors, 0 warnings, 39 lines checked

Patch 7/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

8/14 Checking commit b919c87b2d71 (hw/i386/vmport: Add support for CMD_GETTIME)
9/14 Checking commit 7925d7e58bc7 (hw/i386/vmport: Add support for CMD_GETTIMEFULL)
10/14 Checking commit 04d32bb772b9 (hw/i386/vmport: Add support for CMD_GET_VCPU_INFO)
ERROR: return is not a function, parentheses are not required
#41: FILE: hw/i386/vmport.c:185:
+    return (1 << VCPU_INFO_RESERVED_BIT);

total: 1 errors, 0 warnings, 38 lines checked

Patch 10/14 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

11/14 Checking commit b4b58a3754a3 (hw/i386/vmport: Allow x2apic without IR)
12/14 Checking commit 10e0ccf9b53a (i386/cpu: Store LAPIC bus frequency in CPU structure)
13/14 Checking commit a1e45e66e18f (hw/i386/vmport: Add support for CMD_GETHZ)
14/14 Checking commit 3a9a9056d1b3 (hw/i386/vmport: Assert vmport initialized before registering commands)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200309235411.76587-1-liran.alon@oracle.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-09 23:54 ` [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION Liran Alon
@ 2020-03-10  9:20   ` Michael S. Tsirkin
  2020-03-10 11:18     ` Liran Alon
  2020-03-10 12:14   ` Michael S. Tsirkin
  1 sibling, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:20 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> CMD_GETVERSION should return VMX type in ECX register.
> 
> Default is to fake host as VMware ESX server. But user can control
> this value by "-global vmport.vmx-type=X".
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> ---
>  hw/i386/vmport.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index a2c8ff4b59cf..c03f57f2f636 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -36,6 +36,15 @@
>  #define VMPORT_ENTRIES 0x2c
>  #define VMPORT_MAGIC   0x564D5868
>  
> +typedef enum {
> +   VMX_TYPE_UNSET = 0,
> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> +   VMX_TYPE_WORKSTATION,
> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> +} VMX_Type;
> +

Can names be prefixed with VMPort pls? VMX has specific unrelated meaning.

Same everywhere.

>  #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
>  
>  typedef struct VMPortState {
> @@ -46,6 +55,7 @@ typedef struct VMPortState {
>      void *opaque[VMPORT_ENTRIES];
>  
>      uint32_t vmx_version;
> +    uint8_t vmx_type;
>  } VMPortState;
>  
>  static VMPortState *port_state;
> @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>      X86CPU *cpu = X86_CPU(current_cpu);
>  
>      cpu->env.regs[R_EBX] = VMPORT_MAGIC;
> +    cpu->env.regs[R_ECX] = port_state->vmx_type;
>      return port_state->vmx_version;
>  }
>  
> @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>  static Property vmport_properties[] = {
>      /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
>      DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
> +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
> +                      VMX_TYPE_SCALABLE_SERVER),
>      DEFINE_PROP_END_OF_LIST(),
>  };
>  
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-09 23:54 ` [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID Liran Alon
@ 2020-03-10  9:22   ` Michael S. Tsirkin
  2020-03-10 11:44     ` Liran Alon
  2020-03-10  9:34   ` Michael S. Tsirkin
  1 sibling, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:22 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
> This is VMware documented functionallity that some guests rely on.
> Returns the BIOS UUID of the current virtual machine.
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> ---
>  hw/i386/vmport.c     | 14 ++++++++++++++
>  include/hw/i386/pc.h |  1 +
>  2 files changed, 15 insertions(+)
> 
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index 2ae5afc42b50..7687f3368a55 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -26,6 +26,7 @@
>  #include "hw/i386/pc.h"
>  #include "hw/input/i8042.h"
>  #include "hw/qdev-properties.h"
> +#include "sysemu/sysemu.h"
>  #include "sysemu/hw_accel.h"
>  #include "qemu/log.h"
>  #include "trace.h"
> @@ -121,6 +122,18 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>      return port_state->vmx_version;
>  }
>  
> +static uint32_t vmport_cmd_get_bios_uuid(void *opaque, uint32_t addr)
> +{
> +    X86CPU *cpu = X86_CPU(current_cpu);
> +    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);
> +
> +    cpu->env.regs[R_EAX] = uuid_parts[0];
> +    cpu->env.regs[R_EBX] = uuid_parts[1];
> +    cpu->env.regs[R_ECX] = uuid_parts[2];
> +    cpu->env.regs[R_EDX] = uuid_parts[3];
> +    return cpu->env.regs[R_EAX];
> +}
> +

Should be LE here?

>  static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
>  {
>      X86CPU *cpu = X86_CPU(current_cpu);
> @@ -171,6 +184,7 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>      port_state = s;
>      /* Register some generic port commands */
>      vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL);
> +    vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_get_bios_uuid, NULL);
>      vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
>  }
>  
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 7f15a01137b1..ea87eb93511e 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -140,6 +140,7 @@ typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
>  
>  typedef enum {
>      VMPORT_CMD_GETVERSION       = 10,
> +    VMPORT_CMD_GETBIOSUUID      = 19,
>      VMPORT_CMD_GETRAMSIZE       = 20,
>      VMPORT_CMD_VMMOUSE_DATA     = 39,
>      VMPORT_CMD_VMMOUSE_STATUS   = 40,
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 06/14] hw/i386/vmport: Define enum for all commands
  2020-03-09 23:54 ` [PATCH 06/14] hw/i386/vmport: Define enum for all commands Liran Alon
@ 2020-03-10  9:28   ` Michael S. Tsirkin
  2020-03-10 11:16     ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:28 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:03AM +0200, Liran Alon wrote:
> No functional change.
> 
> Defining an enum for all VMPort commands have the following advantages:
> * It gets rid of the error-prone requirement to update VMPORT_ENTRIES
> when new VMPort commands are added to QEMU.
> * It makes it clear to know by looking at one place at the source, what
> are all the VMPort commands supported by QEMU.
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> ---
>  hw/i386/vmmouse.c    | 18 ++++++------------
>  hw/i386/vmport.c     | 11 ++---------
>  include/hw/i386/pc.h | 11 ++++++++++-
>  3 files changed, 18 insertions(+), 22 deletions(-)
> 
> diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
> index e8e62bd96b8c..a61042fc0c5e 100644
> --- a/hw/i386/vmmouse.c
> +++ b/hw/i386/vmmouse.c
> @@ -33,12 +33,6 @@
>  /* debug only vmmouse */
>  //#define DEBUG_VMMOUSE
>  
> -/* VMMouse Commands */
> -#define VMMOUSE_GETVERSION	10
> -#define VMMOUSE_DATA		39
> -#define VMMOUSE_STATUS		40
> -#define VMMOUSE_COMMAND		41
> -
>  #define VMMOUSE_READ_ID			0x45414552
>  #define VMMOUSE_DISABLE			0x000000f5
>  #define VMMOUSE_REQUEST_RELATIVE	0x4c455252
> @@ -196,10 +190,10 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
>      command = data[2] & 0xFFFF;
>  
>      switch (command) {
> -    case VMMOUSE_STATUS:
> +    case VMPORT_CMD_VMMOUSE_STATUS:
>          data[0] = vmmouse_get_status(s);
>          break;
> -    case VMMOUSE_COMMAND:
> +    case VMPORT_CMD_VMMOUSE_COMMAND:
>          switch (data[1]) {
>          case VMMOUSE_DISABLE:
>              vmmouse_disable(s);
> @@ -218,7 +212,7 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
>              break;
>          }
>          break;
> -    case VMMOUSE_DATA:
> +    case VMPORT_CMD_VMMOUSE_DATA:
>          vmmouse_data(s, data, data[1]);
>          break;
>      default:
> @@ -275,9 +269,9 @@ static void vmmouse_realizefn(DeviceState *dev, Error **errp)
>          return;
>      }
>  
> -    vmport_register(VMMOUSE_STATUS, vmmouse_ioport_read, s);
> -    vmport_register(VMMOUSE_COMMAND, vmmouse_ioport_read, s);
> -    vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s);
> +    vmport_register(VMPORT_CMD_VMMOUSE_STATUS, vmmouse_ioport_read, s);
> +    vmport_register(VMPORT_CMD_VMMOUSE_COMMAND, vmmouse_ioport_read, s);
> +    vmport_register(VMPORT_CMD_VMMOUSE_DATA, vmmouse_ioport_read, s);
>  }
>  
>  static Property vmmouse_properties[] = {
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index c03f57f2f636..2ae5afc42b50 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -30,10 +30,6 @@
>  #include "qemu/log.h"
>  #include "trace.h"
>  
> -#define VMPORT_CMD_GETVERSION 0x0a
> -#define VMPORT_CMD_GETRAMSIZE 0x14
> -
> -#define VMPORT_ENTRIES 0x2c
>  #define VMPORT_MAGIC   0x564D5868
>  
>  typedef enum {
> @@ -60,12 +56,9 @@ typedef struct VMPortState {
>  
>  static VMPortState *port_state;
>  
> -void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque)
> +void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque)
>  {
> -    if (command >= VMPORT_ENTRIES) {
> -        return;
> -    }
> -
> +    assert(command < VMPORT_ENTRIES);
>      trace_vmport_register(command, func, opaque);
>      port_state->func[command] = func;
>      port_state->opaque[command] = opaque;
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index d5ac76d54e1f..7f15a01137b1 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -138,12 +138,21 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled);
>  #define TYPE_VMPORT "vmport"
>  typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
>  
> +typedef enum {
> +    VMPORT_CMD_GETVERSION       = 10,
> +    VMPORT_CMD_GETRAMSIZE       = 20,
> +    VMPORT_CMD_VMMOUSE_DATA     = 39,
> +    VMPORT_CMD_VMMOUSE_STATUS   = 40,
> +    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
> +    VMPORT_ENTRIES
> +} VMPortCommand;
> +

Please don't, let's leave pc.h alone. If you must add a new header for
vmport/vmmouse and put this stuff there.

>  static inline void vmport_init(ISABus *bus)
>  {
>      isa_create_simple(bus, TYPE_VMPORT);
>  }
>  
> -void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
> +void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque);
>  void vmmouse_get_data(uint32_t *data);
>  void vmmouse_set_data(const uint32_t *data);
>  
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure
  2020-03-09 23:54 ` [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure Liran Alon
@ 2020-03-10  9:29   ` Michael S. Tsirkin
  2020-03-10 10:53     ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:29 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:09AM +0200, Liran Alon wrote:
> No functional change.
> This information will be used by following patches.
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> ---
>  linux-headers/asm-x86/kvm.h | 4 ++++
>  target/i386/cpu.h           | 1 +
>  target/i386/kvm.c           | 6 +++---
>  3 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
> index 503d3f42da16..99eeaaf2f0b4 100644
> --- a/linux-headers/asm-x86/kvm.h
> +++ b/linux-headers/asm-x86/kvm.h
> @@ -446,4 +446,8 @@ struct kvm_pmu_event_filter {
>  #define KVM_PMU_EVENT_ALLOW 0
>  #define KVM_PMU_EVENT_DENY 1
>  
> +/* From arch/x86/kvm/lapic.h */
> +#define KVM_APIC_BUS_CYCLE_NS       1
> +#define KVM_APIC_BUS_FREQUENCY      (1000000000ULL / KVM_APIC_BUS_CYCLE_NS)
> +
>  #endif /* _ASM_X86_KVM_H */


This header is auto-generated from UAPI - you can't add
your own stuff here.


> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index 576f309bbfc8..9c7cd7cde107 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -1580,6 +1580,7 @@ typedef struct CPUX86State {
>      bool tsc_valid;
>      int64_t tsc_khz;
>      int64_t user_tsc_khz; /* for sanity check only */
> +    uint64_t apic_bus_freq;
>  #if defined(CONFIG_KVM) || defined(CONFIG_HVF)
>      void *xsave_buf;
>  #endif
> diff --git a/target/i386/kvm.c b/target/i386/kvm.c
> index 69eb43d796e6..00917196dffb 100644
> --- a/target/i386/kvm.c
> +++ b/target/i386/kvm.c
> @@ -1496,6 +1496,8 @@ int kvm_arch_init_vcpu(CPUState *cs)
>          }
>      }
>  
> +    env->apic_bus_freq = KVM_APIC_BUS_FREQUENCY;
> +
>      /* Paravirtualization CPUIDs */
>      r = hyperv_handle_properties(cs, cpuid_data.entries);
>      if (r < 0) {
> @@ -1800,9 +1802,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
>          c = &cpuid_data.entries[cpuid_i++];
>          c->function = KVM_CPUID_SIGNATURE | 0x10;
>          c->eax = env->tsc_khz;
> -        /* LAPIC resolution of 1ns (freq: 1GHz) is hardcoded in KVM's
> -         * APIC_BUS_CYCLE_NS */
> -        c->ebx = 1000000;
> +        c->ebx = env->apic_bus_freq / 1000; /* Hz to KHz */
>          c->ecx = c->edx = 0;
>  
>          c = cpuid_find_entry(&cpuid_data.cpuid, kvm_base, 0);
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 14/14] hw/i386/vmport: Assert vmport initialized before registering commands
  2020-03-09 23:54 ` [PATCH 14/14] hw/i386/vmport: Assert vmport initialized before registering commands Liran Alon
@ 2020-03-10  9:30   ` Michael S. Tsirkin
  2020-03-10 10:57     ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:30 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:11AM +0200, Liran Alon wrote:
> vmport_register() is also called from other modules such as vmmouse.
> Therefore, these modules rely that vmport is realized before those call
> sites. If this is violated, vmport_register() will NULL-deref.
> 
> To make such issues easier to debug, assert in vmport_register() that
> vmport is already realized.
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>


Hmm and what does actually make sure it is realized?

> ---
>  hw/i386/vmport.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index 95d4a23ce9ba..659a323e8448 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -68,6 +68,8 @@ static VMPortState *port_state;
>  void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque)
>  {
>      assert(command < VMPORT_ENTRIES);
> +    assert(port_state);
> +
>      trace_vmport_register(command, func, opaque);
>      port_state->func[command] = func;
>      port_state->opaque[command] = opaque;
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property
  2020-03-09 23:54 ` [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property Liran Alon
@ 2020-03-10  9:32   ` Michael S. Tsirkin
  2020-03-10 11:05     ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:32 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:01AM +0200, Liran Alon wrote:
> Instead of hard-coding the VMX version, make it a VMPORT object property.
> This would allow user to control it's value via "-global vmport.vmx-version=X".
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>

More detail on why this is useful?

> ---
>  hw/i386/vmport.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index 7c21e56081b0..a2c8ff4b59cf 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -44,6 +44,8 @@ typedef struct VMPortState {
>      MemoryRegion io;
>      VMPortReadFunc *func[VMPORT_ENTRIES];
>      void *opaque[VMPORT_ENTRIES];
> +
> +    uint32_t vmx_version;
>  } VMPortState;
>  
>  static VMPortState *port_state;
> @@ -112,7 +114,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>      X86CPU *cpu = X86_CPU(current_cpu);
>  
>      cpu->env.regs[R_EBX] = VMPORT_MAGIC;
> -    return 6;
> +    return port_state->vmx_version;
>  }
>  
>  static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
> @@ -169,6 +171,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>  }
>  
>  static Property vmport_properties[] = {
> +    /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
> +    DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
>      DEFINE_PROP_END_OF_LIST(),
>  };
>  
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-09 23:54 ` [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID Liran Alon
  2020-03-10  9:22   ` Michael S. Tsirkin
@ 2020-03-10  9:34   ` Michael S. Tsirkin
  2020-03-10 11:13     ` Liran Alon
  1 sibling, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:34 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
> This is VMware documented functionallity that some guests rely on.
> Returns the BIOS UUID of the current virtual machine.
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>

So this at least seems guest-visible.

So I suspect you need to add properties to
disable this for old machine types, to avoid
breaking compatibility with live-migration.


> ---
>  hw/i386/vmport.c     | 14 ++++++++++++++
>  include/hw/i386/pc.h |  1 +
>  2 files changed, 15 insertions(+)
> 
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index 2ae5afc42b50..7687f3368a55 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -26,6 +26,7 @@
>  #include "hw/i386/pc.h"
>  #include "hw/input/i8042.h"
>  #include "hw/qdev-properties.h"
> +#include "sysemu/sysemu.h"
>  #include "sysemu/hw_accel.h"
>  #include "qemu/log.h"
>  #include "trace.h"
> @@ -121,6 +122,18 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>      return port_state->vmx_version;
>  }
>  
> +static uint32_t vmport_cmd_get_bios_uuid(void *opaque, uint32_t addr)
> +{
> +    X86CPU *cpu = X86_CPU(current_cpu);
> +    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);
> +
> +    cpu->env.regs[R_EAX] = uuid_parts[0];
> +    cpu->env.regs[R_EBX] = uuid_parts[1];
> +    cpu->env.regs[R_ECX] = uuid_parts[2];
> +    cpu->env.regs[R_EDX] = uuid_parts[3];
> +    return cpu->env.regs[R_EAX];
> +}
> +
>  static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
>  {
>      X86CPU *cpu = X86_CPU(current_cpu);
> @@ -171,6 +184,7 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>      port_state = s;
>      /* Register some generic port commands */
>      vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL);
> +    vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_get_bios_uuid, NULL);
>      vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
>  }
>  
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 7f15a01137b1..ea87eb93511e 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -140,6 +140,7 @@ typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
>  
>  typedef enum {
>      VMPORT_CMD_GETVERSION       = 10,
> +    VMPORT_CMD_GETBIOSUUID      = 19,
>      VMPORT_CMD_GETRAMSIZE       = 20,
>      VMPORT_CMD_VMMOUSE_DATA     = 39,
>      VMPORT_CMD_VMMOUSE_STATUS   = 40,
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure
  2020-03-10  9:29   ` Michael S. Tsirkin
@ 2020-03-10 10:53     ` Liran Alon
  2020-03-10 12:27       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 10:53 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 11:29, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:09AM +0200, Liran Alon wrote:
>> No functional change.
>> This information will be used by following patches.
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>> ---
>>   linux-headers/asm-x86/kvm.h | 4 ++++
>>   target/i386/cpu.h           | 1 +
>>   target/i386/kvm.c           | 6 +++---
>>   3 files changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
>> index 503d3f42da16..99eeaaf2f0b4 100644
>> --- a/linux-headers/asm-x86/kvm.h
>> +++ b/linux-headers/asm-x86/kvm.h
>> @@ -446,4 +446,8 @@ struct kvm_pmu_event_filter {
>>   #define KVM_PMU_EVENT_ALLOW 0
>>   #define KVM_PMU_EVENT_DENY 1
>>   
>> +/* From arch/x86/kvm/lapic.h */
>> +#define KVM_APIC_BUS_CYCLE_NS       1
>> +#define KVM_APIC_BUS_FREQUENCY      (1000000000ULL / KVM_APIC_BUS_CYCLE_NS)
>> +
>>   #endif /* _ASM_X86_KVM_H */
>
> This header is auto-generated from UAPI - you can't add
> your own stuff here.
Oh I didn't notice that. OK, I will move definitions to somewhere else.
Is it fine by you if I will just put them then in target/i386/kvm.c 
directly?
Or do you prefer I will put them in target/i386/kvm_i386.h

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 14/14] hw/i386/vmport: Assert vmport initialized before registering commands
  2020-03-10  9:30   ` Michael S. Tsirkin
@ 2020-03-10 10:57     ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 10:57 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 11:30, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:11AM +0200, Liran Alon wrote:
>> vmport_register() is also called from other modules such as vmmouse.
>> Therefore, these modules rely that vmport is realized before those call
>> sites. If this is violated, vmport_register() will NULL-deref.
>>
>> To make such issues easier to debug, assert in vmport_register() that
>> vmport is already realized.
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>
> Hmm and what does actually make sure it is realized?

port_state global var is only set in vmport_realizefn().

-Liran

>
>> ---
>>   hw/i386/vmport.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>> index 95d4a23ce9ba..659a323e8448 100644
>> --- a/hw/i386/vmport.c
>> +++ b/hw/i386/vmport.c
>> @@ -68,6 +68,8 @@ static VMPortState *port_state;
>>   void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque)
>>   {
>>       assert(command < VMPORT_ENTRIES);
>> +    assert(port_state);
>> +
>>       trace_vmport_register(command, func, opaque);
>>       port_state->func[command] = func;
>>       port_state->opaque[command] = opaque;
>> -- 
>> 2.20.1


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property
  2020-03-10  9:32   ` Michael S. Tsirkin
@ 2020-03-10 11:05     ` Liran Alon
  2020-03-10 11:18       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:05 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 11:32, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:01AM +0200, Liran Alon wrote:
>> Instead of hard-coding the VMX version, make it a VMPORT object property.
>> This would allow user to control it's value via "-global vmport.vmx-version=X".
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> More detail on why this is useful?
It's more useful than returning a hard-coded "6" as the vmx-version...
We have used it to preserve compatibility for some VMware guests that we 
run as-is on top of QEMU/KVM which expects specific vmx-version or else 
they fail to run properly.

-Liran

>
>> ---
>>   hw/i386/vmport.c | 6 +++++-
>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>> index 7c21e56081b0..a2c8ff4b59cf 100644
>> --- a/hw/i386/vmport.c
>> +++ b/hw/i386/vmport.c
>> @@ -44,6 +44,8 @@ typedef struct VMPortState {
>>       MemoryRegion io;
>>       VMPortReadFunc *func[VMPORT_ENTRIES];
>>       void *opaque[VMPORT_ENTRIES];
>> +
>> +    uint32_t vmx_version;
>>   } VMPortState;
>>   
>>   static VMPortState *port_state;
>> @@ -112,7 +114,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>>       X86CPU *cpu = X86_CPU(current_cpu);
>>   
>>       cpu->env.regs[R_EBX] = VMPORT_MAGIC;
>> -    return 6;
>> +    return port_state->vmx_version;
>>   }
>>   
>>   static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
>> @@ -169,6 +171,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>>   }
>>   
>>   static Property vmport_properties[] = {
>> +    /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
>> +    DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
>>       DEFINE_PROP_END_OF_LIST(),
>>   };
>>   
>> -- 
>> 2.20.1


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10  9:34   ` Michael S. Tsirkin
@ 2020-03-10 11:13     ` Liran Alon
  2020-03-10 11:22       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:13 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 11:34, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
>> This is VMware documented functionallity that some guests rely on.
>> Returns the BIOS UUID of the current virtual machine.
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> So this at least seems guest-visible.
>
> So I suspect you need to add properties to
> disable this for old machine types, to avoid
> breaking compatibility with live-migration.

It is indeed guest visible.
In theory, you are right that for every guest-visible change, we should 
make sure to expose it to only new machine-types.

However, in this case, I feel it just unnecessary over-complicates the code.
I don't see how a guest which previously failed to use this command, 
will fail because after Live-Migration it could succeed.

If you insist, I will add such functionality. In that case, do you think 
a single flag will suffice for the addition of all new commands
(i.e. "commands-version" that it's number specifies set of commands to 
expose), or you want to have a per-command flag?

-Liran



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 06/14] hw/i386/vmport: Define enum for all commands
  2020-03-10  9:28   ` Michael S. Tsirkin
@ 2020-03-10 11:16     ` Liran Alon
  2020-03-10 11:23       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:16 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 11:28, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:03AM +0200, Liran Alon wrote:
>> No functional change.
>>
>> Defining an enum for all VMPort commands have the following advantages:
>> * It gets rid of the error-prone requirement to update VMPORT_ENTRIES
>> when new VMPort commands are added to QEMU.
>> * It makes it clear to know by looking at one place at the source, what
>> are all the VMPort commands supported by QEMU.
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>> ---
>>
>> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
>> index d5ac76d54e1f..7f15a01137b1 100644
>> --- a/include/hw/i386/pc.h
>> +++ b/include/hw/i386/pc.h
>> @@ -138,12 +138,21 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled);
>>   #define TYPE_VMPORT "vmport"
>>   typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
>>   
>> +typedef enum {
>> +    VMPORT_CMD_GETVERSION       = 10,
>> +    VMPORT_CMD_GETRAMSIZE       = 20,
>> +    VMPORT_CMD_VMMOUSE_DATA     = 39,
>> +    VMPORT_CMD_VMMOUSE_STATUS   = 40,
>> +    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
>> +    VMPORT_ENTRIES
>> +} VMPortCommand;
>> +
> Please don't, let's leave pc.h alone. If you must add a new header for
> vmport/vmmouse and put this stuff there.

As you can see, pc.h already contains definitions which are specific to 
vmport. E.g. TYPE_VMPORT, VMPortReadFunc(), vmport_register(), 
vmmouse_get_data(), vmmouse_set_data(). Adding this enum is not what 
makes the difference.
It is possible to create a new vmport.h header file but it's not really 
related to this patch. It's just general refactoring. I can do that in 
v2 if you think it's appropriate.

-Liran

>
>>   static inline void vmport_init(ISABus *bus)
>>   {
>>       isa_create_simple(bus, TYPE_VMPORT);
>>   }
>>   
>> -void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
>> +void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque);
>>   void vmmouse_get_data(uint32_t *data);
>>   void vmmouse_set_data(const uint32_t *data);
>>   
>> -- 
>> 2.20.1


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property
  2020-03-10 11:05     ` Liran Alon
@ 2020-03-10 11:18       ` Michael S. Tsirkin
  2020-03-10 11:28         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 11:18 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:05:02PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 11:32, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:54:01AM +0200, Liran Alon wrote:
> > > Instead of hard-coding the VMX version, make it a VMPORT object property.
> > > This would allow user to control it's value via "-global vmport.vmx-version=X".
> > > 
> > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > More detail on why this is useful?
> It's more useful than returning a hard-coded "6" as the vmx-version...


Maybe default should be 6 (a bit of explanation why 6 could be nice).


> We have used it to preserve compatibility for some VMware guests that we run
> as-is on top of QEMU/KVM which expects specific vmx-version or else they
> fail to run properly.
> 
> -Liran

Any detail on which guest it is?
Pretending to be a very advanced version has its pitfalls if we
then don't behave the way vmware does, right?
Figuring out the version number is I suspect a bit much to ask of users.


> > 
> > > ---
> > >   hw/i386/vmport.c | 6 +++++-
> > >   1 file changed, 5 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > index 7c21e56081b0..a2c8ff4b59cf 100644
> > > --- a/hw/i386/vmport.c
> > > +++ b/hw/i386/vmport.c
> > > @@ -44,6 +44,8 @@ typedef struct VMPortState {
> > >       MemoryRegion io;
> > >       VMPortReadFunc *func[VMPORT_ENTRIES];
> > >       void *opaque[VMPORT_ENTRIES];
> > > +
> > > +    uint32_t vmx_version;
> > >   } VMPortState;
> > >   static VMPortState *port_state;
> > > @@ -112,7 +114,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
> > >       X86CPU *cpu = X86_CPU(current_cpu);
> > >       cpu->env.regs[R_EBX] = VMPORT_MAGIC;
> > > -    return 6;
> > > +    return port_state->vmx_version;
> > >   }
> > >   static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
> > > @@ -169,6 +171,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
> > >   }
> > >   static Property vmport_properties[] = {
> > > +    /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
> > > +    DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
> > >       DEFINE_PROP_END_OF_LIST(),
> > >   };
> > > -- 
> > > 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10  9:20   ` Michael S. Tsirkin
@ 2020-03-10 11:18     ` Liran Alon
  2020-03-10 11:23       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:18 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 11:20, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
>> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
>> CMD_GETVERSION should return VMX type in ECX register.
>>
>> Default is to fake host as VMware ESX server. But user can control
>> this value by "-global vmport.vmx-type=X".
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>> ---
>>   hw/i386/vmport.c | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>> index a2c8ff4b59cf..c03f57f2f636 100644
>> --- a/hw/i386/vmport.c
>> +++ b/hw/i386/vmport.c
>> @@ -36,6 +36,15 @@
>>   #define VMPORT_ENTRIES 0x2c
>>   #define VMPORT_MAGIC   0x564D5868
>>   
>> +typedef enum {
>> +   VMX_TYPE_UNSET = 0,
>> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
>> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
>> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
>> +   VMX_TYPE_WORKSTATION,
>> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
>> +} VMX_Type;
>> +
> Can names be prefixed with VMPort pls? VMX has specific unrelated meaning.
>
> Same everywhere.
I didn't thought it matters much given that this enum is only defined 
locally in vmport.c.
But sure I can rename it in v2.

-Liran

>
>>   #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
>>   
>>   typedef struct VMPortState {
>> @@ -46,6 +55,7 @@ typedef struct VMPortState {
>>       void *opaque[VMPORT_ENTRIES];
>>   
>>       uint32_t vmx_version;
>> +    uint8_t vmx_type;
>>   } VMPortState;
>>   
>>   static VMPortState *port_state;
>> @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>>       X86CPU *cpu = X86_CPU(current_cpu);
>>   
>>       cpu->env.regs[R_EBX] = VMPORT_MAGIC;
>> +    cpu->env.regs[R_ECX] = port_state->vmx_type;
>>       return port_state->vmx_version;
>>   }
>>   
>> @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>>   static Property vmport_properties[] = {
>>       /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
>>       DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
>> +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
>> +                      VMX_TYPE_SCALABLE_SERVER),
>>       DEFINE_PROP_END_OF_LIST(),
>>   };
>>   
>> -- 
>> 2.20.1


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 11:13     ` Liran Alon
@ 2020-03-10 11:22       ` Michael S. Tsirkin
  2020-03-10 11:35         ` Liran Alon
  2020-03-10 14:24         ` Liran Alon
  0 siblings, 2 replies; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 11:22 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:13:21PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 11:34, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
> > > This is VMware documented functionallity that some guests rely on.
> > > Returns the BIOS UUID of the current virtual machine.
> > > 
> > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > So this at least seems guest-visible.
> > 
> > So I suspect you need to add properties to
> > disable this for old machine types, to avoid
> > breaking compatibility with live-migration.
> 
> It is indeed guest visible.
> In theory, you are right that for every guest-visible change, we should make
> sure to expose it to only new machine-types.
> 
> However, in this case, I feel it just unnecessary over-complicates the code.
> I don't see how a guest which previously failed to use this command, will
> fail because after Live-Migration it could succeed.

The reverse can happen, start guest on a new qemu, command seems to
work, then we migrate and it fails.

And I guess this applies to the version right?

> If you insist, I will add such functionality. In that case, do you think a
> single flag will suffice for the addition of all new commands
> (i.e. "commands-version" that it's number specifies set of commands to
> expose), or you want to have a per-command flag?
> 
> -Liran

Can be a single flag but I'd just do it a boolean that enables a group
of commands. E.g. "commands-v2".

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 06/14] hw/i386/vmport: Define enum for all commands
  2020-03-10 11:16     ` Liran Alon
@ 2020-03-10 11:23       ` Michael S. Tsirkin
  2020-03-10 11:37         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 11:23 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:16:51PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 11:28, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:54:03AM +0200, Liran Alon wrote:
> > > No functional change.
> > > 
> > > Defining an enum for all VMPort commands have the following advantages:
> > > * It gets rid of the error-prone requirement to update VMPORT_ENTRIES
> > > when new VMPort commands are added to QEMU.
> > > * It makes it clear to know by looking at one place at the source, what
> > > are all the VMPort commands supported by QEMU.
> > > 
> > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > ---
> > > 
> > > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> > > index d5ac76d54e1f..7f15a01137b1 100644
> > > --- a/include/hw/i386/pc.h
> > > +++ b/include/hw/i386/pc.h
> > > @@ -138,12 +138,21 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled);
> > >   #define TYPE_VMPORT "vmport"
> > >   typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
> > > +typedef enum {
> > > +    VMPORT_CMD_GETVERSION       = 10,
> > > +    VMPORT_CMD_GETRAMSIZE       = 20,
> > > +    VMPORT_CMD_VMMOUSE_DATA     = 39,
> > > +    VMPORT_CMD_VMMOUSE_STATUS   = 40,
> > > +    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
> > > +    VMPORT_ENTRIES
> > > +} VMPortCommand;
> > > +
> > Please don't, let's leave pc.h alone. If you must add a new header for
> > vmport/vmmouse and put this stuff there.
> 
> As you can see, pc.h already contains definitions which are specific to
> vmport. E.g. TYPE_VMPORT, VMPortReadFunc(), vmport_register(),
> vmmouse_get_data(), vmmouse_set_data(). Adding this enum is not what makes
> the difference.
> It is possible to create a new vmport.h header file but it's not really
> related to this patch. It's just general refactoring. I can do that in v2 if
> you think it's appropriate.
> 
> -Liran

Well I just don't want lots of enums in pc.h

> > 
> > >   static inline void vmport_init(ISABus *bus)
> > >   {
> > >       isa_create_simple(bus, TYPE_VMPORT);
> > >   }
> > > -void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
> > > +void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque);
> > >   void vmmouse_get_data(uint32_t *data);
> > >   void vmmouse_set_data(const uint32_t *data);
> > > -- 
> > > 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 11:18     ` Liran Alon
@ 2020-03-10 11:23       ` Michael S. Tsirkin
  2020-03-10 11:40         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 11:23 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:18:44PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 11:20, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> > > As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> > > CMD_GETVERSION should return VMX type in ECX register.
> > > 
> > > Default is to fake host as VMware ESX server. But user can control
> > > this value by "-global vmport.vmx-type=X".
> > > 
> > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > ---
> > >   hw/i386/vmport.c | 13 +++++++++++++
> > >   1 file changed, 13 insertions(+)
> > > 
> > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > index a2c8ff4b59cf..c03f57f2f636 100644
> > > --- a/hw/i386/vmport.c
> > > +++ b/hw/i386/vmport.c
> > > @@ -36,6 +36,15 @@
> > >   #define VMPORT_ENTRIES 0x2c
> > >   #define VMPORT_MAGIC   0x564D5868
> > > +typedef enum {
> > > +   VMX_TYPE_UNSET = 0,
> > > +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> > > +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> > > +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> > > +   VMX_TYPE_WORKSTATION,
> > > +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> > > +} VMX_Type;
> > > +
> > Can names be prefixed with VMPort pls? VMX has specific unrelated meaning.
> > 
> > Same everywhere.
> I didn't thought it matters much given that this enum is only defined
> locally in vmport.c.
> But sure I can rename it in v2.
> 
> -Liran

Property names matter more.


> > 
> > >   #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
> > >   typedef struct VMPortState {
> > > @@ -46,6 +55,7 @@ typedef struct VMPortState {
> > >       void *opaque[VMPORT_ENTRIES];
> > >       uint32_t vmx_version;
> > > +    uint8_t vmx_type;
> > >   } VMPortState;
> > >   static VMPortState *port_state;
> > > @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
> > >       X86CPU *cpu = X86_CPU(current_cpu);
> > >       cpu->env.regs[R_EBX] = VMPORT_MAGIC;
> > > +    cpu->env.regs[R_ECX] = port_state->vmx_type;
> > >       return port_state->vmx_version;
> > >   }
> > > @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
> > >   static Property vmport_properties[] = {
> > >       /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
> > >       DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
> > > +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
> > > +                      VMX_TYPE_SCALABLE_SERVER),
> > >       DEFINE_PROP_END_OF_LIST(),
> > >   };
> > > -- 
> > > 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property
  2020-03-10 11:18       ` Michael S. Tsirkin
@ 2020-03-10 11:28         ` Liran Alon
  2020-03-10 11:44           ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:28 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 13:18, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:05:02PM +0200, Liran Alon wrote:
>> On 10/03/2020 11:32, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:01AM +0200, Liran Alon wrote:
>>>> Instead of hard-coding the VMX version, make it a VMPORT object property.
>>>> This would allow user to control it's value via "-global vmport.vmx-version=X".
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>> More detail on why this is useful?
>> It's more useful than returning a hard-coded "6" as the vmx-version...
>
> Maybe default should be 6 (a bit of explanation why 6 could be nice).
The default is indeed defined as 6. As it was before this patch.
There is not much to explain besides the fact that recent VMware 
products returns 6 here.

I don't recall any mapping between the returned version here and the 
supported set of VMPort commands. There is a separate mechanism (which 
we implement in another patch) to signal that a command is unsupported / 
failed.

The term "vmx-version" refers to the version of the Userspace-VMM of 
VMware which is called (confusingly) "vmx".

>> We have used it to preserve compatibility for some VMware guests that we run
>> as-is on top of QEMU/KVM which expects specific vmx-version or else they
>> fail to run properly.
>>
>> -Liran
> Any detail on which guest it is?
I will need to dig in production history to find it... They are usually 
proprietary appliances specially made to run as VMware VMs.
> Pretending to be a very advanced version has its pitfalls if we
> then don't behave the way vmware does, right?
In all those cases, we have taken the version number backwards, not forward.
> Figuring out the version number is I suspect a bit much to ask of users.
Most users will indeed not need to touch this. This is for advanced 
users, such as Ravello.
We usually figured this out by reverse-engineering the failed guest 
and/or examining the original VMware environment it used to run on.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 11:22       ` Michael S. Tsirkin
@ 2020-03-10 11:35         ` Liran Alon
  2020-03-10 14:24         ` Liran Alon
  1 sibling, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:35 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 13:22, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:13:21PM +0200, Liran Alon wrote:
>> On 10/03/2020 11:34, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
>>>> This is VMware documented functionallity that some guests rely on.
>>>> Returns the BIOS UUID of the current virtual machine.
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>> So this at least seems guest-visible.
>>>
>>> So I suspect you need to add properties to
>>> disable this for old machine types, to avoid
>>> breaking compatibility with live-migration.
>> It is indeed guest visible.
>> In theory, you are right that for every guest-visible change, we should make
>> sure to expose it to only new machine-types.
>>
>> However, in this case, I feel it just unnecessary over-complicates the code.
>> I don't see how a guest which previously failed to use this command, will
>> fail because after Live-Migration it could succeed.
> The reverse can happen, start guest on a new qemu, command seems to
> work, then we migrate and it fails.
>
> And I guess this applies to the version right?

Hmm good point. For backwards migration this could indeed be an issue.
Making the existence of these commands tied to machine-type should suffice.

Regarding vmx-version, because we haven't changed it yet (only created 
property), we should be fine.
On first patch that changes it, we need to tie it to machine-type as-well.

>
>> If you insist, I will add such functionality. In that case, do you think a
>> single flag will suffice for the addition of all new commands
>> (i.e. "commands-version" that it's number specifies set of commands to
>> expose), or you want to have a per-command flag?
>>
>> -Liran
> Can be a single flag but I'd just do it a boolean that enables a group
> of commands. E.g. "commands-v2".

Ok. Will do.

Thanks,
-Liran



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 06/14] hw/i386/vmport: Define enum for all commands
  2020-03-10 11:23       ` Michael S. Tsirkin
@ 2020-03-10 11:37         ` Liran Alon
  2020-03-10 11:46           ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:37 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 13:23, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:16:51PM +0200, Liran Alon wrote:
>> On 10/03/2020 11:28, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:03AM +0200, Liran Alon wrote:
>>>> No functional change.
>>>>
>>>> Defining an enum for all VMPort commands have the following advantages:
>>>> * It gets rid of the error-prone requirement to update VMPORT_ENTRIES
>>>> when new VMPort commands are added to QEMU.
>>>> * It makes it clear to know by looking at one place at the source, what
>>>> are all the VMPort commands supported by QEMU.
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>> ---
>>>>
>>>> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
>>>> index d5ac76d54e1f..7f15a01137b1 100644
>>>> --- a/include/hw/i386/pc.h
>>>> +++ b/include/hw/i386/pc.h
>>>> @@ -138,12 +138,21 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled);
>>>>    #define TYPE_VMPORT "vmport"
>>>>    typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
>>>> +typedef enum {
>>>> +    VMPORT_CMD_GETVERSION       = 10,
>>>> +    VMPORT_CMD_GETRAMSIZE       = 20,
>>>> +    VMPORT_CMD_VMMOUSE_DATA     = 39,
>>>> +    VMPORT_CMD_VMMOUSE_STATUS   = 40,
>>>> +    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
>>>> +    VMPORT_ENTRIES
>>>> +} VMPortCommand;
>>>> +
>>> Please don't, let's leave pc.h alone. If you must add a new header for
>>> vmport/vmmouse and put this stuff there.
>> As you can see, pc.h already contains definitions which are specific to
>> vmport. E.g. TYPE_VMPORT, VMPortReadFunc(), vmport_register(),
>> vmmouse_get_data(), vmmouse_set_data(). Adding this enum is not what makes
>> the difference.
>> It is possible to create a new vmport.h header file but it's not really
>> related to this patch. It's just general refactoring. I can do that in v2 if
>> you think it's appropriate.
>>
>> -Liran
> Well I just don't want lots of enums in pc.h

This is the only one which is global, and makes sense as it's directly 
related to vmport_register() exposed API.
Similar to how the VMPortReadFunc typedef is put in here.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 11:23       ` Michael S. Tsirkin
@ 2020-03-10 11:40         ` Liran Alon
  2020-03-10 11:47           ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:40 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 13:23, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:18:44PM +0200, Liran Alon wrote:
>> On 10/03/2020 11:20, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
>>>> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
>>>> CMD_GETVERSION should return VMX type in ECX register.
>>>>
>>>> Default is to fake host as VMware ESX server. But user can control
>>>> this value by "-global vmport.vmx-type=X".
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>> ---
>>>>    hw/i386/vmport.c | 13 +++++++++++++
>>>>    1 file changed, 13 insertions(+)
>>>>
>>>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>>>> index a2c8ff4b59cf..c03f57f2f636 100644
>>>> --- a/hw/i386/vmport.c
>>>> +++ b/hw/i386/vmport.c
>>>> @@ -36,6 +36,15 @@
>>>>    #define VMPORT_ENTRIES 0x2c
>>>>    #define VMPORT_MAGIC   0x564D5868
>>>> +typedef enum {
>>>> +   VMX_TYPE_UNSET = 0,
>>>> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
>>>> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
>>>> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
>>>> +   VMX_TYPE_WORKSTATION,
>>>> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
>>>> +} VMX_Type;
>>>> +
>>> Can names be prefixed with VMPort pls? VMX has specific unrelated meaning.
>>>
>>> Same everywhere.
>> I didn't thought it matters much given that this enum is only defined
>> locally in vmport.c.
>> But sure I can rename it in v2.
>>
>> -Liran
> Property names matter more.
You mean to rename "vmx-version" and "vmx-type" to "vmport-vmx-version" 
and "vmport-vmx-type"?
They are properties of vmport object so it seems redundant no? Also 
doesn't seem consistent which how properties of other objects in QEMU 
are named. (E.g. PVSCSI have "use_msg" property. Not "pvscsi_use_msg").
But will do as you will suggest. Just asking for guidance of what you 
are looking for.

-Liran

>
>
>>>>    #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
>>>>    typedef struct VMPortState {
>>>> @@ -46,6 +55,7 @@ typedef struct VMPortState {
>>>>        void *opaque[VMPORT_ENTRIES];
>>>>        uint32_t vmx_version;
>>>> +    uint8_t vmx_type;
>>>>    } VMPortState;
>>>>    static VMPortState *port_state;
>>>> @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>>>>        X86CPU *cpu = X86_CPU(current_cpu);
>>>>        cpu->env.regs[R_EBX] = VMPORT_MAGIC;
>>>> +    cpu->env.regs[R_ECX] = port_state->vmx_type;
>>>>        return port_state->vmx_version;
>>>>    }
>>>> @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>>>>    static Property vmport_properties[] = {
>>>>        /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
>>>>        DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
>>>> +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
>>>> +                      VMX_TYPE_SCALABLE_SERVER),
>>>>        DEFINE_PROP_END_OF_LIST(),
>>>>    };
>>>> -- 
>>>> 2.20.1


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property
  2020-03-10 11:28         ` Liran Alon
@ 2020-03-10 11:44           ` Michael S. Tsirkin
  2020-03-10 11:53             ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 11:44 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:28:32PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 13:18, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:05:02PM +0200, Liran Alon wrote:
> > > On 10/03/2020 11:32, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 01:54:01AM +0200, Liran Alon wrote:
> > > > > Instead of hard-coding the VMX version, make it a VMPORT object property.
> > > > > This would allow user to control it's value via "-global vmport.vmx-version=X".
> > > > > 
> > > > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > > More detail on why this is useful?
> > > It's more useful than returning a hard-coded "6" as the vmx-version...
> > 
> > Maybe default should be 6 (a bit of explanation why 6 could be nice).
> The default is indeed defined as 6. As it was before this patch.
> There is not much to explain besides the fact that recent VMware products
> returns 6 here.
> 
> I don't recall any mapping between the returned version here and the
> supported set of VMPort commands. There is a separate mechanism (which we
> implement in another patch) to signal that a command is unsupported /
> failed.
> 
> The term "vmx-version" refers to the version of the Userspace-VMM of VMware
> which is called (confusingly) "vmx".

Short for Virtual Machine eXecutable. Sigh.  People do come up with
names that aren't great. I don't even know whether vmware was there
first and intel shouldn't have shortened virtual machine extensions to
vmx, but in KVM and QEMU it's quite entrenched by now. So let's try to
avoid this in code. If you like how about VMPortExec and
vm-exec-version?  Also lets you use CamelCase consistently and not a mix
of underscores and CamelCase.

> > > We have used it to preserve compatibility for some VMware guests that we run
> > > as-is on top of QEMU/KVM which expects specific vmx-version or else they
> > > fail to run properly.
> > > 
> > > -Liran
> > Any detail on which guest it is?
> I will need to dig in production history to find it... They are usually
> proprietary appliances specially made to run as VMware VMs.
> > Pretending to be a very advanced version has its pitfalls if we
> > then don't behave the way vmware does, right?
> In all those cases, we have taken the version number backwards, not forward.
> > Figuring out the version number is I suspect a bit much to ask of users.
> Most users will indeed not need to touch this. This is for advanced users,
> such as Ravello.
> We usually figured this out by reverse-engineering the failed guest and/or
> examining the original VMware environment it used to run on.
> 
> -Liran


Right if you want this for debugging, prefix property with "x-" so it does
not need to be maintained. Point being, maintaining low level interfaces
has real cost ...

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10  9:22   ` Michael S. Tsirkin
@ 2020-03-10 11:44     ` Liran Alon
  2020-03-10 12:01       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:44 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 11:22, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
>> This is VMware documented functionallity that some guests rely on.
>> Returns the BIOS UUID of the current virtual machine.
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>> ---
>>   hw/i386/vmport.c     | 14 ++++++++++++++
>>   include/hw/i386/pc.h |  1 +
>>   2 files changed, 15 insertions(+)
>>
>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>> index 2ae5afc42b50..7687f3368a55 100644
>> --- a/hw/i386/vmport.c
>> +++ b/hw/i386/vmport.c
>> @@ -26,6 +26,7 @@
>>   #include "hw/i386/pc.h"
>>   #include "hw/input/i8042.h"
>>   #include "hw/qdev-properties.h"
>> +#include "sysemu/sysemu.h"
>>   #include "sysemu/hw_accel.h"
>>   #include "qemu/log.h"
>>   #include "trace.h"
>> @@ -121,6 +122,18 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>>       return port_state->vmx_version;
>>   }
>>   
>> +static uint32_t vmport_cmd_get_bios_uuid(void *opaque, uint32_t addr)
>> +{
>> +    X86CPU *cpu = X86_CPU(current_cpu);
>> +    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);
>> +
>> +    cpu->env.regs[R_EAX] = uuid_parts[0];
>> +    cpu->env.regs[R_EBX] = uuid_parts[1];
>> +    cpu->env.regs[R_ECX] = uuid_parts[2];
>> +    cpu->env.regs[R_EDX] = uuid_parts[3];
>> +    return cpu->env.regs[R_EAX];
>> +}
>> +
> Should be LE here?

No. This is how the UUID is expected to be returned to guest.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 06/14] hw/i386/vmport: Define enum for all commands
  2020-03-10 11:37         ` Liran Alon
@ 2020-03-10 11:46           ` Michael S. Tsirkin
  2020-03-10 11:54             ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 11:46 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:37:40PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 13:23, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:16:51PM +0200, Liran Alon wrote:
> > > On 10/03/2020 11:28, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 01:54:03AM +0200, Liran Alon wrote:
> > > > > No functional change.
> > > > > 
> > > > > Defining an enum for all VMPort commands have the following advantages:
> > > > > * It gets rid of the error-prone requirement to update VMPORT_ENTRIES
> > > > > when new VMPort commands are added to QEMU.
> > > > > * It makes it clear to know by looking at one place at the source, what
> > > > > are all the VMPort commands supported by QEMU.
> > > > > 
> > > > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > > > ---
> > > > > 
> > > > > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> > > > > index d5ac76d54e1f..7f15a01137b1 100644
> > > > > --- a/include/hw/i386/pc.h
> > > > > +++ b/include/hw/i386/pc.h
> > > > > @@ -138,12 +138,21 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled);
> > > > >    #define TYPE_VMPORT "vmport"
> > > > >    typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
> > > > > +typedef enum {
> > > > > +    VMPORT_CMD_GETVERSION       = 10,
> > > > > +    VMPORT_CMD_GETRAMSIZE       = 20,
> > > > > +    VMPORT_CMD_VMMOUSE_DATA     = 39,
> > > > > +    VMPORT_CMD_VMMOUSE_STATUS   = 40,
> > > > > +    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
> > > > > +    VMPORT_ENTRIES
> > > > > +} VMPortCommand;
> > > > > +
> > > > Please don't, let's leave pc.h alone. If you must add a new header for
> > > > vmport/vmmouse and put this stuff there.
> > > As you can see, pc.h already contains definitions which are specific to
> > > vmport. E.g. TYPE_VMPORT, VMPortReadFunc(), vmport_register(),
> > > vmmouse_get_data(), vmmouse_set_data(). Adding this enum is not what makes
> > > the difference.
> > > It is possible to create a new vmport.h header file but it's not really
> > > related to this patch. It's just general refactoring. I can do that in v2 if
> > > you think it's appropriate.
> > > 
> > > -Liran
> > Well I just don't want lots of enums in pc.h
> 
> This is the only one which is global, and makes sense as it's directly
> related to vmport_register() exposed API.
> Similar to how the VMPortReadFunc typedef is put in here.
> 
> -Liran

So pls find another home for this stuff. Whoever touches legacy code
gets to clean it up a bit first :) Tough but that's the only stick
maintainers have to make maintainance happen.

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 11:40         ` Liran Alon
@ 2020-03-10 11:47           ` Michael S. Tsirkin
  0 siblings, 0 replies; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 11:47 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:40:24PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 13:23, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:18:44PM +0200, Liran Alon wrote:
> > > On 10/03/2020 11:20, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> > > > > As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> > > > > CMD_GETVERSION should return VMX type in ECX register.
> > > > > 
> > > > > Default is to fake host as VMware ESX server. But user can control
> > > > > this value by "-global vmport.vmx-type=X".
> > > > > 
> > > > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > > > ---
> > > > >    hw/i386/vmport.c | 13 +++++++++++++
> > > > >    1 file changed, 13 insertions(+)
> > > > > 
> > > > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > > > index a2c8ff4b59cf..c03f57f2f636 100644
> > > > > --- a/hw/i386/vmport.c
> > > > > +++ b/hw/i386/vmport.c
> > > > > @@ -36,6 +36,15 @@
> > > > >    #define VMPORT_ENTRIES 0x2c
> > > > >    #define VMPORT_MAGIC   0x564D5868
> > > > > +typedef enum {
> > > > > +   VMX_TYPE_UNSET = 0,
> > > > > +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> > > > > +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> > > > > +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> > > > > +   VMX_TYPE_WORKSTATION,
> > > > > +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> > > > > +} VMX_Type;
> > > > > +
> > > > Can names be prefixed with VMPort pls? VMX has specific unrelated meaning.
> > > > 
> > > > Same everywhere.
> > > I didn't thought it matters much given that this enum is only defined
> > > locally in vmport.c.
> > > But sure I can rename it in v2.
> > > 
> > > -Liran
> > Property names matter more.
> You mean to rename "vmx-version" and "vmx-type" to "vmport-vmx-version" and
> "vmport-vmx-type"?
> They are properties of vmport object so it seems redundant no? Also doesn't
> seem consistent which how properties of other objects in QEMU are named.
> (E.g. PVSCSI have "use_msg" property. Not "pvscsi_use_msg").
> But will do as you will suggest. Just asking for guidance of what you are
> looking for.
> 
> -Liran

Sorry - no I'm looking for an alternative to "vmx" everywhere but especially
in property names which need to be maintained. Maybe vm-exec or vmexec
as I suggested separately.

> > 
> > 
> > > > >    #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
> > > > >    typedef struct VMPortState {
> > > > > @@ -46,6 +55,7 @@ typedef struct VMPortState {
> > > > >        void *opaque[VMPORT_ENTRIES];
> > > > >        uint32_t vmx_version;
> > > > > +    uint8_t vmx_type;
> > > > >    } VMPortState;
> > > > >    static VMPortState *port_state;
> > > > > @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
> > > > >        X86CPU *cpu = X86_CPU(current_cpu);
> > > > >        cpu->env.regs[R_EBX] = VMPORT_MAGIC;
> > > > > +    cpu->env.regs[R_ECX] = port_state->vmx_type;
> > > > >        return port_state->vmx_version;
> > > > >    }
> > > > > @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
> > > > >    static Property vmport_properties[] = {
> > > > >        /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
> > > > >        DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
> > > > > +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
> > > > > +                      VMX_TYPE_SCALABLE_SERVER),
> > > > >        DEFINE_PROP_END_OF_LIST(),
> > > > >    };
> > > > > -- 
> > > > > 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property
  2020-03-10 11:44           ` Michael S. Tsirkin
@ 2020-03-10 11:53             ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:53 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 13:44, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:28:32PM +0200, Liran Alon wrote:
>> On 10/03/2020 13:18, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:05:02PM +0200, Liran Alon wrote:
>>>> On 10/03/2020 11:32, Michael S. Tsirkin wrote:
>>>>> On Tue, Mar 10, 2020 at 01:54:01AM +0200, Liran Alon wrote:
>>>>>> Instead of hard-coding the VMX version, make it a VMPORT object property.
>>>>>> This would allow user to control it's value via "-global vmport.vmx-version=X".
>>>>>>
>>>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>>> More detail on why this is useful?
>>>> It's more useful than returning a hard-coded "6" as the vmx-version...
>>> Maybe default should be 6 (a bit of explanation why 6 could be nice).
>> The default is indeed defined as 6. As it was before this patch.
>> There is not much to explain besides the fact that recent VMware products
>> returns 6 here.
>>
>> I don't recall any mapping between the returned version here and the
>> supported set of VMPort commands. There is a separate mechanism (which we
>> implement in another patch) to signal that a command is unsupported /
>> failed.
>>
>> The term "vmx-version" refers to the version of the Userspace-VMM of VMware
>> which is called (confusingly) "vmx".
> Short for Virtual Machine eXecutable. Sigh.  People do come up with
> names that aren't great. I don't even know whether vmware was there
> first and intel shouldn't have shortened virtual machine extensions to
> vmx, but in KVM and QEMU it's quite entrenched by now. So let's try to
> avoid this in code. If you like how about VMPortExec and
> vm-exec-version?
In my opinion, this is more confusing. Terms should be evaluated based 
on the context you read them.
It seems more confusing that this field is named "vmx-version" on 
open-vm-tools and we name it "vm-exec-version".
So if you don't strongly disagree, I prefer to remain with names similar 
to VMware.
> Also lets you use CamelCase consistently and not a mix
> of underscores and CamelCase.
Where do you refer to?

Looking at QEMU code, properties are always named with "bla-bla2-bla3" 
convention.
Also, variables of structs are also named with "bla_bla2" convention.
CamelCase are only used for type definitions.
>
>>>> We have used it to preserve compatibility for some VMware guests that we run
>>>> as-is on top of QEMU/KVM which expects specific vmx-version or else they
>>>> fail to run properly.
>>>>
>>>> -Liran
>>> Any detail on which guest it is?
>> I will need to dig in production history to find it... They are usually
>> proprietary appliances specially made to run as VMware VMs.
>>> Pretending to be a very advanced version has its pitfalls if we
>>> then don't behave the way vmware does, right?
>> In all those cases, we have taken the version number backwards, not forward.
>>> Figuring out the version number is I suspect a bit much to ask of users.
>> Most users will indeed not need to touch this. This is for advanced users,
>> such as Ravello.
>> We usually figured this out by reverse-engineering the failed guest and/or
>> examining the original VMware environment it used to run on.
>>
>> -Liran
>
> Right if you want this for debugging, prefix property with "x-" so it does
> not need to be maintained. Point being, maintaining low level interfaces
> has real cost ...

It's not for debugging. It's for being able to run real VMware VMs as-is 
on top of QEMU/KVM.
I don't see it much different than the existing ability to manipulate 
SMBIOS values from QEMU command-line or add ACPI tables to make a guest 
run properly.
(Which we also manipulated sometimes based on reverse-engineering the 
failed guest and/or examining the original VMware environment).
I can prefix it with "x-" if you wish to signal it's experimental, but I 
don't really think this is the case here.

-Liran







^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 06/14] hw/i386/vmport: Define enum for all commands
  2020-03-10 11:46           ` Michael S. Tsirkin
@ 2020-03-10 11:54             ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 11:54 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 13:46, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:37:40PM +0200, Liran Alon wrote:
>> On 10/03/2020 13:23, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:16:51PM +0200, Liran Alon wrote:
>>>> On 10/03/2020 11:28, Michael S. Tsirkin wrote:
>>>>> On Tue, Mar 10, 2020 at 01:54:03AM +0200, Liran Alon wrote:
>>>>>> No functional change.
>>>>>>
>>>>>> Defining an enum for all VMPort commands have the following advantages:
>>>>>> * It gets rid of the error-prone requirement to update VMPORT_ENTRIES
>>>>>> when new VMPort commands are added to QEMU.
>>>>>> * It makes it clear to know by looking at one place at the source, what
>>>>>> are all the VMPort commands supported by QEMU.
>>>>>>
>>>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>>>> ---
>>>>>>
>>>>>> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
>>>>>> index d5ac76d54e1f..7f15a01137b1 100644
>>>>>> --- a/include/hw/i386/pc.h
>>>>>> +++ b/include/hw/i386/pc.h
>>>>>> @@ -138,12 +138,21 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled);
>>>>>>     #define TYPE_VMPORT "vmport"
>>>>>>     typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
>>>>>> +typedef enum {
>>>>>> +    VMPORT_CMD_GETVERSION       = 10,
>>>>>> +    VMPORT_CMD_GETRAMSIZE       = 20,
>>>>>> +    VMPORT_CMD_VMMOUSE_DATA     = 39,
>>>>>> +    VMPORT_CMD_VMMOUSE_STATUS   = 40,
>>>>>> +    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
>>>>>> +    VMPORT_ENTRIES
>>>>>> +} VMPortCommand;
>>>>>> +
>>>>> Please don't, let's leave pc.h alone. If you must add a new header for
>>>>> vmport/vmmouse and put this stuff there.
>>>> As you can see, pc.h already contains definitions which are specific to
>>>> vmport. E.g. TYPE_VMPORT, VMPortReadFunc(), vmport_register(),
>>>> vmmouse_get_data(), vmmouse_set_data(). Adding this enum is not what makes
>>>> the difference.
>>>> It is possible to create a new vmport.h header file but it's not really
>>>> related to this patch. It's just general refactoring. I can do that in v2 if
>>>> you think it's appropriate.
>>>>
>>>> -Liran
>>> Well I just don't want lots of enums in pc.h
>> This is the only one which is global, and makes sense as it's directly
>> related to vmport_register() exposed API.
>> Similar to how the VMPortReadFunc typedef is put in here.
>>
>> -Liran
> So pls find another home for this stuff. Whoever touches legacy code
> gets to clean it up a bit first :) Tough but that's the only stick
> maintainers have to make maintainance happen.

Will do then in v2. :)

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 11:44     ` Liran Alon
@ 2020-03-10 12:01       ` Michael S. Tsirkin
  2020-03-10 12:37         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 12:01 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 04:44:54AM -0700, Liran Alon wrote:
> 
> On 10/03/2020 11:22, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
> > > This is VMware documented functionallity that some guests rely on.
> > > Returns the BIOS UUID of the current virtual machine.
> > > 
> > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > ---
> > >   hw/i386/vmport.c     | 14 ++++++++++++++
> > >   include/hw/i386/pc.h |  1 +
> > >   2 files changed, 15 insertions(+)
> > > 
> > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > index 2ae5afc42b50..7687f3368a55 100644
> > > --- a/hw/i386/vmport.c
> > > +++ b/hw/i386/vmport.c
> > > @@ -26,6 +26,7 @@
> > >   #include "hw/i386/pc.h"
> > >   #include "hw/input/i8042.h"
> > >   #include "hw/qdev-properties.h"
> > > +#include "sysemu/sysemu.h"
> > >   #include "sysemu/hw_accel.h"
> > >   #include "qemu/log.h"
> > >   #include "trace.h"
> > > @@ -121,6 +122,18 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
> > >       return port_state->vmx_version;
> > >   }
> > > +static uint32_t vmport_cmd_get_bios_uuid(void *opaque, uint32_t addr)
> > > +{
> > > +    X86CPU *cpu = X86_CPU(current_cpu);
> > > +    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);

BTW missing space before * here.

> > > +
> > > +    cpu->env.regs[R_EAX] = uuid_parts[0];
> > > +    cpu->env.regs[R_EBX] = uuid_parts[1];
> > > +    cpu->env.regs[R_ECX] = uuid_parts[2];
> > > +    cpu->env.regs[R_EDX] = uuid_parts[3];
> > > +    return cpu->env.regs[R_EAX];
> > > +}
> > > +
> > Should be LE here?
> 
> No. This is how the UUID is expected to be returned to guest.
> 
> -Liran
> 

Um *how* is it expected to be returned? IIUC this takes network order
byte data and handles it as host endian. Assuming it's right on an LE
host it isn't on a BE host.  So I am guessing you want le32_to_cpu here.

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-09 23:54 ` [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION Liran Alon
  2020-03-10  9:20   ` Michael S. Tsirkin
@ 2020-03-10 12:14   ` Michael S. Tsirkin
  2020-03-10 12:25     ` Liran Alon
  1 sibling, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 12:14 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> CMD_GETVERSION should return VMX type in ECX register.
> 
> Default is to fake host as VMware ESX server. But user can control
> this value by "-global vmport.vmx-type=X".
> 
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> ---
>  hw/i386/vmport.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index a2c8ff4b59cf..c03f57f2f636 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -36,6 +36,15 @@
>  #define VMPORT_ENTRIES 0x2c
>  #define VMPORT_MAGIC   0x564D5868
>  
> +typedef enum {
> +   VMX_TYPE_UNSET = 0,
> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> +   VMX_TYPE_WORKSTATION,
> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> +} VMX_Type;
> +

Is this really VMX type? And do users care what it is?
Also, how about friendlier string values so people don't need to
figure out code numbers?

>  #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
>  
>  typedef struct VMPortState {
> @@ -46,6 +55,7 @@ typedef struct VMPortState {
>      void *opaque[VMPORT_ENTRIES];
>  
>      uint32_t vmx_version;
> +    uint8_t vmx_type;
>  } VMPortState;
>  
>  static VMPortState *port_state;
> @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>      X86CPU *cpu = X86_CPU(current_cpu);
>  
>      cpu->env.regs[R_EBX] = VMPORT_MAGIC;
> +    cpu->env.regs[R_ECX] = port_state->vmx_type;
>      return port_state->vmx_version;
>  }
>  
> @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>  static Property vmport_properties[] = {
>      /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
>      DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
> +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
> +                      VMX_TYPE_SCALABLE_SERVER),
>      DEFINE_PROP_END_OF_LIST(),
>  };
>  
> -- 
> 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 12:14   ` Michael S. Tsirkin
@ 2020-03-10 12:25     ` Liran Alon
  2020-03-10 12:35       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 12:25 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 14:14, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
>> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
>> CMD_GETVERSION should return VMX type in ECX register.
>>
>> Default is to fake host as VMware ESX server. But user can control
>> this value by "-global vmport.vmx-type=X".
>>
>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>> ---
>>   hw/i386/vmport.c | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>> index a2c8ff4b59cf..c03f57f2f636 100644
>> --- a/hw/i386/vmport.c
>> +++ b/hw/i386/vmport.c
>> @@ -36,6 +36,15 @@
>>   #define VMPORT_ENTRIES 0x2c
>>   #define VMPORT_MAGIC   0x564D5868
>>   
>> +typedef enum {
>> +   VMX_TYPE_UNSET = 0,
>> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
>> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
>> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
>> +   VMX_TYPE_WORKSTATION,
>> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
>> +} VMX_Type;
>> +
> Is this really VMX type? And do users care what it is?
This enum is copied from open-vm-tools source code 
(lib/include/vm_version.h). This is how it's called in VMware Tools 
terminology... Don't blame me :)
> Also, how about friendlier string values so people don't need to
> figure out code numbers?

I could have defined a new PropertyInfo struct in 
hw/core/qdev-properties.c for this enum and then define a proper macro 
in qdev-properties.h.
But it seems like an overkill for a value that is suppose to rarely be 
changed. So I thought this should suffice for now for user-experience 
perspective.
If you think otherwise, I can do what I just suggested above.

-Liran

>
>>   #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
>>   
>>   typedef struct VMPortState {
>> @@ -46,6 +55,7 @@ typedef struct VMPortState {
>>       void *opaque[VMPORT_ENTRIES];
>>   
>>       uint32_t vmx_version;
>> +    uint8_t vmx_type;
>>   } VMPortState;
>>   
>>   static VMPortState *port_state;
>> @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>>       X86CPU *cpu = X86_CPU(current_cpu);
>>   
>>       cpu->env.regs[R_EBX] = VMPORT_MAGIC;
>> +    cpu->env.regs[R_ECX] = port_state->vmx_type;
>>       return port_state->vmx_version;
>>   }
>>   
>> @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
>>   static Property vmport_properties[] = {
>>       /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
>>       DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
>> +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
>> +                      VMX_TYPE_SCALABLE_SERVER),
>>       DEFINE_PROP_END_OF_LIST(),
>>   };
>>   
>> -- 
>> 2.20.1


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure
  2020-03-10 10:53     ` Liran Alon
@ 2020-03-10 12:27       ` Michael S. Tsirkin
  2020-03-10 12:29         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 12:27 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 12:53:28PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 11:29, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:54:09AM +0200, Liran Alon wrote:
> > > No functional change.
> > > This information will be used by following patches.
> > > 
> > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > ---
> > >   linux-headers/asm-x86/kvm.h | 4 ++++
> > >   target/i386/cpu.h           | 1 +
> > >   target/i386/kvm.c           | 6 +++---
> > >   3 files changed, 8 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
> > > index 503d3f42da16..99eeaaf2f0b4 100644
> > > --- a/linux-headers/asm-x86/kvm.h
> > > +++ b/linux-headers/asm-x86/kvm.h
> > > @@ -446,4 +446,8 @@ struct kvm_pmu_event_filter {
> > >   #define KVM_PMU_EVENT_ALLOW 0
> > >   #define KVM_PMU_EVENT_DENY 1
> > > +/* From arch/x86/kvm/lapic.h */
> > > +#define KVM_APIC_BUS_CYCLE_NS       1
> > > +#define KVM_APIC_BUS_FREQUENCY      (1000000000ULL / KVM_APIC_BUS_CYCLE_NS)
> > > +
> > >   #endif /* _ASM_X86_KVM_H */
> > 
> > This header is auto-generated from UAPI - you can't add
> > your own stuff here.
> Oh I didn't notice that. OK, I will move definitions to somewhere else.
> Is it fine by you if I will just put them then in target/i386/kvm.c
> directly?
> Or do you prefer I will put them in target/i386/kvm_i386.h
> 
> -Liran
> 

That's Paolo's area. Myself, I don't really know what this is doing,
nor how is this supposed to work e.g. on TCG.

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure
  2020-03-10 12:27       ` Michael S. Tsirkin
@ 2020-03-10 12:29         ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 12:29 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 14:27, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 12:53:28PM +0200, Liran Alon wrote:
>> On 10/03/2020 11:29, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:09AM +0200, Liran Alon wrote:
>>>> No functional change.
>>>> This information will be used by following patches.
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>> ---
>>>>    linux-headers/asm-x86/kvm.h | 4 ++++
>>>>    target/i386/cpu.h           | 1 +
>>>>    target/i386/kvm.c           | 6 +++---
>>>>    3 files changed, 8 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
>>>> index 503d3f42da16..99eeaaf2f0b4 100644
>>>> --- a/linux-headers/asm-x86/kvm.h
>>>> +++ b/linux-headers/asm-x86/kvm.h
>>>> @@ -446,4 +446,8 @@ struct kvm_pmu_event_filter {
>>>>    #define KVM_PMU_EVENT_ALLOW 0
>>>>    #define KVM_PMU_EVENT_DENY 1
>>>> +/* From arch/x86/kvm/lapic.h */
>>>> +#define KVM_APIC_BUS_CYCLE_NS       1
>>>> +#define KVM_APIC_BUS_FREQUENCY      (1000000000ULL / KVM_APIC_BUS_CYCLE_NS)
>>>> +
>>>>    #endif /* _ASM_X86_KVM_H */
>>> This header is auto-generated from UAPI - you can't add
>>> your own stuff here.
>> Oh I didn't notice that. OK, I will move definitions to somewhere else.
>> Is it fine by you if I will just put them then in target/i386/kvm.c
>> directly?
>> Or do you prefer I will put them in target/i386/kvm_i386.h
>>
>> -Liran
>>
> That's Paolo's area. Myself, I don't really know what this is doing,
> nor how is this supposed to work e.g. on TCG.

The field will remain zero on TCG and vmport command which use it will fail.
OK, I will just move it to target/i386/kvm.c and see if Paolo objects.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 12:25     ` Liran Alon
@ 2020-03-10 12:35       ` Michael S. Tsirkin
  2020-03-10 12:43         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 12:35 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 14:14, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> > > As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> > > CMD_GETVERSION should return VMX type in ECX register.
> > > 
> > > Default is to fake host as VMware ESX server. But user can control
> > > this value by "-global vmport.vmx-type=X".
> > > 
> > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > ---
> > >   hw/i386/vmport.c | 13 +++++++++++++
> > >   1 file changed, 13 insertions(+)
> > > 
> > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > index a2c8ff4b59cf..c03f57f2f636 100644
> > > --- a/hw/i386/vmport.c
> > > +++ b/hw/i386/vmport.c
> > > @@ -36,6 +36,15 @@
> > >   #define VMPORT_ENTRIES 0x2c
> > >   #define VMPORT_MAGIC   0x564D5868
> > > +typedef enum {
> > > +   VMX_TYPE_UNSET = 0,
> > > +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> > > +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> > > +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> > > +   VMX_TYPE_WORKSTATION,
> > > +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> > > +} VMX_Type;
> > > +
> > Is this really VMX type? And do users care what it is?
> This enum is copied from open-vm-tools source code
> (lib/include/vm_version.h). This is how it's called in VMware Tools
> terminology... Don't blame me :)

I don't even want to go look at it to check license compatibility, but
IMHO that's just another reason to avoid copying it.
Copying bad code isn't a good idea unless needed for
compatibility.


> > Also, how about friendlier string values so people don't need to
> > figure out code numbers?
> 
> I could have defined a new PropertyInfo struct in hw/core/qdev-properties.c
> for this enum and then define a proper macro in qdev-properties.h.
> But it seems like an overkill for a value that is suppose to rarely be
> changed. So I thought this should suffice for now for user-experience
> perspective.
> If you think otherwise, I can do what I just suggested above.
> 
> -Liran

I think that's better, and this allows you to use official
product names that people can relate to.

Alternatively just drop this enum completely.  As far as you are
concerned it's just a number VM executable gives together with the
version, right?  We don't even need the enum, just set it to 2 and add a
code comment saying it's esx server.


> > 
> > >   #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
> > >   typedef struct VMPortState {
> > > @@ -46,6 +55,7 @@ typedef struct VMPortState {
> > >       void *opaque[VMPORT_ENTRIES];
> > >       uint32_t vmx_version;
> > > +    uint8_t vmx_type;
> > >   } VMPortState;
> > >   static VMPortState *port_state;
> > > @@ -114,6 +124,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
> > >       X86CPU *cpu = X86_CPU(current_cpu);
> > >       cpu->env.regs[R_EBX] = VMPORT_MAGIC;
> > > +    cpu->env.regs[R_ECX] = port_state->vmx_type;
> > >       return port_state->vmx_version;
> > >   }
> > > @@ -173,6 +184,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
> > >   static Property vmport_properties[] = {
> > >       /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
> > >       DEFINE_PROP_UINT32("vmx-version", VMPortState, vmx_version, 6),
> > > +    DEFINE_PROP_UINT8("vmx-type", VMPortState, vmx_type,
> > > +                      VMX_TYPE_SCALABLE_SERVER),
> > >       DEFINE_PROP_END_OF_LIST(),
> > >   };
> > > -- 
> > > 2.20.1



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 12:01       ` Michael S. Tsirkin
@ 2020-03-10 12:37         ` Liran Alon
  2020-03-10 13:01           ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 12:37 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 14:01, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 04:44:54AM -0700, Liran Alon wrote:
>> On 10/03/2020 11:22, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
>>>> This is VMware documented functionallity that some guests rely on.
>>>> Returns the BIOS UUID of the current virtual machine.
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>> ---
>>>>    hw/i386/vmport.c     | 14 ++++++++++++++
>>>>    include/hw/i386/pc.h |  1 +
>>>>    2 files changed, 15 insertions(+)
>>>>
>>>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>>>> index 2ae5afc42b50..7687f3368a55 100644
>>>> --- a/hw/i386/vmport.c
>>>> +++ b/hw/i386/vmport.c
>>>> @@ -26,6 +26,7 @@
>>>>    #include "hw/i386/pc.h"
>>>>    #include "hw/input/i8042.h"
>>>>    #include "hw/qdev-properties.h"
>>>> +#include "sysemu/sysemu.h"
>>>>    #include "sysemu/hw_accel.h"
>>>>    #include "qemu/log.h"
>>>>    #include "trace.h"
>>>> @@ -121,6 +122,18 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
>>>>        return port_state->vmx_version;
>>>>    }
>>>> +static uint32_t vmport_cmd_get_bios_uuid(void *opaque, uint32_t addr)
>>>> +{
>>>> +    X86CPU *cpu = X86_CPU(current_cpu);
>>>> +    uint32_t *uuid_parts = (uint32_t*)(qemu_uuid.data);
> BTW missing space before * here.
Yes. I'm fixing this in v2. So the Patchew bot email.
>
>>>> +
>>>> +    cpu->env.regs[R_EAX] = uuid_parts[0];
>>>> +    cpu->env.regs[R_EBX] = uuid_parts[1];
>>>> +    cpu->env.regs[R_ECX] = uuid_parts[2];
>>>> +    cpu->env.regs[R_EDX] = uuid_parts[3];
>>>> +    return cpu->env.regs[R_EAX];
>>>> +}
>>>> +
>>> Should be LE here?
>> No. This is how the UUID is expected to be returned to guest.
>>
>> -Liran
>>
> Um *how* is it expected to be returned? IIUC this takes network order
> byte data and handles it as host endian. Assuming it's right on an LE
> host it isn't on a BE host.  So I am guessing you want le32_to_cpu here.

Oh I see. Because you say this code can also executes on a BE host using 
TCG.

qemu_uuid.data is in the byte order specified by RFC4122, which is 
indeed network-order.
The byte order of each register should be LE (As in x86 host).

E,g. For VMware's uuid.bios = " 56 4d 3e 7a 92 ee 4c 46-e8 0d 86 f3 68 
a0 cb e7", this should return:
EAX: 7a3e4d56
EBX: 464cee92
ECX: f3860de8
EDX: e7cba068

So I think you are right this should be le32_to_cpu(). i.e. Treat the uuid_part[x] as little-endian and convert it to native CPU format.

I always get confused in this :)

Thanks,
-Liran









^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 12:35       ` Michael S. Tsirkin
@ 2020-03-10 12:43         ` Liran Alon
  2020-03-10 12:53           ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 12:43 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 14:35, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
>> On 10/03/2020 14:14, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
>>>> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
>>>> CMD_GETVERSION should return VMX type in ECX register.
>>>>
>>>> Default is to fake host as VMware ESX server. But user can control
>>>> this value by "-global vmport.vmx-type=X".
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>> ---
>>>>    hw/i386/vmport.c | 13 +++++++++++++
>>>>    1 file changed, 13 insertions(+)
>>>>
>>>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>>>> index a2c8ff4b59cf..c03f57f2f636 100644
>>>> --- a/hw/i386/vmport.c
>>>> +++ b/hw/i386/vmport.c
>>>> @@ -36,6 +36,15 @@
>>>>    #define VMPORT_ENTRIES 0x2c
>>>>    #define VMPORT_MAGIC   0x564D5868
>>>> +typedef enum {
>>>> +   VMX_TYPE_UNSET = 0,
>>>> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
>>>> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
>>>> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
>>>> +   VMX_TYPE_WORKSTATION,
>>>> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
>>>> +} VMX_Type;
>>>> +
>>> Is this really VMX type? And do users care what it is?
>> This enum is copied from open-vm-tools source code
>> (lib/include/vm_version.h). This is how it's called in VMware Tools
>> terminology... Don't blame me :)
> I don't even want to go look at it to check license compatibility, but
> IMHO that's just another reason to avoid copying it.
> Copying bad code isn't a good idea unless needed for
> compatibility.
Preserving original VMware terminology makes sense and is preferred in 
my opinion. I think diverging from it is more confusing.
>
>
>>> Also, how about friendlier string values so people don't need to
>>> figure out code numbers?
>> I could have defined a new PropertyInfo struct in hw/core/qdev-properties.c
>> for this enum and then define a proper macro in qdev-properties.h.
>> But it seems like an overkill for a value that is suppose to rarely be
>> changed. So I thought this should suffice for now for user-experience
>> perspective.
>> If you think otherwise, I can do what I just suggested above.
>>
>> -Liran
> I think that's better, and this allows you to use official
> product names that people can relate to.
Ok. Will do...
>
> Alternatively just drop this enum completely.  As far as you are
> concerned it's just a number VM executable gives together with the
> version, right?  We don't even need the enum, just set it to 2 and add a
> code comment saying it's esx server.
I could do the latter alternative but why? It just hides information 
original patch author (myself) know about where this value comes from.
I don't see a reason to hide information from future code maintainers. 
Similar to defining all flags of a given flag-field even if we use only 
a subset of it.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 12:43         ` Liran Alon
@ 2020-03-10 12:53           ` Michael S. Tsirkin
  2020-03-10 13:35             ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 12:53 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 02:43:51PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 14:35, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
> > > On 10/03/2020 14:14, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> > > > > As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> > > > > CMD_GETVERSION should return VMX type in ECX register.
> > > > > 
> > > > > Default is to fake host as VMware ESX server. But user can control
> > > > > this value by "-global vmport.vmx-type=X".
> > > > > 
> > > > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > > > ---
> > > > >    hw/i386/vmport.c | 13 +++++++++++++
> > > > >    1 file changed, 13 insertions(+)
> > > > > 
> > > > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > > > index a2c8ff4b59cf..c03f57f2f636 100644
> > > > > --- a/hw/i386/vmport.c
> > > > > +++ b/hw/i386/vmport.c
> > > > > @@ -36,6 +36,15 @@
> > > > >    #define VMPORT_ENTRIES 0x2c
> > > > >    #define VMPORT_MAGIC   0x564D5868
> > > > > +typedef enum {
> > > > > +   VMX_TYPE_UNSET = 0,
> > > > > +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> > > > > +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> > > > > +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> > > > > +   VMX_TYPE_WORKSTATION,
> > > > > +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> > > > > +} VMX_Type;
> > > > > +
> > > > Is this really VMX type? And do users care what it is?
> > > This enum is copied from open-vm-tools source code
> > > (lib/include/vm_version.h). This is how it's called in VMware Tools
> > > terminology... Don't blame me :)
> > I don't even want to go look at it to check license compatibility, but
> > IMHO that's just another reason to avoid copying it.
> > Copying bad code isn't a good idea unless needed for
> > compatibility.
> Preserving original VMware terminology makes sense and is preferred in my
> opinion. I think diverging from it is more confusing.

Yea tell it to people who got in hot water because they copied
some variable names to avoid confusion. Oh wait.

This is not an official terminology I think.
So please just make it make sense by itself, and make it
easy to research.

> > 
> > 
> > > > Also, how about friendlier string values so people don't need to
> > > > figure out code numbers?
> > > I could have defined a new PropertyInfo struct in hw/core/qdev-properties.c
> > > for this enum and then define a proper macro in qdev-properties.h.
> > > But it seems like an overkill for a value that is suppose to rarely be
> > > changed. So I thought this should suffice for now for user-experience
> > > perspective.
> > > If you think otherwise, I can do what I just suggested above.
> > > 
> > > -Liran
> > I think that's better, and this allows you to use official
> > product names that people can relate to.
> Ok. Will do...
> > 
> > Alternatively just drop this enum completely.  As far as you are
> > concerned it's just a number VM executable gives together with the
> > version, right?  We don't even need the enum, just set it to 2 and add a
> > code comment saying it's esx server.
> I could do the latter alternative but why? It just hides information
> original patch author (myself) know about where this value comes from.
> I don't see a reason to hide information from future code maintainers.
> Similar to defining all flags of a given flag-field even if we use only a
> subset of it.
> 
> -Liran

That belongs in a code comment. Removes need to follow silly names from
unrelated and possibly incompatible license.  By comparison dead code is
dead code.  But sure, if you want to code up user friendly names, that's
ok too. But do follow official names then please, not something lifted
from some piece of code.

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 12:37         ` Liran Alon
@ 2020-03-10 13:01           ` Michael S. Tsirkin
  0 siblings, 0 replies; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 13:01 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 02:37:07PM +0200, Liran Alon wrote:
> So I think you are right this should be le32_to_cpu(). i.e. Treat the
> uuid_part[x] as little-endian and convert it to native CPU format.
> 
> I always get confused in this :)
> 
> Thanks,
> -Liran

Yes - Linux has tagging for this so one knows what's going on, and
sparse can catch errors.  Unfortunately QEMU does not use this
capability. A nice (not so little) project for someone :)

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 12:53           ` Michael S. Tsirkin
@ 2020-03-10 13:35             ` Liran Alon
  2020-03-10 14:08               ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 13:35 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 14:53, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 02:43:51PM +0200, Liran Alon wrote:
>> On 10/03/2020 14:35, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
>>>> On 10/03/2020 14:14, Michael S. Tsirkin wrote:
>>>>> On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
>>>>>> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
>>>>>> CMD_GETVERSION should return VMX type in ECX register.
>>>>>>
>>>>>> Default is to fake host as VMware ESX server. But user can control
>>>>>> this value by "-global vmport.vmx-type=X".
>>>>>>
>>>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>>>> ---
>>>>>>     hw/i386/vmport.c | 13 +++++++++++++
>>>>>>     1 file changed, 13 insertions(+)
>>>>>>
>>>>>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>>>>>> index a2c8ff4b59cf..c03f57f2f636 100644
>>>>>> --- a/hw/i386/vmport.c
>>>>>> +++ b/hw/i386/vmport.c
>>>>>> @@ -36,6 +36,15 @@
>>>>>>     #define VMPORT_ENTRIES 0x2c
>>>>>>     #define VMPORT_MAGIC   0x564D5868
>>>>>> +typedef enum {
>>>>>> +   VMX_TYPE_UNSET = 0,
>>>>>> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
>>>>>> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
>>>>>> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
>>>>>> +   VMX_TYPE_WORKSTATION,
>>>>>> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
>>>>>> +} VMX_Type;
>>>>>> +
>>>>> Is this really VMX type? And do users care what it is?
>>>> This enum is copied from open-vm-tools source code
>>>> (lib/include/vm_version.h). This is how it's called in VMware Tools
>>>> terminology... Don't blame me :)
>>> I don't even want to go look at it to check license compatibility, but
>>> IMHO that's just another reason to avoid copying it.
>>> Copying bad code isn't a good idea unless needed for
>>> compatibility.
>> Preserving original VMware terminology makes sense and is preferred in my
>> opinion. I think diverging from it is more confusing.
> Yea tell it to people who got in hot water because they copied
> some variable names to avoid confusion. Oh wait.
>
> This is not an official terminology I think.
Maybe it wasn't clear from my previous messages, but open-vm-tools is an 
official VMware open-source project...
VMX is the official name of the VMware Userspace-VMM and VMX-Type is an 
official name as-well.

I'm also not copying code here... I'm copying definitions from relevant 
header files to implement a compatible interface.
This is no different than copying constants from a Linux device driver 
to implement it's device emulation in QEMU.

> So please just make it make sense by itself, and make it
> easy to research.
I think I have made it the most easiest to research. Having exactly same 
names as VMware official project and pointing to it directly from 
comments and commit messages.
>
>>>
>>>>> Also, how about friendlier string values so people don't need to
>>>>> figure out code numbers?
>>>> I could have defined a new PropertyInfo struct in hw/core/qdev-properties.c
>>>> for this enum and then define a proper macro in qdev-properties.h.
>>>> But it seems like an overkill for a value that is suppose to rarely be
>>>> changed. So I thought this should suffice for now for user-experience
>>>> perspective.
>>>> If you think otherwise, I can do what I just suggested above.
>>>>
>>>> -Liran
>>> I think that's better, and this allows you to use official
>>> product names that people can relate to.
>> Ok. Will do...
>>> Alternatively just drop this enum completely.  As far as you are
>>> concerned it's just a number VM executable gives together with the
>>> version, right?  We don't even need the enum, just set it to 2 and add a
>>> code comment saying it's esx server.
>> I could do the latter alternative but why? It just hides information
>> original patch author (myself) know about where this value comes from.
>> I don't see a reason to hide information from future code maintainers.
>> Similar to defining all flags of a given flag-field even if we use only a
>> subset of it.
>>
>> -Liran
> That belongs in a code comment. Removes need to follow silly names from
> unrelated and possibly incompatible license.

What do you mean "unrelated"? It's an official VMware open-source 
project for VMware Tools...
I'm only copying definition of constants...

> By comparison dead code is
> dead code.
Right. That's why I think the enum PropertyInfo mechanism is an overkill 
at this point.
> But sure, if you want to code up user friendly names, that's
> ok too. But do follow official names then please, not something lifted
> from some piece of code.

These are all official names. I'm not sure I understand what you are 
suggesting.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 13:35             ` Liran Alon
@ 2020-03-10 14:08               ` Michael S. Tsirkin
  2020-03-10 14:46                 ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 14:08 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 03:35:25PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 14:53, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 02:43:51PM +0200, Liran Alon wrote:
> > > On 10/03/2020 14:35, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
> > > > > On 10/03/2020 14:14, Michael S. Tsirkin wrote:
> > > > > > On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> > > > > > > As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> > > > > > > CMD_GETVERSION should return VMX type in ECX register.
> > > > > > > 
> > > > > > > Default is to fake host as VMware ESX server. But user can control
> > > > > > > this value by "-global vmport.vmx-type=X".
> > > > > > > 
> > > > > > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > > > > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > > > > > ---
> > > > > > >     hw/i386/vmport.c | 13 +++++++++++++
> > > > > > >     1 file changed, 13 insertions(+)
> > > > > > > 
> > > > > > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > > > > > index a2c8ff4b59cf..c03f57f2f636 100644
> > > > > > > --- a/hw/i386/vmport.c
> > > > > > > +++ b/hw/i386/vmport.c
> > > > > > > @@ -36,6 +36,15 @@
> > > > > > >     #define VMPORT_ENTRIES 0x2c
> > > > > > >     #define VMPORT_MAGIC   0x564D5868
> > > > > > > +typedef enum {
> > > > > > > +   VMX_TYPE_UNSET = 0,
> > > > > > > +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> > > > > > > +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> > > > > > > +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> > > > > > > +   VMX_TYPE_WORKSTATION,
> > > > > > > +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> > > > > > > +} VMX_Type;
> > > > > > > +
> > > > > > Is this really VMX type? And do users care what it is?
> > > > > This enum is copied from open-vm-tools source code
> > > > > (lib/include/vm_version.h). This is how it's called in VMware Tools
> > > > > terminology... Don't blame me :)
> > > > I don't even want to go look at it to check license compatibility, but
> > > > IMHO that's just another reason to avoid copying it.
> > > > Copying bad code isn't a good idea unless needed for
> > > > compatibility.
> > > Preserving original VMware terminology makes sense and is preferred in my
> > > opinion. I think diverging from it is more confusing.
> > Yea tell it to people who got in hot water because they copied
> > some variable names to avoid confusion. Oh wait.
> > 
> > This is not an official terminology I think.
> Maybe it wasn't clear from my previous messages, but open-vm-tools is an
> official VMware open-source project...
> VMX is the official name of the VMware Userspace-VMM and VMX-Type is an
> official name as-well.
> 
> I'm also not copying code here... I'm copying definitions from relevant
> header files to implement a compatible interface.

You don't need to have enum have same names to be compatible.
And in this case, all we really need is just a single number *2*
and a comment saying that's ESX server.

> This is no different than copying constants from a Linux device driver to
> implement it's device emulation in QEMU.

We really try to avoid stuff like this. If one does this one has to
check license etc etc.  But in this case, the names are confusing,
violate our coding style, I could go on.


> > So please just make it make sense by itself, and make it
> > easy to research.
> I think I have made it the most easiest to research. Having exactly same
> names as VMware official project and pointing to it directly from comments
> and commit messages.

What good does this do when that code will change tomorrow?

You worry about code being easy to write, I worry about it
being easy to read.

Here are things we can do to make things easier for users and readers:
- use full name VM executable instead of VMX
- put in official product names in comments instead of enums
- write code using our coding style
- add a link to where you found a specific number in comments






> > 
> > > > 
> > > > > > Also, how about friendlier string values so people don't need to
> > > > > > figure out code numbers?
> > > > > I could have defined a new PropertyInfo struct in hw/core/qdev-properties.c
> > > > > for this enum and then define a proper macro in qdev-properties.h.
> > > > > But it seems like an overkill for a value that is suppose to rarely be
> > > > > changed. So I thought this should suffice for now for user-experience
> > > > > perspective.
> > > > > If you think otherwise, I can do what I just suggested above.
> > > > > 
> > > > > -Liran
> > > > I think that's better, and this allows you to use official
> > > > product names that people can relate to.
> > > Ok. Will do...
> > > > Alternatively just drop this enum completely.  As far as you are
> > > > concerned it's just a number VM executable gives together with the
> > > > version, right?  We don't even need the enum, just set it to 2 and add a
> > > > code comment saying it's esx server.
> > > I could do the latter alternative but why? It just hides information
> > > original patch author (myself) know about where this value comes from.
> > > I don't see a reason to hide information from future code maintainers.
> > > Similar to defining all flags of a given flag-field even if we use only a
> > > subset of it.
> > > 
> > > -Liran
> > That belongs in a code comment. Removes need to follow silly names from
> > unrelated and possibly incompatible license.
> 
> What do you mean "unrelated"? It's an official VMware open-source project
> for VMware Tools...
> I'm only copying definition of constants...

No you also copy names and comments. Which might make sense in the
context of the original project but seem to make no sense here.
E.g. for vmware a given product is deprecated but why does QEMU care?
enum values are not even listed. What is poor user supposed to do -
take out a calculator to figure it out?

> > By comparison dead code is
> > dead code.
> Right. That's why I think the enum PropertyInfo mechanism is an overkill at
> this point.
> > But sure, if you want to code up user friendly names, that's
> > ok too. But do follow official names then please, not something lifted
> > from some piece of code.
> 
> These are all official names.

Official as in will stick around, not official as in pushed to
a github repo.


> I'm not sure I understand what you are
> suggesting.
> 
> -Liran

Something like the below.

/*
 * Most guests are fine with the default.
 * Some legacy guests hard-code a given type.
 * See https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/lib/include/vm_vmx_type.h
 * for an up-to-date list of values.
 *
 * Reasonable options:
 * 0 - unset?
 * 1 - VMware Express (deprecated)
 * 2 - VMware ESX server
 * 3 - VMware Workstation
 * 4 - ACE 1.x (deprecated)
 */

DEFINE_PROP_UINT8("vm-executable-type", VMPortState, vm_executable_type, 2 /* VMware ESX server */),





^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 11:22       ` Michael S. Tsirkin
  2020-03-10 11:35         ` Liran Alon
@ 2020-03-10 14:24         ` Liran Alon
  2020-03-10 14:39           ` Michael S. Tsirkin
  1 sibling, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 14:24 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 13:22, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 01:13:21PM +0200, Liran Alon wrote:
>> On 10/03/2020 11:34, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
>>>> This is VMware documented functionallity that some guests rely on.
>>>> Returns the BIOS UUID of the current virtual machine.
>>>>
>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>> So this at least seems guest-visible.
>>>
>>> So I suspect you need to add properties to
>>> disable this for old machine types, to avoid
>>> breaking compatibility with live-migration.
>> It is indeed guest visible.
>> In theory, you are right that for every guest-visible change, we should make
>> sure to expose it to only new machine-types.
>>
>> However, in this case, I feel it just unnecessary over-complicates the code.
>> I don't see how a guest which previously failed to use this command, will
>> fail because after Live-Migration it could succeed.
> The reverse can happen, start guest on a new qemu, command seems to
> work, then we migrate and it fails.
>
> And I guess this applies to the version right?
>
>> If you insist, I will add such functionality. In that case, do you think a
>> single flag will suffice for the addition of all new commands
>> (i.e. "commands-version" that it's number specifies set of commands to
>> expose), or you want to have a per-command flag?
>>
>> -Liran
> Can be a single flag but I'd just do it a boolean that enables a group
> of commands. E.g. "commands-v2".
>
Re-thinking about this...

QEMU VMPort interface was quite broken already (See first patch in 
series "hw/i386/vmport: Propagate IOPort read to vCPU EAX register").
The introduction of that fix already changes the result of all existing 
commands from guest perspective which relied on return-value from 
vmport_ioport_read().
E.g. CMD_GETVERSION and CMD_GETRAMSIZE.

In theory, we should have also made that bug-fix be tied to 
machine-type. To similarly avoid the issue of migrating a VM from a 
working VMPort command implementation to a non-working one.
i.e. In case of migrating from new QEMU to old QEMU. Do we wish to 
create a property-flag for that fix as-well? Or can we just drop all the 
machine-type flags alltogether (Including the suggested "commands-v2")
and declare this the first actually working VMPort implementation?

-Liran







^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 14:24         ` Liran Alon
@ 2020-03-10 14:39           ` Michael S. Tsirkin
  2020-03-10 14:56             ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 14:39 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 04:24:45PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 13:22, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 01:13:21PM +0200, Liran Alon wrote:
> > > On 10/03/2020 11:34, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 01:54:04AM +0200, Liran Alon wrote:
> > > > > This is VMware documented functionallity that some guests rely on.
> > > > > Returns the BIOS UUID of the current virtual machine.
> > > > > 
> > > > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > > So this at least seems guest-visible.
> > > > 
> > > > So I suspect you need to add properties to
> > > > disable this for old machine types, to avoid
> > > > breaking compatibility with live-migration.
> > > It is indeed guest visible.
> > > In theory, you are right that for every guest-visible change, we should make
> > > sure to expose it to only new machine-types.
> > > 
> > > However, in this case, I feel it just unnecessary over-complicates the code.
> > > I don't see how a guest which previously failed to use this command, will
> > > fail because after Live-Migration it could succeed.
> > The reverse can happen, start guest on a new qemu, command seems to
> > work, then we migrate and it fails.
> > 
> > And I guess this applies to the version right?
> > 
> > > If you insist, I will add such functionality. In that case, do you think a
> > > single flag will suffice for the addition of all new commands
> > > (i.e. "commands-version" that it's number specifies set of commands to
> > > expose), or you want to have a per-command flag?
> > > 
> > > -Liran
> > Can be a single flag but I'd just do it a boolean that enables a group
> > of commands. E.g. "commands-v2".
> > 
> Re-thinking about this...
> 
> QEMU VMPort interface was quite broken already (See first patch in series
> "hw/i386/vmport: Propagate IOPort read to vCPU EAX register").
> The introduction of that fix already changes the result of all existing
> commands from guest perspective which relied on return-value from
> vmport_ioport_read().
> E.g. CMD_GETVERSION and CMD_GETRAMSIZE.
> 
> In theory, we should have also made that bug-fix be tied to machine-type. To
> similarly avoid the issue of migrating a VM from a working VMPort command
> implementation to a non-working one.
> i.e. In case of migrating from new QEMU to old QEMU. Do we wish to create a
> property-flag for that fix as-well?

Yes, I meants that too. Just include everything in the same property.

> Or can we just drop all the machine-type
> flags alltogether (Including the suggested "commands-v2")
> and declare this the first actually working VMPort implementation?
> 
> -Liran

It's hard to be sure no one used this, and the overhead isn't big.  But
that would be a maintainer call. In any case you need to call this out
explicitly in the commit log, and I guess block migration for old
machine types.



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 14:08               ` Michael S. Tsirkin
@ 2020-03-10 14:46                 ` Liran Alon
  2020-03-10 15:10                   ` Michael S. Tsirkin
  2020-03-10 21:16                   ` Michael S. Tsirkin
  0 siblings, 2 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 14:46 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 16:08, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 03:35:25PM +0200, Liran Alon wrote:
>> On 10/03/2020 14:53, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 02:43:51PM +0200, Liran Alon wrote:
>>>> On 10/03/2020 14:35, Michael S. Tsirkin wrote:
>>>>> On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
>>>>>> On 10/03/2020 14:14, Michael S. Tsirkin wrote:
>>>>>>> On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
>>>>>>>> As can be seen from VmCheck_GetVersion() in open-vm-tools code,
>>>>>>>> CMD_GETVERSION should return VMX type in ECX register.
>>>>>>>>
>>>>>>>> Default is to fake host as VMware ESX server. But user can control
>>>>>>>> this value by "-global vmport.vmx-type=X".
>>>>>>>>
>>>>>>>> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
>>>>>>>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>>>>>>>> ---
>>>>>>>>      hw/i386/vmport.c | 13 +++++++++++++
>>>>>>>>      1 file changed, 13 insertions(+)
>>>>>>>>
>>>>>>>> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
>>>>>>>> index a2c8ff4b59cf..c03f57f2f636 100644
>>>>>>>> --- a/hw/i386/vmport.c
>>>>>>>> +++ b/hw/i386/vmport.c
>>>>>>>> @@ -36,6 +36,15 @@
>>>>>>>>      #define VMPORT_ENTRIES 0x2c
>>>>>>>>      #define VMPORT_MAGIC   0x564D5868
>>>>>>>> +typedef enum {
>>>>>>>> +   VMX_TYPE_UNSET = 0,
>>>>>>>> +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
>>>>>>>> +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
>>>>>>>> +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
>>>>>>>> +   VMX_TYPE_WORKSTATION,
>>>>>>>> +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
>>>>>>>> +} VMX_Type;
>>>>>>>> +
>>>>>>> Is this really VMX type? And do users care what it is?
>>>>>> This enum is copied from open-vm-tools source code
>>>>>> (lib/include/vm_version.h). This is how it's called in VMware Tools
>>>>>> terminology... Don't blame me :)
>>>>> I don't even want to go look at it to check license compatibility, but
>>>>> IMHO that's just another reason to avoid copying it.
>>>>> Copying bad code isn't a good idea unless needed for
>>>>> compatibility.
>>>> Preserving original VMware terminology makes sense and is preferred in my
>>>> opinion. I think diverging from it is more confusing.
>>> Yea tell it to people who got in hot water because they copied
>>> some variable names to avoid confusion. Oh wait.
>>>
>>> This is not an official terminology I think.
>> Maybe it wasn't clear from my previous messages, but open-vm-tools is an
>> official VMware open-source project...
>> VMX is the official name of the VMware Userspace-VMM and VMX-Type is an
>> official name as-well.
>>
>> I'm also not copying code here... I'm copying definitions from relevant
>> header files to implement a compatible interface.
> You don't need to have enum have same names to be compatible.
> And in this case, all we really need is just a single number *2*
> and a comment saying that's ESX server.
I don't have to. I want to. It makes code much more clearer to reader. I 
don't see any harm in that.
>
>> This is no different than copying constants from a Linux device driver to
>> implement it's device emulation in QEMU.
> We really try to avoid stuff like this. If one does this one has to
> check license etc etc.
There is no license issue here. It's only definitions. And if you really 
wonder about it, this is the license written in the header files of 
open-vm-tools:
/*********************************************************
  * Copyright (C) 2006 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
  * by the Free Software Foundation version 2.1 and no later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
  * License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program; if not, write to the Free Software 
Foundation, Inc.,
  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
  *
  *********************************************************/
> But in this case, the names are confusing,
> violate our coding style, I could go on.
The only thing that violates the coding style is "VMX_Type" enum type 
name instead of "VMXType". And that is right and I will change it in v2. 
However, the rest doesn't violate coding style.
In addition, I disagree this is confusing. These are official VMX 
product names defined by VMware. I don't see any value in renaming them. 
It just results in additional confusion.
>
>
>>> So please just make it make sense by itself, and make it
>>> easy to research.
>> I think I have made it the most easiest to research. Having exactly same
>> names as VMware official project and pointing to it directly from comments
>> and commit messages.
> What good does this do when that code will change tomorrow?
Why would the enum constants change tomorrow?
And even if that will happen, it still allows a reader to just search in 
Google the name of the constant and find results.
Which is better than just making up names that we think our more 
intuitive than the names VMware decided for their own product.
>
> You worry about code being easy to write, I worry about it
> being easy to read.

No I don't. This doesn't matter at all for writing code but matters only 
to reading it.

>
> Here are things we can do to make things easier for users and readers:
> - use full name VM executable instead of VMX
Why? Searching for "VMware VM executable" in Google provides completely 
unrelated results.
In contrast, searching for "VMware VMX" provides concrete related results.
We shouldn't rename terminology given by VMware itself to it's own 
product. It just adds confusion in my opinion.
> - put in official product names in comments instead of enums
I don't see how it provides extra value. Especially due to the fact that 
the enum constants have their more common product name next to them in 
comment.
I provide both reference that can be searched in other VMware projects 
and web and the more user-friendly well-known name.
> - write code using our coding style
Will do. The only coding style violation I see here is the enum type 
name. Will change from "VMX_Type" to "VMXType".
The rest seems not violating coding convention. Please tell me if I 
missed something.
> - add a link to where you found a specific number in comments
Good idea. Will add a link to open-vm-tools git repo in vmport.c comment 
in general.
>
>
>
>
>
>
>>>>>>> Also, how about friendlier string values so people don't need to
>>>>>>> figure out code numbers?
>>>>>> I could have defined a new PropertyInfo struct in hw/core/qdev-properties.c
>>>>>> for this enum and then define a proper macro in qdev-properties.h.
>>>>>> But it seems like an overkill for a value that is suppose to rarely be
>>>>>> changed. So I thought this should suffice for now for user-experience
>>>>>> perspective.
>>>>>> If you think otherwise, I can do what I just suggested above.
>>>>>>
>>>>>> -Liran
>>>>> I think that's better, and this allows you to use official
>>>>> product names that people can relate to.
>>>> Ok. Will do...
>>>>> Alternatively just drop this enum completely.  As far as you are
>>>>> concerned it's just a number VM executable gives together with the
>>>>> version, right?  We don't even need the enum, just set it to 2 and add a
>>>>> code comment saying it's esx server.
>>>> I could do the latter alternative but why? It just hides information
>>>> original patch author (myself) know about where this value comes from.
>>>> I don't see a reason to hide information from future code maintainers.
>>>> Similar to defining all flags of a given flag-field even if we use only a
>>>> subset of it.
>>>>
>>>> -Liran
>>> That belongs in a code comment. Removes need to follow silly names from
>>> unrelated and possibly incompatible license.
>> What do you mean "unrelated"? It's an official VMware open-source project
>> for VMware Tools...
>> I'm only copying definition of constants...
> No you also copy names and comments. Which might make sense in the
> context of the original project but seem to make no sense here.
> E.g. for vmware a given product is deprecated but why does QEMU care?
What is the harm in specifying that? It gives more context.
> enum values are not even listed. What is poor user supposed to do -
> take out a calculator to figure it out?
What do you mean by listed?
>
>>> By comparison dead code is
>>> dead code.
>> Right. That's why I think the enum PropertyInfo mechanism is an overkill at
>> this point.
>>> But sure, if you want to code up user friendly names, that's
>>> ok too. But do follow official names then please, not something lifted
>>> from some piece of code.
>> These are all official names.
> Official as in will stick around, not official as in pushed to
> a github repo.
>
>
>> I'm not sure I understand what you are
>> suggesting.
>>
>> -Liran
> Something like the below.
>
> /*
>   * Most guests are fine with the default.
>   * Some legacy guests hard-code a given type.
>   * See https://urldefense.com/v3/__https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/lib/include/vm_vmx_type.h__;!!GqivPVa7Brio!M9wko4CSBSs3xFA2QY7MIL_jvAxlU5aRZE1jN2hzG5jnk8rdlpYCDs2ymrkJ8GE$
>   * for an up-to-date list of values.
>   *
>   * Reasonable options:
>   * 0 - unset?
>   * 1 - VMware Express (deprecated)
>   * 2 - VMware ESX server
>   * 3 - VMware Workstation
>   * 4 - ACE 1.x (deprecated)
>   */
>
> DEFINE_PROP_UINT8("vm-executable-type", VMPortState, vm_executable_type, 2 /* VMware ESX server */),
>
Why is it better to specify a list of all options in a comment than an 
enum? Isn't enum invented exactly for enumerating all possible values of 
a field?
Note that even in this simple case, you needed to write "VMware ESX 
server" twice instead of referring to an enum constant. It doesn't seem 
more elegant to me.

And again, I disagree with renaming the field to "vm-executable-type" 
instead of "vmx-type".

-Liran





^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID
  2020-03-10 14:39           ` Michael S. Tsirkin
@ 2020-03-10 14:56             ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 14:56 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 16:39, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 04:24:45PM +0200, Liran Alon wrote:
>
>> Re-thinking about this...
>>
>> QEMU VMPort interface was quite broken already (See first patch in series
>> "hw/i386/vmport: Propagate IOPort read to vCPU EAX register").
>> The introduction of that fix already changes the result of all existing
>> commands from guest perspective which relied on return-value from
>> vmport_ioport_read().
>> E.g. CMD_GETVERSION and CMD_GETRAMSIZE.
>>
>> In theory, we should have also made that bug-fix be tied to machine-type. To
>> similarly avoid the issue of migrating a VM from a working VMPort command
>> implementation to a non-working one.
>> i.e. In case of migrating from new QEMU to old QEMU. Do we wish to create a
>> property-flag for that fix as-well?
> Yes, I meants that too. Just include everything in the same property.
It ugly the code with a lot of "if"s for maintaining compatibility for 
guests that somehow relies on interface being broken and unusable.
Can do this but am wondering if it's worth it.
>
>> Or can we just drop all the machine-type
>> flags alltogether (Including the suggested "commands-v2")
>> and declare this the first actually working VMPort implementation?
>>
>> -Liran
> It's hard to be sure no one used this

Well... Both implemented commands (CMD_GETVERSION and CMD_GETRRAMSIZE) 
fails to return their proper value.
CMD_GETVERSION will always return VMPORT_MAGIC that happened to be in 
EAX previously (i.e. return 0x564D5868 instead of 6).
CMD_GETRAMSIZE will always return VMPORT_MAGIC that happened to be in 
EAX previously (i.e. return 0x564D5868 instead of VM RAM size).

If guest somehow relied on this, it is already quite broken...
My belief is that all upstream QEMU users today relies on VMPort only 
for the sake of a functioning VMMouse which is indeed not broken because 
vmmouse_set_data() explicitly override EAX.

> , and the overhead isn't big.  But
> that would be a maintainer call. In any case you need to call this out
> explicitly in the commit log, and I guess block migration for old
> machine types.
>
Blocking migration for old machine-types is a "no go" in my opinion as 
vmport is enabled by default. It will cause too many VMs to need be able 
to backwards migrate.

So it's either doing nothing (as patch-series is now) or adding a flag 
that adds a bunch of ugly "ifs" and is tied to a machine-type.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 14:46                 ` Liran Alon
@ 2020-03-10 15:10                   ` Michael S. Tsirkin
  2020-03-10 16:39                     ` Liran Alon
  2020-03-10 21:16                   ` Michael S. Tsirkin
  1 sibling, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 15:10 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 04:46:19PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 16:08, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 03:35:25PM +0200, Liran Alon wrote:
> > > On 10/03/2020 14:53, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 02:43:51PM +0200, Liran Alon wrote:
> > > > > On 10/03/2020 14:35, Michael S. Tsirkin wrote:
> > > > > > On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
> > > > > > > On 10/03/2020 14:14, Michael S. Tsirkin wrote:
> > > > > > > > On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
> > > > > > > > > As can be seen from VmCheck_GetVersion() in open-vm-tools code,
> > > > > > > > > CMD_GETVERSION should return VMX type in ECX register.
> > > > > > > > > 
> > > > > > > > > Default is to fake host as VMware ESX server. But user can control
> > > > > > > > > this value by "-global vmport.vmx-type=X".
> > > > > > > > > 
> > > > > > > > > Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> > > > > > > > > Signed-off-by: Liran Alon <liran.alon@oracle.com>
> > > > > > > > > ---
> > > > > > > > >      hw/i386/vmport.c | 13 +++++++++++++
> > > > > > > > >      1 file changed, 13 insertions(+)
> > > > > > > > > 
> > > > > > > > > diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> > > > > > > > > index a2c8ff4b59cf..c03f57f2f636 100644
> > > > > > > > > --- a/hw/i386/vmport.c
> > > > > > > > > +++ b/hw/i386/vmport.c
> > > > > > > > > @@ -36,6 +36,15 @@
> > > > > > > > >      #define VMPORT_ENTRIES 0x2c
> > > > > > > > >      #define VMPORT_MAGIC   0x564D5868
> > > > > > > > > +typedef enum {
> > > > > > > > > +   VMX_TYPE_UNSET = 0,
> > > > > > > > > +   VMX_TYPE_EXPRESS,    /* Deprecated type used for VMware Express */
> > > > > > > > > +   VMX_TYPE_SCALABLE_SERVER,    /* VMware ESX server */
> > > > > > > > > +   VMX_TYPE_WGS,        /* Deprecated type used for VMware Server */
> > > > > > > > > +   VMX_TYPE_WORKSTATION,
> > > > > > > > > +   VMX_TYPE_WORKSTATION_ENTERPRISE /* Deprecated type used for ACE 1.x */
> > > > > > > > > +} VMX_Type;
> > > > > > > > > +
> > > > > > > > Is this really VMX type? And do users care what it is?
> > > > > > > This enum is copied from open-vm-tools source code
> > > > > > > (lib/include/vm_version.h). This is how it's called in VMware Tools
> > > > > > > terminology... Don't blame me :)
> > > > > > I don't even want to go look at it to check license compatibility, but
> > > > > > IMHO that's just another reason to avoid copying it.
> > > > > > Copying bad code isn't a good idea unless needed for
> > > > > > compatibility.
> > > > > Preserving original VMware terminology makes sense and is preferred in my
> > > > > opinion. I think diverging from it is more confusing.
> > > > Yea tell it to people who got in hot water because they copied
> > > > some variable names to avoid confusion. Oh wait.
> > > > 
> > > > This is not an official terminology I think.
> > > Maybe it wasn't clear from my previous messages, but open-vm-tools is an
> > > official VMware open-source project...
> > > VMX is the official name of the VMware Userspace-VMM and VMX-Type is an
> > > official name as-well.
> > > 
> > > I'm also not copying code here... I'm copying definitions from relevant
> > > header files to implement a compatible interface.
> > You don't need to have enum have same names to be compatible.
> > And in this case, all we really need is just a single number *2*
> > and a comment saying that's ESX server.
> I don't have to. I want to. It makes code much more clearer to reader. I
> don't see any harm in that.

It's just a bad interface for QEMU to use. Maybe it's good for vmware,
I would not know.

> > 
> > > This is no different than copying constants from a Linux device driver to
> > > implement it's device emulation in QEMU.
> > We really try to avoid stuff like this. If one does this one has to
> > check license etc etc.
> There is no license issue here. It's only definitions. And if you really
> wonder about it, this is the license written in the header files of
> open-vm-tools:
> /*********************************************************
>  * Copyright (C) 2006 VMware, Inc. All rights reserved.
>  *
>  * This program is free software; you can redistribute it and/or modify it
>  * under the terms of the GNU Lesser General Public License as published
>  * by the Free Software Foundation version 2.1 and no later version.

OK that is already a conflict with the license of vmport.c
which is copyleft. Respecting wishes of the original
author is not a legal requirement, but sure is a nice thing to do.

I suggest we keep clear of this.

Refer to it if you like but don't copy.

And "no later version" will conflict with a bunch of other
files which are 2 or later.
We can't avoid GPL v2 but we really shouldn't just add it
without any good reason.

>  * This program is distributed in the hope that it will be useful, but
>  * WITHOUT ANY WARRANTY; without even the implied warranty of
> MERCHANTABILITY
>  * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
>  * License for more details.
>  *
>  * You should have received a copy of the GNU Lesser General Public License
>  * along with this program; if not, write to the Free Software Foundation,
> Inc.,
>  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
>  *
>  *********************************************************/
> > But in this case, the names are confusing,
> > violate our coding style, I could go on.
> The only thing that violates the coding style is "VMX_Type" enum type name
> instead of "VMXType".

All enum names too. Supposed to be CamelCase. Again VMX is 


> And that is right and I will change it in v2. However,
> the rest doesn't violate coding style.
> In addition, I disagree this is confusing. These are official VMX product
> names defined by VMware.

They might make sense in the context of the specific project.
They aren't official names - just internal strings within a file.


> I don't see any value in renaming them. It just
> results in additional confusion.
> > 
> > 
> > > > So please just make it make sense by itself, and make it
> > > > easy to research.
> > > I think I have made it the most easiest to research. Having exactly same
> > > names as VMware official project and pointing to it directly from comments
> > > and commit messages.
> > What good does this do when that code will change tomorrow?
> Why would the enum constants change tomorrow?
> And even if that will happen, it still allows a reader to just search in
> Google the name of the constant and find results.
> Which is better than just making up names that we think our more intuitive
> than the names VMware decided for their own product.
> > 
> > You worry about code being easy to write, I worry about it
> > being easy to read.
> 
> No I don't. This doesn't matter at all for writing code but matters only to
> reading it.
> 
> > 
> > Here are things we can do to make things easier for users and readers:
> > - use full name VM executable instead of VMX
> Why? Searching for "VMware VM executable" in Google provides completely
> unrelated results.
> In contrast, searching for "VMware VMX" provides concrete related results.
> We shouldn't rename terminology given by VMware itself to it's own product.
> It just adds confusion in my opinion.
> > - put in official product names in comments instead of enums
> I don't see how it provides extra value. Especially due to the fact that the
> enum constants have their more common product name next to them in comment.
> I provide both reference that can be searched in other VMware projects and
> web and the more user-friendly well-known name.
> > - write code using our coding style
> Will do. The only coding style violation I see here is the enum type name.
> Will change from "VMX_Type" to "VMXType".
> The rest seems not violating coding convention. Please tell me if I missed
> something.
> > - add a link to where you found a specific number in comments
> Good idea. Will add a link to open-vm-tools git repo in vmport.c comment in
> general.
> > 
> > 
> > 
> > 
> > 
> > 
> > > > > > > > Also, how about friendlier string values so people don't need to
> > > > > > > > figure out code numbers?
> > > > > > > I could have defined a new PropertyInfo struct in hw/core/qdev-properties.c
> > > > > > > for this enum and then define a proper macro in qdev-properties.h.
> > > > > > > But it seems like an overkill for a value that is suppose to rarely be
> > > > > > > changed. So I thought this should suffice for now for user-experience
> > > > > > > perspective.
> > > > > > > If you think otherwise, I can do what I just suggested above.
> > > > > > > 
> > > > > > > -Liran
> > > > > > I think that's better, and this allows you to use official
> > > > > > product names that people can relate to.
> > > > > Ok. Will do...
> > > > > > Alternatively just drop this enum completely.  As far as you are
> > > > > > concerned it's just a number VM executable gives together with the
> > > > > > version, right?  We don't even need the enum, just set it to 2 and add a
> > > > > > code comment saying it's esx server.
> > > > > I could do the latter alternative but why? It just hides information
> > > > > original patch author (myself) know about where this value comes from.
> > > > > I don't see a reason to hide information from future code maintainers.
> > > > > Similar to defining all flags of a given flag-field even if we use only a
> > > > > subset of it.
> > > > > 
> > > > > -Liran
> > > > That belongs in a code comment. Removes need to follow silly names from
> > > > unrelated and possibly incompatible license.
> > > What do you mean "unrelated"? It's an official VMware open-source project
> > > for VMware Tools...
> > > I'm only copying definition of constants...
> > No you also copy names and comments. Which might make sense in the
> > context of the original project but seem to make no sense here.
> > E.g. for vmware a given product is deprecated but why does QEMU care?
> What is the harm in specifying that? It gives more context.
> > enum values are not even listed. What is poor user supposed to do -
> > take out a calculator to figure it out?
> What do you mean by listed?

So imagine: as a user, I want to set this to some reasonable value.

Supposedly this is why you have the enum there in the
1st place right? Let's see how does all this help me:

- first enum is VMX_TYPE_UNSET. Unset? I guess that's
the default. I want to set it, make sure it's a good value.
- next one is VMX_TYPE_EXPRESS. comment says deprecated though.
  I will keep clear.
- Next enum is VMX_TYPE_SCALABLE_SERVER. Hmm that says ESX.
I guess it's good! However what's scalable server?
There's no vmware in sight,
brings up unrelated search results.
Scalable server? No I need to research that.
I guess I will just ignore all this and go by the comments.
Okay! Wait so what is the value I need to supply to the
property?
Oh right I need to recall that enum values are sequential.
So first one it says is 0. Let me count. It's 2 I guess.

Okay I will try ...




> > 
> > > > By comparison dead code is
> > > > dead code.
> > > Right. That's why I think the enum PropertyInfo mechanism is an overkill at
> > > this point.
> > > > But sure, if you want to code up user friendly names, that's
> > > > ok too. But do follow official names then please, not something lifted
> > > > from some piece of code.
> > > These are all official names.
> > Official as in will stick around, not official as in pushed to
> > a github repo.
> > 
> > 
> > > I'm not sure I understand what you are
> > > suggesting.
> > > 
> > > -Liran
> > Something like the below.
> > 
> > /*
> >   * Most guests are fine with the default.
> >   * Some legacy guests hard-code a given type.
> >   * See https://urldefense.com/v3/__https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/lib/include/vm_vmx_type.h__;!!GqivPVa7Brio!M9wko4CSBSs3xFA2QY7MIL_jvAxlU5aRZE1jN2hzG5jnk8rdlpYCDs2ymrkJ8GE$
> >   * for an up-to-date list of values.
> >   *
> >   * Reasonable options:
> >   * 0 - unset?
> >   * 1 - VMware Express (deprecated)
> >   * 2 - VMware ESX server
> >   * 3 - VMware Workstation
> >   * 4 - ACE 1.x (deprecated)
> >   */
> > 
> > DEFINE_PROP_UINT8("vm-executable-type", VMPortState, vm_executable_type, 2 /* VMware ESX server */),
> > 
> Why is it better to specify a list of all options in a comment than an enum?

Because that lets you use english. Look you didn't even list options.
User's supposed to do the math in his/her head. Why is that?
Oh because we lifted this wholesale from some other header.

> Isn't enum invented exactly for enumerating all possible values of a field?

No - it just assigns names to constants. If you then proceed not to use
the names, then it's pointless.

> Note that even in this simple case, you needed to write "VMware ESX server"
> twice instead of referring to an enum constant. It doesn't seem more elegant
> to me.

I felt this bears repetition.
But sure, you can drop it in DEFINE_PROP_UINT8 if you like.
If you really feel you must, do:

#define VM_PORT_DEFAULT_VM_EXECUTABLE 2
near the comment.


> And again, I disagree with renaming the field to "vm-executable-type"
> instead of "vmx-type".
> 
> -Liran

Acronims is a bad idea in user interfaces if avoidable, or unless
universal. Either these interfaces are needed or they aren't.
I question their usefulness, but if they are useful they should
have names that do not require guesswork to understand.

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 15:10                   ` Michael S. Tsirkin
@ 2020-03-10 16:39                     ` Liran Alon
  2020-03-10 17:36                       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 16:39 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 17:10, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 04:46:19PM +0200, Liran Alon wrote:
>> On 10/03/2020 16:08, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 03:35:25PM +0200, Liran Alon wrote:
>>>> On 10/03/2020 14:53, Michael S. Tsirkin wrote:
>>>>> On Tue, Mar 10, 2020 at 02:43:51PM +0200, Liran Alon wrote:
>>>>>> On 10/03/2020 14:35, Michael S. Tsirkin wrote:
>>>>>>> On Tue, Mar 10, 2020 at 02:25:28PM +0200, Liran Alon wrote:
>>>>>>>> On 10/03/2020 14:14, Michael S. Tsirkin wrote:
>>>>>>>>> On Tue, Mar 10, 2020 at 01:54:02AM +0200, Liran Alon wrote:
>>> But in this case, the names are confusing,
>>> violate our coding style, I could go on.
>> The only thing that violates the coding style is "VMX_Type" enum type name
>> instead of "VMXType".
> All enum names too. Supposed to be CamelCase. Again VMX is

Looking at other enums defined in QEMU, it doesn't seem that constant 
names are CamelCase. Only the enum type name.
E.g. PVSCSIRegOffset, BiosAtaTranslation and etc.

>>> No you also copy names and comments. Which might make sense in the
>>> context of the original project but seem to make no sense here.
>>> E.g. for vmware a given product is deprecated but why does QEMU care?
>> What is the harm in specifying that? It gives more context.
>>> enum values are not even listed. What is poor user supposed to do -
>>> take out a calculator to figure it out?
>> What do you mean by listed?
> So imagine: as a user, I want to set this to some reasonable value.
>
> Supposedly this is why you have the enum there in the
> 1st place right? Let's see how does all this help me:
>
> - first enum is VMX_TYPE_UNSET. Unset? I guess that's
> the default. I want to set it, make sure it's a good value.
> - next one is VMX_TYPE_EXPRESS. comment says deprecated though.
>    I will keep clear.
> - Next enum is VMX_TYPE_SCALABLE_SERVER. Hmm that says ESX.
> I guess it's good! However what's scalable server?
> There's no vmware in sight,
> brings up unrelated search results.
> Scalable server? No I need to research that.
> I guess I will just ignore all this and go by the comments.
> Okay! Wait so what is the value I need to supply to the
> property?
> Oh right I need to recall that enum values are sequential.
> So first one it says is 0. Let me count. It's 2 I guess.
>
> Okay I will try ...

The person who is expected to manipulate this property is quite advance 
to begin with...
The process described above is quite simple for such person.

>>>
>>>> I'm not sure I understand what you are
>>>> suggesting.
>>>>
>>>> -Liran
>>> Something like the below.
>>>
>>> /*
>>>    * Most guests are fine with the default.
>>>    * Some legacy guests hard-code a given type.
>>>    * See https://urldefense.com/v3/__https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/lib/include/vm_vmx_type.h__;!!GqivPVa7Brio!M9wko4CSBSs3xFA2QY7MIL_jvAxlU5aRZE1jN2hzG5jnk8rdlpYCDs2ymrkJ8GE$
>>>    * for an up-to-date list of values.
>>>    *
>>>    * Reasonable options:
>>>    * 0 - unset?
>>>    * 1 - VMware Express (deprecated)
>>>    * 2 - VMware ESX server
>>>    * 3 - VMware Workstation
>>>    * 4 - ACE 1.x (deprecated)
>>>    */
>>>
>>> DEFINE_PROP_UINT8("vm-executable-type", VMPortState, vm_executable_type, 2 /* VMware ESX server */),
>>>
>> Why is it better to specify a list of all options in a comment than an enum?
> Because that lets you use english. Look you didn't even list options.
> User's supposed to do the math in his/her head. Why is that?
Figuring out an enum value from definition is trivial. If you wish, I 
can change those to #define to make it more clear but error-prone.
> Oh because we lifted this wholesale from some other header.
That's not the reason.
>> Isn't enum invented exactly for enumerating all possible values of a field?
> No - it just assigns names to constants. If you then proceed not to use
> the names, then it's pointless.
It's not. It exactly lists all the various possible values. In contrast 
to directing the reader to a link (which may be broken in the future),
to figure out from there what should be the values. That seems more 
annoying to me as a reader.
>> Note that even in this simple case, you needed to write "VMware ESX server"
>> twice instead of referring to an enum constant. It doesn't seem more elegant
>> to me.
> I felt this bears repetition.
> But sure, you can drop it in DEFINE_PROP_UINT8 if you like.
> If you really feel you must, do:
>
> #define VM_PORT_DEFAULT_VM_EXECUTABLE 2
> near the comment.

Why not just define the entire enum then?...

This approach seems quite common for all device emulation code.
E.g. BTSTAT_HATIMEOUT in HostBusAdapterStatus, 
PVSCSI_REG_OFFSET_LAST_STS_3 in PVSCSIRegOffset, VMXNET3_CMD_UPDATE_IML 
in vmxnet3.h and etc.

>> And again, I disagree with renaming the field to "vm-executable-type"
>> instead of "vmx-type".
>>
>> -Liran
> Acronims is a bad idea in user interfaces if avoidable, or unless
> universal. Either these interfaces are needed or they aren't.
> I question their usefulness, but if they are useful they should
> have names that do not require guesswork to understand.
>
Giving new names to existing terminology that can be matched against 
existing guest code which interface with your device emulation is what 
requires guesswork.
Using names matching the guest code driver is what doesn't require 
guesswork and is more intuitive to understand.

Let's agree that I will fix coding convention issue (VMX_Type -> 
VMXType) and link to open-vm-tools but remain with the enum.
And see what other maintainers have to see about this on v2.

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 16:39                     ` Liran Alon
@ 2020-03-10 17:36                       ` Michael S. Tsirkin
  2020-03-10 17:58                         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 17:36 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 06:39:33PM +0200, Liran Alon wrote:
> > > Isn't enum invented exactly for enumerating all possible values of a field?
> > No - it just assigns names to constants. If you then proceed not to use
> > the names, then it's pointless.
> It's not. It exactly lists all the various possible values.

That's not factually correct in this case. In C, enum does not
necessarily list all possible values generally. Neither is it always
used like this in QEMU. Neither does it do it in this case, nothing
prevents user from sticking any single-byte value in the property.

> Giving new names to existing terminology that can be matched against
> existing guest code which interface with your device emulation is what
> requires guesswork.
> Using names matching the guest code driver is what doesn't require guesswork
> and is more intuitive to understand.

Yes, it's sometimes helpful to match guest driver since that helps debug
the whole stack. There's literally nothing to help debug here though.
But if you feel strongly, here's a conversation starter.
But it raises some questions that need to be answered
properly:


/*
 * Virtual Machine eXecutable type (VMX).
 *
 * Most guests are fine with the default.
 *
 * Some legacy guests hard-code a given type.

^ Is this the real reason we are including this option?
Because if it is how is it helpful to add link to
the open-source drivers? These likely are not legacy ...


 * See https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/lib/include/vm_vmx_type.h
 * for an up-to-date list of values.
 * To help locate relevant portions of guest driver code
 * and debug guest failures, enum names from the above header
 * are listed below:
 *
 * Reasonable options:
 * 0 - unset? - see VMX_TYPE_UNSET

			^^^ Note as you know what this is, please write it up.

 * 1 - VMware Express (deprecated) - see VMX_TYPE_UNSET
 * 2 - VMware ESX server - see VMX_TYPE_EXPRESS
 * 3 - VMware Server (deprecated) - see VMX_TYPE_WGS
 * 4 - VMware Workstation - see VMX_TYPE_WORKSTATION
 * 5 - ACE 1.x (deprecated) - see VMX_TYPE_WORKSTATION_ENTERPRISE
 */
DEFINE_PROP_UINT8("vm-executable-type", VMPortState, vm_executable_type, 2),


Maybe above is OK, if above questions can be addressed.



> Let's agree that I will fix coding convention issue (VMX_Type -> VMXType)
> and link to open-vm-tools but remain with the enum.
> And see what other maintainers have to see about this on v2.

Sorry, if you don't address my comments from v1 please do not expect me
to review v2.  I also feel strongly about proper attribution.  Ignoring
original license on vmport.c making it depend on "GPL v2 but not later"
bits for cosmetic reasons just isn't right.


-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 17:36                       ` Michael S. Tsirkin
@ 2020-03-10 17:58                         ` Liran Alon
  0 siblings, 0 replies; 79+ messages in thread
From: Liran Alon @ 2020-03-10 17:58 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 19:36, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 06:39:33PM +0200, Liran Alon wrote:
>>>> Isn't enum invented exactly for enumerating all possible values of a field?
>>> No - it just assigns names to constants. If you then proceed not to use
>>> the names, then it's pointless.
>> It's not. It exactly lists all the various possible values.
> That's not factually correct in this case. In C, enum does not
> necessarily list all possible values generally. Neither is it always
> used like this in QEMU. Neither does it do it in this case, nothing
> prevents user from sticking any single-byte value in the property.
It lists all currently known values for this enum. Exactly as you do in 
your comment...
The only way to prevent user from entering a value that is not defined 
in enum is to restrict user to enum-values.
Which can be done if you think it's appropriate. I think it just limits 
production flexibility.
>
>> Giving new names to existing terminology that can be matched against
>> existing guest code which interface with your device emulation is what
>> requires guesswork.
>> Using names matching the guest code driver is what doesn't require guesswork
>> and is more intuitive to understand.
> Yes, it's sometimes helpful to match guest driver since that helps debug
> the whole stack. There's literally nothing to help debug here though.
The "guest driver" in this case is open-vm-tools. And it helps that the 
names match.
> But if you feel strongly, here's a conversation starter.
> But it raises some questions that need to be answered
> properly:
>
>
> /*
>   * Virtual Machine eXecutable type (VMX).
>   *
>   * Most guests are fine with the default.
>   *
>   * Some legacy guests hard-code a given type.
>
> ^ Is this the real reason we are including this option?
> Because if it is how is it helpful to add link to
> the open-source drivers? These likely are not legacy ...
The "driver" in this case is open-vm-tools.
The legacy guests have proprietary drivers that mimics VMware Tools or a 
subset of it's functionality.
>
>
>   * See https://urldefense.com/v3/__https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/lib/include/vm_vmx_type.h__;!!GqivPVa7Brio!IuRMdod4d33nvVKOiG-itVXtxnHA9nAouQdYDxv3E62rIzVzPBWZ5M54D7BEF3g$
>   * for an up-to-date list of values.
>   * To help locate relevant portions of guest driver code
>   * and debug guest failures, enum names from the above header
>   * are listed below:
>   *
>   * Reasonable options:
>   * 0 - unset? - see VMX_TYPE_UNSET
>
> 			^^^ Note as you know what this is, please write it up.
>
>   * 1 - VMware Express (deprecated) - see VMX_TYPE_UNSET
>   * 2 - VMware ESX server - see VMX_TYPE_EXPRESS
>   * 3 - VMware Server (deprecated) - see VMX_TYPE_WGS
>   * 4 - VMware Workstation - see VMX_TYPE_WORKSTATION
>   * 5 - ACE 1.x (deprecated) - see VMX_TYPE_WORKSTATION_ENTERPRISE
>   */
> DEFINE_PROP_UINT8("vm-executable-type", VMPortState, vm_executable_type, 2),
>
>
> Maybe above is OK, if above questions can be addressed.
I still don't understand why you view a comment to be better than an enum.
This also contradict the approach taken for other enums in device 
emulation code, as I have provided multiple examples in previous reply.
>
>
>
>> Let's agree that I will fix coding convention issue (VMX_Type -> VMXType)
>> and link to open-vm-tools but remain with the enum.
>> And see what other maintainers have to see about this on v2.
> Sorry, if you don't address my comments from v1 please do not expect me
> to review v2.  I also feel strongly about proper attribution.  Ignoring
> original license on vmport.c making it depend on "GPL v2 but not later"
> bits for cosmetic reasons just isn't right.

Which part of license to I ignore?

I fixed all the comments you have mentioned beside this thing that is 
debatable. I wish to hear an additional opinion.
If you really strongly insist on this, I can change this to what you 
want without further discussion...

Why not allow to review all the 15 patches besides a discussion of 
whether constants should be defined in enum or comment?
That seems a little harsh to me.

-Liran






^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 14:46                 ` Liran Alon
  2020-03-10 15:10                   ` Michael S. Tsirkin
@ 2020-03-10 21:16                   ` Michael S. Tsirkin
  2020-03-10 21:34                     ` Liran Alon
  1 sibling, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 21:16 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 04:46:19PM +0200, Liran Alon wrote:
> There is no license issue here. It's only definitions. 

So it seems that in your opinion
- definition names in the interface do not need a license
and
- it is fair to reuse them without a license for the purpose
  of making your compatible interface easier to use for
  people familiar with the original

Did I get that right?

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 21:16                   ` Michael S. Tsirkin
@ 2020-03-10 21:34                     ` Liran Alon
  2020-03-10 21:49                       ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 21:34 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 23:16, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 04:46:19PM +0200, Liran Alon wrote:
>> There is no license issue here. It's only definitions.
> So it seems that in your opinion
> - definition names in the interface do not need a license
> and
> - it is fair to reuse them without a license for the purpose
>    of making your compatible interface easier to use for
>    people familiar with the original
>
> Did I get that right?
I'm for sure not an expert on open source code licenses. You probably 
know this area much more than I do.
But yes, this is what I would have thought. That it's not an issue to 
copy the enum definition.

If I'm wrong and it is an issue, is declaring a new enum with new names 
not a license issue and can be done instead?
Or am I only allowed to use hard-coded numbers, point to original code 
from where I deduced the number, and specify number meaning in comment?

-Liran




^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 21:34                     ` Liran Alon
@ 2020-03-10 21:49                       ` Michael S. Tsirkin
  2020-03-10 21:59                         ` Liran Alon
  0 siblings, 1 reply; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 21:49 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 11:34:00PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 23:16, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 04:46:19PM +0200, Liran Alon wrote:
> > > There is no license issue here. It's only definitions.
> > So it seems that in your opinion
> > - definition names in the interface do not need a license
> > and
> > - it is fair to reuse them without a license for the purpose
> >    of making your compatible interface easier to use for
> >    people familiar with the original
> > 
> > Did I get that right?
> I'm for sure not an expert on open source code licenses. You probably know
> this area much more than I do.
> But yes, this is what I would have thought. That it's not an issue to copy
> the enum definition.

I'm not a lawyer. I think attribution is important even for small
things, and it was missing in v1. v2 has it but link would be better.  I
also think respecting author's wishes is important, and a license gives
a hint as to that.

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 21:49                       ` Michael S. Tsirkin
@ 2020-03-10 21:59                         ` Liran Alon
  2020-03-10 22:04                           ` Michael S. Tsirkin
  0 siblings, 1 reply; 79+ messages in thread
From: Liran Alon @ 2020-03-10 21:59 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth


On 10/03/2020 23:49, Michael S. Tsirkin wrote:
> On Tue, Mar 10, 2020 at 11:34:00PM +0200, Liran Alon wrote:
>> On 10/03/2020 23:16, Michael S. Tsirkin wrote:
>>> On Tue, Mar 10, 2020 at 04:46:19PM +0200, Liran Alon wrote:
>>>> There is no license issue here. It's only definitions.
>>> So it seems that in your opinion
>>> - definition names in the interface do not need a license
>>> and
>>> - it is fair to reuse them without a license for the purpose
>>>     of making your compatible interface easier to use for
>>>     people familiar with the original
>>>
>>> Did I get that right?
>> I'm for sure not an expert on open source code licenses. You probably know
>> this area much more than I do.
>> But yes, this is what I would have thought. That it's not an issue to copy
>> the enum definition.
> I'm not a lawyer. I think attribution is important even for small
> things, and it was missing in v1. v2 has it but link would be better.  I
> also think respecting author's wishes is important, and a license gives
> a hint as to that.
>
Oh maybe I misunderstood you.
So you're saying I should just add a link to open-vm-tools git-repo for 
attribution?
Which author's wishes you refer to?

-Liran



^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION
  2020-03-10 21:59                         ` Liran Alon
@ 2020-03-10 22:04                           ` Michael S. Tsirkin
  0 siblings, 0 replies; 79+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10 22:04 UTC (permalink / raw)
  To: Liran Alon; +Cc: ehabkost, qemu-devel, Nikita Leshenko, pbonzini, rth

On Tue, Mar 10, 2020 at 11:59:29PM +0200, Liran Alon wrote:
> 
> On 10/03/2020 23:49, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 11:34:00PM +0200, Liran Alon wrote:
> > > On 10/03/2020 23:16, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 04:46:19PM +0200, Liran Alon wrote:
> > > > > There is no license issue here. It's only definitions.
> > > > So it seems that in your opinion
> > > > - definition names in the interface do not need a license
> > > > and
> > > > - it is fair to reuse them without a license for the purpose
> > > >     of making your compatible interface easier to use for
> > > >     people familiar with the original
> > > > 
> > > > Did I get that right?
> > > I'm for sure not an expert on open source code licenses. You probably know
> > > this area much more than I do.
> > > But yes, this is what I would have thought. That it's not an issue to copy
> > > the enum definition.
> > I'm not a lawyer. I think attribution is important even for small
> > things, and it was missing in v1. v2 has it but link would be better.  I
> > also think respecting author's wishes is important, and a license gives
> > a hint as to that.
> > 
> Oh maybe I misunderstood you.
> So you're saying I should just add a link to open-vm-tools git-repo for
> attribution?

I even posted a code snippet, feel free to reuse.

> Which author's wishes you refer to?
> 
> -Liran

I really just said one should check before copying code.
In this case if we don't really need to make vmport depend on GPL only
code we shouldn't since original author wanted it to be copyleft.

-- 
MST



^ permalink raw reply	[flat|nested] 79+ messages in thread

end of thread, other threads:[~2020-03-10 22:04 UTC | newest]

Thread overview: 79+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-09 23:53 [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements Liran Alon
2020-03-09 23:53 ` [PATCH 01/14] hw/i386/vmport: Propagate IOPort read to vCPU EAX register Liran Alon
2020-03-09 23:53 ` [PATCH 02/14] hw/i386/vmport: Set EAX to -1 on failed and unsupported commands Liran Alon
2020-03-09 23:54 ` [PATCH 03/14] hw/i386/vmport: Add device properties Liran Alon
2020-03-09 23:54 ` [PATCH 04/14] hw/i386/vmport: Introduce vmx-version property Liran Alon
2020-03-10  9:32   ` Michael S. Tsirkin
2020-03-10 11:05     ` Liran Alon
2020-03-10 11:18       ` Michael S. Tsirkin
2020-03-10 11:28         ` Liran Alon
2020-03-10 11:44           ` Michael S. Tsirkin
2020-03-10 11:53             ` Liran Alon
2020-03-09 23:54 ` [PATCH 05/14] hw/i386/vmport: Report VMX type in CMD_GETVERSION Liran Alon
2020-03-10  9:20   ` Michael S. Tsirkin
2020-03-10 11:18     ` Liran Alon
2020-03-10 11:23       ` Michael S. Tsirkin
2020-03-10 11:40         ` Liran Alon
2020-03-10 11:47           ` Michael S. Tsirkin
2020-03-10 12:14   ` Michael S. Tsirkin
2020-03-10 12:25     ` Liran Alon
2020-03-10 12:35       ` Michael S. Tsirkin
2020-03-10 12:43         ` Liran Alon
2020-03-10 12:53           ` Michael S. Tsirkin
2020-03-10 13:35             ` Liran Alon
2020-03-10 14:08               ` Michael S. Tsirkin
2020-03-10 14:46                 ` Liran Alon
2020-03-10 15:10                   ` Michael S. Tsirkin
2020-03-10 16:39                     ` Liran Alon
2020-03-10 17:36                       ` Michael S. Tsirkin
2020-03-10 17:58                         ` Liran Alon
2020-03-10 21:16                   ` Michael S. Tsirkin
2020-03-10 21:34                     ` Liran Alon
2020-03-10 21:49                       ` Michael S. Tsirkin
2020-03-10 21:59                         ` Liran Alon
2020-03-10 22:04                           ` Michael S. Tsirkin
2020-03-09 23:54 ` [PATCH 06/14] hw/i386/vmport: Define enum for all commands Liran Alon
2020-03-10  9:28   ` Michael S. Tsirkin
2020-03-10 11:16     ` Liran Alon
2020-03-10 11:23       ` Michael S. Tsirkin
2020-03-10 11:37         ` Liran Alon
2020-03-10 11:46           ` Michael S. Tsirkin
2020-03-10 11:54             ` Liran Alon
2020-03-09 23:54 ` [PATCH 07/14] hw/i386/vmport: Add support for CMD_GETBIOSUUID Liran Alon
2020-03-10  9:22   ` Michael S. Tsirkin
2020-03-10 11:44     ` Liran Alon
2020-03-10 12:01       ` Michael S. Tsirkin
2020-03-10 12:37         ` Liran Alon
2020-03-10 13:01           ` Michael S. Tsirkin
2020-03-10  9:34   ` Michael S. Tsirkin
2020-03-10 11:13     ` Liran Alon
2020-03-10 11:22       ` Michael S. Tsirkin
2020-03-10 11:35         ` Liran Alon
2020-03-10 14:24         ` Liran Alon
2020-03-10 14:39           ` Michael S. Tsirkin
2020-03-10 14:56             ` Liran Alon
2020-03-09 23:54 ` [PATCH 08/14] hw/i386/vmport: Add support for CMD_GETTIME Liran Alon
2020-03-09 23:54 ` [PATCH 09/14] hw/i386/vmport: Add support for CMD_GETTIMEFULL Liran Alon
2020-03-09 23:54 ` [PATCH 10/14] hw/i386/vmport: Add support for CMD_GET_VCPU_INFO Liran Alon
2020-03-09 23:54 ` [PATCH 11/14] hw/i386/vmport: Allow x2apic without IR Liran Alon
2020-03-09 23:54 ` [PATCH 12/14] i386/cpu: Store LAPIC bus frequency in CPU structure Liran Alon
2020-03-10  9:29   ` Michael S. Tsirkin
2020-03-10 10:53     ` Liran Alon
2020-03-10 12:27       ` Michael S. Tsirkin
2020-03-10 12:29         ` Liran Alon
2020-03-09 23:54 ` [PATCH 13/14] hw/i386/vmport: Add support for CMD_GETHZ Liran Alon
2020-03-09 23:54 ` [PATCH 14/14] hw/i386/vmport: Assert vmport initialized before registering commands Liran Alon
2020-03-10  9:30   ` Michael S. Tsirkin
2020-03-10 10:57     ` Liran Alon
2020-03-10  0:13 ` [PATCH 00/14]: hw/i386/vmport: Bug fixes and improvements no-reply
2020-03-10  0:16   ` Liran Alon
2020-03-10  0:53 ` no-reply
2020-03-10  0:54 ` no-reply
2020-03-10  0:57   ` Liran Alon
2020-03-10  1:10 ` no-reply
2020-03-10  1:49 ` no-reply
2020-03-10  1:50 ` no-reply
2020-03-10  2:04 ` no-reply
2020-03-10  2:22 ` no-reply
2020-03-10  2:56 ` no-reply
2020-03-10  2:56 ` no-reply

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.