All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
@ 2018-01-29 17:41 ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

This patch series provides support for AMD's new Secure Encrypted 
Virtualization (SEV) feature.

SEV is an extension to the AMD-V architecture which supports running
multiple VMs under the control of a hypervisor. The SEV feature allows
the memory contents of a virtual machine (VM) to be transparently encrypted
with a key unique to the guest VM. The memory controller contains a
high performance encryption engine which can be programmed with multiple
keys for use by a different VMs in the system. The programming and
management of these keys is handled by the AMD Secure Processor firmware
which exposes a commands for these tasks.

The KVM SEV patch series introduced a new ioctl (KVM_MEMORY_ENCRYPTION_OP)
which is used by qemu to issue the SEV commands to assist performing
common hypervisor activities such as a launching, running, snapshooting,
migration and debugging guests.

The following links provide additional details:

AMD Memory Encryption whitepaper:
 
http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf

AMD64 Architecture Programmer's Manual:
http://support.amd.com/TechDocs/24593.pdf
SME is section 7.10
SEV is section 15.34

Secure Encrypted Virutualization Key Management:
http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf

KVM Forum slides:
http://www.linux-kvm.org/images/7/74/02x08A-Thomas_Lendacky-AMDs_Virtualizatoin_Memory_Encryption_Technology.pdf

Video of the KVM Forum Talk:
https://www.youtube.com/watch?v=RcvQ1xN55Ew

---

The complete patch series is available :
https://github.com/codomania/qemu/tree/v6

Using these patches we have succesfully booted and tested a guest both with and
without SEV enabled.

TODO:

* Add SEV guest migration support
* Add SEV guest snapshot and restore support

Changes since v5:
- drop MEMTXTATTRS_DEBUG macro, caller now specify attrs.debug=1 when needed.
- drop DPRINTF and use trace points to output the debug messages

Changes since v4:
- extend sev-guest object to add new properties 'dh-cert-file', 'session-file' etc.
- emit SEV_MEASUREMENT event when measurement is available
- add migration blocker
- add memory encryption cpuid support
- rebase the series with recent qemu tree

Changes since v3:
- update to newer SEV spec (0.12 -> 0.14)
- update to newer KVM RFC and use KVM_MEMORY_ENCRYPTION_OP ioctl instead
of KVM_ISSUE_SEV.
- add support to encrypt plfash

Changes since v2:
- rename ram_ops to ram_debug_ops
- use '-' rather than '_' when adding new member in KvmInfo struct
- update sev object to use link properties when referencing other objects
- use ldq_phys_debug in tlb_info_64 and mem_info_64.
- remove sev-guest-policy object, we will revisit it after basic SEV
guest support is merged.
- remove kernel API from doc and add SEV guest LAUNCH model. The doc will
be updated as we integerate the remaining SEV APIs.

Changes since v1:
- Added Documentation
- Added security-policy object.
- Drop sev config parsing support and create new objects to get/set SEV
specific parameters
- Added sev-guest-info object.
- Added sev-launch-info object.
- Added kvm_memory_encrytion_* APIs. The idea behind this was to allow adding
a non SEV memory encrytion object without modifying interfaces.
- Drop patch to load OS image at fixed location.
- updated LAUNCH_FINISH command structure. Now the structure contains
just 'measurement' field. Other fields are not used and will also be removed
from newer SEV firmware API spec.

Brijesh Singh (23):
  memattrs: add debug attribute
  exec: add ram_debug_ops support
  exec: add debug version of physical memory read and write API
  monitor/i386: use debug APIs when accessing guest memory
  target/i386: add memory encryption feature cpuid support
  machine: add -memory-encryption property
  kvm: update kvm.h to include memory encryption ioctls
  docs: add AMD Secure Encrypted Virtualization (SEV)
  accel: add Secure Encrypted Virtulization (SEV) object
  sev: add command to initialize the memory encryption context
  sev: register the guest memory range which may contain encrypted data
  kvm: introduce memory encryption APIs
  hmp: display memory encryption support in 'info kvm'
  sev: add command to create launch memory encryption context
  sev: add command to encrypt guest memory region
  target/i386: encrypt bios rom
  qapi: add SEV_MEASUREMENT event
  sev: emit the SEV_MEASUREMENT event
  sev: Finalize the SEV guest launch flow
  hw: i386: set ram_debug_ops when memory encryption is enabled
  sev: add debug encrypt and decrypt commands
  target/i386: clear C-bit when walking SEV guest page table
  sev: add migration blocker

 accel/kvm/Makefile.objs        |   2 +-
 accel/kvm/kvm-all.c            |  48 +++
 accel/kvm/sev.c                | 661 +++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events         |  10 +
 accel/stubs/kvm-stub.c         |  14 +
 cpus.c                         |   2 +-
 disas.c                        |   2 +-
 docs/amd-memory-encryption.txt | 109 +++++++
 exec.c                         | 107 ++++++-
 hmp.c                          |   2 +
 hw/core/machine.c              |  22 ++
 hw/i386/pc.c                   |   9 +
 hw/i386/pc_sysfw.c             |  19 ++
 include/exec/cpu-common.h      |  15 +
 include/exec/memattrs.h        |   2 +
 include/exec/memory.h          |  27 ++
 include/hw/boards.h            |   1 +
 include/sysemu/kvm.h           |  25 ++
 include/sysemu/sev.h           |  76 +++++
 linux-headers/linux/kvm.h      |  90 ++++++
 monitor.c                      |   8 +-
 qapi-schema.json               |  18 +-
 qemu-options.hx                |  36 +++
 qmp.c                          |   1 +
 target/i386/cpu.c              |  36 +++
 target/i386/cpu.h              |   6 +
 target/i386/helper.c           |  46 ++-
 target/i386/monitor.c          | 145 +++++----
 28 files changed, 1450 insertions(+), 89 deletions(-)
 create mode 100644 accel/kvm/sev.c
 create mode 100644 docs/amd-memory-encryption.txt
 create mode 100644 include/sysemu/sev.h

-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
@ 2018-01-29 17:41 ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

This patch series provides support for AMD's new Secure Encrypted 
Virtualization (SEV) feature.

SEV is an extension to the AMD-V architecture which supports running
multiple VMs under the control of a hypervisor. The SEV feature allows
the memory contents of a virtual machine (VM) to be transparently encrypted
with a key unique to the guest VM. The memory controller contains a
high performance encryption engine which can be programmed with multiple
keys for use by a different VMs in the system. The programming and
management of these keys is handled by the AMD Secure Processor firmware
which exposes a commands for these tasks.

The KVM SEV patch series introduced a new ioctl (KVM_MEMORY_ENCRYPTION_OP)
which is used by qemu to issue the SEV commands to assist performing
common hypervisor activities such as a launching, running, snapshooting,
migration and debugging guests.

The following links provide additional details:

AMD Memory Encryption whitepaper:
 
http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf

AMD64 Architecture Programmer's Manual:
http://support.amd.com/TechDocs/24593.pdf
SME is section 7.10
SEV is section 15.34

Secure Encrypted Virutualization Key Management:
http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf

KVM Forum slides:
http://www.linux-kvm.org/images/7/74/02x08A-Thomas_Lendacky-AMDs_Virtualizatoin_Memory_Encryption_Technology.pdf

Video of the KVM Forum Talk:
https://www.youtube.com/watch?v=RcvQ1xN55Ew

---

The complete patch series is available :
https://github.com/codomania/qemu/tree/v6

Using these patches we have succesfully booted and tested a guest both with and
without SEV enabled.

TODO:

* Add SEV guest migration support
* Add SEV guest snapshot and restore support

Changes since v5:
- drop MEMTXTATTRS_DEBUG macro, caller now specify attrs.debug=1 when needed.
- drop DPRINTF and use trace points to output the debug messages

Changes since v4:
- extend sev-guest object to add new properties 'dh-cert-file', 'session-file' etc.
- emit SEV_MEASUREMENT event when measurement is available
- add migration blocker
- add memory encryption cpuid support
- rebase the series with recent qemu tree

Changes since v3:
- update to newer SEV spec (0.12 -> 0.14)
- update to newer KVM RFC and use KVM_MEMORY_ENCRYPTION_OP ioctl instead
of KVM_ISSUE_SEV.
- add support to encrypt plfash

Changes since v2:
- rename ram_ops to ram_debug_ops
- use '-' rather than '_' when adding new member in KvmInfo struct
- update sev object to use link properties when referencing other objects
- use ldq_phys_debug in tlb_info_64 and mem_info_64.
- remove sev-guest-policy object, we will revisit it after basic SEV
guest support is merged.
- remove kernel API from doc and add SEV guest LAUNCH model. The doc will
be updated as we integerate the remaining SEV APIs.

Changes since v1:
- Added Documentation
- Added security-policy object.
- Drop sev config parsing support and create new objects to get/set SEV
specific parameters
- Added sev-guest-info object.
- Added sev-launch-info object.
- Added kvm_memory_encrytion_* APIs. The idea behind this was to allow adding
a non SEV memory encrytion object without modifying interfaces.
- Drop patch to load OS image at fixed location.
- updated LAUNCH_FINISH command structure. Now the structure contains
just 'measurement' field. Other fields are not used and will also be removed
from newer SEV firmware API spec.

Brijesh Singh (23):
  memattrs: add debug attribute
  exec: add ram_debug_ops support
  exec: add debug version of physical memory read and write API
  monitor/i386: use debug APIs when accessing guest memory
  target/i386: add memory encryption feature cpuid support
  machine: add -memory-encryption property
  kvm: update kvm.h to include memory encryption ioctls
  docs: add AMD Secure Encrypted Virtualization (SEV)
  accel: add Secure Encrypted Virtulization (SEV) object
  sev: add command to initialize the memory encryption context
  sev: register the guest memory range which may contain encrypted data
  kvm: introduce memory encryption APIs
  hmp: display memory encryption support in 'info kvm'
  sev: add command to create launch memory encryption context
  sev: add command to encrypt guest memory region
  target/i386: encrypt bios rom
  qapi: add SEV_MEASUREMENT event
  sev: emit the SEV_MEASUREMENT event
  sev: Finalize the SEV guest launch flow
  hw: i386: set ram_debug_ops when memory encryption is enabled
  sev: add debug encrypt and decrypt commands
  target/i386: clear C-bit when walking SEV guest page table
  sev: add migration blocker

 accel/kvm/Makefile.objs        |   2 +-
 accel/kvm/kvm-all.c            |  48 +++
 accel/kvm/sev.c                | 661 +++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events         |  10 +
 accel/stubs/kvm-stub.c         |  14 +
 cpus.c                         |   2 +-
 disas.c                        |   2 +-
 docs/amd-memory-encryption.txt | 109 +++++++
 exec.c                         | 107 ++++++-
 hmp.c                          |   2 +
 hw/core/machine.c              |  22 ++
 hw/i386/pc.c                   |   9 +
 hw/i386/pc_sysfw.c             |  19 ++
 include/exec/cpu-common.h      |  15 +
 include/exec/memattrs.h        |   2 +
 include/exec/memory.h          |  27 ++
 include/hw/boards.h            |   1 +
 include/sysemu/kvm.h           |  25 ++
 include/sysemu/sev.h           |  76 +++++
 linux-headers/linux/kvm.h      |  90 ++++++
 monitor.c                      |   8 +-
 qapi-schema.json               |  18 +-
 qemu-options.hx                |  36 +++
 qmp.c                          |   1 +
 target/i386/cpu.c              |  36 +++
 target/i386/cpu.h              |   6 +
 target/i386/helper.c           |  46 ++-
 target/i386/monitor.c          | 145 +++++----
 28 files changed, 1450 insertions(+), 89 deletions(-)
 create mode 100644 accel/kvm/sev.c
 create mode 100644 docs/amd-memory-encryption.txt
 create mode 100644 include/sysemu/sev.h

-- 
2.9.5

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

* [PATCH v6 01/23] memattrs: add debug attribute
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Alistair Francis

Extend the MemTxAttrs to include 'debug' flag. The flag can be used as
general indicator that operation was triggered by the debugger.

Later in the patch series we set the debug=1 when issuing a memory access
from the gdbstub or HMP commands. This patch is prerequisite to support
debugging the encrypted guest. If we see request with debug=1 then we
will need to use encryption APIs to access the guest memory.

Cc: Alistair Francis <alistair.francis@xilinx.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 include/exec/memattrs.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h
index d4a16420984b..08099e4f7e72 100644
--- a/include/exec/memattrs.h
+++ b/include/exec/memattrs.h
@@ -37,6 +37,8 @@ typedef struct MemTxAttrs {
     unsigned int user:1;
     /* Requester ID (for MSI for example) */
     unsigned int requester_id:16;
+    /* Memory access request from the debugger */
+    unsigned int debug:1;
 } MemTxAttrs;
 
 /* Bus masters which don't specify any attributes will get this,
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 01/23] memattrs: add debug attribute
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Alistair Francis

Extend the MemTxAttrs to include 'debug' flag. The flag can be used as
general indicator that operation was triggered by the debugger.

Later in the patch series we set the debug=1 when issuing a memory access
from the gdbstub or HMP commands. This patch is prerequisite to support
debugging the encrypted guest. If we see request with debug=1 then we
will need to use encryption APIs to access the guest memory.

Cc: Alistair Francis <alistair.francis@xilinx.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 include/exec/memattrs.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h
index d4a16420984b..08099e4f7e72 100644
--- a/include/exec/memattrs.h
+++ b/include/exec/memattrs.h
@@ -37,6 +37,8 @@ typedef struct MemTxAttrs {
     unsigned int user:1;
     /* Requester ID (for MSI for example) */
     unsigned int requester_id:16;
+    /* Memory access request from the debugger */
+    unsigned int debug:1;
 } MemTxAttrs;
 
 /* Bus masters which don't specify any attributes will get this,
-- 
2.9.5

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

* [PATCH v6 02/23] exec: add ram_debug_ops support
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Peter Crosthwaite,
	Richard Henderson

Currently, the guest memory access for the debug purpose is performed
using the memcpy(). Lets extend the 'struct MemoryRegion' to include
ram_debug_ops callbacks. The ram_debug_ops can be used to override
memcpy() with something else.

The feature can be used by encrypted guest -- which can register
callbacks to override memcpy() with memory encryption/decryption APIs.

a typical usage:

mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);

MemoryRegionRAMReadWriteOps ops;
ops.read = mem_read;
ops.write = mem_write;

memory_region_init_ram(mem, NULL, "memory", size, NULL);
memory_region_set_ram_debug_ops(mem, ops);

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
 include/exec/memory.h | 27 +++++++++++++++++++++
 2 files changed, 77 insertions(+), 16 deletions(-)

diff --git a/exec.c b/exec.c
index 629a5083851d..1919052b7385 100644
--- a/exec.c
+++ b/exec.c
@@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
         } else {
             /* RAM case */
             ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
-            memcpy(ptr, buf, l);
+            if (attrs.debug && mr->ram_debug_ops) {
+                mr->ram_debug_ops->write(ptr, buf, l, attrs);
+            } else {
+                memcpy(ptr, buf, l);
+            }
             invalidate_and_set_dirty(mr, addr1, l);
         }
 
@@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
         } else {
             /* RAM case */
             ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
-            memcpy(buf, ptr, l);
+            if (attrs.debug && mr->ram_debug_ops) {
+                mr->ram_debug_ops->read(buf, ptr, l, attrs);
+            } else {
+                memcpy(buf, ptr, l);
+            }
         }
 
         if (release_lock) {
@@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
 
 enum write_rom_type {
     WRITE_DATA,
+    READ_DATA,
     FLUSH_CACHE,
 };
 
-static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
-    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
+static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
+    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
+    enum write_rom_type type)
 {
     hwaddr l;
     uint8_t *ptr;
@@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
         if (!(memory_region_is_ram(mr) ||
               memory_region_is_romd(mr))) {
             l = memory_access_size(mr, l, addr1);
+            /* Pass MMIO down to address address_space_rw */
+            switch (type) {
+            case READ_DATA:
+            case WRITE_DATA:
+                address_space_rw(as, addr1, attrs, buf, l,
+                                 type == WRITE_DATA);
+                break;
+            case FLUSH_CACHE:
+                break;
+            }
         } else {
             /* ROM/RAM case */
             ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
             switch (type) {
+            case READ_DATA:
+                if (mr->ram_debug_ops) {
+                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
+                } else {
+                    memcpy(buf, ptr, l);
+                }
+                break;
             case WRITE_DATA:
-                memcpy(ptr, buf, l);
+                if (mr->ram_debug_ops) {
+                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
+                } else {
+                    memcpy(ptr, buf, l);
+                }
                 invalidate_and_set_dirty(mr, addr1, l);
                 break;
             case FLUSH_CACHE:
@@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
 void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
                                    const uint8_t *buf, int len)
 {
-    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
+    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
+            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
 }
 
 void cpu_flush_icache_range(hwaddr start, int len)
@@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
         return;
     }
 
-    cpu_physical_memory_write_rom_internal(&address_space_memory,
-                                           start, NULL, len, FLUSH_CACHE);
+    cpu_physical_memory_rw_internal(&address_space_memory,
+                                    start, NULL, len,
+                                    MEMTXATTRS_UNSPECIFIED,
+                                    FLUSH_CACHE);
 }
 
 typedef struct {
@@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
     int l;
     hwaddr phys_addr;
     target_ulong page;
+    int type = is_write ? WRITE_DATA : READ_DATA;
 
     cpu_synchronize_state(cpu);
     while (len > 0) {
@@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
         page = addr & TARGET_PAGE_MASK;
         phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
         asidx = cpu_asidx_from_attrs(cpu, attrs);
+
+        /* set debug attrs to indicate memory access is from the debugger */
+        attrs.debug = 1;
+
         /* if no physical page mapped, return an error */
         if (phys_addr == -1)
             return -1;
@@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
         if (l > len)
             l = len;
         phys_addr += (addr & ~TARGET_PAGE_MASK);
-        if (is_write) {
-            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
-                                          phys_addr, buf, l);
-        } else {
-            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
-                             MEMTXATTRS_UNSPECIFIED,
-                             buf, l, 0);
-        }
+        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
+                                        phys_addr, buf, l, attrs,
+                                        type);
         len -= l;
         buf += l;
         addr += l;
diff --git a/include/exec/memory.h b/include/exec/memory.h
index 07c5d6d59796..4d027fffeebf 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
 typedef struct CoalescedMemoryRange CoalescedMemoryRange;
 typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
 
+/* Memory Region RAM debug callback */
+typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
+
+struct MemoryRegionRAMReadWriteOps {
+    /* Write data into guest memory */
+    int (*write) (uint8_t *dest, const uint8_t *src,
+                  uint32_t len, MemTxAttrs attrs);
+    /* Read data from guest memory */
+    int (*read) (uint8_t *dest, const uint8_t *src,
+                 uint32_t len, MemTxAttrs attrs);
+};
+
 struct MemoryRegion {
     Object parent_obj;
 
@@ -254,6 +266,7 @@ struct MemoryRegion {
     const char *name;
     unsigned ioeventfd_nb;
     MemoryRegionIoeventfd *ioeventfds;
+    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
 };
 
 struct IOMMUMemoryRegion {
@@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
                                              Error **errp);
 
 /**
+ * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
+ *
+ * @mr: the #MemoryRegion to be initialized
+ * @ops: a function that will be used for when accessing @target region during
+ *       debug
+ */
+static inline void
+memory_region_set_ram_debug_ops(MemoryRegion *mr,
+                                const MemoryRegionRAMReadWriteOps *ops)
+{
+    mr->ram_debug_ops = ops;
+}
+
+/**
  * memory_region_init_reservation: Initialize a memory region that reserves
  *                                 I/O space.
  *
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 02/23] exec: add ram_debug_ops support
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Peter Crosthwaite,
	Richard Henderson

Currently, the guest memory access for the debug purpose is performed
using the memcpy(). Lets extend the 'struct MemoryRegion' to include
ram_debug_ops callbacks. The ram_debug_ops can be used to override
memcpy() with something else.

The feature can be used by encrypted guest -- which can register
callbacks to override memcpy() with memory encryption/decryption APIs.

a typical usage:

mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);

MemoryRegionRAMReadWriteOps ops;
ops.read = mem_read;
ops.write = mem_write;

memory_region_init_ram(mem, NULL, "memory", size, NULL);
memory_region_set_ram_debug_ops(mem, ops);

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
 include/exec/memory.h | 27 +++++++++++++++++++++
 2 files changed, 77 insertions(+), 16 deletions(-)

diff --git a/exec.c b/exec.c
index 629a5083851d..1919052b7385 100644
--- a/exec.c
+++ b/exec.c
@@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
         } else {
             /* RAM case */
             ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
-            memcpy(ptr, buf, l);
+            if (attrs.debug && mr->ram_debug_ops) {
+                mr->ram_debug_ops->write(ptr, buf, l, attrs);
+            } else {
+                memcpy(ptr, buf, l);
+            }
             invalidate_and_set_dirty(mr, addr1, l);
         }
 
@@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
         } else {
             /* RAM case */
             ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
-            memcpy(buf, ptr, l);
+            if (attrs.debug && mr->ram_debug_ops) {
+                mr->ram_debug_ops->read(buf, ptr, l, attrs);
+            } else {
+                memcpy(buf, ptr, l);
+            }
         }
 
         if (release_lock) {
@@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
 
 enum write_rom_type {
     WRITE_DATA,
+    READ_DATA,
     FLUSH_CACHE,
 };
 
-static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
-    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
+static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
+    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
+    enum write_rom_type type)
 {
     hwaddr l;
     uint8_t *ptr;
@@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
         if (!(memory_region_is_ram(mr) ||
               memory_region_is_romd(mr))) {
             l = memory_access_size(mr, l, addr1);
+            /* Pass MMIO down to address address_space_rw */
+            switch (type) {
+            case READ_DATA:
+            case WRITE_DATA:
+                address_space_rw(as, addr1, attrs, buf, l,
+                                 type == WRITE_DATA);
+                break;
+            case FLUSH_CACHE:
+                break;
+            }
         } else {
             /* ROM/RAM case */
             ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
             switch (type) {
+            case READ_DATA:
+                if (mr->ram_debug_ops) {
+                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
+                } else {
+                    memcpy(buf, ptr, l);
+                }
+                break;
             case WRITE_DATA:
-                memcpy(ptr, buf, l);
+                if (mr->ram_debug_ops) {
+                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
+                } else {
+                    memcpy(ptr, buf, l);
+                }
                 invalidate_and_set_dirty(mr, addr1, l);
                 break;
             case FLUSH_CACHE:
@@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
 void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
                                    const uint8_t *buf, int len)
 {
-    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
+    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
+            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
 }
 
 void cpu_flush_icache_range(hwaddr start, int len)
@@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
         return;
     }
 
-    cpu_physical_memory_write_rom_internal(&address_space_memory,
-                                           start, NULL, len, FLUSH_CACHE);
+    cpu_physical_memory_rw_internal(&address_space_memory,
+                                    start, NULL, len,
+                                    MEMTXATTRS_UNSPECIFIED,
+                                    FLUSH_CACHE);
 }
 
 typedef struct {
@@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
     int l;
     hwaddr phys_addr;
     target_ulong page;
+    int type = is_write ? WRITE_DATA : READ_DATA;
 
     cpu_synchronize_state(cpu);
     while (len > 0) {
@@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
         page = addr & TARGET_PAGE_MASK;
         phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
         asidx = cpu_asidx_from_attrs(cpu, attrs);
+
+        /* set debug attrs to indicate memory access is from the debugger */
+        attrs.debug = 1;
+
         /* if no physical page mapped, return an error */
         if (phys_addr == -1)
             return -1;
@@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
         if (l > len)
             l = len;
         phys_addr += (addr & ~TARGET_PAGE_MASK);
-        if (is_write) {
-            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
-                                          phys_addr, buf, l);
-        } else {
-            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
-                             MEMTXATTRS_UNSPECIFIED,
-                             buf, l, 0);
-        }
+        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
+                                        phys_addr, buf, l, attrs,
+                                        type);
         len -= l;
         buf += l;
         addr += l;
diff --git a/include/exec/memory.h b/include/exec/memory.h
index 07c5d6d59796..4d027fffeebf 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
 typedef struct CoalescedMemoryRange CoalescedMemoryRange;
 typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
 
+/* Memory Region RAM debug callback */
+typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
+
+struct MemoryRegionRAMReadWriteOps {
+    /* Write data into guest memory */
+    int (*write) (uint8_t *dest, const uint8_t *src,
+                  uint32_t len, MemTxAttrs attrs);
+    /* Read data from guest memory */
+    int (*read) (uint8_t *dest, const uint8_t *src,
+                 uint32_t len, MemTxAttrs attrs);
+};
+
 struct MemoryRegion {
     Object parent_obj;
 
@@ -254,6 +266,7 @@ struct MemoryRegion {
     const char *name;
     unsigned ioeventfd_nb;
     MemoryRegionIoeventfd *ioeventfds;
+    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
 };
 
 struct IOMMUMemoryRegion {
@@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
                                              Error **errp);
 
 /**
+ * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
+ *
+ * @mr: the #MemoryRegion to be initialized
+ * @ops: a function that will be used for when accessing @target region during
+ *       debug
+ */
+static inline void
+memory_region_set_ram_debug_ops(MemoryRegion *mr,
+                                const MemoryRegionRAMReadWriteOps *ops)
+{
+    mr->ram_debug_ops = ops;
+}
+
+/**
  * memory_region_init_reservation: Initialize a memory region that reserves
  *                                 I/O space.
  *
-- 
2.9.5

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

* [PATCH v6 03/23] exec: add debug version of physical memory read and write API
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Peter Crosthwaite,
	Richard Henderson

Adds the following new APIs
- cpu_physical_memory_read_debug
- cpu_physical_memory_write_debug
- cpu_physical_memory_rw_debug
- ldl_phys_debug
- ldq_phys_debug

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
---
 exec.c                    | 41 +++++++++++++++++++++++++++++++++++++++++
 include/exec/cpu-common.h | 15 +++++++++++++++
 2 files changed, 56 insertions(+)

diff --git a/exec.c b/exec.c
index 1919052b7385..49dabdbeecbd 100644
--- a/exec.c
+++ b/exec.c
@@ -3610,6 +3610,47 @@ void address_space_cache_destroy(MemoryRegionCache *cache)
 #define RCU_READ_UNLOCK()        rcu_read_unlock()
 #include "memory_ldst.inc.c"
 
+uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr)
+{
+    MemTxAttrs attrs;
+    int asidx = cpu_asidx_from_attrs(cpu, attrs);
+    uint32_t val;
+
+    /* set debug attrs to indicate memory access is from the debugger */
+    attrs.debug = 1;
+
+    cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
+                                          addr, (void *) &val,
+                                          4, attrs, READ_DATA);
+    return tswap32(val);
+}
+
+uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr)
+{
+    MemTxAttrs attrs;
+    int asidx = cpu_asidx_from_attrs(cpu, attrs);
+    uint64_t val;
+
+    /* set debug attrs to indicate memory access is from the debugger */
+    attrs.debug = 1;
+
+    cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
+                                          addr, (void *) &val,
+                                          8, attrs, READ_DATA);
+    return val;
+}
+
+void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf,
+                                  int len, int is_write)
+{
+    MemTxAttrs attrs;
+
+    /* set debug attrs to indicate memory access is from the debugger */
+    attrs.debug = 1;
+
+    address_space_rw(&address_space_memory, addr, attrs, buf, len, is_write);
+}
+
 /* virtual memory access for debug (includes writing to ROM) */
 int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
                         uint8_t *buf, int len, int is_write)
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 74341b19d26a..fa01385d4f1b 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -77,11 +77,26 @@ size_t qemu_ram_pagesize_largest(void);
 
 void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
                             int len, int is_write);
+void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf,
+                                  int len, int is_write);
 static inline void cpu_physical_memory_read(hwaddr addr,
                                             void *buf, int len)
 {
     cpu_physical_memory_rw(addr, buf, len, 0);
 }
+static inline void cpu_physical_memory_read_debug(hwaddr addr,
+                                                  void *buf, int len)
+{
+    cpu_physical_memory_rw_debug(addr, buf, len, 0);
+}
+static inline void cpu_physical_memory_write_debug(hwaddr addr,
+                                                   const void *buf, int len)
+{
+    cpu_physical_memory_rw_debug(addr, (void *)buf, len, 1);
+}
+uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr);
+uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr);
+
 static inline void cpu_physical_memory_write(hwaddr addr,
                                              const void *buf, int len)
 {
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 03/23] exec: add debug version of physical memory read and write API
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Peter Crosthwaite,
	Richard Henderson

Adds the following new APIs
- cpu_physical_memory_read_debug
- cpu_physical_memory_write_debug
- cpu_physical_memory_rw_debug
- ldl_phys_debug
- ldq_phys_debug

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
---
 exec.c                    | 41 +++++++++++++++++++++++++++++++++++++++++
 include/exec/cpu-common.h | 15 +++++++++++++++
 2 files changed, 56 insertions(+)

diff --git a/exec.c b/exec.c
index 1919052b7385..49dabdbeecbd 100644
--- a/exec.c
+++ b/exec.c
@@ -3610,6 +3610,47 @@ void address_space_cache_destroy(MemoryRegionCache *cache)
 #define RCU_READ_UNLOCK()        rcu_read_unlock()
 #include "memory_ldst.inc.c"
 
+uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr)
+{
+    MemTxAttrs attrs;
+    int asidx = cpu_asidx_from_attrs(cpu, attrs);
+    uint32_t val;
+
+    /* set debug attrs to indicate memory access is from the debugger */
+    attrs.debug = 1;
+
+    cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
+                                          addr, (void *) &val,
+                                          4, attrs, READ_DATA);
+    return tswap32(val);
+}
+
+uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr)
+{
+    MemTxAttrs attrs;
+    int asidx = cpu_asidx_from_attrs(cpu, attrs);
+    uint64_t val;
+
+    /* set debug attrs to indicate memory access is from the debugger */
+    attrs.debug = 1;
+
+    cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
+                                          addr, (void *) &val,
+                                          8, attrs, READ_DATA);
+    return val;
+}
+
+void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf,
+                                  int len, int is_write)
+{
+    MemTxAttrs attrs;
+
+    /* set debug attrs to indicate memory access is from the debugger */
+    attrs.debug = 1;
+
+    address_space_rw(&address_space_memory, addr, attrs, buf, len, is_write);
+}
+
 /* virtual memory access for debug (includes writing to ROM) */
 int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
                         uint8_t *buf, int len, int is_write)
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 74341b19d26a..fa01385d4f1b 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -77,11 +77,26 @@ size_t qemu_ram_pagesize_largest(void);
 
 void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
                             int len, int is_write);
+void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf,
+                                  int len, int is_write);
 static inline void cpu_physical_memory_read(hwaddr addr,
                                             void *buf, int len)
 {
     cpu_physical_memory_rw(addr, buf, len, 0);
 }
+static inline void cpu_physical_memory_read_debug(hwaddr addr,
+                                                  void *buf, int len)
+{
+    cpu_physical_memory_rw_debug(addr, buf, len, 0);
+}
+static inline void cpu_physical_memory_write_debug(hwaddr addr,
+                                                   const void *buf, int len)
+{
+    cpu_physical_memory_rw_debug(addr, (void *)buf, len, 1);
+}
+uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr);
+uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr);
+
 static inline void cpu_physical_memory_write(hwaddr addr,
                                              const void *buf, int len)
 {
-- 
2.9.5

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

* [PATCH v6 04/23] monitor/i386: use debug APIs when accessing guest memory
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Peter Crosthwaite,
	Richard Henderson, Markus Armbruster

Updates HMP commands to use the debug version of APIs when accessing the
guest memory.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 cpus.c                |  2 +-
 disas.c               |  2 +-
 monitor.c             |  8 ++++---
 target/i386/helper.c  | 14 ++++++------
 target/i386/monitor.c | 59 +++++++++++++++++++++++++++------------------------
 5 files changed, 45 insertions(+), 40 deletions(-)

diff --git a/cpus.c b/cpus.c
index 2cb0af9b2249..c50e5613bed8 100644
--- a/cpus.c
+++ b/cpus.c
@@ -2147,7 +2147,7 @@ void qmp_pmemsave(int64_t addr, int64_t size, const char *filename,
         l = sizeof(buf);
         if (l > size)
             l = size;
-        cpu_physical_memory_read(addr, buf, l);
+        cpu_physical_memory_read_debug(addr, buf, l);
         if (fwrite(buf, 1, l, f) != l) {
             error_setg(errp, QERR_IO_ERROR);
             goto exit;
diff --git a/disas.c b/disas.c
index d4ad1089efb3..fcedbf263302 100644
--- a/disas.c
+++ b/disas.c
@@ -586,7 +586,7 @@ static int
 physical_read_memory(bfd_vma memaddr, bfd_byte *myaddr, int length,
                      struct disassemble_info *info)
 {
-    cpu_physical_memory_read(memaddr, myaddr, length);
+    cpu_physical_memory_read_debug(memaddr, myaddr, length);
     return 0;
 }
 
diff --git a/monitor.c b/monitor.c
index b9da5e20d1e7..2c082d31549d 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1358,7 +1358,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
         if (l > line_size)
             l = line_size;
         if (is_physical) {
-            cpu_physical_memory_read(addr, buf, l);
+            cpu_physical_memory_read_debug(addr, buf, l);
         } else {
             if (cpu_memory_rw_debug(cs, addr, buf, l, 0) < 0) {
                 monitor_printf(mon, " Cannot access memory\n");
@@ -1564,8 +1564,10 @@ static void hmp_sum(Monitor *mon, const QDict *qdict)
 
     sum = 0;
     for(addr = start; addr < (start + size); addr++) {
-        uint8_t val = address_space_ldub(&address_space_memory, addr,
-                                         MEMTXATTRS_UNSPECIFIED, NULL);
+        uint8_t buf[0];
+        uint8_t val;
+        cpu_physical_memory_read_debug(addr, buf, 1);
+        val = ldub_p(buf);
         /* BSD sum algorithm ('sum' Unix command) */
         sum = (sum >> 1) | (sum << 15);
         sum += val;
diff --git a/target/i386/helper.c b/target/i386/helper.c
index f63eb3d3f4fb..5dc9e8839bc8 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -757,7 +757,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             if (la57) {
                 pml5e_addr = ((env->cr[3] & ~0xfff) +
                         (((addr >> 48) & 0x1ff) << 3)) & a20_mask;
-                pml5e = x86_ldq_phys(cs, pml5e_addr);
+                pml5e = ldq_phys_debug(cs, pml5e_addr);
                 if (!(pml5e & PG_PRESENT_MASK)) {
                     return -1;
                 }
@@ -767,7 +767,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 
             pml4e_addr = ((pml5e & PG_ADDRESS_MASK) +
                     (((addr >> 39) & 0x1ff) << 3)) & a20_mask;
-            pml4e = x86_ldq_phys(cs, pml4e_addr);
+            pml4e = ldq_phys_debug(cs, pml4e_addr);
             if (!(pml4e & PG_PRESENT_MASK)) {
                 return -1;
             }
@@ -788,14 +788,14 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         {
             pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) &
                 a20_mask;
-            pdpe = x86_ldq_phys(cs, pdpe_addr);
+            pdpe = ldq_phys_debug(cs, pdpe_addr);
             if (!(pdpe & PG_PRESENT_MASK))
                 return -1;
         }
 
         pde_addr = ((pdpe & PG_ADDRESS_MASK) +
                     (((addr >> 21) & 0x1ff) << 3)) & a20_mask;
-        pde = x86_ldq_phys(cs, pde_addr);
+        pde = ldq_phys_debug(cs, pde_addr);
         if (!(pde & PG_PRESENT_MASK)) {
             return -1;
         }
@@ -808,7 +808,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             pte_addr = ((pde & PG_ADDRESS_MASK) +
                         (((addr >> 12) & 0x1ff) << 3)) & a20_mask;
             page_size = 4096;
-            pte = x86_ldq_phys(cs, pte_addr);
+            pte = ldq_phys_debug(cs, pte_addr);
         }
         if (!(pte & PG_PRESENT_MASK)) {
             return -1;
@@ -818,7 +818,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 
         /* page directory entry */
         pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & a20_mask;
-        pde = x86_ldl_phys(cs, pde_addr);
+        pde = ldl_phys_debug(cs, pde_addr);
         if (!(pde & PG_PRESENT_MASK))
             return -1;
         if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) {
@@ -827,7 +827,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         } else {
             /* page directory entry */
             pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & a20_mask;
-            pte = x86_ldl_phys(cs, pte_addr);
+            pte = ldl_phys_debug(cs, pte_addr);
             if (!(pte & PG_PRESENT_MASK)) {
                 return -1;
             }
diff --git a/target/i386/monitor.c b/target/i386/monitor.c
index 75e155ffb1c4..96890547f6b4 100644
--- a/target/i386/monitor.c
+++ b/target/i386/monitor.c
@@ -66,7 +66,7 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env)
 
     pgd = env->cr[3] & ~0xfff;
     for(l1 = 0; l1 < 1024; l1++) {
-        cpu_physical_memory_read(pgd + l1 * 4, &pde, 4);
+        cpu_physical_memory_read_debug(pgd + l1 * 4, &pde, 4);
         pde = le32_to_cpu(pde);
         if (pde & PG_PRESENT_MASK) {
             if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) {
@@ -74,7 +74,8 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env)
                 print_pte(mon, env, (l1 << 22), pde, ~((1 << 21) - 1));
             } else {
                 for(l2 = 0; l2 < 1024; l2++) {
-                    cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte, 4);
+                    cpu_physical_memory_read_debug((pde & ~0xfff) + l2 * 4,
+                                                   &pte, 4);
                     pte = le32_to_cpu(pte);
                     if (pte & PG_PRESENT_MASK) {
                         print_pte(mon, env, (l1 << 22) + (l2 << 12),
@@ -95,12 +96,12 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
 
     pdp_addr = env->cr[3] & ~0x1f;
     for (l1 = 0; l1 < 4; l1++) {
-        cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8);
+        cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
         pdpe = le64_to_cpu(pdpe);
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8);
+                cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
                 pde = le64_to_cpu(pde);
                 if (pde & PG_PRESENT_MASK) {
                     if (pde & PG_PSE_MASK) {
@@ -110,7 +111,8 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
                     } else {
                         pt_addr = pde & 0x3fffffffff000ULL;
                         for (l3 = 0; l3 < 512; l3++) {
-                            cpu_physical_memory_read(pt_addr + l3 * 8, &pte, 8);
+                            cpu_physical_memory_read_debug(pt_addr + l3 * 8,
+                                                           &pte, 8);
                             pte = le64_to_cpu(pte);
                             if (pte & PG_PRESENT_MASK) {
                                 print_pte(mon, env, (l1 << 30) + (l2 << 21)
@@ -135,7 +137,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
     uint64_t pdp_addr, pd_addr, pt_addr;
 
     for (l1 = 0; l1 < 512; l1++) {
-        cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8);
+        cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
         pml4e = le64_to_cpu(pml4e);
         if (!(pml4e & PG_PRESENT_MASK)) {
             continue;
@@ -143,7 +145,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
 
         pdp_addr = pml4e & 0x3fffffffff000ULL;
         for (l2 = 0; l2 < 512; l2++) {
-            cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8);
+            cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
             pdpe = le64_to_cpu(pdpe);
             if (!(pdpe & PG_PRESENT_MASK)) {
                 continue;
@@ -158,7 +160,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
 
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l3 = 0; l3 < 512; l3++) {
-                cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8);
+                cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
                 pde = le64_to_cpu(pde);
                 if (!(pde & PG_PRESENT_MASK)) {
                     continue;
@@ -173,9 +175,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
 
                 pt_addr = pde & 0x3fffffffff000ULL;
                 for (l4 = 0; l4 < 512; l4++) {
-                    cpu_physical_memory_read(pt_addr
-                            + l4 * 8,
-                            &pte, 8);
+                    cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
                     pte = le64_to_cpu(pte);
                     if (pte & PG_PRESENT_MASK) {
                         print_pte(mon, env, (l0 << 48) + (l1 << 39) +
@@ -196,7 +196,7 @@ static void tlb_info_la57(Monitor *mon, CPUArchState *env)
 
     pml5_addr = env->cr[3] & 0x3fffffffff000ULL;
     for (l0 = 0; l0 < 512; l0++) {
-        cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8);
+        cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
         pml5e = le64_to_cpu(pml5e);
         if (pml5e & PG_PRESENT_MASK) {
             tlb_info_la48(mon, env, l0, pml5e & 0x3fffffffff000ULL);
@@ -271,7 +271,7 @@ static void mem_info_32(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for(l1 = 0; l1 < 1024; l1++) {
-        cpu_physical_memory_read(pgd + l1 * 4, &pde, 4);
+        cpu_physical_memory_read_debug(pgd + l1 * 4, &pde, 4);
         pde = le32_to_cpu(pde);
         end = l1 << 22;
         if (pde & PG_PRESENT_MASK) {
@@ -280,7 +280,8 @@ static void mem_info_32(Monitor *mon, CPUArchState *env)
                 mem_print(mon, &start, &last_prot, end, prot);
             } else {
                 for(l2 = 0; l2 < 1024; l2++) {
-                    cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte, 4);
+                    cpu_physical_memory_read_debug((pde & ~0xfff) + l2 * 4,
+                                                   &pte, 4);
                     pte = le32_to_cpu(pte);
                     end = (l1 << 22) + (l2 << 12);
                     if (pte & PG_PRESENT_MASK) {
@@ -313,13 +314,13 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 4; l1++) {
-        cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8);
+        cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
         pdpe = le64_to_cpu(pdpe);
         end = l1 << 30;
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8);
+                cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
                 pde = le64_to_cpu(pde);
                 end = (l1 << 30) + (l2 << 21);
                 if (pde & PG_PRESENT_MASK) {
@@ -330,7 +331,8 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
                     } else {
                         pt_addr = pde & 0x3fffffffff000ULL;
                         for (l3 = 0; l3 < 512; l3++) {
-                            cpu_physical_memory_read(pt_addr + l3 * 8, &pte, 8);
+                            cpu_physical_memory_read_debug(pt_addr + l3 * 8,
+                                                           &pte, 8);
                             pte = le64_to_cpu(pte);
                             end = (l1 << 30) + (l2 << 21) + (l3 << 12);
                             if (pte & PG_PRESENT_MASK) {
@@ -369,13 +371,13 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 512; l1++) {
-        cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8);
+        cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
         pml4e = le64_to_cpu(pml4e);
         end = l1 << 39;
         if (pml4e & PG_PRESENT_MASK) {
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8);
+                cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
                 pdpe = le64_to_cpu(pdpe);
                 end = (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
@@ -387,7 +389,8 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                     } else {
                         pd_addr = pdpe & 0x3fffffffff000ULL;
                         for (l3 = 0; l3 < 512; l3++) {
-                            cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8);
+                            cpu_physical_memory_read_debug(pd_addr + l3 * 8,
+                                                           &pde, 8);
                             pde = le64_to_cpu(pde);
                             end = (l1 << 39) + (l2 << 30) + (l3 << 21);
                             if (pde & PG_PRESENT_MASK) {
@@ -399,9 +402,9 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                                 } else {
                                     pt_addr = pde & 0x3fffffffff000ULL;
                                     for (l4 = 0; l4 < 512; l4++) {
-                                        cpu_physical_memory_read(pt_addr
-                                                                 + l4 * 8,
-                                                                 &pte, 8);
+                                        cpu_physical_memory_read_debug(pt_addr
+                                                                  + l4 * 8,
+                                                                  &pte, 8);
                                         pte = le64_to_cpu(pte);
                                         end = (l1 << 39) + (l2 << 30) +
                                             (l3 << 21) + (l4 << 12);
@@ -446,7 +449,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for (l0 = 0; l0 < 512; l0++) {
-        cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8);
+        cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
         pml5e = le64_to_cpu(pml5e);
         end = l0 << 48;
         if (!(pml5e & PG_PRESENT_MASK)) {
@@ -457,7 +460,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
         pml4_addr = pml5e & 0x3fffffffff000ULL;
         for (l1 = 0; l1 < 512; l1++) {
-            cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8);
+            cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
             pml4e = le64_to_cpu(pml4e);
             end = (l0 << 48) + (l1 << 39);
             if (!(pml4e & PG_PRESENT_MASK)) {
@@ -468,7 +471,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8);
+                cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
                 pdpe = le64_to_cpu(pdpe);
                 end = (l0 << 48) + (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
@@ -487,7 +490,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
                 pd_addr = pdpe & 0x3fffffffff000ULL;
                 for (l3 = 0; l3 < 512; l3++) {
-                    cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8);
+                    cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
                     pde = le64_to_cpu(pde);
                     end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21);
                     if (pde & PG_PRESENT_MASK) {
@@ -506,7 +509,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
                     pt_addr = pde & 0x3fffffffff000ULL;
                     for (l4 = 0; l4 < 512; l4++) {
-                        cpu_physical_memory_read(pt_addr + l4 * 8, &pte, 8);
+                        cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
                         pte = le64_to_cpu(pte);
                         end = (l0 << 48) + (l1 << 39) + (l2 << 30) +
                             (l3 << 21) + (l4 << 12);
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 04/23] monitor/i386: use debug APIs when accessing guest memory
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Peter Crosthwaite,
	Richard Henderson, Markus Armbruster

Updates HMP commands to use the debug version of APIs when accessing the
guest memory.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 cpus.c                |  2 +-
 disas.c               |  2 +-
 monitor.c             |  8 ++++---
 target/i386/helper.c  | 14 ++++++------
 target/i386/monitor.c | 59 +++++++++++++++++++++++++++------------------------
 5 files changed, 45 insertions(+), 40 deletions(-)

diff --git a/cpus.c b/cpus.c
index 2cb0af9b2249..c50e5613bed8 100644
--- a/cpus.c
+++ b/cpus.c
@@ -2147,7 +2147,7 @@ void qmp_pmemsave(int64_t addr, int64_t size, const char *filename,
         l = sizeof(buf);
         if (l > size)
             l = size;
-        cpu_physical_memory_read(addr, buf, l);
+        cpu_physical_memory_read_debug(addr, buf, l);
         if (fwrite(buf, 1, l, f) != l) {
             error_setg(errp, QERR_IO_ERROR);
             goto exit;
diff --git a/disas.c b/disas.c
index d4ad1089efb3..fcedbf263302 100644
--- a/disas.c
+++ b/disas.c
@@ -586,7 +586,7 @@ static int
 physical_read_memory(bfd_vma memaddr, bfd_byte *myaddr, int length,
                      struct disassemble_info *info)
 {
-    cpu_physical_memory_read(memaddr, myaddr, length);
+    cpu_physical_memory_read_debug(memaddr, myaddr, length);
     return 0;
 }
 
diff --git a/monitor.c b/monitor.c
index b9da5e20d1e7..2c082d31549d 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1358,7 +1358,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
         if (l > line_size)
             l = line_size;
         if (is_physical) {
-            cpu_physical_memory_read(addr, buf, l);
+            cpu_physical_memory_read_debug(addr, buf, l);
         } else {
             if (cpu_memory_rw_debug(cs, addr, buf, l, 0) < 0) {
                 monitor_printf(mon, " Cannot access memory\n");
@@ -1564,8 +1564,10 @@ static void hmp_sum(Monitor *mon, const QDict *qdict)
 
     sum = 0;
     for(addr = start; addr < (start + size); addr++) {
-        uint8_t val = address_space_ldub(&address_space_memory, addr,
-                                         MEMTXATTRS_UNSPECIFIED, NULL);
+        uint8_t buf[0];
+        uint8_t val;
+        cpu_physical_memory_read_debug(addr, buf, 1);
+        val = ldub_p(buf);
         /* BSD sum algorithm ('sum' Unix command) */
         sum = (sum >> 1) | (sum << 15);
         sum += val;
diff --git a/target/i386/helper.c b/target/i386/helper.c
index f63eb3d3f4fb..5dc9e8839bc8 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -757,7 +757,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             if (la57) {
                 pml5e_addr = ((env->cr[3] & ~0xfff) +
                         (((addr >> 48) & 0x1ff) << 3)) & a20_mask;
-                pml5e = x86_ldq_phys(cs, pml5e_addr);
+                pml5e = ldq_phys_debug(cs, pml5e_addr);
                 if (!(pml5e & PG_PRESENT_MASK)) {
                     return -1;
                 }
@@ -767,7 +767,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 
             pml4e_addr = ((pml5e & PG_ADDRESS_MASK) +
                     (((addr >> 39) & 0x1ff) << 3)) & a20_mask;
-            pml4e = x86_ldq_phys(cs, pml4e_addr);
+            pml4e = ldq_phys_debug(cs, pml4e_addr);
             if (!(pml4e & PG_PRESENT_MASK)) {
                 return -1;
             }
@@ -788,14 +788,14 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         {
             pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) &
                 a20_mask;
-            pdpe = x86_ldq_phys(cs, pdpe_addr);
+            pdpe = ldq_phys_debug(cs, pdpe_addr);
             if (!(pdpe & PG_PRESENT_MASK))
                 return -1;
         }
 
         pde_addr = ((pdpe & PG_ADDRESS_MASK) +
                     (((addr >> 21) & 0x1ff) << 3)) & a20_mask;
-        pde = x86_ldq_phys(cs, pde_addr);
+        pde = ldq_phys_debug(cs, pde_addr);
         if (!(pde & PG_PRESENT_MASK)) {
             return -1;
         }
@@ -808,7 +808,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             pte_addr = ((pde & PG_ADDRESS_MASK) +
                         (((addr >> 12) & 0x1ff) << 3)) & a20_mask;
             page_size = 4096;
-            pte = x86_ldq_phys(cs, pte_addr);
+            pte = ldq_phys_debug(cs, pte_addr);
         }
         if (!(pte & PG_PRESENT_MASK)) {
             return -1;
@@ -818,7 +818,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 
         /* page directory entry */
         pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & a20_mask;
-        pde = x86_ldl_phys(cs, pde_addr);
+        pde = ldl_phys_debug(cs, pde_addr);
         if (!(pde & PG_PRESENT_MASK))
             return -1;
         if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) {
@@ -827,7 +827,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         } else {
             /* page directory entry */
             pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & a20_mask;
-            pte = x86_ldl_phys(cs, pte_addr);
+            pte = ldl_phys_debug(cs, pte_addr);
             if (!(pte & PG_PRESENT_MASK)) {
                 return -1;
             }
diff --git a/target/i386/monitor.c b/target/i386/monitor.c
index 75e155ffb1c4..96890547f6b4 100644
--- a/target/i386/monitor.c
+++ b/target/i386/monitor.c
@@ -66,7 +66,7 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env)
 
     pgd = env->cr[3] & ~0xfff;
     for(l1 = 0; l1 < 1024; l1++) {
-        cpu_physical_memory_read(pgd + l1 * 4, &pde, 4);
+        cpu_physical_memory_read_debug(pgd + l1 * 4, &pde, 4);
         pde = le32_to_cpu(pde);
         if (pde & PG_PRESENT_MASK) {
             if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) {
@@ -74,7 +74,8 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env)
                 print_pte(mon, env, (l1 << 22), pde, ~((1 << 21) - 1));
             } else {
                 for(l2 = 0; l2 < 1024; l2++) {
-                    cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte, 4);
+                    cpu_physical_memory_read_debug((pde & ~0xfff) + l2 * 4,
+                                                   &pte, 4);
                     pte = le32_to_cpu(pte);
                     if (pte & PG_PRESENT_MASK) {
                         print_pte(mon, env, (l1 << 22) + (l2 << 12),
@@ -95,12 +96,12 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
 
     pdp_addr = env->cr[3] & ~0x1f;
     for (l1 = 0; l1 < 4; l1++) {
-        cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8);
+        cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
         pdpe = le64_to_cpu(pdpe);
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8);
+                cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
                 pde = le64_to_cpu(pde);
                 if (pde & PG_PRESENT_MASK) {
                     if (pde & PG_PSE_MASK) {
@@ -110,7 +111,8 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
                     } else {
                         pt_addr = pde & 0x3fffffffff000ULL;
                         for (l3 = 0; l3 < 512; l3++) {
-                            cpu_physical_memory_read(pt_addr + l3 * 8, &pte, 8);
+                            cpu_physical_memory_read_debug(pt_addr + l3 * 8,
+                                                           &pte, 8);
                             pte = le64_to_cpu(pte);
                             if (pte & PG_PRESENT_MASK) {
                                 print_pte(mon, env, (l1 << 30) + (l2 << 21)
@@ -135,7 +137,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
     uint64_t pdp_addr, pd_addr, pt_addr;
 
     for (l1 = 0; l1 < 512; l1++) {
-        cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8);
+        cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
         pml4e = le64_to_cpu(pml4e);
         if (!(pml4e & PG_PRESENT_MASK)) {
             continue;
@@ -143,7 +145,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
 
         pdp_addr = pml4e & 0x3fffffffff000ULL;
         for (l2 = 0; l2 < 512; l2++) {
-            cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8);
+            cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
             pdpe = le64_to_cpu(pdpe);
             if (!(pdpe & PG_PRESENT_MASK)) {
                 continue;
@@ -158,7 +160,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
 
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l3 = 0; l3 < 512; l3++) {
-                cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8);
+                cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
                 pde = le64_to_cpu(pde);
                 if (!(pde & PG_PRESENT_MASK)) {
                     continue;
@@ -173,9 +175,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
 
                 pt_addr = pde & 0x3fffffffff000ULL;
                 for (l4 = 0; l4 < 512; l4++) {
-                    cpu_physical_memory_read(pt_addr
-                            + l4 * 8,
-                            &pte, 8);
+                    cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
                     pte = le64_to_cpu(pte);
                     if (pte & PG_PRESENT_MASK) {
                         print_pte(mon, env, (l0 << 48) + (l1 << 39) +
@@ -196,7 +196,7 @@ static void tlb_info_la57(Monitor *mon, CPUArchState *env)
 
     pml5_addr = env->cr[3] & 0x3fffffffff000ULL;
     for (l0 = 0; l0 < 512; l0++) {
-        cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8);
+        cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
         pml5e = le64_to_cpu(pml5e);
         if (pml5e & PG_PRESENT_MASK) {
             tlb_info_la48(mon, env, l0, pml5e & 0x3fffffffff000ULL);
@@ -271,7 +271,7 @@ static void mem_info_32(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for(l1 = 0; l1 < 1024; l1++) {
-        cpu_physical_memory_read(pgd + l1 * 4, &pde, 4);
+        cpu_physical_memory_read_debug(pgd + l1 * 4, &pde, 4);
         pde = le32_to_cpu(pde);
         end = l1 << 22;
         if (pde & PG_PRESENT_MASK) {
@@ -280,7 +280,8 @@ static void mem_info_32(Monitor *mon, CPUArchState *env)
                 mem_print(mon, &start, &last_prot, end, prot);
             } else {
                 for(l2 = 0; l2 < 1024; l2++) {
-                    cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte, 4);
+                    cpu_physical_memory_read_debug((pde & ~0xfff) + l2 * 4,
+                                                   &pte, 4);
                     pte = le32_to_cpu(pte);
                     end = (l1 << 22) + (l2 << 12);
                     if (pte & PG_PRESENT_MASK) {
@@ -313,13 +314,13 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 4; l1++) {
-        cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8);
+        cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
         pdpe = le64_to_cpu(pdpe);
         end = l1 << 30;
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8);
+                cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
                 pde = le64_to_cpu(pde);
                 end = (l1 << 30) + (l2 << 21);
                 if (pde & PG_PRESENT_MASK) {
@@ -330,7 +331,8 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
                     } else {
                         pt_addr = pde & 0x3fffffffff000ULL;
                         for (l3 = 0; l3 < 512; l3++) {
-                            cpu_physical_memory_read(pt_addr + l3 * 8, &pte, 8);
+                            cpu_physical_memory_read_debug(pt_addr + l3 * 8,
+                                                           &pte, 8);
                             pte = le64_to_cpu(pte);
                             end = (l1 << 30) + (l2 << 21) + (l3 << 12);
                             if (pte & PG_PRESENT_MASK) {
@@ -369,13 +371,13 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 512; l1++) {
-        cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8);
+        cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
         pml4e = le64_to_cpu(pml4e);
         end = l1 << 39;
         if (pml4e & PG_PRESENT_MASK) {
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8);
+                cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
                 pdpe = le64_to_cpu(pdpe);
                 end = (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
@@ -387,7 +389,8 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                     } else {
                         pd_addr = pdpe & 0x3fffffffff000ULL;
                         for (l3 = 0; l3 < 512; l3++) {
-                            cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8);
+                            cpu_physical_memory_read_debug(pd_addr + l3 * 8,
+                                                           &pde, 8);
                             pde = le64_to_cpu(pde);
                             end = (l1 << 39) + (l2 << 30) + (l3 << 21);
                             if (pde & PG_PRESENT_MASK) {
@@ -399,9 +402,9 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                                 } else {
                                     pt_addr = pde & 0x3fffffffff000ULL;
                                     for (l4 = 0; l4 < 512; l4++) {
-                                        cpu_physical_memory_read(pt_addr
-                                                                 + l4 * 8,
-                                                                 &pte, 8);
+                                        cpu_physical_memory_read_debug(pt_addr
+                                                                  + l4 * 8,
+                                                                  &pte, 8);
                                         pte = le64_to_cpu(pte);
                                         end = (l1 << 39) + (l2 << 30) +
                                             (l3 << 21) + (l4 << 12);
@@ -446,7 +449,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
     last_prot = 0;
     start = -1;
     for (l0 = 0; l0 < 512; l0++) {
-        cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8);
+        cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
         pml5e = le64_to_cpu(pml5e);
         end = l0 << 48;
         if (!(pml5e & PG_PRESENT_MASK)) {
@@ -457,7 +460,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
         pml4_addr = pml5e & 0x3fffffffff000ULL;
         for (l1 = 0; l1 < 512; l1++) {
-            cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8);
+            cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
             pml4e = le64_to_cpu(pml4e);
             end = (l0 << 48) + (l1 << 39);
             if (!(pml4e & PG_PRESENT_MASK)) {
@@ -468,7 +471,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
-                cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8);
+                cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
                 pdpe = le64_to_cpu(pdpe);
                 end = (l0 << 48) + (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
@@ -487,7 +490,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
                 pd_addr = pdpe & 0x3fffffffff000ULL;
                 for (l3 = 0; l3 < 512; l3++) {
-                    cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8);
+                    cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
                     pde = le64_to_cpu(pde);
                     end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21);
                     if (pde & PG_PRESENT_MASK) {
@@ -506,7 +509,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
 
                     pt_addr = pde & 0x3fffffffff000ULL;
                     for (l4 = 0; l4 < 512; l4++) {
-                        cpu_physical_memory_read(pt_addr + l4 * 8, &pte, 8);
+                        cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
                         pte = le64_to_cpu(pte);
                         end = (l0 << 48) + (l1 << 39) + (l2 << 30) +
                             (l3 << 21) + (l4 << 12);
-- 
2.9.5

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

* [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

AMD EPYC processors support memory encryption feature. The feature
is reported through CPUID 8000_001F[EAX].

Fn8000_001F [EAX]:
 Bit 0   Secure Memory Encryption (SME) supported
 Bit 1   Secure Encrypted Virtualization (SEV) supported
 Bit 2   Page flush MSR supported
 Bit 3   Ecrypted State (SEV-ES) support

when memory encryption feature is reported, CPUID 8000_001F[EBX] should
provide additional information regarding the feature (such as which page
table bit is used to mark pages as encrypted etc). The information in EBX
and ECX may vary from one family to another hence we use the host cpuid
to populate the EBX information.

The details for memory encryption CPUID is available in AMD APM
(http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
 target/i386/cpu.h |  6 ++++++
 2 files changed, 42 insertions(+)

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index a49d2221adc9..4147eb6e18a9 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
 #define TCG_EXT4_FEATURES 0
 #define TCG_SVM_FEATURES 0
 #define TCG_KVM_FEATURES 0
+#define TCG_MEM_ENCRYPT_FEATURES 0
 #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
           CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
           CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
@@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
         .cpuid_reg = R_EDX,
         .tcg_features = ~0U,
     },
+    [FEAT_MEM_ENCRYPT] = {
+        .feat_names = {
+            "sme", "sev", "page-flush-msr", "sev-es",
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+        },
+        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
+        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
+    }
 };
 
 typedef struct X86RegisterInfo32 {
@@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_XSAVE_XGETBV1,
         .features[FEAT_6_EAX] =
             CPUID_6_EAX_ARAT,
+        /* Missing: SEV_ES */
+        .features[FEAT_MEM_ENCRYPT] =
+            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
         .xlevel = 0x8000000A,
         .model_id = "AMD EPYC Processor",
     },
@@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
             *edx = 0;
         }
         break;
+    case 0x8000001F:
+        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
+            *eax = env->features[FEAT_MEM_ENCRYPT];
+            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
+            *ecx = 0;
+            *edx = 0;
+        } else {
+            *eax = 0;
+            *ebx = 0;
+            *ecx = 0;
+            *edx = 0;
+        }
+        break;
     case 0xC0000000:
         *eax = env->cpuid_xlevel2;
         *ebx = 0;
@@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
         x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
         x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
         x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
+        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
         /* SVM requires CPUID[0x8000000A] */
         if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
             x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
         }
+        /* SEV requires CPUID[0x8000001F] */
+        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
+            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
+        }
     }
 
     /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index f91e37d25dea..f7a0ab20fdd1 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -483,6 +483,7 @@ typedef enum FeatureWord {
     FEAT_6_EAX,         /* CPUID[6].EAX */
     FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
     FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
+    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
     FEATURE_WORDS,
 } FeatureWord;
 
@@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
 
 #define CPUID_6_EAX_ARAT       (1U << 2)
 
+#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
+#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
+#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
+#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
+
 /* CPUID[0x80000007].EDX flags: */
 #define CPUID_APM_INVTSC       (1U << 8)
 
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

AMD EPYC processors support memory encryption feature. The feature
is reported through CPUID 8000_001F[EAX].

Fn8000_001F [EAX]:
 Bit 0   Secure Memory Encryption (SME) supported
 Bit 1   Secure Encrypted Virtualization (SEV) supported
 Bit 2   Page flush MSR supported
 Bit 3   Ecrypted State (SEV-ES) support

when memory encryption feature is reported, CPUID 8000_001F[EBX] should
provide additional information regarding the feature (such as which page
table bit is used to mark pages as encrypted etc). The information in EBX
and ECX may vary from one family to another hence we use the host cpuid
to populate the EBX information.

The details for memory encryption CPUID is available in AMD APM
(http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
 target/i386/cpu.h |  6 ++++++
 2 files changed, 42 insertions(+)

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index a49d2221adc9..4147eb6e18a9 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
 #define TCG_EXT4_FEATURES 0
 #define TCG_SVM_FEATURES 0
 #define TCG_KVM_FEATURES 0
+#define TCG_MEM_ENCRYPT_FEATURES 0
 #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
           CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
           CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
@@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
         .cpuid_reg = R_EDX,
         .tcg_features = ~0U,
     },
+    [FEAT_MEM_ENCRYPT] = {
+        .feat_names = {
+            "sme", "sev", "page-flush-msr", "sev-es",
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+            NULL, NULL, NULL, NULL,
+        },
+        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
+        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
+    }
 };
 
 typedef struct X86RegisterInfo32 {
@@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_XSAVE_XGETBV1,
         .features[FEAT_6_EAX] =
             CPUID_6_EAX_ARAT,
+        /* Missing: SEV_ES */
+        .features[FEAT_MEM_ENCRYPT] =
+            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
         .xlevel = 0x8000000A,
         .model_id = "AMD EPYC Processor",
     },
@@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
             *edx = 0;
         }
         break;
+    case 0x8000001F:
+        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
+            *eax = env->features[FEAT_MEM_ENCRYPT];
+            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
+            *ecx = 0;
+            *edx = 0;
+        } else {
+            *eax = 0;
+            *ebx = 0;
+            *ecx = 0;
+            *edx = 0;
+        }
+        break;
     case 0xC0000000:
         *eax = env->cpuid_xlevel2;
         *ebx = 0;
@@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
         x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
         x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
         x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
+        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
         /* SVM requires CPUID[0x8000000A] */
         if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
             x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
         }
+        /* SEV requires CPUID[0x8000001F] */
+        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
+            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
+        }
     }
 
     /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index f91e37d25dea..f7a0ab20fdd1 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -483,6 +483,7 @@ typedef enum FeatureWord {
     FEAT_6_EAX,         /* CPUID[6].EAX */
     FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
     FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
+    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
     FEATURE_WORDS,
 } FeatureWord;
 
@@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
 
 #define CPUID_6_EAX_ARAT       (1U << 2)
 
+#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
+#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
+#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
+#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
+
 /* CPUID[0x80000007].EDX flags: */
 #define CPUID_APM_INVTSC       (1U << 8)
 
-- 
2.9.5

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

* [PATCH v6 06/23] machine: add -memory-encryption property
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Marcel Apfelbaum

When CPU supports memory encryption feature, the property can be used to
specify the encryption object to use when launching an encrypted guest.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hw/core/machine.c   | 22 ++++++++++++++++++++++
 include/hw/boards.h |  1 +
 qemu-options.hx     |  2 ++
 3 files changed, 25 insertions(+)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index cdc1163dc6fb..e9940e58ad65 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -334,6 +334,22 @@ static bool machine_get_enforce_config_section(Object *obj, Error **errp)
     return ms->enforce_config_section;
 }
 
+static char *machine_get_memory_encryption(Object *obj, Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    return g_strdup(ms->memory_encryption);
+}
+
+static void machine_set_memory_encryption(Object *obj, const char *value,
+                                        Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    g_free(ms->memory_encryption);
+    ms->memory_encryption = g_strdup(value);
+}
+
 void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type)
 {
     strList *item = g_new0(strList, 1);
@@ -612,6 +628,12 @@ static void machine_class_init(ObjectClass *oc, void *data)
         &error_abort);
     object_class_property_set_description(oc, "enforce-config-section",
         "Set on to enforce configuration section migration", &error_abort);
+
+    object_class_property_add_str(oc, "memory-encryption",
+        machine_get_memory_encryption, machine_set_memory_encryption,
+        &error_abort);
+    object_class_property_set_description(oc, "memory-encryption",
+        "Set memory encyption object to use", &error_abort);
 }
 
 static void machine_class_base_init(ObjectClass *oc, void *data)
diff --git a/include/hw/boards.h b/include/hw/boards.h
index efb0a9edfdf1..8ce9a7a21d3d 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -243,6 +243,7 @@ struct MachineState {
     bool suppress_vmdesc;
     bool enforce_config_section;
     bool enable_graphics;
+    char *memory_encryption;
 
     ram_addr_t ram_size;
     ram_addr_t maxram_size;
diff --git a/qemu-options.hx b/qemu-options.hx
index 1d73fb151d87..bec3490d7b8d 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -110,6 +110,8 @@ code to send configuration section even if the machine-type sets the
 @option{migration.send-configuration} property to @var{off}.
 NOTE: this parameter is deprecated. Please use @option{-global}
 @option{migration.send-configuration}=@var{on|off} instead.
+@item memory-encryption=@var{}
+Memory encryption object to use. The default is none.
 @end table
 ETEXI
 
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 06/23] machine: add -memory-encryption property
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Marcel Apfelbaum

When CPU supports memory encryption feature, the property can be used to
specify the encryption object to use when launching an encrypted guest.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hw/core/machine.c   | 22 ++++++++++++++++++++++
 include/hw/boards.h |  1 +
 qemu-options.hx     |  2 ++
 3 files changed, 25 insertions(+)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index cdc1163dc6fb..e9940e58ad65 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -334,6 +334,22 @@ static bool machine_get_enforce_config_section(Object *obj, Error **errp)
     return ms->enforce_config_section;
 }
 
+static char *machine_get_memory_encryption(Object *obj, Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    return g_strdup(ms->memory_encryption);
+}
+
+static void machine_set_memory_encryption(Object *obj, const char *value,
+                                        Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    g_free(ms->memory_encryption);
+    ms->memory_encryption = g_strdup(value);
+}
+
 void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type)
 {
     strList *item = g_new0(strList, 1);
@@ -612,6 +628,12 @@ static void machine_class_init(ObjectClass *oc, void *data)
         &error_abort);
     object_class_property_set_description(oc, "enforce-config-section",
         "Set on to enforce configuration section migration", &error_abort);
+
+    object_class_property_add_str(oc, "memory-encryption",
+        machine_get_memory_encryption, machine_set_memory_encryption,
+        &error_abort);
+    object_class_property_set_description(oc, "memory-encryption",
+        "Set memory encyption object to use", &error_abort);
 }
 
 static void machine_class_base_init(ObjectClass *oc, void *data)
diff --git a/include/hw/boards.h b/include/hw/boards.h
index efb0a9edfdf1..8ce9a7a21d3d 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -243,6 +243,7 @@ struct MachineState {
     bool suppress_vmdesc;
     bool enforce_config_section;
     bool enable_graphics;
+    char *memory_encryption;
 
     ram_addr_t ram_size;
     ram_addr_t maxram_size;
diff --git a/qemu-options.hx b/qemu-options.hx
index 1d73fb151d87..bec3490d7b8d 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -110,6 +110,8 @@ code to send configuration section even if the machine-type sets the
 @option{migration.send-configuration} property to @var{off}.
 NOTE: this parameter is deprecated. Please use @option{-global}
 @option{migration.send-configuration}=@var{on|off} instead.
+@item memory-encryption=@var{}
+Memory encryption object to use. The default is none.
 @end table
 ETEXI
 
-- 
2.9.5

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

* [PATCH v6 07/23] kvm: update kvm.h to include memory encryption ioctls
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Christian Borntraeger,
	Cornelia Huck

Updates kmv.h to include memory encryption ioctls and SEV commands.

Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 linux-headers/linux/kvm.h | 90 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)

diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index d92c9b2f0ed2..aed22309950d 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -1362,6 +1362,96 @@ struct kvm_s390_ucas_mapping {
 /* Available with KVM_CAP_S390_CMMA_MIGRATION */
 #define KVM_S390_GET_CMMA_BITS      _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log)
 #define KVM_S390_SET_CMMA_BITS      _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log)
+/* Memory Encryption Commands */
+#define KVM_MEMORY_ENCRYPT_OP      _IOWR(KVMIO, 0xba, unsigned long)
+
+struct kvm_enc_region {
+	__u64 addr;
+	__u64 size;
+};
+
+#define KVM_MEMORY_ENCRYPT_REG_REGION    _IOR(KVMIO, 0xbb, struct kvm_enc_region)
+#define KVM_MEMORY_ENCRYPT_UNREG_REGION  _IOR(KVMIO, 0xbc, struct kvm_enc_region)
+
+/* Secure Encrypted Virtualization command */
+enum sev_cmd_id {
+	/* Guest initialization commands */
+	KVM_SEV_INIT = 0,
+	KVM_SEV_ES_INIT,
+	/* Guest launch commands */
+	KVM_SEV_LAUNCH_START,
+	KVM_SEV_LAUNCH_UPDATE_DATA,
+	KVM_SEV_LAUNCH_UPDATE_VMSA,
+	KVM_SEV_LAUNCH_SECRET,
+	KVM_SEV_LAUNCH_MEASURE,
+	KVM_SEV_LAUNCH_FINISH,
+	/* Guest migration commands (outgoing) */
+	KVM_SEV_SEND_START,
+	KVM_SEV_SEND_UPDATE_DATA,
+	KVM_SEV_SEND_UPDATE_VMSA,
+	KVM_SEV_SEND_FINISH,
+	/* Guest migration commands (incoming) */
+	KVM_SEV_RECEIVE_START,
+	KVM_SEV_RECEIVE_UPDATE_DATA,
+	KVM_SEV_RECEIVE_UPDATE_VMSA,
+	KVM_SEV_RECEIVE_FINISH,
+	/* Guest status and debug commands */
+	KVM_SEV_GUEST_STATUS,
+	KVM_SEV_DBG_DECRYPT,
+	KVM_SEV_DBG_ENCRYPT,
+	/* Guest certificates commands */
+	KVM_SEV_CERT_EXPORT,
+
+	KVM_SEV_NR_MAX,
+};
+
+struct kvm_sev_cmd {
+	__u32 id;
+	__u64 data;
+	__u32 error;
+	__u32 sev_fd;
+};
+
+struct kvm_sev_launch_start {
+	__u32 handle;
+	__u32 policy;
+	__u64 dh_uaddr;
+	__u32 dh_len;
+	__u64 session_uaddr;
+	__u32 session_len;
+};
+
+struct kvm_sev_launch_update_data {
+	__u64 uaddr;
+	__u32 len;
+};
+
+
+struct kvm_sev_launch_secret {
+	__u64 hdr_uaddr;
+	__u32 hdr_len;
+	__u64 guest_uaddr;
+	__u32 guest_len;
+	__u64 trans_uaddr;
+	__u32 trans_len;
+};
+
+struct kvm_sev_launch_measure {
+	__u64 uaddr;
+	__u32 len;
+};
+
+struct kvm_sev_guest_status {
+	__u32 handle;
+	__u32 policy;
+	__u32 state;
+};
+
+struct kvm_sev_dbg {
+	__u64 src_uaddr;
+	__u64 dst_uaddr;
+	__u32 len;
+};
 
 #define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
 #define KVM_DEV_ASSIGN_PCI_2_3		(1 << 1)
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 07/23] kvm: update kvm.h to include memory encryption ioctls
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Christian Borntraeger,
	Cornelia Huck

Updates kmv.h to include memory encryption ioctls and SEV commands.

Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 linux-headers/linux/kvm.h | 90 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)

diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index d92c9b2f0ed2..aed22309950d 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -1362,6 +1362,96 @@ struct kvm_s390_ucas_mapping {
 /* Available with KVM_CAP_S390_CMMA_MIGRATION */
 #define KVM_S390_GET_CMMA_BITS      _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log)
 #define KVM_S390_SET_CMMA_BITS      _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log)
+/* Memory Encryption Commands */
+#define KVM_MEMORY_ENCRYPT_OP      _IOWR(KVMIO, 0xba, unsigned long)
+
+struct kvm_enc_region {
+	__u64 addr;
+	__u64 size;
+};
+
+#define KVM_MEMORY_ENCRYPT_REG_REGION    _IOR(KVMIO, 0xbb, struct kvm_enc_region)
+#define KVM_MEMORY_ENCRYPT_UNREG_REGION  _IOR(KVMIO, 0xbc, struct kvm_enc_region)
+
+/* Secure Encrypted Virtualization command */
+enum sev_cmd_id {
+	/* Guest initialization commands */
+	KVM_SEV_INIT = 0,
+	KVM_SEV_ES_INIT,
+	/* Guest launch commands */
+	KVM_SEV_LAUNCH_START,
+	KVM_SEV_LAUNCH_UPDATE_DATA,
+	KVM_SEV_LAUNCH_UPDATE_VMSA,
+	KVM_SEV_LAUNCH_SECRET,
+	KVM_SEV_LAUNCH_MEASURE,
+	KVM_SEV_LAUNCH_FINISH,
+	/* Guest migration commands (outgoing) */
+	KVM_SEV_SEND_START,
+	KVM_SEV_SEND_UPDATE_DATA,
+	KVM_SEV_SEND_UPDATE_VMSA,
+	KVM_SEV_SEND_FINISH,
+	/* Guest migration commands (incoming) */
+	KVM_SEV_RECEIVE_START,
+	KVM_SEV_RECEIVE_UPDATE_DATA,
+	KVM_SEV_RECEIVE_UPDATE_VMSA,
+	KVM_SEV_RECEIVE_FINISH,
+	/* Guest status and debug commands */
+	KVM_SEV_GUEST_STATUS,
+	KVM_SEV_DBG_DECRYPT,
+	KVM_SEV_DBG_ENCRYPT,
+	/* Guest certificates commands */
+	KVM_SEV_CERT_EXPORT,
+
+	KVM_SEV_NR_MAX,
+};
+
+struct kvm_sev_cmd {
+	__u32 id;
+	__u64 data;
+	__u32 error;
+	__u32 sev_fd;
+};
+
+struct kvm_sev_launch_start {
+	__u32 handle;
+	__u32 policy;
+	__u64 dh_uaddr;
+	__u32 dh_len;
+	__u64 session_uaddr;
+	__u32 session_len;
+};
+
+struct kvm_sev_launch_update_data {
+	__u64 uaddr;
+	__u32 len;
+};
+
+
+struct kvm_sev_launch_secret {
+	__u64 hdr_uaddr;
+	__u32 hdr_len;
+	__u64 guest_uaddr;
+	__u32 guest_len;
+	__u64 trans_uaddr;
+	__u32 trans_len;
+};
+
+struct kvm_sev_launch_measure {
+	__u64 uaddr;
+	__u32 len;
+};
+
+struct kvm_sev_guest_status {
+	__u32 handle;
+	__u32 policy;
+	__u32 state;
+};
+
+struct kvm_sev_dbg {
+	__u64 src_uaddr;
+	__u64 dst_uaddr;
+	__u32 len;
+};
 
 #define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
 #define KVM_DEV_ASSIGN_PCI_2_3		(1 << 1)
-- 
2.9.5

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

* [PATCH v6 08/23] docs: add AMD Secure Encrypted Virtualization (SEV)
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

Create a documentation entry to describe the AMD Secure Encrypted
Virtualization (SEV) feature.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 docs/amd-memory-encryption.txt | 92 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)
 create mode 100644 docs/amd-memory-encryption.txt

diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt
new file mode 100644
index 000000000000..72a92b6c6353
--- /dev/null
+++ b/docs/amd-memory-encryption.txt
@@ -0,0 +1,92 @@
+Secure Encrypted Virtualization (SEV) is a feature found on AMD processors.
+
+SEV is an extension to the AMD-V architecture which supports running encrypted
+virtual machine (VMs) under the control of KVM. Encrypted VMs have their pages
+(code and data) secured such that only the guest itself has access to the
+unencrypted version. Each encrypted VM is associated with a unique encryption
+key; if its data is accessed to a different entity using a different key the
+encrypted guests data will be incorrectly decrypted, leading to unintelligible
+data.
+
+The key management of this feature is handled by separate processor known as
+AMD secure processor (AMD-SP) which is present in AMD SOCs. Firmware running
+inside the AMD-SP provide commands to support common VM lifecycle. This
+includes commands for launching, snapshotting, migrating and debugging the
+encrypted guest. Those SEV command can be issued via KVM_MEMORY_ENCRYPT_OP
+ioctls.
+
+Launching
+---------
+Boot images (such as bios) must be encrypted before guest can be booted.
+MEMORY_ENCRYPT_OP ioctl provides commands to encrypt the images :LAUNCH_START,
+LAUNCH_UPDATE_DATA, LAUNCH_MEASURE and LAUNCH_FINISH. These four commands
+together generate a fresh memory encryption key for the VM, encrypt the boot
+images and provide a measurement than can be used as an attestation of the
+successful launch.
+
+LAUNCH_START is called first to create a cryptographic launch context within
+the firmware. To create this context, guest owner must provides guest policy,
+its public Diffie-Hellman key (PDH) and session parameters. These inputs
+should be treated as binary blob and must be passed as-is to the SEV firmware.
+
+The guest policy is passed as plaintext and hypervisor may able to read it
+but should not modify it (any modification of the policy bits will result
+in bad measurement). The guest policy is a 4-byte data structure containing
+several flags that restricts what can be done on running SEV guest.
+See KM Spec section 3 and 6.2 for more details.
+
+Guest owners provided DH certificate and session parameters will be used to
+establish a cryptographic session with the guest owner to negotiate keys used
+for the attestation.
+
+LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context
+created via LAUNCH_START command. If required, this command can be called
+multiple times to encrypt different memory regions. The command also calculates
+the measurement of the memory contents as it encrypts.
+
+LAUNCH_MEASURE command can be used to retrieve the measurement of encrypted
+memory. This measurement is a signature of the memory contents that can be
+sent to the guest owner as an attestation that the memory was encrypted
+correctly by the firmware. The guest owner may wait to provide the guest
+confidential information until it can verify the attestation measurement.
+Since the guest owner knows the initial contents of the guest at boot, the
+attestation measurement can be verified by comparing it to what the guest owner
+expects.
+
+LAUNCH_FINISH command finalizes the guest launch and destroy's the cryptographic
+context.
+
+See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the
+complete flow chart.
+
+Debugging
+-----------
+Since memory contents of SEV guest is encrypted hence hypervisor access to the
+guest memory will get a cipher text. If guest policy allows debugging, then
+hypervisor can use DEBUG_DECRYPT and DEBUG_ENCRYPT commands access the guest
+memory region for debug purposes.
+
+Snapshot/Restore
+-----------------
+TODO
+
+Live Migration
+----------------
+TODO
+
+References
+-----------------
+
+AMD Memory Encryption whitepaper:
+http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf
+
+Secure Encrypted Virutualization Key Management:
+[1] http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf
+
+KVM Forum slides:
+http://www.linux-kvm.org/images/7/74/02x08A-Thomas_Lendacky-AMDs_Virtualizatoin_Memory_Encryption_Technology.pdf
+
+AMD64 Architecture Programmer's Manual:
+   http://support.amd.com/TechDocs/24593.pdf
+   SME is section 7.10
+   SEV is section 15.34
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 08/23] docs: add AMD Secure Encrypted Virtualization (SEV)
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

Create a documentation entry to describe the AMD Secure Encrypted
Virtualization (SEV) feature.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 docs/amd-memory-encryption.txt | 92 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)
 create mode 100644 docs/amd-memory-encryption.txt

diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt
new file mode 100644
index 000000000000..72a92b6c6353
--- /dev/null
+++ b/docs/amd-memory-encryption.txt
@@ -0,0 +1,92 @@
+Secure Encrypted Virtualization (SEV) is a feature found on AMD processors.
+
+SEV is an extension to the AMD-V architecture which supports running encrypted
+virtual machine (VMs) under the control of KVM. Encrypted VMs have their pages
+(code and data) secured such that only the guest itself has access to the
+unencrypted version. Each encrypted VM is associated with a unique encryption
+key; if its data is accessed to a different entity using a different key the
+encrypted guests data will be incorrectly decrypted, leading to unintelligible
+data.
+
+The key management of this feature is handled by separate processor known as
+AMD secure processor (AMD-SP) which is present in AMD SOCs. Firmware running
+inside the AMD-SP provide commands to support common VM lifecycle. This
+includes commands for launching, snapshotting, migrating and debugging the
+encrypted guest. Those SEV command can be issued via KVM_MEMORY_ENCRYPT_OP
+ioctls.
+
+Launching
+---------
+Boot images (such as bios) must be encrypted before guest can be booted.
+MEMORY_ENCRYPT_OP ioctl provides commands to encrypt the images :LAUNCH_START,
+LAUNCH_UPDATE_DATA, LAUNCH_MEASURE and LAUNCH_FINISH. These four commands
+together generate a fresh memory encryption key for the VM, encrypt the boot
+images and provide a measurement than can be used as an attestation of the
+successful launch.
+
+LAUNCH_START is called first to create a cryptographic launch context within
+the firmware. To create this context, guest owner must provides guest policy,
+its public Diffie-Hellman key (PDH) and session parameters. These inputs
+should be treated as binary blob and must be passed as-is to the SEV firmware.
+
+The guest policy is passed as plaintext and hypervisor may able to read it
+but should not modify it (any modification of the policy bits will result
+in bad measurement). The guest policy is a 4-byte data structure containing
+several flags that restricts what can be done on running SEV guest.
+See KM Spec section 3 and 6.2 for more details.
+
+Guest owners provided DH certificate and session parameters will be used to
+establish a cryptographic session with the guest owner to negotiate keys used
+for the attestation.
+
+LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context
+created via LAUNCH_START command. If required, this command can be called
+multiple times to encrypt different memory regions. The command also calculates
+the measurement of the memory contents as it encrypts.
+
+LAUNCH_MEASURE command can be used to retrieve the measurement of encrypted
+memory. This measurement is a signature of the memory contents that can be
+sent to the guest owner as an attestation that the memory was encrypted
+correctly by the firmware. The guest owner may wait to provide the guest
+confidential information until it can verify the attestation measurement.
+Since the guest owner knows the initial contents of the guest at boot, the
+attestation measurement can be verified by comparing it to what the guest owner
+expects.
+
+LAUNCH_FINISH command finalizes the guest launch and destroy's the cryptographic
+context.
+
+See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the
+complete flow chart.
+
+Debugging
+-----------
+Since memory contents of SEV guest is encrypted hence hypervisor access to the
+guest memory will get a cipher text. If guest policy allows debugging, then
+hypervisor can use DEBUG_DECRYPT and DEBUG_ENCRYPT commands access the guest
+memory region for debug purposes.
+
+Snapshot/Restore
+-----------------
+TODO
+
+Live Migration
+----------------
+TODO
+
+References
+-----------------
+
+AMD Memory Encryption whitepaper:
+http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf
+
+Secure Encrypted Virutualization Key Management:
+[1] http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf
+
+KVM Forum slides:
+http://www.linux-kvm.org/images/7/74/02x08A-Thomas_Lendacky-AMDs_Virtualizatoin_Memory_Encryption_Technology.pdf
+
+AMD64 Architecture Programmer's Manual:
+   http://support.amd.com/TechDocs/24593.pdf
+   SME is section 7.10
+   SEV is section 15.34
-- 
2.9.5

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

* [PATCH v6 09/23] accel: add Secure Encrypted Virtulization (SEV) object
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

Add a new memory encryption object 'sev-guest'. The object will be used
to create enrypted VMs on AMD EPYC CPU. The object provides the properties
to pass guest owner's public Diffie-hellman key, guest policy and session
information required to create the memory encryption context within the
SEV firmware.

e.g to launch SEV guest
 # $QEMU \
    -object sev-guest,id=sev0 \
    -machine ....,memory-encryption=sev0

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/Makefile.objs        |   2 +-
 accel/kvm/sev.c                | 179 +++++++++++++++++++++++++++++++++++++++++
 docs/amd-memory-encryption.txt |  17 ++++
 include/sysemu/sev.h           |  53 ++++++++++++
 qemu-options.hx                |  34 ++++++++
 5 files changed, 284 insertions(+), 1 deletion(-)
 create mode 100644 accel/kvm/sev.c
 create mode 100644 include/sysemu/sev.h

diff --git a/accel/kvm/Makefile.objs b/accel/kvm/Makefile.objs
index 85351e7de7e8..666ceef3dae3 100644
--- a/accel/kvm/Makefile.objs
+++ b/accel/kvm/Makefile.objs
@@ -1 +1 @@
-obj-$(CONFIG_KVM) += kvm-all.o
+obj-$(CONFIG_KVM) += kvm-all.o sev.o
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
new file mode 100644
index 000000000000..e93fdfeb0c8f
--- /dev/null
+++ b/accel/kvm/sev.c
@@ -0,0 +1,179 @@
+/*
+ * QEMU SEV support
+ *
+ * Copyright Advanced Micro Devices 2016-2018
+ *
+ * Author:
+ *      Brijesh Singh <brijesh.singh@amd.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "qom/object_interfaces.h"
+#include "qemu/base64.h"
+#include "sysemu/kvm.h"
+#include "sysemu/sev.h"
+#include "sysemu/sysemu.h"
+
+#define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
+#define DEFAULT_SEV_DEVICE      "/dev/sev"
+
+static void
+qsev_guest_finalize(Object *obj)
+{
+}
+
+static char *
+qsev_guest_get_session_file(Object *obj, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    return s->session_file ? g_strdup(s->session_file) : NULL;
+}
+
+static void
+qsev_guest_set_session_file(Object *obj, const char *value, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    s->session_file = g_strdup(value);
+}
+
+static char *
+qsev_guest_get_dh_cert_file(Object *obj, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    return g_strdup(s->dh_cert_file);
+}
+
+static void
+qsev_guest_set_dh_cert_file(Object *obj, const char *value, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    s->dh_cert_file = g_strdup(value);
+}
+
+static char *
+qsev_guest_get_sev_device(Object *obj, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    return g_strdup(sev->sev_device);
+}
+
+static void
+qsev_guest_set_sev_device(Object *obj, const char *value, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    sev->sev_device = g_strdup(value);
+}
+
+static void
+qsev_guest_class_init(ObjectClass *oc, void *data)
+{
+    object_class_property_add_str(oc, "sev-device",
+                                  qsev_guest_get_sev_device,
+                                  qsev_guest_set_sev_device,
+                                  NULL);
+    object_class_property_set_description(oc, "sev-device",
+            "SEV device to use", NULL);
+    object_class_property_add_str(oc, "dh-cert-file",
+                                  qsev_guest_get_dh_cert_file,
+                                  qsev_guest_set_dh_cert_file,
+                                  NULL);
+    object_class_property_set_description(oc, "dh-cert-file",
+            "guest owners DH certificate (encoded with base64)", NULL);
+    object_class_property_add_str(oc, "session-file",
+                                  qsev_guest_get_session_file,
+                                  qsev_guest_set_session_file,
+                                  NULL);
+    object_class_property_set_description(oc, "session-file",
+            "guest owners session parameters (encoded with base64)", NULL);
+}
+
+static void
+qsev_guest_set_handle(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+    uint32_t value;
+
+    visit_type_uint32(v, name, &value, errp);
+    sev->handle = value;
+}
+
+static void
+qsev_guest_set_policy(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+    uint32_t value;
+
+    visit_type_uint32(v, name, &value, errp);
+    sev->policy = value;
+}
+
+static void
+qsev_guest_get_policy(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    uint32_t value;
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    value = sev->policy;
+    visit_type_uint32(v, name, &value, errp);
+}
+
+static void
+qsev_guest_get_handle(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    uint32_t value;
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    value = sev->handle;
+    visit_type_uint32(v, name, &value, errp);
+}
+
+static void
+qsev_guest_init(Object *obj)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    sev->sev_device = g_strdup(DEFAULT_SEV_DEVICE);
+    sev->policy = DEFAULT_GUEST_POLICY;
+    object_property_add(obj, "policy", "uint32", qsev_guest_get_policy,
+                        qsev_guest_set_policy, NULL, NULL, NULL);
+    object_property_add(obj, "handle", "uint32", qsev_guest_get_handle,
+                        qsev_guest_set_handle, NULL, NULL, NULL);
+}
+
+/* sev guest info */
+static const TypeInfo qsev_guest_info = {
+    .parent = TYPE_OBJECT,
+    .name = TYPE_QSEV_GUEST_INFO,
+    .instance_size = sizeof(QSevGuestInfo),
+    .instance_finalize = qsev_guest_finalize,
+    .class_size = sizeof(QSevGuestInfoClass),
+    .class_init = qsev_guest_class_init,
+    .instance_init = qsev_guest_init,
+    .interfaces = (InterfaceInfo[]) {
+        { TYPE_USER_CREATABLE },
+        { }
+    }
+};
+
+static void
+sev_register_types(void)
+{
+    type_register_static(&qsev_guest_info);
+}
+
+type_init(sev_register_types);
diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt
index 72a92b6c6353..1527f603ea2a 100644
--- a/docs/amd-memory-encryption.txt
+++ b/docs/amd-memory-encryption.txt
@@ -35,10 +35,21 @@ in bad measurement). The guest policy is a 4-byte data structure containing
 several flags that restricts what can be done on running SEV guest.
 See KM Spec section 3 and 6.2 for more details.
 
+The guest policy can be provided via the 'policy' property (see below)
+
+# ${QEMU} \
+   sev-guest,id=sev0,policy=0x1...\
+
 Guest owners provided DH certificate and session parameters will be used to
 establish a cryptographic session with the guest owner to negotiate keys used
 for the attestation.
 
+The DH certificate and session blob can be provided via 'dh-cert-file' and
+'session-file' property (see below
+
+# ${QEMU} \
+     sev-guest,id=sev0,dh-cert-file=<file1>,session-file=<file2>
+
 LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context
 created via LAUNCH_START command. If required, this command can be called
 multiple times to encrypt different memory regions. The command also calculates
@@ -59,6 +70,12 @@ context.
 See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the
 complete flow chart.
 
+To launch a SEV guest
+
+# ${QEMU} \
+    -machine ...,memory-encryption=sev0 \
+    -object sev-guest,id=sev0
+
 Debugging
 -----------
 Since memory contents of SEV guest is encrypted hence hypervisor access to the
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
new file mode 100644
index 000000000000..d2621a9d1100
--- /dev/null
+++ b/include/sysemu/sev.h
@@ -0,0 +1,53 @@
+/*
+ * QEMU Secure Encrypted Virutualization (SEV) support
+ *
+ * Copyright: Advanced Micro Devices, 2016-2018
+ *
+ * Authors:
+ *  Brijesh Singh <brijesh.singh@amd.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#ifndef QEMU_SEV_H
+#define QEMU_SEV_H
+
+#include "qom/object.h"
+#include "qapi/error.h"
+#include "sysemu/kvm.h"
+#include "qemu/error-report.h"
+
+#define TYPE_QSEV_GUEST_INFO "sev-guest"
+#define QSEV_GUEST_INFO(obj)                  \
+    OBJECT_CHECK(QSevGuestInfo, (obj), TYPE_QSEV_GUEST_INFO)
+
+typedef struct QSevGuestInfo QSevGuestInfo;
+typedef struct QSevGuestInfoClass QSevGuestInfoClass;
+
+/**
+ * QSevGuestInfo:
+ *
+ * The QSevGuestInfo object is used for creating a SEV guest.
+ *
+ * # $QEMU \
+ *         -object sev-guest,id=sev0 \
+ *         -machine ...,memory-encryption=sev0
+ */
+struct QSevGuestInfo {
+    Object parent_obj;
+
+    char *sev_device;
+    uint32_t policy;
+    uint32_t handle;
+    char *dh_cert_file;
+    char *session_file;
+};
+
+struct QSevGuestInfoClass {
+    ObjectClass parent_class;
+};
+
+#endif
+
diff --git a/qemu-options.hx b/qemu-options.hx
index bec3490d7b8d..031886c1da77 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4280,6 +4280,40 @@ contents of @code{iv.b64} to the second secret
          data=$SECRET,iv=$(<iv.b64)
 @end example
 
+@item -object sev-guest,id=@var{id},sev-device=@var{string}[,policy=@var{policy},handle=@var{handle},dh-cert-file=@var{file},session-file=@var{file}]
+
+Create a Secure Encrypted Virtualization (SEV) guest object, which can be used
+to provide the guest memory encryption support on AMD processors.
+
+The @option{sev-device} provides the device file to use for communicating with
+the SEV firmware running inside AMD Secure Processor. The default device is
+'/dev/sev'. If hardware supports memory encryption then /dev/sev devices are
+created by CCP driver.
+
+The @option{policy} provides the guest policy to be enforced by the SEV firmware
+and restrict what configuration and operational commands can be performed on this
+guest by the hypervisor. The policy should be provided by the guest owner and is
+bound to the guest and cannot be changed throughout the lifetime of the guest.
+The default is 0.
+
+If guest @option{policy} allows sharing the key with another SEV guest then
+@option{handle} can be use to provide handle of the guest from which to share
+the key.
+
+The @option{dh-cert-file} and @option{session-file} provides the guest owner's
+Public Diffie-Hillman key defined in SEV spec. The PDH and session parameters
+are used for establishing a cryptographic session with the guest owner to
+negotiate keys used for attestation. The file must be encoded in base64.
+
+e.g to launch a SEV guest
+@example
+ # $QEMU \
+     ......
+     -object sev-guest,id=sev0 \
+     -machine ...,memory-encryption=sev0
+     .....
+
+@end example
 @end table
 
 ETEXI
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 09/23] accel: add Secure Encrypted Virtulization (SEV) object
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

Add a new memory encryption object 'sev-guest'. The object will be used
to create enrypted VMs on AMD EPYC CPU. The object provides the properties
to pass guest owner's public Diffie-hellman key, guest policy and session
information required to create the memory encryption context within the
SEV firmware.

e.g to launch SEV guest
 # $QEMU \
    -object sev-guest,id=sev0 \
    -machine ....,memory-encryption=sev0

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/Makefile.objs        |   2 +-
 accel/kvm/sev.c                | 179 +++++++++++++++++++++++++++++++++++++++++
 docs/amd-memory-encryption.txt |  17 ++++
 include/sysemu/sev.h           |  53 ++++++++++++
 qemu-options.hx                |  34 ++++++++
 5 files changed, 284 insertions(+), 1 deletion(-)
 create mode 100644 accel/kvm/sev.c
 create mode 100644 include/sysemu/sev.h

diff --git a/accel/kvm/Makefile.objs b/accel/kvm/Makefile.objs
index 85351e7de7e8..666ceef3dae3 100644
--- a/accel/kvm/Makefile.objs
+++ b/accel/kvm/Makefile.objs
@@ -1 +1 @@
-obj-$(CONFIG_KVM) += kvm-all.o
+obj-$(CONFIG_KVM) += kvm-all.o sev.o
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
new file mode 100644
index 000000000000..e93fdfeb0c8f
--- /dev/null
+++ b/accel/kvm/sev.c
@@ -0,0 +1,179 @@
+/*
+ * QEMU SEV support
+ *
+ * Copyright Advanced Micro Devices 2016-2018
+ *
+ * Author:
+ *      Brijesh Singh <brijesh.singh@amd.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "qom/object_interfaces.h"
+#include "qemu/base64.h"
+#include "sysemu/kvm.h"
+#include "sysemu/sev.h"
+#include "sysemu/sysemu.h"
+
+#define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
+#define DEFAULT_SEV_DEVICE      "/dev/sev"
+
+static void
+qsev_guest_finalize(Object *obj)
+{
+}
+
+static char *
+qsev_guest_get_session_file(Object *obj, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    return s->session_file ? g_strdup(s->session_file) : NULL;
+}
+
+static void
+qsev_guest_set_session_file(Object *obj, const char *value, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    s->session_file = g_strdup(value);
+}
+
+static char *
+qsev_guest_get_dh_cert_file(Object *obj, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    return g_strdup(s->dh_cert_file);
+}
+
+static void
+qsev_guest_set_dh_cert_file(Object *obj, const char *value, Error **errp)
+{
+    QSevGuestInfo *s = QSEV_GUEST_INFO(obj);
+
+    s->dh_cert_file = g_strdup(value);
+}
+
+static char *
+qsev_guest_get_sev_device(Object *obj, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    return g_strdup(sev->sev_device);
+}
+
+static void
+qsev_guest_set_sev_device(Object *obj, const char *value, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    sev->sev_device = g_strdup(value);
+}
+
+static void
+qsev_guest_class_init(ObjectClass *oc, void *data)
+{
+    object_class_property_add_str(oc, "sev-device",
+                                  qsev_guest_get_sev_device,
+                                  qsev_guest_set_sev_device,
+                                  NULL);
+    object_class_property_set_description(oc, "sev-device",
+            "SEV device to use", NULL);
+    object_class_property_add_str(oc, "dh-cert-file",
+                                  qsev_guest_get_dh_cert_file,
+                                  qsev_guest_set_dh_cert_file,
+                                  NULL);
+    object_class_property_set_description(oc, "dh-cert-file",
+            "guest owners DH certificate (encoded with base64)", NULL);
+    object_class_property_add_str(oc, "session-file",
+                                  qsev_guest_get_session_file,
+                                  qsev_guest_set_session_file,
+                                  NULL);
+    object_class_property_set_description(oc, "session-file",
+            "guest owners session parameters (encoded with base64)", NULL);
+}
+
+static void
+qsev_guest_set_handle(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+    uint32_t value;
+
+    visit_type_uint32(v, name, &value, errp);
+    sev->handle = value;
+}
+
+static void
+qsev_guest_set_policy(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+    uint32_t value;
+
+    visit_type_uint32(v, name, &value, errp);
+    sev->policy = value;
+}
+
+static void
+qsev_guest_get_policy(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    uint32_t value;
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    value = sev->policy;
+    visit_type_uint32(v, name, &value, errp);
+}
+
+static void
+qsev_guest_get_handle(Object *obj, Visitor *v, const char *name,
+                      void *opaque, Error **errp)
+{
+    uint32_t value;
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    value = sev->handle;
+    visit_type_uint32(v, name, &value, errp);
+}
+
+static void
+qsev_guest_init(Object *obj)
+{
+    QSevGuestInfo *sev = QSEV_GUEST_INFO(obj);
+
+    sev->sev_device = g_strdup(DEFAULT_SEV_DEVICE);
+    sev->policy = DEFAULT_GUEST_POLICY;
+    object_property_add(obj, "policy", "uint32", qsev_guest_get_policy,
+                        qsev_guest_set_policy, NULL, NULL, NULL);
+    object_property_add(obj, "handle", "uint32", qsev_guest_get_handle,
+                        qsev_guest_set_handle, NULL, NULL, NULL);
+}
+
+/* sev guest info */
+static const TypeInfo qsev_guest_info = {
+    .parent = TYPE_OBJECT,
+    .name = TYPE_QSEV_GUEST_INFO,
+    .instance_size = sizeof(QSevGuestInfo),
+    .instance_finalize = qsev_guest_finalize,
+    .class_size = sizeof(QSevGuestInfoClass),
+    .class_init = qsev_guest_class_init,
+    .instance_init = qsev_guest_init,
+    .interfaces = (InterfaceInfo[]) {
+        { TYPE_USER_CREATABLE },
+        { }
+    }
+};
+
+static void
+sev_register_types(void)
+{
+    type_register_static(&qsev_guest_info);
+}
+
+type_init(sev_register_types);
diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt
index 72a92b6c6353..1527f603ea2a 100644
--- a/docs/amd-memory-encryption.txt
+++ b/docs/amd-memory-encryption.txt
@@ -35,10 +35,21 @@ in bad measurement). The guest policy is a 4-byte data structure containing
 several flags that restricts what can be done on running SEV guest.
 See KM Spec section 3 and 6.2 for more details.
 
+The guest policy can be provided via the 'policy' property (see below)
+
+# ${QEMU} \
+   sev-guest,id=sev0,policy=0x1...\
+
 Guest owners provided DH certificate and session parameters will be used to
 establish a cryptographic session with the guest owner to negotiate keys used
 for the attestation.
 
+The DH certificate and session blob can be provided via 'dh-cert-file' and
+'session-file' property (see below
+
+# ${QEMU} \
+     sev-guest,id=sev0,dh-cert-file=<file1>,session-file=<file2>
+
 LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context
 created via LAUNCH_START command. If required, this command can be called
 multiple times to encrypt different memory regions. The command also calculates
@@ -59,6 +70,12 @@ context.
 See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the
 complete flow chart.
 
+To launch a SEV guest
+
+# ${QEMU} \
+    -machine ...,memory-encryption=sev0 \
+    -object sev-guest,id=sev0
+
 Debugging
 -----------
 Since memory contents of SEV guest is encrypted hence hypervisor access to the
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
new file mode 100644
index 000000000000..d2621a9d1100
--- /dev/null
+++ b/include/sysemu/sev.h
@@ -0,0 +1,53 @@
+/*
+ * QEMU Secure Encrypted Virutualization (SEV) support
+ *
+ * Copyright: Advanced Micro Devices, 2016-2018
+ *
+ * Authors:
+ *  Brijesh Singh <brijesh.singh@amd.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#ifndef QEMU_SEV_H
+#define QEMU_SEV_H
+
+#include "qom/object.h"
+#include "qapi/error.h"
+#include "sysemu/kvm.h"
+#include "qemu/error-report.h"
+
+#define TYPE_QSEV_GUEST_INFO "sev-guest"
+#define QSEV_GUEST_INFO(obj)                  \
+    OBJECT_CHECK(QSevGuestInfo, (obj), TYPE_QSEV_GUEST_INFO)
+
+typedef struct QSevGuestInfo QSevGuestInfo;
+typedef struct QSevGuestInfoClass QSevGuestInfoClass;
+
+/**
+ * QSevGuestInfo:
+ *
+ * The QSevGuestInfo object is used for creating a SEV guest.
+ *
+ * # $QEMU \
+ *         -object sev-guest,id=sev0 \
+ *         -machine ...,memory-encryption=sev0
+ */
+struct QSevGuestInfo {
+    Object parent_obj;
+
+    char *sev_device;
+    uint32_t policy;
+    uint32_t handle;
+    char *dh_cert_file;
+    char *session_file;
+};
+
+struct QSevGuestInfoClass {
+    ObjectClass parent_class;
+};
+
+#endif
+
diff --git a/qemu-options.hx b/qemu-options.hx
index bec3490d7b8d..031886c1da77 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4280,6 +4280,40 @@ contents of @code{iv.b64} to the second secret
          data=$SECRET,iv=$(<iv.b64)
 @end example
 
+@item -object sev-guest,id=@var{id},sev-device=@var{string}[,policy=@var{policy},handle=@var{handle},dh-cert-file=@var{file},session-file=@var{file}]
+
+Create a Secure Encrypted Virtualization (SEV) guest object, which can be used
+to provide the guest memory encryption support on AMD processors.
+
+The @option{sev-device} provides the device file to use for communicating with
+the SEV firmware running inside AMD Secure Processor. The default device is
+'/dev/sev'. If hardware supports memory encryption then /dev/sev devices are
+created by CCP driver.
+
+The @option{policy} provides the guest policy to be enforced by the SEV firmware
+and restrict what configuration and operational commands can be performed on this
+guest by the hypervisor. The policy should be provided by the guest owner and is
+bound to the guest and cannot be changed throughout the lifetime of the guest.
+The default is 0.
+
+If guest @option{policy} allows sharing the key with another SEV guest then
+@option{handle} can be use to provide handle of the guest from which to share
+the key.
+
+The @option{dh-cert-file} and @option{session-file} provides the guest owner's
+Public Diffie-Hillman key defined in SEV spec. The PDH and session parameters
+are used for establishing a cryptographic session with the guest owner to
+negotiate keys used for attestation. The file must be encoded in base64.
+
+e.g to launch a SEV guest
+@example
+ # $QEMU \
+     ......
+     -object sev-guest,id=sev0 \
+     -machine ...,memory-encryption=sev0
+     .....
+
+@end example
 @end table
 
 ETEXI
-- 
2.9.5

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

* [PATCH v6 10/23] sev: add command to initialize the memory encryption context
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

When memory encryption is enabled, KVM_SEV_INIT command is used to
initialize the platform. The command loads the SEV related persistent
data from non-volatile storage and initializes the platform context.
This command should be first issued before invoking any other guest
commands provided by the SEV firmware.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    |  15 ++++++
 accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |   2 +
 include/sysemu/sev.h   |  10 ++++
 4 files changed, 151 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index f290f487a573..a9b16846675e 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -38,6 +38,7 @@
 #include "qemu/event_notifier.h"
 #include "trace.h"
 #include "hw/irq.h"
+#include "sysemu/sev.h"
 
 #include "hw/boards.h"
 
@@ -103,6 +104,9 @@ struct KVMState
 #endif
     KVMMemoryListener memory_listener;
     QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
+
+    /* memory encryption */
+    void *memcrypt_handle;
 };
 
 KVMState *kvm_state;
@@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
 
     kvm_state = s;
 
+    /*
+     * if memory encryption object is specified then initialize the memory
+     * encryption context.
+     * */
+    if (ms->memory_encryption) {
+        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
+        if (!kvm_state->memcrypt_handle) {
+            goto err;
+        }
+    }
+
     ret = kvm_arch_init(ms, s);
     if (ret < 0) {
         goto err;
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index e93fdfeb0c8f..be1791e510b3 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -18,10 +18,72 @@
 #include "sysemu/kvm.h"
 #include "sysemu/sev.h"
 #include "sysemu/sysemu.h"
+#include "trace.h"
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
 
+static int sev_fd;
+
+#define SEV_FW_MAX_ERROR      0x17
+
+static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
+    "",
+    "Platform state is invalid",
+    "Guest state is invalid",
+    "Platform configuration is invalid",
+    "Buffer too small",
+    "Platform is already owned",
+    "Certificate is invalid",
+    "Policy is not allowed",
+    "Guest is not active",
+    "Invalid address",
+    "Bad signature",
+    "Bad measurement",
+    "Asid is already owned",
+    "Invalid ASID",
+    "WBINVD is required",
+    "DF_FLUSH is required",
+    "Guest handle is invalid",
+    "Invalid command",
+    "Guest is active",
+    "Hardware error",
+    "Hardware unsafe",
+    "Feature not supported",
+    "Invalid parameter"
+};
+
+static int
+sev_ioctl(int cmd, void *data, int *error)
+{
+    int r;
+    struct kvm_sev_cmd input;
+
+    memset(&input, 0x0, sizeof(input));
+
+    input.id = cmd;
+    input.sev_fd = sev_fd;
+    input.data = (__u64)data;
+
+    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
+
+    if (error) {
+        *error = input.error;
+    }
+
+    return r;
+}
+
+static char *
+fw_error_to_str(int code)
+{
+    if (code > SEV_FW_MAX_ERROR) {
+        return NULL;
+    }
+
+    return sev_fw_errlist[code];
+}
+
 static void
 qsev_guest_finalize(Object *obj)
 {
@@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
     }
 };
 
+static QSevGuestInfo *
+lookup_sev_guest_info(const char *id)
+{
+    Object *obj;
+    QSevGuestInfo *info;
+
+    obj = object_resolve_path_component(object_get_objects_root(), id);
+    if (!obj) {
+        return NULL;
+    }
+
+    info = (QSevGuestInfo *)
+            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
+    if (!info) {
+        return NULL;
+    }
+
+    return info;
+}
+
+void *
+sev_guest_init(const char *id)
+{
+    SEVState *s;
+    char *devname;
+    int ret, fw_error;
+
+    s = g_malloc0(sizeof(SEVState));
+    if (!s) {
+        return NULL;
+    }
+
+    s->sev_info = lookup_sev_guest_info(id);
+    if (!s->sev_info) {
+        error_report("%s: '%s' is not a valid '%s' object",
+                     __func__, id, TYPE_QSEV_GUEST_INFO);
+        goto err;
+    }
+
+    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
+    sev_fd = open(devname, O_RDWR);
+    if (sev_fd < 0) {
+        error_report("%s: Failed to open %s '%s'", __func__,
+                     devname, strerror(errno));
+        goto err;
+    }
+    g_free(devname);
+
+    trace_kvm_sev_init();
+    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
+    if (ret) {
+        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
+                     __func__, ret, fw_error, fw_error_to_str(fw_error));
+        goto err;
+    }
+
+    return s;
+err:
+    g_free(s);
+    return NULL;
+}
+
 static void
 sev_register_types(void)
 {
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index f89ba5578dc1..ea487e5a5913 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
 kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
 kvm_irqchip_release_virq(int virq) "virq %d"
 
+# sev.c
+kvm_sev_init(void) ""
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index d2621a9d1100..6aec25bc05e5 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -14,6 +14,8 @@
 #ifndef QEMU_SEV_H
 #define QEMU_SEV_H
 
+#include <linux/kvm.h>
+
 #include "qom/object.h"
 #include "qapi/error.h"
 #include "sysemu/kvm.h"
@@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
     ObjectClass parent_class;
 };
 
+struct SEVState {
+    QSevGuestInfo *sev_info;
+};
+
+typedef struct SEVState SEVState;
+
+void *sev_guest_init(const char *id);
+
 #endif
 
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 10/23] sev: add command to initialize the memory encryption context
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

When memory encryption is enabled, KVM_SEV_INIT command is used to
initialize the platform. The command loads the SEV related persistent
data from non-volatile storage and initializes the platform context.
This command should be first issued before invoking any other guest
commands provided by the SEV firmware.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    |  15 ++++++
 accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |   2 +
 include/sysemu/sev.h   |  10 ++++
 4 files changed, 151 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index f290f487a573..a9b16846675e 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -38,6 +38,7 @@
 #include "qemu/event_notifier.h"
 #include "trace.h"
 #include "hw/irq.h"
+#include "sysemu/sev.h"
 
 #include "hw/boards.h"
 
@@ -103,6 +104,9 @@ struct KVMState
 #endif
     KVMMemoryListener memory_listener;
     QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
+
+    /* memory encryption */
+    void *memcrypt_handle;
 };
 
 KVMState *kvm_state;
@@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
 
     kvm_state = s;
 
+    /*
+     * if memory encryption object is specified then initialize the memory
+     * encryption context.
+     * */
+    if (ms->memory_encryption) {
+        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
+        if (!kvm_state->memcrypt_handle) {
+            goto err;
+        }
+    }
+
     ret = kvm_arch_init(ms, s);
     if (ret < 0) {
         goto err;
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index e93fdfeb0c8f..be1791e510b3 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -18,10 +18,72 @@
 #include "sysemu/kvm.h"
 #include "sysemu/sev.h"
 #include "sysemu/sysemu.h"
+#include "trace.h"
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
 
+static int sev_fd;
+
+#define SEV_FW_MAX_ERROR      0x17
+
+static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
+    "",
+    "Platform state is invalid",
+    "Guest state is invalid",
+    "Platform configuration is invalid",
+    "Buffer too small",
+    "Platform is already owned",
+    "Certificate is invalid",
+    "Policy is not allowed",
+    "Guest is not active",
+    "Invalid address",
+    "Bad signature",
+    "Bad measurement",
+    "Asid is already owned",
+    "Invalid ASID",
+    "WBINVD is required",
+    "DF_FLUSH is required",
+    "Guest handle is invalid",
+    "Invalid command",
+    "Guest is active",
+    "Hardware error",
+    "Hardware unsafe",
+    "Feature not supported",
+    "Invalid parameter"
+};
+
+static int
+sev_ioctl(int cmd, void *data, int *error)
+{
+    int r;
+    struct kvm_sev_cmd input;
+
+    memset(&input, 0x0, sizeof(input));
+
+    input.id = cmd;
+    input.sev_fd = sev_fd;
+    input.data = (__u64)data;
+
+    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
+
+    if (error) {
+        *error = input.error;
+    }
+
+    return r;
+}
+
+static char *
+fw_error_to_str(int code)
+{
+    if (code > SEV_FW_MAX_ERROR) {
+        return NULL;
+    }
+
+    return sev_fw_errlist[code];
+}
+
 static void
 qsev_guest_finalize(Object *obj)
 {
@@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
     }
 };
 
+static QSevGuestInfo *
+lookup_sev_guest_info(const char *id)
+{
+    Object *obj;
+    QSevGuestInfo *info;
+
+    obj = object_resolve_path_component(object_get_objects_root(), id);
+    if (!obj) {
+        return NULL;
+    }
+
+    info = (QSevGuestInfo *)
+            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
+    if (!info) {
+        return NULL;
+    }
+
+    return info;
+}
+
+void *
+sev_guest_init(const char *id)
+{
+    SEVState *s;
+    char *devname;
+    int ret, fw_error;
+
+    s = g_malloc0(sizeof(SEVState));
+    if (!s) {
+        return NULL;
+    }
+
+    s->sev_info = lookup_sev_guest_info(id);
+    if (!s->sev_info) {
+        error_report("%s: '%s' is not a valid '%s' object",
+                     __func__, id, TYPE_QSEV_GUEST_INFO);
+        goto err;
+    }
+
+    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
+    sev_fd = open(devname, O_RDWR);
+    if (sev_fd < 0) {
+        error_report("%s: Failed to open %s '%s'", __func__,
+                     devname, strerror(errno));
+        goto err;
+    }
+    g_free(devname);
+
+    trace_kvm_sev_init();
+    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
+    if (ret) {
+        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
+                     __func__, ret, fw_error, fw_error_to_str(fw_error));
+        goto err;
+    }
+
+    return s;
+err:
+    g_free(s);
+    return NULL;
+}
+
 static void
 sev_register_types(void)
 {
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index f89ba5578dc1..ea487e5a5913 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
 kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
 kvm_irqchip_release_virq(int virq) "virq %d"
 
+# sev.c
+kvm_sev_init(void) ""
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index d2621a9d1100..6aec25bc05e5 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -14,6 +14,8 @@
 #ifndef QEMU_SEV_H
 #define QEMU_SEV_H
 
+#include <linux/kvm.h>
+
 #include "qom/object.h"
 #include "qapi/error.h"
 #include "sysemu/kvm.h"
@@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
     ObjectClass parent_class;
 };
 
+struct SEVState {
+    QSevGuestInfo *sev_info;
+};
+
+typedef struct SEVState SEVState;
+
+void *sev_guest_init(const char *id);
+
 #endif
 
-- 
2.9.5

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

* [PATCH v6 11/23] sev: register the guest memory range which may contain encrypted data
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

When SEV is enabled, the hardware encryption engine uses a tweak such
that the two identical plaintext at different location will have a
different ciphertexts. So swapping or moving a ciphertexts of two guest
pages will not result in plaintexts being swapped. Hence relocating
a physical backing pages of the SEV guest will require some additional
steps in KVM driver. The KVM_MEMORY_ENCRYPT_{UN,}REG_REGION ioctl can be
used to register/unregister the guest memory region which may contain the
encrypted data. KVM driver will internally handle the relocating physical
backing pages of registered memory regions.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 41 +++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  2 ++
 2 files changed, 43 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index be1791e510b3..5ae37caeb361 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -85,6 +85,45 @@ fw_error_to_str(int code)
 }
 
 static void
+sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size)
+{
+    int r;
+    struct kvm_enc_region range;
+
+    range.addr = (__u64)host;
+    range.size = size;
+
+    trace_kvm_memcrypt_register_region(host, size);
+    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_REG_REGION, &range);
+    if (r) {
+        error_report("%s: failed to register region (%p+%#lx)",
+                     __func__, host, size);
+    }
+}
+
+static void
+sev_ram_block_removed(RAMBlockNotifier *n, void *host, size_t size)
+{
+    int r;
+    struct kvm_enc_region range;
+
+    range.addr = (__u64)host;
+    range.size = size;
+
+    trace_kvm_memcrypt_unregister_region(host, size);
+    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_UNREG_REGION, &range);
+    if (r) {
+        error_report("%s: failed to unregister region (%p+%#lx)",
+                     __func__, host, size);
+    }
+}
+
+static struct RAMBlockNotifier sev_ram_notifier = {
+    .ram_block_added = sev_ram_block_added,
+    .ram_block_removed = sev_ram_block_removed,
+};
+
+static void
 qsev_guest_finalize(Object *obj)
 {
 }
@@ -288,6 +327,8 @@ sev_guest_init(const char *id)
         goto err;
     }
 
+    ram_block_notifier_add(&sev_ram_notifier);
+
     return s;
 err:
     g_free(s);
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index ea487e5a5913..364c84bd7a73 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -15,3 +15,5 @@ kvm_irqchip_release_virq(int virq) "virq %d"
 
 # sev.c
 kvm_sev_init(void) ""
+kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu"
+kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 11/23] sev: register the guest memory range which may contain encrypted data
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

When SEV is enabled, the hardware encryption engine uses a tweak such
that the two identical plaintext at different location will have a
different ciphertexts. So swapping or moving a ciphertexts of two guest
pages will not result in plaintexts being swapped. Hence relocating
a physical backing pages of the SEV guest will require some additional
steps in KVM driver. The KVM_MEMORY_ENCRYPT_{UN,}REG_REGION ioctl can be
used to register/unregister the guest memory region which may contain the
encrypted data. KVM driver will internally handle the relocating physical
backing pages of registered memory regions.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 41 +++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  2 ++
 2 files changed, 43 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index be1791e510b3..5ae37caeb361 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -85,6 +85,45 @@ fw_error_to_str(int code)
 }
 
 static void
+sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size)
+{
+    int r;
+    struct kvm_enc_region range;
+
+    range.addr = (__u64)host;
+    range.size = size;
+
+    trace_kvm_memcrypt_register_region(host, size);
+    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_REG_REGION, &range);
+    if (r) {
+        error_report("%s: failed to register region (%p+%#lx)",
+                     __func__, host, size);
+    }
+}
+
+static void
+sev_ram_block_removed(RAMBlockNotifier *n, void *host, size_t size)
+{
+    int r;
+    struct kvm_enc_region range;
+
+    range.addr = (__u64)host;
+    range.size = size;
+
+    trace_kvm_memcrypt_unregister_region(host, size);
+    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_UNREG_REGION, &range);
+    if (r) {
+        error_report("%s: failed to unregister region (%p+%#lx)",
+                     __func__, host, size);
+    }
+}
+
+static struct RAMBlockNotifier sev_ram_notifier = {
+    .ram_block_added = sev_ram_block_added,
+    .ram_block_removed = sev_ram_block_removed,
+};
+
+static void
 qsev_guest_finalize(Object *obj)
 {
 }
@@ -288,6 +327,8 @@ sev_guest_init(const char *id)
         goto err;
     }
 
+    ram_block_notifier_add(&sev_ram_notifier);
+
     return s;
 err:
     g_free(s);
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index ea487e5a5913..364c84bd7a73 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -15,3 +15,5 @@ kvm_irqchip_release_virq(int virq) "virq %d"
 
 # sev.c
 kvm_sev_init(void) ""
+kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu"
+kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
-- 
2.9.5

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

* [PATCH v6 12/23] kvm: introduce memory encryption APIs
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

Inorder to integerate the Secure Encryption Virtualization (SEV) support
add few high-level memory encryption APIs which can be used for encrypting
the guest memory region.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    | 30 ++++++++++++++++++++++++++++++
 accel/stubs/kvm-stub.c | 14 ++++++++++++++
 include/sysemu/kvm.h   | 25 +++++++++++++++++++++++++
 3 files changed, 69 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index a9b16846675e..54a0fd6097fb 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -107,6 +107,8 @@ struct KVMState
 
     /* memory encryption */
     void *memcrypt_handle;
+    int (*memcrypt_encrypt_data)(void *handle, uint8_t *ptr, uint64_t len);
+    void (*memcrypt_debug_ops)(void *handle, MemoryRegion *mr);
 };
 
 KVMState *kvm_state;
@@ -142,6 +144,34 @@ int kvm_get_max_memslots(void)
     return s->nr_slots;
 }
 
+bool kvm_memcrypt_enabled(void)
+{
+    if (kvm_state && kvm_state->memcrypt_handle) {
+        return true;
+    }
+
+    return false;
+}
+
+int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len)
+{
+    if (kvm_state->memcrypt_handle &&
+        kvm_state->memcrypt_encrypt_data) {
+        return kvm_state->memcrypt_encrypt_data(kvm_state->memcrypt_handle,
+                                              ptr, len);
+    }
+
+    return 1;
+}
+
+void kvm_memcrypt_set_debug_ops(MemoryRegion *mr)
+{
+    if (kvm_state->memcrypt_handle &&
+        kvm_state->memcrypt_debug_ops) {
+        kvm_state->memcrypt_debug_ops(kvm_state->memcrypt_handle, mr);
+    }
+}
+
 static KVMSlot *kvm_get_free_slot(KVMMemoryListener *kml)
 {
     KVMState *s = kvm_state;
diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c
index c964af3e1c97..5739712a67e3 100644
--- a/accel/stubs/kvm-stub.c
+++ b/accel/stubs/kvm-stub.c
@@ -105,6 +105,20 @@ int kvm_on_sigbus(int code, void *addr)
     return 1;
 }
 
+bool kvm_memcrypt_enabled(void)
+{
+    return false;
+}
+
+int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len)
+{
+  return 1;
+}
+
+void kvm_memcrypt_set_debug_ops(MemoryRegion *mr)
+{
+}
+
 #ifndef CONFIG_USER_ONLY
 int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
 {
diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
index bbf12a172339..4a5db5dde390 100644
--- a/include/sysemu/kvm.h
+++ b/include/sysemu/kvm.h
@@ -231,6 +231,31 @@ int kvm_destroy_vcpu(CPUState *cpu);
  */
 bool kvm_arm_supports_user_irq(void);
 
+/**
+ * kvm_memcrypt_enabled - return boolean indicating whether memory encryption
+ *                        is enabled
+ * Returns: 1 memory encryption is enabled
+ *          0 memory encryption is disabled
+ */
+bool kvm_memcrypt_enabled(void);
+
+/**
+ * kvm_memcrypt_encrypt_data: encrypt the memory range
+ *
+ * Return: 1 failed to encrypt the range
+ *         0 succesfully encrypted memory region
+ */
+int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len);
+
+/**
+ * kvm_memcrypt_set_debug_ram_ops: set debug_ram_ops callback
+ *
+ * When debug_ram_ops is set, debug access to this memory region will use
+ * memory encryption APIs.
+ */
+void kvm_memcrypt_set_debug_ops(MemoryRegion *mr);
+
+
 #ifdef NEED_CPU_H
 #include "cpu.h"
 
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 12/23] kvm: introduce memory encryption APIs
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

Inorder to integerate the Secure Encryption Virtualization (SEV) support
add few high-level memory encryption APIs which can be used for encrypting
the guest memory region.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    | 30 ++++++++++++++++++++++++++++++
 accel/stubs/kvm-stub.c | 14 ++++++++++++++
 include/sysemu/kvm.h   | 25 +++++++++++++++++++++++++
 3 files changed, 69 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index a9b16846675e..54a0fd6097fb 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -107,6 +107,8 @@ struct KVMState
 
     /* memory encryption */
     void *memcrypt_handle;
+    int (*memcrypt_encrypt_data)(void *handle, uint8_t *ptr, uint64_t len);
+    void (*memcrypt_debug_ops)(void *handle, MemoryRegion *mr);
 };
 
 KVMState *kvm_state;
@@ -142,6 +144,34 @@ int kvm_get_max_memslots(void)
     return s->nr_slots;
 }
 
+bool kvm_memcrypt_enabled(void)
+{
+    if (kvm_state && kvm_state->memcrypt_handle) {
+        return true;
+    }
+
+    return false;
+}
+
+int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len)
+{
+    if (kvm_state->memcrypt_handle &&
+        kvm_state->memcrypt_encrypt_data) {
+        return kvm_state->memcrypt_encrypt_data(kvm_state->memcrypt_handle,
+                                              ptr, len);
+    }
+
+    return 1;
+}
+
+void kvm_memcrypt_set_debug_ops(MemoryRegion *mr)
+{
+    if (kvm_state->memcrypt_handle &&
+        kvm_state->memcrypt_debug_ops) {
+        kvm_state->memcrypt_debug_ops(kvm_state->memcrypt_handle, mr);
+    }
+}
+
 static KVMSlot *kvm_get_free_slot(KVMMemoryListener *kml)
 {
     KVMState *s = kvm_state;
diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c
index c964af3e1c97..5739712a67e3 100644
--- a/accel/stubs/kvm-stub.c
+++ b/accel/stubs/kvm-stub.c
@@ -105,6 +105,20 @@ int kvm_on_sigbus(int code, void *addr)
     return 1;
 }
 
+bool kvm_memcrypt_enabled(void)
+{
+    return false;
+}
+
+int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len)
+{
+  return 1;
+}
+
+void kvm_memcrypt_set_debug_ops(MemoryRegion *mr)
+{
+}
+
 #ifndef CONFIG_USER_ONLY
 int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
 {
diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
index bbf12a172339..4a5db5dde390 100644
--- a/include/sysemu/kvm.h
+++ b/include/sysemu/kvm.h
@@ -231,6 +231,31 @@ int kvm_destroy_vcpu(CPUState *cpu);
  */
 bool kvm_arm_supports_user_irq(void);
 
+/**
+ * kvm_memcrypt_enabled - return boolean indicating whether memory encryption
+ *                        is enabled
+ * Returns: 1 memory encryption is enabled
+ *          0 memory encryption is disabled
+ */
+bool kvm_memcrypt_enabled(void);
+
+/**
+ * kvm_memcrypt_encrypt_data: encrypt the memory range
+ *
+ * Return: 1 failed to encrypt the range
+ *         0 succesfully encrypted memory region
+ */
+int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len);
+
+/**
+ * kvm_memcrypt_set_debug_ram_ops: set debug_ram_ops callback
+ *
+ * When debug_ram_ops is set, debug access to this memory region will use
+ * memory encryption APIs.
+ */
+void kvm_memcrypt_set_debug_ops(MemoryRegion *mr);
+
+
 #ifdef NEED_CPU_H
 #include "cpu.h"
 
-- 
2.9.5

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

* [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Markus Armbruster

update 'info kvm' to display the memory encryption support.

(qemu) info kvm
kvm support: enabled
memory encryption: disabled

Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hmp.c            | 2 ++
 qapi-schema.json | 5 ++++-
 qmp.c            | 1 +
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/hmp.c b/hmp.c
index 056bf70cf1e2..6ceb6b30af75 100644
--- a/hmp.c
+++ b/hmp.c
@@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
     monitor_printf(mon, "kvm support: ");
     if (info->present) {
         monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
+        monitor_printf(mon, "memory encryption: %s\n",
+                       info->mem_encryption ? "enabled" : "disabled");
     } else {
         monitor_printf(mon, "not compiled\n");
     }
diff --git a/qapi-schema.json b/qapi-schema.json
index 5c06745c7927..2046c96669bf 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -314,9 +314,12 @@
 #
 # @present: true if KVM acceleration is built into this executable
 #
+# @mem-encryption: true if Memory Encryption is active (since 2.12)
+#
 # Since: 0.14.0
 ##
-{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
+{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
+            'mem-encryption' : 'bool'} }
 
 ##
 # @query-kvm:
diff --git a/qmp.c b/qmp.c
index 52cfd2d81c0f..3a527bc8c39c 100644
--- a/qmp.c
+++ b/qmp.c
@@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
 
     info->enabled = kvm_enabled();
     info->present = kvm_available();
+    info->mem_encryption = kvm_memcrypt_enabled();
 
     return info;
 }
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Markus Armbruster

update 'info kvm' to display the memory encryption support.

(qemu) info kvm
kvm support: enabled
memory encryption: disabled

Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hmp.c            | 2 ++
 qapi-schema.json | 5 ++++-
 qmp.c            | 1 +
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/hmp.c b/hmp.c
index 056bf70cf1e2..6ceb6b30af75 100644
--- a/hmp.c
+++ b/hmp.c
@@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
     monitor_printf(mon, "kvm support: ");
     if (info->present) {
         monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
+        monitor_printf(mon, "memory encryption: %s\n",
+                       info->mem_encryption ? "enabled" : "disabled");
     } else {
         monitor_printf(mon, "not compiled\n");
     }
diff --git a/qapi-schema.json b/qapi-schema.json
index 5c06745c7927..2046c96669bf 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -314,9 +314,12 @@
 #
 # @present: true if KVM acceleration is built into this executable
 #
+# @mem-encryption: true if Memory Encryption is active (since 2.12)
+#
 # Since: 0.14.0
 ##
-{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
+{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
+            'mem-encryption' : 'bool'} }
 
 ##
 # @query-kvm:
diff --git a/qmp.c b/qmp.c
index 52cfd2d81c0f..3a527bc8c39c 100644
--- a/qmp.c
+++ b/qmp.c
@@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
 
     info->enabled = kvm_enabled();
     info->present = kvm_available();
+    info->mem_encryption = kvm_memcrypt_enabled();
 
     return info;
 }
-- 
2.9.5

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

* [PATCH v6 14/23] sev: add command to create launch memory encryption context
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

The KVM_SEV_LAUNCH_START command creates a new VM encryption key (VEK).
The encryption key created with the command will be used for encrypting
the bootstrap images (such as guest bios).

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  2 ++
 include/sysemu/sev.h   | 10 ++++++
 3 files changed, 109 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index 5ae37caeb361..eea07ac9642f 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -27,6 +27,17 @@ static int sev_fd;
 
 #define SEV_FW_MAX_ERROR      0x17
 
+static SevGuestState current_sev_guest_state = SEV_STATE_UNINIT;
+
+static char sev_state_str[SEV_STATE_MAX][10] = {
+    "uninit",
+    "lupdate",
+    "secret",
+    "running",
+    "supdate",
+    "rupdate",
+};
+
 static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
     "",
     "Platform state is invalid",
@@ -85,6 +96,16 @@ fw_error_to_str(int code)
 }
 
 static void
+sev_set_guest_state(SevGuestState new_state)
+{
+    assert(new_state < SEV_STATE_MAX);
+
+    trace_kvm_sev_change_state(sev_state_str[current_sev_guest_state],
+                               sev_state_str[new_state]);
+    current_sev_guest_state = new_state;
+}
+
+static void
 sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size)
 {
     int r;
@@ -291,6 +312,76 @@ lookup_sev_guest_info(const char *id)
     return info;
 }
 
+static int
+sev_read_file_base64(const char *filename, guchar **data, gsize *len)
+{
+    gsize sz;
+    gchar *base64;
+    GError *error = NULL;
+
+    if (!g_file_get_contents(filename, &base64, &sz, &error)) {
+        error_report("failed to read '%s' (%s)", filename, error->message);
+        return -1;
+    }
+
+    *data = g_base64_decode(base64, len);
+    return 0;
+}
+
+static int
+sev_launch_start(SEVState *s)
+{
+    gsize sz;
+    int ret = 1;
+    int fw_error;
+    QSevGuestInfo *sev = s->sev_info;
+    struct kvm_sev_launch_start *start;
+    guchar *session = NULL, *dh_cert = NULL;
+
+    start = g_malloc0(sizeof(*start));
+    if (!start) {
+        return 1;
+    }
+
+    start->handle = object_property_get_int(OBJECT(sev), "handle",
+                                            &error_abort);
+    start->policy = object_property_get_int(OBJECT(sev), "policy",
+                                            &error_abort);
+    if (sev->session_file) {
+        if (sev_read_file_base64(sev->session_file, &session, &sz) < 0) {
+            return 1;
+        }
+        start->session_uaddr = (unsigned long)session;
+        start->session_len = sz;
+    }
+
+    if (sev->dh_cert_file) {
+        if (sev_read_file_base64(sev->dh_cert_file, &dh_cert, &sz) < 0) {
+            return 1;
+        }
+        start->dh_uaddr = (unsigned long)dh_cert;
+        start->dh_len = sz;
+    }
+
+    trace_kvm_sev_launch_start(start->policy, session, dh_cert);
+    ret = sev_ioctl(KVM_SEV_LAUNCH_START, start, &fw_error);
+    if (ret < 0) {
+        error_report("%s: LAUNCH_START ret=%d fw_error=%d '%s'",
+                __func__, ret, fw_error, fw_error_to_str(fw_error));
+        return 1;
+    }
+
+    object_property_set_int(OBJECT(sev), start->handle, "handle",
+                            &error_abort);
+    sev_set_guest_state(SEV_STATE_LUPDATE);
+
+    g_free(start);
+    g_free(session);
+    g_free(dh_cert);
+
+    return 0;
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -327,6 +418,12 @@ sev_guest_init(const char *id)
         goto err;
     }
 
+    ret = sev_launch_start(s);
+    if (ret) {
+        error_report("%s: failed to create encryption context", __func__);
+        goto err;
+    }
+
     ram_block_notifier_add(&sev_ram_notifier);
 
     return s;
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index 364c84bd7a73..a4ea1c382ec2 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -17,3 +17,5 @@ kvm_irqchip_release_virq(int virq) "virq %d"
 kvm_sev_init(void) ""
 kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
+kvm_sev_change_state(char *old, char *new) "%s -> %s"
+kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 6aec25bc05e5..392b21fafbd3 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -51,6 +51,16 @@ struct QSevGuestInfoClass {
     ObjectClass parent_class;
 };
 
+typedef enum {
+    SEV_STATE_UNINIT = 0,
+    SEV_STATE_LUPDATE,
+    SEV_STATE_SECRET,
+    SEV_STATE_RUNNING,
+    SEV_STATE_SUPDATE,
+    SEV_STATE_RUPDATE,
+    SEV_STATE_MAX
+} SevGuestState;
+
 struct SEVState {
     QSevGuestInfo *sev_info;
 };
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 14/23] sev: add command to create launch memory encryption context
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

The KVM_SEV_LAUNCH_START command creates a new VM encryption key (VEK).
The encryption key created with the command will be used for encrypting
the bootstrap images (such as guest bios).

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  2 ++
 include/sysemu/sev.h   | 10 ++++++
 3 files changed, 109 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index 5ae37caeb361..eea07ac9642f 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -27,6 +27,17 @@ static int sev_fd;
 
 #define SEV_FW_MAX_ERROR      0x17
 
+static SevGuestState current_sev_guest_state = SEV_STATE_UNINIT;
+
+static char sev_state_str[SEV_STATE_MAX][10] = {
+    "uninit",
+    "lupdate",
+    "secret",
+    "running",
+    "supdate",
+    "rupdate",
+};
+
 static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
     "",
     "Platform state is invalid",
@@ -85,6 +96,16 @@ fw_error_to_str(int code)
 }
 
 static void
+sev_set_guest_state(SevGuestState new_state)
+{
+    assert(new_state < SEV_STATE_MAX);
+
+    trace_kvm_sev_change_state(sev_state_str[current_sev_guest_state],
+                               sev_state_str[new_state]);
+    current_sev_guest_state = new_state;
+}
+
+static void
 sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size)
 {
     int r;
@@ -291,6 +312,76 @@ lookup_sev_guest_info(const char *id)
     return info;
 }
 
+static int
+sev_read_file_base64(const char *filename, guchar **data, gsize *len)
+{
+    gsize sz;
+    gchar *base64;
+    GError *error = NULL;
+
+    if (!g_file_get_contents(filename, &base64, &sz, &error)) {
+        error_report("failed to read '%s' (%s)", filename, error->message);
+        return -1;
+    }
+
+    *data = g_base64_decode(base64, len);
+    return 0;
+}
+
+static int
+sev_launch_start(SEVState *s)
+{
+    gsize sz;
+    int ret = 1;
+    int fw_error;
+    QSevGuestInfo *sev = s->sev_info;
+    struct kvm_sev_launch_start *start;
+    guchar *session = NULL, *dh_cert = NULL;
+
+    start = g_malloc0(sizeof(*start));
+    if (!start) {
+        return 1;
+    }
+
+    start->handle = object_property_get_int(OBJECT(sev), "handle",
+                                            &error_abort);
+    start->policy = object_property_get_int(OBJECT(sev), "policy",
+                                            &error_abort);
+    if (sev->session_file) {
+        if (sev_read_file_base64(sev->session_file, &session, &sz) < 0) {
+            return 1;
+        }
+        start->session_uaddr = (unsigned long)session;
+        start->session_len = sz;
+    }
+
+    if (sev->dh_cert_file) {
+        if (sev_read_file_base64(sev->dh_cert_file, &dh_cert, &sz) < 0) {
+            return 1;
+        }
+        start->dh_uaddr = (unsigned long)dh_cert;
+        start->dh_len = sz;
+    }
+
+    trace_kvm_sev_launch_start(start->policy, session, dh_cert);
+    ret = sev_ioctl(KVM_SEV_LAUNCH_START, start, &fw_error);
+    if (ret < 0) {
+        error_report("%s: LAUNCH_START ret=%d fw_error=%d '%s'",
+                __func__, ret, fw_error, fw_error_to_str(fw_error));
+        return 1;
+    }
+
+    object_property_set_int(OBJECT(sev), start->handle, "handle",
+                            &error_abort);
+    sev_set_guest_state(SEV_STATE_LUPDATE);
+
+    g_free(start);
+    g_free(session);
+    g_free(dh_cert);
+
+    return 0;
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -327,6 +418,12 @@ sev_guest_init(const char *id)
         goto err;
     }
 
+    ret = sev_launch_start(s);
+    if (ret) {
+        error_report("%s: failed to create encryption context", __func__);
+        goto err;
+    }
+
     ram_block_notifier_add(&sev_ram_notifier);
 
     return s;
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index 364c84bd7a73..a4ea1c382ec2 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -17,3 +17,5 @@ kvm_irqchip_release_virq(int virq) "virq %d"
 kvm_sev_init(void) ""
 kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
+kvm_sev_change_state(char *old, char *new) "%s -> %s"
+kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 6aec25bc05e5..392b21fafbd3 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -51,6 +51,16 @@ struct QSevGuestInfoClass {
     ObjectClass parent_class;
 };
 
+typedef enum {
+    SEV_STATE_UNINIT = 0,
+    SEV_STATE_LUPDATE,
+    SEV_STATE_SECRET,
+    SEV_STATE_RUNNING,
+    SEV_STATE_SUPDATE,
+    SEV_STATE_RUPDATE,
+    SEV_STATE_MAX
+} SevGuestState;
+
 struct SEVState {
     QSevGuestInfo *sev_info;
 };
-- 
2.9.5

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

* [PATCH v6 15/23] sev: add command to encrypt guest memory region
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

The KVM_SEV_LAUNCH_UPDATE_DATA command is used to encrypt a guest memory
region using the VM Encryption Key created using LAUNCH_START.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    |  2 ++
 accel/kvm/sev.c        | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 include/sysemu/sev.h   |  1 +
 4 files changed, 53 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 54a0fd6097fb..d35eebb97901 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1675,6 +1675,8 @@ static int kvm_init(MachineState *ms)
         if (!kvm_state->memcrypt_handle) {
             goto err;
         }
+
+        kvm_state->memcrypt_encrypt_data = sev_encrypt_data;
     }
 
     ret = kvm_arch_init(ms, s);
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index eea07ac9642f..1f757df725df 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -95,6 +95,12 @@ fw_error_to_str(int code)
     return sev_fw_errlist[code];
 }
 
+static bool
+sev_check_state(SevGuestState state)
+{
+    return current_sev_guest_state == state ? true : false;
+}
+
 static void
 sev_set_guest_state(SevGuestState new_state)
 {
@@ -382,6 +388,36 @@ sev_launch_start(SEVState *s)
     return 0;
 }
 
+static int
+sev_launch_update_data(uint8_t *addr, uint64_t len)
+{
+    int ret, fw_error;
+    struct kvm_sev_launch_update_data *update;
+
+    if (addr == NULL || len <= 0) {
+        return 1;
+    }
+
+    update = g_malloc0(sizeof(*update));
+    if (!update) {
+        return 1;
+    }
+
+    update->uaddr = (__u64)addr;
+    update->len = len;
+    trace_kvm_sev_launch_update_data(addr, len);
+    ret = sev_ioctl(KVM_SEV_LAUNCH_UPDATE_DATA, update, &fw_error);
+    if (ret) {
+        error_report("%s: LAUNCH_UPDATE ret=%d fw_error=%d '%s'",
+                __func__, ret, fw_error, fw_error_to_str(fw_error));
+        goto err;
+    }
+
+err:
+    g_free(update);
+    return ret;
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -432,6 +468,19 @@ err:
     return NULL;
 }
 
+int
+sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len)
+{
+    assert (handle);
+
+    /* if SEV is in update state then encrypt the data else do nothing */
+    if (sev_check_state(SEV_STATE_LUPDATE)) {
+        return sev_launch_update_data(ptr, len);
+    }
+
+    return 0;
+}
+
 static void
 sev_register_types(void)
 {
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index a4ea1c382ec2..c55546f36a25 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -19,3 +19,4 @@ kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_sev_change_state(char *old, char *new) "%s -> %s"
 kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
+kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 392b21fafbd3..839800efdbbf 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -68,6 +68,7 @@ struct SEVState {
 typedef struct SEVState SEVState;
 
 void *sev_guest_init(const char *id);
+int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len);
 
 #endif
 
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 15/23] sev: add command to encrypt guest memory region
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

The KVM_SEV_LAUNCH_UPDATE_DATA command is used to encrypt a guest memory
region using the VM Encryption Key created using LAUNCH_START.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    |  2 ++
 accel/kvm/sev.c        | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 include/sysemu/sev.h   |  1 +
 4 files changed, 53 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 54a0fd6097fb..d35eebb97901 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1675,6 +1675,8 @@ static int kvm_init(MachineState *ms)
         if (!kvm_state->memcrypt_handle) {
             goto err;
         }
+
+        kvm_state->memcrypt_encrypt_data = sev_encrypt_data;
     }
 
     ret = kvm_arch_init(ms, s);
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index eea07ac9642f..1f757df725df 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -95,6 +95,12 @@ fw_error_to_str(int code)
     return sev_fw_errlist[code];
 }
 
+static bool
+sev_check_state(SevGuestState state)
+{
+    return current_sev_guest_state == state ? true : false;
+}
+
 static void
 sev_set_guest_state(SevGuestState new_state)
 {
@@ -382,6 +388,36 @@ sev_launch_start(SEVState *s)
     return 0;
 }
 
+static int
+sev_launch_update_data(uint8_t *addr, uint64_t len)
+{
+    int ret, fw_error;
+    struct kvm_sev_launch_update_data *update;
+
+    if (addr == NULL || len <= 0) {
+        return 1;
+    }
+
+    update = g_malloc0(sizeof(*update));
+    if (!update) {
+        return 1;
+    }
+
+    update->uaddr = (__u64)addr;
+    update->len = len;
+    trace_kvm_sev_launch_update_data(addr, len);
+    ret = sev_ioctl(KVM_SEV_LAUNCH_UPDATE_DATA, update, &fw_error);
+    if (ret) {
+        error_report("%s: LAUNCH_UPDATE ret=%d fw_error=%d '%s'",
+                __func__, ret, fw_error, fw_error_to_str(fw_error));
+        goto err;
+    }
+
+err:
+    g_free(update);
+    return ret;
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -432,6 +468,19 @@ err:
     return NULL;
 }
 
+int
+sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len)
+{
+    assert (handle);
+
+    /* if SEV is in update state then encrypt the data else do nothing */
+    if (sev_check_state(SEV_STATE_LUPDATE)) {
+        return sev_launch_update_data(ptr, len);
+    }
+
+    return 0;
+}
+
 static void
 sev_register_types(void)
 {
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index a4ea1c382ec2..c55546f36a25 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -19,3 +19,4 @@ kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_sev_change_state(char *old, char *new) "%s -> %s"
 kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
+kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 392b21fafbd3..839800efdbbf 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -68,6 +68,7 @@ struct SEVState {
 typedef struct SEVState SEVState;
 
 void *sev_guest_init(const char *id);
+int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len);
 
 #endif
 
-- 
2.9.5

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

* [PATCH v6 16/23] target/i386: encrypt bios rom
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

SEV requires that guest bios must be encrypted before booting the guest.

Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hw/i386/pc_sysfw.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index 6b183747fcea..8ddbbf74d330 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -112,6 +112,8 @@ static void pc_system_flash_init(MemoryRegion *rom_memory)
     pflash_t *system_flash;
     MemoryRegion *flash_mem;
     char name[64];
+    void *flash_ptr;
+    int ret, flash_size;
 
     sector_bits = 12;
     sector_size = 1 << sector_bits;
@@ -168,6 +170,17 @@ static void pc_system_flash_init(MemoryRegion *rom_memory)
         if (unit == 0) {
             flash_mem = pflash_cfi01_get_memory(system_flash);
             pc_isa_bios_init(rom_memory, flash_mem, size);
+
+            /* Encrypt the pflash boot ROM */
+            if (kvm_memcrypt_enabled()) {
+                flash_ptr = memory_region_get_ram_ptr(flash_mem);
+                flash_size = memory_region_size(flash_mem);
+                ret = kvm_memcrypt_encrypt_data(flash_ptr, flash_size);
+                if (ret) {
+                    error_report("failed to encrypt pflash rom");
+                    exit(1);
+                }
+            }
         }
     }
 }
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 16/23] target/i386: encrypt bios rom
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

SEV requires that guest bios must be encrypted before booting the guest.

Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hw/i386/pc_sysfw.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index 6b183747fcea..8ddbbf74d330 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -112,6 +112,8 @@ static void pc_system_flash_init(MemoryRegion *rom_memory)
     pflash_t *system_flash;
     MemoryRegion *flash_mem;
     char name[64];
+    void *flash_ptr;
+    int ret, flash_size;
 
     sector_bits = 12;
     sector_size = 1 << sector_bits;
@@ -168,6 +170,17 @@ static void pc_system_flash_init(MemoryRegion *rom_memory)
         if (unit == 0) {
             flash_mem = pflash_cfi01_get_memory(system_flash);
             pc_isa_bios_init(rom_memory, flash_mem, size);
+
+            /* Encrypt the pflash boot ROM */
+            if (kvm_memcrypt_enabled()) {
+                flash_ptr = memory_region_get_ram_ptr(flash_mem);
+                flash_size = memory_region_size(flash_mem);
+                ret = kvm_memcrypt_encrypt_data(flash_ptr, flash_size);
+                if (ret) {
+                    error_report("failed to encrypt pflash rom");
+                    exit(1);
+                }
+            }
         }
     }
 }
-- 
2.9.5

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

* [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Markus Armbruster

Add SEV_MEASUREMENT event which can be used by libvirt to get the
measurement of the memory regions encrypted through the SEV launch
flow. The measurement value is base64 encoded.

Cc: Daniel P. Berrange <berrange@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 qapi-schema.json | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/qapi-schema.json b/qapi-schema.json
index 2046c96669bf..e1f5d14e2e3f 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3192,3 +3192,16 @@
 # Since: 2.11
 ##
 { 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} }
+
+##
+# @SEV_MEASUREMENT:
+#
+# Emitted when measurement is available for the SEV guest.
+#
+# @value: measurement value encoded in base64
+#
+# Since: 2.12
+#
+##
+{ 'event' : 'SEV_MEASUREMENT',
+  'data' : { 'value' : 'str' } }
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Markus Armbruster

Add SEV_MEASUREMENT event which can be used by libvirt to get the
measurement of the memory regions encrypted through the SEV launch
flow. The measurement value is base64 encoded.

Cc: Daniel P. Berrange <berrange@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 qapi-schema.json | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/qapi-schema.json b/qapi-schema.json
index 2046c96669bf..e1f5d14e2e3f 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3192,3 +3192,16 @@
 # Since: 2.11
 ##
 { 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} }
+
+##
+# @SEV_MEASUREMENT:
+#
+# Emitted when measurement is available for the SEV guest.
+#
+# @value: measurement value encoded in base64
+#
+# Since: 2.12
+#
+##
+{ 'event' : 'SEV_MEASUREMENT',
+  'data' : { 'value' : 'str' } }
-- 
2.9.5

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

* [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

During machine creation we encrypted the guest bios image, the
LAUNCH_MEASURE command can be used to retrieve the measurement of
the encrypted memory region. Emit the SEV_MEASUREMENT event so that
libvirt can grab the measurement value as soon as we are done with
creating the encrypted machine.

Cc: Daniel P. Berrange <berrange@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 include/sysemu/sev.h   |  1 +
 3 files changed, 60 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index 1f757df725df..b78cf3144b1d 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -19,11 +19,13 @@
 #include "sysemu/sev.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
+#include "qapi-event.h"
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
 
 static int sev_fd;
+static SEVState *sev_state;
 
 #define SEV_FW_MAX_ERROR      0x17
 
@@ -418,6 +420,59 @@ err:
     return ret;
 }
 
+static void
+sev_launch_get_measure(Notifier *notifier, void *unused)
+{
+    int ret, error;
+    guchar *data;
+    SEVState *s = sev_state;
+    struct kvm_sev_launch_measure *measurement;
+
+    measurement = g_malloc0(sizeof(*measurement));
+    if (!measurement) {
+        return;
+    }
+
+    /* query the measurement blob length */
+    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
+    if (!measurement->len) {
+        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
+                     __func__, ret, error, fw_error_to_str(errno));
+        goto free_measurement;
+    }
+
+    data = g_malloc(measurement->len);
+    if (s->measurement) {
+        goto free_data;
+    }
+
+    measurement->uaddr = (unsigned long)data;
+
+    /* get the measurement blob */
+    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
+    if (ret) {
+        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
+                     __func__, ret, error, fw_error_to_str(errno));
+        goto free_data;
+    }
+
+    sev_set_guest_state(SEV_STATE_SECRET);
+
+    /* encode the measurement value and emit the event */
+    s->measurement = g_base64_encode(data, measurement->len);
+    trace_kvm_sev_launch_measurement(s->measurement);
+    qapi_event_send_sev_measurement(s->measurement, &error_abort);
+
+free_data:
+    g_free(data);
+free_measurement:
+    g_free(measurement);
+}
+
+static Notifier sev_machine_done_notify = {
+    .notify = sev_launch_get_measure,
+};
+
 void *
 sev_guest_init(const char *id)
 {
@@ -461,6 +516,9 @@ sev_guest_init(const char *id)
     }
 
     ram_block_notifier_add(&sev_ram_notifier);
+    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
+
+    sev_state = s;
 
     return s;
 err:
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index c55546f36a25..51df5113ad07 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_sev_change_state(char *old, char *new) "%s -> %s"
 kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
 kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
+kvm_sev_launch_measurement(const char *value) "data %s"
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 839800efdbbf..572120c865ea 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -63,6 +63,7 @@ typedef enum {
 
 struct SEVState {
     QSevGuestInfo *sev_info;
+    gchar *measurement;
 };
 
 typedef struct SEVState SEVState;
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

During machine creation we encrypted the guest bios image, the
LAUNCH_MEASURE command can be used to retrieve the measurement of
the encrypted memory region. Emit the SEV_MEASUREMENT event so that
libvirt can grab the measurement value as soon as we are done with
creating the encrypted machine.

Cc: Daniel P. Berrange <berrange@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 include/sysemu/sev.h   |  1 +
 3 files changed, 60 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index 1f757df725df..b78cf3144b1d 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -19,11 +19,13 @@
 #include "sysemu/sev.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
+#include "qapi-event.h"
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
 
 static int sev_fd;
+static SEVState *sev_state;
 
 #define SEV_FW_MAX_ERROR      0x17
 
@@ -418,6 +420,59 @@ err:
     return ret;
 }
 
+static void
+sev_launch_get_measure(Notifier *notifier, void *unused)
+{
+    int ret, error;
+    guchar *data;
+    SEVState *s = sev_state;
+    struct kvm_sev_launch_measure *measurement;
+
+    measurement = g_malloc0(sizeof(*measurement));
+    if (!measurement) {
+        return;
+    }
+
+    /* query the measurement blob length */
+    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
+    if (!measurement->len) {
+        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
+                     __func__, ret, error, fw_error_to_str(errno));
+        goto free_measurement;
+    }
+
+    data = g_malloc(measurement->len);
+    if (s->measurement) {
+        goto free_data;
+    }
+
+    measurement->uaddr = (unsigned long)data;
+
+    /* get the measurement blob */
+    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
+    if (ret) {
+        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
+                     __func__, ret, error, fw_error_to_str(errno));
+        goto free_data;
+    }
+
+    sev_set_guest_state(SEV_STATE_SECRET);
+
+    /* encode the measurement value and emit the event */
+    s->measurement = g_base64_encode(data, measurement->len);
+    trace_kvm_sev_launch_measurement(s->measurement);
+    qapi_event_send_sev_measurement(s->measurement, &error_abort);
+
+free_data:
+    g_free(data);
+free_measurement:
+    g_free(measurement);
+}
+
+static Notifier sev_machine_done_notify = {
+    .notify = sev_launch_get_measure,
+};
+
 void *
 sev_guest_init(const char *id)
 {
@@ -461,6 +516,9 @@ sev_guest_init(const char *id)
     }
 
     ram_block_notifier_add(&sev_ram_notifier);
+    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
+
+    sev_state = s;
 
     return s;
 err:
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index c55546f36a25..51df5113ad07 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
 kvm_sev_change_state(char *old, char *new) "%s -> %s"
 kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
 kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
+kvm_sev_launch_measurement(const char *value) "data %s"
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 839800efdbbf..572120c865ea 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -63,6 +63,7 @@ typedef enum {
 
 struct SEVState {
     QSevGuestInfo *sev_info;
+    gchar *measurement;
 };
 
 typedef struct SEVState SEVState;
-- 
2.9.5

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

* [PATCH v6 19/23] sev: Finalize the SEV guest launch flow
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

SEV launch flow requires us to issue LAUNCH_FINISH command before guest
is ready to run.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 29 +++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 2 files changed, 30 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index b78cf3144b1d..c227d7591c38 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -473,6 +473,34 @@ static Notifier sev_machine_done_notify = {
     .notify = sev_launch_get_measure,
 };
 
+static void
+sev_launch_finish(SEVState *s)
+{
+    int ret, error;
+
+    trace_kvm_sev_launch_finish();
+    ret = sev_ioctl(KVM_SEV_LAUNCH_FINISH, 0, &error);
+    if (ret) {
+        error_report("%s: LAUNCH_FINISH ret=%d fw_error=%d '%s'",
+                     __func__, ret, error, fw_error_to_str(error));
+        exit(1);
+    }
+
+    sev_set_guest_state(SEV_STATE_RUNNING);
+}
+
+static void
+sev_vm_state_change(void *opaque, int running, RunState state)
+{
+    SEVState *s = opaque;
+
+    if (running) {
+        if (!sev_check_state(SEV_STATE_RUNNING)) {
+            sev_launch_finish(s);
+        }
+    }
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -517,6 +545,7 @@ sev_guest_init(const char *id)
 
     ram_block_notifier_add(&sev_ram_notifier);
     qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
+    qemu_add_vm_change_state_handler(sev_vm_state_change, s);
 
     sev_state = s;
 
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index 51df5113ad07..05038709acfc 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -21,3 +21,4 @@ kvm_sev_change_state(char *old, char *new) "%s -> %s"
 kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
 kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
 kvm_sev_launch_measurement(const char *value) "data %s"
+kvm_sev_launch_finish(void) ""
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 19/23] sev: Finalize the SEV guest launch flow
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

SEV launch flow requires us to issue LAUNCH_FINISH command before guest
is ready to run.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/sev.c        | 29 +++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 2 files changed, 30 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index b78cf3144b1d..c227d7591c38 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -473,6 +473,34 @@ static Notifier sev_machine_done_notify = {
     .notify = sev_launch_get_measure,
 };
 
+static void
+sev_launch_finish(SEVState *s)
+{
+    int ret, error;
+
+    trace_kvm_sev_launch_finish();
+    ret = sev_ioctl(KVM_SEV_LAUNCH_FINISH, 0, &error);
+    if (ret) {
+        error_report("%s: LAUNCH_FINISH ret=%d fw_error=%d '%s'",
+                     __func__, ret, error, fw_error_to_str(error));
+        exit(1);
+    }
+
+    sev_set_guest_state(SEV_STATE_RUNNING);
+}
+
+static void
+sev_vm_state_change(void *opaque, int running, RunState state)
+{
+    SEVState *s = opaque;
+
+    if (running) {
+        if (!sev_check_state(SEV_STATE_RUNNING)) {
+            sev_launch_finish(s);
+        }
+    }
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -517,6 +545,7 @@ sev_guest_init(const char *id)
 
     ram_block_notifier_add(&sev_ram_notifier);
     qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
+    qemu_add_vm_change_state_handler(sev_vm_state_change, s);
 
     sev_state = s;
 
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index 51df5113ad07..05038709acfc 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -21,3 +21,4 @@ kvm_sev_change_state(char *old, char *new) "%s -> %s"
 kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
 kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
 kvm_sev_launch_measurement(const char *value) "data %s"
+kvm_sev_launch_finish(void) ""
-- 
2.9.5

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

* [PATCH v6 20/23] hw: i386: set ram_debug_ops when memory encryption is enabled
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

When memory encryption is enabled, the guest RAM and boot flash ROM will
contain the encrypted data. By setting the debug ops allow us to invoke
encryption APIs when accessing the memory for the debug purposes.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hw/i386/pc.c       | 9 +++++++++
 hw/i386/pc_sysfw.c | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index ccc50baa85e0..ba451c0dc520 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1357,6 +1357,15 @@ void pc_memory_init(PCMachineState *pcms,
         e820_add_entry(0x100000000ULL, pcms->above_4g_mem_size, E820_RAM);
     }
 
+    /*
+     * When memory encryption is enabled, the guest RAM will be encrypted with
+     * a guest unique key. Set the debug ops so that any debug access to the
+     * guest RAM will go through the memory encryption APIs.
+     */
+    if (kvm_memcrypt_enabled()) {
+        kvm_memcrypt_set_debug_ops(ram);
+    }
+
     if (!pcmc->has_reserved_memory &&
         (machine->ram_slots ||
          (machine->maxram_size > machine->ram_size))) {
diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index 8ddbbf74d330..3d149b1c9f3c 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -180,6 +180,12 @@ static void pc_system_flash_init(MemoryRegion *rom_memory)
                     error_report("failed to encrypt pflash rom");
                     exit(1);
                 }
+
+                /*
+                 * The pflash ROM is encrypted, set the debug ops so that any
+                 * debug accesses will use memory encryption APIs.
+                 */
+                kvm_memcrypt_set_debug_ops(flash_mem);
             }
         }
     }
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 20/23] hw: i386: set ram_debug_ops when memory encryption is enabled
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

When memory encryption is enabled, the guest RAM and boot flash ROM will
contain the encrypted data. By setting the debug ops allow us to invoke
encryption APIs when accessing the memory for the debug purposes.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 hw/i386/pc.c       | 9 +++++++++
 hw/i386/pc_sysfw.c | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index ccc50baa85e0..ba451c0dc520 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1357,6 +1357,15 @@ void pc_memory_init(PCMachineState *pcms,
         e820_add_entry(0x100000000ULL, pcms->above_4g_mem_size, E820_RAM);
     }
 
+    /*
+     * When memory encryption is enabled, the guest RAM will be encrypted with
+     * a guest unique key. Set the debug ops so that any debug access to the
+     * guest RAM will go through the memory encryption APIs.
+     */
+    if (kvm_memcrypt_enabled()) {
+        kvm_memcrypt_set_debug_ops(ram);
+    }
+
     if (!pcmc->has_reserved_memory &&
         (machine->ram_slots ||
          (machine->maxram_size > machine->ram_size))) {
diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index 8ddbbf74d330..3d149b1c9f3c 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -180,6 +180,12 @@ static void pc_system_flash_init(MemoryRegion *rom_memory)
                     error_report("failed to encrypt pflash rom");
                     exit(1);
                 }
+
+                /*
+                 * The pflash ROM is encrypted, set the debug ops so that any
+                 * debug accesses will use memory encryption APIs.
+                 */
+                kvm_memcrypt_set_debug_ops(flash_mem);
             }
         }
     }
-- 
2.9.5

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

* [PATCH v6 21/23] sev: add debug encrypt and decrypt commands
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

KVM_SEV_DBG_DECRYPT and KVM_SEV_DBG_ENCRYPT commands are used for
decrypting and encrypting guest memory region. The command works only if
the guest policy allows the debugging.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    |  1 +
 accel/kvm/sev.c        | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 include/sysemu/sev.h   |  1 +
 4 files changed, 74 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index d35eebb97901..b069261de32a 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1677,6 +1677,7 @@ static int kvm_init(MachineState *ms)
         }
 
         kvm_state->memcrypt_encrypt_data = sev_encrypt_data;
+        kvm_state->memcrypt_debug_ops = sev_set_debug_ops;
     }
 
     ret = kvm_arch_init(ms, s);
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index c227d7591c38..65d34c531ee5 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -23,9 +23,11 @@
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
+#define GUEST_POLICY_DBG_BIT    0x1
 
 static int sev_fd;
 static SEVState *sev_state;
+static MemoryRegionRAMReadWriteOps  sev_ops;
 
 #define SEV_FW_MAX_ERROR      0x17
 
@@ -501,6 +503,50 @@ sev_vm_state_change(void *opaque, int running, RunState state)
     }
 }
 
+static int
+sev_dbg_enc_dec(uint8_t *dst, const uint8_t *src, uint32_t len, bool write)
+{
+    int ret, error;
+    struct kvm_sev_dbg *dbg;
+    dbg = g_malloc0(sizeof(*dbg));
+    if (!dbg) {
+        return 1;
+    }
+
+    dbg->src_uaddr = (unsigned long)src;
+    dbg->dst_uaddr = (unsigned long)dst;
+    dbg->len = len;
+
+    trace_kvm_sev_debug(write ? "encrypt" : "decrypt", src, dst, len);
+    ret = sev_ioctl(write ? KVM_SEV_DBG_ENCRYPT : KVM_SEV_DBG_DECRYPT,
+                    dbg, &error);
+    if (ret) {
+        error_report("%s (%s) %#llx->%#llx+%#x ret=%d fw_error=%d '%s'",
+                     __func__, write ? "write" : "read", dbg->src_uaddr,
+                     dbg->dst_uaddr, dbg->len, ret, error,
+                     fw_error_to_str(error));
+    }
+
+    g_free(dbg);
+    return ret;
+}
+
+static int
+sev_mem_read(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs attrs)
+{
+    assert(attrs.debug);
+
+    return sev_dbg_enc_dec(dst, src, len, false);
+}
+
+static int
+sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs attrs)
+{
+    assert(attrs.debug);
+
+    return sev_dbg_enc_dec(dst, src, len, true);
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -568,6 +614,31 @@ sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len)
     return 0;
 }
 
+void
+sev_set_debug_ops(void *handle, MemoryRegion *mr)
+{
+    int policy;
+    SEVState *s = (SEVState *)handle;
+
+    policy = object_property_get_int(OBJECT(s->sev_info),
+                                     "policy", &error_abort);
+
+    /*
+     * Check if guest policy supports debugging
+     * Bit 0 :
+     *   0 - debug allowed
+     *   1 - debug is not allowed
+     */
+    if (policy & GUEST_POLICY_DBG_BIT) {
+        return;
+    }
+
+    sev_ops.read = sev_mem_read;
+    sev_ops.write = sev_mem_write;
+
+    memory_region_set_ram_debug_ops(mr, &sev_ops);
+}
+
 static void
 sev_register_types(void)
 {
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index 05038709acfc..cdb244a3071a 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -22,3 +22,4 @@ kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session
 kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
 kvm_sev_launch_measurement(const char *value) "data %s"
 kvm_sev_launch_finish(void) ""
+kvm_sev_debug(const char *op, const uint8_t *src, uint8_t *dst, int len) "(%s) src %p dst %p len %d"
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 572120c865ea..82cd73fe58e8 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -70,6 +70,7 @@ typedef struct SEVState SEVState;
 
 void *sev_guest_init(const char *id);
 int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len);
+void sev_set_debug_ops(void *handle, MemoryRegion *mr);
 
 #endif
 
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 21/23] sev: add debug encrypt and decrypt commands
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

KVM_SEV_DBG_DECRYPT and KVM_SEV_DBG_ENCRYPT commands are used for
decrypting and encrypting guest memory region. The command works only if
the guest policy allows the debugging.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 accel/kvm/kvm-all.c    |  1 +
 accel/kvm/sev.c        | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++
 accel/kvm/trace-events |  1 +
 include/sysemu/sev.h   |  1 +
 4 files changed, 74 insertions(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index d35eebb97901..b069261de32a 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1677,6 +1677,7 @@ static int kvm_init(MachineState *ms)
         }
 
         kvm_state->memcrypt_encrypt_data = sev_encrypt_data;
+        kvm_state->memcrypt_debug_ops = sev_set_debug_ops;
     }
 
     ret = kvm_arch_init(ms, s);
diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index c227d7591c38..65d34c531ee5 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -23,9 +23,11 @@
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
+#define GUEST_POLICY_DBG_BIT    0x1
 
 static int sev_fd;
 static SEVState *sev_state;
+static MemoryRegionRAMReadWriteOps  sev_ops;
 
 #define SEV_FW_MAX_ERROR      0x17
 
@@ -501,6 +503,50 @@ sev_vm_state_change(void *opaque, int running, RunState state)
     }
 }
 
+static int
+sev_dbg_enc_dec(uint8_t *dst, const uint8_t *src, uint32_t len, bool write)
+{
+    int ret, error;
+    struct kvm_sev_dbg *dbg;
+    dbg = g_malloc0(sizeof(*dbg));
+    if (!dbg) {
+        return 1;
+    }
+
+    dbg->src_uaddr = (unsigned long)src;
+    dbg->dst_uaddr = (unsigned long)dst;
+    dbg->len = len;
+
+    trace_kvm_sev_debug(write ? "encrypt" : "decrypt", src, dst, len);
+    ret = sev_ioctl(write ? KVM_SEV_DBG_ENCRYPT : KVM_SEV_DBG_DECRYPT,
+                    dbg, &error);
+    if (ret) {
+        error_report("%s (%s) %#llx->%#llx+%#x ret=%d fw_error=%d '%s'",
+                     __func__, write ? "write" : "read", dbg->src_uaddr,
+                     dbg->dst_uaddr, dbg->len, ret, error,
+                     fw_error_to_str(error));
+    }
+
+    g_free(dbg);
+    return ret;
+}
+
+static int
+sev_mem_read(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs attrs)
+{
+    assert(attrs.debug);
+
+    return sev_dbg_enc_dec(dst, src, len, false);
+}
+
+static int
+sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs attrs)
+{
+    assert(attrs.debug);
+
+    return sev_dbg_enc_dec(dst, src, len, true);
+}
+
 void *
 sev_guest_init(const char *id)
 {
@@ -568,6 +614,31 @@ sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len)
     return 0;
 }
 
+void
+sev_set_debug_ops(void *handle, MemoryRegion *mr)
+{
+    int policy;
+    SEVState *s = (SEVState *)handle;
+
+    policy = object_property_get_int(OBJECT(s->sev_info),
+                                     "policy", &error_abort);
+
+    /*
+     * Check if guest policy supports debugging
+     * Bit 0 :
+     *   0 - debug allowed
+     *   1 - debug is not allowed
+     */
+    if (policy & GUEST_POLICY_DBG_BIT) {
+        return;
+    }
+
+    sev_ops.read = sev_mem_read;
+    sev_ops.write = sev_mem_write;
+
+    memory_region_set_ram_debug_ops(mr, &sev_ops);
+}
+
 static void
 sev_register_types(void)
 {
diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
index 05038709acfc..cdb244a3071a 100644
--- a/accel/kvm/trace-events
+++ b/accel/kvm/trace-events
@@ -22,3 +22,4 @@ kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session
 kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
 kvm_sev_launch_measurement(const char *value) "data %s"
 kvm_sev_launch_finish(void) ""
+kvm_sev_debug(const char *op, const uint8_t *src, uint8_t *dst, int len) "(%s) src %p dst %p len %d"
diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
index 572120c865ea..82cd73fe58e8 100644
--- a/include/sysemu/sev.h
+++ b/include/sysemu/sev.h
@@ -70,6 +70,7 @@ typedef struct SEVState SEVState;
 
 void *sev_guest_init(const char *id);
 int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len);
+void sev_set_debug_ops(void *handle, MemoryRegion *mr);
 
 #endif
 
-- 
2.9.5

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

* [PATCH v6 22/23] target/i386: clear C-bit when walking SEV guest page table
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

In SEV-enabled guest the pte entry will have C-bit set, we need to
clear the C-bit when walking the page table. The C-bit position should
be available in cpuid Fn8000_001f[EBX]

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 target/i386/helper.c  | 46 +++++++++++++++++++--------
 target/i386/monitor.c | 86 ++++++++++++++++++++++++++++++++++++---------------
 2 files changed, 94 insertions(+), 38 deletions(-)

diff --git a/target/i386/helper.c b/target/i386/helper.c
index 5dc9e8839bc8..7dbbb9812950 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -723,6 +723,22 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
 }
 
 #if !defined(CONFIG_USER_ONLY)
+static uint64_t get_me_mask(void)
+{
+    uint64_t me_mask = 0;
+
+    /*
+     * When SEV is active, Fn8000_001F[EBX] Bit 0:5 contains the C-bit position
+     */
+    if (kvm_memcrypt_enabled()) {
+        uint32_t pos;
+        pos = kvm_arch_get_supported_cpuid(kvm_state, 0x8000001f, 0, R_EBX);
+        me_mask = (1UL << (pos & 0x3f));
+    }
+
+    return ~me_mask;
+}
+
 hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 {
     X86CPU *cpu = X86_CPU(cs);
@@ -732,6 +748,9 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
     int32_t a20_mask;
     uint32_t page_offset;
     int page_size;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
     a20_mask = x86_get_a20_mask(env);
     if (!(env->cr[0] & CR0_PG_MASK)) {
@@ -755,25 +774,25 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             }
 
             if (la57) {
-                pml5e_addr = ((env->cr[3] & ~0xfff) +
+                pml5e_addr = ((env->cr[3] & ~0xfff & me_mask) +
                         (((addr >> 48) & 0x1ff) << 3)) & a20_mask;
-                pml5e = ldq_phys_debug(cs, pml5e_addr);
+                pml5e = ldq_phys_debug(cs, pml5e_addr) & me_mask;
                 if (!(pml5e & PG_PRESENT_MASK)) {
                     return -1;
                 }
             } else {
-                pml5e = env->cr[3];
+                pml5e = env->cr[3] & me_mask;
             }
 
             pml4e_addr = ((pml5e & PG_ADDRESS_MASK) +
                     (((addr >> 39) & 0x1ff) << 3)) & a20_mask;
-            pml4e = ldq_phys_debug(cs, pml4e_addr);
+            pml4e = ldq_phys_debug(cs, pml4e_addr) & me_mask;
             if (!(pml4e & PG_PRESENT_MASK)) {
                 return -1;
             }
             pdpe_addr = ((pml4e & PG_ADDRESS_MASK) +
                          (((addr >> 30) & 0x1ff) << 3)) & a20_mask;
-            pdpe = x86_ldq_phys(cs, pdpe_addr);
+            pdpe = ldq_phys_debug(cs, pdpe_addr) & me_mask;
             if (!(pdpe & PG_PRESENT_MASK)) {
                 return -1;
             }
@@ -786,16 +805,16 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         } else
 #endif
         {
-            pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) &
-                a20_mask;
-            pdpe = ldq_phys_debug(cs, pdpe_addr);
+            pdpe_addr = ((env->cr[3] & ~0x1f & me_mask) + ((addr >> 27) & 0x18))
+                          & a20_mask;
+            pdpe = ldq_phys_debug(cs, pdpe_addr) & me_mask;
             if (!(pdpe & PG_PRESENT_MASK))
                 return -1;
         }
 
         pde_addr = ((pdpe & PG_ADDRESS_MASK) +
                     (((addr >> 21) & 0x1ff) << 3)) & a20_mask;
-        pde = ldq_phys_debug(cs, pde_addr);
+        pde = ldq_phys_debug(cs, pde_addr) & me_mask;
         if (!(pde & PG_PRESENT_MASK)) {
             return -1;
         }
@@ -808,7 +827,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             pte_addr = ((pde & PG_ADDRESS_MASK) +
                         (((addr >> 12) & 0x1ff) << 3)) & a20_mask;
             page_size = 4096;
-            pte = ldq_phys_debug(cs, pte_addr);
+            pte = ldq_phys_debug(cs, pte_addr) & me_mask;
         }
         if (!(pte & PG_PRESENT_MASK)) {
             return -1;
@@ -817,8 +836,9 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         uint32_t pde;
 
         /* page directory entry */
-        pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & a20_mask;
-        pde = ldl_phys_debug(cs, pde_addr);
+        pde_addr = ((env->cr[3] & ~0xfff & me_mask) + ((addr >> 20) & 0xffc))
+                     & a20_mask;
+        pde = ldl_phys_debug(cs, pde_addr) & me_mask;
         if (!(pde & PG_PRESENT_MASK))
             return -1;
         if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) {
@@ -827,7 +847,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         } else {
             /* page directory entry */
             pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & a20_mask;
-            pte = ldl_phys_debug(cs, pte_addr);
+            pte = ldl_phys_debug(cs, pte_addr) & me_mask;
             if (!(pte & PG_PRESENT_MASK)) {
                 return -1;
             }
diff --git a/target/i386/monitor.c b/target/i386/monitor.c
index 96890547f6b4..0b290f004a21 100644
--- a/target/i386/monitor.c
+++ b/target/i386/monitor.c
@@ -59,6 +59,22 @@ static void print_pte(Monitor *mon, CPUArchState *env, hwaddr addr,
                    pte & PG_RW_MASK ? 'W' : '-');
 }
 
+static uint64_t get_me_mask(void)
+{
+    uint64_t me_mask = 0;
+
+    /*
+     * When SEV is active, Fn8000_001F[EBX] Bit 0:5 contains the C-bit position
+     */
+    if (kvm_memcrypt_enabled()) {
+        uint32_t pos;
+        pos = kvm_arch_get_supported_cpuid(kvm_state, 0x8000001f, 0, R_EBX);
+        me_mask = (1UL << (pos & 0x3f));
+    }
+
+    return ~me_mask;
+}
+
 static void tlb_info_32(Monitor *mon, CPUArchState *env)
 {
     unsigned int l1, l2;
@@ -93,16 +109,20 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
     unsigned int l1, l2, l3;
     uint64_t pdpe, pde, pte;
     uint64_t pdp_addr, pd_addr, pt_addr;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
     pdp_addr = env->cr[3] & ~0x1f;
+    pdp_addr &= me_mask;
     for (l1 = 0; l1 < 4; l1++) {
         cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
-        pdpe = le64_to_cpu(pdpe);
+        pdpe = le64_to_cpu(pdpe & me_mask);
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
-                pde = le64_to_cpu(pde);
+                pde = le64_to_cpu(pde & me_mask);
                 if (pde & PG_PRESENT_MASK) {
                     if (pde & PG_PSE_MASK) {
                         /* 2M pages with PAE, CR4.PSE is ignored */
@@ -113,7 +133,7 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
                         for (l3 = 0; l3 < 512; l3++) {
                             cpu_physical_memory_read_debug(pt_addr + l3 * 8,
                                                            &pte, 8);
-                            pte = le64_to_cpu(pte);
+                            pte = le64_to_cpu(pte & me_mask);
                             if (pte & PG_PRESENT_MASK) {
                                 print_pte(mon, env, (l1 << 30) + (l2 << 21)
                                           + (l3 << 12),
@@ -135,10 +155,13 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
     uint64_t l1, l2, l3, l4;
     uint64_t pml4e, pdpe, pde, pte;
     uint64_t pdp_addr, pd_addr, pt_addr;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
     for (l1 = 0; l1 < 512; l1++) {
         cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
-        pml4e = le64_to_cpu(pml4e);
+        pml4e = le64_to_cpu(pml4e & me_mask);
         if (!(pml4e & PG_PRESENT_MASK)) {
             continue;
         }
@@ -146,7 +169,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
         pdp_addr = pml4e & 0x3fffffffff000ULL;
         for (l2 = 0; l2 < 512; l2++) {
             cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
-            pdpe = le64_to_cpu(pdpe);
+            pdpe = le64_to_cpu(pdpe & me_mask);
             if (!(pdpe & PG_PRESENT_MASK)) {
                 continue;
             }
@@ -161,7 +184,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l3 = 0; l3 < 512; l3++) {
                 cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
-                pde = le64_to_cpu(pde);
+                pde = le64_to_cpu(pde & me_mask);
                 if (!(pde & PG_PRESENT_MASK)) {
                     continue;
                 }
@@ -176,7 +199,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
                 pt_addr = pde & 0x3fffffffff000ULL;
                 for (l4 = 0; l4 < 512; l4++) {
                     cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
-                    pte = le64_to_cpu(pte);
+                    pte = le64_to_cpu(pte & me_mask);
                     if (pte & PG_PRESENT_MASK) {
                         print_pte(mon, env, (l0 << 48) + (l1 << 39) +
                                 (l2 << 30) + (l3 << 21) + (l4 << 12),
@@ -193,11 +216,14 @@ static void tlb_info_la57(Monitor *mon, CPUArchState *env)
     uint64_t l0;
     uint64_t pml5e;
     uint64_t pml5_addr;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
-    pml5_addr = env->cr[3] & 0x3fffffffff000ULL;
+    pml5_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask;
     for (l0 = 0; l0 < 512; l0++) {
         cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
-        pml5e = le64_to_cpu(pml5e);
+        pml5e = le64_to_cpu(pml5e & me_mask);
         if (pml5e & PG_PRESENT_MASK) {
             tlb_info_la48(mon, env, l0, pml5e & 0x3fffffffff000ULL);
         }
@@ -225,7 +251,8 @@ void hmp_info_tlb(Monitor *mon, const QDict *qdict)
             if (env->cr[4] & CR4_LA57_MASK) {
                 tlb_info_la57(mon, env);
             } else {
-                tlb_info_la48(mon, env, 0, env->cr[3] & 0x3fffffffff000ULL);
+                tlb_info_la48(mon, env, 0, env->cr[3] & 0x3fffffffff000ULL &
+                              get_me_mask());
             }
         } else
 #endif
@@ -309,19 +336,22 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
     uint64_t pdpe, pde, pte;
     uint64_t pdp_addr, pd_addr, pt_addr;
     hwaddr start, end;
+    uint64_t me_mask;
 
-    pdp_addr = env->cr[3] & ~0x1f;
+    me_mask = get_me_mask();
+
+    pdp_addr = env->cr[3] & ~0x1f & me_mask;
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 4; l1++) {
         cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
-        pdpe = le64_to_cpu(pdpe);
+        pdpe = le64_to_cpu(pdpe & me_mask);
         end = l1 << 30;
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
-                pde = le64_to_cpu(pde);
+                pde = le64_to_cpu(pde & me_mask);
                 end = (l1 << 30) + (l2 << 21);
                 if (pde & PG_PRESENT_MASK) {
                     if (pde & PG_PSE_MASK) {
@@ -333,7 +363,7 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
                         for (l3 = 0; l3 < 512; l3++) {
                             cpu_physical_memory_read_debug(pt_addr + l3 * 8,
                                                            &pte, 8);
-                            pte = le64_to_cpu(pte);
+                            pte = le64_to_cpu(pte & me_mask);
                             end = (l1 << 30) + (l2 << 21) + (l3 << 12);
                             if (pte & PG_PRESENT_MASK) {
                                 prot = pte & pde & (PG_USER_MASK | PG_RW_MASK |
@@ -366,19 +396,22 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
     uint64_t l1, l2, l3, l4;
     uint64_t pml4e, pdpe, pde, pte;
     uint64_t pml4_addr, pdp_addr, pd_addr, pt_addr, start, end;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
-    pml4_addr = env->cr[3] & 0x3fffffffff000ULL;
+    pml4_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask;
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 512; l1++) {
         cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
-        pml4e = le64_to_cpu(pml4e);
+        pml4e = le64_to_cpu(pml4e & me_mask);
         end = l1 << 39;
         if (pml4e & PG_PRESENT_MASK) {
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
-                pdpe = le64_to_cpu(pdpe);
+                pdpe = le64_to_cpu(pdpe & me_mask);
                 end = (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
                     if (pdpe & PG_PSE_MASK) {
@@ -391,7 +424,7 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                         for (l3 = 0; l3 < 512; l3++) {
                             cpu_physical_memory_read_debug(pd_addr + l3 * 8,
                                                            &pde, 8);
-                            pde = le64_to_cpu(pde);
+                            pde = le64_to_cpu(pde & me_mask);
                             end = (l1 << 39) + (l2 << 30) + (l3 << 21);
                             if (pde & PG_PRESENT_MASK) {
                                 if (pde & PG_PSE_MASK) {
@@ -405,7 +438,7 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                                         cpu_physical_memory_read_debug(pt_addr
                                                                   + l4 * 8,
                                                                   &pte, 8);
-                                        pte = le64_to_cpu(pte);
+                                        pte = le64_to_cpu(pte & me_mask);
                                         end = (l1 << 39) + (l2 << 30) +
                                             (l3 << 21) + (l4 << 12);
                                         if (pte & PG_PRESENT_MASK) {
@@ -444,13 +477,16 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
     uint64_t l0, l1, l2, l3, l4;
     uint64_t pml5e, pml4e, pdpe, pde, pte;
     uint64_t pml5_addr, pml4_addr, pdp_addr, pd_addr, pt_addr, start, end;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
-    pml5_addr = env->cr[3] & 0x3fffffffff000ULL;
+    pml5_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask;
     last_prot = 0;
     start = -1;
     for (l0 = 0; l0 < 512; l0++) {
         cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
-        pml5e = le64_to_cpu(pml5e);
+        pml5e = le64_to_cpu(pml5e & me_mask);
         end = l0 << 48;
         if (!(pml5e & PG_PRESENT_MASK)) {
             prot = 0;
@@ -461,7 +497,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
         pml4_addr = pml5e & 0x3fffffffff000ULL;
         for (l1 = 0; l1 < 512; l1++) {
             cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
-            pml4e = le64_to_cpu(pml4e);
+            pml4e = le64_to_cpu(pml4e & me_mask);
             end = (l0 << 48) + (l1 << 39);
             if (!(pml4e & PG_PRESENT_MASK)) {
                 prot = 0;
@@ -472,7 +508,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
-                pdpe = le64_to_cpu(pdpe);
+                pdpe = le64_to_cpu(pdpe & me_mask);
                 end = (l0 << 48) + (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
                     prot = 0;
@@ -491,7 +527,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
                 pd_addr = pdpe & 0x3fffffffff000ULL;
                 for (l3 = 0; l3 < 512; l3++) {
                     cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
-                    pde = le64_to_cpu(pde);
+                    pde = le64_to_cpu(pde & me_mask);
                     end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21);
                     if (pde & PG_PRESENT_MASK) {
                         prot = 0;
@@ -510,7 +546,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
                     pt_addr = pde & 0x3fffffffff000ULL;
                     for (l4 = 0; l4 < 512; l4++) {
                         cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
-                        pte = le64_to_cpu(pte);
+                        pte = le64_to_cpu(pte & me_mask);
                         end = (l0 << 48) + (l1 << 39) + (l2 << 30) +
                             (l3 << 21) + (l4 << 12);
                         if (pte & PG_PRESENT_MASK) {
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 22/23] target/i386: clear C-bit when walking SEV guest page table
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh, Richard Henderson

In SEV-enabled guest the pte entry will have C-bit set, we need to
clear the C-bit when walking the page table. The C-bit position should
be available in cpuid Fn8000_001f[EBX]

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 target/i386/helper.c  | 46 +++++++++++++++++++--------
 target/i386/monitor.c | 86 ++++++++++++++++++++++++++++++++++++---------------
 2 files changed, 94 insertions(+), 38 deletions(-)

diff --git a/target/i386/helper.c b/target/i386/helper.c
index 5dc9e8839bc8..7dbbb9812950 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -723,6 +723,22 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
 }
 
 #if !defined(CONFIG_USER_ONLY)
+static uint64_t get_me_mask(void)
+{
+    uint64_t me_mask = 0;
+
+    /*
+     * When SEV is active, Fn8000_001F[EBX] Bit 0:5 contains the C-bit position
+     */
+    if (kvm_memcrypt_enabled()) {
+        uint32_t pos;
+        pos = kvm_arch_get_supported_cpuid(kvm_state, 0x8000001f, 0, R_EBX);
+        me_mask = (1UL << (pos & 0x3f));
+    }
+
+    return ~me_mask;
+}
+
 hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 {
     X86CPU *cpu = X86_CPU(cs);
@@ -732,6 +748,9 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
     int32_t a20_mask;
     uint32_t page_offset;
     int page_size;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
     a20_mask = x86_get_a20_mask(env);
     if (!(env->cr[0] & CR0_PG_MASK)) {
@@ -755,25 +774,25 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             }
 
             if (la57) {
-                pml5e_addr = ((env->cr[3] & ~0xfff) +
+                pml5e_addr = ((env->cr[3] & ~0xfff & me_mask) +
                         (((addr >> 48) & 0x1ff) << 3)) & a20_mask;
-                pml5e = ldq_phys_debug(cs, pml5e_addr);
+                pml5e = ldq_phys_debug(cs, pml5e_addr) & me_mask;
                 if (!(pml5e & PG_PRESENT_MASK)) {
                     return -1;
                 }
             } else {
-                pml5e = env->cr[3];
+                pml5e = env->cr[3] & me_mask;
             }
 
             pml4e_addr = ((pml5e & PG_ADDRESS_MASK) +
                     (((addr >> 39) & 0x1ff) << 3)) & a20_mask;
-            pml4e = ldq_phys_debug(cs, pml4e_addr);
+            pml4e = ldq_phys_debug(cs, pml4e_addr) & me_mask;
             if (!(pml4e & PG_PRESENT_MASK)) {
                 return -1;
             }
             pdpe_addr = ((pml4e & PG_ADDRESS_MASK) +
                          (((addr >> 30) & 0x1ff) << 3)) & a20_mask;
-            pdpe = x86_ldq_phys(cs, pdpe_addr);
+            pdpe = ldq_phys_debug(cs, pdpe_addr) & me_mask;
             if (!(pdpe & PG_PRESENT_MASK)) {
                 return -1;
             }
@@ -786,16 +805,16 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         } else
 #endif
         {
-            pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) &
-                a20_mask;
-            pdpe = ldq_phys_debug(cs, pdpe_addr);
+            pdpe_addr = ((env->cr[3] & ~0x1f & me_mask) + ((addr >> 27) & 0x18))
+                          & a20_mask;
+            pdpe = ldq_phys_debug(cs, pdpe_addr) & me_mask;
             if (!(pdpe & PG_PRESENT_MASK))
                 return -1;
         }
 
         pde_addr = ((pdpe & PG_ADDRESS_MASK) +
                     (((addr >> 21) & 0x1ff) << 3)) & a20_mask;
-        pde = ldq_phys_debug(cs, pde_addr);
+        pde = ldq_phys_debug(cs, pde_addr) & me_mask;
         if (!(pde & PG_PRESENT_MASK)) {
             return -1;
         }
@@ -808,7 +827,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
             pte_addr = ((pde & PG_ADDRESS_MASK) +
                         (((addr >> 12) & 0x1ff) << 3)) & a20_mask;
             page_size = 4096;
-            pte = ldq_phys_debug(cs, pte_addr);
+            pte = ldq_phys_debug(cs, pte_addr) & me_mask;
         }
         if (!(pte & PG_PRESENT_MASK)) {
             return -1;
@@ -817,8 +836,9 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         uint32_t pde;
 
         /* page directory entry */
-        pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & a20_mask;
-        pde = ldl_phys_debug(cs, pde_addr);
+        pde_addr = ((env->cr[3] & ~0xfff & me_mask) + ((addr >> 20) & 0xffc))
+                     & a20_mask;
+        pde = ldl_phys_debug(cs, pde_addr) & me_mask;
         if (!(pde & PG_PRESENT_MASK))
             return -1;
         if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) {
@@ -827,7 +847,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
         } else {
             /* page directory entry */
             pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & a20_mask;
-            pte = ldl_phys_debug(cs, pte_addr);
+            pte = ldl_phys_debug(cs, pte_addr) & me_mask;
             if (!(pte & PG_PRESENT_MASK)) {
                 return -1;
             }
diff --git a/target/i386/monitor.c b/target/i386/monitor.c
index 96890547f6b4..0b290f004a21 100644
--- a/target/i386/monitor.c
+++ b/target/i386/monitor.c
@@ -59,6 +59,22 @@ static void print_pte(Monitor *mon, CPUArchState *env, hwaddr addr,
                    pte & PG_RW_MASK ? 'W' : '-');
 }
 
+static uint64_t get_me_mask(void)
+{
+    uint64_t me_mask = 0;
+
+    /*
+     * When SEV is active, Fn8000_001F[EBX] Bit 0:5 contains the C-bit position
+     */
+    if (kvm_memcrypt_enabled()) {
+        uint32_t pos;
+        pos = kvm_arch_get_supported_cpuid(kvm_state, 0x8000001f, 0, R_EBX);
+        me_mask = (1UL << (pos & 0x3f));
+    }
+
+    return ~me_mask;
+}
+
 static void tlb_info_32(Monitor *mon, CPUArchState *env)
 {
     unsigned int l1, l2;
@@ -93,16 +109,20 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
     unsigned int l1, l2, l3;
     uint64_t pdpe, pde, pte;
     uint64_t pdp_addr, pd_addr, pt_addr;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
     pdp_addr = env->cr[3] & ~0x1f;
+    pdp_addr &= me_mask;
     for (l1 = 0; l1 < 4; l1++) {
         cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
-        pdpe = le64_to_cpu(pdpe);
+        pdpe = le64_to_cpu(pdpe & me_mask);
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
-                pde = le64_to_cpu(pde);
+                pde = le64_to_cpu(pde & me_mask);
                 if (pde & PG_PRESENT_MASK) {
                     if (pde & PG_PSE_MASK) {
                         /* 2M pages with PAE, CR4.PSE is ignored */
@@ -113,7 +133,7 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env)
                         for (l3 = 0; l3 < 512; l3++) {
                             cpu_physical_memory_read_debug(pt_addr + l3 * 8,
                                                            &pte, 8);
-                            pte = le64_to_cpu(pte);
+                            pte = le64_to_cpu(pte & me_mask);
                             if (pte & PG_PRESENT_MASK) {
                                 print_pte(mon, env, (l1 << 30) + (l2 << 21)
                                           + (l3 << 12),
@@ -135,10 +155,13 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
     uint64_t l1, l2, l3, l4;
     uint64_t pml4e, pdpe, pde, pte;
     uint64_t pdp_addr, pd_addr, pt_addr;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
     for (l1 = 0; l1 < 512; l1++) {
         cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
-        pml4e = le64_to_cpu(pml4e);
+        pml4e = le64_to_cpu(pml4e & me_mask);
         if (!(pml4e & PG_PRESENT_MASK)) {
             continue;
         }
@@ -146,7 +169,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
         pdp_addr = pml4e & 0x3fffffffff000ULL;
         for (l2 = 0; l2 < 512; l2++) {
             cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
-            pdpe = le64_to_cpu(pdpe);
+            pdpe = le64_to_cpu(pdpe & me_mask);
             if (!(pdpe & PG_PRESENT_MASK)) {
                 continue;
             }
@@ -161,7 +184,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l3 = 0; l3 < 512; l3++) {
                 cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
-                pde = le64_to_cpu(pde);
+                pde = le64_to_cpu(pde & me_mask);
                 if (!(pde & PG_PRESENT_MASK)) {
                     continue;
                 }
@@ -176,7 +199,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env,
                 pt_addr = pde & 0x3fffffffff000ULL;
                 for (l4 = 0; l4 < 512; l4++) {
                     cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
-                    pte = le64_to_cpu(pte);
+                    pte = le64_to_cpu(pte & me_mask);
                     if (pte & PG_PRESENT_MASK) {
                         print_pte(mon, env, (l0 << 48) + (l1 << 39) +
                                 (l2 << 30) + (l3 << 21) + (l4 << 12),
@@ -193,11 +216,14 @@ static void tlb_info_la57(Monitor *mon, CPUArchState *env)
     uint64_t l0;
     uint64_t pml5e;
     uint64_t pml5_addr;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
-    pml5_addr = env->cr[3] & 0x3fffffffff000ULL;
+    pml5_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask;
     for (l0 = 0; l0 < 512; l0++) {
         cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
-        pml5e = le64_to_cpu(pml5e);
+        pml5e = le64_to_cpu(pml5e & me_mask);
         if (pml5e & PG_PRESENT_MASK) {
             tlb_info_la48(mon, env, l0, pml5e & 0x3fffffffff000ULL);
         }
@@ -225,7 +251,8 @@ void hmp_info_tlb(Monitor *mon, const QDict *qdict)
             if (env->cr[4] & CR4_LA57_MASK) {
                 tlb_info_la57(mon, env);
             } else {
-                tlb_info_la48(mon, env, 0, env->cr[3] & 0x3fffffffff000ULL);
+                tlb_info_la48(mon, env, 0, env->cr[3] & 0x3fffffffff000ULL &
+                              get_me_mask());
             }
         } else
 #endif
@@ -309,19 +336,22 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
     uint64_t pdpe, pde, pte;
     uint64_t pdp_addr, pd_addr, pt_addr;
     hwaddr start, end;
+    uint64_t me_mask;
 
-    pdp_addr = env->cr[3] & ~0x1f;
+    me_mask = get_me_mask();
+
+    pdp_addr = env->cr[3] & ~0x1f & me_mask;
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 4; l1++) {
         cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8);
-        pdpe = le64_to_cpu(pdpe);
+        pdpe = le64_to_cpu(pdpe & me_mask);
         end = l1 << 30;
         if (pdpe & PG_PRESENT_MASK) {
             pd_addr = pdpe & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8);
-                pde = le64_to_cpu(pde);
+                pde = le64_to_cpu(pde & me_mask);
                 end = (l1 << 30) + (l2 << 21);
                 if (pde & PG_PRESENT_MASK) {
                     if (pde & PG_PSE_MASK) {
@@ -333,7 +363,7 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env)
                         for (l3 = 0; l3 < 512; l3++) {
                             cpu_physical_memory_read_debug(pt_addr + l3 * 8,
                                                            &pte, 8);
-                            pte = le64_to_cpu(pte);
+                            pte = le64_to_cpu(pte & me_mask);
                             end = (l1 << 30) + (l2 << 21) + (l3 << 12);
                             if (pte & PG_PRESENT_MASK) {
                                 prot = pte & pde & (PG_USER_MASK | PG_RW_MASK |
@@ -366,19 +396,22 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
     uint64_t l1, l2, l3, l4;
     uint64_t pml4e, pdpe, pde, pte;
     uint64_t pml4_addr, pdp_addr, pd_addr, pt_addr, start, end;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
-    pml4_addr = env->cr[3] & 0x3fffffffff000ULL;
+    pml4_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask;
     last_prot = 0;
     start = -1;
     for (l1 = 0; l1 < 512; l1++) {
         cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
-        pml4e = le64_to_cpu(pml4e);
+        pml4e = le64_to_cpu(pml4e & me_mask);
         end = l1 << 39;
         if (pml4e & PG_PRESENT_MASK) {
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
-                pdpe = le64_to_cpu(pdpe);
+                pdpe = le64_to_cpu(pdpe & me_mask);
                 end = (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
                     if (pdpe & PG_PSE_MASK) {
@@ -391,7 +424,7 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                         for (l3 = 0; l3 < 512; l3++) {
                             cpu_physical_memory_read_debug(pd_addr + l3 * 8,
                                                            &pde, 8);
-                            pde = le64_to_cpu(pde);
+                            pde = le64_to_cpu(pde & me_mask);
                             end = (l1 << 39) + (l2 << 30) + (l3 << 21);
                             if (pde & PG_PRESENT_MASK) {
                                 if (pde & PG_PSE_MASK) {
@@ -405,7 +438,7 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env)
                                         cpu_physical_memory_read_debug(pt_addr
                                                                   + l4 * 8,
                                                                   &pte, 8);
-                                        pte = le64_to_cpu(pte);
+                                        pte = le64_to_cpu(pte & me_mask);
                                         end = (l1 << 39) + (l2 << 30) +
                                             (l3 << 21) + (l4 << 12);
                                         if (pte & PG_PRESENT_MASK) {
@@ -444,13 +477,16 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
     uint64_t l0, l1, l2, l3, l4;
     uint64_t pml5e, pml4e, pdpe, pde, pte;
     uint64_t pml5_addr, pml4_addr, pdp_addr, pd_addr, pt_addr, start, end;
+    uint64_t me_mask;
+
+    me_mask = get_me_mask();
 
-    pml5_addr = env->cr[3] & 0x3fffffffff000ULL;
+    pml5_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask;
     last_prot = 0;
     start = -1;
     for (l0 = 0; l0 < 512; l0++) {
         cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8);
-        pml5e = le64_to_cpu(pml5e);
+        pml5e = le64_to_cpu(pml5e & me_mask);
         end = l0 << 48;
         if (!(pml5e & PG_PRESENT_MASK)) {
             prot = 0;
@@ -461,7 +497,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
         pml4_addr = pml5e & 0x3fffffffff000ULL;
         for (l1 = 0; l1 < 512; l1++) {
             cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8);
-            pml4e = le64_to_cpu(pml4e);
+            pml4e = le64_to_cpu(pml4e & me_mask);
             end = (l0 << 48) + (l1 << 39);
             if (!(pml4e & PG_PRESENT_MASK)) {
                 prot = 0;
@@ -472,7 +508,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
             pdp_addr = pml4e & 0x3fffffffff000ULL;
             for (l2 = 0; l2 < 512; l2++) {
                 cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8);
-                pdpe = le64_to_cpu(pdpe);
+                pdpe = le64_to_cpu(pdpe & me_mask);
                 end = (l0 << 48) + (l1 << 39) + (l2 << 30);
                 if (pdpe & PG_PRESENT_MASK) {
                     prot = 0;
@@ -491,7 +527,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
                 pd_addr = pdpe & 0x3fffffffff000ULL;
                 for (l3 = 0; l3 < 512; l3++) {
                     cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8);
-                    pde = le64_to_cpu(pde);
+                    pde = le64_to_cpu(pde & me_mask);
                     end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21);
                     if (pde & PG_PRESENT_MASK) {
                         prot = 0;
@@ -510,7 +546,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
                     pt_addr = pde & 0x3fffffffff000ULL;
                     for (l4 = 0; l4 < 512; l4++) {
                         cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);
-                        pte = le64_to_cpu(pte);
+                        pte = le64_to_cpu(pte & me_mask);
                         end = (l0 << 48) + (l1 << 39) + (l2 << 30) +
                             (l3 << 21) + (l4 << 12);
                         if (pte & PG_PRESENT_MASK) {
-- 
2.9.5

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

* [PATCH v6 23/23] sev: add migration blocker
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 17:41   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

SEV guest migration is not implemented yet.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 accel/kvm/sev.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index 65d34c531ee5..6800e059f57c 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -20,6 +20,7 @@
 #include "sysemu/sysemu.h"
 #include "trace.h"
 #include "qapi-event.h"
+#include "migration/blocker.h"
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
@@ -28,6 +29,7 @@
 static int sev_fd;
 static SEVState *sev_state;
 static MemoryRegionRAMReadWriteOps  sev_ops;
+static Error *sev_mig_blocker;
 
 #define SEV_FW_MAX_ERROR      0x17
 
@@ -479,6 +481,7 @@ static void
 sev_launch_finish(SEVState *s)
 {
     int ret, error;
+    Error *local_err = NULL;
 
     trace_kvm_sev_launch_finish();
     ret = sev_ioctl(KVM_SEV_LAUNCH_FINISH, 0, &error);
@@ -489,6 +492,16 @@ sev_launch_finish(SEVState *s)
     }
 
     sev_set_guest_state(SEV_STATE_RUNNING);
+
+    /* add migration blocker */
+    error_setg(&sev_mig_blocker,
+               "SEV: Migration is not implemented");
+    ret = migrate_add_blocker(sev_mig_blocker, &local_err);
+    if (local_err) {
+        error_report_err(local_err);
+        error_free(sev_mig_blocker);
+        exit(1);
+    }
 }
 
 static void
-- 
2.9.5

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

* [Qemu-devel] [PATCH v6 23/23] sev: add migration blocker
@ 2018-01-29 17:41   ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-29 17:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Brijesh Singh

SEV guest migration is not implemented yet.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 accel/kvm/sev.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
index 65d34c531ee5..6800e059f57c 100644
--- a/accel/kvm/sev.c
+++ b/accel/kvm/sev.c
@@ -20,6 +20,7 @@
 #include "sysemu/sysemu.h"
 #include "trace.h"
 #include "qapi-event.h"
+#include "migration/blocker.h"
 
 #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
 #define DEFAULT_SEV_DEVICE      "/dev/sev"
@@ -28,6 +29,7 @@
 static int sev_fd;
 static SEVState *sev_state;
 static MemoryRegionRAMReadWriteOps  sev_ops;
+static Error *sev_mig_blocker;
 
 #define SEV_FW_MAX_ERROR      0x17
 
@@ -479,6 +481,7 @@ static void
 sev_launch_finish(SEVState *s)
 {
     int ret, error;
+    Error *local_err = NULL;
 
     trace_kvm_sev_launch_finish();
     ret = sev_ioctl(KVM_SEV_LAUNCH_FINISH, 0, &error);
@@ -489,6 +492,16 @@ sev_launch_finish(SEVState *s)
     }
 
     sev_set_guest_state(SEV_STATE_RUNNING);
+
+    /* add migration blocker */
+    error_setg(&sev_mig_blocker,
+               "SEV: Migration is not implemented");
+    ret = migrate_add_blocker(sev_mig_blocker, &local_err);
+    if (local_err) {
+        error_report_err(local_err);
+        error_free(sev_mig_blocker);
+        exit(1);
+    }
 }
 
 static void
-- 
2.9.5

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 18:13   ` no-reply
  -1 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:13 UTC (permalink / raw)
  To: brijesh.singh
  Cc: famz, qemu-devel, edgar.iglesias, peter.maydell, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, dgilbert,
	brijesh.singh, pbonzini

Hi,

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

Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com
Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 t [tag update]            patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com -> patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com
 t [tag update]            patchew/20180123035349.24538-1-richard.henderson@linaro.org -> patchew/20180123035349.24538-1-richard.henderson@linaro.org
 * [new tag]               patchew/20180129174132.108925-1-brijesh.singh@amd.com -> patchew/20180129174132.108925-1-brijesh.singh@amd.com
Switched to a new branch 'test'
6efcae2888 sev: add migration blocker
16a9e00946 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5a54 sev: add debug encrypt and decrypt commands
9034d072b3 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370842 sev: Finalize the SEV guest launch flow
5e126818a5 sev: emit the SEV_MEASUREMENT event
1c9a562916 qapi: add SEV_MEASUREMENT event
b322fca554 target/i386: encrypt bios rom
10da3ed830 sev: add command to encrypt guest memory region
cc979f7ffb sev: add command to create launch memory encryption context
9388e9fbf7 hmp: display memory encryption support in 'info kvm'
8875a9eff3 kvm: introduce memory encryption APIs
c530cf3a0f sev: register the guest memory range which may contain encrypted data
f486eda972 sev: add command to initialize the memory encryption context
cd64908627 accel: add Secure Encrypted Virtulization (SEV) object
08729ca7e4 docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a465 kvm: update kvm.h to include memory encryption ioctls
113e16b66e machine: add -memory-encryption property
f839a7f5d1 target/i386: add memory encryption feature cpuid support
4e159e781f monitor/i386: use debug APIs when accessing guest memory
fbeb706e23 exec: add debug version of physical memory read and write API
11bc1372d7 exec: add ram_debug_ops support
1b02df629e memattrs: add debug attribute

=== OUTPUT BEGIN ===
Checking PATCH 1/23: memattrs: add debug attribute...
Checking PATCH 2/23: exec: add ram_debug_ops support...
WARNING: line over 80 characters
#208: FILE: include/exec/memory.h:640:
+ * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region

total: 0 errors, 1 warnings, 173 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 3/23: exec: add debug version of physical memory read and write API...
Checking PATCH 4/23: monitor/i386: use debug APIs when accessing guest memory...
WARNING: line over 80 characters
#356: FILE: target/i386/monitor.c:512:
+                        cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);

total: 0 errors, 1 warnings, 291 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 5/23: target/i386: add memory encryption feature cpuid support...
Checking PATCH 6/23: machine: add -memory-encryption property...
Checking PATCH 7/23: kvm: update kvm.h to include memory encryption ioctls...
Checking PATCH 8/23: docs: add AMD Secure Encrypted Virtualization (SEV)...
Checking PATCH 9/23: accel: add Secure Encrypted Virtulization (SEV) object...
Checking PATCH 10/23: sev: add command to initialize the memory encryption context...
Checking PATCH 11/23: sev: register the guest memory range which may contain encrypted data...
Checking PATCH 12/23: kvm: introduce memory encryption APIs...
Checking PATCH 13/23: hmp: display memory encryption support in 'info kvm'...
Checking PATCH 14/23: sev: add command to create launch memory encryption context...
Checking PATCH 15/23: sev: add command to encrypt guest memory region...
ERROR: space prohibited between function name and open parenthesis '('
#86: FILE: accel/kvm/sev.c:474:
+    assert (handle);

total: 1 errors, 0 warnings, 86 lines checked

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

Checking PATCH 16/23: target/i386: encrypt bios rom...
Checking PATCH 17/23: qapi: add SEV_MEASUREMENT event...
Checking PATCH 18/23: sev: emit the SEV_MEASUREMENT event...
Checking PATCH 19/23: sev: Finalize the SEV guest launch flow...
Checking PATCH 20/23: hw: i386: set ram_debug_ops when memory encryption is enabled...
Checking PATCH 21/23: sev: add debug encrypt and decrypt commands...
Checking PATCH 22/23: target/i386: clear C-bit when walking SEV guest page table...
Checking PATCH 23/23: sev: add migration blocker...
=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
@ 2018-01-29 18:13   ` no-reply
  0 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:13 UTC (permalink / raw)
  To: brijesh.singh
  Cc: famz, qemu-devel, edgar.iglesias, peter.maydell, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, dgilbert,
	pbonzini

Hi,

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

Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com
Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 t [tag update]            patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com -> patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com
 t [tag update]            patchew/20180123035349.24538-1-richard.henderson@linaro.org -> patchew/20180123035349.24538-1-richard.henderson@linaro.org
 * [new tag]               patchew/20180129174132.108925-1-brijesh.singh@amd.com -> patchew/20180129174132.108925-1-brijesh.singh@amd.com
Switched to a new branch 'test'
6efcae2888 sev: add migration blocker
16a9e00946 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5a54 sev: add debug encrypt and decrypt commands
9034d072b3 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370842 sev: Finalize the SEV guest launch flow
5e126818a5 sev: emit the SEV_MEASUREMENT event
1c9a562916 qapi: add SEV_MEASUREMENT event
b322fca554 target/i386: encrypt bios rom
10da3ed830 sev: add command to encrypt guest memory region
cc979f7ffb sev: add command to create launch memory encryption context
9388e9fbf7 hmp: display memory encryption support in 'info kvm'
8875a9eff3 kvm: introduce memory encryption APIs
c530cf3a0f sev: register the guest memory range which may contain encrypted data
f486eda972 sev: add command to initialize the memory encryption context
cd64908627 accel: add Secure Encrypted Virtulization (SEV) object
08729ca7e4 docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a465 kvm: update kvm.h to include memory encryption ioctls
113e16b66e machine: add -memory-encryption property
f839a7f5d1 target/i386: add memory encryption feature cpuid support
4e159e781f monitor/i386: use debug APIs when accessing guest memory
fbeb706e23 exec: add debug version of physical memory read and write API
11bc1372d7 exec: add ram_debug_ops support
1b02df629e memattrs: add debug attribute

=== OUTPUT BEGIN ===
Checking PATCH 1/23: memattrs: add debug attribute...
Checking PATCH 2/23: exec: add ram_debug_ops support...
WARNING: line over 80 characters
#208: FILE: include/exec/memory.h:640:
+ * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region

total: 0 errors, 1 warnings, 173 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 3/23: exec: add debug version of physical memory read and write API...
Checking PATCH 4/23: monitor/i386: use debug APIs when accessing guest memory...
WARNING: line over 80 characters
#356: FILE: target/i386/monitor.c:512:
+                        cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8);

total: 0 errors, 1 warnings, 291 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 5/23: target/i386: add memory encryption feature cpuid support...
Checking PATCH 6/23: machine: add -memory-encryption property...
Checking PATCH 7/23: kvm: update kvm.h to include memory encryption ioctls...
Checking PATCH 8/23: docs: add AMD Secure Encrypted Virtualization (SEV)...
Checking PATCH 9/23: accel: add Secure Encrypted Virtulization (SEV) object...
Checking PATCH 10/23: sev: add command to initialize the memory encryption context...
Checking PATCH 11/23: sev: register the guest memory range which may contain encrypted data...
Checking PATCH 12/23: kvm: introduce memory encryption APIs...
Checking PATCH 13/23: hmp: display memory encryption support in 'info kvm'...
Checking PATCH 14/23: sev: add command to create launch memory encryption context...
Checking PATCH 15/23: sev: add command to encrypt guest memory region...
ERROR: space prohibited between function name and open parenthesis '('
#86: FILE: accel/kvm/sev.c:474:
+    assert (handle);

total: 1 errors, 0 warnings, 86 lines checked

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

Checking PATCH 16/23: target/i386: encrypt bios rom...
Checking PATCH 17/23: qapi: add SEV_MEASUREMENT event...
Checking PATCH 18/23: sev: emit the SEV_MEASUREMENT event...
Checking PATCH 19/23: sev: Finalize the SEV guest launch flow...
Checking PATCH 20/23: hw: i386: set ram_debug_ops when memory encryption is enabled...
Checking PATCH 21/23: sev: add debug encrypt and decrypt commands...
Checking PATCH 22/23: target/i386: clear C-bit when walking SEV guest page table...
Checking PATCH 23/23: sev: add migration blocker...
=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 18:17   ` no-reply
  -1 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:17 UTC (permalink / raw)
  To: brijesh.singh
  Cc: edgar.iglesias, peter.maydell, famz, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, qemu-devel,
	dgilbert, pbonzini, brijesh.singh

Hi,

This series failed build test on s390x host. Please find the details below.

Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com
Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e
echo "=== ENV ==="
env
echo "=== PACKAGES ==="
rpm -qa
echo "=== TEST BEGIN ==="
CC=$HOME/bin/cc
INSTALL=$PWD/install
BUILD=$PWD/build
echo -n "Using CC: "
realpath $CC
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL
make -j4
# XXX: we need reliable clean up
# make check -j4 V=1
make install
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
   0d1442912b..30d9fefe1a  master     -> master
 t [tag update]            patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com -> patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com
 t [tag update]            patchew/20180123035349.24538-1-richard.henderson@linaro.org -> patchew/20180123035349.24538-1-richard.henderson@linaro.org
 * [new tag]               patchew/20180129174132.108925-1-brijesh.singh@amd.com -> patchew/20180129174132.108925-1-brijesh.singh@amd.com
Switched to a new branch 'test'
6efcae2888 sev: add migration blocker
16a9e00946 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5a54 sev: add debug encrypt and decrypt commands
9034d072b3 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370842 sev: Finalize the SEV guest launch flow
5e126818a5 sev: emit the SEV_MEASUREMENT event
1c9a562916 qapi: add SEV_MEASUREMENT event
b322fca554 target/i386: encrypt bios rom
10da3ed830 sev: add command to encrypt guest memory region
cc979f7ffb sev: add command to create launch memory encryption context
9388e9fbf7 hmp: display memory encryption support in 'info kvm'
8875a9eff3 kvm: introduce memory encryption APIs
c530cf3a0f sev: register the guest memory range which may contain encrypted data
f486eda972 sev: add command to initialize the memory encryption context
cd64908627 accel: add Secure Encrypted Virtulization (SEV) object
08729ca7e4 docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a465 kvm: update kvm.h to include memory encryption ioctls
113e16b66e machine: add -memory-encryption property
f839a7f5d1 target/i386: add memory encryption feature cpuid support
4e159e781f monitor/i386: use debug APIs when accessing guest memory
fbeb706e23 exec: add debug version of physical memory read and write API
11bc1372d7 exec: add ram_debug_ops support
1b02df629e memattrs: add debug attribute

=== OUTPUT BEGIN ===
=== ENV ===
LANG=en_US.UTF-8
XDG_SESSION_ID=31743
USER=fam
PWD=/var/tmp/patchew-tester-tmp-hek3vjny/src
HOME=/home/fam
SHELL=/bin/sh
SHLVL=2
PATCHEW=/home/fam/patchew/patchew-cli -s http://patchew.org --nodebug
LOGNAME=fam
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1012/bus
XDG_RUNTIME_DIR=/run/user/1012
PATH=/usr/bin:/bin
_=/usr/bin/env
=== PACKAGES ===
gpg-pubkey-873529b8-54e386ff
glibc-debuginfo-common-2.24-10.fc25.s390x
fedora-release-26-1.noarch
dejavu-sans-mono-fonts-2.35-4.fc26.noarch
xemacs-filesystem-21.5.34-22.20170124hgf412e9f093d4.fc26.noarch
bash-4.4.12-7.fc26.s390x
freetype-2.7.1-9.fc26.s390x
libSM-1.2.2-5.fc26.s390x
libmpc-1.0.2-6.fc26.s390x
libaio-0.3.110-7.fc26.s390x
libverto-0.2.6-7.fc26.s390x
perl-Scalar-List-Utils-1.48-1.fc26.s390x
iptables-libs-1.6.1-2.fc26.s390x
perl-threads-shared-1.57-1.fc26.s390x
p11-kit-trust-0.23.9-2.fc26.s390x
tcl-8.6.6-2.fc26.s390x
libxshmfence-1.2-4.fc26.s390x
expect-5.45-23.fc26.s390x
perl-Thread-Queue-3.12-1.fc26.noarch
perl-encoding-2.19-6.fc26.s390x
keyutils-1.5.10-1.fc26.s390x
gmp-devel-6.1.2-4.fc26.s390x
enchant-1.6.0-16.fc26.s390x
net-snmp-libs-5.7.3-17.fc26.s390x
python-gobject-base-3.24.1-1.fc26.s390x
python3-distro-1.0.3-1.fc26.noarch
python3-enchant-1.6.10-1.fc26.noarch
python-lockfile-0.11.0-6.fc26.noarch
python2-pyparsing-2.1.10-3.fc26.noarch
python2-lxml-4.1.1-1.fc26.s390x
librados2-10.2.7-2.fc26.s390x
trousers-lib-0.3.13-7.fc26.s390x
libpaper-1.1.24-14.fc26.s390x
libdatrie-0.2.9-4.fc26.s390x
libsoup-2.58.2-1.fc26.s390x
passwd-0.79-9.fc26.s390x
bind99-libs-9.9.10-3.P3.fc26.s390x
python3-rpm-4.13.0.2-1.fc26.s390x
mock-core-configs-27.4-1.fc26.noarch
systemd-233-7.fc26.s390x
virglrenderer-0.6.0-1.20170210git76b3da97b.fc26.s390x
s390utils-ziomon-1.36.1-3.fc26.s390x
s390utils-osasnmpd-1.36.1-3.fc26.s390x
libXrandr-1.5.1-2.fc26.s390x
libglvnd-glx-1.0.0-1.fc26.s390x
texlive-ifxetex-svn19685.0.5-33.fc26.2.noarch
texlive-psnfss-svn33946.9.2a-33.fc26.2.noarch
texlive-dvipdfmx-def-svn40328-33.fc26.2.noarch
texlive-natbib-svn20668.8.31b-33.fc26.2.noarch
texlive-xdvi-bin-svn40750-33.20160520.fc26.2.s390x
texlive-cm-svn32865.0-33.fc26.2.noarch
texlive-beton-svn15878.0-33.fc26.2.noarch
texlive-fpl-svn15878.1.002-33.fc26.2.noarch
texlive-mflogo-svn38628-33.fc26.2.noarch
texlive-texlive-docindex-svn41430-33.fc26.2.noarch
texlive-luaotfload-bin-svn34647.0-33.20160520.fc26.2.noarch
texlive-koma-script-svn41508-33.fc26.2.noarch
texlive-pst-tree-svn24142.1.12-33.fc26.2.noarch
texlive-breqn-svn38099.0.98d-33.fc26.2.noarch
texlive-xetex-svn41438-33.fc26.2.noarch
gstreamer1-plugins-bad-free-1.12.3-1.fc26.s390x
xorg-x11-font-utils-7.5-33.fc26.s390x
ghostscript-fonts-5.50-36.fc26.noarch
libXext-devel-1.3.3-5.fc26.s390x
libusbx-devel-1.0.21-2.fc26.s390x
libglvnd-devel-1.0.0-1.fc26.s390x
emacs-25.3-3.fc26.s390x
alsa-lib-devel-1.1.4.1-1.fc26.s390x
kbd-2.0.4-2.fc26.s390x
dconf-0.26.0-2.fc26.s390x
ccache-3.3.4-1.fc26.s390x
glibc-static-2.25-12.fc26.s390x
mc-4.8.19-5.fc26.s390x
doxygen-1.8.13-9.fc26.s390x
dpkg-1.18.24-1.fc26.s390x
libtdb-1.3.13-1.fc26.s390x
python2-pynacl-1.1.1-1.fc26.s390x
nss-sysinit-3.34.0-1.0.fc26.s390x
kernel-4.13.16-202.fc26.s390x
perl-Filter-1.58-1.fc26.s390x
python2-pip-9.0.1-11.fc26.noarch
dnf-2.7.5-2.fc26.noarch
pcre2-utf16-10.23-11.fc26.s390x
glusterfs-devel-3.10.8-1.fc26.s390x
sssd-common-1.16.0-4.fc26.s390x
python2-sssdconfig-1.16.0-4.fc26.noarch
acpica-tools-20171110-1.fc26.s390x
glibc-debuginfo-2.24-10.fc25.s390x
fedora-repos-26-1.noarch
dejavu-fonts-common-2.35-4.fc26.noarch
bind99-license-9.9.10-3.P3.fc26.noarch
ncurses-libs-6.0-8.20170212.fc26.s390x
libpng-1.6.28-2.fc26.s390x
libICE-1.0.9-9.fc26.s390x
kmod-24-1.fc26.s390x
libseccomp-2.3.2-1.fc26.s390x
perl-Text-ParseWords-3.30-366.fc26.noarch
libtool-ltdl-2.4.6-17.fc26.s390x
perl-threads-2.16-1.fc26.s390x
libselinux-utils-2.6-7.fc26.s390x
userspace-rcu-0.9.3-2.fc26.s390x
libXfont-1.5.2-5.fc26.s390x
perl-Class-Inspector-1.31-3.fc26.noarch
perl-open-1.10-395.fc26.noarch
keyutils-libs-devel-1.5.10-1.fc26.s390x
isl-0.16.1-1.fc26.s390x
libsecret-0.18.5-3.fc26.s390x
compat-openssl10-1.0.2m-1.fc26.s390x
python3-iniparse-0.4-24.fc26.noarch
python3-dateutil-2.6.0-3.fc26.noarch
python3-firewall-0.4.4.5-1.fc26.noarch
python-enum34-1.1.6-1.fc26.noarch
python2-pygments-2.2.0-7.fc26.noarch
python2-dockerfile-parse-0.0.7-1.fc26.noarch
perl-Net-SSLeay-1.81-1.fc26.s390x
hostname-3.18-2.fc26.s390x
libtirpc-1.0.2-0.fc26.s390x
rpm-build-libs-4.13.0.2-1.fc26.s390x
libutempter-1.1.6-9.fc26.s390x
systemd-pam-233-7.fc26.s390x
pcre-utf16-8.41-3.fc26.s390x
libXinerama-1.1.3-7.fc26.s390x
mesa-libGL-17.2.4-2.fc26.s390x
texlive-amsfonts-svn29208.3.04-33.fc26.2.noarch
texlive-caption-svn41409-33.fc26.2.noarch
texlive-enumitem-svn24146.3.5.2-33.fc26.2.noarch
texlive-pdftex-def-svn22653.0.06d-33.fc26.2.noarch
texlive-xdvi-svn40768-33.fc26.2.noarch
texlive-courier-svn35058.0-33.fc26.2.noarch
texlive-charter-svn15878.0-33.fc26.2.noarch
texlive-graphics-def-svn41879-33.fc26.2.noarch
texlive-mfnfss-svn19410.0-33.fc26.2.noarch
texlive-texlive-en-svn41185-33.fc26.2.noarch
texlive-ifplatform-svn21156.0.4-33.fc26.2.noarch
texlive-ms-svn29849.0-33.fc26.2.noarch
texlive-pst-tools-svn34067.0.05-33.fc26.2.noarch
texlive-powerdot-svn38984-33.fc26.2.noarch
texlive-xetexconfig-svn41133-33.fc26.2.noarch
libvdpau-1.1.1-4.fc26.s390x
zlib-devel-1.2.11-2.fc26.s390x
gdk-pixbuf2-devel-2.36.9-1.fc26.s390x
libX11-devel-1.6.5-2.fc26.s390x
libtasn1-devel-4.12-1.fc26.s390x
libglvnd-core-devel-1.0.0-1.fc26.s390x
SDL2-devel-2.0.7-2.fc26.s390x
webkitgtk3-2.4.11-5.fc26.s390x
grubby-8.40-4.fc26.s390x
uboot-tools-2017.05-4.fc26.s390x
cracklib-dicts-2.9.6-5.fc26.s390x
texinfo-6.3-3.fc26.s390x
time-1.7-52.fc26.s390x
python2-deltarpm-3.6-19.fc26.s390x
nss-3.34.0-1.0.fc26.s390x
webkitgtk4-2.18.3-1.fc26.s390x
net-tools-2.0-0.43.20160912git.fc26.s390x
python2-setuptools-37.0.0-1.fc26.noarch
python2-dnf-2.7.5-2.fc26.noarch
pcre2-10.23-11.fc26.s390x
groff-base-1.22.3-10.fc26.s390x
python2-devel-2.7.14-4.fc26.s390x
python2-GitPython-2.1.7-2.fc26.noarch
boost-iostreams-1.63.0-10.fc26.s390x
gpg-pubkey-efe550f5-5220ba41
gpg-pubkey-81b46521-55b3ca9a
filesystem-3.2-40.fc26.s390x
basesystem-11-3.fc26.noarch
js-jquery-3.2.1-1.fc26.noarch
pcre-8.41-3.fc26.s390x
elfutils-libelf-0.169-1.fc26.s390x
libidn-1.33-2.fc26.s390x
libogg-1.3.2-6.fc26.s390x
slang-2.3.1a-2.fc26.s390x
apr-1.6.3-1.fc26.s390x
libxkbcommon-0.7.1-3.fc26.s390x
perl-IO-1.36-395.fc26.s390x
libvorbis-1.3.5-2.fc26.s390x
less-487-3.fc26.s390x
lttng-ust-2.9.0-2.fc26.s390x
OpenEXR-libs-2.2.0-6.fc26.s390x
ipset-libs-6.29-3.fc26.s390x
perl-XML-XPath-1.42-1.fc26.noarch
lua-filesystem-1.6.3-3.fc24.s390x
sqlite-3.20.1-1.fc26.s390x
gstreamer1-1.12.3-1.fc26.s390x
libpwquality-1.3.0-8.fc26.s390x
gettext-libs-0.19.8.1-9.fc26.s390x
python3-chardet-2.3.0-3.fc26.noarch
python3-slip-dbus-0.6.4-6.fc26.noarch
python-chardet-2.3.0-3.fc26.noarch
python2-pyasn1-0.2.3-1.fc26.noarch
python-slip-dbus-0.6.4-6.fc26.noarch
libarchive-3.2.2-4.fc26.s390x
libbabeltrace-1.5.2-2.fc26.s390x
cdparanoia-libs-10.2-22.fc26.s390x
krb5-workstation-1.15.2-4.fc26.s390x
python3-requests-kerberos-0.10.0-4.fc26.noarch
gpgme-1.8.0-12.fc26.s390x
python2-gpg-1.8.0-12.fc26.s390x
shadow-utils-4.3.1-3.fc26.s390x
cryptsetup-libs-1.7.5-1.fc26.s390x
kpartx-0.4.9-88.fc26.s390x
net-snmp-agent-libs-5.7.3-17.fc26.s390x
libXi-1.7.9-2.fc26.s390x
texlive-tetex-svn41059-33.fc26.2.noarch
texlive-tools-svn40934-33.fc26.2.noarch
texlive-bibtex-bin-svn40473-33.20160520.fc26.2.s390x
texlive-mfware-bin-svn40473-33.20160520.fc26.2.s390x
texlive-underscore-svn18261.0-33.fc26.2.noarch
texlive-avantgar-svn31835.0-33.fc26.2.noarch
texlive-anysize-svn15878.0-33.fc26.2.noarch
texlive-lineno-svn21442.4.41-33.fc26.2.noarch
texlive-mathpazo-svn15878.1.003-33.fc26.2.noarch
texlive-soul-svn15878.2.4-33.fc26.2.noarch
texlive-luatexbase-svn38550-33.fc26.2.noarch
texlive-listings-svn37534.1.6-33.fc26.2.noarch
texlive-pstricks-svn41321-33.fc26.2.noarch
texlive-metalogo-svn18611.0.12-33.fc26.2.noarch
texlive-dvipdfmx-svn41149-33.fc26.2.noarch
kbd-legacy-2.0.4-2.fc26.noarch
nspr-devel-4.17.0-1.fc26.s390x
ghostscript-x11-9.20-10.fc26.s390x
libXrender-devel-0.9.10-2.fc26.s390x
libxkbcommon-devel-0.7.1-3.fc26.s390x
mesa-libGL-devel-17.2.4-2.fc26.s390x
sqlite-devel-3.20.1-1.fc26.s390x
usbredir-devel-0.7.1-3.fc26.s390x
libcap-devel-2.25-5.fc26.s390x
brlapi-devel-0.6.6-5.fc26.s390x
fedora-upgrade-27.1-1.fc26.noarch
python3-pygpgme-0.3-22.fc26.s390x
pinentry-0.9.7-3.fc26.s390x
perl-Test-Harness-3.39-1.fc26.noarch
qemu-sanity-check-nodeps-1.1.5-6.fc26.s390x
libldb-1.1.29-5.fc26.s390x
python-libxml2-2.9.4-2.fc26.s390x
nss-util-devel-3.34.0-1.0.fc26.s390x
vim-filesystem-8.0.1360-1.fc26.s390x
webkitgtk4-plugin-process-gtk2-2.18.3-1.fc26.s390x
python2-2.7.14-4.fc26.s390x
libwayland-cursor-1.13.0-3.fc26.s390x
mariadb-config-10.1.29-1.fc26.s390x
gdb-headless-8.0.1-33.fc26.s390x
pulseaudio-libs-devel-11.1-7.fc26.s390x
curl-7.53.1-13.fc26.s390x
json-c-0.12.1-5.fc26.s390x
gpg-pubkey-34ec9cba-54e38751
gpg-pubkey-030d5aed-55b577f0
setup-2.10.5-2.fc26.noarch
lato-fonts-2.015-3.fc26.noarch
web-assets-filesystem-5-5.fc26.noarch
libsepol-2.6-2.fc26.s390x
libcap-2.25-5.fc26.s390x
tcp_wrappers-libs-7.6-85.fc26.s390x
libnl3-3.3.0-1.fc26.s390x
pixman-0.34.0-3.fc26.s390x
lzo-2.08-9.fc26.s390x
perl-5.24.3-395.fc26.s390x
libnl3-cli-3.3.0-1.fc26.s390x
gpm-libs-1.20.7-10.fc26.s390x
libgo-7.2.1-2.fc26.s390x
iso-codes-3.74-2.fc26.noarch
ipset-6.29-3.fc26.s390x
lua-term-0.07-1.fc25.s390x
libdb-utils-5.3.28-24.fc26.s390x
system-python-libs-3.6.3-2.fc26.s390x
dbus-glib-0.108-2.fc26.s390x
pam-1.3.0-2.fc26.s390x
avahi-glib-0.6.32-7.fc26.s390x
python2-dateutil-2.6.0-3.fc26.noarch
python3-asn1crypto-0.23.0-1.fc26.noarch
python3-slip-0.6.4-6.fc26.noarch
python-backports-ssl_match_hostname-3.5.0.1-4.fc26.noarch
python2-pyOpenSSL-16.2.0-6.fc26.noarch
python-slip-0.6.4-6.fc26.noarch
nss-pem-1.0.3-3.fc26.s390x
fipscheck-1.5.0-1.fc26.s390x
elfutils-0.169-1.fc26.s390x
cyrus-sasl-lib-2.1.26-32.fc26.s390x
libkadm5-1.15.2-4.fc26.s390x
python3-kerberos-1.2.5-3.fc26.s390x
rpmconf-1.0.19-1.fc26.noarch
libsemanage-2.6-4.fc26.s390x
device-mapper-libs-1.02.137-6.fc26.s390x
yum-3.4.3-512.fc26.noarch
device-mapper-multipath-0.4.9-88.fc26.s390x
net-snmp-5.7.3-17.fc26.s390x
libXtst-1.2.3-2.fc26.s390x
libXxf86vm-1.1.4-4.fc26.s390x
texlive-amsmath-svn41561-33.fc26.2.noarch
texlive-xkeyval-svn35741.2.7a-33.fc26.2.noarch
texlive-bibtex-svn40768-33.fc26.2.noarch
texlive-mfware-svn40768-33.fc26.2.noarch
texlive-wasy-svn35831.0-33.fc26.2.noarch
texlive-bookman-svn31835.0-33.fc26.2.noarch
texlive-babel-english-svn30264.3.3p-33.fc26.2.noarch
texlive-fix2col-svn38770-33.fc26.2.noarch
texlive-mdwtools-svn15878.1.05.4-33.fc26.2.noarch
texlive-tex-gyre-math-svn41264-33.fc26.2.noarch
texlive-luaotfload-svn40902-33.fc26.2.noarch
texlive-showexpl-svn32737.v0.3l-33.fc26.2.noarch
texlive-pstricks-add-svn40744-33.fc26.2.noarch
texlive-l3experimental-svn41163-33.fc26.2.noarch
texlive-xetex-bin-svn41091-33.20160520.fc26.2.s390x
kbd-misc-2.0.4-2.fc26.noarch
libpng-devel-1.6.28-2.fc26.s390x
ghostscript-core-9.20-10.fc26.s390x
libXfixes-devel-5.0.3-2.fc26.s390x
libverto-devel-0.2.6-7.fc26.s390x
mesa-libEGL-devel-17.2.4-2.fc26.s390x
popt-devel-1.16-12.fc26.s390x
readline-devel-7.0-5.fc26.s390x
cyrus-sasl-devel-2.1.26-32.fc26.s390x
sendmail-8.15.2-19.fc26.s390x
systemd-bootchart-231-3.fc26.s390x
perl-IO-Socket-SSL-2.049-1.fc26.noarch
python2-enchant-1.6.10-1.fc26.noarch
perl-generators-1.10-2.fc26.noarch
createrepo-0.10.3-11.fc26.noarch
webkitgtk4-jsc-2.18.3-1.fc26.s390x
vim-common-8.0.1360-1.fc26.s390x
nss-tools-3.34.0-1.0.fc26.s390x
glusterfs-api-3.10.8-1.fc26.s390x
pulseaudio-libs-glib2-11.1-7.fc26.s390x
mariadb-common-10.1.29-1.fc26.s390x
dhcp-libs-4.3.5-10.fc26.s390x
pcre2-devel-10.23-11.fc26.s390x
libtiff-4.0.9-1.fc26.s390x
kernel-headers-4.14.8-200.fc26.s390x
fontpackages-filesystem-1.44-18.fc26.noarch
vte-profile-0.48.4-1.fc26.s390x
texlive-kpathsea-doc-svn41139-33.fc26.2.noarch
zlib-1.2.11-2.fc26.s390x
readline-7.0-5.fc26.s390x
libattr-2.4.47-18.fc26.s390x
libgomp-7.2.1-2.fc26.s390x
libglvnd-1.0.0-1.fc26.s390x
lz4-libs-1.8.0-1.fc26.s390x
libcrypt-nss-2.25-12.fc26.s390x
jansson-2.10-2.fc26.s390x
perl-File-Path-2.12-367.fc26.noarch
perl-Unicode-EastAsianWidth-1.33-9.fc26.noarch
hunspell-1.5.4-2.fc26.s390x
libasyncns-0.8-11.fc26.s390x
libnetfilter_conntrack-1.0.6-2.fc26.s390x
perl-Storable-2.56-368.fc26.s390x
autoconf-2.69-24.fc26.noarch
device-mapper-persistent-data-0.6.3-5.fc26.s390x
quota-4.03-9.fc26.s390x
crypto-policies-20170606-1.git7c32281.fc26.noarch
glib2-2.52.3-2.fc26.s390x
python2-idna-2.5-1.fc26.noarch
python2-libcomps-0.1.8-3.fc26.s390x
gsettings-desktop-schemas-3.24.1-1.fc26.s390x
javapackages-tools-4.7.0-17.fc26.noarch
libselinux-python3-2.6-7.fc26.s390x
python-backports-1.0-9.fc26.s390x
python2-cryptography-2.0.2-2.fc26.s390x
libselinux-python-2.6-7.fc26.s390x
Lmod-7.5.3-1.fc26.s390x
fipscheck-lib-1.5.0-1.fc26.s390x
elfutils-libs-0.169-1.fc26.s390x
krb5-libs-1.15.2-4.fc26.s390x
libuser-0.62-6.fc26.s390x
python2-requests-kerberos-0.10.0-4.fc26.noarch
npth-1.5-1.fc26.s390x
packagedb-cli-2.14.1-2.fc26.noarch
ustr-1.0.4-22.fc26.s390x
device-mapper-1.02.137-6.fc26.s390x
polkit-pkla-compat-0.1-8.fc26.s390x
fakeroot-1.22-1.fc26.s390x
libXmu-1.1.2-5.fc26.s390x
cairo-gobject-1.14.10-1.fc26.s390x
texlive-booktabs-svn40846-33.fc26.2.noarch
texlive-dvips-bin-svn40987-33.20160520.fc26.2.s390x
texlive-float-svn15878.1.3d-33.fc26.2.noarch
texlive-tex-svn40793-33.fc26.2.noarch
texlive-fancyref-svn15878.0.9c-33.fc26.2.noarch
texlive-manfnt-font-svn35799.0-33.fc26.2.noarch
texlive-cmap-svn41168-33.fc26.2.noarch
texlive-hyph-utf8-svn41189-33.fc26.2.noarch
texlive-paralist-svn39247-33.fc26.2.noarch
texlive-trimspaces-svn15878.1.1-33.fc26.2.noarch
texlive-tipa-svn29349.1.3-33.fc26.2.noarch
texlive-l3packages-svn41246-33.fc26.2.noarch
texlive-pst-pdf-svn31660.1.1v-33.fc26.2.noarch
texlive-tex-gyre-svn18651.2.004-33.fc26.2.noarch
texlive-beamer-svn36461.3.36-33.fc26.2.noarch
gd-2.2.5-1.fc26.s390x
elfutils-libelf-devel-0.169-1.fc26.s390x
gc-devel-7.6.0-2.fc26.s390x
libXft-devel-2.3.2-5.fc26.s390x
krb5-devel-1.15.2-4.fc26.s390x
rpm-devel-4.13.0.2-1.fc26.s390x
pcre-static-8.41-3.fc26.s390x
bluez-libs-devel-5.46-6.fc26.s390x
systemtap-3.2-2.fc26.s390x
trousers-0.3.13-7.fc26.s390x
iproute-tc-4.11.0-1.fc26.s390x
python2-sphinx-1.5.5-1.fc26.noarch
libgnome-keyring-3.12.0-8.fc26.s390x
perl-File-ShareDir-1.102-8.fc26.noarch
python2-paramiko-2.2.1-1.fc26.noarch
python2-openidc-client-0.4.0-1.20171113git54dee6e.fc26.noarch
openssh-server-7.5p1-4.fc26.s390x
pulseaudio-libs-11.1-7.fc26.s390x
python2-bodhi-2.12.2-3.fc26.noarch
lua-libs-5.3.4-7.fc26.s390x
dhcp-common-4.3.5-10.fc26.noarch
python3-pip-9.0.1-11.fc26.noarch
python3-sssdconfig-1.16.0-4.fc26.noarch
gpg-pubkey-95a43f54-5284415a
gpg-pubkey-fdb19c98-56fd6333
gpg-pubkey-64dab85d-57d33e22
tzdata-2017c-1.fc26.noarch
firewalld-filesystem-0.4.4.5-1.fc26.noarch
xkeyboard-config-2.21-3.fc26.noarch
texlive-texlive-common-doc-svn40682-33.fc26.2.noarch
ncurses-base-6.0-8.20170212.fc26.noarch
libselinux-2.6-7.fc26.s390x
bzip2-libs-1.0.6-22.fc26.s390x
libdb-5.3.28-24.fc26.s390x
mpfr-3.1.5-3.fc26.s390x
file-libs-5.30-11.fc26.s390x
libunistring-0.9.7-1.fc26.s390x
libxslt-1.1.29-1.fc26.s390x
libtasn1-4.12-1.fc26.s390x
gdbm-1.13-1.fc26.s390x
libepoxy-1.4.3-1.fc26.s390x
libpsl-0.18.0-1.fc26.s390x
perl-Carp-1.40-366.fc26.noarch
e2fsprogs-libs-1.43.4-2.fc26.s390x
libmnl-1.0.4-2.fc26.s390x
openjpeg2-2.2.0-3.fc26.s390x
perl-PathTools-3.63-367.fc26.s390x
perl-File-Temp-0.230.400-2.fc26.noarch
perl-XML-Parser-2.44-6.fc26.s390x
libss-1.43.4-2.fc26.s390x
ilmbase-2.2.0-8.fc26.s390x
fuse-libs-2.9.7-2.fc26.s390x
libdaemon-0.14-11.fc26.s390x
libbasicobjects-0.1.1-34.fc26.s390x
iptables-1.6.1-2.fc26.s390x
perl-TermReadKey-2.37-2.fc26.s390x
perl-Term-ANSIColor-4.06-2.fc26.noarch
perl-libintl-perl-1.26-2.fc26.s390x
usbredir-0.7.1-3.fc26.s390x
fftw-libs-double-3.3.5-4.fc26.s390x
rsync-3.1.2-5.fc26.s390x
libiscsi-1.15.0-3.fc26.s390x
ttmkfdir-3.0.9-49.fc26.s390x
texlive-base-2016-33.20160520.fc26.1.noarch
python2-six-1.10.0-9.fc26.noarch
atk-2.24.0-1.fc26.s390x
python2-kitchen-1.2.4-6.fc26.noarch
guile-2.0.14-1.fc26.s390x
desktop-file-utils-0.23-3.fc26.s390x
pyxattr-0.5.3-10.fc26.s390x
shared-mime-info-1.8-2.fc26.s390x
libyaml-0.1.7-2.fc26.s390x
python3-PyYAML-3.12-3.fc26.s390x
openssh-7.5p1-4.fc26.s390x
kernel-core-4.13.16-202.fc26.s390x
perl-Git-2.13.6-2.fc26.noarch
python3-dnf-plugins-extras-common-2.0.4-1.fc26.noarch
openssl-1.1.0g-1.fc26.s390x
gawk-4.1.4-6.fc26.s390x
gnutls-3.5.16-4.fc26.s390x
openldap-2.4.45-2.fc26.s390x
bind-license-9.11.1-4.P3.fc26.noarch
python2-gluster-3.10.8-1.fc26.s390x
selinux-policy-3.13.1-260.17.fc26.noarch
linux-firmware-20171215-81.git2451bb22.fc26.noarch
libpkgconf-1.3.12-1.fc26.s390x
NetworkManager-libnm-1.8.2-4.fc26.s390x
gnutls-devel-3.5.16-4.fc26.s390x
mariadb-libs-10.1.29-1.fc26.s390x
python2-urllib3-1.20-2.fc26.noarch
sssd-nfs-idmap-1.16.0-4.fc26.s390x
libsss_sudo-1.16.0-4.fc26.s390x
libgudev-232-1.fc26.s390x
python3-libs-3.6.3-2.fc26.s390x
python3-javapackages-4.7.0-17.fc26.noarch
python3-ply-3.9-3.fc26.noarch
python3-systemd-234-1.fc26.s390x
python3-requests-2.13.0-1.fc26.noarch
blktrace-1.1.0-4.fc26.s390x
python2-asn1crypto-0.23.0-1.fc26.noarch
python2-cffi-1.9.1-2.fc26.s390x
python2-sphinx_rtd_theme-0.2.4-1.fc26.noarch
lua-json-1.3.2-7.fc26.noarch
libcephfs1-10.2.7-2.fc26.s390x
glib-networking-2.50.0-2.fc26.s390x
elfutils-default-yama-scope-0.169-1.fc26.noarch
GeoIP-GeoLite-data-2017.10-1.fc26.noarch
libedit-3.1-17.20160618cvs.fc26.s390x
libverto-libev-0.2.6-7.fc26.s390x
libserf-1.3.9-3.fc26.s390x
createrepo_c-0.10.0-9.fc26.s390x
python2-kerberos-1.2.5-3.fc26.s390x
libsrtp-1.5.4-4.fc26.s390x
lzo-minilzo-2.08-9.fc26.s390x
librepo-1.8.0-1.fc26.s390x
koji-1.14.0-1.fc26.noarch
sg3_utils-1.42-1.fc26.s390x
libobjc-7.2.1-2.fc26.s390x
policycoreutils-2.6-6.fc26.s390x
libdrm-2.4.88-1.fc26.s390x
kernel-core-4.13.13-200.fc26.s390x
systemtap-client-3.2-2.fc26.s390x
lvm2-2.02.168-6.fc26.s390x
device-mapper-multipath-libs-0.4.9-88.fc26.s390x
libfdt-1.4.5-1.fc26.s390x
s390utils-cmsfs-1.36.1-3.fc26.s390x
libXdamage-1.1.4-9.fc26.s390x
libXaw-1.0.13-5.fc26.s390x
brltty-5.5-5.fc26.s390x
librsvg2-2.40.18-1.fc26.s390x
texlive-tetex-bin-svn36770.0-33.20160520.fc26.2.noarch
texlive-etex-pkg-svn39355-33.fc26.2.noarch
texlive-graphics-svn41015-33.fc26.2.noarch
texlive-dvips-svn41149-33.fc26.2.noarch
texlive-zapfding-svn31835.0-33.fc26.2.noarch
texlive-footmisc-svn23330.5.5b-33.fc26.2.noarch
texlive-makeindex-svn40768-33.fc26.2.noarch
texlive-pst-ovl-svn40873-33.fc26.2.noarch
texlive-texlive-scripts-svn41433-33.fc26.2.noarch
texlive-ltabptch-svn17533.1.74d-33.fc26.2.noarch
texlive-euro-svn22191.1.1-33.fc26.2.noarch
texlive-mflogo-font-svn36898.1.002-33.fc26.2.noarch
texlive-zapfchan-svn31835.0-33.fc26.2.noarch
texlive-cmextra-svn32831.0-33.fc26.2.noarch
texlive-finstrut-svn21719.0.5-33.fc26.2.noarch
texlive-hyphen-base-svn41138-33.fc26.2.noarch
texlive-marginnote-svn41382-33.fc26.2.noarch
texlive-parallel-svn15878.0-33.fc26.2.noarch
texlive-sepnum-svn20186.2.0-33.fc26.2.noarch
texlive-environ-svn33821.0.3-33.fc26.2.noarch
texlive-type1cm-svn21820.0-33.fc26.2.noarch
texlive-xunicode-svn30466.0.981-33.fc26.2.noarch
texlive-attachfile-svn38830-33.fc26.2.noarch
texlive-fontspec-svn41262-33.fc26.2.noarch
texlive-fancyvrb-svn18492.2.8-33.fc26.2.noarch
texlive-pst-pdf-bin-svn7838.0-33.20160520.fc26.2.noarch
texlive-xcolor-svn41044-33.fc26.2.noarch
texlive-pdfpages-svn40638-33.fc26.2.noarch
texlive-sansmathaccent-svn30187.0-33.fc26.2.noarch
texlive-ucs-svn35853.2.2-33.fc26.2.noarch
texlive-dvipdfmx-bin-svn40273-33.20160520.fc26.2.s390x
libotf-0.9.13-8.fc26.s390x
go-srpm-macros-2-8.fc26.noarch
pcre-devel-8.41-3.fc26.s390x
mesa-libwayland-egl-devel-17.2.4-2.fc26.s390x
ghostscript-9.20-10.fc26.s390x
libcephfs_jni-devel-10.2.7-2.fc26.s390x
libXdamage-devel-1.1.4-9.fc26.s390x
freetype-devel-2.7.1-9.fc26.s390x
ncurses-devel-6.0-8.20170212.fc26.s390x
fontconfig-devel-2.12.6-4.fc26.s390x
cairo-devel-1.14.10-1.fc26.s390x
libselinux-devel-2.6-7.fc26.s390x
guile-devel-2.0.14-1.fc26.s390x
libcap-ng-devel-0.7.8-3.fc26.s390x
bash-completion-2.6-1.fc26.noarch
libXevie-1.0.3-12.fc26.s390x
kernel-4.13.13-200.fc26.s390x
audit-2.8.1-1.fc26.s390x
gcc-objc-7.2.1-2.fc26.s390x
gcc-go-7.2.1-2.fc26.s390x
python-firewall-0.4.4.5-1.fc26.noarch
python3-html5lib-0.999-13.fc26.noarch
python2-simplejson-3.10.0-3.fc26.s390x
flex-2.6.1-3.fc26.s390x
telnet-0.17-69.fc26.s390x
gpg-pubkey-8e1431d5-53bcbac7
emacs-filesystem-25.3-3.fc26.noarch
fontawesome-fonts-4.7.0-2.fc26.noarch
fontawesome-fonts-web-4.7.0-2.fc26.noarch
tzdata-java-2017c-1.fc26.noarch
rpmconf-base-1.0.19-1.fc26.noarch
glibc-2.25-12.fc26.s390x
info-6.3-3.fc26.s390x
sqlite-libs-3.20.1-1.fc26.s390x
texlive-lib-2016-33.20160520.fc26.1.s390x
sed-4.4-1.fc26.s390x
libicu-57.1-7.fc26.s390x
libcap-ng-0.7.8-3.fc26.s390x
nettle-3.3-2.fc26.s390x
libidn2-2.0.4-1.fc26.s390x
lcms2-2.8-3.fc26.s390x
dbus-libs-1.11.18-1.fc26.s390x
perl-Exporter-5.72-367.fc26.noarch
unzip-6.0-34.fc26.s390x
iproute-4.11.0-1.fc26.s390x
zip-3.0-18.fc26.s390x
perl-constant-1.33-368.fc26.noarch
perl-MIME-Base64-3.15-366.fc26.s390x
lua-posix-33.3.1-4.fc26.s390x
bzip2-1.0.6-22.fc26.s390x
libstdc++-devel-7.2.1-2.fc26.s390x
hyphen-2.8.8-6.fc26.s390x
libdvdread-5.0.3-4.fc26.s390x
libcollection-0.7.0-34.fc26.s390x
libdvdnav-5.0.3-5.fc26.s390x
perl-version-0.99.18-1.fc26.s390x
perl-Encode-2.88-6.fc26.s390x
automake-1.15-9.fc26.noarch
plymouth-core-libs-0.9.3-0.7.20160620git0e65b86c.fc26.s390x
hesiod-3.2.1-7.fc26.s390x
jasper-libs-2.0.14-1.fc26.s390x
mozjs17-17.0.0-18.fc26.s390x
fontconfig-2.12.6-4.fc26.s390x
harfbuzz-1.4.4-1.fc26.s390x
alsa-lib-1.1.4.1-1.fc26.s390x
make-4.2.1-2.fc26.s390x
gobject-introspection-1.52.1-1.fc26.s390x
hicolor-icon-theme-0.15-5.fc26.noarch
gdk-pixbuf2-2.36.9-1.fc26.s390x
libgusb-0.2.11-1.fc26.s390x
libtalloc-2.1.10-2.fc26.s390x
libdhash-0.5.0-34.fc26.s390x
python2-bcrypt-3.1.4-2.fc26.s390x
PyYAML-3.12-3.fc26.s390x
nss-softokn-freebl-3.34.0-1.0.fc26.s390x
kernel-modules-4.13.16-202.fc26.s390x
git-2.13.6-2.fc26.s390x
gnupg2-smime-2.2.3-1.fc26.s390x
openssl-devel-1.1.0g-1.fc26.s390x
python2-dnf-plugins-extras-common-2.0.4-1.fc26.noarch
copy-jdk-configs-3.3-2.fc26.noarch
glusterfs-client-xlators-3.10.8-1.fc26.s390x
libcurl-7.53.1-13.fc26.s390x
bind-libs-lite-9.11.1-4.P3.fc26.s390x
glusterfs-extra-xlators-3.10.8-1.fc26.s390x
python3-setuptools-37.0.0-1.fc26.noarch
kernel-core-4.14.8-200.fc26.s390x
pkgconf-1.3.12-1.fc26.s390x
NetworkManager-1.8.2-4.fc26.s390x
libjpeg-turbo-devel-1.5.3-1.fc26.s390x
lua-5.3.4-7.fc26.s390x
boost-thread-1.63.0-10.fc26.s390x
wget-1.19.2-2.fc26.s390x
libwebp-0.6.1-1.fc26.s390x
kernel-devel-4.14.8-200.fc26.s390x
python3-lxml-4.1.1-1.fc26.s390x
python3-ordered-set-2.0.0-6.fc26.noarch
python3-rpmconf-1.0.19-1.fc26.noarch
python-offtrac-0.1.0-9.fc26.noarch
python2-pycparser-2.14-10.fc26.noarch
python2-sphinx-theme-alabaster-0.7.9-3.fc26.noarch
python2-pysocks-1.6.7-1.fc26.noarch
lua-lpeg-1.0.1-2.fc26.s390x
poppler-0.52.0-10.fc26.s390x
libproxy-0.4.15-2.fc26.s390x
crontabs-1.11-14.20150630git.fc26.noarch
java-1.8.0-openjdk-headless-1.8.0.151-1.b12.fc26.s390x
libev-4.24-2.fc26.s390x
libsigsegv-2.11-1.fc26.s390x
fedora-cert-0.6.0.1-2.fc26.noarch
drpm-0.3.0-6.fc26.s390x
createrepo_c-libs-0.10.0-9.fc26.s390x
python2-cccolutils-1.5-3.fc26.s390x
m17n-lib-1.7.0-6.fc26.s390x
lsscsi-0.28-4.fc26.s390x
python2-koji-1.14.0-1.fc26.noarch
python3-koji-1.14.0-1.fc26.noarch
python3-gpg-1.8.0-12.fc26.s390x
sg3_utils-libs-1.42-1.fc26.s390x
SDL2-2.0.7-2.fc26.s390x
util-linux-2.30.2-1.fc26.s390x
rpcbind-0.2.4-8.rc2.fc26.s390x
s390utils-mon_statd-1.36.1-3.fc26.s390x
GConf2-3.2.6-17.fc26.s390x
systemd-container-233-7.fc26.s390x
usermode-1.111-9.fc26.s390x
pcre-utf32-8.41-3.fc26.s390x
libXt-1.1.5-4.fc26.s390x
libXpm-3.5.12-2.fc26.s390x
at-spi2-core-2.24.1-1.fc26.s390x
cairo-1.14.10-1.fc26.s390x
texlive-kpathsea-bin-svn40473-33.20160520.fc26.2.s390x
texlive-ifluatex-svn41346-33.fc26.2.noarch
texlive-babel-svn40706-33.fc26.2.noarch
texlive-colortbl-svn29803.v1.0a-33.fc26.2.noarch
texlive-marvosym-svn29349.2.2a-33.fc26.2.noarch
texlive-euler-svn17261.2.5-33.fc26.2.noarch
texlive-latexconfig-svn40274-33.fc26.2.noarch
texlive-plain-svn40274-33.fc26.2.noarch
texlive-texconfig-bin-svn29741.0-33.20160520.fc26.2.noarch
giflib-4.1.6-16.fc26.s390x
texlive-microtype-svn41127-33.fc26.2.noarch
texlive-eurosym-svn17265.1.4_subrfix-33.fc26.2.noarch
texlive-symbol-svn31835.0-33.fc26.2.noarch
texlive-chngcntr-svn17157.1.0a-33.fc26.2.noarch
texlive-euenc-svn19795.0.1h-33.fc26.2.noarch
texlive-luatex-svn40963-33.fc26.2.noarch
texlive-knuth-local-svn38627-33.fc26.2.noarch
texlive-mparhack-svn15878.1.4-33.fc26.2.noarch
texlive-rcs-svn15878.0-33.fc26.2.noarch
texlive-texlive-msg-translations-svn41431-33.fc26.2.noarch
texlive-updmap-map-svn41159-33.fc26.2.noarch
texlive-geometry-svn19716.5.6-33.fc26.2.noarch
texlive-memoir-svn41203-33.fc26.2.noarch
texlive-l3kernel-svn41246-33.fc26.2.noarch
texlive-pst-eps-svn15878.1.0-33.fc26.2.noarch
texlive-pst-text-svn15878.1.00-33.fc26.2.noarch
texlive-amscls-svn36804.0-33.fc26.2.noarch
texlive-pst-slpe-svn24391.1.31-33.fc26.2.noarch
texlive-extsizes-svn17263.1.4a-33.fc26.2.noarch
texlive-xetex-def-svn40327-33.fc26.2.noarch
texlive-collection-latex-svn41011-33.20160520.fc26.2.noarch
gstreamer1-plugins-base-1.12.3-1.fc26.s390x
fpc-srpm-macros-1.1-2.fc26.noarch
xorg-x11-proto-devel-7.7-22.fc26.noarch
urw-fonts-2.4-23.fc26.noarch
atk-devel-2.24.0-1.fc26.s390x
ImageMagick-libs-6.9.9.22-1.fc26.s390x
libxcb-devel-1.12-3.fc26.s390x
libXrandr-devel-1.5.1-2.fc26.s390x
libcom_err-devel-1.43.4-2.fc26.s390x
dbus-devel-1.11.18-1.fc26.s390x
libepoxy-devel-1.4.3-1.fc26.s390x
libicu-devel-57.1-7.fc26.s390x
p11-kit-devel-0.23.9-2.fc26.s390x
rpm-build-4.13.0.2-1.fc26.s390x
libssh2-devel-1.8.0-5.fc26.s390x
graphviz-2.40.1-4.fc26.s390x
zlib-static-1.2.11-2.fc26.s390x
mesa-libgbm-devel-17.2.4-2.fc26.s390x
dracut-config-rescue-046-3.1.fc26.s390x
screen-4.6.2-1.fc26.s390x
python-osbs-client-0.39.1-1.fc26.noarch
gcc-gdb-plugin-7.2.1-2.fc26.s390x
pyparsing-2.1.10-3.fc26.noarch
python3-pyasn1-0.2.3-1.fc26.noarch
python2-html5lib-0.999-13.fc26.noarch
teamd-1.27-1.fc26.s390x
hardlink-1.3-1.fc26.s390x
chrpath-0.16-4.fc26.s390x
libgcc-7.2.1-2.fc26.s390x
python-rpm-macros-3-20.fc26.noarch
texlive-pdftex-doc-svn41149-33.fc26.2.noarch
glibc-common-2.25-12.fc26.s390x
libstdc++-7.2.1-2.fc26.s390x
nspr-4.17.0-1.fc26.s390x
grep-3.1-1.fc26.s390x
libgcrypt-1.7.9-1.fc26.s390x
libacl-2.2.52-15.fc26.s390x
cpio-2.12-4.fc26.s390x
libatomic_ops-7.4.4-2.fc26.s390x
p11-kit-0.23.9-2.fc26.s390x
gc-7.6.0-2.fc26.s390x
psmisc-22.21-9.fc26.s390x
systemd-libs-233-7.fc26.s390x
xz-5.2.3-2.fc26.s390x
perl-libs-5.24.3-395.fc26.s390x
kmod-libs-24-1.fc26.s390x
libpcap-1.8.1-3.fc26.s390x
perl-macros-5.24.3-395.fc26.s390x
perl-parent-0.236-2.fc26.noarch
perl-Text-Unidecode-1.30-2.fc26.noarch
newt-0.52.20-1.fc26.s390x
libcomps-0.1.8-3.fc26.s390x
libfontenc-1.1.3-4.fc26.s390x
ipcalc-0.2.0-1.fc26.s390x
libnfnetlink-1.0.1-9.fc26.s390x
libref_array-0.1.5-34.fc26.s390x
perl-Term-Cap-1.17-366.fc26.noarch
perl-Digest-1.17-367.fc26.noarch
perl-SelfLoader-1.23-395.fc26.noarch
perl-Pod-Simple-3.35-2.fc26.noarch
perl-URI-1.71-6.fc26.noarch
cpp-7.2.1-2.fc26.s390x
attr-2.4.47-18.fc26.s390x
gmp-c++-6.1.2-4.fc26.s390x
xapian-core-libs-1.4.4-1.fc26.s390x
system-python-3.6.3-2.fc26.s390x
harfbuzz-icu-1.4.4-1.fc26.s390x
libtevent-0.9.34-1.fc26.s390x
http-parser-2.7.1-5.fc26.s390x
libsodium-1.0.14-1.fc26.s390x
python-gssapi-1.2.0-5.fc26.s390x
nss-softokn-3.34.0-1.0.fc26.s390x
gnupg2-2.2.3-1.fc26.s390x
nss-devel-3.34.0-1.0.fc26.s390x
vim-minimal-8.0.1360-1.fc26.s390x
perl-libnet-3.11-1.fc26.noarch
kernel-devel-4.13.16-202.fc26.s390x
python2-libs-2.7.14-4.fc26.s390x
libwayland-client-1.13.0-3.fc26.s390x
python3-dnf-2.7.5-2.fc26.noarch
glusterfs-fuse-3.10.8-1.fc26.s390x
pcre2-utf32-10.23-11.fc26.s390x
kernel-modules-4.14.8-200.fc26.s390x
pkgconf-pkg-config-1.3.12-1.fc26.s390x
NetworkManager-ppp-1.8.2-4.fc26.s390x
wayland-devel-1.13.0-3.fc26.s390x
kernel-4.14.8-200.fc26.s390x
boost-random-1.63.0-10.fc26.s390x
libmicrohttpd-0.9.58-1.fc26.s390x
mailx-12.5-24.fc26.s390x
NetworkManager-glib-1.8.2-4.fc26.s390x
libcroco-0.6.12-1.fc26.s390x
libssh2-1.8.0-5.fc26.s390x
json-glib-1.2.6-1.fc26.s390x
libevent-2.0.22-3.fc26.s390x
gdk-pixbuf2-modules-2.36.9-1.fc26.s390x
colord-libs-1.3.5-1.fc26.s390x
python3-magic-5.30-11.fc26.noarch
python3-gobject-base-3.24.1-1.fc26.s390x
python3-pyroute2-0.4.13-1.fc26.noarch
python3-pysocks-1.6.7-1.fc26.noarch
python2-click-6.7-3.fc26.noarch
python-munch-2.1.0-2.fc26.noarch
python2-ply-3.9-3.fc26.noarch
python2-snowballstemmer-1.2.1-3.fc26.noarch
python-magic-5.30-11.fc26.noarch
python-beautifulsoup4-4.6.0-1.fc26.noarch
python2-gitdb-2.0.3-1.fc26.noarch
librados-devel-10.2.7-2.fc26.s390x
libcacard-2.5.3-1.fc26.s390x
libmodman-2.0.1-13.fc26.s390x
zziplib-0.13.62-8.fc26.s390x
lksctp-tools-1.0.16-6.fc26.s390x
procmail-3.22-44.fc26.s390x
libthai-0.1.25-2.fc26.s390x
libpipeline-1.4.1-3.fc26.s390x
python2-pycurl-7.43.0-8.fc26.s390x
deltarpm-3.6-19.fc26.s390x
subversion-libs-1.9.7-1.fc26.s390x
python-krbV-1.0.90-13.fc26.s390x
m17n-db-1.7.0-8.fc26.noarch
linux-atm-libs-2.5.1-17.fc26.s390x
python2-rpm-4.13.0.2-1.fc26.s390x
python2-librepo-1.8.0-1.fc26.s390x
python2-dnf-plugins-core-2.1.5-1.fc26.noarch
qrencode-libs-3.4.4-1.fc26.s390x
s390utils-iucvterm-1.36.1-3.fc26.s390x
libsmartcols-2.30.2-1.fc26.s390x
dbus-1.11.18-1.fc26.s390x
systemd-udev-233-7.fc26.s390x
device-mapper-event-1.02.137-6.fc26.s390x
polkit-0.113-8.fc26.s390x
mock-1.4.7-2.fc26.noarch
libwmf-lite-0.2.8.4-53.fc26.s390x
libXcomposite-0.4.4-9.fc26.s390x
libXcursor-1.1.14-8.fc26.s390x
at-spi2-atk-2.24.1-1.fc26.s390x
pango-1.40.12-1.fc26.s390x
texlive-metafont-bin-svn40987-33.20160520.fc26.2.s390x
texlive-url-svn32528.3.4-33.fc26.2.noarch
texlive-fp-svn15878.0-33.fc26.2.noarch
texlive-latex-fonts-svn28888.0-33.fc26.2.noarch
texlive-mptopdf-bin-svn18674.0-33.20160520.fc26.2.noarch
texlive-fancybox-svn18304.1.4-33.fc26.2.noarch
texlive-lua-alt-getopt-svn29349.0.7.0-33.fc26.2.noarch
texlive-tex-bin-svn40987-33.20160520.fc26.2.s390x
texlive-texconfig-svn40768-33.fc26.2.noarch
texlive-wasy2-ps-svn35830.0-33.fc26.2.noarch
texlive-psfrag-svn15878.3.04-33.fc26.2.noarch
texlive-helvetic-svn31835.0-33.fc26.2.noarch
texlive-times-svn35058.0-33.fc26.2.noarch
texlive-cite-svn36428.5.5-33.fc26.2.noarch
texlive-fancyhdr-svn15878.3.1-33.fc26.2.noarch
texlive-luatex-bin-svn41091-33.20160520.fc26.2.s390x
texlive-lm-math-svn36915.1.959-33.fc26.2.noarch
texlive-ntgclass-svn15878.2.1a-33.fc26.2.noarch
texlive-sansmath-svn17997.1.1-33.fc26.2.noarch
texlive-textcase-svn15878.0-33.fc26.2.noarch
texlive-unicode-data-svn39808-33.fc26.2.noarch
texlive-breakurl-svn29901.1.40-33.fc26.2.noarch
texlive-latex-svn40218-33.fc26.2.noarch
texlive-lualatex-math-svn40621-33.fc26.2.noarch
texlive-pst-coil-svn37377.1.07-33.fc26.2.noarch
texlive-pst-plot-svn41242-33.fc26.2.noarch
texlive-unicode-math-svn38462-33.fc26.2.noarch
texlive-pst-blur-svn15878.2.0-33.fc26.2.noarch
texlive-cm-super-svn15878.0-33.fc26.2.noarch
texlive-wasysym-svn15878.2.0-33.fc26.2.noarch
texlive-collection-fontsrecommended-svn35830.0-33.20160520.fc26.2.noarch
libXv-1.0.11-2.fc26.s390x
ghc-srpm-macros-1.4.2-5.fc26.noarch
latex2html-2017.2-2.fc26.noarch
libXau-devel-1.0.8-7.fc26.s390x
libXcursor-devel-1.1.14-8.fc26.s390x
graphite2-devel-1.3.10-1.fc26.s390x
pixman-devel-0.34.0-3.fc26.s390x
wayland-protocols-devel-1.9-1.fc26.noarch
mesa-libGLES-devel-17.2.4-2.fc26.s390x
redhat-rpm-config-63-1.fc26.noarch
vte291-devel-0.48.4-1.fc26.s390x
ceph-devel-compat-10.2.7-2.fc26.s390x
lzo-devel-2.08-9.fc26.s390x
libiscsi-devel-1.15.0-3.fc26.s390x
libfdt-devel-1.4.5-1.fc26.s390x
dnsmasq-2.76-5.fc26.s390x
avahi-autoipd-0.6.32-7.fc26.s390x
rpm-plugin-systemd-inhibit-4.13.0.2-1.fc26.s390x
gcc-c++-7.2.1-2.fc26.s390x
python2-ndg_httpsclient-0.4.0-7.fc26.noarch
gettext-0.19.8.1-9.fc26.s390x
btrfs-progs-4.9.1-2.fc26.s390x
fedora-logos-26.0.1-1.fc26.s390x
dejagnu-1.6-2.fc26.noarch
libaio-devel-0.3.110-7.fc26.s390x
dos2unix-7.3.4-2.fc26.s390x
distribution-gpg-keys-1.15-1.fc26.noarch
python-sphinx-locale-1.5.5-1.fc26.noarch
python2-rpm-macros-3-20.fc26.noarch
libxml2-2.9.4-2.fc26.s390x
popt-1.16-12.fc26.s390x
tar-1.29-5.fc26.s390x
avahi-libs-0.6.32-7.fc26.s390x
m4-1.4.18-3.fc26.s390x
perl-Socket-2.024-2.fc26.s390x
perl-Time-Local-1.250-2.fc26.noarch
libmetalink-0.1.3-2.fc26.s390x
jbigkit-libs-2.1-6.fc26.s390x
netpbm-10.80.00-2.fc26.s390x
perl-Digest-MD5-2.55-3.fc26.s390x
perl-Getopt-Long-2.49.1-2.fc26.noarch
libglvnd-opengl-1.0.0-1.fc26.s390x
libattr-devel-2.4.47-18.fc26.s390x
teckit-2.5.1-16.fc26.s390x
python3-six-1.10.0-9.fc26.noarch
python3-libcomps-0.1.8-3.fc26.s390x
gtk-update-icon-cache-3.22.21-2.fc26.s390x
python3-3.6.3-2.fc26.s390x
python3-pyparsing-2.1.10-3.fc26.noarch
python2-markupsafe-0.23-13.fc26.s390x
python2-mock-2.0.0-4.fc26.noarch
python2-yubico-1.3.2-7.fc26.noarch
python2-smmap-2.0.3-1.fc26.noarch
librbd-devel-10.2.7-2.fc26.s390x
pigz-2.3.4-2.fc26.s390x
gcc-7.2.1-2.fc26.s390x
libnghttp2-1.21.1-1.fc26.s390x
cups-libs-2.2.2-7.fc26.s390x
libnfsidmap-0.27-1.fc26.s390x
ykpers-1.18.0-2.fc26.s390x
python3-librepo-1.8.0-1.fc26.s390x
systemtap-runtime-3.2-2.fc26.s390x
geoclue2-2.4.5-4.fc26.s390x
initscripts-9.72-1.fc26.s390x
plymouth-0.9.3-0.7.20160620git0e65b86c.fc26.s390x
ebtables-2.0.10-22.fc26.s390x
gssproxy-0.7.0-9.fc26.s390x
libXext-1.3.3-5.fc26.s390x
mesa-libEGL-17.2.4-2.fc26.s390x
texlive-texlive.infra-bin-svn40312-33.20160520.fc26.2.s390x
texlive-thumbpdf-svn34621.3.16-33.fc26.2.noarch
texlive-carlisle-svn18258.0-33.fc26.2.noarch
texlive-gsftopk-svn40768-33.fc26.2.noarch
texlive-pdftex-svn41149-33.fc26.2.noarch
texlive-crop-svn15878.1.5-33.fc26.2.noarch
texlive-pxfonts-svn15878.0-33.fc26.2.noarch
texlive-enctex-svn34957.0-33.fc26.2.noarch
texlive-kastrup-svn15878.0-33.fc26.2.noarch
texlive-pspicture-svn15878.0-33.fc26.2.noarch
texlive-varwidth-svn24104.0.92-33.fc26.2.noarch
texlive-currfile-svn40725-33.fc26.2.noarch
texlive-pst-grad-svn15878.1.06-33.fc26.2.noarch
texlive-latex-bin-svn41438-33.fc26.2.noarch
texlive-ltxmisc-svn21927.0-33.fc26.2.noarch
lasi-1.1.2-7.fc26.s390x
adwaita-icon-theme-3.24.0-2.fc26.noarch
xz-devel-5.2.3-2.fc26.s390x
xorg-x11-fonts-Type1-7.5-17.fc26.noarch
libXi-devel-1.7.9-2.fc26.s390x
at-spi2-atk-devel-2.24.1-1.fc26.s390x
pango-devel-1.40.12-1.fc26.s390x
libcacard-devel-2.5.3-1.fc26.s390x
libseccomp-devel-2.3.2-1.fc26.s390x
subversion-1.9.7-1.fc26.s390x
sudo-1.8.21p2-1.fc26.s390x
pykickstart-2.35-2.fc26.noarch
e2fsprogs-1.43.4-2.fc26.s390x
libstdc++-static-7.2.1-2.fc26.s390x
libbsd-0.8.3-3.fc26.s390x
c-ares-1.13.0-1.fc26.s390x
python2-pyxdg-0.25-12.fc26.noarch
nss-softokn-freebl-devel-3.34.0-1.0.fc26.s390x
python2-rpkg-1.51-2.fc26.noarch
strace-4.20-1.fc26.s390x
valgrind-3.13.0-12.fc26.s390x
libsss_idmap-1.16.0-4.fc26.s390x
gnutls-c++-3.5.16-4.fc26.s390x
libwayland-server-1.13.0-3.fc26.s390x
dhcp-client-4.3.5-10.fc26.s390x
bind-libs-9.11.1-4.P3.fc26.s390x
man-pages-4.09-4.fc26.noarch
gpg-pubkey-a29cb19c-53bcbba6
quota-nls-4.03-9.fc26.noarch
qt5-srpm-macros-5.8.0-2.fc26.noarch
xz-libs-5.2.3-2.fc26.s390x
gmp-6.1.2-4.fc26.s390x
audit-libs-2.8.1-1.fc26.s390x
file-5.30-11.fc26.s390x
libusbx-1.0.21-2.fc26.s390x
binutils-2.27-28.fc26.s390x
perl-Errno-1.25-395.fc26.s390x
perl-HTTP-Tiny-0.070-2.fc26.noarch
xml-common-0.6.3-45.fc26.noarch
opus-1.2.1-1.fc26.s390x
kernel-devel-4.13.13-200.fc26.s390x
perl-podlators-4.09-2.fc26.noarch
flac-libs-1.3.2-2.fc26.s390x
libacl-devel-2.2.52-15.fc26.s390x
coreutils-common-8.27-7.fc26.s390x
cracklib-2.9.6-5.fc26.s390x
pyliblzma-0.5.3-17.fc26.s390x
libnotify-0.7.7-2.fc26.s390x
python3-idna-2.5-1.fc26.noarch
python3-pyOpenSSL-16.2.0-6.fc26.noarch
python2-pbr-1.10.0-4.fc26.noarch
pyusb-1.0.0-4.fc26.noarch
python2-fedora-0.9.0-6.fc26.noarch
librbd1-10.2.7-2.fc26.s390x
pcre-cpp-8.41-3.fc26.s390x
glibc-devel-2.25-12.fc26.s390x
libnfs-1.9.8-3.fc26.s390x
libsolv-0.6.30-2.fc26.s390x
python3-pycurl-7.43.0-8.fc26.s390x
libyubikey-1.13-3.fc26.s390x
rpmlint-1.10-5.fc26.noarch
python2-pygpgme-0.3-22.fc26.s390x
s390utils-base-1.36.1-3.fc26.s390x
ppp-2.4.7-11.fc26.s390x
s390utils-cpuplugd-1.36.1-3.fc26.s390x
nfs-utils-2.1.1-6.rc6.fc26.s390x
libXrender-0.9.10-2.fc26.s390x
libglvnd-gles-1.0.0-1.fc26.s390x
texlive-texlive.infra-svn41280-33.fc26.2.noarch
texlive-lm-svn28119.2.004-33.fc26.2.noarch
texlive-babelbib-svn25245.1.31-33.fc26.2.noarch
texlive-index-svn24099.4.1beta-33.fc26.2.noarch
texlive-pdftex-bin-svn40987-33.20160520.fc26.2.s390x
texlive-csquotes-svn39538-33.fc26.2.noarch
texlive-rsfs-svn15878.0-33.fc26.2.noarch
texlive-etex-svn37057.0-33.fc26.2.noarch
texlive-knuth-lib-svn35820.0-33.fc26.2.noarch
texlive-pst-math-svn34786.0.63-33.fc26.2.noarch
texlive-utopia-svn15878.0-33.fc26.2.noarch
texlive-eso-pic-svn37925.2.0g-33.fc26.2.noarch
texlive-pst-fill-svn15878.1.01-33.fc26.2.noarch
texlive-latex-bin-bin-svn14050.0-33.20160520.fc26.2.noarch
texlive-jknapltx-svn19440.0-33.fc26.2.noarch
texlive-collection-latexrecommended-svn35765.0-33.20160520.fc26.2.noarch
adwaita-cursor-theme-3.24.0-2.fc26.noarch
xorg-x11-fonts-ISO8859-1-100dpi-7.5-17.fc26.noarch
libXcomposite-devel-0.4.4-9.fc26.s390x
at-spi2-core-devel-2.24.1-1.fc26.s390x
harfbuzz-devel-1.4.4-1.fc26.s390x
rpmdevtools-8.10-2.fc26.noarch
texi2html-5.0-5.fc26.noarch
libnfs-devel-1.9.8-3.fc26.s390x
firewalld-0.4.4.5-1.fc26.noarch
wpa_supplicant-2.6-12.fc26.s390x
systemtap-sdt-devel-3.2-2.fc26.s390x
newt-python-0.52.20-1.fc26.s390x
perl-Mozilla-CA-20160104-4.fc26.noarch
pth-2.0.7-28.fc26.s390x
python3-pyxdg-0.25-12.fc26.noarch
nss-softokn-devel-3.34.0-1.0.fc26.s390x
fedpkg-1.30-4.fc26.noarch
timedatex-0.4-3.fc26.s390x
libjpeg-turbo-1.5.3-1.fc26.s390x
glusterfs-cli-3.10.8-1.fc26.s390x
libsss_nss_idmap-1.16.0-4.fc26.s390x
gdb-8.0.1-33.fc26.s390x
dnf-yum-2.7.5-2.fc26.noarch
perl-Data-Dumper-2.161-3.fc26.s390x
python-async-0.6.1-9.fc22.s390x
poppler-data-0.4.7-7.fc26.noarch
ocaml-srpm-macros-4-2.fc26.noarch
libuuid-2.30.2-1.fc26.s390x
libgpg-error-1.25-2.fc26.s390x
libassuan-2.4.3-2.fc26.s390x
graphite2-1.3.10-1.fc26.s390x
perl-Text-Tabs+Wrap-2013.0523-366.fc26.noarch
perl-Error-0.17024-8.fc26.noarch
which-2.21-2.fc26.s390x
libXau-1.0.8-7.fc26.s390x
orc-0.4.27-1.fc26.s390x
perl-Pod-Perldoc-3.28-1.fc26.noarch
libsndfile-1.0.28-6.fc26.s390x
patch-2.7.5-4.fc26.s390x
gzip-1.8-2.fc26.s390x
python-ipaddress-1.0.16-4.fc26.noarch
yum-metadata-parser-1.1.4-18.fc26.s390x
python3-dbus-1.2.4-6.fc26.s390x
python3-cryptography-2.0.2-2.fc26.s390x
python3-kickstart-2.35-2.fc26.noarch
python2-imagesize-0.7.1-5.fc26.noarch
python2-jinja2-2.9.6-1.fc26.noarch
libradosstriper-devel-10.2.7-2.fc26.s390x
soundtouch-1.9.2-4.fc26.s390x
glibc-headers-2.25-12.fc26.s390x
libndp-1.6-2.fc26.s390x
rpm-4.13.0.2-1.fc26.s390x
rest-0.8.0-2.fc26.s390x
libvisual-0.4.0-21.fc26.s390x
python2-hawkey-0.11.1-1.fc26.s390x
dnf-plugins-core-2.1.5-1.fc26.noarch
fakeroot-libs-1.22-1.fc26.s390x
device-mapper-event-libs-1.02.137-6.fc26.s390x
cyrus-sasl-2.1.26-32.fc26.s390x
kernel-modules-4.13.13-200.fc26.s390x
cronie-anacron-1.5.1-5.fc26.s390x
libpath_utils-0.2.1-34.fc26.s390x
libX11-common-1.6.5-2.fc26.noarch
libXft-2.3.2-5.fc26.s390x
gtk2-2.24.31-4.fc26.s390x
texlive-etoolbox-svn38031.2.2a-33.fc26.2.noarch
texlive-multido-svn18302.1.42-33.fc26.2.noarch
texlive-glyphlist-svn28576.0-33.fc26.2.noarch
texlive-setspace-svn24881.6.7a-33.fc26.2.noarch
texlive-mathtools-svn38833-33.fc26.2.noarch
texlive-ncntrsbk-svn31835.0-33.fc26.2.noarch
texlive-dvisvgm-def-svn41011-33.fc26.2.noarch
texlive-ifetex-svn24853.1.2-33.fc26.2.noarch
texlive-parskip-svn19963.2.0-33.fc26.2.noarch
texlive-bera-svn20031.0-33.fc26.2.noarch
texlive-pgf-svn40966-33.fc26.2.noarch
texlive-auto-pst-pdf-svn23723.0.6-33.fc26.2.noarch
texlive-ctable-svn38672-33.fc26.2.noarch
texlive-typehtml-svn17134.0-33.fc26.2.noarch
mesa-libGLES-17.2.4-2.fc26.s390x
vte291-0.48.4-1.fc26.s390x
libdrm-devel-2.4.88-1.fc26.s390x
libcephfs_jni1-10.2.7-2.fc26.s390x
bzip2-devel-1.0.6-22.fc26.s390x
expat-devel-2.2.4-1.fc26.s390x
libsepol-devel-2.6-2.fc26.s390x
glib2-static-2.52.3-2.fc26.s390x
virglrenderer-devel-0.6.0-1.20170210git76b3da97b.fc26.s390x
yum-utils-1.1.31-512.fc26.noarch
parted-3.2-24.fc26.s390x
python3-beautifulsoup4-4.6.0-1.fc26.noarch
python-bunch-1.0.1-10.fc26.noarch
perl-Time-HiRes-1.9746-1.fc26.s390x
lz4-1.8.0-1.fc26.s390x
nss-util-3.34.0-1.0.fc26.s390x
openssh-clients-7.5p1-4.fc26.s390x
chrony-3.2-1.fc26.s390x
dnf-conf-2.7.5-2.fc26.noarch
glusterfs-server-3.10.8-1.fc26.s390x
sssd-client-1.16.0-4.fc26.s390x
man-db-2.7.6.1-8.fc26.s390x
bodhi-client-2.12.2-3.fc26.noarch
perl-Module-CoreList-5.20171120-1.fc26.noarch
hawkey-0.6.4-3.fc25.s390x
python-srpm-macros-3-20.fc26.noarch
perl-srpm-macros-1-21.fc26.noarch
expat-2.2.4-1.fc26.s390x
chkconfig-1.10-1.fc26.s390x
findutils-4.6.0-12.fc26.s390x
mesa-libwayland-egl-17.2.4-2.fc26.s390x
procps-ng-3.3.10-13.fc26.s390x
mesa-libglapi-17.2.4-2.fc26.s390x
perl-Unicode-Normalize-1.25-366.fc26.s390x
perl-IO-Socket-IP-0.39-1.fc26.noarch
hunspell-en-US-0.20140811.1-6.fc26.noarch
libxcb-1.12-3.fc26.s390x
libgo-devel-7.2.1-2.fc26.s390x
perl-Pod-Escapes-1.07-366.fc26.noarch
perl-Pod-Usage-1.69-2.fc26.noarch
libtheora-1.1.1-15.fc26.s390x
tcp_wrappers-7.6-85.fc26.s390x
coreutils-8.27-7.fc26.s390x
libmount-2.30.2-1.fc26.s390x
python2-iniparse-0.4-24.fc26.noarch
python2-decorator-4.0.11-2.fc26.noarch
ModemManager-glib-1.6.10-1.fc26.s390x
python3-decorator-4.0.11-2.fc26.noarch
python3-cffi-1.9.1-2.fc26.s390x
python-bugzilla-cli-2.1.0-1.fc26.noarch
python2-funcsigs-1.0.2-5.fc26.noarch
python2-babel-2.3.4-5.fc26.noarch
python-bugzilla-2.1.0-1.fc26.noarch
libradosstriper1-10.2.7-2.fc26.s390x
snappy-1.1.4-3.fc26.s390x
dtc-1.4.5-1.fc26.s390x
libmpcdec-1.2.6-17.fc26.s390x
rpm-libs-4.13.0.2-1.fc26.s390x
python-urlgrabber-3.10.1-11.fc26.noarch
sysfsutils-2.1.0-20.fc26.s390x
python3-hawkey-0.11.1-1.fc26.s390x
python3-dnf-plugins-core-2.1.5-1.fc26.noarch
ethtool-4.13-1.fc26.s390x
iputils-20161105-5.fc26.s390x
plymouth-scripts-0.9.3-0.7.20160620git0e65b86c.fc26.s390x
cronie-1.5.1-5.fc26.s390x
libini_config-1.3.1-34.fc26.s390x
libX11-1.6.5-2.fc26.s390x
libglvnd-egl-1.0.0-1.fc26.s390x
texlive-kpathsea-svn41139-33.fc26.2.noarch
texlive-thumbpdf-bin-svn6898.0-33.20160520.fc26.2.noarch
texlive-subfig-svn15878.1.3-33.fc26.2.noarch
texlive-gsftopk-bin-svn40473-33.20160520.fc26.2.s390x
texlive-tex-ini-files-svn40533-33.fc26.2.noarch
texlive-qstest-svn15878.0-33.fc26.2.noarch
texlive-palatino-svn31835.0-33.fc26.2.noarch
texlive-ec-svn25033.1.0-33.fc26.2.noarch
texlive-iftex-svn29654.0.2-33.fc26.2.noarch
texlive-pslatex-svn16416.0-33.fc26.2.noarch
texlive-algorithms-svn38085.0.1-33.fc26.2.noarch
texlive-filehook-svn24280.0.5d-33.fc26.2.noarch
texlive-pst-node-svn40743-33.fc26.2.noarch
texlive-rotating-svn16832.2.16b-33.fc26.2.noarch
texlive-seminar-svn34011.1.62-33.fc26.2.noarch
gtk3-3.22.21-2.fc26.s390x
libuuid-devel-2.30.2-1.fc26.s390x
java-1.8.0-openjdk-1.8.0.151-1.b12.fc26.s390x
libXinerama-devel-1.1.3-7.fc26.s390x
emacs-common-25.3-3.fc26.s390x
gtk3-devel-3.22.21-2.fc26.s390x
fedora-packager-0.6.0.1-2.fc26.noarch
libxml2-devel-2.9.4-2.fc26.s390x
snappy-devel-1.1.4-3.fc26.s390x
python2-dnf-plugin-migrate-2.1.5-1.fc26.noarch
authconfig-7.0.1-2.fc26.s390x
newt-python3-0.52.20-1.fc26.s390x
python-decoratortools-1.8-13.fc26.noarch
python-systemd-doc-234-1.fc26.s390x
openssl-libs-1.1.0g-1.fc26.s390x
git-core-2.13.6-2.fc26.s390x
python3-dnf-plugin-system-upgrade-2.0.4-1.fc26.noarch
glusterfs-libs-3.10.8-1.fc26.s390x
ca-certificates-2017.2.20-1.0.fc26.noarch
unbound-libs-1.6.7-1.fc26.s390x
libsss_certmap-1.16.0-4.fc26.s390x
glusterfs-api-devel-3.10.8-1.fc26.s390x
selinux-policy-targeted-3.13.1-260.17.fc26.noarch
publicsuffix-list-dafsa-20171028-1.fc26.noarch
gpg-pubkey-a0a7badb-52844296
gpg-pubkey-e372e838-56fd7943
gpg-pubkey-3b921d09-57a87096
google-roboto-slab-fonts-1.100263-0.5.20150923git.fc26.noarch
libreport-filesystem-2.9.1-3.fc26.s390x
glibc-all-langpacks-2.25-12.fc26.s390x
libcom_err-1.43.4-2.fc26.s390x
libffi-3.1-12.fc26.s390x
keyutils-libs-1.5.10-1.fc26.s390x
diffutils-3.5-3.fc26.s390x
apr-util-1.5.4-6.fc26.s390x
bluez-libs-5.46-6.fc26.s390x
libksba-1.3.5-3.fc26.s390x
ncurses-6.0-8.20170212.fc26.s390x
gsm-1.0.17-1.fc26.s390x
libteam-1.27-1.fc26.s390x
perl-Fedora-VSP-0.001-5.fc26.noarch
libusb-0.1.5-8.fc26.s390x
acl-2.2.52-15.fc26.s390x
dwz-0.12-3.fc26.s390x
libblkid-2.30.2-1.fc26.s390x
polkit-libs-0.113-8.fc26.s390x
dbus-python-1.2.4-6.fc26.s390x
gts-0.7.6-30.20121130.fc26.s390x
libfdisk-2.30.2-1.fc26.s390x
python3-pycparser-2.14-10.fc26.noarch
python3-bugzilla-2.1.0-1.fc26.noarch
python2-docutils-0.13.1-4.fc26.noarch
pytz-2016.10-4.fc26.noarch
python2-requests-2.13.0-1.fc26.noarch
libcephfs-devel-10.2.7-2.fc26.s390x
ncurses-c++-libs-6.0-8.20170212.fc26.s390x
GeoIP-1.6.11-1.fc26.s390x
liblockfile-1.09-5.fc26.s390x
rpm-plugin-selinux-4.13.0.2-1.fc26.s390x
systemtap-devel-3.2-2.fc26.s390x
libsysfs-2.1.0-20.fc26.s390x
libdnf-0.11.1-1.fc26.s390x
libgfortran-7.2.1-2.fc26.s390x
mesa-libgbm-17.2.4-2.fc26.s390x
dracut-046-3.1.fc26.s390x
lvm2-libs-2.02.168-6.fc26.s390x
libXfixes-5.0.3-2.fc26.s390x
brlapi-0.6.6-5.fc26.s390x
texlive-metafont-svn40793-33.fc26.2.noarch
texlive-graphics-cfg-svn40269-33.fc26.2.noarch
texlive-mptopdf-svn41282-33.fc26.2.noarch
texlive-makeindex-bin-svn40473-33.20160520.fc26.2.s390x
texlive-texlive-scripts-bin-svn29741.0-33.20160520.fc26.2.noarch
texlive-sauerj-svn15878.0-33.fc26.2.noarch
texlive-txfonts-svn15878.0-33.fc26.2.noarch
texlive-filecontents-svn24250.1.3-33.fc26.2.noarch
texlive-lualibs-svn40370-33.fc26.2.noarch
texlive-section-svn20180.0-33.fc26.2.noarch
texlive-ucharcat-svn38907-33.fc26.2.noarch
texlive-hyperref-svn41396-33.fc26.2.noarch
texlive-pst-3d-svn17257.1.10-33.fc26.2.noarch
texlive-oberdiek-svn41346-33.fc26.2.noarch
texlive-ae-svn15878.1.4-33.fc26.2.noarch
texlive-collection-basic-svn41149-33.20160520.fc26.2.noarch
gnat-srpm-macros-4-2.fc26.noarch
glib2-devel-2.52.3-2.fc26.s390x
netpbm-progs-10.80.00-2.fc26.s390x
libXxf86vm-devel-1.1.4-4.fc26.s390x
nettle-devel-3.3-2.fc26.s390x
cairo-gobject-devel-1.14.10-1.fc26.s390x
fedora-rpm-macros-26-2.fc26.noarch
elfutils-devel-0.169-1.fc26.s390x
libidn-devel-1.33-2.fc26.s390x
s390utils-1.36.1-3.fc26.s390x
gcc-gfortran-7.2.1-2.fc26.s390x
libtool-2.4.6-17.fc26.s390x
python3-cssselect-0.9.2-4.fc26.noarch
python2-cssselect-0.9.2-4.fc26.noarch
bison-3.0.4-6.fc26.s390x
rootfiles-8.1-20.fc26.noarch
git-core-doc-2.13.6-2.fc26.s390x
vim-enhanced-8.0.1360-1.fc26.s390x
glusterfs-3.10.8-1.fc26.s390x
boost-system-1.63.0-10.fc26.s390x
gnutls-dane-3.5.16-4.fc26.s390x
pkgconf-m4-1.3.12-1.fc26.noarch
libcurl-devel-7.53.1-13.fc26.s390x
python3-urllib3-1.20-2.fc26.noarch
libsss_autofs-1.16.0-4.fc26.s390x
=== TEST BEGIN ===
Using CC: /home/fam/bin/cc
Install prefix    /var/tmp/patchew-tester-tmp-hek3vjny/src/install
BIOS directory    /var/tmp/patchew-tester-tmp-hek3vjny/src/install/share/qemu
firmware path     /var/tmp/patchew-tester-tmp-hek3vjny/src/install/share/qemu-firmware
binary directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/bin
library directory /var/tmp/patchew-tester-tmp-hek3vjny/src/install/lib
module directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/lib/qemu
libexec directory /var/tmp/patchew-tester-tmp-hek3vjny/src/install/libexec
include directory /var/tmp/patchew-tester-tmp-hek3vjny/src/install/include
config directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/etc
local state directory   /var/tmp/patchew-tester-tmp-hek3vjny/src/install/var
Manual directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /var/tmp/patchew-tester-tmp-hek3vjny/src
GIT binary        git
GIT submodules    ui/keycodemapdb capstone
C compiler        /home/fam/bin/cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler /home/fam/bin/cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1   -Werror -DHAS_LIBSSH2_SFTP_FSYNC -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include  -DNCURSES_WIDECHAR -D_GNU_SOURCE -D_DEFAULT_SOURCE  -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wexpansion-to-defined -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/include/p11-kit-1     -I/usr/include/libpng16  -I/usr/include/libdrm   -I$(SRC_PATH)/capstone/include
LDFLAGS           -Wl,--warn-common -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          s390x
host big endian   yes
target list       aarch64-softmmu alpha-softmmu arm-softmmu cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu microblazeel-softmmu microblaze-softmmu mips64el-softmmu mips64-softmmu mipsel-softmmu mips-softmmu moxie-softmmu nios2-softmmu or1k-softmmu ppc64-softmmu ppcemb-softmmu ppc-softmmu s390x-softmmu sh4eb-softmmu sh4-softmmu sparc64-softmmu sparc-softmmu tricore-softmmu unicore32-softmmu x86_64-softmmu xtensaeb-softmmu xtensa-softmmu aarch64_be-linux-user aarch64-linux-user alpha-linux-user armeb-linux-user arm-linux-user cris-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblazeel-linux-user microblaze-linux-user mips64el-linux-user mips64-linux-user mipsel-linux-user mips-linux-user mipsn32el-linux-user mipsn32-linux-user nios2-linux-user or1k-linux-user ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user ppc-linux-user s390x-linux-user sh4eb-linux-user sh4-linux-user sparc32plus-linux-user sparc64-linux-user sparc-linux-user tilegx-linux-user x86_64-linux-user
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (2.0.7)
GTK support       yes (3.22.21)
GTK GL support    yes
VTE support       yes (0.48.4)
TLS priority      NORMAL
GNUTLS support    yes
GNUTLS rnd        yes
libgcrypt         no
libgcrypt kdf     no
nettle            yes (3.3)
nettle kdf        yes
libtasn1          yes
curses support    yes
virgl support     yes
curl support      yes
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    yes
Multipath support no
VNC support       yes
VNC SASL support  yes
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    yes
bluez  support    yes
Documentation     yes
PIE               no
vde support       no
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
HVF support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
malloc trim support yes
RDMA support      no
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support yes
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       yes
xfsctl support    no
smartcard support yes
libusb            yes
usb net redir     yes
OpenGL support    yes
OpenGL dmabufs    yes
libiscsi support  yes
libnfs support    yes
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   yes
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support yes
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   yes
TPM passthrough   no
TPM emulator      yes
QOM debugging     yes
Live block migration yes
lzo support       yes
snappy support    yes
bzip2 support     yes
NUMA host support no
libxml2           yes
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
capstone          git
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak
  GEN     i386-softmmu/config-devices.mak.tmp
  GEN     aarch64-softmmu/config-devices.mak
  GEN     lm32-softmmu/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak
  GEN     m68k-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak
  GEN     microblazeel-softmmu/config-devices.mak.tmp
  GEN     lm32-softmmu/config-devices.mak
  GEN     microblaze-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak
  GEN     mips64el-softmmu/config-devices.mak.tmp
  GEN     microblaze-softmmu/config-devices.mak
  GEN     m68k-softmmu/config-devices.mak
  GEN     i386-softmmu/config-devices.mak
  GEN     mips64-softmmu/config-devices.mak.tmp
  GEN     mipsel-softmmu/config-devices.mak.tmp
  GEN     mips-softmmu/config-devices.mak.tmp
  GEN     mips-softmmu/config-devices.mak
  GEN     mips64el-softmmu/config-devices.mak
  GEN     moxie-softmmu/config-devices.mak.tmp
  GEN     nios2-softmmu/config-devices.mak.tmp
  GEN     mips64-softmmu/config-devices.mak
  GEN     or1k-softmmu/config-devices.mak.tmp
  GEN     or1k-softmmu/config-devices.mak
  GEN     mipsel-softmmu/config-devices.mak
  GEN     nios2-softmmu/config-devices.mak
  GEN     ppc64-softmmu/config-devices.mak.tmp
  GEN     moxie-softmmu/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak.tmp
  GEN     s390x-softmmu/config-devices.mak.tmp
  GEN     s390x-softmmu/config-devices.mak
  GEN     sh4eb-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak
  GEN     sh4-softmmu/config-devices.mak.tmp
  GEN     ppc64-softmmu/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak
  GEN     sparc64-softmmu/config-devices.mak.tmp
  GEN     sparc-softmmu/config-devices.mak.tmp
  GEN     sparc-softmmu/config-devices.mak
  GEN     tricore-softmmu/config-devices.mak.tmp
  GEN     tricore-softmmu/config-devices.mak
  GEN     unicore32-softmmu/config-devices.mak.tmp
  GEN     sh4-softmmu/config-devices.mak
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     unicore32-softmmu/config-devices.mak
  GEN     sh4eb-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak.tmp
  GEN     sparc64-softmmu/config-devices.mak
  GEN     xtensa-softmmu/config-devices.mak.tmp
  GEN     aarch64_be-linux-user/config-devices.mak.tmp
  GEN     xtensaeb-softmmu/config-devices.mak
  GEN     xtensa-softmmu/config-devices.mak
  GEN     aarch64-linux-user/config-devices.mak.tmp
  GEN     aarch64_be-linux-user/config-devices.mak
  GEN     alpha-linux-user/config-devices.mak.tmp
  GEN     x86_64-softmmu/config-devices.mak
  GEN     armeb-linux-user/config-devices.mak.tmp
  GEN     armeb-linux-user/config-devices.mak
  GEN     arm-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak.tmp
  GEN     aarch64-linux-user/config-devices.mak
  GEN     hppa-linux-user/config-devices.mak.tmp
  GEN     arm-linux-user/config-devices.mak
  GEN     i386-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak
  GEN     alpha-linux-user/config-devices.mak
  GEN     hppa-linux-user/config-devices.mak
  GEN     m68k-linux-user/config-devices.mak.tmp
  GEN     microblazeel-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak.tmp
  GEN     i386-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak
  GEN     mips64-linux-user/config-devices.mak.tmp
  GEN     m68k-linux-user/config-devices.mak
  GEN     microblazeel-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak
  GEN     mipsel-linux-user/config-devices.mak.tmp
  GEN     mips-linux-user/config-devices.mak.tmp
  GEN     mipsn32el-linux-user/config-devices.mak.tmp
  GEN     mipsel-linux-user/config-devices.mak
  GEN     mipsn32el-linux-user/config-devices.mak
  GEN     mipsn32-linux-user/config-devices.mak.tmp
  GEN     mips-linux-user/config-devices.mak
  GEN     nios2-linux-user/config-devices.mak.tmp
  GEN     mips64-linux-user/config-devices.mak
  GEN     mipsn32-linux-user/config-devices.mak
  GEN     or1k-linux-user/config-devices.mak.tmp
  GEN     ppc64abi32-linux-user/config-devices.mak.tmp
  GEN     nios2-linux-user/config-devices.mak
  GEN     ppc64abi32-linux-user/config-devices.mak
  GEN     ppc64le-linux-user/config-devices.mak.tmp
  GEN     or1k-linux-user/config-devices.mak
  GEN     ppc64-linux-user/config-devices.mak.tmp
  GEN     ppc64le-linux-user/config-devices.mak
  GEN     ppc-linux-user/config-devices.mak.tmp
  GEN     s390x-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak.tmp
  GEN     s390x-linux-user/config-devices.mak
  GEN     sh4-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak
  GEN     ppc64-linux-user/config-devices.mak
  GEN     ppc-linux-user/config-devices.mak
  GEN     sparc32plus-linux-user/config-devices.mak.tmp
  GEN     sparc64-linux-user/config-devices.mak.tmp
  GEN     sh4-linux-user/config-devices.mak
  GEN     sparc-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak
  GEN     x86_64-linux-user/config-devices.mak.tmp
  GEN     sparc32plus-linux-user/config-devices.mak
  GEN     sparc-linux-user/config-devices.mak
  GEN     config-host.h
  GEN     sparc64-linux-user/config-devices.mak
  GIT     ui/keycodemapdb capstone
  GEN     x86_64-linux-user/config-devices.mak
  GEN     qemu-options.def
  GEN     qmp-commands.h
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qapi-event.h
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
Submodule 'capstone' (git://git.qemu.org/capstone.git) registered for path 'capstone'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb'
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
Cloning into '/var/tmp/patchew-tester-tmp-hek3vjny/src/capstone'...
  GEN     module_block.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sparc64/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/pci-host/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     scsi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sparc64/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/pci-host/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
Cloning into '/var/tmp/patchew-tester-tmp-hek3vjny/src/ui/keycodemapdb'...
  GEN     ui/input-keymap-atset1-to-qcode.c
  GEN     ui/input-keymap-linux-to-qcode.c
  GEN     ui/input-keymap-qcode-to-atset1.c
  GEN     ui/input-keymap-qcode-to-atset2.c
  GEN     ui/input-keymap-qcode-to-atset3.c
  CC      cs.o
  GEN     ui/input-keymap-qcode-to-linux.c
  GEN     ui/input-keymap-qcode-to-qnum.c
  CC      utils.o
  GEN     ui/input-keymap-qcode-to-sun.c
  GEN     ui/input-keymap-qnum-to-qcode.c
  GEN     ui/input-keymap-usb-to-qcode.c
  GEN     ui/input-keymap-win32-to-qcode.c
  GEN     ui/input-keymap-x11-to-qcode.c
  GEN     ui/input-keymap-xorgevdev-to-qcode.c
  GEN     ui/input-keymap-xorgkbd-to-qcode.c
  GEN     ui/input-keymap-xorgxquartz-to-qcode.c
  GEN     ui/input-keymap-xorgxwin-to-qcode.c
  CC      SStream.o
  CC      MCInstrDesc.o
  CC      MCRegisterInfo.o
  CC      arch/ARM/ARMDisassembler.o
  CC      arch/ARM/ARMInstPrinter.o
  CC      arch/ARM/ARMMapping.o
  CC      arch/ARM/ARMModule.o
  CC      arch/AArch64/AArch64BaseInfo.o
  CC      arch/AArch64/AArch64Disassembler.o
  CC      arch/AArch64/AArch64InstPrinter.o
  CC      arch/AArch64/AArch64Mapping.o
  CC      arch/AArch64/AArch64Module.o
  CC      arch/Mips/MipsDisassembler.o
  CC      arch/Mips/MipsInstPrinter.o
  CC      arch/Mips/MipsMapping.o
  CC      arch/Mips/MipsModule.o
  CC      arch/PowerPC/PPCDisassembler.o
  CC      arch/PowerPC/PPCInstPrinter.o
  CC      arch/PowerPC/PPCMapping.o
  CC      arch/PowerPC/PPCModule.o
  CC      arch/Sparc/SparcDisassembler.o
  CC      arch/Sparc/SparcInstPrinter.o
  CC      arch/Sparc/SparcMapping.o
  CC      arch/Sparc/SparcModule.o
  CC      arch/SystemZ/SystemZDisassembler.o
  CC      arch/SystemZ/SystemZInstPrinter.o
  CC      arch/SystemZ/SystemZMapping.o
  CC      arch/SystemZ/SystemZModule.o
  CC      arch/SystemZ/SystemZMCTargetDesc.o
  CC      arch/X86/X86DisassemblerDecoder.o
  CC      arch/X86/X86Disassembler.o
  CC      arch/X86/X86IntelInstPrinter.o
  CC      arch/X86/X86ATTInstPrinter.o
  CC      arch/X86/X86Mapping.o
  CC      arch/X86/X86Module.o
  CC      arch/XCore/XCoreDisassembler.o
  CC      arch/XCore/XCoreInstPrinter.o
  CC      arch/XCore/XCoreMapping.o
  CC      arch/XCore/XCoreModule.o
  CC      MCInst.o
  AR      libcapstone.a
ar: creating /var/tmp/patchew-tester-tmp-hek3vjny/src/build/capstone/libcapstone.a
  CC      tests/qemu-iotests/socket_scm_helper.o
  GEN     docs/version.texi
  GEN     qemu-options.texi
  GEN     qemu-monitor.texi
  GEN     qemu-img-cmds.texi
  GEN     qemu-monitor-info.texi
  GEN     qemu-img.1
  GEN     qemu-nbd.8
  GEN     qemu-ga.8
  GEN     docs/interop/qemu-qmp-qapi.texi
  GEN     docs/interop/qemu-ga-qapi.texi
  GEN     docs/qemu-block-drivers.7
  GEN     fsdev/virtfs-proxy-helper.1
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      qmp-introspect.o
  CC      qapi-types.o
  CC      qapi-visit.o
  CC      qapi-event.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qjson.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/pagesize.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sparc64/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/pci-host/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/get-vm-name.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/linux-aio.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/tpm.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  CC      qemu-keymap.o
  CC      ui/input-keymap.o
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/linux-aio.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/iscsi-opts.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      scsi/pr-manager.o
  CC      scsi/pr-manager-helper.o
  CC      block/iscsi.o
  CC      block/nfs.o
  CC      block/curl.o
  CC      block/rbd.o
  CC      block/gluster.o
  CC      block/ssh.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-gnutls.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/net-listener.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      fsdev/virtfs-proxy-helper.o
  CC      qemu-io.o
  CC      fsdev/9p-marshal.o
  CC      fsdev/9p-iov-marshal.o
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-posix.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      qemu-seccomp.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/hostmem.o
  CC      backends/tpm.o
  CC      backends/hostmem-ram.o
  CC      backends/hostmem-file.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      chardev/baum.o
  CC      disas/alpha.o
  CC      disas/arm.o
  CXX     disas/arm-a64.o
  CC      disas/cris.o
  CC      disas/hppa.o
  CC      disas/i386.o
  CC      disas/m68k.o
  CC      disas/microblaze.o
  CC      disas/mips.o
  CC      disas/nios2.o
  CC      disas/moxie.o
  CC      disas/ppc.o
  CC      disas/s390.o
  CC      disas/sh4.o
  CC      disas/sparc.o
  CC      disas/lm32.o
  CC      disas/xtensa.o
  CXX     disas/libvixl/vixl/utils.o
  CXX     disas/libvixl/vixl/compiler-intrinsics.o
  CXX     disas/libvixl/vixl/a64/instructions-a64.o
  CXX     disas/libvixl/vixl/a64/decoder-a64.o
  CXX     disas/libvixl/vixl/a64/disasm-a64.o
  CC      fsdev/qemu-fsdev.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      hw/9pfs/9p.o
  CC      hw/9pfs/9p-util.o
  CC      hw/9pfs/9p-local.o
  CC      hw/9pfs/9p-xattr.o
  CC      hw/9pfs/9p-xattr-user.o
  CC      hw/9pfs/9p-posix-acl.o
  CC      hw/9pfs/coth.o
  CC      hw/9pfs/cofs.o
  CC      hw/9pfs/codir.o
  CC      hw/9pfs/cofile.o
  CC      hw/9pfs/coxattr.o
  CC      hw/9pfs/9p-synth.o
  CC      hw/9pfs/9p-handle.o
  CC      hw/9pfs/9p-proxy.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/cs4231.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/milkymist-ac97.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/escc.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/xilinx_uartlite.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/etraxfs_ser.o
  CC      hw/char/debugcon.o
  CC      hw/char/grlib_apbuart.o
  CC      hw/char/imx_serial.o
  CC      hw/char/lm32_juart.o
  CC      hw/char/lm32_uart.o
  CC      hw/char/milkymist-uart.o
  CC      hw/char/sclpconsole.o
  CC      hw/char/sclpconsole-lm.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/qdev-fw.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/empty_slot.o
  CC      hw/core/stream.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/loader-fit.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/g364fb.o
  CC      hw/display/jazz_led.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vga-isa-mm.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/milkymist-vgafb.o
  CC      hw/display/tc6393xb.o
  CC      hw/display/milkymist-tmu2.o
  CC      hw/dma/puv3_dma.o
  CC      hw/dma/rc4030.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i82374.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xilinx_axidma.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/dma/etraxfs_dma.o
  CC      hw/dma/sparc32_dma.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/puv3_gpio.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/mpc8xxx.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/cmd646.o
  CC      hw/ide/macio.o
  CC      hw/ide/mmio.o
  CC      hw/ide/via.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/ide/ahci-allwinner.o
  CC      hw/ide/sii3112.o
  CC      hw/input/adb.o
  CC      hw/input/adb-mouse.o
  CC      hw/input/adb-kbd.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/input/virtio-input-host.o
  CC      hw/intc/heathrow_pic.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/puv3_intc.o
  CC      hw/intc/xilinx_intc.o
  CC      hw/intc/xlnx-pmu-iomod-intc.o
  CC      hw/intc/xlnx-zynqmp-ipi.o
  CC      hw/intc/etraxfs_pic.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/lm32_pic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/slavio_intctl.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/openpic.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/isa/i82378.o
  CC      hw/isa/pc87312.o
  CC      hw/isa/piix4.o
  CC      hw/isa/vt82c686.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/vmcoreinfo.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/misc/puv3_pm.o
  CC      hw/misc/macio/macio.o
  CC      hw/misc/macio/cuda.o
  CC      hw/misc/macio/mac_dbdma.o
  CC      hw/net/dp8393x.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/opencores_eth.o
  CC      hw/net/xgmac.o
  CC      hw/net/mipsnet.o
  CC      hw/net/xilinx_axienet.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/lance.o
  CC      hw/net/sunhme.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/sungem.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/ds1225y.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/eeprom_at24c.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/nvram/mac_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-bridge/dec.o
  CC      hw/pci-bridge/simba.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/prep.o
  CC      hw/pci-host/grackle.o
  CC      hw/pci-host/uninorth.o
  CC      hw/pci-host/ppce500.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/sabre.o
  CC      hw/pci-host/bonito.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci-host/xilinx-pcie.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/m48t59.o
  CC      hw/timer/m48t59-isa.o
  CC      hw/timer/pl031.o
  CC      hw/timer/puv3_ost.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/xilinx_timer.o
  CC      hw/timer/slavio_timer.o
  CC      hw/timer/etraxfs_timer.o
  CC      hw/timer/grlib_gptimer.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/lm32_timer.o
  CC      hw/timer/milkymist-sysctl.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/sun4v-rtc.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_util.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/tpm/tpm_emulator.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/ccid-card-passthru.o
  CC      hw/usb/ccid-card-emulated.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/redirect.o
  CC      hw/usb/quirks.o
  CC      hw/usb/host-libusb.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_diag288.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/l2tpv3.o
  CC      net/vhost-user.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/sdl2.o
  CC      ui/sdl2-input.o
  CC      ui/sdl2-2d.o
  CC      ui/sdl2-gl.o
  CC      ui/curses.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-auth-sasl.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      ui/gtk.o
  CC      ui/x_keymap.o
  VERT    ui/shader/texture-blit-vert.h
  VERT    ui/shader/texture-blit-flip-vert.h
  FRAG    ui/shader/texture-blit-frag.h
  CC      ui/console-gl.o
  CC      ui/egl-helpers.o
  CC      ui/egl-context.o
  CC      ui/egl-headless.o
  CC      ui/gtk-gl-area.o
  CC      chardev/char.o
  CC      chardev/char-fd.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-null.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  LINK    tests/qemu-iotests/socket_scm_helper
  CCAS    s390-ccw/start.o
  GEN     qemu-doc.html
  GEN     qemu-doc.txt
  CC      s390-ccw/main.o
  GEN     qemu.1
  CC      s390-ccw/bootmap.o
  CC      s390-ccw/sclp.o
  GEN     docs/interop/qemu-qmp-ref.html
  CC      s390-ccw/virtio.o
  CC      s390-ccw/virtio-scsi.o
  GEN     docs/interop/qemu-qmp-ref.txt
  CC      s390-ccw/virtio-blkdev.o
s390-netboot.img not built since roms/SLOF/ is not available.
  BUILD   s390-ccw/s390-ccw.elf
  STRIP   s390-ccw/s390-ccw.img
  GEN     docs/interop/qemu-qmp-ref.7
  GEN     docs/interop/qemu-ga-ref.html
  GEN     docs/interop/qemu-ga-ref.txt
  GEN     docs/interop/qemu-ga-ref.7
  CC      qga/commands.o
  CC      qga/guest-agent-command-state.o
  CC      qga/main.o
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AR      libqemuutil.a
  CC      qemu-img.o
  LINK    qemu-io
  LINK    fsdev/virtfs-proxy-helper
  LINK    scsi/qemu-pr-helper
  LINK    qemu-bridge-helper
  CC      ui/shader.o
  LINK    qemu-ga
  LINK    qemu-keymap
  LINK    ivshmem-client
  LINK    ivshmem-server
  LINK    qemu-nbd
  GEN     aarch64-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands-info.h
  GEN     alpha-softmmu/config-target.h
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/config-target.h
  CC      aarch64-softmmu/exec.o
  GEN     cris-softmmu/hmp-commands.h
  GEN     cris-softmmu/hmp-commands-info.h
  CC      alpha-softmmu/exec.o
  GEN     arm-softmmu/hmp-commands.h
  GEN     cris-softmmu/config-target.h
  GEN     arm-softmmu/hmp-commands-info.h
  GEN     arm-softmmu/config-target.h
  CC      cris-softmmu/exec.o
  CC      arm-softmmu/exec.o
  CC      aarch64-softmmu/tcg/tcg.o
  CC      alpha-softmmu/tcg/tcg.o
  CC      cris-softmmu/tcg/tcg.o
  CC      arm-softmmu/tcg/tcg.o
  CC      alpha-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      cris-softmmu/tcg/tcg-op.o
  CC      arm-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      alpha-softmmu/tcg/optimize.o
  CC      cris-softmmu/tcg/optimize.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      arm-softmmu/tcg/optimize.o
  CC      alpha-softmmu/tcg/tcg-common.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      cris-softmmu/tcg/tcg-common.o
  CC      alpha-softmmu/fpu/softfloat.o
  CC      arm-softmmu/tcg/tcg-common.o
  CC      cris-softmmu/fpu/softfloat.o
  CC      arm-softmmu/fpu/softfloat.o
  CC      cris-softmmu/disas.o
  CC      aarch64-softmmu/disas.o
  CC      arm-softmmu/disas.o
  CC      cris-softmmu/arch_init.o
  CC      alpha-softmmu/disas.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  CC      cris-softmmu/cpus.o
  GEN     arm-softmmu/gdbstub-xml.c
  CC      arm-softmmu/arch_init.o
  CC      alpha-softmmu/arch_init.o
  CC      aarch64-softmmu/arch_init.o
  CC      arm-softmmu/cpus.o
  CC      alpha-softmmu/cpus.o
  CC      aarch64-softmmu/cpus.o
  CC      cris-softmmu/monitor.o
  CC      alpha-softmmu/monitor.o
  CC      arm-softmmu/monitor.o
  CC      aarch64-softmmu/monitor.o
  CC      alpha-softmmu/gdbstub.o
  CC      cris-softmmu/gdbstub.o
  CC      arm-softmmu/gdbstub.o
  CC      alpha-softmmu/balloon.o
  CC      cris-softmmu/balloon.o
  CC      aarch64-softmmu/gdbstub.o
  CC      cris-softmmu/ioport.o
  CC      arm-softmmu/balloon.o
  CC      alpha-softmmu/ioport.o
  CC      cris-softmmu/numa.o
  CC      alpha-softmmu/numa.o
  CC      arm-softmmu/ioport.o
  CC      aarch64-softmmu/balloon.o
  CC      cris-softmmu/qtest.o
  CC      arm-softmmu/numa.o
  CC      aarch64-softmmu/ioport.o
  CC      arm-softmmu/qtest.o
  CC      alpha-softmmu/qtest.o
  CC      cris-softmmu/memory.o
  CC      aarch64-softmmu/numa.o
  CC      arm-softmmu/memory.o
  CC      alpha-softmmu/memory.o
  CC      aarch64-softmmu/qtest.o
  CC      cris-softmmu/memory_mapping.o
  CC      aarch64-softmmu/memory.o
  CC      cris-softmmu/dump.o
  CC      alpha-softmmu/memory_mapping.o
  CC      arm-softmmu/memory_mapping.o
  CC      alpha-softmmu/dump.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      aarch64-softmmu/dump.o
  CC      cris-softmmu/migration/ram.o
  CC      arm-softmmu/dump.o
  CC      alpha-softmmu/migration/ram.o
  CC      aarch64-softmmu/migration/ram.o
  CC      arm-softmmu/migration/ram.o
  CC      cris-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/accel.o
  CC      cris-softmmu/accel/stubs/hax-stub.o
  CC      alpha-softmmu/accel/accel.o
  CC      cris-softmmu/accel/stubs/hvf-stub.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  CC      alpha-softmmu/accel/stubs/hax-stub.o
  CC      arm-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/stubs/hvf-stub.o
  CC      alpha-softmmu/accel/stubs/hvf-stub.o
  CC      cris-softmmu/accel/stubs/kvm-stub.o
  CC      arm-softmmu/accel/stubs/hax-stub.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      cris-softmmu/accel/tcg/tcg-all.o
  CC      alpha-softmmu/accel/stubs/kvm-stub.o
  CC      arm-softmmu/accel/stubs/hvf-stub.o
  CC      alpha-softmmu/accel/tcg/tcg-all.o
  CC      cris-softmmu/accel/tcg/cputlb.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      alpha-softmmu/accel/tcg/cputlb.o
  CC      arm-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      arm-softmmu/accel/tcg/tcg-all.o
  CC      arm-softmmu/accel/tcg/cputlb.o
  CC      cris-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/tcg-runtime.o
  CC      cris-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      alpha-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-softmmu/accel/tcg/translate-all.o
  CC      arm-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/translate-all.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      arm-softmmu/accel/tcg/cpu-exec.o
  CC      alpha-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      cris-softmmu/hw/core/generic-loader.o
  CC      arm-softmmu/accel/tcg/cpu-exec-common.o
  CC      alpha-softmmu/hw/9pfs/virtio-9p-device.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/hw/core/null-machine.o
  CC      alpha-softmmu/hw/block/virtio-blk.o
  CC      arm-softmmu/accel/tcg/translate-all.o
  CC      cris-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      cris-softmmu/hw/net/etraxfs_eth.o
  CC      alpha-softmmu/hw/block/vhost-user-blk.o
  CC      arm-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      alpha-softmmu/hw/block/dataplane/virtio-blk.o
  CC      cris-softmmu/hw/net/vhost_net.o
  CC      alpha-softmmu/hw/char/virtio-serial-bus.o
  CC      arm-softmmu/hw/9pfs/virtio-9p-device.o
  CC      aarch64-softmmu/hw/block/vhost-user-blk.o
  CC      cris-softmmu/hw/net/rocker/qmp-norocker.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      arm-softmmu/hw/adc/stm32f2xx_adc.o
  CC      cris-softmmu/hw/vfio/common.o
  CC      alpha-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      arm-softmmu/hw/block/virtio-blk.o
  CC      alpha-softmmu/hw/core/null-machine.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      cris-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      alpha-softmmu/hw/display/vga.o
  CC      arm-softmmu/hw/block/vhost-user-blk.o
  CC      cris-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      arm-softmmu/hw/block/dataplane/virtio-blk.o
  CC      cris-softmmu/hw/cris/boot.o
  CC      cris-softmmu/hw/cris/axis_dev88.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      arm-softmmu/hw/char/exynos4210_uart.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      cris-softmmu/target/cris/translate.o
  CC      alpha-softmmu/hw/display/virtio-gpu.o
  CC      arm-softmmu/hw/char/omap_uart.o
  CC      arm-softmmu/hw/char/digic-uart.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      arm-softmmu/hw/char/stm32f2xx_usart.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  CC      alpha-softmmu/hw/display/virtio-gpu-3d.o
  CC      arm-softmmu/hw/char/bcm2835_aux.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      arm-softmmu/hw/char/virtio-serial-bus.o
  CC      alpha-softmmu/hw/display/virtio-gpu-pci.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      cris-softmmu/target/cris/op_helper.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      arm-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      alpha-softmmu/hw/misc/ivshmem.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      arm-softmmu/hw/core/null-machine.o
  CC      cris-softmmu/target/cris/helper.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      arm-softmmu/hw/cpu/arm11mpcore.o
  CC      alpha-softmmu/hw/misc/mmio_interface.o
  CC      cris-softmmu/target/cris/cpu.o
  CC      arm-softmmu/hw/cpu/realview_mpcore.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      cris-softmmu/target/cris/gdbstub.o
  CC      alpha-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/cpu/a9mpcore.o
  CC      cris-softmmu/target/cris/mmu.o
  CC      arm-softmmu/hw/cpu/a15mpcore.o
  CC      alpha-softmmu/hw/net/vhost_net.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/display/omap_dss.o
  CC      cris-softmmu/target/cris/machine.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      arm-softmmu/hw/display/omap_lcdc.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  GEN     trace/generated-helpers.c
  CC      cris-softmmu/trace/control-target.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/display/pxa2xx_lcd.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi.o
  CC      cris-softmmu/trace/generated-helpers.o
  CC      alpha-softmmu/hw/scsi/vhost-user-scsi.o
  LINK    cris-softmmu/qemu-system-cris
  CC      alpha-softmmu/hw/timer/mc146818rtc.o
  CC      arm-softmmu/hw/display/bcm2835_fb.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  CC      arm-softmmu/hw/display/vga.o
  CC      alpha-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC      arm-softmmu/hw/display/virtio-gpu.o
  CC      alpha-softmmu/hw/vfio/pci.o
  CC      arm-softmmu/hw/display/virtio-gpu-3d.o
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  CC      arm-softmmu/hw/display/virtio-gpu-pci.o
  CC      arm-softmmu/hw/dma/omap_dma.o
  GEN     i386-softmmu/hmp-commands.h
  GEN     i386-softmmu/hmp-commands-info.h
  GEN     i386-softmmu/config-target.h
  CC      i386-softmmu/exec.o
  CC      i386-softmmu/tcg/tcg.o
  CC      i386-softmmu/tcg/tcg-op.o
  CC      i386-softmmu/tcg/optimize.o
  CC      i386-softmmu/tcg/tcg-common.o
  CC      i386-softmmu/fpu/softfloat.o
  CC      i386-softmmu/disas.o
  GEN     i386-softmmu/gdbstub-xml.c
  CC      i386-softmmu/arch_init.o
  CC      i386-softmmu/cpus.o
  CC      i386-softmmu/monitor.o
  CC      i386-softmmu/gdbstub.o
  CC      i386-softmmu/balloon.o
  CC      i386-softmmu/ioport.o
  CC      i386-softmmu/numa.o
  CC      i386-softmmu/qtest.o
  CC      i386-softmmu/memory.o
  CC      i386-softmmu/memory_mapping.o
  CC      i386-softmmu/dump.o
  CC      i386-softmmu/migration/ram.o
  CC      i386-softmmu/accel/accel.o
  CC      i386-softmmu/accel/stubs/hax-stub.o
  CC      i386-softmmu/accel/stubs/hvf-stub.o
  CC      i386-softmmu/accel/stubs/kvm-stub.o
  CC      i386-softmmu/accel/tcg/tcg-all.o
  CC      i386-softmmu/accel/tcg/cputlb.o
  CC      i386-softmmu/accel/tcg/tcg-runtime.o
  CC      i386-softmmu/accel/tcg/cpu-exec.o
  CC      i386-softmmu/accel/tcg/cpu-exec-common.o
  CC      i386-softmmu/accel/tcg/translate-all.o
  CC      i386-softmmu/accel/tcg/translator.o
  CC      i386-softmmu/hw/9pfs/virtio-9p-device.o
  CC      i386-softmmu/hw/block/virtio-blk.o
  CC      i386-softmmu/hw/block/vhost-user-blk.o
  CC      i386-softmmu/hw/block/dataplane/virtio-blk.o
  CC      i386-softmmu/hw/char/virtio-serial-bus.o
  CC      i386-softmmu/hw/core/generic-loader.o
  CC      i386-softmmu/hw/core/null-machine.o
  CC      i386-softmmu/hw/display/vga.o
  CC      i386-softmmu/hw/display/virtio-gpu.o
  CC      i386-softmmu/hw/display/virtio-gpu-3d.o
  CC      i386-softmmu/hw/display/virtio-gpu-pci.o
  CC      i386-softmmu/hw/display/virtio-vga.o
  CC      i386-softmmu/hw/intc/apic.o
  CC      i386-softmmu/hw/intc/apic_common.o
  CC      i386-softmmu/hw/intc/ioapic.o
  CC      i386-softmmu/hw/isa/lpc_ich9.o
  CC      i386-softmmu/hw/misc/ivshmem.o
  CC      i386-softmmu/hw/misc/pvpanic.o
  CC      i386-softmmu/hw/misc/mmio_interface.o
  CC      i386-softmmu/hw/net/virtio-net.o
  CC      i386-softmmu/hw/net/vhost_net.o
  CC      i386-softmmu/hw/scsi/virtio-scsi.o
  CC      i386-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      i386-softmmu/hw/scsi/vhost-scsi-common.o
  CC      i386-softmmu/hw/scsi/vhost-scsi.o
  CC      i386-softmmu/hw/scsi/vhost-user-scsi.o
  CC      i386-softmmu/hw/timer/mc146818rtc.o
  CC      i386-softmmu/hw/vfio/common.o
  CC      i386-softmmu/hw/vfio/pci.o
  CC      i386-softmmu/hw/vfio/pci-quirks.o
  CC      i386-softmmu/hw/vfio/platform.o
  CC      i386-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/virtio/virtio.o
  CC      i386-softmmu/hw/virtio/virtio-balloon.o
  CC      i386-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/virtio/vhost-backend.o
  CC      i386-softmmu/hw/virtio/vhost-user.o
  CC      i386-softmmu/hw/virtio/vhost-vsock.o
  CC      i386-softmmu/hw/virtio/virtio-crypto.o
  CC      i386-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      i386-softmmu/hw/i386/multiboot.o
  CC      i386-softmmu/hw/i386/pc.o
  CC      i386-softmmu/hw/i386/pc_piix.o
  CC      i386-softmmu/hw/i386/pc_q35.o
  CC      i386-softmmu/hw/i386/pc_sysfw.o
  CC      i386-softmmu/hw/i386/x86-iommu.o
  CC      i386-softmmu/hw/i386/intel_iommu.o
  CC      i386-softmmu/hw/i386/amd_iommu.o
  CC      i386-softmmu/hw/i386/vmport.o
  CC      i386-softmmu/hw/i386/vmmouse.o
  CC      i386-softmmu/hw/i386/kvmvapic.o
  CC      i386-softmmu/hw/i386/acpi-build.o
  CC      i386-softmmu/target/i386/helper.o
  CC      i386-softmmu/target/i386/cpu.o
  CC      i386-softmmu/target/i386/gdbstub.o
  CC      i386-softmmu/target/i386/xsave_helper.o
  CC      i386-softmmu/target/i386/translate.o
  CC      i386-softmmu/target/i386/bpt_helper.o
  CC      i386-softmmu/target/i386/cc_helper.o
  CC      i386-softmmu/target/i386/excp_helper.o
  CC      i386-softmmu/target/i386/fpu_helper.o
  CC      i386-softmmu/target/i386/int_helper.o
  CC      i386-softmmu/target/i386/mem_helper.o
  CC      i386-softmmu/target/i386/misc_helper.o
  CC      i386-softmmu/target/i386/mpx_helper.o
  CC      i386-softmmu/target/i386/seg_helper.o
  CC      i386-softmmu/target/i386/smm_helper.o
  CC      i386-softmmu/target/i386/svm_helper.o
  CC      i386-softmmu/target/i386/machine.o
  CC      i386-softmmu/target/i386/arch_memory_mapping.o
  CC      i386-softmmu/target/i386/arch_dump.o
  CC      i386-softmmu/target/i386/monitor.o
  CC      i386-softmmu/target/i386/kvm-stub.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/trace/control-target.o
  CC      i386-softmmu/gdbstub-xml.o
  CC      i386-softmmu/trace/generated-helpers.o
  LINK    i386-softmmu/qemu-system-i386
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:193: qemu-system-i386] Error 1
make: *** [Makefile:403: subdir-i386-softmmu] Error 2
make: *** Waiting for unfinished jobs....
  CC      arm-softmmu/hw/dma/soc_dma.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
  CC      alpha-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/dma/pxa2xx_dma.o
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      arm-softmmu/hw/dma/bcm2835_dma.o
  CC      alpha-softmmu/hw/vfio/platform.o
  CC      arm-softmmu/hw/gpio/omap_gpio.o
  CC      alpha-softmmu/hw/vfio/spapr.o
  CC      alpha-softmmu/hw/virtio/virtio.o
  CC      arm-softmmu/hw/gpio/imx_gpio.o
  CC      alpha-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/gpio/bcm2835_gpio.o
  CC      alpha-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/i2c/omap_i2c.o
  CC      alpha-softmmu/hw/virtio/vhost-backend.o
  CC      alpha-softmmu/hw/virtio/vhost-user.o
  CC      arm-softmmu/hw/input/pxa2xx_keypad.o
  CC      arm-softmmu/hw/input/tsc210x.o
  CC      alpha-softmmu/hw/virtio/vhost-vsock.o
  CC      arm-softmmu/hw/intc/armv7m_nvic.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/intc/exynos4210_gic.o
  CC      arm-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      alpha-softmmu/hw/alpha/dp264.o
  CC      arm-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      alpha-softmmu/hw/alpha/pci.o
  CC      arm-softmmu/hw/intc/bcm2835_ic.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      arm-softmmu/hw/intc/bcm2836_control.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      arm-softmmu/hw/intc/allwinner-a10-pic.o
  CC      alpha-softmmu/hw/alpha/typhoon.o
  CC      arm-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      alpha-softmmu/target/alpha/machine.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      alpha-softmmu/target/alpha/translate.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      aarch64-softmmu/hw/misc/ivshmem.o
  CC      alpha-softmmu/target/alpha/helper.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      alpha-softmmu/target/alpha/cpu.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      alpha-softmmu/target/alpha/int_helper.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      alpha-softmmu/target/alpha/fpu_helper.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      alpha-softmmu/target/alpha/vax_helper.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  CC      alpha-softmmu/target/alpha/sys_helper.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  CC      alpha-softmmu/target/alpha/mem_helper.o
  CC      arm-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      alpha-softmmu/target/alpha/gdbstub.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/trace/control-target.o
  CC      arm-softmmu/hw/misc/ivshmem.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      alpha-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/misc/arm_sysctl.o
  CC      arm-softmmu/hw/misc/cbus.o
  LINK    alpha-softmmu/qemu-system-alpha
  CC      arm-softmmu/hw/misc/exynos4210_pmu.o
  CC      arm-softmmu/hw/misc/exynos4210_clk.o
  CC      arm-softmmu/hw/misc/exynos4210_rng.o
  CC      arm-softmmu/hw/misc/imx_ccm.o
  CC      arm-softmmu/hw/misc/imx31_ccm.o
  CC      arm-softmmu/hw/misc/imx25_ccm.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      arm-softmmu/hw/misc/imx6_ccm.o
  CC      arm-softmmu/hw/misc/imx6_src.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      arm-softmmu/hw/misc/mst_fpga.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      arm-softmmu/hw/misc/omap_clk.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      arm-softmmu/hw/misc/omap_gpmc.o
  CC      arm-softmmu/hw/misc/omap_l4.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      arm-softmmu/hw/misc/omap_tap.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      arm-softmmu/hw/misc/bcm2835_mbox.o
  CC      arm-softmmu/hw/misc/bcm2835_property.o
  CC      arm-softmmu/hw/misc/bcm2835_rng.o
  CC      arm-softmmu/hw/misc/zynq_slcr.o
  CC      arm-softmmu/hw/misc/zynq-xadc.o
  CC      arm-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      arm-softmmu/hw/misc/aspeed_scu.o
  CC      arm-softmmu/hw/misc/aspeed_sdmc.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi.o
  CC      arm-softmmu/hw/misc/msf2-sysreg.o
  CC      aarch64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      arm-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/net/vhost_net.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      arm-softmmu/hw/pcmcia/pxa2xx.o
  CC      arm-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      arm-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/scsi/vhost-scsi.o
  CC      arm-softmmu/hw/scsi/vhost-user-scsi.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/vfio/pci-quirks.o
  CC      aarch64-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/vfio/calxeda-xgmac.o
  CC      aarch64-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/vhost.o
  CC      aarch64-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/translate.o
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      aarch64-softmmu/target/arm/cpu.o
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  CC      arm-softmmu/hw/sd/omap_mmc.o
  CC      arm-softmmu/hw/sd/pxa2xx_mmci.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/gdbstub-xml.o
  CC      arm-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/ssi/omap_spi.o
  CC      arm-softmmu/hw/ssi/imx_spi.o
  CC      arm-softmmu/hw/timer/exynos4210_mct.o
  CC      arm-softmmu/hw/timer/exynos4210_pwm.o
  CC      arm-softmmu/hw/timer/exynos4210_rtc.o
  CC      arm-softmmu/hw/timer/omap_gptimer.o
  CC      arm-softmmu/hw/timer/omap_synctimer.o
  CC      arm-softmmu/hw/timer/pxa2xx_timer.o
  CC      arm-softmmu/hw/timer/digic-timer.o
  CC      arm-softmmu/hw/timer/allwinner-a10-pit.o
  CC      arm-softmmu/hw/usb/tusb6010.o
  CC      arm-softmmu/hw/vfio/common.o
  CC      arm-softmmu/hw/vfio/pci.o
  CC      arm-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/vfio/platform.o
  LINK    aarch64-softmmu/qemu-system-aarch64
  CC      arm-softmmu/hw/vfio/calxeda-xgmac.o
  CC      arm-softmmu/hw/vfio/amd-xgbe.o
  CC      arm-softmmu/hw/vfio/spapr.o
  CC      arm-softmmu/hw/virtio/virtio.o
  CC      arm-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/virtio/vhost-backend.o
  CC      arm-softmmu/hw/virtio/vhost-user.o
  CC      arm-softmmu/hw/virtio/vhost-vsock.o
  CC      arm-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      arm-softmmu/hw/arm/boot.o
  CC      arm-softmmu/hw/arm/collie.o
  CC      arm-softmmu/hw/arm/exynos4_boards.o
  CC      arm-softmmu/hw/arm/gumstix.o
  CC      arm-softmmu/hw/arm/highbank.o
  CC      arm-softmmu/hw/arm/digic_boards.o
  CC      arm-softmmu/hw/arm/integratorcp.o
  CC      arm-softmmu/hw/arm/mainstone.o
  CC      arm-softmmu/hw/arm/musicpal.o
  CC      arm-softmmu/hw/arm/nseries.o
  CC      arm-softmmu/hw/arm/omap_sx1.o
  CC      arm-softmmu/hw/arm/palm.o
  CC      arm-softmmu/hw/arm/realview.o
  CC      arm-softmmu/hw/arm/spitz.o
  CC      arm-softmmu/hw/arm/stellaris.o
  CC      arm-softmmu/hw/arm/tosa.o
  CC      arm-softmmu/hw/arm/versatilepb.o
  CC      arm-softmmu/hw/arm/vexpress.o
  CC      arm-softmmu/hw/arm/virt.o
  CC      arm-softmmu/hw/arm/xilinx_zynq.o
  CC      arm-softmmu/hw/arm/z2.o
  CC      arm-softmmu/hw/arm/virt-acpi-build.o
  CC      arm-softmmu/hw/arm/netduino2.o
  CC      arm-softmmu/hw/arm/sysbus-fdt.o
  CC      arm-softmmu/hw/arm/armv7m.o
  CC      arm-softmmu/hw/arm/exynos4210.o
  CC      arm-softmmu/hw/arm/pxa2xx.o
  CC      arm-softmmu/hw/arm/pxa2xx_gpio.o
  CC      arm-softmmu/hw/arm/pxa2xx_pic.o
  CC      arm-softmmu/hw/arm/digic.o
  CC      arm-softmmu/hw/arm/omap1.o
  CC      arm-softmmu/hw/arm/omap2.o
  CC      arm-softmmu/hw/arm/strongarm.o
  CC      arm-softmmu/hw/arm/allwinner-a10.o
  CC      arm-softmmu/hw/arm/cubieboard.o
  CC      arm-softmmu/hw/arm/bcm2835_peripherals.o
  CC      arm-softmmu/hw/arm/bcm2836.o
  CC      arm-softmmu/hw/arm/raspi.o
  CC      arm-softmmu/hw/arm/stm32f205_soc.o
  CC      arm-softmmu/hw/arm/fsl-imx25.o
  CC      arm-softmmu/hw/arm/imx25_pdk.o
  CC      arm-softmmu/hw/arm/fsl-imx31.o
  CC      arm-softmmu/hw/arm/kzm.o
  CC      arm-softmmu/hw/arm/fsl-imx6.o
  CC      arm-softmmu/hw/arm/sabrelite.o
  CC      arm-softmmu/hw/arm/aspeed_soc.o
  CC      arm-softmmu/hw/arm/aspeed.o
  CC      arm-softmmu/hw/arm/mps2.o
  CC      arm-softmmu/hw/arm/msf2-soc.o
  CC      arm-softmmu/hw/arm/msf2-som.o
  CC      arm-softmmu/target/arm/arm-semi.o
  CC      arm-softmmu/target/arm/machine.o
  CC      arm-softmmu/target/arm/psci.o
  CC      arm-softmmu/target/arm/arch_dump.o
  CC      arm-softmmu/target/arm/monitor.o
  CC      arm-softmmu/target/arm/kvm-stub.o
  CC      arm-softmmu/target/arm/translate.o
  CC      arm-softmmu/target/arm/op_helper.o
  CC      arm-softmmu/target/arm/helper.o
  CC      arm-softmmu/target/arm/cpu.o
  CC      arm-softmmu/target/arm/neon_helper.o
  CC      arm-softmmu/target/arm/iwmmxt_helper.o
  CC      arm-softmmu/target/arm/gdbstub.o
  CC      arm-softmmu/target/arm/crypto_helper.o
  CC      arm-softmmu/target/arm/arm-powerctl.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/trace/control-target.o
  CC      arm-softmmu/gdbstub-xml.o
  CC      arm-softmmu/trace/generated-helpers.o
  LINK    arm-softmmu/qemu-system-arm
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
@ 2018-01-29 18:17   ` no-reply
  0 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:17 UTC (permalink / raw)
  To: brijesh.singh
  Cc: famz, qemu-devel, edgar.iglesias, peter.maydell, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, dgilbert,
	pbonzini

Hi,

This series failed build test on s390x host. Please find the details below.

Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com
Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e
echo "=== ENV ==="
env
echo "=== PACKAGES ==="
rpm -qa
echo "=== TEST BEGIN ==="
CC=$HOME/bin/cc
INSTALL=$PWD/install
BUILD=$PWD/build
echo -n "Using CC: "
realpath $CC
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL
make -j4
# XXX: we need reliable clean up
# make check -j4 V=1
make install
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
   0d1442912b..30d9fefe1a  master     -> master
 t [tag update]            patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com -> patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com
 t [tag update]            patchew/20180123035349.24538-1-richard.henderson@linaro.org -> patchew/20180123035349.24538-1-richard.henderson@linaro.org
 * [new tag]               patchew/20180129174132.108925-1-brijesh.singh@amd.com -> patchew/20180129174132.108925-1-brijesh.singh@amd.com
Switched to a new branch 'test'
6efcae2888 sev: add migration blocker
16a9e00946 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5a54 sev: add debug encrypt and decrypt commands
9034d072b3 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370842 sev: Finalize the SEV guest launch flow
5e126818a5 sev: emit the SEV_MEASUREMENT event
1c9a562916 qapi: add SEV_MEASUREMENT event
b322fca554 target/i386: encrypt bios rom
10da3ed830 sev: add command to encrypt guest memory region
cc979f7ffb sev: add command to create launch memory encryption context
9388e9fbf7 hmp: display memory encryption support in 'info kvm'
8875a9eff3 kvm: introduce memory encryption APIs
c530cf3a0f sev: register the guest memory range which may contain encrypted data
f486eda972 sev: add command to initialize the memory encryption context
cd64908627 accel: add Secure Encrypted Virtulization (SEV) object
08729ca7e4 docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a465 kvm: update kvm.h to include memory encryption ioctls
113e16b66e machine: add -memory-encryption property
f839a7f5d1 target/i386: add memory encryption feature cpuid support
4e159e781f monitor/i386: use debug APIs when accessing guest memory
fbeb706e23 exec: add debug version of physical memory read and write API
11bc1372d7 exec: add ram_debug_ops support
1b02df629e memattrs: add debug attribute

=== OUTPUT BEGIN ===
=== ENV ===
LANG=en_US.UTF-8
XDG_SESSION_ID=31743
USER=fam
PWD=/var/tmp/patchew-tester-tmp-hek3vjny/src
HOME=/home/fam
SHELL=/bin/sh
SHLVL=2
PATCHEW=/home/fam/patchew/patchew-cli -s http://patchew.org --nodebug
LOGNAME=fam
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1012/bus
XDG_RUNTIME_DIR=/run/user/1012
PATH=/usr/bin:/bin
_=/usr/bin/env
=== PACKAGES ===
gpg-pubkey-873529b8-54e386ff
glibc-debuginfo-common-2.24-10.fc25.s390x
fedora-release-26-1.noarch
dejavu-sans-mono-fonts-2.35-4.fc26.noarch
xemacs-filesystem-21.5.34-22.20170124hgf412e9f093d4.fc26.noarch
bash-4.4.12-7.fc26.s390x
freetype-2.7.1-9.fc26.s390x
libSM-1.2.2-5.fc26.s390x
libmpc-1.0.2-6.fc26.s390x
libaio-0.3.110-7.fc26.s390x
libverto-0.2.6-7.fc26.s390x
perl-Scalar-List-Utils-1.48-1.fc26.s390x
iptables-libs-1.6.1-2.fc26.s390x
perl-threads-shared-1.57-1.fc26.s390x
p11-kit-trust-0.23.9-2.fc26.s390x
tcl-8.6.6-2.fc26.s390x
libxshmfence-1.2-4.fc26.s390x
expect-5.45-23.fc26.s390x
perl-Thread-Queue-3.12-1.fc26.noarch
perl-encoding-2.19-6.fc26.s390x
keyutils-1.5.10-1.fc26.s390x
gmp-devel-6.1.2-4.fc26.s390x
enchant-1.6.0-16.fc26.s390x
net-snmp-libs-5.7.3-17.fc26.s390x
python-gobject-base-3.24.1-1.fc26.s390x
python3-distro-1.0.3-1.fc26.noarch
python3-enchant-1.6.10-1.fc26.noarch
python-lockfile-0.11.0-6.fc26.noarch
python2-pyparsing-2.1.10-3.fc26.noarch
python2-lxml-4.1.1-1.fc26.s390x
librados2-10.2.7-2.fc26.s390x
trousers-lib-0.3.13-7.fc26.s390x
libpaper-1.1.24-14.fc26.s390x
libdatrie-0.2.9-4.fc26.s390x
libsoup-2.58.2-1.fc26.s390x
passwd-0.79-9.fc26.s390x
bind99-libs-9.9.10-3.P3.fc26.s390x
python3-rpm-4.13.0.2-1.fc26.s390x
mock-core-configs-27.4-1.fc26.noarch
systemd-233-7.fc26.s390x
virglrenderer-0.6.0-1.20170210git76b3da97b.fc26.s390x
s390utils-ziomon-1.36.1-3.fc26.s390x
s390utils-osasnmpd-1.36.1-3.fc26.s390x
libXrandr-1.5.1-2.fc26.s390x
libglvnd-glx-1.0.0-1.fc26.s390x
texlive-ifxetex-svn19685.0.5-33.fc26.2.noarch
texlive-psnfss-svn33946.9.2a-33.fc26.2.noarch
texlive-dvipdfmx-def-svn40328-33.fc26.2.noarch
texlive-natbib-svn20668.8.31b-33.fc26.2.noarch
texlive-xdvi-bin-svn40750-33.20160520.fc26.2.s390x
texlive-cm-svn32865.0-33.fc26.2.noarch
texlive-beton-svn15878.0-33.fc26.2.noarch
texlive-fpl-svn15878.1.002-33.fc26.2.noarch
texlive-mflogo-svn38628-33.fc26.2.noarch
texlive-texlive-docindex-svn41430-33.fc26.2.noarch
texlive-luaotfload-bin-svn34647.0-33.20160520.fc26.2.noarch
texlive-koma-script-svn41508-33.fc26.2.noarch
texlive-pst-tree-svn24142.1.12-33.fc26.2.noarch
texlive-breqn-svn38099.0.98d-33.fc26.2.noarch
texlive-xetex-svn41438-33.fc26.2.noarch
gstreamer1-plugins-bad-free-1.12.3-1.fc26.s390x
xorg-x11-font-utils-7.5-33.fc26.s390x
ghostscript-fonts-5.50-36.fc26.noarch
libXext-devel-1.3.3-5.fc26.s390x
libusbx-devel-1.0.21-2.fc26.s390x
libglvnd-devel-1.0.0-1.fc26.s390x
emacs-25.3-3.fc26.s390x
alsa-lib-devel-1.1.4.1-1.fc26.s390x
kbd-2.0.4-2.fc26.s390x
dconf-0.26.0-2.fc26.s390x
ccache-3.3.4-1.fc26.s390x
glibc-static-2.25-12.fc26.s390x
mc-4.8.19-5.fc26.s390x
doxygen-1.8.13-9.fc26.s390x
dpkg-1.18.24-1.fc26.s390x
libtdb-1.3.13-1.fc26.s390x
python2-pynacl-1.1.1-1.fc26.s390x
nss-sysinit-3.34.0-1.0.fc26.s390x
kernel-4.13.16-202.fc26.s390x
perl-Filter-1.58-1.fc26.s390x
python2-pip-9.0.1-11.fc26.noarch
dnf-2.7.5-2.fc26.noarch
pcre2-utf16-10.23-11.fc26.s390x
glusterfs-devel-3.10.8-1.fc26.s390x
sssd-common-1.16.0-4.fc26.s390x
python2-sssdconfig-1.16.0-4.fc26.noarch
acpica-tools-20171110-1.fc26.s390x
glibc-debuginfo-2.24-10.fc25.s390x
fedora-repos-26-1.noarch
dejavu-fonts-common-2.35-4.fc26.noarch
bind99-license-9.9.10-3.P3.fc26.noarch
ncurses-libs-6.0-8.20170212.fc26.s390x
libpng-1.6.28-2.fc26.s390x
libICE-1.0.9-9.fc26.s390x
kmod-24-1.fc26.s390x
libseccomp-2.3.2-1.fc26.s390x
perl-Text-ParseWords-3.30-366.fc26.noarch
libtool-ltdl-2.4.6-17.fc26.s390x
perl-threads-2.16-1.fc26.s390x
libselinux-utils-2.6-7.fc26.s390x
userspace-rcu-0.9.3-2.fc26.s390x
libXfont-1.5.2-5.fc26.s390x
perl-Class-Inspector-1.31-3.fc26.noarch
perl-open-1.10-395.fc26.noarch
keyutils-libs-devel-1.5.10-1.fc26.s390x
isl-0.16.1-1.fc26.s390x
libsecret-0.18.5-3.fc26.s390x
compat-openssl10-1.0.2m-1.fc26.s390x
python3-iniparse-0.4-24.fc26.noarch
python3-dateutil-2.6.0-3.fc26.noarch
python3-firewall-0.4.4.5-1.fc26.noarch
python-enum34-1.1.6-1.fc26.noarch
python2-pygments-2.2.0-7.fc26.noarch
python2-dockerfile-parse-0.0.7-1.fc26.noarch
perl-Net-SSLeay-1.81-1.fc26.s390x
hostname-3.18-2.fc26.s390x
libtirpc-1.0.2-0.fc26.s390x
rpm-build-libs-4.13.0.2-1.fc26.s390x
libutempter-1.1.6-9.fc26.s390x
systemd-pam-233-7.fc26.s390x
pcre-utf16-8.41-3.fc26.s390x
libXinerama-1.1.3-7.fc26.s390x
mesa-libGL-17.2.4-2.fc26.s390x
texlive-amsfonts-svn29208.3.04-33.fc26.2.noarch
texlive-caption-svn41409-33.fc26.2.noarch
texlive-enumitem-svn24146.3.5.2-33.fc26.2.noarch
texlive-pdftex-def-svn22653.0.06d-33.fc26.2.noarch
texlive-xdvi-svn40768-33.fc26.2.noarch
texlive-courier-svn35058.0-33.fc26.2.noarch
texlive-charter-svn15878.0-33.fc26.2.noarch
texlive-graphics-def-svn41879-33.fc26.2.noarch
texlive-mfnfss-svn19410.0-33.fc26.2.noarch
texlive-texlive-en-svn41185-33.fc26.2.noarch
texlive-ifplatform-svn21156.0.4-33.fc26.2.noarch
texlive-ms-svn29849.0-33.fc26.2.noarch
texlive-pst-tools-svn34067.0.05-33.fc26.2.noarch
texlive-powerdot-svn38984-33.fc26.2.noarch
texlive-xetexconfig-svn41133-33.fc26.2.noarch
libvdpau-1.1.1-4.fc26.s390x
zlib-devel-1.2.11-2.fc26.s390x
gdk-pixbuf2-devel-2.36.9-1.fc26.s390x
libX11-devel-1.6.5-2.fc26.s390x
libtasn1-devel-4.12-1.fc26.s390x
libglvnd-core-devel-1.0.0-1.fc26.s390x
SDL2-devel-2.0.7-2.fc26.s390x
webkitgtk3-2.4.11-5.fc26.s390x
grubby-8.40-4.fc26.s390x
uboot-tools-2017.05-4.fc26.s390x
cracklib-dicts-2.9.6-5.fc26.s390x
texinfo-6.3-3.fc26.s390x
time-1.7-52.fc26.s390x
python2-deltarpm-3.6-19.fc26.s390x
nss-3.34.0-1.0.fc26.s390x
webkitgtk4-2.18.3-1.fc26.s390x
net-tools-2.0-0.43.20160912git.fc26.s390x
python2-setuptools-37.0.0-1.fc26.noarch
python2-dnf-2.7.5-2.fc26.noarch
pcre2-10.23-11.fc26.s390x
groff-base-1.22.3-10.fc26.s390x
python2-devel-2.7.14-4.fc26.s390x
python2-GitPython-2.1.7-2.fc26.noarch
boost-iostreams-1.63.0-10.fc26.s390x
gpg-pubkey-efe550f5-5220ba41
gpg-pubkey-81b46521-55b3ca9a
filesystem-3.2-40.fc26.s390x
basesystem-11-3.fc26.noarch
js-jquery-3.2.1-1.fc26.noarch
pcre-8.41-3.fc26.s390x
elfutils-libelf-0.169-1.fc26.s390x
libidn-1.33-2.fc26.s390x
libogg-1.3.2-6.fc26.s390x
slang-2.3.1a-2.fc26.s390x
apr-1.6.3-1.fc26.s390x
libxkbcommon-0.7.1-3.fc26.s390x
perl-IO-1.36-395.fc26.s390x
libvorbis-1.3.5-2.fc26.s390x
less-487-3.fc26.s390x
lttng-ust-2.9.0-2.fc26.s390x
OpenEXR-libs-2.2.0-6.fc26.s390x
ipset-libs-6.29-3.fc26.s390x
perl-XML-XPath-1.42-1.fc26.noarch
lua-filesystem-1.6.3-3.fc24.s390x
sqlite-3.20.1-1.fc26.s390x
gstreamer1-1.12.3-1.fc26.s390x
libpwquality-1.3.0-8.fc26.s390x
gettext-libs-0.19.8.1-9.fc26.s390x
python3-chardet-2.3.0-3.fc26.noarch
python3-slip-dbus-0.6.4-6.fc26.noarch
python-chardet-2.3.0-3.fc26.noarch
python2-pyasn1-0.2.3-1.fc26.noarch
python-slip-dbus-0.6.4-6.fc26.noarch
libarchive-3.2.2-4.fc26.s390x
libbabeltrace-1.5.2-2.fc26.s390x
cdparanoia-libs-10.2-22.fc26.s390x
krb5-workstation-1.15.2-4.fc26.s390x
python3-requests-kerberos-0.10.0-4.fc26.noarch
gpgme-1.8.0-12.fc26.s390x
python2-gpg-1.8.0-12.fc26.s390x
shadow-utils-4.3.1-3.fc26.s390x
cryptsetup-libs-1.7.5-1.fc26.s390x
kpartx-0.4.9-88.fc26.s390x
net-snmp-agent-libs-5.7.3-17.fc26.s390x
libXi-1.7.9-2.fc26.s390x
texlive-tetex-svn41059-33.fc26.2.noarch
texlive-tools-svn40934-33.fc26.2.noarch
texlive-bibtex-bin-svn40473-33.20160520.fc26.2.s390x
texlive-mfware-bin-svn40473-33.20160520.fc26.2.s390x
texlive-underscore-svn18261.0-33.fc26.2.noarch
texlive-avantgar-svn31835.0-33.fc26.2.noarch
texlive-anysize-svn15878.0-33.fc26.2.noarch
texlive-lineno-svn21442.4.41-33.fc26.2.noarch
texlive-mathpazo-svn15878.1.003-33.fc26.2.noarch
texlive-soul-svn15878.2.4-33.fc26.2.noarch
texlive-luatexbase-svn38550-33.fc26.2.noarch
texlive-listings-svn37534.1.6-33.fc26.2.noarch
texlive-pstricks-svn41321-33.fc26.2.noarch
texlive-metalogo-svn18611.0.12-33.fc26.2.noarch
texlive-dvipdfmx-svn41149-33.fc26.2.noarch
kbd-legacy-2.0.4-2.fc26.noarch
nspr-devel-4.17.0-1.fc26.s390x
ghostscript-x11-9.20-10.fc26.s390x
libXrender-devel-0.9.10-2.fc26.s390x
libxkbcommon-devel-0.7.1-3.fc26.s390x
mesa-libGL-devel-17.2.4-2.fc26.s390x
sqlite-devel-3.20.1-1.fc26.s390x
usbredir-devel-0.7.1-3.fc26.s390x
libcap-devel-2.25-5.fc26.s390x
brlapi-devel-0.6.6-5.fc26.s390x
fedora-upgrade-27.1-1.fc26.noarch
python3-pygpgme-0.3-22.fc26.s390x
pinentry-0.9.7-3.fc26.s390x
perl-Test-Harness-3.39-1.fc26.noarch
qemu-sanity-check-nodeps-1.1.5-6.fc26.s390x
libldb-1.1.29-5.fc26.s390x
python-libxml2-2.9.4-2.fc26.s390x
nss-util-devel-3.34.0-1.0.fc26.s390x
vim-filesystem-8.0.1360-1.fc26.s390x
webkitgtk4-plugin-process-gtk2-2.18.3-1.fc26.s390x
python2-2.7.14-4.fc26.s390x
libwayland-cursor-1.13.0-3.fc26.s390x
mariadb-config-10.1.29-1.fc26.s390x
gdb-headless-8.0.1-33.fc26.s390x
pulseaudio-libs-devel-11.1-7.fc26.s390x
curl-7.53.1-13.fc26.s390x
json-c-0.12.1-5.fc26.s390x
gpg-pubkey-34ec9cba-54e38751
gpg-pubkey-030d5aed-55b577f0
setup-2.10.5-2.fc26.noarch
lato-fonts-2.015-3.fc26.noarch
web-assets-filesystem-5-5.fc26.noarch
libsepol-2.6-2.fc26.s390x
libcap-2.25-5.fc26.s390x
tcp_wrappers-libs-7.6-85.fc26.s390x
libnl3-3.3.0-1.fc26.s390x
pixman-0.34.0-3.fc26.s390x
lzo-2.08-9.fc26.s390x
perl-5.24.3-395.fc26.s390x
libnl3-cli-3.3.0-1.fc26.s390x
gpm-libs-1.20.7-10.fc26.s390x
libgo-7.2.1-2.fc26.s390x
iso-codes-3.74-2.fc26.noarch
ipset-6.29-3.fc26.s390x
lua-term-0.07-1.fc25.s390x
libdb-utils-5.3.28-24.fc26.s390x
system-python-libs-3.6.3-2.fc26.s390x
dbus-glib-0.108-2.fc26.s390x
pam-1.3.0-2.fc26.s390x
avahi-glib-0.6.32-7.fc26.s390x
python2-dateutil-2.6.0-3.fc26.noarch
python3-asn1crypto-0.23.0-1.fc26.noarch
python3-slip-0.6.4-6.fc26.noarch
python-backports-ssl_match_hostname-3.5.0.1-4.fc26.noarch
python2-pyOpenSSL-16.2.0-6.fc26.noarch
python-slip-0.6.4-6.fc26.noarch
nss-pem-1.0.3-3.fc26.s390x
fipscheck-1.5.0-1.fc26.s390x
elfutils-0.169-1.fc26.s390x
cyrus-sasl-lib-2.1.26-32.fc26.s390x
libkadm5-1.15.2-4.fc26.s390x
python3-kerberos-1.2.5-3.fc26.s390x
rpmconf-1.0.19-1.fc26.noarch
libsemanage-2.6-4.fc26.s390x
device-mapper-libs-1.02.137-6.fc26.s390x
yum-3.4.3-512.fc26.noarch
device-mapper-multipath-0.4.9-88.fc26.s390x
net-snmp-5.7.3-17.fc26.s390x
libXtst-1.2.3-2.fc26.s390x
libXxf86vm-1.1.4-4.fc26.s390x
texlive-amsmath-svn41561-33.fc26.2.noarch
texlive-xkeyval-svn35741.2.7a-33.fc26.2.noarch
texlive-bibtex-svn40768-33.fc26.2.noarch
texlive-mfware-svn40768-33.fc26.2.noarch
texlive-wasy-svn35831.0-33.fc26.2.noarch
texlive-bookman-svn31835.0-33.fc26.2.noarch
texlive-babel-english-svn30264.3.3p-33.fc26.2.noarch
texlive-fix2col-svn38770-33.fc26.2.noarch
texlive-mdwtools-svn15878.1.05.4-33.fc26.2.noarch
texlive-tex-gyre-math-svn41264-33.fc26.2.noarch
texlive-luaotfload-svn40902-33.fc26.2.noarch
texlive-showexpl-svn32737.v0.3l-33.fc26.2.noarch
texlive-pstricks-add-svn40744-33.fc26.2.noarch
texlive-l3experimental-svn41163-33.fc26.2.noarch
texlive-xetex-bin-svn41091-33.20160520.fc26.2.s390x
kbd-misc-2.0.4-2.fc26.noarch
libpng-devel-1.6.28-2.fc26.s390x
ghostscript-core-9.20-10.fc26.s390x
libXfixes-devel-5.0.3-2.fc26.s390x
libverto-devel-0.2.6-7.fc26.s390x
mesa-libEGL-devel-17.2.4-2.fc26.s390x
popt-devel-1.16-12.fc26.s390x
readline-devel-7.0-5.fc26.s390x
cyrus-sasl-devel-2.1.26-32.fc26.s390x
sendmail-8.15.2-19.fc26.s390x
systemd-bootchart-231-3.fc26.s390x
perl-IO-Socket-SSL-2.049-1.fc26.noarch
python2-enchant-1.6.10-1.fc26.noarch
perl-generators-1.10-2.fc26.noarch
createrepo-0.10.3-11.fc26.noarch
webkitgtk4-jsc-2.18.3-1.fc26.s390x
vim-common-8.0.1360-1.fc26.s390x
nss-tools-3.34.0-1.0.fc26.s390x
glusterfs-api-3.10.8-1.fc26.s390x
pulseaudio-libs-glib2-11.1-7.fc26.s390x
mariadb-common-10.1.29-1.fc26.s390x
dhcp-libs-4.3.5-10.fc26.s390x
pcre2-devel-10.23-11.fc26.s390x
libtiff-4.0.9-1.fc26.s390x
kernel-headers-4.14.8-200.fc26.s390x
fontpackages-filesystem-1.44-18.fc26.noarch
vte-profile-0.48.4-1.fc26.s390x
texlive-kpathsea-doc-svn41139-33.fc26.2.noarch
zlib-1.2.11-2.fc26.s390x
readline-7.0-5.fc26.s390x
libattr-2.4.47-18.fc26.s390x
libgomp-7.2.1-2.fc26.s390x
libglvnd-1.0.0-1.fc26.s390x
lz4-libs-1.8.0-1.fc26.s390x
libcrypt-nss-2.25-12.fc26.s390x
jansson-2.10-2.fc26.s390x
perl-File-Path-2.12-367.fc26.noarch
perl-Unicode-EastAsianWidth-1.33-9.fc26.noarch
hunspell-1.5.4-2.fc26.s390x
libasyncns-0.8-11.fc26.s390x
libnetfilter_conntrack-1.0.6-2.fc26.s390x
perl-Storable-2.56-368.fc26.s390x
autoconf-2.69-24.fc26.noarch
device-mapper-persistent-data-0.6.3-5.fc26.s390x
quota-4.03-9.fc26.s390x
crypto-policies-20170606-1.git7c32281.fc26.noarch
glib2-2.52.3-2.fc26.s390x
python2-idna-2.5-1.fc26.noarch
python2-libcomps-0.1.8-3.fc26.s390x
gsettings-desktop-schemas-3.24.1-1.fc26.s390x
javapackages-tools-4.7.0-17.fc26.noarch
libselinux-python3-2.6-7.fc26.s390x
python-backports-1.0-9.fc26.s390x
python2-cryptography-2.0.2-2.fc26.s390x
libselinux-python-2.6-7.fc26.s390x
Lmod-7.5.3-1.fc26.s390x
fipscheck-lib-1.5.0-1.fc26.s390x
elfutils-libs-0.169-1.fc26.s390x
krb5-libs-1.15.2-4.fc26.s390x
libuser-0.62-6.fc26.s390x
python2-requests-kerberos-0.10.0-4.fc26.noarch
npth-1.5-1.fc26.s390x
packagedb-cli-2.14.1-2.fc26.noarch
ustr-1.0.4-22.fc26.s390x
device-mapper-1.02.137-6.fc26.s390x
polkit-pkla-compat-0.1-8.fc26.s390x
fakeroot-1.22-1.fc26.s390x
libXmu-1.1.2-5.fc26.s390x
cairo-gobject-1.14.10-1.fc26.s390x
texlive-booktabs-svn40846-33.fc26.2.noarch
texlive-dvips-bin-svn40987-33.20160520.fc26.2.s390x
texlive-float-svn15878.1.3d-33.fc26.2.noarch
texlive-tex-svn40793-33.fc26.2.noarch
texlive-fancyref-svn15878.0.9c-33.fc26.2.noarch
texlive-manfnt-font-svn35799.0-33.fc26.2.noarch
texlive-cmap-svn41168-33.fc26.2.noarch
texlive-hyph-utf8-svn41189-33.fc26.2.noarch
texlive-paralist-svn39247-33.fc26.2.noarch
texlive-trimspaces-svn15878.1.1-33.fc26.2.noarch
texlive-tipa-svn29349.1.3-33.fc26.2.noarch
texlive-l3packages-svn41246-33.fc26.2.noarch
texlive-pst-pdf-svn31660.1.1v-33.fc26.2.noarch
texlive-tex-gyre-svn18651.2.004-33.fc26.2.noarch
texlive-beamer-svn36461.3.36-33.fc26.2.noarch
gd-2.2.5-1.fc26.s390x
elfutils-libelf-devel-0.169-1.fc26.s390x
gc-devel-7.6.0-2.fc26.s390x
libXft-devel-2.3.2-5.fc26.s390x
krb5-devel-1.15.2-4.fc26.s390x
rpm-devel-4.13.0.2-1.fc26.s390x
pcre-static-8.41-3.fc26.s390x
bluez-libs-devel-5.46-6.fc26.s390x
systemtap-3.2-2.fc26.s390x
trousers-0.3.13-7.fc26.s390x
iproute-tc-4.11.0-1.fc26.s390x
python2-sphinx-1.5.5-1.fc26.noarch
libgnome-keyring-3.12.0-8.fc26.s390x
perl-File-ShareDir-1.102-8.fc26.noarch
python2-paramiko-2.2.1-1.fc26.noarch
python2-openidc-client-0.4.0-1.20171113git54dee6e.fc26.noarch
openssh-server-7.5p1-4.fc26.s390x
pulseaudio-libs-11.1-7.fc26.s390x
python2-bodhi-2.12.2-3.fc26.noarch
lua-libs-5.3.4-7.fc26.s390x
dhcp-common-4.3.5-10.fc26.noarch
python3-pip-9.0.1-11.fc26.noarch
python3-sssdconfig-1.16.0-4.fc26.noarch
gpg-pubkey-95a43f54-5284415a
gpg-pubkey-fdb19c98-56fd6333
gpg-pubkey-64dab85d-57d33e22
tzdata-2017c-1.fc26.noarch
firewalld-filesystem-0.4.4.5-1.fc26.noarch
xkeyboard-config-2.21-3.fc26.noarch
texlive-texlive-common-doc-svn40682-33.fc26.2.noarch
ncurses-base-6.0-8.20170212.fc26.noarch
libselinux-2.6-7.fc26.s390x
bzip2-libs-1.0.6-22.fc26.s390x
libdb-5.3.28-24.fc26.s390x
mpfr-3.1.5-3.fc26.s390x
file-libs-5.30-11.fc26.s390x
libunistring-0.9.7-1.fc26.s390x
libxslt-1.1.29-1.fc26.s390x
libtasn1-4.12-1.fc26.s390x
gdbm-1.13-1.fc26.s390x
libepoxy-1.4.3-1.fc26.s390x
libpsl-0.18.0-1.fc26.s390x
perl-Carp-1.40-366.fc26.noarch
e2fsprogs-libs-1.43.4-2.fc26.s390x
libmnl-1.0.4-2.fc26.s390x
openjpeg2-2.2.0-3.fc26.s390x
perl-PathTools-3.63-367.fc26.s390x
perl-File-Temp-0.230.400-2.fc26.noarch
perl-XML-Parser-2.44-6.fc26.s390x
libss-1.43.4-2.fc26.s390x
ilmbase-2.2.0-8.fc26.s390x
fuse-libs-2.9.7-2.fc26.s390x
libdaemon-0.14-11.fc26.s390x
libbasicobjects-0.1.1-34.fc26.s390x
iptables-1.6.1-2.fc26.s390x
perl-TermReadKey-2.37-2.fc26.s390x
perl-Term-ANSIColor-4.06-2.fc26.noarch
perl-libintl-perl-1.26-2.fc26.s390x
usbredir-0.7.1-3.fc26.s390x
fftw-libs-double-3.3.5-4.fc26.s390x
rsync-3.1.2-5.fc26.s390x
libiscsi-1.15.0-3.fc26.s390x
ttmkfdir-3.0.9-49.fc26.s390x
texlive-base-2016-33.20160520.fc26.1.noarch
python2-six-1.10.0-9.fc26.noarch
atk-2.24.0-1.fc26.s390x
python2-kitchen-1.2.4-6.fc26.noarch
guile-2.0.14-1.fc26.s390x
desktop-file-utils-0.23-3.fc26.s390x
pyxattr-0.5.3-10.fc26.s390x
shared-mime-info-1.8-2.fc26.s390x
libyaml-0.1.7-2.fc26.s390x
python3-PyYAML-3.12-3.fc26.s390x
openssh-7.5p1-4.fc26.s390x
kernel-core-4.13.16-202.fc26.s390x
perl-Git-2.13.6-2.fc26.noarch
python3-dnf-plugins-extras-common-2.0.4-1.fc26.noarch
openssl-1.1.0g-1.fc26.s390x
gawk-4.1.4-6.fc26.s390x
gnutls-3.5.16-4.fc26.s390x
openldap-2.4.45-2.fc26.s390x
bind-license-9.11.1-4.P3.fc26.noarch
python2-gluster-3.10.8-1.fc26.s390x
selinux-policy-3.13.1-260.17.fc26.noarch
linux-firmware-20171215-81.git2451bb22.fc26.noarch
libpkgconf-1.3.12-1.fc26.s390x
NetworkManager-libnm-1.8.2-4.fc26.s390x
gnutls-devel-3.5.16-4.fc26.s390x
mariadb-libs-10.1.29-1.fc26.s390x
python2-urllib3-1.20-2.fc26.noarch
sssd-nfs-idmap-1.16.0-4.fc26.s390x
libsss_sudo-1.16.0-4.fc26.s390x
libgudev-232-1.fc26.s390x
python3-libs-3.6.3-2.fc26.s390x
python3-javapackages-4.7.0-17.fc26.noarch
python3-ply-3.9-3.fc26.noarch
python3-systemd-234-1.fc26.s390x
python3-requests-2.13.0-1.fc26.noarch
blktrace-1.1.0-4.fc26.s390x
python2-asn1crypto-0.23.0-1.fc26.noarch
python2-cffi-1.9.1-2.fc26.s390x
python2-sphinx_rtd_theme-0.2.4-1.fc26.noarch
lua-json-1.3.2-7.fc26.noarch
libcephfs1-10.2.7-2.fc26.s390x
glib-networking-2.50.0-2.fc26.s390x
elfutils-default-yama-scope-0.169-1.fc26.noarch
GeoIP-GeoLite-data-2017.10-1.fc26.noarch
libedit-3.1-17.20160618cvs.fc26.s390x
libverto-libev-0.2.6-7.fc26.s390x
libserf-1.3.9-3.fc26.s390x
createrepo_c-0.10.0-9.fc26.s390x
python2-kerberos-1.2.5-3.fc26.s390x
libsrtp-1.5.4-4.fc26.s390x
lzo-minilzo-2.08-9.fc26.s390x
librepo-1.8.0-1.fc26.s390x
koji-1.14.0-1.fc26.noarch
sg3_utils-1.42-1.fc26.s390x
libobjc-7.2.1-2.fc26.s390x
policycoreutils-2.6-6.fc26.s390x
libdrm-2.4.88-1.fc26.s390x
kernel-core-4.13.13-200.fc26.s390x
systemtap-client-3.2-2.fc26.s390x
lvm2-2.02.168-6.fc26.s390x
device-mapper-multipath-libs-0.4.9-88.fc26.s390x
libfdt-1.4.5-1.fc26.s390x
s390utils-cmsfs-1.36.1-3.fc26.s390x
libXdamage-1.1.4-9.fc26.s390x
libXaw-1.0.13-5.fc26.s390x
brltty-5.5-5.fc26.s390x
librsvg2-2.40.18-1.fc26.s390x
texlive-tetex-bin-svn36770.0-33.20160520.fc26.2.noarch
texlive-etex-pkg-svn39355-33.fc26.2.noarch
texlive-graphics-svn41015-33.fc26.2.noarch
texlive-dvips-svn41149-33.fc26.2.noarch
texlive-zapfding-svn31835.0-33.fc26.2.noarch
texlive-footmisc-svn23330.5.5b-33.fc26.2.noarch
texlive-makeindex-svn40768-33.fc26.2.noarch
texlive-pst-ovl-svn40873-33.fc26.2.noarch
texlive-texlive-scripts-svn41433-33.fc26.2.noarch
texlive-ltabptch-svn17533.1.74d-33.fc26.2.noarch
texlive-euro-svn22191.1.1-33.fc26.2.noarch
texlive-mflogo-font-svn36898.1.002-33.fc26.2.noarch
texlive-zapfchan-svn31835.0-33.fc26.2.noarch
texlive-cmextra-svn32831.0-33.fc26.2.noarch
texlive-finstrut-svn21719.0.5-33.fc26.2.noarch
texlive-hyphen-base-svn41138-33.fc26.2.noarch
texlive-marginnote-svn41382-33.fc26.2.noarch
texlive-parallel-svn15878.0-33.fc26.2.noarch
texlive-sepnum-svn20186.2.0-33.fc26.2.noarch
texlive-environ-svn33821.0.3-33.fc26.2.noarch
texlive-type1cm-svn21820.0-33.fc26.2.noarch
texlive-xunicode-svn30466.0.981-33.fc26.2.noarch
texlive-attachfile-svn38830-33.fc26.2.noarch
texlive-fontspec-svn41262-33.fc26.2.noarch
texlive-fancyvrb-svn18492.2.8-33.fc26.2.noarch
texlive-pst-pdf-bin-svn7838.0-33.20160520.fc26.2.noarch
texlive-xcolor-svn41044-33.fc26.2.noarch
texlive-pdfpages-svn40638-33.fc26.2.noarch
texlive-sansmathaccent-svn30187.0-33.fc26.2.noarch
texlive-ucs-svn35853.2.2-33.fc26.2.noarch
texlive-dvipdfmx-bin-svn40273-33.20160520.fc26.2.s390x
libotf-0.9.13-8.fc26.s390x
go-srpm-macros-2-8.fc26.noarch
pcre-devel-8.41-3.fc26.s390x
mesa-libwayland-egl-devel-17.2.4-2.fc26.s390x
ghostscript-9.20-10.fc26.s390x
libcephfs_jni-devel-10.2.7-2.fc26.s390x
libXdamage-devel-1.1.4-9.fc26.s390x
freetype-devel-2.7.1-9.fc26.s390x
ncurses-devel-6.0-8.20170212.fc26.s390x
fontconfig-devel-2.12.6-4.fc26.s390x
cairo-devel-1.14.10-1.fc26.s390x
libselinux-devel-2.6-7.fc26.s390x
guile-devel-2.0.14-1.fc26.s390x
libcap-ng-devel-0.7.8-3.fc26.s390x
bash-completion-2.6-1.fc26.noarch
libXevie-1.0.3-12.fc26.s390x
kernel-4.13.13-200.fc26.s390x
audit-2.8.1-1.fc26.s390x
gcc-objc-7.2.1-2.fc26.s390x
gcc-go-7.2.1-2.fc26.s390x
python-firewall-0.4.4.5-1.fc26.noarch
python3-html5lib-0.999-13.fc26.noarch
python2-simplejson-3.10.0-3.fc26.s390x
flex-2.6.1-3.fc26.s390x
telnet-0.17-69.fc26.s390x
gpg-pubkey-8e1431d5-53bcbac7
emacs-filesystem-25.3-3.fc26.noarch
fontawesome-fonts-4.7.0-2.fc26.noarch
fontawesome-fonts-web-4.7.0-2.fc26.noarch
tzdata-java-2017c-1.fc26.noarch
rpmconf-base-1.0.19-1.fc26.noarch
glibc-2.25-12.fc26.s390x
info-6.3-3.fc26.s390x
sqlite-libs-3.20.1-1.fc26.s390x
texlive-lib-2016-33.20160520.fc26.1.s390x
sed-4.4-1.fc26.s390x
libicu-57.1-7.fc26.s390x
libcap-ng-0.7.8-3.fc26.s390x
nettle-3.3-2.fc26.s390x
libidn2-2.0.4-1.fc26.s390x
lcms2-2.8-3.fc26.s390x
dbus-libs-1.11.18-1.fc26.s390x
perl-Exporter-5.72-367.fc26.noarch
unzip-6.0-34.fc26.s390x
iproute-4.11.0-1.fc26.s390x
zip-3.0-18.fc26.s390x
perl-constant-1.33-368.fc26.noarch
perl-MIME-Base64-3.15-366.fc26.s390x
lua-posix-33.3.1-4.fc26.s390x
bzip2-1.0.6-22.fc26.s390x
libstdc++-devel-7.2.1-2.fc26.s390x
hyphen-2.8.8-6.fc26.s390x
libdvdread-5.0.3-4.fc26.s390x
libcollection-0.7.0-34.fc26.s390x
libdvdnav-5.0.3-5.fc26.s390x
perl-version-0.99.18-1.fc26.s390x
perl-Encode-2.88-6.fc26.s390x
automake-1.15-9.fc26.noarch
plymouth-core-libs-0.9.3-0.7.20160620git0e65b86c.fc26.s390x
hesiod-3.2.1-7.fc26.s390x
jasper-libs-2.0.14-1.fc26.s390x
mozjs17-17.0.0-18.fc26.s390x
fontconfig-2.12.6-4.fc26.s390x
harfbuzz-1.4.4-1.fc26.s390x
alsa-lib-1.1.4.1-1.fc26.s390x
make-4.2.1-2.fc26.s390x
gobject-introspection-1.52.1-1.fc26.s390x
hicolor-icon-theme-0.15-5.fc26.noarch
gdk-pixbuf2-2.36.9-1.fc26.s390x
libgusb-0.2.11-1.fc26.s390x
libtalloc-2.1.10-2.fc26.s390x
libdhash-0.5.0-34.fc26.s390x
python2-bcrypt-3.1.4-2.fc26.s390x
PyYAML-3.12-3.fc26.s390x
nss-softokn-freebl-3.34.0-1.0.fc26.s390x
kernel-modules-4.13.16-202.fc26.s390x
git-2.13.6-2.fc26.s390x
gnupg2-smime-2.2.3-1.fc26.s390x
openssl-devel-1.1.0g-1.fc26.s390x
python2-dnf-plugins-extras-common-2.0.4-1.fc26.noarch
copy-jdk-configs-3.3-2.fc26.noarch
glusterfs-client-xlators-3.10.8-1.fc26.s390x
libcurl-7.53.1-13.fc26.s390x
bind-libs-lite-9.11.1-4.P3.fc26.s390x
glusterfs-extra-xlators-3.10.8-1.fc26.s390x
python3-setuptools-37.0.0-1.fc26.noarch
kernel-core-4.14.8-200.fc26.s390x
pkgconf-1.3.12-1.fc26.s390x
NetworkManager-1.8.2-4.fc26.s390x
libjpeg-turbo-devel-1.5.3-1.fc26.s390x
lua-5.3.4-7.fc26.s390x
boost-thread-1.63.0-10.fc26.s390x
wget-1.19.2-2.fc26.s390x
libwebp-0.6.1-1.fc26.s390x
kernel-devel-4.14.8-200.fc26.s390x
python3-lxml-4.1.1-1.fc26.s390x
python3-ordered-set-2.0.0-6.fc26.noarch
python3-rpmconf-1.0.19-1.fc26.noarch
python-offtrac-0.1.0-9.fc26.noarch
python2-pycparser-2.14-10.fc26.noarch
python2-sphinx-theme-alabaster-0.7.9-3.fc26.noarch
python2-pysocks-1.6.7-1.fc26.noarch
lua-lpeg-1.0.1-2.fc26.s390x
poppler-0.52.0-10.fc26.s390x
libproxy-0.4.15-2.fc26.s390x
crontabs-1.11-14.20150630git.fc26.noarch
java-1.8.0-openjdk-headless-1.8.0.151-1.b12.fc26.s390x
libev-4.24-2.fc26.s390x
libsigsegv-2.11-1.fc26.s390x
fedora-cert-0.6.0.1-2.fc26.noarch
drpm-0.3.0-6.fc26.s390x
createrepo_c-libs-0.10.0-9.fc26.s390x
python2-cccolutils-1.5-3.fc26.s390x
m17n-lib-1.7.0-6.fc26.s390x
lsscsi-0.28-4.fc26.s390x
python2-koji-1.14.0-1.fc26.noarch
python3-koji-1.14.0-1.fc26.noarch
python3-gpg-1.8.0-12.fc26.s390x
sg3_utils-libs-1.42-1.fc26.s390x
SDL2-2.0.7-2.fc26.s390x
util-linux-2.30.2-1.fc26.s390x
rpcbind-0.2.4-8.rc2.fc26.s390x
s390utils-mon_statd-1.36.1-3.fc26.s390x
GConf2-3.2.6-17.fc26.s390x
systemd-container-233-7.fc26.s390x
usermode-1.111-9.fc26.s390x
pcre-utf32-8.41-3.fc26.s390x
libXt-1.1.5-4.fc26.s390x
libXpm-3.5.12-2.fc26.s390x
at-spi2-core-2.24.1-1.fc26.s390x
cairo-1.14.10-1.fc26.s390x
texlive-kpathsea-bin-svn40473-33.20160520.fc26.2.s390x
texlive-ifluatex-svn41346-33.fc26.2.noarch
texlive-babel-svn40706-33.fc26.2.noarch
texlive-colortbl-svn29803.v1.0a-33.fc26.2.noarch
texlive-marvosym-svn29349.2.2a-33.fc26.2.noarch
texlive-euler-svn17261.2.5-33.fc26.2.noarch
texlive-latexconfig-svn40274-33.fc26.2.noarch
texlive-plain-svn40274-33.fc26.2.noarch
texlive-texconfig-bin-svn29741.0-33.20160520.fc26.2.noarch
giflib-4.1.6-16.fc26.s390x
texlive-microtype-svn41127-33.fc26.2.noarch
texlive-eurosym-svn17265.1.4_subrfix-33.fc26.2.noarch
texlive-symbol-svn31835.0-33.fc26.2.noarch
texlive-chngcntr-svn17157.1.0a-33.fc26.2.noarch
texlive-euenc-svn19795.0.1h-33.fc26.2.noarch
texlive-luatex-svn40963-33.fc26.2.noarch
texlive-knuth-local-svn38627-33.fc26.2.noarch
texlive-mparhack-svn15878.1.4-33.fc26.2.noarch
texlive-rcs-svn15878.0-33.fc26.2.noarch
texlive-texlive-msg-translations-svn41431-33.fc26.2.noarch
texlive-updmap-map-svn41159-33.fc26.2.noarch
texlive-geometry-svn19716.5.6-33.fc26.2.noarch
texlive-memoir-svn41203-33.fc26.2.noarch
texlive-l3kernel-svn41246-33.fc26.2.noarch
texlive-pst-eps-svn15878.1.0-33.fc26.2.noarch
texlive-pst-text-svn15878.1.00-33.fc26.2.noarch
texlive-amscls-svn36804.0-33.fc26.2.noarch
texlive-pst-slpe-svn24391.1.31-33.fc26.2.noarch
texlive-extsizes-svn17263.1.4a-33.fc26.2.noarch
texlive-xetex-def-svn40327-33.fc26.2.noarch
texlive-collection-latex-svn41011-33.20160520.fc26.2.noarch
gstreamer1-plugins-base-1.12.3-1.fc26.s390x
fpc-srpm-macros-1.1-2.fc26.noarch
xorg-x11-proto-devel-7.7-22.fc26.noarch
urw-fonts-2.4-23.fc26.noarch
atk-devel-2.24.0-1.fc26.s390x
ImageMagick-libs-6.9.9.22-1.fc26.s390x
libxcb-devel-1.12-3.fc26.s390x
libXrandr-devel-1.5.1-2.fc26.s390x
libcom_err-devel-1.43.4-2.fc26.s390x
dbus-devel-1.11.18-1.fc26.s390x
libepoxy-devel-1.4.3-1.fc26.s390x
libicu-devel-57.1-7.fc26.s390x
p11-kit-devel-0.23.9-2.fc26.s390x
rpm-build-4.13.0.2-1.fc26.s390x
libssh2-devel-1.8.0-5.fc26.s390x
graphviz-2.40.1-4.fc26.s390x
zlib-static-1.2.11-2.fc26.s390x
mesa-libgbm-devel-17.2.4-2.fc26.s390x
dracut-config-rescue-046-3.1.fc26.s390x
screen-4.6.2-1.fc26.s390x
python-osbs-client-0.39.1-1.fc26.noarch
gcc-gdb-plugin-7.2.1-2.fc26.s390x
pyparsing-2.1.10-3.fc26.noarch
python3-pyasn1-0.2.3-1.fc26.noarch
python2-html5lib-0.999-13.fc26.noarch
teamd-1.27-1.fc26.s390x
hardlink-1.3-1.fc26.s390x
chrpath-0.16-4.fc26.s390x
libgcc-7.2.1-2.fc26.s390x
python-rpm-macros-3-20.fc26.noarch
texlive-pdftex-doc-svn41149-33.fc26.2.noarch
glibc-common-2.25-12.fc26.s390x
libstdc++-7.2.1-2.fc26.s390x
nspr-4.17.0-1.fc26.s390x
grep-3.1-1.fc26.s390x
libgcrypt-1.7.9-1.fc26.s390x
libacl-2.2.52-15.fc26.s390x
cpio-2.12-4.fc26.s390x
libatomic_ops-7.4.4-2.fc26.s390x
p11-kit-0.23.9-2.fc26.s390x
gc-7.6.0-2.fc26.s390x
psmisc-22.21-9.fc26.s390x
systemd-libs-233-7.fc26.s390x
xz-5.2.3-2.fc26.s390x
perl-libs-5.24.3-395.fc26.s390x
kmod-libs-24-1.fc26.s390x
libpcap-1.8.1-3.fc26.s390x
perl-macros-5.24.3-395.fc26.s390x
perl-parent-0.236-2.fc26.noarch
perl-Text-Unidecode-1.30-2.fc26.noarch
newt-0.52.20-1.fc26.s390x
libcomps-0.1.8-3.fc26.s390x
libfontenc-1.1.3-4.fc26.s390x
ipcalc-0.2.0-1.fc26.s390x
libnfnetlink-1.0.1-9.fc26.s390x
libref_array-0.1.5-34.fc26.s390x
perl-Term-Cap-1.17-366.fc26.noarch
perl-Digest-1.17-367.fc26.noarch
perl-SelfLoader-1.23-395.fc26.noarch
perl-Pod-Simple-3.35-2.fc26.noarch
perl-URI-1.71-6.fc26.noarch
cpp-7.2.1-2.fc26.s390x
attr-2.4.47-18.fc26.s390x
gmp-c++-6.1.2-4.fc26.s390x
xapian-core-libs-1.4.4-1.fc26.s390x
system-python-3.6.3-2.fc26.s390x
harfbuzz-icu-1.4.4-1.fc26.s390x
libtevent-0.9.34-1.fc26.s390x
http-parser-2.7.1-5.fc26.s390x
libsodium-1.0.14-1.fc26.s390x
python-gssapi-1.2.0-5.fc26.s390x
nss-softokn-3.34.0-1.0.fc26.s390x
gnupg2-2.2.3-1.fc26.s390x
nss-devel-3.34.0-1.0.fc26.s390x
vim-minimal-8.0.1360-1.fc26.s390x
perl-libnet-3.11-1.fc26.noarch
kernel-devel-4.13.16-202.fc26.s390x
python2-libs-2.7.14-4.fc26.s390x
libwayland-client-1.13.0-3.fc26.s390x
python3-dnf-2.7.5-2.fc26.noarch
glusterfs-fuse-3.10.8-1.fc26.s390x
pcre2-utf32-10.23-11.fc26.s390x
kernel-modules-4.14.8-200.fc26.s390x
pkgconf-pkg-config-1.3.12-1.fc26.s390x
NetworkManager-ppp-1.8.2-4.fc26.s390x
wayland-devel-1.13.0-3.fc26.s390x
kernel-4.14.8-200.fc26.s390x
boost-random-1.63.0-10.fc26.s390x
libmicrohttpd-0.9.58-1.fc26.s390x
mailx-12.5-24.fc26.s390x
NetworkManager-glib-1.8.2-4.fc26.s390x
libcroco-0.6.12-1.fc26.s390x
libssh2-1.8.0-5.fc26.s390x
json-glib-1.2.6-1.fc26.s390x
libevent-2.0.22-3.fc26.s390x
gdk-pixbuf2-modules-2.36.9-1.fc26.s390x
colord-libs-1.3.5-1.fc26.s390x
python3-magic-5.30-11.fc26.noarch
python3-gobject-base-3.24.1-1.fc26.s390x
python3-pyroute2-0.4.13-1.fc26.noarch
python3-pysocks-1.6.7-1.fc26.noarch
python2-click-6.7-3.fc26.noarch
python-munch-2.1.0-2.fc26.noarch
python2-ply-3.9-3.fc26.noarch
python2-snowballstemmer-1.2.1-3.fc26.noarch
python-magic-5.30-11.fc26.noarch
python-beautifulsoup4-4.6.0-1.fc26.noarch
python2-gitdb-2.0.3-1.fc26.noarch
librados-devel-10.2.7-2.fc26.s390x
libcacard-2.5.3-1.fc26.s390x
libmodman-2.0.1-13.fc26.s390x
zziplib-0.13.62-8.fc26.s390x
lksctp-tools-1.0.16-6.fc26.s390x
procmail-3.22-44.fc26.s390x
libthai-0.1.25-2.fc26.s390x
libpipeline-1.4.1-3.fc26.s390x
python2-pycurl-7.43.0-8.fc26.s390x
deltarpm-3.6-19.fc26.s390x
subversion-libs-1.9.7-1.fc26.s390x
python-krbV-1.0.90-13.fc26.s390x
m17n-db-1.7.0-8.fc26.noarch
linux-atm-libs-2.5.1-17.fc26.s390x
python2-rpm-4.13.0.2-1.fc26.s390x
python2-librepo-1.8.0-1.fc26.s390x
python2-dnf-plugins-core-2.1.5-1.fc26.noarch
qrencode-libs-3.4.4-1.fc26.s390x
s390utils-iucvterm-1.36.1-3.fc26.s390x
libsmartcols-2.30.2-1.fc26.s390x
dbus-1.11.18-1.fc26.s390x
systemd-udev-233-7.fc26.s390x
device-mapper-event-1.02.137-6.fc26.s390x
polkit-0.113-8.fc26.s390x
mock-1.4.7-2.fc26.noarch
libwmf-lite-0.2.8.4-53.fc26.s390x
libXcomposite-0.4.4-9.fc26.s390x
libXcursor-1.1.14-8.fc26.s390x
at-spi2-atk-2.24.1-1.fc26.s390x
pango-1.40.12-1.fc26.s390x
texlive-metafont-bin-svn40987-33.20160520.fc26.2.s390x
texlive-url-svn32528.3.4-33.fc26.2.noarch
texlive-fp-svn15878.0-33.fc26.2.noarch
texlive-latex-fonts-svn28888.0-33.fc26.2.noarch
texlive-mptopdf-bin-svn18674.0-33.20160520.fc26.2.noarch
texlive-fancybox-svn18304.1.4-33.fc26.2.noarch
texlive-lua-alt-getopt-svn29349.0.7.0-33.fc26.2.noarch
texlive-tex-bin-svn40987-33.20160520.fc26.2.s390x
texlive-texconfig-svn40768-33.fc26.2.noarch
texlive-wasy2-ps-svn35830.0-33.fc26.2.noarch
texlive-psfrag-svn15878.3.04-33.fc26.2.noarch
texlive-helvetic-svn31835.0-33.fc26.2.noarch
texlive-times-svn35058.0-33.fc26.2.noarch
texlive-cite-svn36428.5.5-33.fc26.2.noarch
texlive-fancyhdr-svn15878.3.1-33.fc26.2.noarch
texlive-luatex-bin-svn41091-33.20160520.fc26.2.s390x
texlive-lm-math-svn36915.1.959-33.fc26.2.noarch
texlive-ntgclass-svn15878.2.1a-33.fc26.2.noarch
texlive-sansmath-svn17997.1.1-33.fc26.2.noarch
texlive-textcase-svn15878.0-33.fc26.2.noarch
texlive-unicode-data-svn39808-33.fc26.2.noarch
texlive-breakurl-svn29901.1.40-33.fc26.2.noarch
texlive-latex-svn40218-33.fc26.2.noarch
texlive-lualatex-math-svn40621-33.fc26.2.noarch
texlive-pst-coil-svn37377.1.07-33.fc26.2.noarch
texlive-pst-plot-svn41242-33.fc26.2.noarch
texlive-unicode-math-svn38462-33.fc26.2.noarch
texlive-pst-blur-svn15878.2.0-33.fc26.2.noarch
texlive-cm-super-svn15878.0-33.fc26.2.noarch
texlive-wasysym-svn15878.2.0-33.fc26.2.noarch
texlive-collection-fontsrecommended-svn35830.0-33.20160520.fc26.2.noarch
libXv-1.0.11-2.fc26.s390x
ghc-srpm-macros-1.4.2-5.fc26.noarch
latex2html-2017.2-2.fc26.noarch
libXau-devel-1.0.8-7.fc26.s390x
libXcursor-devel-1.1.14-8.fc26.s390x
graphite2-devel-1.3.10-1.fc26.s390x
pixman-devel-0.34.0-3.fc26.s390x
wayland-protocols-devel-1.9-1.fc26.noarch
mesa-libGLES-devel-17.2.4-2.fc26.s390x
redhat-rpm-config-63-1.fc26.noarch
vte291-devel-0.48.4-1.fc26.s390x
ceph-devel-compat-10.2.7-2.fc26.s390x
lzo-devel-2.08-9.fc26.s390x
libiscsi-devel-1.15.0-3.fc26.s390x
libfdt-devel-1.4.5-1.fc26.s390x
dnsmasq-2.76-5.fc26.s390x
avahi-autoipd-0.6.32-7.fc26.s390x
rpm-plugin-systemd-inhibit-4.13.0.2-1.fc26.s390x
gcc-c++-7.2.1-2.fc26.s390x
python2-ndg_httpsclient-0.4.0-7.fc26.noarch
gettext-0.19.8.1-9.fc26.s390x
btrfs-progs-4.9.1-2.fc26.s390x
fedora-logos-26.0.1-1.fc26.s390x
dejagnu-1.6-2.fc26.noarch
libaio-devel-0.3.110-7.fc26.s390x
dos2unix-7.3.4-2.fc26.s390x
distribution-gpg-keys-1.15-1.fc26.noarch
python-sphinx-locale-1.5.5-1.fc26.noarch
python2-rpm-macros-3-20.fc26.noarch
libxml2-2.9.4-2.fc26.s390x
popt-1.16-12.fc26.s390x
tar-1.29-5.fc26.s390x
avahi-libs-0.6.32-7.fc26.s390x
m4-1.4.18-3.fc26.s390x
perl-Socket-2.024-2.fc26.s390x
perl-Time-Local-1.250-2.fc26.noarch
libmetalink-0.1.3-2.fc26.s390x
jbigkit-libs-2.1-6.fc26.s390x
netpbm-10.80.00-2.fc26.s390x
perl-Digest-MD5-2.55-3.fc26.s390x
perl-Getopt-Long-2.49.1-2.fc26.noarch
libglvnd-opengl-1.0.0-1.fc26.s390x
libattr-devel-2.4.47-18.fc26.s390x
teckit-2.5.1-16.fc26.s390x
python3-six-1.10.0-9.fc26.noarch
python3-libcomps-0.1.8-3.fc26.s390x
gtk-update-icon-cache-3.22.21-2.fc26.s390x
python3-3.6.3-2.fc26.s390x
python3-pyparsing-2.1.10-3.fc26.noarch
python2-markupsafe-0.23-13.fc26.s390x
python2-mock-2.0.0-4.fc26.noarch
python2-yubico-1.3.2-7.fc26.noarch
python2-smmap-2.0.3-1.fc26.noarch
librbd-devel-10.2.7-2.fc26.s390x
pigz-2.3.4-2.fc26.s390x
gcc-7.2.1-2.fc26.s390x
libnghttp2-1.21.1-1.fc26.s390x
cups-libs-2.2.2-7.fc26.s390x
libnfsidmap-0.27-1.fc26.s390x
ykpers-1.18.0-2.fc26.s390x
python3-librepo-1.8.0-1.fc26.s390x
systemtap-runtime-3.2-2.fc26.s390x
geoclue2-2.4.5-4.fc26.s390x
initscripts-9.72-1.fc26.s390x
plymouth-0.9.3-0.7.20160620git0e65b86c.fc26.s390x
ebtables-2.0.10-22.fc26.s390x
gssproxy-0.7.0-9.fc26.s390x
libXext-1.3.3-5.fc26.s390x
mesa-libEGL-17.2.4-2.fc26.s390x
texlive-texlive.infra-bin-svn40312-33.20160520.fc26.2.s390x
texlive-thumbpdf-svn34621.3.16-33.fc26.2.noarch
texlive-carlisle-svn18258.0-33.fc26.2.noarch
texlive-gsftopk-svn40768-33.fc26.2.noarch
texlive-pdftex-svn41149-33.fc26.2.noarch
texlive-crop-svn15878.1.5-33.fc26.2.noarch
texlive-pxfonts-svn15878.0-33.fc26.2.noarch
texlive-enctex-svn34957.0-33.fc26.2.noarch
texlive-kastrup-svn15878.0-33.fc26.2.noarch
texlive-pspicture-svn15878.0-33.fc26.2.noarch
texlive-varwidth-svn24104.0.92-33.fc26.2.noarch
texlive-currfile-svn40725-33.fc26.2.noarch
texlive-pst-grad-svn15878.1.06-33.fc26.2.noarch
texlive-latex-bin-svn41438-33.fc26.2.noarch
texlive-ltxmisc-svn21927.0-33.fc26.2.noarch
lasi-1.1.2-7.fc26.s390x
adwaita-icon-theme-3.24.0-2.fc26.noarch
xz-devel-5.2.3-2.fc26.s390x
xorg-x11-fonts-Type1-7.5-17.fc26.noarch
libXi-devel-1.7.9-2.fc26.s390x
at-spi2-atk-devel-2.24.1-1.fc26.s390x
pango-devel-1.40.12-1.fc26.s390x
libcacard-devel-2.5.3-1.fc26.s390x
libseccomp-devel-2.3.2-1.fc26.s390x
subversion-1.9.7-1.fc26.s390x
sudo-1.8.21p2-1.fc26.s390x
pykickstart-2.35-2.fc26.noarch
e2fsprogs-1.43.4-2.fc26.s390x
libstdc++-static-7.2.1-2.fc26.s390x
libbsd-0.8.3-3.fc26.s390x
c-ares-1.13.0-1.fc26.s390x
python2-pyxdg-0.25-12.fc26.noarch
nss-softokn-freebl-devel-3.34.0-1.0.fc26.s390x
python2-rpkg-1.51-2.fc26.noarch
strace-4.20-1.fc26.s390x
valgrind-3.13.0-12.fc26.s390x
libsss_idmap-1.16.0-4.fc26.s390x
gnutls-c++-3.5.16-4.fc26.s390x
libwayland-server-1.13.0-3.fc26.s390x
dhcp-client-4.3.5-10.fc26.s390x
bind-libs-9.11.1-4.P3.fc26.s390x
man-pages-4.09-4.fc26.noarch
gpg-pubkey-a29cb19c-53bcbba6
quota-nls-4.03-9.fc26.noarch
qt5-srpm-macros-5.8.0-2.fc26.noarch
xz-libs-5.2.3-2.fc26.s390x
gmp-6.1.2-4.fc26.s390x
audit-libs-2.8.1-1.fc26.s390x
file-5.30-11.fc26.s390x
libusbx-1.0.21-2.fc26.s390x
binutils-2.27-28.fc26.s390x
perl-Errno-1.25-395.fc26.s390x
perl-HTTP-Tiny-0.070-2.fc26.noarch
xml-common-0.6.3-45.fc26.noarch
opus-1.2.1-1.fc26.s390x
kernel-devel-4.13.13-200.fc26.s390x
perl-podlators-4.09-2.fc26.noarch
flac-libs-1.3.2-2.fc26.s390x
libacl-devel-2.2.52-15.fc26.s390x
coreutils-common-8.27-7.fc26.s390x
cracklib-2.9.6-5.fc26.s390x
pyliblzma-0.5.3-17.fc26.s390x
libnotify-0.7.7-2.fc26.s390x
python3-idna-2.5-1.fc26.noarch
python3-pyOpenSSL-16.2.0-6.fc26.noarch
python2-pbr-1.10.0-4.fc26.noarch
pyusb-1.0.0-4.fc26.noarch
python2-fedora-0.9.0-6.fc26.noarch
librbd1-10.2.7-2.fc26.s390x
pcre-cpp-8.41-3.fc26.s390x
glibc-devel-2.25-12.fc26.s390x
libnfs-1.9.8-3.fc26.s390x
libsolv-0.6.30-2.fc26.s390x
python3-pycurl-7.43.0-8.fc26.s390x
libyubikey-1.13-3.fc26.s390x
rpmlint-1.10-5.fc26.noarch
python2-pygpgme-0.3-22.fc26.s390x
s390utils-base-1.36.1-3.fc26.s390x
ppp-2.4.7-11.fc26.s390x
s390utils-cpuplugd-1.36.1-3.fc26.s390x
nfs-utils-2.1.1-6.rc6.fc26.s390x
libXrender-0.9.10-2.fc26.s390x
libglvnd-gles-1.0.0-1.fc26.s390x
texlive-texlive.infra-svn41280-33.fc26.2.noarch
texlive-lm-svn28119.2.004-33.fc26.2.noarch
texlive-babelbib-svn25245.1.31-33.fc26.2.noarch
texlive-index-svn24099.4.1beta-33.fc26.2.noarch
texlive-pdftex-bin-svn40987-33.20160520.fc26.2.s390x
texlive-csquotes-svn39538-33.fc26.2.noarch
texlive-rsfs-svn15878.0-33.fc26.2.noarch
texlive-etex-svn37057.0-33.fc26.2.noarch
texlive-knuth-lib-svn35820.0-33.fc26.2.noarch
texlive-pst-math-svn34786.0.63-33.fc26.2.noarch
texlive-utopia-svn15878.0-33.fc26.2.noarch
texlive-eso-pic-svn37925.2.0g-33.fc26.2.noarch
texlive-pst-fill-svn15878.1.01-33.fc26.2.noarch
texlive-latex-bin-bin-svn14050.0-33.20160520.fc26.2.noarch
texlive-jknapltx-svn19440.0-33.fc26.2.noarch
texlive-collection-latexrecommended-svn35765.0-33.20160520.fc26.2.noarch
adwaita-cursor-theme-3.24.0-2.fc26.noarch
xorg-x11-fonts-ISO8859-1-100dpi-7.5-17.fc26.noarch
libXcomposite-devel-0.4.4-9.fc26.s390x
at-spi2-core-devel-2.24.1-1.fc26.s390x
harfbuzz-devel-1.4.4-1.fc26.s390x
rpmdevtools-8.10-2.fc26.noarch
texi2html-5.0-5.fc26.noarch
libnfs-devel-1.9.8-3.fc26.s390x
firewalld-0.4.4.5-1.fc26.noarch
wpa_supplicant-2.6-12.fc26.s390x
systemtap-sdt-devel-3.2-2.fc26.s390x
newt-python-0.52.20-1.fc26.s390x
perl-Mozilla-CA-20160104-4.fc26.noarch
pth-2.0.7-28.fc26.s390x
python3-pyxdg-0.25-12.fc26.noarch
nss-softokn-devel-3.34.0-1.0.fc26.s390x
fedpkg-1.30-4.fc26.noarch
timedatex-0.4-3.fc26.s390x
libjpeg-turbo-1.5.3-1.fc26.s390x
glusterfs-cli-3.10.8-1.fc26.s390x
libsss_nss_idmap-1.16.0-4.fc26.s390x
gdb-8.0.1-33.fc26.s390x
dnf-yum-2.7.5-2.fc26.noarch
perl-Data-Dumper-2.161-3.fc26.s390x
python-async-0.6.1-9.fc22.s390x
poppler-data-0.4.7-7.fc26.noarch
ocaml-srpm-macros-4-2.fc26.noarch
libuuid-2.30.2-1.fc26.s390x
libgpg-error-1.25-2.fc26.s390x
libassuan-2.4.3-2.fc26.s390x
graphite2-1.3.10-1.fc26.s390x
perl-Text-Tabs+Wrap-2013.0523-366.fc26.noarch
perl-Error-0.17024-8.fc26.noarch
which-2.21-2.fc26.s390x
libXau-1.0.8-7.fc26.s390x
orc-0.4.27-1.fc26.s390x
perl-Pod-Perldoc-3.28-1.fc26.noarch
libsndfile-1.0.28-6.fc26.s390x
patch-2.7.5-4.fc26.s390x
gzip-1.8-2.fc26.s390x
python-ipaddress-1.0.16-4.fc26.noarch
yum-metadata-parser-1.1.4-18.fc26.s390x
python3-dbus-1.2.4-6.fc26.s390x
python3-cryptography-2.0.2-2.fc26.s390x
python3-kickstart-2.35-2.fc26.noarch
python2-imagesize-0.7.1-5.fc26.noarch
python2-jinja2-2.9.6-1.fc26.noarch
libradosstriper-devel-10.2.7-2.fc26.s390x
soundtouch-1.9.2-4.fc26.s390x
glibc-headers-2.25-12.fc26.s390x
libndp-1.6-2.fc26.s390x
rpm-4.13.0.2-1.fc26.s390x
rest-0.8.0-2.fc26.s390x
libvisual-0.4.0-21.fc26.s390x
python2-hawkey-0.11.1-1.fc26.s390x
dnf-plugins-core-2.1.5-1.fc26.noarch
fakeroot-libs-1.22-1.fc26.s390x
device-mapper-event-libs-1.02.137-6.fc26.s390x
cyrus-sasl-2.1.26-32.fc26.s390x
kernel-modules-4.13.13-200.fc26.s390x
cronie-anacron-1.5.1-5.fc26.s390x
libpath_utils-0.2.1-34.fc26.s390x
libX11-common-1.6.5-2.fc26.noarch
libXft-2.3.2-5.fc26.s390x
gtk2-2.24.31-4.fc26.s390x
texlive-etoolbox-svn38031.2.2a-33.fc26.2.noarch
texlive-multido-svn18302.1.42-33.fc26.2.noarch
texlive-glyphlist-svn28576.0-33.fc26.2.noarch
texlive-setspace-svn24881.6.7a-33.fc26.2.noarch
texlive-mathtools-svn38833-33.fc26.2.noarch
texlive-ncntrsbk-svn31835.0-33.fc26.2.noarch
texlive-dvisvgm-def-svn41011-33.fc26.2.noarch
texlive-ifetex-svn24853.1.2-33.fc26.2.noarch
texlive-parskip-svn19963.2.0-33.fc26.2.noarch
texlive-bera-svn20031.0-33.fc26.2.noarch
texlive-pgf-svn40966-33.fc26.2.noarch
texlive-auto-pst-pdf-svn23723.0.6-33.fc26.2.noarch
texlive-ctable-svn38672-33.fc26.2.noarch
texlive-typehtml-svn17134.0-33.fc26.2.noarch
mesa-libGLES-17.2.4-2.fc26.s390x
vte291-0.48.4-1.fc26.s390x
libdrm-devel-2.4.88-1.fc26.s390x
libcephfs_jni1-10.2.7-2.fc26.s390x
bzip2-devel-1.0.6-22.fc26.s390x
expat-devel-2.2.4-1.fc26.s390x
libsepol-devel-2.6-2.fc26.s390x
glib2-static-2.52.3-2.fc26.s390x
virglrenderer-devel-0.6.0-1.20170210git76b3da97b.fc26.s390x
yum-utils-1.1.31-512.fc26.noarch
parted-3.2-24.fc26.s390x
python3-beautifulsoup4-4.6.0-1.fc26.noarch
python-bunch-1.0.1-10.fc26.noarch
perl-Time-HiRes-1.9746-1.fc26.s390x
lz4-1.8.0-1.fc26.s390x
nss-util-3.34.0-1.0.fc26.s390x
openssh-clients-7.5p1-4.fc26.s390x
chrony-3.2-1.fc26.s390x
dnf-conf-2.7.5-2.fc26.noarch
glusterfs-server-3.10.8-1.fc26.s390x
sssd-client-1.16.0-4.fc26.s390x
man-db-2.7.6.1-8.fc26.s390x
bodhi-client-2.12.2-3.fc26.noarch
perl-Module-CoreList-5.20171120-1.fc26.noarch
hawkey-0.6.4-3.fc25.s390x
python-srpm-macros-3-20.fc26.noarch
perl-srpm-macros-1-21.fc26.noarch
expat-2.2.4-1.fc26.s390x
chkconfig-1.10-1.fc26.s390x
findutils-4.6.0-12.fc26.s390x
mesa-libwayland-egl-17.2.4-2.fc26.s390x
procps-ng-3.3.10-13.fc26.s390x
mesa-libglapi-17.2.4-2.fc26.s390x
perl-Unicode-Normalize-1.25-366.fc26.s390x
perl-IO-Socket-IP-0.39-1.fc26.noarch
hunspell-en-US-0.20140811.1-6.fc26.noarch
libxcb-1.12-3.fc26.s390x
libgo-devel-7.2.1-2.fc26.s390x
perl-Pod-Escapes-1.07-366.fc26.noarch
perl-Pod-Usage-1.69-2.fc26.noarch
libtheora-1.1.1-15.fc26.s390x
tcp_wrappers-7.6-85.fc26.s390x
coreutils-8.27-7.fc26.s390x
libmount-2.30.2-1.fc26.s390x
python2-iniparse-0.4-24.fc26.noarch
python2-decorator-4.0.11-2.fc26.noarch
ModemManager-glib-1.6.10-1.fc26.s390x
python3-decorator-4.0.11-2.fc26.noarch
python3-cffi-1.9.1-2.fc26.s390x
python-bugzilla-cli-2.1.0-1.fc26.noarch
python2-funcsigs-1.0.2-5.fc26.noarch
python2-babel-2.3.4-5.fc26.noarch
python-bugzilla-2.1.0-1.fc26.noarch
libradosstriper1-10.2.7-2.fc26.s390x
snappy-1.1.4-3.fc26.s390x
dtc-1.4.5-1.fc26.s390x
libmpcdec-1.2.6-17.fc26.s390x
rpm-libs-4.13.0.2-1.fc26.s390x
python-urlgrabber-3.10.1-11.fc26.noarch
sysfsutils-2.1.0-20.fc26.s390x
python3-hawkey-0.11.1-1.fc26.s390x
python3-dnf-plugins-core-2.1.5-1.fc26.noarch
ethtool-4.13-1.fc26.s390x
iputils-20161105-5.fc26.s390x
plymouth-scripts-0.9.3-0.7.20160620git0e65b86c.fc26.s390x
cronie-1.5.1-5.fc26.s390x
libini_config-1.3.1-34.fc26.s390x
libX11-1.6.5-2.fc26.s390x
libglvnd-egl-1.0.0-1.fc26.s390x
texlive-kpathsea-svn41139-33.fc26.2.noarch
texlive-thumbpdf-bin-svn6898.0-33.20160520.fc26.2.noarch
texlive-subfig-svn15878.1.3-33.fc26.2.noarch
texlive-gsftopk-bin-svn40473-33.20160520.fc26.2.s390x
texlive-tex-ini-files-svn40533-33.fc26.2.noarch
texlive-qstest-svn15878.0-33.fc26.2.noarch
texlive-palatino-svn31835.0-33.fc26.2.noarch
texlive-ec-svn25033.1.0-33.fc26.2.noarch
texlive-iftex-svn29654.0.2-33.fc26.2.noarch
texlive-pslatex-svn16416.0-33.fc26.2.noarch
texlive-algorithms-svn38085.0.1-33.fc26.2.noarch
texlive-filehook-svn24280.0.5d-33.fc26.2.noarch
texlive-pst-node-svn40743-33.fc26.2.noarch
texlive-rotating-svn16832.2.16b-33.fc26.2.noarch
texlive-seminar-svn34011.1.62-33.fc26.2.noarch
gtk3-3.22.21-2.fc26.s390x
libuuid-devel-2.30.2-1.fc26.s390x
java-1.8.0-openjdk-1.8.0.151-1.b12.fc26.s390x
libXinerama-devel-1.1.3-7.fc26.s390x
emacs-common-25.3-3.fc26.s390x
gtk3-devel-3.22.21-2.fc26.s390x
fedora-packager-0.6.0.1-2.fc26.noarch
libxml2-devel-2.9.4-2.fc26.s390x
snappy-devel-1.1.4-3.fc26.s390x
python2-dnf-plugin-migrate-2.1.5-1.fc26.noarch
authconfig-7.0.1-2.fc26.s390x
newt-python3-0.52.20-1.fc26.s390x
python-decoratortools-1.8-13.fc26.noarch
python-systemd-doc-234-1.fc26.s390x
openssl-libs-1.1.0g-1.fc26.s390x
git-core-2.13.6-2.fc26.s390x
python3-dnf-plugin-system-upgrade-2.0.4-1.fc26.noarch
glusterfs-libs-3.10.8-1.fc26.s390x
ca-certificates-2017.2.20-1.0.fc26.noarch
unbound-libs-1.6.7-1.fc26.s390x
libsss_certmap-1.16.0-4.fc26.s390x
glusterfs-api-devel-3.10.8-1.fc26.s390x
selinux-policy-targeted-3.13.1-260.17.fc26.noarch
publicsuffix-list-dafsa-20171028-1.fc26.noarch
gpg-pubkey-a0a7badb-52844296
gpg-pubkey-e372e838-56fd7943
gpg-pubkey-3b921d09-57a87096
google-roboto-slab-fonts-1.100263-0.5.20150923git.fc26.noarch
libreport-filesystem-2.9.1-3.fc26.s390x
glibc-all-langpacks-2.25-12.fc26.s390x
libcom_err-1.43.4-2.fc26.s390x
libffi-3.1-12.fc26.s390x
keyutils-libs-1.5.10-1.fc26.s390x
diffutils-3.5-3.fc26.s390x
apr-util-1.5.4-6.fc26.s390x
bluez-libs-5.46-6.fc26.s390x
libksba-1.3.5-3.fc26.s390x
ncurses-6.0-8.20170212.fc26.s390x
gsm-1.0.17-1.fc26.s390x
libteam-1.27-1.fc26.s390x
perl-Fedora-VSP-0.001-5.fc26.noarch
libusb-0.1.5-8.fc26.s390x
acl-2.2.52-15.fc26.s390x
dwz-0.12-3.fc26.s390x
libblkid-2.30.2-1.fc26.s390x
polkit-libs-0.113-8.fc26.s390x
dbus-python-1.2.4-6.fc26.s390x
gts-0.7.6-30.20121130.fc26.s390x
libfdisk-2.30.2-1.fc26.s390x
python3-pycparser-2.14-10.fc26.noarch
python3-bugzilla-2.1.0-1.fc26.noarch
python2-docutils-0.13.1-4.fc26.noarch
pytz-2016.10-4.fc26.noarch
python2-requests-2.13.0-1.fc26.noarch
libcephfs-devel-10.2.7-2.fc26.s390x
ncurses-c++-libs-6.0-8.20170212.fc26.s390x
GeoIP-1.6.11-1.fc26.s390x
liblockfile-1.09-5.fc26.s390x
rpm-plugin-selinux-4.13.0.2-1.fc26.s390x
systemtap-devel-3.2-2.fc26.s390x
libsysfs-2.1.0-20.fc26.s390x
libdnf-0.11.1-1.fc26.s390x
libgfortran-7.2.1-2.fc26.s390x
mesa-libgbm-17.2.4-2.fc26.s390x
dracut-046-3.1.fc26.s390x
lvm2-libs-2.02.168-6.fc26.s390x
libXfixes-5.0.3-2.fc26.s390x
brlapi-0.6.6-5.fc26.s390x
texlive-metafont-svn40793-33.fc26.2.noarch
texlive-graphics-cfg-svn40269-33.fc26.2.noarch
texlive-mptopdf-svn41282-33.fc26.2.noarch
texlive-makeindex-bin-svn40473-33.20160520.fc26.2.s390x
texlive-texlive-scripts-bin-svn29741.0-33.20160520.fc26.2.noarch
texlive-sauerj-svn15878.0-33.fc26.2.noarch
texlive-txfonts-svn15878.0-33.fc26.2.noarch
texlive-filecontents-svn24250.1.3-33.fc26.2.noarch
texlive-lualibs-svn40370-33.fc26.2.noarch
texlive-section-svn20180.0-33.fc26.2.noarch
texlive-ucharcat-svn38907-33.fc26.2.noarch
texlive-hyperref-svn41396-33.fc26.2.noarch
texlive-pst-3d-svn17257.1.10-33.fc26.2.noarch
texlive-oberdiek-svn41346-33.fc26.2.noarch
texlive-ae-svn15878.1.4-33.fc26.2.noarch
texlive-collection-basic-svn41149-33.20160520.fc26.2.noarch
gnat-srpm-macros-4-2.fc26.noarch
glib2-devel-2.52.3-2.fc26.s390x
netpbm-progs-10.80.00-2.fc26.s390x
libXxf86vm-devel-1.1.4-4.fc26.s390x
nettle-devel-3.3-2.fc26.s390x
cairo-gobject-devel-1.14.10-1.fc26.s390x
fedora-rpm-macros-26-2.fc26.noarch
elfutils-devel-0.169-1.fc26.s390x
libidn-devel-1.33-2.fc26.s390x
s390utils-1.36.1-3.fc26.s390x
gcc-gfortran-7.2.1-2.fc26.s390x
libtool-2.4.6-17.fc26.s390x
python3-cssselect-0.9.2-4.fc26.noarch
python2-cssselect-0.9.2-4.fc26.noarch
bison-3.0.4-6.fc26.s390x
rootfiles-8.1-20.fc26.noarch
git-core-doc-2.13.6-2.fc26.s390x
vim-enhanced-8.0.1360-1.fc26.s390x
glusterfs-3.10.8-1.fc26.s390x
boost-system-1.63.0-10.fc26.s390x
gnutls-dane-3.5.16-4.fc26.s390x
pkgconf-m4-1.3.12-1.fc26.noarch
libcurl-devel-7.53.1-13.fc26.s390x
python3-urllib3-1.20-2.fc26.noarch
libsss_autofs-1.16.0-4.fc26.s390x
=== TEST BEGIN ===
Using CC: /home/fam/bin/cc
Install prefix    /var/tmp/patchew-tester-tmp-hek3vjny/src/install
BIOS directory    /var/tmp/patchew-tester-tmp-hek3vjny/src/install/share/qemu
firmware path     /var/tmp/patchew-tester-tmp-hek3vjny/src/install/share/qemu-firmware
binary directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/bin
library directory /var/tmp/patchew-tester-tmp-hek3vjny/src/install/lib
module directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/lib/qemu
libexec directory /var/tmp/patchew-tester-tmp-hek3vjny/src/install/libexec
include directory /var/tmp/patchew-tester-tmp-hek3vjny/src/install/include
config directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/etc
local state directory   /var/tmp/patchew-tester-tmp-hek3vjny/src/install/var
Manual directory  /var/tmp/patchew-tester-tmp-hek3vjny/src/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /var/tmp/patchew-tester-tmp-hek3vjny/src
GIT binary        git
GIT submodules    ui/keycodemapdb capstone
C compiler        /home/fam/bin/cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler /home/fam/bin/cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1   -Werror -DHAS_LIBSSH2_SFTP_FSYNC -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include  -DNCURSES_WIDECHAR -D_GNU_SOURCE -D_DEFAULT_SOURCE  -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wexpansion-to-defined -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/include/p11-kit-1     -I/usr/include/libpng16  -I/usr/include/libdrm   -I$(SRC_PATH)/capstone/include
LDFLAGS           -Wl,--warn-common -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          s390x
host big endian   yes
target list       aarch64-softmmu alpha-softmmu arm-softmmu cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu microblazeel-softmmu microblaze-softmmu mips64el-softmmu mips64-softmmu mipsel-softmmu mips-softmmu moxie-softmmu nios2-softmmu or1k-softmmu ppc64-softmmu ppcemb-softmmu ppc-softmmu s390x-softmmu sh4eb-softmmu sh4-softmmu sparc64-softmmu sparc-softmmu tricore-softmmu unicore32-softmmu x86_64-softmmu xtensaeb-softmmu xtensa-softmmu aarch64_be-linux-user aarch64-linux-user alpha-linux-user armeb-linux-user arm-linux-user cris-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblazeel-linux-user microblaze-linux-user mips64el-linux-user mips64-linux-user mipsel-linux-user mips-linux-user mipsn32el-linux-user mipsn32-linux-user nios2-linux-user or1k-linux-user ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user ppc-linux-user s390x-linux-user sh4eb-linux-user sh4-linux-user sparc32plus-linux-user sparc64-linux-user sparc-linux-user tilegx-linux-user x86_64-linux-user
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (2.0.7)
GTK support       yes (3.22.21)
GTK GL support    yes
VTE support       yes (0.48.4)
TLS priority      NORMAL
GNUTLS support    yes
GNUTLS rnd        yes
libgcrypt         no
libgcrypt kdf     no
nettle            yes (3.3)
nettle kdf        yes
libtasn1          yes
curses support    yes
virgl support     yes
curl support      yes
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    yes
Multipath support no
VNC support       yes
VNC SASL support  yes
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    yes
bluez  support    yes
Documentation     yes
PIE               no
vde support       no
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
HVF support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
malloc trim support yes
RDMA support      no
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support yes
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       yes
xfsctl support    no
smartcard support yes
libusb            yes
usb net redir     yes
OpenGL support    yes
OpenGL dmabufs    yes
libiscsi support  yes
libnfs support    yes
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   yes
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support yes
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   yes
TPM passthrough   no
TPM emulator      yes
QOM debugging     yes
Live block migration yes
lzo support       yes
snappy support    yes
bzip2 support     yes
NUMA host support no
libxml2           yes
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
capstone          git
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak
  GEN     i386-softmmu/config-devices.mak.tmp
  GEN     aarch64-softmmu/config-devices.mak
  GEN     lm32-softmmu/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak
  GEN     m68k-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak
  GEN     microblazeel-softmmu/config-devices.mak.tmp
  GEN     lm32-softmmu/config-devices.mak
  GEN     microblaze-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak
  GEN     mips64el-softmmu/config-devices.mak.tmp
  GEN     microblaze-softmmu/config-devices.mak
  GEN     m68k-softmmu/config-devices.mak
  GEN     i386-softmmu/config-devices.mak
  GEN     mips64-softmmu/config-devices.mak.tmp
  GEN     mipsel-softmmu/config-devices.mak.tmp
  GEN     mips-softmmu/config-devices.mak.tmp
  GEN     mips-softmmu/config-devices.mak
  GEN     mips64el-softmmu/config-devices.mak
  GEN     moxie-softmmu/config-devices.mak.tmp
  GEN     nios2-softmmu/config-devices.mak.tmp
  GEN     mips64-softmmu/config-devices.mak
  GEN     or1k-softmmu/config-devices.mak.tmp
  GEN     or1k-softmmu/config-devices.mak
  GEN     mipsel-softmmu/config-devices.mak
  GEN     nios2-softmmu/config-devices.mak
  GEN     ppc64-softmmu/config-devices.mak.tmp
  GEN     moxie-softmmu/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak.tmp
  GEN     s390x-softmmu/config-devices.mak.tmp
  GEN     s390x-softmmu/config-devices.mak
  GEN     sh4eb-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak
  GEN     sh4-softmmu/config-devices.mak.tmp
  GEN     ppc64-softmmu/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak
  GEN     sparc64-softmmu/config-devices.mak.tmp
  GEN     sparc-softmmu/config-devices.mak.tmp
  GEN     sparc-softmmu/config-devices.mak
  GEN     tricore-softmmu/config-devices.mak.tmp
  GEN     tricore-softmmu/config-devices.mak
  GEN     unicore32-softmmu/config-devices.mak.tmp
  GEN     sh4-softmmu/config-devices.mak
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     unicore32-softmmu/config-devices.mak
  GEN     sh4eb-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak.tmp
  GEN     sparc64-softmmu/config-devices.mak
  GEN     xtensa-softmmu/config-devices.mak.tmp
  GEN     aarch64_be-linux-user/config-devices.mak.tmp
  GEN     xtensaeb-softmmu/config-devices.mak
  GEN     xtensa-softmmu/config-devices.mak
  GEN     aarch64-linux-user/config-devices.mak.tmp
  GEN     aarch64_be-linux-user/config-devices.mak
  GEN     alpha-linux-user/config-devices.mak.tmp
  GEN     x86_64-softmmu/config-devices.mak
  GEN     armeb-linux-user/config-devices.mak.tmp
  GEN     armeb-linux-user/config-devices.mak
  GEN     arm-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak.tmp
  GEN     aarch64-linux-user/config-devices.mak
  GEN     hppa-linux-user/config-devices.mak.tmp
  GEN     arm-linux-user/config-devices.mak
  GEN     i386-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak
  GEN     alpha-linux-user/config-devices.mak
  GEN     hppa-linux-user/config-devices.mak
  GEN     m68k-linux-user/config-devices.mak.tmp
  GEN     microblazeel-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak.tmp
  GEN     i386-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak
  GEN     mips64-linux-user/config-devices.mak.tmp
  GEN     m68k-linux-user/config-devices.mak
  GEN     microblazeel-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak
  GEN     mipsel-linux-user/config-devices.mak.tmp
  GEN     mips-linux-user/config-devices.mak.tmp
  GEN     mipsn32el-linux-user/config-devices.mak.tmp
  GEN     mipsel-linux-user/config-devices.mak
  GEN     mipsn32el-linux-user/config-devices.mak
  GEN     mipsn32-linux-user/config-devices.mak.tmp
  GEN     mips-linux-user/config-devices.mak
  GEN     nios2-linux-user/config-devices.mak.tmp
  GEN     mips64-linux-user/config-devices.mak
  GEN     mipsn32-linux-user/config-devices.mak
  GEN     or1k-linux-user/config-devices.mak.tmp
  GEN     ppc64abi32-linux-user/config-devices.mak.tmp
  GEN     nios2-linux-user/config-devices.mak
  GEN     ppc64abi32-linux-user/config-devices.mak
  GEN     ppc64le-linux-user/config-devices.mak.tmp
  GEN     or1k-linux-user/config-devices.mak
  GEN     ppc64-linux-user/config-devices.mak.tmp
  GEN     ppc64le-linux-user/config-devices.mak
  GEN     ppc-linux-user/config-devices.mak.tmp
  GEN     s390x-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak.tmp
  GEN     s390x-linux-user/config-devices.mak
  GEN     sh4-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak
  GEN     ppc64-linux-user/config-devices.mak
  GEN     ppc-linux-user/config-devices.mak
  GEN     sparc32plus-linux-user/config-devices.mak.tmp
  GEN     sparc64-linux-user/config-devices.mak.tmp
  GEN     sh4-linux-user/config-devices.mak
  GEN     sparc-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak
  GEN     x86_64-linux-user/config-devices.mak.tmp
  GEN     sparc32plus-linux-user/config-devices.mak
  GEN     sparc-linux-user/config-devices.mak
  GEN     config-host.h
  GEN     sparc64-linux-user/config-devices.mak
  GIT     ui/keycodemapdb capstone
  GEN     x86_64-linux-user/config-devices.mak
  GEN     qemu-options.def
  GEN     qmp-commands.h
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qapi-event.h
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
Submodule 'capstone' (git://git.qemu.org/capstone.git) registered for path 'capstone'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb'
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
Cloning into '/var/tmp/patchew-tester-tmp-hek3vjny/src/capstone'...
  GEN     module_block.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sparc64/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/pci-host/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     scsi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sparc64/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/pci-host/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
Cloning into '/var/tmp/patchew-tester-tmp-hek3vjny/src/ui/keycodemapdb'...
  GEN     ui/input-keymap-atset1-to-qcode.c
  GEN     ui/input-keymap-linux-to-qcode.c
  GEN     ui/input-keymap-qcode-to-atset1.c
  GEN     ui/input-keymap-qcode-to-atset2.c
  GEN     ui/input-keymap-qcode-to-atset3.c
  CC      cs.o
  GEN     ui/input-keymap-qcode-to-linux.c
  GEN     ui/input-keymap-qcode-to-qnum.c
  CC      utils.o
  GEN     ui/input-keymap-qcode-to-sun.c
  GEN     ui/input-keymap-qnum-to-qcode.c
  GEN     ui/input-keymap-usb-to-qcode.c
  GEN     ui/input-keymap-win32-to-qcode.c
  GEN     ui/input-keymap-x11-to-qcode.c
  GEN     ui/input-keymap-xorgevdev-to-qcode.c
  GEN     ui/input-keymap-xorgkbd-to-qcode.c
  GEN     ui/input-keymap-xorgxquartz-to-qcode.c
  GEN     ui/input-keymap-xorgxwin-to-qcode.c
  CC      SStream.o
  CC      MCInstrDesc.o
  CC      MCRegisterInfo.o
  CC      arch/ARM/ARMDisassembler.o
  CC      arch/ARM/ARMInstPrinter.o
  CC      arch/ARM/ARMMapping.o
  CC      arch/ARM/ARMModule.o
  CC      arch/AArch64/AArch64BaseInfo.o
  CC      arch/AArch64/AArch64Disassembler.o
  CC      arch/AArch64/AArch64InstPrinter.o
  CC      arch/AArch64/AArch64Mapping.o
  CC      arch/AArch64/AArch64Module.o
  CC      arch/Mips/MipsDisassembler.o
  CC      arch/Mips/MipsInstPrinter.o
  CC      arch/Mips/MipsMapping.o
  CC      arch/Mips/MipsModule.o
  CC      arch/PowerPC/PPCDisassembler.o
  CC      arch/PowerPC/PPCInstPrinter.o
  CC      arch/PowerPC/PPCMapping.o
  CC      arch/PowerPC/PPCModule.o
  CC      arch/Sparc/SparcDisassembler.o
  CC      arch/Sparc/SparcInstPrinter.o
  CC      arch/Sparc/SparcMapping.o
  CC      arch/Sparc/SparcModule.o
  CC      arch/SystemZ/SystemZDisassembler.o
  CC      arch/SystemZ/SystemZInstPrinter.o
  CC      arch/SystemZ/SystemZMapping.o
  CC      arch/SystemZ/SystemZModule.o
  CC      arch/SystemZ/SystemZMCTargetDesc.o
  CC      arch/X86/X86DisassemblerDecoder.o
  CC      arch/X86/X86Disassembler.o
  CC      arch/X86/X86IntelInstPrinter.o
  CC      arch/X86/X86ATTInstPrinter.o
  CC      arch/X86/X86Mapping.o
  CC      arch/X86/X86Module.o
  CC      arch/XCore/XCoreDisassembler.o
  CC      arch/XCore/XCoreInstPrinter.o
  CC      arch/XCore/XCoreMapping.o
  CC      arch/XCore/XCoreModule.o
  CC      MCInst.o
  AR      libcapstone.a
ar: creating /var/tmp/patchew-tester-tmp-hek3vjny/src/build/capstone/libcapstone.a
  CC      tests/qemu-iotests/socket_scm_helper.o
  GEN     docs/version.texi
  GEN     qemu-options.texi
  GEN     qemu-monitor.texi
  GEN     qemu-img-cmds.texi
  GEN     qemu-monitor-info.texi
  GEN     qemu-img.1
  GEN     qemu-nbd.8
  GEN     qemu-ga.8
  GEN     docs/interop/qemu-qmp-qapi.texi
  GEN     docs/interop/qemu-ga-qapi.texi
  GEN     docs/qemu-block-drivers.7
  GEN     fsdev/virtfs-proxy-helper.1
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      qmp-introspect.o
  CC      qapi-types.o
  CC      qapi-visit.o
  CC      qapi-event.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qjson.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/pagesize.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sparc64/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/pci-host/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/get-vm-name.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/linux-aio.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/tpm.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  CC      qemu-keymap.o
  CC      ui/input-keymap.o
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/linux-aio.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/iscsi-opts.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      scsi/pr-manager.o
  CC      scsi/pr-manager-helper.o
  CC      block/iscsi.o
  CC      block/nfs.o
  CC      block/curl.o
  CC      block/rbd.o
  CC      block/gluster.o
  CC      block/ssh.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-gnutls.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/net-listener.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      fsdev/virtfs-proxy-helper.o
  CC      qemu-io.o
  CC      fsdev/9p-marshal.o
  CC      fsdev/9p-iov-marshal.o
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-posix.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      qemu-seccomp.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/hostmem.o
  CC      backends/tpm.o
  CC      backends/hostmem-ram.o
  CC      backends/hostmem-file.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      chardev/baum.o
  CC      disas/alpha.o
  CC      disas/arm.o
  CXX     disas/arm-a64.o
  CC      disas/cris.o
  CC      disas/hppa.o
  CC      disas/i386.o
  CC      disas/m68k.o
  CC      disas/microblaze.o
  CC      disas/mips.o
  CC      disas/nios2.o
  CC      disas/moxie.o
  CC      disas/ppc.o
  CC      disas/s390.o
  CC      disas/sh4.o
  CC      disas/sparc.o
  CC      disas/lm32.o
  CC      disas/xtensa.o
  CXX     disas/libvixl/vixl/utils.o
  CXX     disas/libvixl/vixl/compiler-intrinsics.o
  CXX     disas/libvixl/vixl/a64/instructions-a64.o
  CXX     disas/libvixl/vixl/a64/decoder-a64.o
  CXX     disas/libvixl/vixl/a64/disasm-a64.o
  CC      fsdev/qemu-fsdev.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      hw/9pfs/9p.o
  CC      hw/9pfs/9p-util.o
  CC      hw/9pfs/9p-local.o
  CC      hw/9pfs/9p-xattr.o
  CC      hw/9pfs/9p-xattr-user.o
  CC      hw/9pfs/9p-posix-acl.o
  CC      hw/9pfs/coth.o
  CC      hw/9pfs/cofs.o
  CC      hw/9pfs/codir.o
  CC      hw/9pfs/cofile.o
  CC      hw/9pfs/coxattr.o
  CC      hw/9pfs/9p-synth.o
  CC      hw/9pfs/9p-handle.o
  CC      hw/9pfs/9p-proxy.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/cs4231.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/milkymist-ac97.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/escc.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/xilinx_uartlite.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/etraxfs_ser.o
  CC      hw/char/debugcon.o
  CC      hw/char/grlib_apbuart.o
  CC      hw/char/imx_serial.o
  CC      hw/char/lm32_juart.o
  CC      hw/char/lm32_uart.o
  CC      hw/char/milkymist-uart.o
  CC      hw/char/sclpconsole.o
  CC      hw/char/sclpconsole-lm.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/qdev-fw.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/empty_slot.o
  CC      hw/core/stream.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/loader-fit.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/g364fb.o
  CC      hw/display/jazz_led.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vga-isa-mm.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/milkymist-vgafb.o
  CC      hw/display/tc6393xb.o
  CC      hw/display/milkymist-tmu2.o
  CC      hw/dma/puv3_dma.o
  CC      hw/dma/rc4030.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i82374.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xilinx_axidma.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/dma/etraxfs_dma.o
  CC      hw/dma/sparc32_dma.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/puv3_gpio.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/mpc8xxx.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/cmd646.o
  CC      hw/ide/macio.o
  CC      hw/ide/mmio.o
  CC      hw/ide/via.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/ide/ahci-allwinner.o
  CC      hw/ide/sii3112.o
  CC      hw/input/adb.o
  CC      hw/input/adb-mouse.o
  CC      hw/input/adb-kbd.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/input/virtio-input-host.o
  CC      hw/intc/heathrow_pic.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/puv3_intc.o
  CC      hw/intc/xilinx_intc.o
  CC      hw/intc/xlnx-pmu-iomod-intc.o
  CC      hw/intc/xlnx-zynqmp-ipi.o
  CC      hw/intc/etraxfs_pic.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/lm32_pic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/slavio_intctl.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/openpic.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/isa/i82378.o
  CC      hw/isa/pc87312.o
  CC      hw/isa/piix4.o
  CC      hw/isa/vt82c686.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/vmcoreinfo.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/misc/puv3_pm.o
  CC      hw/misc/macio/macio.o
  CC      hw/misc/macio/cuda.o
  CC      hw/misc/macio/mac_dbdma.o
  CC      hw/net/dp8393x.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/opencores_eth.o
  CC      hw/net/xgmac.o
  CC      hw/net/mipsnet.o
  CC      hw/net/xilinx_axienet.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/lance.o
  CC      hw/net/sunhme.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/sungem.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/ds1225y.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/eeprom_at24c.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/nvram/mac_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-bridge/dec.o
  CC      hw/pci-bridge/simba.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/prep.o
  CC      hw/pci-host/grackle.o
  CC      hw/pci-host/uninorth.o
  CC      hw/pci-host/ppce500.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/sabre.o
  CC      hw/pci-host/bonito.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci-host/xilinx-pcie.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/m48t59.o
  CC      hw/timer/m48t59-isa.o
  CC      hw/timer/pl031.o
  CC      hw/timer/puv3_ost.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/xilinx_timer.o
  CC      hw/timer/slavio_timer.o
  CC      hw/timer/etraxfs_timer.o
  CC      hw/timer/grlib_gptimer.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/lm32_timer.o
  CC      hw/timer/milkymist-sysctl.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/sun4v-rtc.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_util.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/tpm/tpm_emulator.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/ccid-card-passthru.o
  CC      hw/usb/ccid-card-emulated.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/redirect.o
  CC      hw/usb/quirks.o
  CC      hw/usb/host-libusb.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_diag288.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/l2tpv3.o
  CC      net/vhost-user.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/sdl2.o
  CC      ui/sdl2-input.o
  CC      ui/sdl2-2d.o
  CC      ui/sdl2-gl.o
  CC      ui/curses.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-auth-sasl.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      ui/gtk.o
  CC      ui/x_keymap.o
  VERT    ui/shader/texture-blit-vert.h
  VERT    ui/shader/texture-blit-flip-vert.h
  FRAG    ui/shader/texture-blit-frag.h
  CC      ui/console-gl.o
  CC      ui/egl-helpers.o
  CC      ui/egl-context.o
  CC      ui/egl-headless.o
  CC      ui/gtk-gl-area.o
  CC      chardev/char.o
  CC      chardev/char-fd.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-null.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  LINK    tests/qemu-iotests/socket_scm_helper
  CCAS    s390-ccw/start.o
  GEN     qemu-doc.html
  GEN     qemu-doc.txt
  CC      s390-ccw/main.o
  GEN     qemu.1
  CC      s390-ccw/bootmap.o
  CC      s390-ccw/sclp.o
  GEN     docs/interop/qemu-qmp-ref.html
  CC      s390-ccw/virtio.o
  CC      s390-ccw/virtio-scsi.o
  GEN     docs/interop/qemu-qmp-ref.txt
  CC      s390-ccw/virtio-blkdev.o
s390-netboot.img not built since roms/SLOF/ is not available.
  BUILD   s390-ccw/s390-ccw.elf
  STRIP   s390-ccw/s390-ccw.img
  GEN     docs/interop/qemu-qmp-ref.7
  GEN     docs/interop/qemu-ga-ref.html
  GEN     docs/interop/qemu-ga-ref.txt
  GEN     docs/interop/qemu-ga-ref.7
  CC      qga/commands.o
  CC      qga/guest-agent-command-state.o
  CC      qga/main.o
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AR      libqemuutil.a
  CC      qemu-img.o
  LINK    qemu-io
  LINK    fsdev/virtfs-proxy-helper
  LINK    scsi/qemu-pr-helper
  LINK    qemu-bridge-helper
  CC      ui/shader.o
  LINK    qemu-ga
  LINK    qemu-keymap
  LINK    ivshmem-client
  LINK    ivshmem-server
  LINK    qemu-nbd
  GEN     aarch64-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands-info.h
  GEN     alpha-softmmu/config-target.h
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/config-target.h
  CC      aarch64-softmmu/exec.o
  GEN     cris-softmmu/hmp-commands.h
  GEN     cris-softmmu/hmp-commands-info.h
  CC      alpha-softmmu/exec.o
  GEN     arm-softmmu/hmp-commands.h
  GEN     cris-softmmu/config-target.h
  GEN     arm-softmmu/hmp-commands-info.h
  GEN     arm-softmmu/config-target.h
  CC      cris-softmmu/exec.o
  CC      arm-softmmu/exec.o
  CC      aarch64-softmmu/tcg/tcg.o
  CC      alpha-softmmu/tcg/tcg.o
  CC      cris-softmmu/tcg/tcg.o
  CC      arm-softmmu/tcg/tcg.o
  CC      alpha-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      cris-softmmu/tcg/tcg-op.o
  CC      arm-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      alpha-softmmu/tcg/optimize.o
  CC      cris-softmmu/tcg/optimize.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      arm-softmmu/tcg/optimize.o
  CC      alpha-softmmu/tcg/tcg-common.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      cris-softmmu/tcg/tcg-common.o
  CC      alpha-softmmu/fpu/softfloat.o
  CC      arm-softmmu/tcg/tcg-common.o
  CC      cris-softmmu/fpu/softfloat.o
  CC      arm-softmmu/fpu/softfloat.o
  CC      cris-softmmu/disas.o
  CC      aarch64-softmmu/disas.o
  CC      arm-softmmu/disas.o
  CC      cris-softmmu/arch_init.o
  CC      alpha-softmmu/disas.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  CC      cris-softmmu/cpus.o
  GEN     arm-softmmu/gdbstub-xml.c
  CC      arm-softmmu/arch_init.o
  CC      alpha-softmmu/arch_init.o
  CC      aarch64-softmmu/arch_init.o
  CC      arm-softmmu/cpus.o
  CC      alpha-softmmu/cpus.o
  CC      aarch64-softmmu/cpus.o
  CC      cris-softmmu/monitor.o
  CC      alpha-softmmu/monitor.o
  CC      arm-softmmu/monitor.o
  CC      aarch64-softmmu/monitor.o
  CC      alpha-softmmu/gdbstub.o
  CC      cris-softmmu/gdbstub.o
  CC      arm-softmmu/gdbstub.o
  CC      alpha-softmmu/balloon.o
  CC      cris-softmmu/balloon.o
  CC      aarch64-softmmu/gdbstub.o
  CC      cris-softmmu/ioport.o
  CC      arm-softmmu/balloon.o
  CC      alpha-softmmu/ioport.o
  CC      cris-softmmu/numa.o
  CC      alpha-softmmu/numa.o
  CC      arm-softmmu/ioport.o
  CC      aarch64-softmmu/balloon.o
  CC      cris-softmmu/qtest.o
  CC      arm-softmmu/numa.o
  CC      aarch64-softmmu/ioport.o
  CC      arm-softmmu/qtest.o
  CC      alpha-softmmu/qtest.o
  CC      cris-softmmu/memory.o
  CC      aarch64-softmmu/numa.o
  CC      arm-softmmu/memory.o
  CC      alpha-softmmu/memory.o
  CC      aarch64-softmmu/qtest.o
  CC      cris-softmmu/memory_mapping.o
  CC      aarch64-softmmu/memory.o
  CC      cris-softmmu/dump.o
  CC      alpha-softmmu/memory_mapping.o
  CC      arm-softmmu/memory_mapping.o
  CC      alpha-softmmu/dump.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      aarch64-softmmu/dump.o
  CC      cris-softmmu/migration/ram.o
  CC      arm-softmmu/dump.o
  CC      alpha-softmmu/migration/ram.o
  CC      aarch64-softmmu/migration/ram.o
  CC      arm-softmmu/migration/ram.o
  CC      cris-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/accel.o
  CC      cris-softmmu/accel/stubs/hax-stub.o
  CC      alpha-softmmu/accel/accel.o
  CC      cris-softmmu/accel/stubs/hvf-stub.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  CC      alpha-softmmu/accel/stubs/hax-stub.o
  CC      arm-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/stubs/hvf-stub.o
  CC      alpha-softmmu/accel/stubs/hvf-stub.o
  CC      cris-softmmu/accel/stubs/kvm-stub.o
  CC      arm-softmmu/accel/stubs/hax-stub.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      cris-softmmu/accel/tcg/tcg-all.o
  CC      alpha-softmmu/accel/stubs/kvm-stub.o
  CC      arm-softmmu/accel/stubs/hvf-stub.o
  CC      alpha-softmmu/accel/tcg/tcg-all.o
  CC      cris-softmmu/accel/tcg/cputlb.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      alpha-softmmu/accel/tcg/cputlb.o
  CC      arm-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      arm-softmmu/accel/tcg/tcg-all.o
  CC      arm-softmmu/accel/tcg/cputlb.o
  CC      cris-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/tcg-runtime.o
  CC      cris-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      alpha-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-softmmu/accel/tcg/translate-all.o
  CC      arm-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/translate-all.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      arm-softmmu/accel/tcg/cpu-exec.o
  CC      alpha-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      cris-softmmu/hw/core/generic-loader.o
  CC      arm-softmmu/accel/tcg/cpu-exec-common.o
  CC      alpha-softmmu/hw/9pfs/virtio-9p-device.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/hw/core/null-machine.o
  CC      alpha-softmmu/hw/block/virtio-blk.o
  CC      arm-softmmu/accel/tcg/translate-all.o
  CC      cris-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      cris-softmmu/hw/net/etraxfs_eth.o
  CC      alpha-softmmu/hw/block/vhost-user-blk.o
  CC      arm-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      alpha-softmmu/hw/block/dataplane/virtio-blk.o
  CC      cris-softmmu/hw/net/vhost_net.o
  CC      alpha-softmmu/hw/char/virtio-serial-bus.o
  CC      arm-softmmu/hw/9pfs/virtio-9p-device.o
  CC      aarch64-softmmu/hw/block/vhost-user-blk.o
  CC      cris-softmmu/hw/net/rocker/qmp-norocker.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      arm-softmmu/hw/adc/stm32f2xx_adc.o
  CC      cris-softmmu/hw/vfio/common.o
  CC      alpha-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      arm-softmmu/hw/block/virtio-blk.o
  CC      alpha-softmmu/hw/core/null-machine.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      cris-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      alpha-softmmu/hw/display/vga.o
  CC      arm-softmmu/hw/block/vhost-user-blk.o
  CC      cris-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      arm-softmmu/hw/block/dataplane/virtio-blk.o
  CC      cris-softmmu/hw/cris/boot.o
  CC      cris-softmmu/hw/cris/axis_dev88.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      arm-softmmu/hw/char/exynos4210_uart.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      cris-softmmu/target/cris/translate.o
  CC      alpha-softmmu/hw/display/virtio-gpu.o
  CC      arm-softmmu/hw/char/omap_uart.o
  CC      arm-softmmu/hw/char/digic-uart.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      arm-softmmu/hw/char/stm32f2xx_usart.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  CC      alpha-softmmu/hw/display/virtio-gpu-3d.o
  CC      arm-softmmu/hw/char/bcm2835_aux.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      arm-softmmu/hw/char/virtio-serial-bus.o
  CC      alpha-softmmu/hw/display/virtio-gpu-pci.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      cris-softmmu/target/cris/op_helper.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      arm-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      alpha-softmmu/hw/misc/ivshmem.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      arm-softmmu/hw/core/null-machine.o
  CC      cris-softmmu/target/cris/helper.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      arm-softmmu/hw/cpu/arm11mpcore.o
  CC      alpha-softmmu/hw/misc/mmio_interface.o
  CC      cris-softmmu/target/cris/cpu.o
  CC      arm-softmmu/hw/cpu/realview_mpcore.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      cris-softmmu/target/cris/gdbstub.o
  CC      alpha-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/cpu/a9mpcore.o
  CC      cris-softmmu/target/cris/mmu.o
  CC      arm-softmmu/hw/cpu/a15mpcore.o
  CC      alpha-softmmu/hw/net/vhost_net.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/display/omap_dss.o
  CC      cris-softmmu/target/cris/machine.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      arm-softmmu/hw/display/omap_lcdc.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  GEN     trace/generated-helpers.c
  CC      cris-softmmu/trace/control-target.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/display/pxa2xx_lcd.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi.o
  CC      cris-softmmu/trace/generated-helpers.o
  CC      alpha-softmmu/hw/scsi/vhost-user-scsi.o
  LINK    cris-softmmu/qemu-system-cris
  CC      alpha-softmmu/hw/timer/mc146818rtc.o
  CC      arm-softmmu/hw/display/bcm2835_fb.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  CC      arm-softmmu/hw/display/vga.o
  CC      alpha-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC      arm-softmmu/hw/display/virtio-gpu.o
  CC      alpha-softmmu/hw/vfio/pci.o
  CC      arm-softmmu/hw/display/virtio-gpu-3d.o
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  CC      arm-softmmu/hw/display/virtio-gpu-pci.o
  CC      arm-softmmu/hw/dma/omap_dma.o
  GEN     i386-softmmu/hmp-commands.h
  GEN     i386-softmmu/hmp-commands-info.h
  GEN     i386-softmmu/config-target.h
  CC      i386-softmmu/exec.o
  CC      i386-softmmu/tcg/tcg.o
  CC      i386-softmmu/tcg/tcg-op.o
  CC      i386-softmmu/tcg/optimize.o
  CC      i386-softmmu/tcg/tcg-common.o
  CC      i386-softmmu/fpu/softfloat.o
  CC      i386-softmmu/disas.o
  GEN     i386-softmmu/gdbstub-xml.c
  CC      i386-softmmu/arch_init.o
  CC      i386-softmmu/cpus.o
  CC      i386-softmmu/monitor.o
  CC      i386-softmmu/gdbstub.o
  CC      i386-softmmu/balloon.o
  CC      i386-softmmu/ioport.o
  CC      i386-softmmu/numa.o
  CC      i386-softmmu/qtest.o
  CC      i386-softmmu/memory.o
  CC      i386-softmmu/memory_mapping.o
  CC      i386-softmmu/dump.o
  CC      i386-softmmu/migration/ram.o
  CC      i386-softmmu/accel/accel.o
  CC      i386-softmmu/accel/stubs/hax-stub.o
  CC      i386-softmmu/accel/stubs/hvf-stub.o
  CC      i386-softmmu/accel/stubs/kvm-stub.o
  CC      i386-softmmu/accel/tcg/tcg-all.o
  CC      i386-softmmu/accel/tcg/cputlb.o
  CC      i386-softmmu/accel/tcg/tcg-runtime.o
  CC      i386-softmmu/accel/tcg/cpu-exec.o
  CC      i386-softmmu/accel/tcg/cpu-exec-common.o
  CC      i386-softmmu/accel/tcg/translate-all.o
  CC      i386-softmmu/accel/tcg/translator.o
  CC      i386-softmmu/hw/9pfs/virtio-9p-device.o
  CC      i386-softmmu/hw/block/virtio-blk.o
  CC      i386-softmmu/hw/block/vhost-user-blk.o
  CC      i386-softmmu/hw/block/dataplane/virtio-blk.o
  CC      i386-softmmu/hw/char/virtio-serial-bus.o
  CC      i386-softmmu/hw/core/generic-loader.o
  CC      i386-softmmu/hw/core/null-machine.o
  CC      i386-softmmu/hw/display/vga.o
  CC      i386-softmmu/hw/display/virtio-gpu.o
  CC      i386-softmmu/hw/display/virtio-gpu-3d.o
  CC      i386-softmmu/hw/display/virtio-gpu-pci.o
  CC      i386-softmmu/hw/display/virtio-vga.o
  CC      i386-softmmu/hw/intc/apic.o
  CC      i386-softmmu/hw/intc/apic_common.o
  CC      i386-softmmu/hw/intc/ioapic.o
  CC      i386-softmmu/hw/isa/lpc_ich9.o
  CC      i386-softmmu/hw/misc/ivshmem.o
  CC      i386-softmmu/hw/misc/pvpanic.o
  CC      i386-softmmu/hw/misc/mmio_interface.o
  CC      i386-softmmu/hw/net/virtio-net.o
  CC      i386-softmmu/hw/net/vhost_net.o
  CC      i386-softmmu/hw/scsi/virtio-scsi.o
  CC      i386-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      i386-softmmu/hw/scsi/vhost-scsi-common.o
  CC      i386-softmmu/hw/scsi/vhost-scsi.o
  CC      i386-softmmu/hw/scsi/vhost-user-scsi.o
  CC      i386-softmmu/hw/timer/mc146818rtc.o
  CC      i386-softmmu/hw/vfio/common.o
  CC      i386-softmmu/hw/vfio/pci.o
  CC      i386-softmmu/hw/vfio/pci-quirks.o
  CC      i386-softmmu/hw/vfio/platform.o
  CC      i386-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/virtio/virtio.o
  CC      i386-softmmu/hw/virtio/virtio-balloon.o
  CC      i386-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/virtio/vhost-backend.o
  CC      i386-softmmu/hw/virtio/vhost-user.o
  CC      i386-softmmu/hw/virtio/vhost-vsock.o
  CC      i386-softmmu/hw/virtio/virtio-crypto.o
  CC      i386-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      i386-softmmu/hw/i386/multiboot.o
  CC      i386-softmmu/hw/i386/pc.o
  CC      i386-softmmu/hw/i386/pc_piix.o
  CC      i386-softmmu/hw/i386/pc_q35.o
  CC      i386-softmmu/hw/i386/pc_sysfw.o
  CC      i386-softmmu/hw/i386/x86-iommu.o
  CC      i386-softmmu/hw/i386/intel_iommu.o
  CC      i386-softmmu/hw/i386/amd_iommu.o
  CC      i386-softmmu/hw/i386/vmport.o
  CC      i386-softmmu/hw/i386/vmmouse.o
  CC      i386-softmmu/hw/i386/kvmvapic.o
  CC      i386-softmmu/hw/i386/acpi-build.o
  CC      i386-softmmu/target/i386/helper.o
  CC      i386-softmmu/target/i386/cpu.o
  CC      i386-softmmu/target/i386/gdbstub.o
  CC      i386-softmmu/target/i386/xsave_helper.o
  CC      i386-softmmu/target/i386/translate.o
  CC      i386-softmmu/target/i386/bpt_helper.o
  CC      i386-softmmu/target/i386/cc_helper.o
  CC      i386-softmmu/target/i386/excp_helper.o
  CC      i386-softmmu/target/i386/fpu_helper.o
  CC      i386-softmmu/target/i386/int_helper.o
  CC      i386-softmmu/target/i386/mem_helper.o
  CC      i386-softmmu/target/i386/misc_helper.o
  CC      i386-softmmu/target/i386/mpx_helper.o
  CC      i386-softmmu/target/i386/seg_helper.o
  CC      i386-softmmu/target/i386/smm_helper.o
  CC      i386-softmmu/target/i386/svm_helper.o
  CC      i386-softmmu/target/i386/machine.o
  CC      i386-softmmu/target/i386/arch_memory_mapping.o
  CC      i386-softmmu/target/i386/arch_dump.o
  CC      i386-softmmu/target/i386/monitor.o
  CC      i386-softmmu/target/i386/kvm-stub.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/trace/control-target.o
  CC      i386-softmmu/gdbstub-xml.o
  CC      i386-softmmu/trace/generated-helpers.o
  LINK    i386-softmmu/qemu-system-i386
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:193: qemu-system-i386] Error 1
make: *** [Makefile:403: subdir-i386-softmmu] Error 2
make: *** Waiting for unfinished jobs....
  CC      arm-softmmu/hw/dma/soc_dma.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
  CC      alpha-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/dma/pxa2xx_dma.o
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      arm-softmmu/hw/dma/bcm2835_dma.o
  CC      alpha-softmmu/hw/vfio/platform.o
  CC      arm-softmmu/hw/gpio/omap_gpio.o
  CC      alpha-softmmu/hw/vfio/spapr.o
  CC      alpha-softmmu/hw/virtio/virtio.o
  CC      arm-softmmu/hw/gpio/imx_gpio.o
  CC      alpha-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/gpio/bcm2835_gpio.o
  CC      alpha-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/i2c/omap_i2c.o
  CC      alpha-softmmu/hw/virtio/vhost-backend.o
  CC      alpha-softmmu/hw/virtio/vhost-user.o
  CC      arm-softmmu/hw/input/pxa2xx_keypad.o
  CC      arm-softmmu/hw/input/tsc210x.o
  CC      alpha-softmmu/hw/virtio/vhost-vsock.o
  CC      arm-softmmu/hw/intc/armv7m_nvic.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/intc/exynos4210_gic.o
  CC      arm-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      alpha-softmmu/hw/alpha/dp264.o
  CC      arm-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      alpha-softmmu/hw/alpha/pci.o
  CC      arm-softmmu/hw/intc/bcm2835_ic.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      arm-softmmu/hw/intc/bcm2836_control.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      arm-softmmu/hw/intc/allwinner-a10-pic.o
  CC      alpha-softmmu/hw/alpha/typhoon.o
  CC      arm-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      alpha-softmmu/target/alpha/machine.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      alpha-softmmu/target/alpha/translate.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      aarch64-softmmu/hw/misc/ivshmem.o
  CC      alpha-softmmu/target/alpha/helper.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      alpha-softmmu/target/alpha/cpu.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      alpha-softmmu/target/alpha/int_helper.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      alpha-softmmu/target/alpha/fpu_helper.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      alpha-softmmu/target/alpha/vax_helper.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  CC      alpha-softmmu/target/alpha/sys_helper.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  CC      alpha-softmmu/target/alpha/mem_helper.o
  CC      arm-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      alpha-softmmu/target/alpha/gdbstub.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/trace/control-target.o
  CC      arm-softmmu/hw/misc/ivshmem.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      alpha-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/misc/arm_sysctl.o
  CC      arm-softmmu/hw/misc/cbus.o
  LINK    alpha-softmmu/qemu-system-alpha
  CC      arm-softmmu/hw/misc/exynos4210_pmu.o
  CC      arm-softmmu/hw/misc/exynos4210_clk.o
  CC      arm-softmmu/hw/misc/exynos4210_rng.o
  CC      arm-softmmu/hw/misc/imx_ccm.o
  CC      arm-softmmu/hw/misc/imx31_ccm.o
  CC      arm-softmmu/hw/misc/imx25_ccm.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      arm-softmmu/hw/misc/imx6_ccm.o
  CC      arm-softmmu/hw/misc/imx6_src.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      arm-softmmu/hw/misc/mst_fpga.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      arm-softmmu/hw/misc/omap_clk.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      arm-softmmu/hw/misc/omap_gpmc.o
  CC      arm-softmmu/hw/misc/omap_l4.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      arm-softmmu/hw/misc/omap_tap.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      arm-softmmu/hw/misc/bcm2835_mbox.o
  CC      arm-softmmu/hw/misc/bcm2835_property.o
  CC      arm-softmmu/hw/misc/bcm2835_rng.o
  CC      arm-softmmu/hw/misc/zynq_slcr.o
  CC      arm-softmmu/hw/misc/zynq-xadc.o
  CC      arm-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      arm-softmmu/hw/misc/aspeed_scu.o
  CC      arm-softmmu/hw/misc/aspeed_sdmc.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi.o
  CC      arm-softmmu/hw/misc/msf2-sysreg.o
  CC      aarch64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      arm-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/net/vhost_net.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      arm-softmmu/hw/pcmcia/pxa2xx.o
  CC      arm-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      arm-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/scsi/vhost-scsi.o
  CC      arm-softmmu/hw/scsi/vhost-user-scsi.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/vfio/pci-quirks.o
  CC      aarch64-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/vfio/calxeda-xgmac.o
  CC      aarch64-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/vhost.o
  CC      aarch64-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/translate.o
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      aarch64-softmmu/target/arm/cpu.o
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  CC      arm-softmmu/hw/sd/omap_mmc.o
  CC      arm-softmmu/hw/sd/pxa2xx_mmci.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/gdbstub-xml.o
  CC      arm-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/ssi/omap_spi.o
  CC      arm-softmmu/hw/ssi/imx_spi.o
  CC      arm-softmmu/hw/timer/exynos4210_mct.o
  CC      arm-softmmu/hw/timer/exynos4210_pwm.o
  CC      arm-softmmu/hw/timer/exynos4210_rtc.o
  CC      arm-softmmu/hw/timer/omap_gptimer.o
  CC      arm-softmmu/hw/timer/omap_synctimer.o
  CC      arm-softmmu/hw/timer/pxa2xx_timer.o
  CC      arm-softmmu/hw/timer/digic-timer.o
  CC      arm-softmmu/hw/timer/allwinner-a10-pit.o
  CC      arm-softmmu/hw/usb/tusb6010.o
  CC      arm-softmmu/hw/vfio/common.o
  CC      arm-softmmu/hw/vfio/pci.o
  CC      arm-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/vfio/platform.o
  LINK    aarch64-softmmu/qemu-system-aarch64
  CC      arm-softmmu/hw/vfio/calxeda-xgmac.o
  CC      arm-softmmu/hw/vfio/amd-xgbe.o
  CC      arm-softmmu/hw/vfio/spapr.o
  CC      arm-softmmu/hw/virtio/virtio.o
  CC      arm-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/virtio/vhost-backend.o
  CC      arm-softmmu/hw/virtio/vhost-user.o
  CC      arm-softmmu/hw/virtio/vhost-vsock.o
  CC      arm-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      arm-softmmu/hw/arm/boot.o
  CC      arm-softmmu/hw/arm/collie.o
  CC      arm-softmmu/hw/arm/exynos4_boards.o
  CC      arm-softmmu/hw/arm/gumstix.o
  CC      arm-softmmu/hw/arm/highbank.o
  CC      arm-softmmu/hw/arm/digic_boards.o
  CC      arm-softmmu/hw/arm/integratorcp.o
  CC      arm-softmmu/hw/arm/mainstone.o
  CC      arm-softmmu/hw/arm/musicpal.o
  CC      arm-softmmu/hw/arm/nseries.o
  CC      arm-softmmu/hw/arm/omap_sx1.o
  CC      arm-softmmu/hw/arm/palm.o
  CC      arm-softmmu/hw/arm/realview.o
  CC      arm-softmmu/hw/arm/spitz.o
  CC      arm-softmmu/hw/arm/stellaris.o
  CC      arm-softmmu/hw/arm/tosa.o
  CC      arm-softmmu/hw/arm/versatilepb.o
  CC      arm-softmmu/hw/arm/vexpress.o
  CC      arm-softmmu/hw/arm/virt.o
  CC      arm-softmmu/hw/arm/xilinx_zynq.o
  CC      arm-softmmu/hw/arm/z2.o
  CC      arm-softmmu/hw/arm/virt-acpi-build.o
  CC      arm-softmmu/hw/arm/netduino2.o
  CC      arm-softmmu/hw/arm/sysbus-fdt.o
  CC      arm-softmmu/hw/arm/armv7m.o
  CC      arm-softmmu/hw/arm/exynos4210.o
  CC      arm-softmmu/hw/arm/pxa2xx.o
  CC      arm-softmmu/hw/arm/pxa2xx_gpio.o
  CC      arm-softmmu/hw/arm/pxa2xx_pic.o
  CC      arm-softmmu/hw/arm/digic.o
  CC      arm-softmmu/hw/arm/omap1.o
  CC      arm-softmmu/hw/arm/omap2.o
  CC      arm-softmmu/hw/arm/strongarm.o
  CC      arm-softmmu/hw/arm/allwinner-a10.o
  CC      arm-softmmu/hw/arm/cubieboard.o
  CC      arm-softmmu/hw/arm/bcm2835_peripherals.o
  CC      arm-softmmu/hw/arm/bcm2836.o
  CC      arm-softmmu/hw/arm/raspi.o
  CC      arm-softmmu/hw/arm/stm32f205_soc.o
  CC      arm-softmmu/hw/arm/fsl-imx25.o
  CC      arm-softmmu/hw/arm/imx25_pdk.o
  CC      arm-softmmu/hw/arm/fsl-imx31.o
  CC      arm-softmmu/hw/arm/kzm.o
  CC      arm-softmmu/hw/arm/fsl-imx6.o
  CC      arm-softmmu/hw/arm/sabrelite.o
  CC      arm-softmmu/hw/arm/aspeed_soc.o
  CC      arm-softmmu/hw/arm/aspeed.o
  CC      arm-softmmu/hw/arm/mps2.o
  CC      arm-softmmu/hw/arm/msf2-soc.o
  CC      arm-softmmu/hw/arm/msf2-som.o
  CC      arm-softmmu/target/arm/arm-semi.o
  CC      arm-softmmu/target/arm/machine.o
  CC      arm-softmmu/target/arm/psci.o
  CC      arm-softmmu/target/arm/arch_dump.o
  CC      arm-softmmu/target/arm/monitor.o
  CC      arm-softmmu/target/arm/kvm-stub.o
  CC      arm-softmmu/target/arm/translate.o
  CC      arm-softmmu/target/arm/op_helper.o
  CC      arm-softmmu/target/arm/helper.o
  CC      arm-softmmu/target/arm/cpu.o
  CC      arm-softmmu/target/arm/neon_helper.o
  CC      arm-softmmu/target/arm/iwmmxt_helper.o
  CC      arm-softmmu/target/arm/gdbstub.o
  CC      arm-softmmu/target/arm/crypto_helper.o
  CC      arm-softmmu/target/arm/arm-powerctl.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/trace/control-target.o
  CC      arm-softmmu/gdbstub-xml.o
  CC      arm-softmmu/trace/generated-helpers.o
  LINK    arm-softmmu/qemu-system-arm
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 18:19   ` no-reply
  -1 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:19 UTC (permalink / raw)
  To: brijesh.singh
  Cc: famz, qemu-devel, edgar.iglesias, peter.maydell, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, dgilbert,
	brijesh.singh, pbonzini

Hi,

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

Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com
Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)

=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-mingw@fedora
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
6efcae2888 sev: add migration blocker
16a9e00946 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5a54 sev: add debug encrypt and decrypt commands
9034d072b3 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370842 sev: Finalize the SEV guest launch flow
5e126818a5 sev: emit the SEV_MEASUREMENT event
1c9a562916 qapi: add SEV_MEASUREMENT event
b322fca554 target/i386: encrypt bios rom
10da3ed830 sev: add command to encrypt guest memory region
cc979f7ffb sev: add command to create launch memory encryption context
9388e9fbf7 hmp: display memory encryption support in 'info kvm'
8875a9eff3 kvm: introduce memory encryption APIs
c530cf3a0f sev: register the guest memory range which may contain encrypted data
f486eda972 sev: add command to initialize the memory encryption context
cd64908627 accel: add Secure Encrypted Virtulization (SEV) object
08729ca7e4 docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a465 kvm: update kvm.h to include memory encryption ioctls
113e16b66e machine: add -memory-encryption property
f839a7f5d1 target/i386: add memory encryption feature cpuid support
4e159e781f monitor/i386: use debug APIs when accessing guest memory
fbeb706e23 exec: add debug version of physical memory read and write API
11bc1372d7 exec: add ram_debug_ops support
1b02df629e memattrs: add debug attribute

=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
  BUILD   fedora
  GEN     /var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar.vroot'...
done.
Your branch is up-to-date with 'origin/test'.
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar.vroot/dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb'
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar.vroot/ui/keycodemapdb'...
Submodule path 'ui/keycodemapdb': checked out '10739aa26051a5d49d88132604539d3ed085e72e'
  COPY    RUNNER
    RUN test-mingw in qemu:fedora 
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
bzip2-1.0.6-21.fc25.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.4.1-1.fc25.x86_64
gcc-c++-6.4.1-1.fc25.x86_64
gettext-0.19.8.1-3.fc25.x86_64
git-2.9.5-3.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
hostname-3.15-8.fc25.x86_64
libaio-devel-0.3.110-6.fc24.x86_64
libasan-6.4.1-1.fc25.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
libubsan-6.4.1-1.fc25.x86_64
make-4.1-6.fc25.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.3-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.17-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.3-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.17-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
nettle-devel-3.3-1.fc25.x86_64
package python2 is not installed
perl-5.24.3-389.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64

Environment variables:
PACKAGES=ccache gettext git tar PyYAML sparse flex bison python2 bzip2 hostname     glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel     gcc gcc-c++ clang make perl which bc findutils libaio-devel     nettle-devel libasan libubsan     mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config     mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1     mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2     mingw32-bzip2     mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config     mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1     mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2     mingw64-bzip2
HOSTNAME=b7a3a4e6a3c5
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25container
FEATURES=mingw clang pyyaml asan dtc
DEBUG=
_=/usr/bin/env

Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install --cross-prefix=x86_64-w64-mingw32- --enable-trace-backends=simple --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix    /tmp/qemu-test/install
BIOS directory    /tmp/qemu-test/install
firmware path     /tmp/qemu-test/install/share/qemu-firmware
binary directory  /tmp/qemu-test/install
library directory /tmp/qemu-test/install/lib
module directory  /tmp/qemu-test/install/lib
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory  /tmp/qemu-test/install
local state directory   queried at runtime
Windows SDK       no
Source path       /tmp/qemu-test/src
GIT binary        git
GIT submodules    
C compiler        x86_64-w64-mingw32-gcc
Host C compiler   cc
C++ compiler      x86_64-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/pixman-1  -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/x86_64-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include  -m64 -mcx16 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include  -I/usr/x86_64-w64-mingw32/sys-root/mingw/include   -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/libpng16 
LDFLAGS           -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu aarch64-softmmu
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (1.2.15)
GTK support       yes (2.24.31)
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    yes
GNUTLS rnd        yes
libgcrypt         no
libgcrypt kdf     no
nettle            yes (3.3)
nettle kdf        yes
libtasn1          yes
curses support    no
virgl support     no
curl support      yes
mingw32 support   yes
Audio drivers     dsound
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    no
Multipath support no
VNC support       yes
VNC SASL support  no
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               no
vde support       no
netmap support    no
Linux AIO support no
ATTR/XATTR support no
Install blobs     yes
KVM support       no
HAX support       yes
HVF support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
malloc trim support no
RDMA support      no
fdt support       yes
preadv support    no
fdatasync         no
madvise           no
posix_madvise     no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
vhost-user support no
Trace backends    simple
Trace output file trace-<pid>
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            no
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info yes
QGA MSI support   no
seccomp support   no
coroutine backend win32
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   yes
TPM passthrough   no
TPM emulator      no
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     yes
NUMA host support no
libxml2           no
tcmalloc support  no
jemalloc support  no
avx2 optimization yes
replication support yes
VxHS block device no
capstone          no

WARNING: Use of GTK 2.0 is deprecated and will be removed in
WARNING: future releases. Please switch to using GTK 3.0

WARNING: Use of SDL 1.2 is deprecated and will be removed in
WARNING: future releases. Please switch to using SDL 2.0
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     config-host.h
  GEN     qmp-commands.h
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qemu-options.def
  GEN     qapi-event.h
  GEN     x86_64-softmmu/config-devices.mak
  GEN     aarch64-softmmu/config-devices.mak
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     ui/input-keymap-atset1-to-qcode.c
  GEN     ui/input-keymap-linux-to-qcode.c
  GEN     ui/input-keymap-qcode-to-atset1.c
  GEN     ui/input-keymap-qcode-to-atset2.c
  GEN     ui/input-keymap-qcode-to-atset3.c
  GEN     ui/input-keymap-qcode-to-linux.c
  GEN     ui/input-keymap-qcode-to-qnum.c
  GEN     ui/input-keymap-qcode-to-sun.c
  GEN     ui/input-keymap-qnum-to-qcode.c
  GEN     ui/input-keymap-usb-to-qcode.c
  GEN     ui/input-keymap-win32-to-qcode.c
  GEN     ui/input-keymap-x11-to-qcode.c
  GEN     ui/input-keymap-xorgevdev-to-qcode.c
  GEN     ui/input-keymap-xorgkbd-to-qcode.c
  GEN     ui/input-keymap-xorgxquartz-to-qcode.c
  GEN     ui/input-keymap-xorgxwin-to-qcode.c
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sparc64/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/pci-host/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     trace-root.c
  GEN     scsi/trace.h
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sparc64/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/pci-host/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
	 DEP /tmp/qemu-test/src/dtc/tests/trees.S
	 DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
	 DEP /tmp/qemu-test/src/dtc/tests/testutils.c
	 DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
	 DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
	 DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/check_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
	 DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
	 DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/incbin.c
	 DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
	 DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
	 DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
	 DEP /tmp/qemu-test/src/dtc/tests/path-references.c
	 DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/references.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/set_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
	 DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
	 DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
	 DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
	 DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
	 DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
	 DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/notfound.c
	 DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
	 DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/getprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/find_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/root_node.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
	 DEP /tmp/qemu-test/src/dtc/util.c
	 DEP /tmp/qemu-test/src/dtc/fdtoverlay.c
	 DEP /tmp/qemu-test/src/dtc/fdtput.c
	 DEP /tmp/qemu-test/src/dtc/fdtget.c
	 DEP /tmp/qemu-test/src/dtc/fdtdump.c
	 LEX convert-dtsv0-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/srcpos.c
	 BISON dtc-parser.tab.c
	 DEP /tmp/qemu-test/src/dtc/treesource.c
	 LEX dtc-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/livetree.c
	 DEP /tmp/qemu-test/src/dtc/fstree.c
	 DEP /tmp/qemu-test/src/dtc/flattree.c
	 DEP /tmp/qemu-test/src/dtc/dtc.c
	 DEP /tmp/qemu-test/src/dtc/data.c
	 DEP /tmp/qemu-test/src/dtc/checks.c
	 DEP convert-dtsv0-lexer.lex.c
	 DEP dtc-parser.tab.c
	 DEP dtc-lexer.lex.c
	CHK version_gen.h
	UPD version_gen.h
	 DEP /tmp/qemu-test/src/dtc/util.c
	 CC libfdt/fdt.o
	 CC libfdt/fdt_ro.o
	 CC libfdt/fdt_wip.o
	 CC libfdt/fdt_rw.o
	 CC libfdt/fdt_strerror.o
	 CC libfdt/fdt_empty_tree.o
	 CC libfdt/fdt_sw.o
	 CC libfdt/fdt_addresses.o
	 CC libfdt/fdt_overlay.o
	 AR libfdt/libfdt.a
x86_64-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
  RC      version.o
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      qmp-introspect.o
  CC      qapi-types.o
  GEN     qga/qapi-generated/qga-qapi-visit.c
  CC      qapi-visit.o
  CC      qapi-event.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qjson.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/simple.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-win32.o
  CC      util/event_notifier-win32.o
  CC      util/oslib-win32.o
  CC      util/qemu-thread-win32.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-win32.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/pagesize.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sparc64/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/pci-host/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/get-vm-name.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/tpm.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/fd-register.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  GEN     qemu-img-cmds.h
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-win32.o
  CC      block/win32-aio.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      block/curl.o
  CC      block/ssh.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-gnutls.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/net-listener.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  CC      qemu-io.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-win32.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/dsoundaudio.o
  CC      audio/audio_win_int.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-ram.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      disas/arm.o
  CXX     disas/arm-a64.o
  CC      disas/i386.o
  CXX     disas/libvixl/vixl/utils.o
  CXX     disas/libvixl/vixl/compiler-intrinsics.o
  CXX     disas/libvixl/vixl/a64/instructions-a64.o
  CXX     disas/libvixl/vixl/a64/decoder-a64.o
  CXX     disas/libvixl/vixl/a64/disasm-a64.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/debugcon.o
  CC      hw/char/imx_serial.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/qdev-fw.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/stream.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/tc6393xb.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xilinx_axidma.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/ide/ahci-allwinner.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/xlnx-pmu-iomod-intc.o
  CC      hw/intc/xlnx-zynqmp-ipi.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/vmcoreinfo.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/xgmac.o
  CC      hw/net/xilinx_axienet.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/imx_fec.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/eeprom_at24c.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/pl031.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_util.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap-win32.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/sdl.o
  CC      ui/sdl_zoom.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      ui/gtk.o
  CC      chardev/char.o
  CC      chardev/char-console.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-null.o
  CC      chardev/char-pipe.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  CC      chardev/char-win.o
  CC      chardev/char-win-stdio.o
  CC      qga/commands.o
  AS      optionrom/multiboot.o
  AS      optionrom/linuxboot.o
  CC      optionrom/linuxboot_dma.o
  CC      qga/guest-agent-command-state.o
  AS      optionrom/kvmvapic.o
  BUILD   optionrom/multiboot.img
  BUILD   optionrom/linuxboot.img
  BUILD   optionrom/linuxboot_dma.img
  BUILD   optionrom/kvmvapic.img
  BUILD   optionrom/multiboot.raw
  BUILD   optionrom/linuxboot.raw
  BUILD   optionrom/linuxboot_dma.raw
  BUILD   optionrom/kvmvapic.raw
  SIGN    optionrom/multiboot.bin
  SIGN    optionrom/linuxboot.bin
  SIGN    optionrom/linuxboot_dma.bin
  SIGN    optionrom/kvmvapic.bin
  CC      qga/main.o
  CC      qga/commands-win32.o
  CC      qga/channel-win32.o
  CC      qga/service-win32.o
  CC      qga/vss-win32.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AR      libqemuutil.a
  CC      qemu-img.o
  LINK    qemu-io.exe
  GEN     aarch64-softmmu/hmp-commands.h
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/config-target.h
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     x86_64-softmmu/config-target.h
  CC      aarch64-softmmu/exec.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      x86_64-softmmu/exec.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      aarch64-softmmu/disas.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  LINK    qemu-ga.exe
  CC      aarch64-softmmu/arch_init.o
  CC      aarch64-softmmu/cpus.o
  CC      aarch64-softmmu/monitor.o
  CC      aarch64-softmmu/gdbstub.o
  CC      aarch64-softmmu/balloon.o
  CC      aarch64-softmmu/ioport.o
  CC      aarch64-softmmu/numa.o
  CC      x86_64-softmmu/tcg/tcg.o
  LINK    qemu-img.exe
  CC      aarch64-softmmu/qtest.o
  CC      aarch64-softmmu/memory.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      aarch64-softmmu/dump.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  CC      x86_64-softmmu/tcg/optimize.o
  CC      aarch64-softmmu/migration/ram.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      aarch64-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      x86_64-softmmu/disas.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/arch_init.o
  CC      aarch64-softmmu/accel/stubs/hvf-stub.o
  CC      x86_64-softmmu/cpus.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/monitor.o
  CC      x86_64-softmmu/gdbstub.o
  CC      x86_64-softmmu/balloon.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/ioport.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      x86_64-softmmu/numa.o
  CC      x86_64-softmmu/qtest.o
  CC      x86_64-softmmu/memory.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/dump.o
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/migration/ram.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      x86_64-softmmu/accel/accel.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      x86_64-softmmu/accel/stubs/hvf-stub.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      x86_64-softmmu/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      x86_64-softmmu/accel/tcg/tcg-runtime.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      x86_64-softmmu/hw/i386/vmport.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      x86_64-softmmu/hw/i386/vmmouse.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      x86_64-softmmu/target/i386/kvm-stub.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      x86_64-softmmu/target/i386/hax-all.o
  CC      x86_64-softmmu/target/i386/hax-mem.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      x86_64-softmmu/target/i386/hax-windows.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  LINK    x86_64-softmmu/qemu-system-x86_64w.exe
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
target/i386/helper.o: In function `get_me_mask':
/tmp/qemu-test/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/tmp/qemu-test/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-x86_64w.exe] Error 1
Makefile:193: recipe for target 'qemu-system-x86_64w.exe' failed
Makefile:403: recipe for target 'subdir-x86_64-softmmu' failed
make: *** [subdir-x86_64-softmmu] Error 2
make: *** Waiting for unfinished jobs....
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/translate.o
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      aarch64-softmmu/target/arm/cpu.o
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/trace/generated-helpers.o
  LINK    aarch64-softmmu/qemu-system-aarch64w.exe
  GEN     aarch64-softmmu/qemu-system-aarch64.exe
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 407, in <module>
    sys.exit(main())
  File "./tests/docker/docker.py", line 404, in main
    return args.cmdobj.run(args, argv)
  File "./tests/docker/docker.py", line 261, in run
    return Docker().run(argv, args.keep, quiet=args.quiet)
  File "./tests/docker/docker.py", line 229, in run
    quiet=quiet)
  File "./tests/docker/docker.py", line 147, in _do_check
    return subprocess.check_call(self._command + cmd, **kwargs)
  File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=1c9fffee052011e8a57452540069c830', '-u', '0', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-mingw']' returned non-zero exit status 2
make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1
make: *** [tests/docker/Makefile.include:163: docker-run-test-mingw@fedora] Error 2

real	5m55.952s
user	0m4.706s
sys	0m3.431s
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
@ 2018-01-29 18:19   ` no-reply
  0 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:19 UTC (permalink / raw)
  To: brijesh.singh
  Cc: famz, qemu-devel, edgar.iglesias, peter.maydell, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, dgilbert,
	pbonzini

Hi,

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

Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com
Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)

=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-mingw@fedora
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
6efcae2888 sev: add migration blocker
16a9e00946 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5a54 sev: add debug encrypt and decrypt commands
9034d072b3 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370842 sev: Finalize the SEV guest launch flow
5e126818a5 sev: emit the SEV_MEASUREMENT event
1c9a562916 qapi: add SEV_MEASUREMENT event
b322fca554 target/i386: encrypt bios rom
10da3ed830 sev: add command to encrypt guest memory region
cc979f7ffb sev: add command to create launch memory encryption context
9388e9fbf7 hmp: display memory encryption support in 'info kvm'
8875a9eff3 kvm: introduce memory encryption APIs
c530cf3a0f sev: register the guest memory range which may contain encrypted data
f486eda972 sev: add command to initialize the memory encryption context
cd64908627 accel: add Secure Encrypted Virtulization (SEV) object
08729ca7e4 docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a465 kvm: update kvm.h to include memory encryption ioctls
113e16b66e machine: add -memory-encryption property
f839a7f5d1 target/i386: add memory encryption feature cpuid support
4e159e781f monitor/i386: use debug APIs when accessing guest memory
fbeb706e23 exec: add debug version of physical memory read and write API
11bc1372d7 exec: add ram_debug_ops support
1b02df629e memattrs: add debug attribute

=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
  BUILD   fedora
  GEN     /var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar.vroot'...
done.
Your branch is up-to-date with 'origin/test'.
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar.vroot/dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb'
Cloning into '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358/qemu.tar.vroot/ui/keycodemapdb'...
Submodule path 'ui/keycodemapdb': checked out '10739aa26051a5d49d88132604539d3ed085e72e'
  COPY    RUNNER
    RUN test-mingw in qemu:fedora 
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
bzip2-1.0.6-21.fc25.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.4.1-1.fc25.x86_64
gcc-c++-6.4.1-1.fc25.x86_64
gettext-0.19.8.1-3.fc25.x86_64
git-2.9.5-3.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
hostname-3.15-8.fc25.x86_64
libaio-devel-0.3.110-6.fc24.x86_64
libasan-6.4.1-1.fc25.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
libubsan-6.4.1-1.fc25.x86_64
make-4.1-6.fc25.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.3-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.17-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.3-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.17-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
nettle-devel-3.3-1.fc25.x86_64
package python2 is not installed
perl-5.24.3-389.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64

Environment variables:
PACKAGES=ccache gettext git tar PyYAML sparse flex bison python2 bzip2 hostname     glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel     gcc gcc-c++ clang make perl which bc findutils libaio-devel     nettle-devel libasan libubsan     mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config     mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1     mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2     mingw32-bzip2     mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config     mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1     mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2     mingw64-bzip2
HOSTNAME=b7a3a4e6a3c5
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25container
FEATURES=mingw clang pyyaml asan dtc
DEBUG=
_=/usr/bin/env

Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install --cross-prefix=x86_64-w64-mingw32- --enable-trace-backends=simple --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix    /tmp/qemu-test/install
BIOS directory    /tmp/qemu-test/install
firmware path     /tmp/qemu-test/install/share/qemu-firmware
binary directory  /tmp/qemu-test/install
library directory /tmp/qemu-test/install/lib
module directory  /tmp/qemu-test/install/lib
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory  /tmp/qemu-test/install
local state directory   queried at runtime
Windows SDK       no
Source path       /tmp/qemu-test/src
GIT binary        git
GIT submodules    
C compiler        x86_64-w64-mingw32-gcc
Host C compiler   cc
C++ compiler      x86_64-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/pixman-1  -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/x86_64-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include  -m64 -mcx16 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include  -I/usr/x86_64-w64-mingw32/sys-root/mingw/include   -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/libpng16 
LDFLAGS           -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu aarch64-softmmu
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (1.2.15)
GTK support       yes (2.24.31)
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    yes
GNUTLS rnd        yes
libgcrypt         no
libgcrypt kdf     no
nettle            yes (3.3)
nettle kdf        yes
libtasn1          yes
curses support    no
virgl support     no
curl support      yes
mingw32 support   yes
Audio drivers     dsound
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    no
Multipath support no
VNC support       yes
VNC SASL support  no
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               no
vde support       no
netmap support    no
Linux AIO support no
ATTR/XATTR support no
Install blobs     yes
KVM support       no
HAX support       yes
HVF support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
malloc trim support no
RDMA support      no
fdt support       yes
preadv support    no
fdatasync         no
madvise           no
posix_madvise     no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
vhost-user support no
Trace backends    simple
Trace output file trace-<pid>
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            no
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info yes
QGA MSI support   no
seccomp support   no
coroutine backend win32
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   yes
TPM passthrough   no
TPM emulator      no
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     yes
NUMA host support no
libxml2           no
tcmalloc support  no
jemalloc support  no
avx2 optimization yes
replication support yes
VxHS block device no
capstone          no

WARNING: Use of GTK 2.0 is deprecated and will be removed in
WARNING: future releases. Please switch to using GTK 3.0

WARNING: Use of SDL 1.2 is deprecated and will be removed in
WARNING: future releases. Please switch to using SDL 2.0
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     config-host.h
  GEN     qmp-commands.h
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qemu-options.def
  GEN     qapi-event.h
  GEN     x86_64-softmmu/config-devices.mak
  GEN     aarch64-softmmu/config-devices.mak
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     ui/input-keymap-atset1-to-qcode.c
  GEN     ui/input-keymap-linux-to-qcode.c
  GEN     ui/input-keymap-qcode-to-atset1.c
  GEN     ui/input-keymap-qcode-to-atset2.c
  GEN     ui/input-keymap-qcode-to-atset3.c
  GEN     ui/input-keymap-qcode-to-linux.c
  GEN     ui/input-keymap-qcode-to-qnum.c
  GEN     ui/input-keymap-qcode-to-sun.c
  GEN     ui/input-keymap-qnum-to-qcode.c
  GEN     ui/input-keymap-usb-to-qcode.c
  GEN     ui/input-keymap-win32-to-qcode.c
  GEN     ui/input-keymap-x11-to-qcode.c
  GEN     ui/input-keymap-xorgevdev-to-qcode.c
  GEN     ui/input-keymap-xorgkbd-to-qcode.c
  GEN     ui/input-keymap-xorgxquartz-to-qcode.c
  GEN     ui/input-keymap-xorgxwin-to-qcode.c
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sparc64/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/pci-host/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     trace-root.c
  GEN     scsi/trace.h
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sparc64/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/pci-host/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
	 DEP /tmp/qemu-test/src/dtc/tests/trees.S
	 DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
	 DEP /tmp/qemu-test/src/dtc/tests/testutils.c
	 DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
	 DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
	 DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/check_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
	 DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
	 DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/incbin.c
	 DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
	 DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
	 DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
	 DEP /tmp/qemu-test/src/dtc/tests/path-references.c
	 DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/references.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/set_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
	 DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
	 DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
	 DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
	 DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
	 DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
	 DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/notfound.c
	 DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
	 DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/getprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/find_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/root_node.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
	 DEP /tmp/qemu-test/src/dtc/util.c
	 DEP /tmp/qemu-test/src/dtc/fdtoverlay.c
	 DEP /tmp/qemu-test/src/dtc/fdtput.c
	 DEP /tmp/qemu-test/src/dtc/fdtget.c
	 DEP /tmp/qemu-test/src/dtc/fdtdump.c
	 LEX convert-dtsv0-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/srcpos.c
	 BISON dtc-parser.tab.c
	 DEP /tmp/qemu-test/src/dtc/treesource.c
	 LEX dtc-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/livetree.c
	 DEP /tmp/qemu-test/src/dtc/fstree.c
	 DEP /tmp/qemu-test/src/dtc/flattree.c
	 DEP /tmp/qemu-test/src/dtc/dtc.c
	 DEP /tmp/qemu-test/src/dtc/data.c
	 DEP /tmp/qemu-test/src/dtc/checks.c
	 DEP convert-dtsv0-lexer.lex.c
	 DEP dtc-parser.tab.c
	 DEP dtc-lexer.lex.c
	CHK version_gen.h
	UPD version_gen.h
	 DEP /tmp/qemu-test/src/dtc/util.c
	 CC libfdt/fdt.o
	 CC libfdt/fdt_ro.o
	 CC libfdt/fdt_wip.o
	 CC libfdt/fdt_rw.o
	 CC libfdt/fdt_strerror.o
	 CC libfdt/fdt_empty_tree.o
	 CC libfdt/fdt_sw.o
	 CC libfdt/fdt_addresses.o
	 CC libfdt/fdt_overlay.o
	 AR libfdt/libfdt.a
x86_64-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
  RC      version.o
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      qmp-introspect.o
  CC      qapi-types.o
  GEN     qga/qapi-generated/qga-qapi-visit.c
  CC      qapi-visit.o
  CC      qapi-event.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qjson.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/simple.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-win32.o
  CC      util/event_notifier-win32.o
  CC      util/oslib-win32.o
  CC      util/qemu-thread-win32.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-win32.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/pagesize.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sparc64/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/pci-host/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/get-vm-name.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/tpm.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/fd-register.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  GEN     qemu-img-cmds.h
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-win32.o
  CC      block/win32-aio.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      block/curl.o
  CC      block/ssh.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-gnutls.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/net-listener.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  CC      qemu-io.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-win32.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/dsoundaudio.o
  CC      audio/audio_win_int.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-ram.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      disas/arm.o
  CXX     disas/arm-a64.o
  CC      disas/i386.o
  CXX     disas/libvixl/vixl/utils.o
  CXX     disas/libvixl/vixl/compiler-intrinsics.o
  CXX     disas/libvixl/vixl/a64/instructions-a64.o
  CXX     disas/libvixl/vixl/a64/decoder-a64.o
  CXX     disas/libvixl/vixl/a64/disasm-a64.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/debugcon.o
  CC      hw/char/imx_serial.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/qdev-fw.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/stream.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/tc6393xb.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xilinx_axidma.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/ide/ahci-allwinner.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/xlnx-pmu-iomod-intc.o
  CC      hw/intc/xlnx-zynqmp-ipi.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/vmcoreinfo.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/xgmac.o
  CC      hw/net/xilinx_axienet.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/imx_fec.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/eeprom_at24c.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/pl031.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_util.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap-win32.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/sdl.o
  CC      ui/sdl_zoom.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      ui/gtk.o
  CC      chardev/char.o
  CC      chardev/char-console.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-null.o
  CC      chardev/char-pipe.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  CC      chardev/char-win.o
  CC      chardev/char-win-stdio.o
  CC      qga/commands.o
  AS      optionrom/multiboot.o
  AS      optionrom/linuxboot.o
  CC      optionrom/linuxboot_dma.o
  CC      qga/guest-agent-command-state.o
  AS      optionrom/kvmvapic.o
  BUILD   optionrom/multiboot.img
  BUILD   optionrom/linuxboot.img
  BUILD   optionrom/linuxboot_dma.img
  BUILD   optionrom/kvmvapic.img
  BUILD   optionrom/multiboot.raw
  BUILD   optionrom/linuxboot.raw
  BUILD   optionrom/linuxboot_dma.raw
  BUILD   optionrom/kvmvapic.raw
  SIGN    optionrom/multiboot.bin
  SIGN    optionrom/linuxboot.bin
  SIGN    optionrom/linuxboot_dma.bin
  SIGN    optionrom/kvmvapic.bin
  CC      qga/main.o
  CC      qga/commands-win32.o
  CC      qga/channel-win32.o
  CC      qga/service-win32.o
  CC      qga/vss-win32.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AR      libqemuutil.a
  CC      qemu-img.o
  LINK    qemu-io.exe
  GEN     aarch64-softmmu/hmp-commands.h
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/config-target.h
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     x86_64-softmmu/config-target.h
  CC      aarch64-softmmu/exec.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      x86_64-softmmu/exec.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      aarch64-softmmu/disas.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  LINK    qemu-ga.exe
  CC      aarch64-softmmu/arch_init.o
  CC      aarch64-softmmu/cpus.o
  CC      aarch64-softmmu/monitor.o
  CC      aarch64-softmmu/gdbstub.o
  CC      aarch64-softmmu/balloon.o
  CC      aarch64-softmmu/ioport.o
  CC      aarch64-softmmu/numa.o
  CC      x86_64-softmmu/tcg/tcg.o
  LINK    qemu-img.exe
  CC      aarch64-softmmu/qtest.o
  CC      aarch64-softmmu/memory.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      aarch64-softmmu/dump.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  CC      x86_64-softmmu/tcg/optimize.o
  CC      aarch64-softmmu/migration/ram.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      aarch64-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      x86_64-softmmu/disas.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/arch_init.o
  CC      aarch64-softmmu/accel/stubs/hvf-stub.o
  CC      x86_64-softmmu/cpus.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/monitor.o
  CC      x86_64-softmmu/gdbstub.o
  CC      x86_64-softmmu/balloon.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/ioport.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      x86_64-softmmu/numa.o
  CC      x86_64-softmmu/qtest.o
  CC      x86_64-softmmu/memory.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/dump.o
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/migration/ram.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      x86_64-softmmu/accel/accel.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      x86_64-softmmu/accel/stubs/hvf-stub.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      x86_64-softmmu/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      x86_64-softmmu/accel/tcg/tcg-runtime.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      x86_64-softmmu/hw/i386/vmport.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      x86_64-softmmu/hw/i386/vmmouse.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      x86_64-softmmu/target/i386/kvm-stub.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      x86_64-softmmu/target/i386/hax-all.o
  CC      x86_64-softmmu/target/i386/hax-mem.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      x86_64-softmmu/target/i386/hax-windows.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  LINK    x86_64-softmmu/qemu-system-x86_64w.exe
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
target/i386/helper.o: In function `get_me_mask':
/tmp/qemu-test/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/tmp/qemu-test/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-x86_64w.exe] Error 1
Makefile:193: recipe for target 'qemu-system-x86_64w.exe' failed
Makefile:403: recipe for target 'subdir-x86_64-softmmu' failed
make: *** [subdir-x86_64-softmmu] Error 2
make: *** Waiting for unfinished jobs....
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/translate.o
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      aarch64-softmmu/target/arm/cpu.o
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/trace/generated-helpers.o
  LINK    aarch64-softmmu/qemu-system-aarch64w.exe
  GEN     aarch64-softmmu/qemu-system-aarch64.exe
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 407, in <module>
    sys.exit(main())
  File "./tests/docker/docker.py", line 404, in main
    return args.cmdobj.run(args, argv)
  File "./tests/docker/docker.py", line 261, in run
    return Docker().run(argv, args.keep, quiet=args.quiet)
  File "./tests/docker/docker.py", line 229, in run
    quiet=quiet)
  File "./tests/docker/docker.py", line 147, in _do_check
    return subprocess.check_call(self._command + cmd, **kwargs)
  File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=1c9fffee052011e8a57452540069c830', '-u', '0', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-mmhwcwgk/src/docker-src.2018-01-29-13.13.20.27358:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-mingw']' returned non-zero exit status 2
make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1
make: *** [tests/docker/Makefile.include:163: docker-run-test-mingw@fedora] Error 2

real	5m55.952s
user	0m4.706s
sys	0m3.431s
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-01-29 18:31   ` no-reply
  -1 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:31 UTC (permalink / raw)
  To: brijesh.singh
  Cc: edgar.iglesias, peter.maydell, famz, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, qemu-devel,
	dgilbert, pbonzini, brijesh.singh

Hi,

This series failed build test on ppc host. Please find the details below.

Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e
echo "=== ENV ==="
env
echo "=== PACKAGES ==="
rpm -qa
echo "=== TEST BEGIN ==="
INSTALL=$PWD/install
BUILD=$PWD/build
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --prefix=$INSTALL
make -j100
# XXX: we need reliable clean up
# make check -j100 V=1
make install
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 - [tag update]      patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com -> patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com
 - [tag update]      patchew/20180123035349.24538-1-richard.henderson@linaro.org -> patchew/20180123035349.24538-1-richard.henderson@linaro.org
 * [new tag]         patchew/20180129174132.108925-1-brijesh.singh@amd.com -> patchew/20180129174132.108925-1-brijesh.singh@amd.com
Submodule 'capstone' (git://git.qemu.org/capstone.git) registered for path 'capstone'
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Submodule 'roms/QemuMacDrivers' (git://git.qemu.org/QemuMacDrivers.git) registered for path 'roms/QemuMacDrivers'
Submodule 'roms/SLOF' (git://git.qemu-project.org/SLOF.git) registered for path 'roms/SLOF'
Submodule 'roms/ipxe' (git://git.qemu-project.org/ipxe.git) registered for path 'roms/ipxe'
Submodule 'roms/openbios' (git://git.qemu-project.org/openbios.git) registered for path 'roms/openbios'
Submodule 'roms/openhackware' (git://git.qemu-project.org/openhackware.git) registered for path 'roms/openhackware'
Submodule 'roms/qemu-palcode' (git://github.com/rth7680/qemu-palcode.git) registered for path 'roms/qemu-palcode'
Submodule 'roms/seabios' (git://git.qemu-project.org/seabios.git/) registered for path 'roms/seabios'
Submodule 'roms/sgabios' (git://git.qemu-project.org/sgabios.git) registered for path 'roms/sgabios'
Submodule 'roms/skiboot' (git://git.qemu.org/skiboot.git) registered for path 'roms/skiboot'
Submodule 'roms/u-boot' (git://git.qemu-project.org/u-boot.git) registered for path 'roms/u-boot'
Submodule 'roms/vgabios' (git://git.qemu-project.org/vgabios.git/) registered for path 'roms/vgabios'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb'
Cloning into 'capstone'...
Submodule path 'capstone': checked out '22ead3e0bfdb87516656453336160e0a37b066bf'
Cloning into 'dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
Cloning into 'roms/QemuMacDrivers'...
Submodule path 'roms/QemuMacDrivers': checked out 'd4e7d7ac663fcb55f1b93575445fcbca372f17a7'
Cloning into 'roms/SLOF'...
Submodule path 'roms/SLOF': checked out 'fa981320a1e0968d6fc1b8de319723ff8212b337'
Cloning into 'roms/ipxe'...
Submodule path 'roms/ipxe': checked out '0600d3ae94f93efd10fc6b3c7420a9557a3a1670'
Cloning into 'roms/openbios'...
Submodule path 'roms/openbios': checked out 'b5c93acd14b7b3886c2c81d84cd18e666984a4c8'
Cloning into 'roms/openhackware'...
Submodule path 'roms/openhackware': checked out 'c559da7c8eec5e45ef1f67978827af6f0b9546f5'
Cloning into 'roms/qemu-palcode'...
Submodule path 'roms/qemu-palcode': checked out 'f3c7e44c70254975df2a00af39701eafbac4d471'
Cloning into 'roms/seabios'...
Submodule path 'roms/seabios': checked out '63451fca13c75870e1703eb3e20584d91179aebc'
Cloning into 'roms/sgabios'...
Submodule path 'roms/sgabios': checked out 'cbaee52287e5f32373181cff50a00b6c4ac9015a'
Cloning into 'roms/skiboot'...
Submodule path 'roms/skiboot': checked out 'e0ee24c27a172bcf482f6f2bc905e6211c134bcc'
Cloning into 'roms/u-boot'...
Submodule path 'roms/u-boot': checked out 'd85ca029f257b53a96da6c2fb421e78a003a9943'
Cloning into 'roms/vgabios'...
Submodule path 'roms/vgabios': checked out '19ea12c230ded95928ecaef0db47a82231c2e485'
Cloning into 'ui/keycodemapdb'...
Submodule path 'ui/keycodemapdb': checked out '10739aa26051a5d49d88132604539d3ed085e72e'
Switched to a new branch 'test'
6efcae2 sev: add migration blocker
16a9e00 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5 sev: add debug encrypt and decrypt commands
9034d07 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370 sev: Finalize the SEV guest launch flow
5e12681 sev: emit the SEV_MEASUREMENT event
1c9a562 qapi: add SEV_MEASUREMENT event
b322fca target/i386: encrypt bios rom
10da3ed sev: add command to encrypt guest memory region
cc979f7 sev: add command to create launch memory encryption context
9388e9f hmp: display memory encryption support in 'info kvm'
8875a9e kvm: introduce memory encryption APIs
c530cf3 sev: register the guest memory range which may contain encrypted data
f486eda sev: add command to initialize the memory encryption context
cd64908 accel: add Secure Encrypted Virtulization (SEV) object
08729ca docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a kvm: update kvm.h to include memory encryption ioctls
113e16b machine: add -memory-encryption property
f839a7f target/i386: add memory encryption feature cpuid support
4e159e7 monitor/i386: use debug APIs when accessing guest memory
fbeb706 exec: add debug version of physical memory read and write API
11bc137 exec: add ram_debug_ops support
1b02df6 memattrs: add debug attribute

=== OUTPUT BEGIN ===
=== ENV ===
XDG_SESSION_ID=161645
SHELL=/bin/sh
USER=patchew
PATCHEW=/home/patchew/patchew/patchew-cli -s http://patchew.org --nodebug
PATH=/usr/bin:/bin
PWD=/var/tmp/patchew-tester-tmp-r4540qbd/src
LANG=en_US.UTF-8
HOME=/home/patchew
SHLVL=2
LOGNAME=patchew
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/env
=== PACKAGES ===
plymouth-core-libs-0.8.9-0.28.20140113.el7.centos.ppc64le
vim-common-7.4.160-2.el7.ppc64le
perl-Test-Simple-0.98-243.el7.noarch
hplip-common-3.15.9-3.el7.ppc64le
valgrind-3.12.0-8.el7.ppc64le
gamin-0.1.10-16.el7.ppc64le
libpeas-loader-python-1.20.0-1.el7.ppc64le
telepathy-filesystem-0.0.2-6.el7.noarch
colord-libs-1.3.4-1.el7.ppc64le
kbd-legacy-1.15.5-13.el7.noarch
perl-CPAN-Meta-YAML-0.008-14.el7.noarch
libvirt-daemon-driver-nwfilter-3.2.0-14.el7.ppc64le
ntsysv-1.7.4-1.el7.ppc64le
kernel-bootwrapper-3.10.0-693.el7.ppc64le
telepathy-farstream-0.6.0-5.el7.ppc64le
kdenetwork-common-4.10.5-8.el7_0.noarch
elfutils-devel-0.168-8.el7.ppc64le
pm-utils-1.4.1-27.el7.ppc64le
perl-Error-0.17020-2.el7.noarch
usbmuxd-1.1.0-1.el7.ppc64le
bzip2-devel-1.0.6-13.el7.ppc64le
blktrace-1.0.5-8.el7.ppc64le
gnome-keyring-pam-3.20.0-3.el7.ppc64le
tzdata-java-2017b-1.el7.noarch
perl-devel-5.16.3-292.el7.ppc64le
gnome-getting-started-docs-3.22.0-1.el7.noarch
perl-Log-Message-Simple-0.10-2.el7.noarch
totem-pl-parser-3.10.7-1.el7.ppc64le
lohit-oriya-fonts-2.5.4.1-3.el7.noarch
python-coverage-3.6-0.5.b3.el7.ppc64le
java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.ppc64le
mailcap-2.1.41-2.el7.noarch
perl-CPANPLUS-0.91.38-4.el7.noarch
fprintd-pam-0.5.0-4.0.el7_0.ppc64le
less-458-9.el7.ppc64le
gupnp-igd-0.2.4-1.el7.ppc64le
thai-scalable-waree-fonts-0.5.0-7.el7.noarch
python-di-0.3-2.el7.noarch
yelp-libs-3.22.0-1.el7.ppc64le
vte-profile-0.46.2-1.el7.ppc64le
gpm-libs-1.20.7-5.el7.ppc64le
gnome-clocks-3.22.1-1.el7.ppc64le
p11-kit-trust-0.23.5-3.el7.ppc64le
gssproxy-0.7.0-4.el7.ppc64le
gnu-free-mono-fonts-20120503-8.el7.noarch
python-dateutil-1.5-7.el7.noarch
gucharmap-libs-3.18.2-1.el7.ppc64le
glibc-common-2.17-196.el7.ppc64le
libreport-plugin-mantisbt-2.1.11-38.el7.centos.ppc64le
motif-devel-2.3.4-8.1.el7_3.ppc64le
celt051-0.5.1.3-8.el7.ppc64le
radvd-1.9.2-9.el7.ppc64le
lohit-tamil-fonts-2.5.3-2.el7.noarch
python-ipaddress-1.0.16-2.el7.noarch
anaconda-widgets-21.48.22.121-1.el7.centos.ppc64le
zlib-1.2.7-17.el7.ppc64le
system-config-printer-1.4.1-19.el7.ppc64le
mozjs24-24.2.0-7.el7.ppc64le
device-mapper-multipath-libs-0.4.9-111.el7.ppc64le
wqy-microhei-fonts-0.2.0-0.12.beta.el7.noarch
python-schedutils-0.4-6.el7.ppc64le
gnome-bluetooth-3.20.1-1.el7.ppc64le
nss-util-3.28.4-3.el7.ppc64le
dotconf-1.3-8.el7.ppc64le
ibus-rawcode-1.3.2-3.el7.ppc64le
abattis-cantarell-fonts-0.0.25-1.el7.noarch
sssd-common-1.15.2-50.el7.ppc64le
sil-padauk-fonts-2.8-5.el7.noarch
bind-utils-9.9.4-50.el7.ppc64le
sox-14.4.1-6.el7.ppc64le
libSM-1.2.2-2.el7.ppc64le
libtiff-devel-4.0.3-27.el7_3.ppc64le
plymouth-system-theme-0.8.9-0.28.20140113.el7.centos.ppc64le
python-libs-2.7.5-58.el7.ppc64le
sssd-1.15.2-50.el7.ppc64le
rfkill-0.4-9.el7.ppc64le
cyrus-sasl-md5-2.1.26-21.el7.ppc64le
libXtst-devel-1.2.3-1.el7.ppc64le
avahi-libs-0.6.31-17.el7.ppc64le
ruby-2.0.0.648-30.el7.ppc64le
seahorse-3.20.0-1.el7.ppc64le
python-six-1.9.0-2.el7.noarch
gpgme-1.3.2-5.el7.ppc64le
iwl7260-firmware-22.0.7.0-56.el7.noarch
libsss_certmap-1.15.2-50.el7.ppc64le
xorg-x11-drv-wacom-0.34.2-2.el7.ppc64le
libXau-1.0.8-2.1.el7.ppc64le
shadow-utils-4.1.5.1-24.el7.ppc64le
evolution-ews-3.22.6-6.el7.ppc64le
libsecret-0.18.5-2.el7.ppc64le
perl-Module-Signature-0.73-2.el7.noarch
rootfiles-8.1-11.el7.noarch
trace-cmd-2.6.0-8.el7.ppc64le
hamcrest-1.3-6.el7.noarch
gawk-4.0.2-4.el7_3.1.ppc64le
usermode-1.111-5.el7.ppc64le
gnome-terminal-nautilus-3.22.1-2.el7.ppc64le
gvfs-client-1.30.4-3.el7.ppc64le
yum-utils-1.1.31-42.el7.noarch
iwl3945-firmware-15.32.2.9-56.el7.noarch
perl-Archive-Zip-1.30-11.el7.noarch
spice-glib-0.33-6.el7.ppc64le
augeas-libs-1.4.0-2.el7.ppc64le
openlmi-providers-0.5.0-4.el7.ppc64le
gnome-color-manager-3.22.2-1.el7.ppc64le
imsettings-libs-1.6.3-9.el7.ppc64le
nss-softokn-devel-3.28.3-6.el7.ppc64le
python34-3.4.5-4.el7.ppc64le
perl-DBI-1.627-4.el7.ppc64le
plymouth-plugin-label-0.8.9-0.28.20140113.el7.centos.ppc64le
binutils-2.25.1-31.base.el7.ppc64le
libsss_nss_idmap-1.15.2-50.el7.ppc64le
gvfs-smb-1.30.4-3.el7.ppc64le
freetype-devel-2.4.11-15.el7.ppc64le
libXi-1.7.9-1.el7.ppc64le
libitm-4.8.5-16.el7_4.1.ppc64le
perl-Text-Diff-1.41-5.el7.noarch
gcr-devel-3.20.0-1.el7.ppc64le
numactl-libs-2.0.9-6.el7_2.ppc64le
hardlink-1.0-19.el7.ppc64le
gnome-disk-utility-3.22.1-1.el7.ppc64le
mariadb-libs-5.5.56-2.el7.ppc64le
libnotify-0.7.7-1.el7.ppc64le
perl-TimeDate-2.30-2.el7.noarch
soprano-devel-2.9.2-3.el7.ppc64le
pixman-0.34.0-1.el7.ppc64le
kmod-20-15.el7.ppc64le
qt3-PostgreSQL-3.3.8b-51.el7.ppc64le
python2-pyasn1-0.1.9-7.el7.noarch
libXt-1.1.5-3.el7.ppc64le
perl-Font-AFM-1.20-13.el7.noarch
ibus-1.5.3-13.el7.ppc64le
findutils-4.5.11-5.el7.ppc64le
ibus-libs-1.5.3-13.el7.ppc64le
iprutils-2.4.14.1-1.el7.ppc64le
libpwquality-1.2.3-4.el7.ppc64le
libXrender-devel-0.9.10-1.el7.ppc64le
perl-IO-stringy-2.110-22.el7.noarch
kdelibs-4.14.8-6.el7_3.ppc64le
flac-libs-1.3.0-5.el7_1.ppc64le
device-mapper-event-libs-1.02.140-8.el7.ppc64le
gnutls-devel-3.3.26-9.el7.ppc64le
libXau-devel-1.0.8-2.1.el7.ppc64le
gstreamer1-plugins-base-1.10.4-1.el7.ppc64le
perl-HTML-Tree-5.03-2.el7.noarch
kdenetwork-kopete-4.10.5-8.el7_0.ppc64le
libepoxy-1.3.1-1.el7.ppc64le
mesa-libGLES-17.0.1-6.20170307.el7.ppc64le
qt-postgresql-4.8.5-13.el7.ppc64le
fontconfig-devel-2.10.95-11.el7.ppc64le
java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.ppc64le
libXfont-1.5.2-1.el7.ppc64le
libkexiv2-4.10.5-3.el7.ppc64le
openjpeg-libs-1.5.1-17.el7.ppc64le
iscsi-initiator-utils-6.2.0.874-4.el7.ppc64le
NetworkManager-adsl-1.8.0-9.el7.ppc64le
libgtop2-2.34.2-1.el7.ppc64le
libXdamage-devel-1.1.4-4.1.el7.ppc64le
ipset-libs-6.29-1.el7.ppc64le
kde-runtime-drkonqi-4.10.5-8.el7.ppc64le
e2fsprogs-libs-1.42.9-10.el7.ppc64le
dhclient-4.2.5-58.el7.centos.ppc64le
usbutils-007-5.el7.ppc64le
python-ethtool-0.8-5.el7.ppc64le
gstreamer1-plugins-bad-free-1.10.4-2.el7.ppc64le
fftw-libs-double-3.3.3-8.el7.ppc64le
kdenetwork-krdc-4.10.5-8.el7_0.ppc64le
fuse-libs-2.9.2-8.el7.ppc64le
pciutils-3.5.1-2.el7.ppc64le
at-3.1.13-22.el7.ppc64le
python-IPy-0.75-6.el7.noarch
libXp-1.0.2-2.1.el7.ppc64le
vim-minimal-7.4.160-2.el7.ppc64le
kdesdk-kmtrace-4.10.5-6.el7.ppc64le
libraw1394-2.1.0-2.el7.ppc64le
libdrm-devel-2.4.74-1.el7.ppc64le
irqbalance-1.0.7-10.el7.ppc64le
fipscheck-lib-1.4.1-6.el7.ppc64le
gvfs-1.30.4-3.el7.ppc64le
libiscsi-1.9.0-7.el7.ppc64le
motif-2.3.4-8.1.el7_3.ppc64le
keyutils-1.5.8-3.el7.ppc64le
NetworkManager-ppp-1.8.0-9.el7.ppc64le
systemtap-3.1-3.el7.ppc64le
boost-serialization-1.53.0-27.el7.ppc64le
grilo-0.3.3-1.el7.ppc64le
rpm-4.11.3-25.el7.ppc64le
kdegraphics-libs-4.10.5-3.el7.noarch
libfontenc-1.1.3-3.el7.ppc64le
perl-Git-1.8.3.1-11.el7.noarch
rubygem-abrt-0.3.0-1.el7.noarch
tcl-8.5.13-8.el7.ppc64le
gtksourceview3-3.22.2-1.el7.ppc64le
cmake-2.8.12.2-2.el7.ppc64le
pulseaudio-utils-10.0-3.el7.ppc64le
libusal-1.1.11-23.el7.ppc64le
grub2-ppc64le-2.02-0.64.el7.centos.ppc64le
libreport-plugin-mailx-2.1.11-38.el7.centos.ppc64le
libvisual-0.4.0-16.el7.ppc64le
metacity-2.34.13-7.el7.ppc64le
redland-virtuoso-1.0.16-6.el7.ppc64le
nautilus-3.22.3-3.el7.ppc64le
pciutils-libs-3.5.1-2.el7.ppc64le
soprano-2.9.2-3.el7.ppc64le
mariadb-devel-5.5.56-2.el7.ppc64le
libxkbcommon-x11-0.7.1-1.el7.ppc64le
farstream02-0.2.3-3.el7.ppc64le
redhat-rpm-config-9.1.0-76.el7.centos.noarch
skkdic-20130104-6.T1435.el7.noarch
perl-HTTP-Tiny-0.033-3.el7.noarch
lvm2-libs-2.02.171-8.el7.ppc64le
perl-XML-Grove-0.46alpha-52.el7.noarch
boost-devel-1.53.0-27.el7.ppc64le
pycairo-1.8.10-8.el7.ppc64le
popt-devel-1.13-16.el7.ppc64le
gnome-settings-daemon-3.22.2-5.el7.ppc64le
perl-Socket-2.010-4.el7.ppc64le
numad-0.5-17.20150602git.el7.ppc64le
e2fsprogs-devel-1.42.9-10.el7.ppc64le
libsecret-devel-0.18.5-2.el7.ppc64le
libXv-devel-1.0.11-1.el7.ppc64le
libchewing-0.3.4-6.el7.ppc64le
gnome-shell-extension-places-menu-3.22.2-10.el7.noarch
perl-Time-HiRes-1.9725-3.el7.ppc64le
openchange-2.3-2.el7.ppc64le
audit-libs-devel-2.7.6-3.el7.ppc64le
python-dmidecode-3.12.2-1.el7.ppc64le
libmediaart-1.9.1-1.el7.ppc64le
elfutils-default-yama-scope-0.168-8.el7.noarch
quota-4.01-14.el7.ppc64le
perl-threads-1.87-4.el7.ppc64le
realmd-0.16.1-9.el7.ppc64le
nautilus-sendto-3.8.4-1.el7.ppc64le
gstreamer-0.10.36-7.el7.ppc64le
cairo-gobject-devel-1.14.8-2.el7.ppc64le
abrt-libs-2.1.11-48.el7.centos.ppc64le
libvirt-daemon-driver-storage-iscsi-3.2.0-14.el7.ppc64le
perl-Pod-Parser-1.61-2.el7.noarch
python-devel-2.7.5-58.el7.ppc64le
mpfr-devel-3.1.1-4.el7.ppc64le
kernel-headers-3.10.0-693.el7.ppc64le
powerpc-utils-python-1.2.1-9.el7.noarch
linux-firmware-20170606-56.gitc990aae.el7.noarch
libqmi-1.16.0-1.el7.ppc64le
libvirt-libs-3.2.0-14.el7.ppc64le
perl-Digest-1.17-245.el7.noarch
libgcab1-0.7-3.el7.ppc64le
flex-2.5.37-3.el7.ppc64le
tzdata-2017b-1.el7.noarch
phonon-4.6.0-10.el7.ppc64le
anaconda-tui-21.48.22.121-1.el7.centos.ppc64le
libmbim-utils-1.14.0-2.el7.ppc64le
gnutls-utils-3.3.26-9.el7.ppc64le
perl-Parse-CPAN-Meta-1.4404-5.el7.noarch
flite-1.3-22.el7.ppc64le
nfs4-acl-tools-0.3.3-15.el7.ppc64le
poppler-data-0.4.6-3.el7.noarch
gvfs-fuse-1.30.4-3.el7.ppc64le
gnome-software-3.22.7-1.el7.ppc64le
perl-ExtUtils-ParseXS-3.18-3.el7.noarch
libvirt-python-3.2.0-3.el7.ppc64le
perl-Module-Load-Conditional-0.54-3.el7.noarch
python-netifaces-0.10.4-3.el7.ppc64le
swig-2.0.10-5.el7.ppc64le
ipa-client-common-4.5.0-20.el7.centos.noarch
cheese-libs-3.22.1-1.el7.ppc64le
gnome-tweak-tool-3.22.0-1.el7.noarch
perl-ExtUtils-CBuilder-0.28.2.6-292.el7.noarch
libsoup-devel-2.56.0-3.el7.ppc64le
perl-IO-Zlib-1.10-292.el7.noarch
fros-1.0-2.el7.noarch
lohit-devanagari-fonts-2.5.3-4.el7.noarch
grub2-ppc64le-modules-2.02-0.64.el7.centos.noarch
libgdata-0.17.8-1.el7.ppc64le
evince-nautilus-3.22.1-5.el7.ppc64le
perl-ExtUtils-Embed-1.30-292.el7.noarch
dleyna-connector-dbus-0.2.0-2.el7.ppc64le
libiec61883-1.2.0-10.el7.ppc64le
python-lxml-3.2.1-4.el7.ppc64le
liberation-serif-fonts-1.07.2-15.el7.noarch
tigervnc-license-1.8.0-1.el7.noarch
gnome-packagekit-3.22.1-2.el7.ppc64le
hpijs-3.15.9-3.el7.ppc64le
libmodman-2.0.1-8.el7.ppc64le
ntp-4.2.6p5-25.el7.centos.2.ppc64le
gmp-devel-6.0.0-15.el7.ppc64le
pyxattr-0.5.1-5.el7.ppc64le
sil-abyssinica-fonts-1.200-6.el7.noarch
ncurses-libs-5.9-13.20130511.el7.ppc64le
gnome-dictionary-libs-3.20.0-1.el7.ppc64le
kdesdk-devel-4.10.5-6.el7.ppc64le
libreport-rhel-anaconda-bugzilla-2.1.11-38.el7.centos.ppc64le
libvirt-daemon-config-network-3.2.0-14.el7.ppc64le
boost-iostreams-1.53.0-27.el7.ppc64le
python-ply-3.4-11.el7.noarch
ucs-miscfixed-fonts-0.3-11.el7.noarch
info-5.1-4.el7.ppc64le
libXxf86misc-devel-1.0.3-7.1.el7.ppc64le
ibus-qt-1.3.2-4.el7.ppc64le
gnome-video-effects-0.4.3-1.el7.noarch
bridge-utils-1.5-9.el7.ppc64le
make-3.82-23.el7.ppc64le
pywbem-0.7.0-25.20130827svn625.el7.noarch
pnm2ppa-1.04-28.el7.ppc64le
chkconfig-1.7.4-1.el7.ppc64le
at-spi2-atk-devel-2.22.0-2.el7.ppc64le
freeglut-devel-2.8.1-3.el7.ppc64le
jbigkit-libs-2.0-11.el7.ppc64le
sssd-ipa-1.15.2-50.el7.ppc64le
openssl-libs-1.0.2k-8.el7.ppc64le
ldns-1.6.16-10.el7.ppc64le
rdate-1.4-25.el7.ppc64le
libdb-5.3.21-20.el7.ppc64le
evince-libs-3.22.1-5.el7.ppc64le
empathy-3.12.12-4.el7.ppc64le
rubygem-json-1.7.7-30.el7.ppc64le
dmraid-1.0.0.rc16-28.el7.ppc64le
libblkid-2.23.2-43.el7.ppc64le
logrotate-3.8.6-14.el7.ppc64le
iwl105-firmware-18.168.6.1-56.el7.noarch
grep-2.20-3.el7.ppc64le
xorg-x11-drv-synaptics-1.9.0-1.el7.ppc64le
iowatcher-1.0-6.el7.ppc64le
rubygem-net-http-persistent-2.8-5.el7.noarch
setroubleshoot-plugins-3.0.65-1.el7.noarch
atk-2.22.0-3.el7.ppc64le
libcacard-2.5.2-2.el7.ppc64le
iwl6050-firmware-41.28.5.1-56.el7.noarch
lcms2-2.6-3.el7.ppc64le
tigervnc-server-minimal-1.8.0-1.el7.ppc64le
gvfs-goa-1.30.4-3.el7.ppc64le
authconfig-6.2.8-30.el7.ppc64le
yum-plugin-fastestmirror-1.1.31-42.el7.noarch
dbus-python-1.1.1-9.el7.ppc64le
perl-Archive-Tar-1.92-2.el7.noarch
iwl5000-firmware-8.83.5.1_1-56.el7.noarch
libacl-2.2.51-12.el7.ppc64le
farstream-0.1.2-8.el7.ppc64le
ppc64-utils-0.14-16.el7.ppc64le
servicelog-1.1.14-3.el7.ppc64le
python2-ipaclient-4.5.0-20.el7.centos.noarch
libpeas-1.20.0-1.el7.ppc64le
perl-TermReadKey-2.30-20.el7.ppc64le
hdparm-9.43-5.el7.ppc64le
libicu-50.1.2-15.el7.ppc64le
polkit-qt-0.103.0-10.el7_0.ppc64le
gnome-weather-3.20.2-1.el7.noarch
libmspack-0.5-0.5.alpha.el7.ppc64le
libkkc-data-0.3.1-9.el7.ppc64le
hicolor-icon-theme-0.12-7.el7.noarch
perl-Newt-1.08-36.el7.ppc64le
libstdc++-devel-4.8.5-16.el7_4.1.ppc64le
libexif-0.6.21-6.el7.ppc64le
gtk3-devel-3.22.10-4.el7.ppc64le
gvfs-mtp-1.30.4-3.el7.ppc64le
ncompress-4.2.4.4-3.el7.ppc64le
libXcomposite-0.4.4-4.1.el7.ppc64le
python-decorator-3.4.0-3.el7.noarch
perl-Business-ISBN-Data-20120719.001-2.el7.noarch
gcc-gfortran-4.8.5-16.el7_4.1.ppc64le
cpio-2.11-24.el7.ppc64le
mesa-libGLU-9.0.0-4.el7.ppc64le
baobab-3.22.1-1.el7.ppc64le
device-mapper-libs-1.02.140-8.el7.ppc64le
libXtst-1.2.3-1.el7.ppc64le
ModemManager-glib-1.6.0-2.el7.ppc64le
perl-HTML-Parser-3.71-4.el7.ppc64le
libical-1.0.1-1.el7.ppc64le
xorg-x11-xinit-1.3.4-1.el7.ppc64le
gstreamer1-plugins-base-devel-1.10.4-1.el7.ppc64le
libdrm-2.4.74-1.el7.ppc64le
libXfixes-devel-5.0.3-1.el7.ppc64le
python-gssapi-1.2.0-3.el7.ppc64le
perl-Text-Unidecode-0.04-20.el7.noarch
hunspell-1.3.2-15.el7.ppc64le
kde-settings-19-23.5.el7.centos.noarch
perl-App-cpanminus-1.6922-2.el7.noarch
parted-3.1-28.el7.ppc64le
mesa-libGL-17.0.1-6.20170307.el7.ppc64le
elfutils-libelf-devel-0.168-8.el7.ppc64le
perl-Net-LibIDN-0.12-15.el7.ppc64le
apr-1.4.8-3.el7.ppc64le
kdepimlibs-4.10.5-4.el7.ppc64le
virt-top-1.0.8-23.el7.ppc64le
samba-client-libs-4.6.2-8.el7.ppc64le
gstreamer-plugins-base-0.10.36-10.el7.ppc64le
json-glib-devel-1.2.6-1.el7.ppc64le
perl-autodie-2.16-2.el7.noarch
tar-1.26-32.el7.ppc64le
ksysguard-libs-4.11.19-8.el7.ppc64le
rdma-core-devel-13-7.el7.ppc64le
accountsservice-0.6.45-2.el7.ppc64le
libxklavier-5.4-7.el7.ppc64le
libxml2-devel-2.9.1-6.el7_2.3.ppc64le
ghostscript-fonts-5.50-32.el7.noarch
libassuan-2.1.0-3.el7.ppc64le
libkipi-devel-4.10.5-3.el7.ppc64le
python-smbc-1.0.13-7.el7.ppc64le
initscripts-9.49.39-1.el7.ppc64le
qt3-3.3.8b-51.el7.ppc64le
yum-metadata-parser-1.1.4-10.el7.ppc64le
device-mapper-persistent-data-0.7.0-0.1.rc6.el7.ppc64le
adwaita-icon-theme-3.22.0-1.el7.noarch
kdepim-4.10.5-6.el7.ppc64le
postfix-2.10.1-6.el7.ppc64le
abrt-addon-pstoreoops-2.1.11-48.el7.centos.ppc64le
freerdp-libs-1.0.2-10.el7.ppc64le
langtable-python-0.0.31-3.el7.noarch
tcp_wrappers-7.6-77.el7.ppc64le
lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.ppc64le
kde-style-oxygen-4.11.19-8.el7.ppc64le
powertop-2.3-12.el7.ppc64le
wpa_supplicant-2.6-5.el7.ppc64le
gtk3-3.22.10-4.el7.ppc64le
boost-python-1.53.0-27.el7.ppc64le
keyutils-libs-devel-1.5.8-3.el7.ppc64le
libdvdread-5.0.3-3.el7.ppc64le
im-chooser-common-1.6.4-4.el7.ppc64le
aic94xx-firmware-30-6.el7.noarch
media-player-info-17-4.el7.noarch
compat-gnome-desktop314-3.14.2-1.el7.ppc64le
harfbuzz-1.3.2-1.el7.ppc64le
libgcrypt-devel-1.5.3-14.el7.ppc64le
groff-base-1.22.2-8.el7.ppc64le
sane-backends-1.0.24-9.el7.ppc64le
setuptool-1.19.11-8.el7.ppc64le
ebtables-2.0.10-15.el7.ppc64le
libchamplain-0.12.15-1.el7.ppc64le
boost-math-1.53.0-27.el7.ppc64le
libuser-0.60-7.el7_1.ppc64le
boost-date-time-1.53.0-27.el7.ppc64le
espeak-1.47.11-4.el7.ppc64le
tbb-devel-4.1-9.20130314.el7.ppc64le
grub2-tools-minimal-2.02-0.64.el7.centos.ppc64le
gjs-1.46.0-1.el7.ppc64le
libsss_autofs-1.15.2-50.el7.ppc64le
deltarpm-3.6-3.el7.ppc64le
libnl-1.1.4-3.el7.ppc64le
libgpod-0.8.2-12.el7.ppc64le
postgresql-devel-9.2.21-1.el7.ppc64le
libibcm-13-7.el7.ppc64le
abrt-gui-libs-2.1.11-48.el7.centos.ppc64le
libxkbcommon-0.7.1-1.el7.ppc64le
passwd-0.79-4.el7.ppc64le
lsvpd-1.7.8-1.el7.ppc64le
fprintd-0.5.0-4.0.el7_0.ppc64le
hunspell-en-0.20121024-6.el7.noarch
qca-ossl-2.0.0-0.19.beta3.el7.ppc64le
libdmapsharing-2.9.37-1.el7.ppc64le
ortp-0.20.0-10.el7.ppc64le
python-pycurl-7.19.0-19.el7.ppc64le
perl-Pod-Escapes-1.04-292.el7.noarch
pcp-3.11.8-7.el7.ppc64le
libblkid-devel-2.23.2-43.el7.ppc64le
dracut-network-033-502.el7.ppc64le
pyatspi-2.20.3-1.el7.noarch
systemtap-sdt-devel-3.1-3.el7.ppc64le
check-0.9.9-5.el7.ppc64le
perl-threads-shared-1.43-6.el7.ppc64le
gnome-shell-extension-common-3.22.2-10.el7.noarch
gnome-icon-theme-symbolic-3.12.0-2.el7.noarch
abrt-cli-2.1.11-48.el7.centos.ppc64le
festival-speechtools-libs-1.2.96-28.el7.ppc64le
python-slip-dbus-0.4.0-2.el7.noarch
mesa-private-llvm-3.9.1-3.el7.ppc64le
perl-Time-Local-1.2300-2.el7.noarch
yelp-3.22.0-1.el7.ppc64le
fuse-devel-2.9.2-8.el7.ppc64le
dnsmasq-2.76-2.el7.ppc64le
festvox-slt-arctic-hts-0.20061229-28.el7.noarch
libtasn1-devel-4.10-1.el7.ppc64le
libgudev1-219-42.el7.ppc64le
perl-version-0.99.07-2.el7.ppc64le
libvirt-daemon-driver-qemu-3.2.0-14.el7.ppc64le
ps_mem-3.1-7.el7.noarch
rtkit-0.11-10.el7.ppc64le
abrt-gui-2.1.11-48.el7.centos.ppc64le
nettle-devel-2.7.1-8.el7.ppc64le
perl-ExtUtils-Manifest-1.61-244.el7.noarch
libreswan-3.20-3.el7.ppc64le
python-pyudev-0.15-9.el7.noarch
appstream-data-7-20170301.el7.noarch
powerpc-utils-1.3.3-4.el7.ppc64le
setup-2.8.71-7.el7.noarch
enscript-1.6.6-6.el7.ppc64le
libgexiv2-0.10.4-2.el7.ppc64le
perl-Digest-SHA-5.85-4.el7.ppc64le
upower-0.99.4-2.el7.ppc64le
dhcp-libs-4.2.5-58.el7.centos.ppc64le
kbd-1.15.5-13.el7.ppc64le
phonon-backend-gstreamer-4.6.3-3.el7.ppc64le
dejavu-fonts-common-2.33-6.el7.noarch
libaio-devel-0.3.109-13.el7.ppc64le
grubby-8.28-23.el7.ppc64le
perl-CPAN-Meta-2.120921-5.el7.noarch
libmusicbrainz5-5.0.1-9.el7.ppc64le
liberation-mono-fonts-1.07.2-15.el7.noarch
fcoe-utils-1.0.32-1.el7.ppc64le
gvfs-afc-1.30.4-3.el7.ppc64le
m17n-db-1.6.4-3.el7.noarch
time-1.7-45.el7.ppc64le
python-configobj-4.7.2-7.el7.noarch
perl-Log-Message-0.08-3.el7.noarch
glib-networking-2.50.0-1.el7.ppc64le
gnome-classic-session-3.22.2-10.el7.noarch
libglade2-2.6.4-11.el7.ppc64le
langtable-data-0.0.31-3.el7.noarch
dejavu-serif-fonts-2.33-6.el7.noarch
python-requests-2.6.0-1.el7_1.noarch
perl-HTML-Tagset-3.20-15.el7.noarch
gssdp-1.0.1-1.el7.ppc64le
perl-CPANPLUS-Dist-Build-0.70-3.el7.noarch
brasero-nautilus-3.12.1-2.el7.ppc64le
evolution-data-server-3.22.7-6.el7.ppc64le
khmeros-fonts-common-5.0-17.el7.noarch
dejavu-sans-fonts-2.33-6.el7.noarch
python-kmod-0.9-4.el7.ppc64le
lzop-1.03-10.el7.ppc64le
telepathy-salut-0.8.1-6.el7.ppc64le
tbb-4.1-9.20130314.el7.ppc64le
kdegraphics-devel-4.10.5-3.el7.noarch
libcryptui-3.12.2-1.el7.ppc64le
ncurses-base-5.9-13.20130511.el7.noarch
lohit-nepali-fonts-2.5.3-2.el7.noarch
python-configshell-1.1.fb23-3.el7.noarch
acl-2.2.51-12.el7.ppc64le
python-rtslib-2.1.fb63-2.el7.noarch
libreport-plugin-rhtsupport-2.1.11-38.el7.centos.ppc64le
imsettings-qt-1.6.3-9.el7.ppc64le
webkitgtk3-2.4.11-2.el7.ppc64le
libsepol-2.5-6.el7.ppc64le
smc-meera-fonts-6.0-7.el7.noarch
python-mako-0.8.1-2.el7.noarch
pinentry-0.8.1-17.el7.ppc64le
alsa-tools-firmware-1.1.0-1.el7.ppc64le
libgdither-0.6-8.el7.ppc64le
ibus-libpinyin-1.6.91-4.el7.ppc64le
libXp-devel-1.0.2-2.1.el7.ppc64le
nspr-4.13.1-1.0.el7_3.ppc64le
cscope-15.8-10.el7.ppc64le
m2crypto-0.21.1-17.el7.ppc64le
libatomic-4.8.5-16.el7.ppc64le
opencc-0.4.3-3.el7.ppc64le
sbc-1.0-5.el7.ppc64le
SDL-devel-1.2.15-14.el7.ppc64le
vorbis-tools-1.4.0-12.el7.ppc64le
bzip2-libs-1.0.6-13.el7.ppc64le
google-crosextra-carlito-fonts-1.103-0.2.20130920.el7.noarch
nmap-ncat-6.40-7.el7.ppc64le
krb5-libs-1.15.1-8.el7.ppc64le
sssd-krb5-1.15.2-50.el7.ppc64le
cups-filters-libs-1.0.35-22.el7.ppc64le
virt-manager-1.4.1-7.el7.noarch
evince-3.22.1-5.el7.ppc64le
readline-6.2-10.el7.ppc64le
ctags-5.8-13.el7.ppc64le
sound-theme-freedesktop-0.8-3.el7.noarch
ruby-libs-2.0.0.648-30.el7.ppc64le
pth-2.0.7-23.el7.ppc64le
rubygems-2.0.14.1-30.el7.noarch
gnome-dictionary-3.20.0-1.el7.ppc64le
xorg-x11-drv-evdev-2.10.5-2.1.el7.ppc64le
audit-libs-2.7.6-3.el7.ppc64le
iwl135-firmware-18.168.6.1-56.el7.noarch
python-nss-0.16.0-3.el7.ppc64le
json-glib-1.2.6-1.el7.ppc64le
flatpak-libs-0.8.7-1.el7.ppc64le
libutempter-1.1.6-4.el7.ppc64le
ekiga-4.0.1-7.el7.ppc64le
easymock2-2.5.2-12.el7.noarch
keyutils-libs-1.5.8-3.el7.ppc64le
iwl1000-firmware-39.31.5.1-56.el7.noarch
teamd-1.25-5.el7.ppc64le
telepathy-glib-0.24.0-1.el7.ppc64le
PackageKit-yum-1.1.5-1.el7.centos.ppc64le
virt-what-1.13-10.el7.ppc64le
ppc64-diag-2.7.3-3.el7.ppc64le
libpurple-2.10.11-5.el7.ppc64le
libffi-3.0.13-18.el7.ppc64le
iwl2000-firmware-18.168.6.1-56.el7.noarch
perl-YAML-0.84-5.el7.noarch
libxml2-python-2.9.1-6.el7_2.3.ppc64le
lsscsi-0.27-6.el7.ppc64le
systemtap-client-3.1-3.el7.ppc64le
virt-viewer-5.0-7.el7.ppc64le
dbusmenu-qt-0.9.2-7.el7.ppc64le
libtar-1.2.11-29.el7.ppc64le
ccache-3.3.4-1.el7.ppc64le
perl-DBD-SQLite-1.39-3.el7.ppc64le
gnome-icon-theme-3.12.0-1.el7.noarch
gdk-pixbuf2-2.36.5-1.el7.ppc64le
libpath_utils-0.2.1-27.el7.ppc64le
gvfs-archive-1.30.4-3.el7.ppc64le
gnome-online-accounts-devel-3.22.5-1.el7.ppc64le
yajl-2.0.4-4.el7.ppc64le
gcc-4.8.5-16.el7_4.1.ppc64le
perl-Pod-Coverage-0.23-3.el7.noarch
libselinux-python-2.5-11.el7.ppc64le
libX11-devel-1.6.5-1.el7.ppc64le
qrencode-libs-3.4.1-3.el7.ppc64le
gnome-system-log-3.9.90-3.el7.ppc64le
mesa-libGLU-devel-9.0.0-4.el7.ppc64le
boost-system-1.53.0-27.el7.ppc64le
perl-HTTP-Message-6.06-6.el7.noarch
cracklib-2.9.0-11.el7.ppc64le
libXcursor-1.1.14-8.el7.ppc64le
dbus-1.6.12-17.el7.ppc64le
libnotify-devel-0.7.7-1.el7.ppc64le
ibus-gtk3-1.5.3-13.el7.ppc64le
libv4l-0.9.5-4.el7.ppc64le
perl-Time-Piece-1.20.1-292.el7.ppc64le
cracklib-dicts-2.9.0-11.el7.ppc64le
startup-notification-0.12-8.el7.ppc64le
dconf-0.26.0-2.el7.ppc64le
net-snmp-devel-5.7.2-28.el7.ppc64le
kate-part-4.10.5-4.el7.ppc64le
orc-0.4.26-1.el7.ppc64le
kernel-devel-3.10.0-693.el7.ppc64le
avahi-gobject-0.6.31-17.el7.ppc64le
cairo-gobject-1.14.8-2.el7.ppc64le
httpd-2.4.6-67.el7.centos.ppc64le
subversion-1.7.14-10.el7.ppc64le
kdepimlibs-akonadi-4.10.5-4.el7.ppc64le
gdbm-1.10-8.el7.ppc64le
perl-File-CheckTree-4.42-3.el7.noarch
atk-devel-2.22.0-3.el7.ppc64le
java-1.8.0-openjdk-devel-1.8.0.131-11.b12.el7.ppc64le
abrt-dbus-2.1.11-48.el7.centos.ppc64le
qt-mysql-4.8.5-13.el7.ppc64le
libkdcraw-4.10.5-4.el7.ppc64le
libaio-0.3.109-13.el7.ppc64le
urw-fonts-2.4-16.el7.noarch
libgee06-0.6.8-3.el7.ppc64le
libXrandr-devel-1.5.1-2.el7.ppc64le
cronie-anacron-1.4.11-17.el7.ppc64le
mlocate-0.26-6.el7.ppc64le
kdesdk-okteta-devel-4.10.5-6.el7.ppc64le
iso-codes-3.46-2.el7.noarch
e2fsprogs-1.42.9-10.el7.ppc64le
at-spi2-atk-2.22.0-2.el7.ppc64le
libstoragemgmt-python-clibs-1.4.0-3.el7.ppc64le
PackageKit-command-not-found-1.1.5-1.el7.centos.ppc64le
kdenetwork-kopete-devel-4.10.5-8.el7_0.ppc64le
libmnl-1.0.3-7.el7.ppc64le
tcp_wrappers-devel-7.6-77.el7.ppc64le
python-dns-1.12.0-4.20150617git465785f.el7.noarch
libXinerama-devel-1.1.3-2.1.el7.ppc64le
libibverbs-13-7.el7.ppc64le
net-tools-2.0-0.22.20131004git.el7.ppc64le
kde-workspace-libs-4.11.19-8.el7.ppc64le
libwebp-0.3.0-7.el7.ppc64le
libattr-devel-2.4.46-12.el7.ppc64le
libkadm5-1.15.1-8.el7.ppc64le
gcr-3.20.0-1.el7.ppc64le
colord-1.3.4-1.el7.ppc64le
rsyslog-8.24.0-12.el7.ppc64le
im-chooser-1.6.4-4.el7.ppc64le
boost-filesystem-1.53.0-27.el7.ppc64le
libgpg-error-devel-1.12-3.el7.ppc64le
harfbuzz-icu-1.3.2-1.el7.ppc64le
libpeas-gtk-1.20.0-1.el7.ppc64le
abrt-addon-python-2.1.11-48.el7.centos.ppc64le
selinux-policy-targeted-3.13.1-166.el7.noarch
libksane-4.10.5-4.el7.ppc64le
m4-1.4.16-10.el7.ppc64le
xmlrpc-c-client-1.32.5-1905.svn2451.el7.ppc64le
sysvinit-tools-2.88-14.dsf.el7.ppc64le
libnma-1.8.0-3.el7.ppc64le
os-prober-1.58-9.el7.ppc64le
libproxy-mozjs-0.4.11-10.el7.ppc64le
speech-dispatcher-0.7.1-15.el7.ppc64le
boost-signals-1.53.0-27.el7.ppc64le
python-ldap-2.4.15-2.el7.ppc64le
libvpx-1.3.0-5.el7_0.ppc64le
nm-connection-editor-1.8.0-3.el7.ppc64le
NetworkManager-team-1.8.0-9.el7.ppc64le
perf-3.10.0-693.el7.ppc64le
libgsf-1.14.26-7.el7.ppc64le
libpfm-4.7.0-4.el7.ppc64le
postgresql-9.2.21-1.el7.ppc64le
ethtool-4.8-1.el7.ppc64le
xorg-x11-server-utils-7.7-20.el7.ppc64le
attica-0.4.2-1.el7.ppc64le
xfsdump-3.1.4-1.el7.ppc64le
firewalld-filesystem-0.4.4.4-6.el7.noarch
libXfont2-2.0.1-2.el7.ppc64le
net-snmp-agent-libs-5.7.2-28.el7.ppc64le
tcl-devel-8.5.13-8.el7.ppc64le
libgxps-0.2.5-1.el7.ppc64le
cyrus-sasl-devel-2.1.26-21.el7.ppc64le
hmaccalc-0.9.13-4.el7.ppc64le
libwacom-data-0.24-1.el7.noarch
perl-Pod-Usage-1.63-3.el7.noarch
python-yubico-1.2.3-1.el7.noarch
libXxf86vm-devel-1.1.4-1.el7.ppc64le
abrt-tui-2.1.11-48.el7.centos.ppc64le
pinfo-0.6.10-9.el7.ppc64le
gnome-shell-extension-user-theme-3.22.2-10.el7.noarch
perl-File-Path-2.09-2.el7.noarch
xorg-x11-fonts-Type1-7.5-9.el7.noarch
python-firewall-0.4.4.4-6.el7.noarch
libXres-1.0.7-2.1.el7.ppc64le
libcgroup-tools-0.41-13.el7.ppc64le
libnl-devel-1.1.4-3.el7.ppc64le
gnome-user-docs-3.22.0-1.el7.noarch
perl-Pod-Simple-3.28-4.el7.noarch
systemd-libs-219-42.el7.ppc64le
ncurses-devel-5.9-13.20130511.el7.ppc64le
mesa-libEGL-devel-17.0.1-6.20170307.el7.ppc64le
audit-2.7.6-3.el7.ppc64le
iotop-0.6-2.el7.noarch
libvirt-daemon-driver-storage-logical-3.2.0-14.el7.ppc64le
perl-Module-CoreList-2.76.02-292.el7.noarch
libmbim-1.14.0-2.el7.ppc64le
xdg-desktop-portal-0.5-2.el7.ppc64le
perl-Module-Load-0.24-3.el7.noarch
caribou-gtk3-module-0.4.21-1.el7.ppc64le
sqlite-devel-3.7.17-8.el7.ppc64le
centos-indexhtml-7-9.el7.centos.noarch
elfutils-0.168-8.el7.ppc64le
centos-release-7-4.1708.el7.centos.ppc64le
trousers-0.3.14-2.el7.ppc64le
perl-Thread-Queue-3.02-2.el7.noarch
python-meh-gui-0.25.2-1.el7.noarch
gom-0.3.2-1.el7.ppc64le
lldpad-1.0.1-3.git036e314.el7.ppc64le
libgusb-0.2.9-1.el7.ppc64le
liberation-fonts-common-1.07.2-15.el7.noarch
libimobiledevice-1.2.0-1.el7.ppc64le
perl-Module-Pluggable-4.8-3.el7.noarch
ghostscript-cups-9.07-28.el7.ppc64le
osinfo-db-tools-1.1.0-1.el7.ppc64le
kbd-misc-1.15.5-13.el7.noarch
dhcp-common-4.2.5-58.el7.centos.ppc64le
control-center-filesystem-3.22.2-5.el7.ppc64le
libvirt-glib-1.0.0-1.el7.ppc64le
perl-CPAN-Meta-Requirements-2.122-7.el7.noarch
PyQt4-4.10.1-13.el7.ppc64le
btrfs-progs-4.9.1-1.el7.ppc64le
anaconda-gui-21.48.22.121-1.el7.centos.ppc64le
libatasmart-0.19-6.el7.ppc64le
shared-desktop-ontologies-0.11.0-2.el7.noarch
libvirt-daemon-config-nwfilter-3.2.0-14.el7.ppc64le
autoconf-2.69-11.el7.noarch
gnome-terminal-3.22.1-2.el7.ppc64le
python-cups-1.9.63-6.el7.ppc64le
intltool-0.50.2-7.el7.noarch
glibc-headers-2.17-196.el7.ppc64le
kdesdk-common-4.10.5-6.el7.noarch
libvirt-daemon-driver-secret-3.2.0-14.el7.ppc64le
perl-Locale-Maketext-Simple-0.21-292.el7.noarch
gnome-keyring-3.20.0-3.el7.ppc64le
python-sss-murmur-1.15.2-50.el7.ppc64le
vim-enhanced-7.4.160-2.el7.ppc64le
perl-ExtUtils-MakeMaker-6.68-3.el7.noarch
emacs-filesystem-24.3-19.el7_3.noarch
libvncserver-0.9.9-9.el7_0.1.ppc64le
perl-Object-Accessor-0.42-292.el7.noarch
gnome-desktop3-3.22.2-2.el7.ppc64le
python-backports-1.0-8.el7.ppc64le
evolution-help-3.22.6-10.el7.noarch
systemtap-devel-3.1-3.el7.ppc64le
langtable-0.0.31-3.el7.noarch
geocode-glib-3.20.1-1.el7.ppc64le
perl-Compress-Raw-Bzip2-2.061-3.el7.ppc64le
pygtk2-libglade-2.24.0-9.el7.ppc64le
python-urllib3-1.10.2-3.el7.noarch
orca-3.6.3-4.el7.ppc64le
perl-File-Fetch-0.42-2.el7.noarch
latencytop-common-0.5-13.el7.ppc64le
geoclue2-libs-2.4.5-1.el7.ppc64le
perl-Module-Loaded-0.08-292.el7.noarch
webkitgtk4-2.14.7-2.el7.ppc64le
python-paste-1.7.5.1-9.20111221hg1498.el7.noarch
totem-nautilus-3.22.1-1.el7.ppc64le
libtool-2.4.2-22.el7_3.ppc64le
smc-fonts-common-6.0-7.el7.noarch
libnice-0.1.3-4.el7.ppc64le
libdvdnav-5.0.3-1.el7.ppc64le
folks-0.11.3-1.el7.ppc64le
python-ipaddr-2.1.11-1.el7.noarch
xorg-x11-utils-7.5-22.el7.ppc64le
oxygen-icon-theme-4.10.5-2.el7.noarch
libkkc-common-0.3.1-9.el7.noarch
libgovirt-0.3.3-5.el7.ppc64le
boost-timer-1.53.0-27.el7.ppc64le
gnome-packagekit-common-3.22.1-2.el7.ppc64le
javapackages-tools-3.4.1-11.el7.noarch
sane-backends-devel-1.0.24-9.el7.ppc64le
konkretcmpi-0.9.1-5.el7.ppc64le
perl-srpm-macros-1-8.el7.noarch
chrony-3.1-2.el7.centos.ppc64le
fuse-2.9.2-8.el7.ppc64le
evolution-3.22.6-10.el7.ppc64le
python-urwid-1.1.1-3.el7.ppc64le
shotwell-0.24.5-1.el7.ppc64le
libreport-web-2.1.11-38.el7.centos.ppc64le
glibc-2.17-196.el7.ppc64le
usb_modeswitch-data-20160612-2.el7.noarch
patch-2.7.1-8.el7.ppc64le
file-roller-3.22.3-1.el7.ppc64le
python-netaddr-0.7.5-7.el7.noarch
ibus-table-chinese-1.4.6-3.el7.noarch
libreport-plugin-reportuploader-2.1.11-38.el7.centos.ppc64le
pcre-8.32-17.el7.ppc64le
libvirt-daemon-driver-network-3.2.0-14.el7.ppc64le
cyrus-sasl-plain-2.1.26-21.el7.ppc64le
glade-libs-3.20.0-1.el7.ppc64le
python-markupsafe-0.11-10.el7.ppc64le
kdenetwork-devel-4.10.5-8.el7_0.noarch
libreport-plugin-ureport-2.1.11-38.el7.centos.ppc64le
dbus-libs-1.6.12-17.el7.ppc64le
alsa-firmware-1.0.28-2.el7.noarch
mozjs17-17.0.0-19.el7.ppc64le
avahi-ui-gtk3-0.6.31-17.el7.ppc64le
python-cffi-1.6.0-5.el7.ppc64le
xdg-user-dirs-gtk-0.10-4.el7.ppc64le
gavl-1.4.0-4.el7.ppc64le
libjpeg-turbo-1.2.90-5.el7.ppc64le
device-mapper-multipath-0.4.9-111.el7.ppc64le
libcdio-0.92-1.el7.ppc64le
pulseaudio-module-bluetooth-10.0-3.el7.ppc64le
pytalloc-2.1.9-1.el7.ppc64le
ibus-sayura-1.3.2-3.el7.ppc64le
checkpolicy-2.5-4.el7.ppc64le
libICE-1.0.9-9.el7.ppc64le
libvirt-daemon-driver-interface-3.2.0-14.el7.ppc64le
libunistring-0.9.3-9.el7.ppc64le
libXScrnSaver-devel-1.2.2-6.1.el7.ppc64le
openlmi-python-base-0.5.0-4.el7.noarch
PyQt4-devel-4.10.1-13.el7.ppc64le
libndp-1.2-7.el7.ppc64le
libxml2-2.9.1-6.el7_2.3.ppc64le
sssd-krb5-common-1.15.2-50.el7.ppc64le
ncurses-5.9-13.20130511.el7.ppc64le
icedax-1.1.11-23.el7.ppc64le
libmsn-4.2.1-7.el7.ppc64le
evolution-data-server-devel-3.22.7-6.el7.ppc64le
poppler-0.26.5-16.el7.ppc64le
sed-4.2.2-5.el7.ppc64le
sssd-ldap-1.15.2-50.el7.ppc64le
fontconfig-2.10.95-11.el7.ppc64le
pinentry-qt-0.8.1-17.el7.ppc64le
cyrus-sasl-scram-2.1.26-21.el7.ppc64le
paps-0.6.8-28.el7.1.ppc64le
libyaml-0.1.4-11.el7_0.ppc64le
libgpg-error-1.12-3.el7.ppc64le
sgpio-1.2.0.10-13.el7.ppc64le
alsa-lib-1.1.3-3.el7.ppc64le
gutenprint-5.2.9-18.el7.ppc64le
openslp-2.0.0-6.el7.ppc64le
ruby-irb-2.0.0.648-30.el7.noarch
libgcrypt-1.5.3-14.el7.ppc64le
python-blivet-0.61.15.65-1.el7.noarch
gzip-1.5-9.el7.ppc64le
xorg-x11-drv-void-1.4.1-2.el7.ppc64le
nss-pem-1.0.3-4.el7.ppc64le
rubygem-rdoc-4.0.0-30.el7.noarch
libcap-ng-0.7.5-4.el7.ppc64le
rpm-build-libs-4.11.3-25.el7.ppc64le
shared-mime-info-1.8-3.el7.ppc64le
xorg-x11-drv-v4l-0.2.0-47.el7.ppc64le
nss-tools-3.28.4-8.el7.ppc64le
libsemanage-2.5-8.el7.ppc64le
libxcb-1.12-1.el7.ppc64le
flatpak-0.8.7-1.el7.ppc64le
gstreamer1-1.10.4-2.el7.ppc64le
xorg-x11-drv-nouveau-1.0.13-3.el7.ppc64le
sgml-common-0.6.3-39.el7.noarch
util-linux-2.23.2-43.el7.ppc64le
libtdb-1.3.12-2.el7.ppc64le
rpm-devel-4.11.3-25.el7.ppc64le
gobject-introspection-1.50.0-1.el7.ppc64le
qdox-1.12.1-10.el7.noarch
libteam-1.25-5.el7.ppc64le
openssh-clients-7.4p1-11.el7.ppc64le
libattr-2.4.46-12.el7.ppc64le
python-meh-0.25.2-1.el7.noarch
avahi-glib-0.6.31-17.el7.ppc64le
rhino-1.7R5-1.el7.noarch
perl-Pod-Checker-1.60-2.el7.noarch
rarian-0.8.1-11.el7.ppc64le
gmp-6.0.0-15.el7.ppc64le
createrepo-0.9.9-28.el7.noarch
python-gobject-base-3.22.0-1.el7.ppc64le
telepathy-haze-0.8.0-1.el7.ppc64le
perl-Version-Requirements-0.101022-244.el7.noarch
tog-pegasus-2.14.1-5.el7.ppc64le
lua-5.1.4-15.el7.ppc64le
libburn-1.2.8-4.el7.ppc64le
openssl-1.0.2k-8.el7.ppc64le
dleyna-server-0.5.0-1.el7.ppc64le
perl-IO-HTML-1.00-2.el7.noarch
libsemanage-python-2.5-8.el7.ppc64le
libidn-1.28-4.el7.ppc64le
nss-devel-3.28.4-8.el7.ppc64le
net-snmp-libs-5.7.2-28.el7.ppc64le
paps-libs-0.6.8-28.el7.1.ppc64le
perl-DBIx-Simple-1.35-7.el7.noarch
lzo-minilzo-2.06-8.el7.ppc64le
libref_array-0.1.5-27.el7.ppc64le
libX11-1.6.5-1.el7.ppc64le
xdg-utils-1.1.0-0.17.20120809git.el7.noarch
harfbuzz-devel-1.3.2-1.el7.ppc64le
perl-CGI-3.63-4.el7.noarch
libini_config-1.3.0-27.el7.ppc64le
xmlrpc-c-1.32.5-1905.svn2451.el7.ppc64le
libXfixes-5.0.3-1.el7.ppc64le
glibmm24-2.50.0-1.el7.ppc64le
webkitgtk4-devel-2.14.7-2.el7.ppc64le
perl-Devel-Symdump-2.10-2.el7.noarch
libpipeline-1.2.3-3.el7.ppc64le
mpfr-3.1.1-4.el7.ppc64le
libXrandr-1.5.1-2.el7.ppc64le
cyrus-sasl-gssapi-2.1.26-21.el7.ppc64le
gtk2-devel-2.24.31-1.el7.ppc64le
perl-URI-1.60-9.el7.noarch
kpartx-0.4.9-111.el7.ppc64le
file-libs-5.11-33.el7.ppc64le
libXext-devel-1.3.3-3.el7.ppc64le
libSM-devel-1.2.2-2.el7.ppc64le
qt-devel-4.8.5-13.el7.ppc64le
perl-HTTP-Date-6.02-8.el7.noarch
dracut-033-502.el7.ppc64le
libtool-ltdl-2.4.2-22.el7_3.ppc64le
libcanberra-0.30-5.el7.ppc64le
python-enum34-1.0.4-1.el7.noarch
libxkbfile-devel-1.0.9-3.el7.ppc64le
perl-HTTP-Cookies-6.01-5.el7.noarch
polkit-0.112-12.el7_3.ppc64le
libtheora-1.1.1-8.el7.ppc64le
libXpm-3.5.12-1.el7.ppc64le
libevent-2.0.21-4.el7.ppc64le
ibus-gtk2-1.5.3-13.el7.ppc64le
kdelibs-common-4.14.8-6.el7_3.ppc64le
systemd-sysv-219-42.el7.ppc64le
diffutils-3.3-4.el7.ppc64le
libXv-1.0.11-1.el7.ppc64le
pam-1.1.8-18.el7.ppc64le
imsettings-gsettings-1.6.3-9.el7.ppc64le
perl-YAML-Tiny-1.51-6.el7.noarch
GConf2-3.2.6-8.el7.ppc64le
libtasn1-4.10-1.el7.ppc64le
libxkbfile-1.0.9-3.el7.ppc64le
gettext-libs-0.19.8.1-2.el7.ppc64le
kdelibs-ktexteditor-4.14.8-6.el7_3.ppc64le
perl-Env-1.04-2.el7.noarch
libpciaccess-0.13.4-3.el7_3.ppc64le
nss-softokn-3.28.3-6.el7.ppc64le
pango-1.40.4-1.el7.ppc64le
telepathy-logger-0.8.0-5.el7.ppc64le
nepomuk-core-4.10.5-5.el7.ppc64le
perl-Net-HTTP-6.06-2.el7.noarch
samba-common-4.6.2-8.el7.noarch
libsigc++20-2.10.0-1.el7.ppc64le
cogl-1.22.2-1.el7.ppc64le
pcre-devel-8.32-17.el7.ppc64le
kdenetwork-kopete-libs-4.10.5-8.el7_0.ppc64le
icoutils-0.31.3-1.el7_3.ppc64le
pyparted-3.9-13.el7.ppc64le
apr-util-1.5.2-6.el7.ppc64le
giflib-4.1.6-9.el7.ppc64le
expat-devel-2.1.0-10.el7_3.ppc64le
kdesdk-okteta-4.10.5-6.el7.ppc64le
papi-5.2.0-23.el7.ppc64le
abrt-python-2.1.11-48.el7.centos.ppc64le
lzo-2.06-8.el7.ppc64le
java-1.8.0-openjdk-1.8.0.131-11.b12.el7.ppc64le
libffi-devel-3.0.13-18.el7.ppc64le
kwin-libs-4.11.19-8.el7.ppc64le
xorg-x11-font-utils-7.5-20.el7.ppc64le
iscsi-initiator-utils-iscsiuio-6.2.0.874-4.el7.ppc64le
file-5.11-33.el7.ppc64le
libXft-devel-2.3.2-2.el7.ppc64le
libipa_hbac-1.15.2-50.el7.ppc64le
kwin-gles-libs-4.11.19-8.el7.ppc64le
libsamplerate-0.1.8-6.el7.ppc64le
cronie-1.4.11-17.el7.ppc64le
xml-common-0.6.3-39.el7.noarch
ghostscript-9.07-28.el7.ppc64le
libpinyin-data-0.9.93-4.el7.ppc64le
kde-runtime-libs-4.10.5-8.el7.ppc64le
ipset-6.29-1.el7.ppc64le
plymouth-0.8.9-0.28.20140113.el7.centos.ppc64le
taglib-1.8-7.20130218git.el7.ppc64le
at-spi2-core-2.22.0-1.el7.ppc64le
xfsprogs-4.5.0-12.el7.ppc64le
kdepim-runtime-4.10.5-3.el7.ppc64le
libusbmuxd-1.0.10-5.el7.ppc64le
libstoragemgmt-python-1.4.0-3.el7.noarch
libseccomp-2.3.1-3.el7.ppc64le
gstreamer1-plugins-good-1.10.4-2.el7.ppc64le
pyusb-1.0.0-0.11.b1.el7.noarch
nepomuk-core-devel-4.10.5-5.el7.ppc64le
libofa-0.9.3-24.el7.ppc64le
device-mapper-event-1.02.140-8.el7.ppc64le
librtas-2.0.1-1.el7.ppc64le
libXcomposite-devel-0.4.4-4.1.el7.ppc64le
audit-libs-python-2.7.6-3.el7.ppc64le
okular-libs-4.10.5-4.el7.ppc64le
gdisk-0.8.6-5.el7.ppc64le
libibumad-13-7.el7.ppc64le
libsndfile-1.0.25-10.el7.ppc64le
libXxf86misc-1.0.3-7.1.el7.ppc64le
pyparsing-1.5.6-9.el7.noarch
kdesdk-kmtrace-libs-4.10.5-6.el7.ppc64le
attr-2.4.46-12.el7.ppc64le
rpcbind-0.2.0-42.el7.ppc64le
slang-2.2.4-11.el7.ppc64le
gtk2-2.24.31-1.el7.ppc64le
libssh2-1.4.3-10.el7_2.1.ppc64le
kdesdk-kompare-4.10.5-6.el7.ppc64le
openssl-devel-1.0.2k-8.el7.ppc64le
bluez-5.44-2.el7.ppc64le
boost-thread-1.53.0-27.el7.ppc64le
clutter-gtk-1.8.2-1.el7.ppc64le
soundtouch-1.4.0-9.el7.ppc64le
ibus-table-1.5.0-5.el7.noarch
setools-libs-3.3.8-1.1.el7.ppc64le
ppp-2.4.5-33.el7.ppc64le
libvpd-2.2.5-1.el7.ppc64le
clutter-gst3-3.0.22-1.el7.ppc64le
boost-test-1.53.0-27.el7.ppc64le
libgphoto2-2.5.2-5.el7.ppc64le
libcurl-7.29.0-42.el7.ppc64le
libmtp-1.1.6-5.el7.ppc64le
unzip-6.0-16.el7.ppc64le
vte291-0.46.2-1.el7.ppc64le
boost-random-1.53.0-27.el7.ppc64le
hplip-libs-3.15.9-3.el7.ppc64le
openldap-2.4.44-5.el7.ppc64le
rsync-3.0.9-18.el7.ppc64le
psmisc-22.20-15.el7.ppc64le
compat-cheese314-3.14.2-1.el7.ppc64le
dosfstools-3.0.20-9.el7.ppc64le
sane-backends-drivers-cameras-1.0.24-9.el7.ppc64le
kde-filesystem-4-47.el7.ppc64le
cryptsetup-1.7.4-3.el7.ppc64le
boost-program-options-1.53.0-27.el7.ppc64le
libgnomekbd-3.22.0.1-1.el7.ppc64le
libsrtp-1.4.4-10.20101004cvs.el7.ppc64le
speech-dispatcher-python-0.7.1-15.el7.ppc64le
raptor2-2.0.9-3.el7.ppc64le
grub2-tools-2.02-0.64.el7.centos.ppc64le
libiodbc-3.52.7-7.el7.ppc64le
gtk-vnc2-0.7.0-2.el7.ppc64le
libdv-1.0.0-17.el7.ppc64le
libXxf86dga-1.1.4-2.1.el7.ppc64le
python-deltarpm-3.6-3.el7.ppc64le
ibacm-13-7.el7.ppc64le
opus-1.0.2-6.el7.ppc64le
system-config-printer-libs-1.4.1-19.el7.noarch
libthai-0.1.14-9.el7.ppc64le
tracker-1.10.5-4.el7.ppc64le
shared-desktop-ontologies-devel-0.11.0-2.el7.noarch
qt-4.8.5-13.el7.ppc64le
pcre2-10.23-2.el7.ppc64le
gtkspell3-3.0.3-4.el7.ppc64le
libevdev-1.5.6-1.el7.ppc64le
totem-3.22.1-1.el7.ppc64le
virtuoso-opensource-6.1.6-6.el7.ppc64le
strigi-libs-0.7.7-12.20120626.el7.ppc64le
boost-wave-1.53.0-27.el7.ppc64le
libXmu-devel-1.1.2-2.el7.ppc64le
iproute-3.10.0-87.el7.ppc64le
firewalld-0.4.4.4-6.el7.noarch
color-filesystem-1-13.el7.noarch
automoc-1.0-0.20.rc3.el7.ppc64le
perl-Pod-Perldoc-3.20-4.el7.noarch
poppler-utils-0.26.5-16.el7.ppc64le
boost-1.53.0-27.el7.ppc64le
pcp-libs-3.11.8-7.el7.ppc64le
pykickstart-1.99.66.12-1.el7.noarch
openldap-devel-2.4.44-5.el7.ppc64le
perl-Encode-2.51-7.el7.ppc64le
python-gobject-3.22.0-1.el7.ppc64le
krb5-workstation-1.15.1-8.el7.ppc64le
libwacom-0.24-1.el7.ppc64le
isomd5sum-1.0.10-5.el7.ppc64le
abrt-addon-vmcore-2.1.11-48.el7.centos.ppc64le
perl-constant-1.27-2.el7.noarch
compat-libcogl12-1.14.0-3.el7.ppc64le
python-libipa_hbac-1.15.2-50.el7.ppc64le
gdm-3.22.3-11.el7.ppc64le
gstreamer1-devel-1.10.4-2.el7.ppc64le
abrt-retrace-client-2.1.11-48.el7.centos.ppc64le
perl-Exporter-5.68-3.el7.noarch
libXpm-devel-3.5.12-1.el7.ppc64le
python2-pyasn1-modules-0.1.9-7.el7.noarch
gnome-shell-extension-alternate-tab-3.22.2-10.el7.noarch
ttmkfdir-3.0.9-42.el7.ppc64le
samba-libs-4.6.2-8.el7.ppc64le
perl-File-Temp-0.23.01-3.el7.noarch
brltty-4.5-15.el7.ppc64le
sos-3.4-6.el7.centos.noarch
gnome-shell-extension-window-list-3.22.2-10.el7.noarch
clucene-core-2.3.3.4-11.el7.ppc64le
osinfo-db-20170423-2.el7.noarch
perl-macros-5.16.3-292.el7.ppc64le
python-brlapi-0.6.0-15.el7.ppc64le
libselinux-devel-2.5-11.el7.ppc64le
quota-nls-4.01-14.el7.noarch
elfutils-libs-0.168-8.el7.ppc64le
oddjob-mkhomedir-0.31.5-4.el7.ppc64le
perl-5.16.3-292.el7.ppc64le
opal-3.10.10-4.el7.ppc64le
gstreamer-tools-0.10.36-7.el7.ppc64le
libvirt-daemon-driver-storage-scsi-3.2.0-14.el7.ppc64le
satyr-0.13-14.el7.ppc64le
polkit-docs-0.112-12.el7_3.noarch
perl-Compress-Raw-Zlib-2.061-4.el7.ppc64le
compat-libcogl-pango12-1.14.0-3.el7.ppc64le
alsa-lib-devel-1.1.3-3.el7.ppc64le
libvirt-daemon-driver-storage-mpath-3.2.0-14.el7.ppc64le
NetworkManager-libnm-1.8.0-9.el7.ppc64le
tcsh-6.18.01-15.el7.ppc64le
perl-XML-Dumper-0.81-17.el7.noarch
libpfm-devel-4.7.0-4.el7.ppc64le
unixODBC-devel-2.3.1-11.el7.ppc64le
rcs-5.9.0-5.el7.ppc64le
ltrace-0.7.91-14.el7.ppc64le
ed-1.9-4.el7.ppc64le
wqy-zenhei-fonts-0.9.46-11.el7.noarch
lohit-bengali-fonts-2.5.3-4.el7.noarch
paratype-pt-sans-fonts-20101909-3.el7.noarch
paktype-naskh-basic-fonts-4.1-3.el7.noarch
lklug-fonts-0.6-10.20090803cvs.el7.noarch
lohit-kannada-fonts-2.5.3-3.el7.noarch
cjkuni-uming-fonts-0.2.20080216.1-53.el7.noarch
vlgothic-fonts-20130607-2.el7.noarch
lohit-telugu-fonts-2.5.3-3.el7.noarch
gnu-free-serif-fonts-20120503-8.el7.noarch
jomolhari-fonts-0.003-17.el7.noarch
scl-utils-20130529-17.el7_1.ppc64le
diffstat-1.57-4.el7.ppc64le
xorg-x11-drivers-7.7-6.el7.ppc64le
setserial-2.17-33.el7.ppc64le
vinagre-3.22.0-8.el7.ppc64le
man-pages-overrides-7.4.3-1.el7.ppc64le
gedit-3.22.0-3.el7.ppc64le
iwl5150-firmware-8.24.2.2-56.el7.noarch
gnome-contacts-3.22.1-1.el7.ppc64le
words-3.0-22.el7.noarch
setroubleshoot-3.2.28-3.el7.ppc64le
iwl7265-firmware-22.0.7.0-56.el7.noarch
gnome-system-monitor-3.22.2-2.el7.ppc64le
man-pages-3.53-5.el7.noarch
librsvg2-devel-2.40.16-1.el7.ppc64le
gpg-pubkey-f4a80eb5-53a7ff4b
system-config-printer-udev-1.4.1-19.el7.ppc64le
gnome-calculator-3.22.3-1.el7.ppc64le
libgcc-4.8.5-16.el7_4.1.ppc64le
gvfs-afp-1.30.4-3.el7.ppc64le
cpp-4.8.5-16.el7_4.1.ppc64le
latencytop-0.5-13.el7.ppc64le
gcc-c++-4.8.5-16.el7_4.1.ppc64le
gtk3-immodule-xim-3.22.10-4.el7.ppc64le
mousetweaks-3.12.0-1.el7.ppc64le
qt3-MySQL-3.3.8b-51.el7.ppc64le
xvattr-1.3-27.el7.ppc64le
yum-langpacks-0.4.2-7.el7.noarch
rpm-build-4.11.3-25.el7.ppc64le
virt-install-1.4.1-7.el7.noarch
samba-client-4.6.2-8.el7.ppc64le
qt-odbc-4.8.5-13.el7.ppc64le
NetworkManager-tui-1.8.0-9.el7.ppc64le
avahi-0.6.31-17.el7.ppc64le
httpd-manual-2.4.6-67.el7.centos.noarch
PackageKit-gstreamer-plugin-1.1.5-1.el7.centos.ppc64le
tuned-2.8.0-5.el7.noarch
qemu-guest-agent-2.8.0-2.el7.ppc64le
smartmontools-6.2-8.el7.ppc64le
openssh-server-7.4p1-11.el7.ppc64le
dracut-config-rescue-033-502.el7.ppc64le
openlmi-providers-devel-0.5.0-4.el7.ppc64le
oprofile-0.9.9-22.el7.ppc64le
perl-homedir-1.008010-4.el7.noarch
libgudev1-devel-219-42.el7.ppc64le
sudo-1.8.19p2-10.el7.ppc64le
libacl-devel-2.2.51-12.el7.ppc64le
perl-XML-Twig-3.44-2.el7.noarch
crash-trace-command-2.0-12.el7.ppc64le
crash-gcore-command-1.3.1-0.el7.ppc64le
libgnome-keyring-devel-3.12.0-1.el7.ppc64le
binutils-devel-2.25.1-31.base.el7.ppc64le
libcap-ng-devel-0.7.5-4.el7.ppc64le
bash-completion-2.1-6.el7.noarch
dstat-0.7.2-12.el7.noarch
wget-1.14-15.el7.ppc64le
gpg-pubkey-352c64e5-52ae6884
certmonger-0.78.4-3.el7.ppc64le
libatomic-static-4.8.5-16.el7.ppc64le
libicu-devel-50.1.2-15.el7.ppc64le
caribou-0.4.21-1.el7.ppc64le
grub2-common-2.02-0.64.el7.centos.noarch
plymouth-graphics-libs-0.8.9-0.28.20140113.el7.centos.ppc64le
kernel-3.10.0-693.el7.ppc64le
perl-Perl-OSType-1.003-3.el7.noarch
libvirt-daemon-3.2.0-14.el7.ppc64le
ledmon-0.80-2.el7.ppc64le
gupnp-av-0.12.10-1.el7.ppc64le
cups-1.6.3-29.el7.ppc64le
mozilla-filesystem-1.9-11.el7.ppc64le
libqmi-utils-1.16.0-1.el7.ppc64le
anaconda-core-21.48.22.121-1.el7.centos.ppc64le
perl-JSON-PP-2.27202-2.el7.noarch
libvirt-client-3.2.0-14.el7.ppc64le
numactl-devel-2.0.9-6.el7_2.ppc64le
cups-client-1.6.3-29.el7.ppc64le
mutter-3.22.3-11.el7.ppc64le
ipa-common-4.5.0-20.el7.centos.noarch
glibc-devel-2.17-196.el7.ppc64le
firefox-52.2.0-2.el7.centos.ppc64le
perl-Params-Check-0.38-2.el7.noarch
virt-manager-common-1.4.1-7.el7.noarch
indent-2.2.11-13.el7.ppc64le
python-linux-procfs-0.4.9-3.el7.noarch
gnome-session-3.22.3-4.el7.ppc64le
adwaita-cursor-theme-3.22.0-1.el7.noarch
perl-Archive-Extract-0.68-3.el7.noarch
gnome-initial-setup-3.22.1-4.el7.ppc64le
perl-IO-Compress-2.061-2.el7.noarch
geoclue2-2.4.5-1.el7.ppc64le
khmeros-base-fonts-5.0-17.el7.noarch
python-tempita-0.5.1-6.el7.noarch
gnome-online-accounts-3.22.5-1.el7.ppc64le
nhn-nanum-fonts-common-3.020-9.el7.noarch
gobject-introspection-devel-1.50.0-1.el7.ppc64le
rhythmbox-3.4.1-1.el7.ppc64le
libavc1394-0.5.3-14.el7.ppc64le
telepathy-gabble-0.18.1-4.el7.ppc64le
stix-fonts-1.1.0-5.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
gnome-packagekit-installer-3.22.1-2.el7.ppc64le
mesa-filesystem-17.0.1-6.20170307.el7.ppc64le
konkretcmpi-python-0.9.1-5.el7.ppc64le
libsane-hpaio-3.15.9-3.el7.ppc64le
copy-jdk-configs-2.2-3.el7.noarch
usb_modeswitch-2.4.0-5.el7.ppc64le
nhn-nanum-gothic-fonts-3.020-9.el7.noarch
pytz-2016.10-2.el7.noarch
librsvg2-tools-2.40.16-1.el7.ppc64le
bash-4.2.46-28.el7.ppc64le
libreport-plugin-bugzilla-2.1.11-38.el7.centos.ppc64le
kde-workspace-devel-4.11.19-8.el7.ppc64le
libdb-devel-5.3.21-20.el7.ppc64le
fxload-2002_04_11-16.el7.ppc64le
google-crosextra-caladea-fonts-1.002-0.4.20130214.el7.noarch
python-pycparser-2.14-1.el7.noarch
libtimezonemap-0.4.4-1.el7.ppc64le
libcom_err-1.42.9-10.el7.ppc64le
frei0r-plugins-1.3-13.el7.ppc64le
ibus-m17n-1.3.4-13.el7.ppc64le
libcdio-paranoia-10.2+0.90-11.el7.ppc64le
netcf-libs-0.2.8-4.el7.ppc64le
lohit-punjabi-fonts-2.5.3-2.el7.noarch
cmpi-bindings-pywbem-0.9.5-6.el7.ppc64le
at-spi2-core-devel-2.22.0-1.el7.ppc64le
xz-libs-5.2.2-1.el7.ppc64le
libasyncns-0.8-7.el7.ppc64le
libcanberra-devel-0.30-5.el7.ppc64le
coreutils-8.22-18.el7.ppc64le
sssd-ad-1.15.2-50.el7.ppc64le
doxygen-1.8.5-3.el7.ppc64le
httpd-tools-2.4.6-67.el7.centos.ppc64le
libspectre-0.2.8-1.el7.ppc64le
cyrus-sasl-lib-2.1.26-21.el7.ppc64le
rubygem-bigdecimal-1.2.0-30.el7.ppc64le
icedtea-web-1.6.2-4.el7.ppc64le
libarchive-3.1.2-10.el7_2.ppc64le
python-pyblock-0.53-6.el7.ppc64le
byacc-1.9.20130304-3.el7.ppc64le
wodim-1.1.11-23.el7.ppc64le
xorg-x11-drv-qxl-0.1.5-3.el7.ppc64le
elfutils-libelf-0.168-8.el7.ppc64le
rubygem-thor-0.19.1-1.el7.noarch
file-roller-nautilus-3.22.3-1.el7.ppc64le
pkgconfig-0.27.1-4.el7.ppc64le
setroubleshoot-server-3.2.28-3.el7.ppc64le
iwl2030-firmware-18.168.6.1-56.el7.noarch
mailx-12.5-16.el7.ppc64le
xorg-x11-drv-fbdev-0.4.3-25.el7.ppc64le
libtevent-0.9.31-1.el7.ppc64le
policycoreutils-2.5-17.1.el7.ppc64le
java-1.7.0-openjdk-devel-1.7.0.141-2.6.10.5.el7.ppc64le
gsettings-desktop-schemas-3.22.0-1.el7.ppc64le
yum-3.4.3-154.el7.centos.noarch
iwl6000g2a-firmware-17.168.5.3-56.el7.noarch
perl-B-Lint-1.17-3.el7.noarch
gstreamer-plugins-bad-free-0.10.23-23.el7.ppc64le
libvorbis-1.3.3-8.el7.ppc64le
rarian-compat-0.8.1-11.el7.ppc64le
abrt-desktop-2.1.11-48.el7.centos.ppc64le
desktop-file-utils-0.23-1.el7.ppc64le
libiptcdata-1.0.4-11.el7.ppc64le
gpg-pubkey-f533f4fa-56585169
perl-DB_File-1.830-6.el7.ppc64le
compat-poppler022-qt-0.22.5-4.el7.ppc64le
libldb-1.1.29-1.el7.ppc64le
http-parser-2.7.1-1.el7.ppc64le
NetworkManager-libreswan-gnome-1.2.4-2.el7.ppc64le
centos-logos-70.0.6-3.el7.centos.noarch
libX11-common-1.6.5-1.el7.noarch
libstdc++-4.8.5-16.el7_4.1.ppc64le
perl-FCGI-0.74-8.el7.ppc64le
pango-devel-1.40.4-1.el7.ppc64le
libbasicobjects-0.1.1-27.el7.ppc64le
gtk2-immodule-xim-2.24.31-1.el7.ppc64le
libgnome-keyring-3.12.0-1.el7.ppc64le
libXrender-0.9.10-1.el7.ppc64le
libitm-devel-4.8.5-16.el7_4.1.ppc64le
perl-Business-ISBN-2.06-2.el7.noarch
freeglut-2.8.1-3.el7.ppc64le
device-mapper-1.02.140-8.el7.ppc64le
xdg-desktop-portal-gtk-0.5-1.el7.ppc64le
libudisks2-2.1.2-6.el7.ppc64le
pulseaudio-libs-10.0-3.el7.ppc64le
perl-HTTP-Daemon-6.01-5.el7.noarch
xorg-x11-xauth-1.0.9-1.el7.ppc64le
nettle-2.7.1-8.el7.ppc64le
polkit-pkla-compat-0.1-4.el7.ppc64le
startup-notification-devel-0.12-8.el7.ppc64le
genisoimage-1.1.11-23.el7.ppc64le
dbus-x11-1.6.12-17.el7.ppc64le
perl-Text-Soundex-3.04-4.el7.ppc64le
xdg-user-dirs-0.15-4.el7.ppc64le
jansson-2.10-1.el7.ppc64le
NetworkManager-glib-1.8.0-9.el7.ppc64le
rpm-sign-4.11.3-25.el7.ppc64le
gettext-0.19.8.1-2.el7.ppc64le
cairo-1.14.8-2.el7.ppc64le
perl-IO-Socket-SSL-1.94-6.el7.noarch
kdepimlibs-kxmlrpcclient-4.10.5-4.el7.ppc64le
libplist-1.12-3.el7.ppc64le
libwbclient-4.6.2-8.el7.ppc64le
cgdcbxd-1.0.2-7.el7.ppc64le
glib2-devel-2.50.3-3.el7.ppc64le
gdk-pixbuf2-devel-2.36.5-1.el7.ppc64le
theora-tools-1.1.1-8.el7.ppc64le
libkipi-4.10.5-3.el7.ppc64le
libmng-1.0.10-14.el7.ppc64le
abrt-addon-kerneloops-2.1.11-48.el7.centos.ppc64le
grub2-2.02-0.64.el7.centos.ppc64le
xz-devel-5.2.2-1.el7.ppc64le
xorg-x11-xkb-utils-7.7-12.el7.ppc64le
libverto-tevent-0.2.5-4.el7.ppc64le
libkdcraw-devel-4.10.5-4.el7.ppc64le
bzip2-1.0.6-13.el7.ppc64le
iputils-20160308-10.el7.ppc64le
cifs-utils-6.2-10.el7.ppc64le
libpinyin-0.9.93-4.el7.ppc64le
libao-1.1.0-8.el7.ppc64le
gdbm-devel-1.10-8.el7.ppc64le
kdepim-libs-4.10.5-6.el7.ppc64le
libxshmfence-1.2-1.el7.ppc64le
libstoragemgmt-1.4.0-3.el7.ppc64le
psacct-6.6.1-13.el7.ppc64le
pyliblzma-0.5.3-11.el7.ppc64le
libXcursor-devel-1.1.14-8.el7.ppc64le
hesiod-3.2.1-3.el7.ppc64le
okular-devel-4.10.5-4.el7.ppc64le
gsm-1.0.13-11.el7.ppc64le
telepathy-mission-control-5.16.3-3.el7.ppc64le
rng-tools-5-11.el7.ppc64le
python-chardet-2.2.1-1.el7_1.noarch
libcanberra-gtk3-0.30-5.el7.ppc64le
krb5-devel-1.15.1-8.el7.ppc64le
kdesdk-kompare-devel-4.10.5-6.el7.ppc64le
unixODBC-2.3.1-11.el7.ppc64le
dbus-devel-1.6.12-17.el7.ppc64le
kpatch-0.4.0-1.el7.noarch
graphite2-1.3.6-1.el7_2.ppc64le
nautilus-extensions-3.22.3-3.el7.ppc64le
libdb-utils-5.3.21-20.el7.ppc64le
sane-backends-libs-1.0.24-9.el7.ppc64le
zip-3.0-11.el7.ppc64le
mdadm-4.0-5.el7.ppc64le
memstomp-0.1.4-11.el7.ppc64le
libconfig-1.4.9-5.el7.ppc64le
clutter-gst2-2.0.18-1.el7.ppc64le
postgresql-libs-9.2.21-1.el7.ppc64le
gsound-1.0.2-2.el7.ppc64le
ilmbase-1.0.3-7.el7.ppc64le
udisks2-2.1.2-6.el7.ppc64le
perl-core-5.16.3-292.el7.ppc64le
pcsc-lite-libs-1.8.8-6.el7.ppc64le
gvnc-0.7.0-2.el7.ppc64le
qemu-img-1.5.3-141.el7.ppc64le
libappstream-glib-0.6.10-1.el7.ppc64le
sg3_utils-libs-1.37-12.el7.ppc64le
librdmacm-13-7.el7.ppc64le
adcli-0.8.1-3.el7.ppc64le
libnfnetlink-1.0.1-4.el7.ppc64le
colord-gtk-0.1.25-4.el7.ppc64le
libuser-python-0.60-7.el7_1.ppc64le
libfprint-0.5.0-4.el7.ppc64le
OpenEXR-libs-1.7.1-7.el7.ppc64le
attica-devel-0.4.2-1.el7.ppc64le
papi-devel-5.2.0-23.el7.ppc64le
m17n-lib-1.6.4-14.el7.ppc64le
qimageblitz-0.0.6-7.el7.ppc64le
python-urlgrabber-3.10-8.el7.noarch
pcp-selinux-3.11.8-7.el7.ppc64le
perl-Text-ParseWords-3.29-4.el7.noarch
apr-util-devel-1.5.2-6.el7.ppc64le
readline-devel-6.2-10.el7.ppc64le
python-kitchen-1.1.1-5.el7.noarch
gnome-abrt-0.3.4-8.el7.ppc64le
check-devel-0.9.9-5.el7.ppc64le
pulseaudio-gdm-hooks-10.0-3.el7.ppc64le
perl-Scalar-List-Utils-1.27-248.el7.ppc64le
abrt-addon-ccpp-2.1.11-48.el7.centos.ppc64le
gnome-icon-theme-extras-3.12.0-1.el7.noarch
python-slip-0.4.0-2.el7.noarch
brlapi-0.6.0-15.el7.ppc64le
qpdf-libs-5.0.1-3.el7.ppc64le
yelp-xsl-3.20.1-1.el7.noarch
perl-Storable-2.45-3.el7.ppc64le
libosinfo-1.0.0-1.el7.ppc64le
libcap-devel-2.22-9.el7.ppc64le
libepoxy-devel-1.3.1-1.el7.ppc64le
festival-1.96-28.el7.ppc64le
libusbx-1.0.20-1.el7.ppc64le
libvirt-daemon-driver-storage-disk-3.2.0-14.el7.ppc64le
perl-Test-Harness-3.28-3.el7.noarch
polkit-devel-0.112-12.el7_3.ppc64le
perl-Crypt-SSLeay-0.64-5.el7.ppc64le
libverto-devel-0.2.5-4.el7.ppc64le
caribou-gtk2-module-0.4.21-1.el7.ppc64le
vim-filesystem-7.4.160-2.el7.ppc64le
procps-ng-3.3.10-16.el7.ppc64le
NetworkManager-libreswan-1.2.4-2.el7.ppc64le
perl-Module-Metadata-1.000018-2.el7.noarch
pixman-devel-0.34.0-1.el7.ppc64le
patchutils-0.3.3-4.el7.ppc64le
filesystem-3.2-21.el7.ppc64le
cups-filesystem-1.6.3-29.el7.noarch
gettext-devel-0.19.8.1-2.el7.ppc64le
usbredir-0.7.1-2.el7.ppc64le
neon-0.30.0-3.el7.ppc64le
perl-LWP-MediaTypes-6.02-2.el7.noarch
python-qrcode-core-5.0.1-1.el7.noarch
hyphen-en-2.8.6-5.el7.noarch
gnu-free-fonts-common-20120503-8.el7.noarch
gtkmm30-3.22.0-1.el7.ppc64le
initial-setup-gui-0.3.9.40-1.el7.centos.ppc64le
libhugetlbfs-2.16-12.el7.ppc64le
subversion-libs-1.7.14-10.el7.ppc64le
perl-Encode-Locale-1.03-5.el7.noarch
python-inotify-0.9.4-4.el7.noarch
nano-2.3.1-10.el7.ppc64le
mobile-broadband-provider-info-1.20170310-1.el7.noarch
adwaita-gtk2-theme-3.22.2-1.el7.ppc64le
ipa-client-4.5.0-20.el7.centos.ppc64le
perl-IPC-Cmd-0.80-4.el7.noarch
libsoup-2.56.0-3.el7.ppc64le
perl-Term-UI-0.36-2.el7.noarch
python-setuptools-0.9.8-7.el7.noarch
dejavu-sans-mono-fonts-2.33-6.el7.noarch
bind-license-9.9.4-50.el7.noarch
webkitgtk4-jsc-2.14.7-2.el7.ppc64le
firewall-config-0.4.4.4-6.el7.noarch
perl-CPAN-1.9800-292.el7.noarch
gupnp-1.0.1-1.el7.ppc64le
boost-graph-1.53.0-27.el7.ppc64le
python-perf-3.10.0-693.el7.ppc64le
overpass-fonts-2.1-1.el7.noarch
thai-scalable-fonts-common-0.5.0-7.el7.noarch
webkitgtk4-jsc-devel-2.14.7-2.el7.ppc64le
pulseaudio-module-x11-10.0-3.el7.ppc64le
marisa-0.2.4-4.el7.ppc64le
gnutls-c++-3.3.26-9.el7.ppc64le
ca-certificates-2017.2.14-71.el7.noarch
python-idna-2.4-1.el7.noarch
strace-4.12-4.el7.ppc64le
nss-softokn-freebl-3.28.3-6.el7.ppc64le
vino-3.22.0-3.el7.ppc64le
libXaw-devel-1.0.13-4.el7.ppc64le
libreport-centos-2.1.11-38.el7.centos.ppc64le
alsa-utils-1.1.3-2.el7.ppc64le
libnl3-cli-3.2.28-4.el7.ppc64le
python-iniparse-0.4-9.el7.noarch
traceroute-2.0.22-2.el7.ppc64le
libselinux-2.5-11.el7.ppc64le
keybinder3-0.3.0-1.el7.ppc64le
kdepim-devel-4.10.5-6.el7.ppc64le
pakchois-0.4-10.el7.ppc64le
cryptsetup-python-1.7.4-3.el7.ppc64le
libjpeg-turbo-devel-1.2.90-5.el7.ppc64le
python-jwcrypto-0.2.1-1.el7.noarch
lohit-malayalam-fonts-2.5.3-2.el7.noarch
libpng-1.5.13-7.el7_2.ppc64le
freerdp-plugins-1.0.2-10.el7.ppc64le
ibus-chewing-1.4.4-14.el7.ppc64le
libfastjson-0.99.4-2.el7.ppc64le
libsss_sudo-1.15.2-50.el7.ppc64le
redhat-menus-12.0.2-8.el7.noarch
bind-libs-9.9.4-50.el7.ppc64le
gnu-free-sans-fonts-20120503-8.el7.noarch
libuuid-2.23.2-43.el7.ppc64le
festival-freebsoft-utils-0.10-7.el7.noarch
unique3-devel-3.0.2-8.el7.ppc64le
compat-poppler022-0.22.5-4.el7.ppc64le
sssd-proxy-1.15.2-50.el7.ppc64le
python-2.7.5-58.el7.ppc64le
libwvstreams-4.6.1-11.el7.ppc64le
lrzsz-0.12.20-36.el7.ppc64le
sqlite-3.7.17-8.el7.ppc64le
xorg-x11-server-common-1.19.3-11.el7.ppc64le
sushi-3.21.91-1.el7.ppc64le
rubygem-psych-2.0.0-30.el7.ppc64le
gnupg2-2.0.22-4.el7.ppc64le
libmount-2.23.2-43.el7.ppc64le
nss-3.28.4-8.el7.ppc64le
iwl3160-firmware-22.0.7.0-56.el7.noarch
libnl3-3.2.28-4.el7.ppc64le
xorg-x11-drv-ati-7.7.1-3.20160928git3fc839ff.el7.ppc64le
evolution-mapi-3.22.6-1.el7.ppc64le
libservicelog-1.1.17-2.el7.ppc64le
perl-PAR-Dist-0.49-2.el7.noarch
dbus-glib-0.100-7.el7.ppc64le
docbook-style-xsl-1.78.1-3.el7.noarch
iwl100-firmware-39.31.5.1-56.el7.noarch
libxslt-1.1.28-5.el7.ppc64le
junit-4.11-8.el7.noarch
gnome-session-xsession-3.22.3-4.el7.ppc64le
selinux-policy-3.13.1-166.el7.noarch
PackageKit-1.1.5-1.el7.centos.ppc64le
zlib-devel-1.2.7-17.el7.ppc64le
perl-libxml-perl-0.08-19.el7.noarch
iwl4965-firmware-228.61.2.24-56.el7.noarch
p11-kit-0.23.5-3.el7.ppc64le
spice-gtk3-0.33-6.el7.ppc64le
pygobject3-devel-3.22.0-1.el7.ppc64le
systemtap-runtime-3.1-3.el7.ppc64le
nss-softokn-freebl-devel-3.28.3-6.el7.ppc64le
libgee-0.18.1-1.el7.ppc64le
perl-PlRPC-0.2020-14.el7.noarch
python34-libs-3.4.5-4.el7.ppc64le
json-c-0.11-4.el7_0.ppc64le
plymouth-plugin-two-step-0.8.9-0.28.20140113.el7.centos.ppc64le
gnome-font-viewer-3.22.0-1.el7.ppc64le
sssd-client-1.15.2-50.el7.ppc64le
libXext-1.3.3-3.el7.ppc64le
nspr-devel-4.13.1-1.0.el7_3.ppc64le
perl-Algorithm-Diff-1.1902-17.el7.noarch
libgomp-4.8.5-16.el7_4.1.ppc64le
tcp_wrappers-libs-7.6-77.el7.ppc64le
libgdata-devel-0.17.8-1.el7.ppc64le
gnome-screenshot-3.22.0-1.el7.ppc64le
mtdev-1.1.5-5.el7.ppc64le
mesa-libEGL-17.0.1-6.20170307.el7.ppc64le
libpng-devel-1.5.13-7.el7_2.ppc64le
perl-Digest-SHA1-2.13-9.el7.ppc64le
libdhash-0.4.3-27.el7.ppc64le
phonon-devel-4.6.0-10.el7.ppc64le
qt3-ODBC-3.3.8b-51.el7.ppc64le
systemd-219-42.el7.ppc64le
libXinerama-1.1.3-2.1.el7.ppc64le
gdb-7.6.1-100.el7.ppc64le
perl-File-Listing-6.04-7.el7.noarch
jasper-libs-1.900.1-31.el7.ppc64le
ibus-setup-1.5.3-13.el7.noarch
spice-vdagent-0.14.0-14.el7.ppc64le
PackageKit-glib-1.1.5-1.el7.centos.ppc64le
libXmu-1.1.2-2.el7.ppc64le
atkmm-2.24.2-1.el7.ppc64le
perl-Sys-Syslog-0.33-3.el7.ppc64le
libXdmcp-1.1.2-6.el7.ppc64le
kdelibs-devel-4.14.8-6.el7_3.ppc64le
targetcli-2.1.fb46-1.el7.noarch
libcgroup-0.41-13.el7.ppc64le
qt-x11-4.8.5-13.el7.ppc64le
libxcb-devel-1.12-1.el7.ppc64le
perl-HTML-Format-2.10-7.el7.noarch
libsss_idmap-1.15.2-50.el7.ppc64le
kactivities-4.10.5-3.el7.ppc64le
httpd-devel-2.4.6-67.el7.centos.ppc64le
abrt-2.1.11-48.el7.centos.ppc64le
java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.ppc64le
apr-devel-1.4.8-3.el7.ppc64le
cdparanoia-10.2-17.el7.ppc64le
libpcap-1.5.3-9.el7.ppc64le
libkworkspace-4.11.19-8.el7.ppc64le
dbus-glib-devel-0.100-7.el7.ppc64le
crontabs-1.11-6.20121102git.el7.noarch
libXi-devel-1.7.9-1.el7.ppc64le
gnome-menus-3.13.3-3.el7.ppc64le
libieee1284-devel-0.2.11-15.el7.ppc64le
kmod-libs-20-15.el7.ppc64le
kde-runtime-4.10.5-8.el7.ppc64le
mod_ssl-2.4.6-67.el7.centos.ppc64le
cyrus-sasl-2.1.26-21.el7.ppc64le
libXScrnSaver-1.2.2-6.1.el7.ppc64le
python-augeas-0.5.0-2.el7.noarch
LibRaw-0.14.8-5.el7.20120830git98d925.ppc64le
hyphen-2.8.6-5.el7.ppc64le
kdenetwork-krdc-libs-4.10.5-8.el7_0.ppc64le
opal-prd-5.5.0-1.el7.ppc64le
rdma-core-13-7.el7.ppc64le
pulseaudio-10.0-3.el7.ppc64le
python-sssdconfig-1.15.2-50.el7.noarch
libisofs-1.2.8-4.el7.ppc64le
libverto-0.2.5-4.el7.ppc64le
kdesdk-kmtrace-devel-4.10.5-6.el7.ppc64le
systemd-devel-219-42.el7.ppc64le
mesa-dri-drivers-17.0.1-6.20170307.el7.ppc64le
clutter-1.26.0-1.el7.ppc64le
fipscheck-1.4.1-6.el7.ppc64le
dwz-0.11-3.el7.ppc64le
boost-regex-1.53.0-27.el7.ppc64le
libXaw-1.0.13-4.el7.ppc64le
systemd-python-219-42.el7.ppc64le
zenity-3.22.0-1.el7.ppc64le
boost-atomic-1.53.0-27.el7.ppc64le
rpm-libs-4.11.3-25.el7.ppc64le
GeoIP-1.5.0-11.el7.ppc64le
libksane-devel-4.10.5-4.el7.ppc64le
rubygem-bundler-1.7.8-3.el7.noarch
git-1.8.3.1-11.el7.ppc64le
brasero-libs-3.12.1-2.el7.ppc64le
c-ares-1.10.0-3.el7.ppc64le
libnfsidmap-0.25-17.el7.ppc64le
cdparanoia-libs-10.2-17.el7.ppc64le
tk-8.5.13-6.el7.ppc64le
libhugetlbfs-devel-2.16-12.el7.ppc64le
NetworkManager-wifi-1.8.0-9.el7.ppc64le
libcanberra-gtk2-0.30-5.el7.ppc64le
hostname-3.13-3.el7.ppc64le
redland-1.0.16-6.el7.ppc64le
libdaemon-0.14-7.el7.ppc64le
brasero-3.12.1-2.el7.ppc64le
cups-devel-1.6.3-29.el7.ppc64le
qca2-2.0.3-7.el7.ppc64le
pangomm-2.40.1-1.el7.ppc64le
libnetfilter_conntrack-1.0.6-1.el7_3.ppc64le
sip-devel-4.14.6-4.el7.ppc64le
perl-parent-0.225-244.el7.noarch
libkkc-0.3.1-9.el7.ppc64le
crypto-utils-2.4.1-42.el7.ppc64le
lvm2-2.02.171-8.el7.ppc64le
poppler-glib-0.26.5-16.el7.ppc64le
crash-7.1.9-2.el7.ppc64le
libbluray-0.2.3-5.el7.ppc64le
perl-Filter-1.49-3.el7.ppc64le
control-center-3.22.2-5.el7.ppc64le
c-ares-devel-1.10.0-3.el7.ppc64le
sysstat-10.1.5-12.el7.ppc64le
mesa-libGL-devel-17.0.1-6.20170307.el7.ppc64le
python-pwquality-1.2.3-4.el7.ppc64le
liblouis-python-2.5.2-10.el7.noarch
perl-PathTools-3.40-5.el7.ppc64le
gnome-shell-extension-apps-menu-3.22.2-10.el7.noarch
hunspell-devel-1.3.2-15.el7.ppc64le
policycoreutils-python-2.5-17.1.el7.ppc64le
libwnck3-3.20.1-1.el7.ppc64le
gsettings-desktop-schemas-devel-3.22.0-1.el7.ppc64le
lsof-4.87-4.el7.ppc64le
perl-Getopt-Long-2.40-2.el7.noarch
nfs-utils-1.3.0-0.48.el7.ppc64le
mtr-0.85-7.el7.ppc64le
autofs-5.0.7-69.el7.ppc64le
cairo-devel-1.14.8-2.el7.ppc64le
xorg-x11-xbitmaps-1.1.1-6.el7.noarch
libreport-2.1.11-38.el7.centos.ppc64le
perl-XML-Parser-2.41-10.el7.ppc64le
libvirt-daemon-driver-storage-3.2.0-14.el7.ppc64le
python2-caribou-0.4.21-1.el7.noarch
fontpackages-filesystem-1.44-8.el7.noarch
perl-Test-Pod-1.48-3.el7.noarch
libuuid-devel-2.23.2-43.el7.ppc64le
perl-Package-Constants-0.02-292.el7.noarch
gnutls-3.3.26-9.el7.ppc64le
libreport-cli-2.1.11-38.el7.centos.ppc64le
gettext-common-devel-0.19.8.1-2.el7.noarch
cups-filters-1.0.35-22.el7.ppc64le
xkeyboard-config-2.20-1.el7.noarch
bison-3.0.4-1.el7.ppc64le
compat-libcolord1-1.0.4-1.el7.ppc64le
perl-Digest-MD5-2.52-3.el7.ppc64le
gnutls-dane-3.3.26-9.el7.ppc64le
libusbx-devel-1.0.20-1.el7.ppc64le
initial-setup-0.3.9.40-1.el7.centos.ppc64le
libchamplain-gtk-0.12.15-1.el7.ppc64le
libreport-filesystem-2.1.11-38.el7.centos.ppc64le
m17n-contrib-1.1.14-3.el7.noarch
newt-python-0.52.15-4.el7.ppc64le
perl-Locale-Maketext-1.23-3.el7.noarch
libvirt-daemon-driver-nodedev-3.2.0-14.el7.ppc64le
perl-ExtUtils-Install-1.58-292.el7.noarch
libvirt-3.2.0-14.el7.ppc64le
gnome-themes-standard-3.22.2-1.el7.ppc64le
gl-manpages-1.1-7.20130122.el7.noarch
lohit-gujarati-fonts-2.5.3-2.el7.noarch
python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
perl-local-lib-1.008010-4.el7.noarch
rest-0.8.0-1.el7.ppc64le
perl-Module-Build-0.40.05-2.el7.noarch
ibus-kkc-1.5.18-7.el7.ppc64le
webkitgtk4-plugin-process-gtk2-2.14.7-2.el7.ppc64le
basesystem-10.0-7.el7.centos.noarch
madan-fonts-2.000-11.el7.noarch
python-beaker-1.5.4-10.el7.noarch
boost-locale-1.53.0-27.el7.ppc64le
dleyna-core-0.5.0-1.el7.ppc64le
liberation-sans-fonts-1.07.2-15.el7.noarch
tk-devel-8.5.13-6.el7.ppc64le
gnome-packagekit-updater-3.22.1-2.el7.ppc64le
cim-schema-2.33.0-6.el7.noarch
lohit-assamese-fonts-2.5.3-2.el7.noarch
tagsoup-1.2.1-8.el7.noarch
libshout-2.2.2-11.el7.ppc64le
ntpdate-4.2.6p5-25.el7.centos.2.ppc64le
libproxy-0.4.11-10.el7.ppc64le
gvfs-gphoto2-1.30.4-3.el7.ppc64le
gspell-1.2.3-1.el7.ppc64le
sil-nuosu-fonts-2.1.1-5.el7.noarch
python-ntplib-0.3.2-1.el7.noarch
bc-1.06.95-13.el7.ppc64le
libvirt-daemon-driver-lxc-3.2.0-14.el7.ppc64le
libreport-anaconda-2.1.11-38.el7.centos.ppc64le
kdepimlibs-devel-4.10.5-4.el7.ppc64le
unique3-3.0.2-8.el7.ppc64le
freetype-2.4.11-15.el7.ppc64le
lohit-marathi-fonts-2.5.3-2.el7.noarch
python2-cryptography-1.7.2-1.el7.ppc64le
libss-1.42.9-10.el7.ppc64le
kernel-tools-libs-3.10.0-693.el7.ppc64le
libsysfs-2.1.0-16.el7.ppc64le
ibus-hangul-1.4.2-10.el7.ppc64le
freerdp-1.0.2-10.el7.ppc64le
popt-1.13-16.el7.ppc64le
open-sans-fonts-1.10-1.el7.noarch
bind-libs-lite-9.9.4-50.el7.ppc64le
lksctp-tools-1.0.17-2.el7.ppc64le
sssd-common-pac-1.15.2-50.el7.ppc64le
libtiff-4.0.3-27.el7_3.ppc64le
gnome-desktop3-devel-3.22.2-2.el7.ppc64le
cdrdao-1.2.3-20.el7.ppc64le
expat-2.1.0-10.el7_3.ppc64le
latrace-0.5.11-6.1.el7.ppc64le
perl-Net-SSLeay-1.55-6.el7.ppc64le
cups-libs-1.6.3-29.el7.ppc64le
dmraid-events-1.0.0.rc16-28.el7.ppc64le
rubygem-io-console-0.4.2-30.el7.ppc64le
gutenprint-cups-5.2.9-18.el7.ppc64le
xorg-x11-server-Xorg-1.19.3-11.el7.ppc64le
libtalloc-2.1.9-1.el7.ppc64le
iwl6000g2b-firmware-17.168.5.2-56.el7.noarch
nss-sysinit-3.28.4-8.el7.ppc64le
glib2-2.50.3-3.el7.ppc64le
rpm-python-4.11.3-25.el7.ppc64le
ustr-1.0.4-16.el7.ppc64le
gucharmap-3.18.2-1.el7.ppc64le
xorg-x11-drv-dummy-0.3.7-1.el7.ppc64le
libogg-1.3.0-7.el7.ppc64le
iwl6000-firmware-9.221.4.1-56.el7.noarch
docbook-dtds-1.0-60.el7.noarch
xorg-x11-proto-devel-7.7-20.el7.noarch
pygpgme-0.3-9.el7.ppc64le
openssh-7.4p1-11.el7.ppc64le
cheese-3.22.1-1.el7.ppc64le
jline-1.0-8.el7.noarch
libcap-2.22-9.el7.ppc64le
ivtv-firmware-20080701-26.el7.noarch
perl-Pod-LaTeX-0.61-2.el7.noarch
enchant-1.6.0-8.el7.ppc64le
python2-ipalib-4.5.0-20.el7.centos.noarch
tog-pegasus-libs-2.14.1-5.el7.ppc64le
firstboot-19.12-1.el7.ppc64le
gupnp-dlna-0.10.5-1.el7.ppc64le
which-2.20-7.el7.ppc64le
epel-release-7-9.noarch
perl-Net-Daemon-0.48-5.el7.noarch
libcroco-0.6.11-1.el7.ppc64le
liboauth-devel-0.9.7-4.el7.ppc64le
libhangul-0.1.0-8.el7.ppc64le
eog-3.20.5-2.el7.ppc64le
plymouth-theme-charge-0.8.9-0.28.20140113.el7.centos.ppc64le
libcollection-0.6.2-27.el7.ppc64le
libgfortran-4.8.5-16.el7_4.1.ppc64le
perl-Locale-Codes-3.26-2.el7.noarch
pygobject2-2.28.6-11.el7.ppc64le
libXdamage-1.1.4-4.1.el7.ppc64le
libestr-0.1.9-2.el7.ppc64le
PackageKit-gtk3-module-1.1.5-1.el7.centos.ppc64le
libgweather-devel-3.20.4-1.el7.ppc64le
xz-5.2.2-1.el7.ppc64le
perl-WWW-RobotRules-6.02-5.el7.noarch
libICE-devel-1.0.9-9.el7.ppc64le
libXft-2.3.2-2.el7.ppc64le
cryptsetup-libs-1.7.4-3.el7.ppc64le
alsa-plugins-pulseaudio-1.1.1-1.el7.ppc64le
glx-utils-8.2.0-3.el7.ppc64le
speex-1.2-0.19.rc1.el7.ppc64le
perl-HTTP-Negotiate-6.01-5.el7.noarch
libtirpc-0.2.4-0.10.el7.ppc64le
pulseaudio-libs-glib2-10.0-3.el7.ppc64le
mesa-libgbm-17.0.1-6.20170307.el7.ppc64le
pulseaudio-libs-devel-10.0-3.el7.ppc64le
imsettings-1.6.3-9.el7.ppc64le
hunspell-en-US-0.20121024-6.el7.noarch
perl-IO-Socket-IP-0.21-4.el7.noarch
nss-util-devel-3.28.4-3.el7.ppc64le
libXxf86vm-1.1.4-1.el7.ppc64le
hwdata-0.252-8.6.el7.ppc64le
kernel-tools-3.10.0-693.el7.ppc64le
nepomuk-core-libs-4.10.5-5.el7.ppc64le
exiv2-libs-0.23-6.el7.ppc64le
perl-libwww-perl-6.05-2.el7.noarch
p11-kit-devel-0.23.5-3.el7.ppc64le
librsvg2-2.40.16-1.el7.ppc64le
libsmbclient-4.6.2-8.el7.ppc64le
abrt-console-notification-2.1.11-48.el7.centos.ppc64le
kdesdk-okteta-libs-4.10.5-6.el7.ppc64le
boost-chrono-1.53.0-27.el7.ppc64le
iw-4.3-1.el7.ppc64le
libcom_err-devel-1.42.9-10.el7.ppc64le
akonadi-1.9.2-4.el7.ppc64le
accountsservice-libs-0.6.45-2.el7.ppc64le
wvdial-1.61-9.el7.ppc64le
libkexiv2-devel-4.10.5-3.el7.ppc64le
libmpc-1.0.1-3.el7.ppc64le
lm_sensors-devel-3.4.0-4.20160601gitf9185e5.el7.ppc64le
meanwhile-1.1.0-12.el7.ppc64le
libXt-devel-1.1.5-3.el7.ppc64le
plymouth-scripts-0.8.9-0.28.20140113.el7.centos.ppc64le
mod_fcgid-2.3.9-4.el7.ppc64le
kdepim-runtime-libs-4.10.5-3.el7.ppc64le
mesa-libglapi-17.0.1-6.20170307.el7.ppc64le
hunspell-en-GB-0.20121024-6.el7.noarch
sip-4.14.6-4.el7.ppc64le
cairomm-1.12.0-1.el7.ppc64le
abrt-addon-xorg-2.1.11-48.el7.centos.ppc64le
ModemManager-1.6.0-2.el7.ppc64le
kdenetwork-krdc-devel-4.10.5-8.el7_0.ppc64le
libieee1284-0.2.11-15.el7.ppc64le
highlight-3.13-3.el7.ppc64le
pyOpenSSL-0.13.1-3.el7.ppc64le
gtk-update-icon-cache-3.22.10-4.el7.ppc64le
NetworkManager-1.8.0-9.el7.ppc64le
crda-3.13_2016.02.08-1.el7.ppc64le
kdesdk-kompare-libs-4.10.5-6.el7.ppc64le
newt-0.52.15-4.el7.ppc64le
xcb-util-0.4.0-2.el7.ppc64le
automake-1.13.4-3.el7.noarch
libgweather-3.20.4-1.el7.ppc64le
lockdev-1.0.4-0.13.20111007git.el7.ppc64le
man-db-2.6.3-9.el7.ppc64le
gd-2.0.35-26.el7.ppc64le
exempi-2.2.0-8.el7.ppc64le
curl-7.29.0-42.el7.ppc64le
snappy-1.1.0-3.el7.ppc64le
libreport-gtk-2.1.11-38.el7.centos.ppc64le
unbound-libs-1.4.20-34.el7.ppc64le
tcpdump-4.9.0-5.el7.ppc64le
sane-backends-drivers-scanners-1.0.24-9.el7.ppc64le
libedit-3.0-12.20121213cvs.el7.ppc64le
liboauth-0.9.7-4.el7.ppc64le
libmpcdec-1.2.6-12.el7.ppc64le
libnm-gtk-1.8.0-3.el7.ppc64le
grub2-tools-extra-2.02-0.64.el7.centos.ppc64le
libdmx-1.1.3-3.el7.ppc64le
wavpack-4.60.1-9.el7.ppc64le
rasqal-0.9.30-4.el7.ppc64le
autogen-libopts-5.18-5.el7.ppc64le
gnome-bluetooth-libs-3.20.1-1.el7.ppc64le
qt-settings-19-23.5.el7.centos.noarch
libxslt-devel-1.1.28-5.el7.ppc64le
grilo-plugins-0.3.4-1.el7.ppc64le
SDL-1.2.15-14.el7.ppc64le
sip-macros-4.14.6-4.el7.ppc64le
iptables-1.4.21-18.0.1.el7.centos.ppc64le
gstreamer-plugins-good-0.10.31-13.el7.ppc64le
qjson-0.8.1-4.el7.ppc64le
perl-Test-Pod-Coverage-1.08-21.el7.noarch
pcp-conf-3.11.8-7.el7.ppc64le
perl-podlators-2.5.1-3.el7.noarch
libcurl-devel-7.29.0-42.el7.ppc64le
graphite2-devel-1.3.6-1.el7_2.ppc64le
pygtk2-2.24.0-9.el7.ppc64le
kexec-tools-2.0.14-17.el7.ppc64le
iptables-devel-1.4.21-18.0.1.el7.centos.ppc64le
gnome-shell-3.22.3-17.el7.ppc64le
perl-Carp-1.26-244.el7.noarch
liblouis-2.5.2-10.el7.ppc64le
dvd+rw-tools-7.1-15.el7.ppc64le
ptlib-2.10.10-6.el7.ppc64le
samba-common-libs-4.6.2-8.el7.ppc64le
gvfs-devel-1.30.4-3.el7.ppc64le
gnome-shell-extension-launch-new-instance-3.22.2-10.el7.noarch
perl-libs-5.16.3-292.el7.ppc64le
libselinux-utils-2.5-11.el7.ppc64le
libsepol-devel-2.5-6.el7.ppc64le
festival-lib-1.96-28.el7.ppc64le
oddjob-0.31.5-4.el7.ppc64le
latencytop-tui-0.5-13.el7.ppc64le
libvirt-daemon-driver-storage-core-3.2.0-14.el7.ppc64le
perl-Data-Dumper-2.145-3.el7.ppc64le
libreport-python-2.1.11-38.el7.centos.ppc64le
libical-devel-1.0.1-1.el7.ppc64le
libmx-1.4.7-10.el7.ppc64le
cups-pk-helper-0.2.6-2.el7.ppc64le
=== TEST BEGIN ===
Install prefix    /var/tmp/patchew-tester-tmp-r4540qbd/src/install
BIOS directory    /var/tmp/patchew-tester-tmp-r4540qbd/src/install/share/qemu
firmware path     /var/tmp/patchew-tester-tmp-r4540qbd/src/install/share/qemu-firmware
binary directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/bin
library directory /var/tmp/patchew-tester-tmp-r4540qbd/src/install/lib
module directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/lib/qemu
libexec directory /var/tmp/patchew-tester-tmp-r4540qbd/src/install/libexec
include directory /var/tmp/patchew-tester-tmp-r4540qbd/src/install/include
config directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/etc
local state directory   /var/tmp/patchew-tester-tmp-r4540qbd/src/install/var
Manual directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /var/tmp/patchew-tester-tmp-r4540qbd/src
GIT binary        git
GIT submodules    ui/keycodemapdb dtc capstone
C compiler        cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1   -I$(SRC_PATH)/dtc/libfdt -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -DNCURSES_WIDECHAR   -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -Wno-missing-braces -I/usr/include/p11-kit-1       -I/usr/include/libpng15   -I$(SRC_PATH)/capstone/include
LDFLAGS           -Wl,--warn-common -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          ppc64
host big endian   no
target list       aarch64-softmmu alpha-softmmu arm-softmmu cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu microblazeel-softmmu microblaze-softmmu mips64el-softmmu mips64-softmmu mipsel-softmmu mips-softmmu moxie-softmmu nios2-softmmu or1k-softmmu ppc64-softmmu ppcemb-softmmu ppc-softmmu s390x-softmmu sh4eb-softmmu sh4-softmmu sparc64-softmmu sparc-softmmu tricore-softmmu unicore32-softmmu x86_64-softmmu xtensaeb-softmmu xtensa-softmmu aarch64_be-linux-user aarch64-linux-user alpha-linux-user armeb-linux-user arm-linux-user cris-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblazeel-linux-user microblaze-linux-user mips64el-linux-user mips64-linux-user mipsel-linux-user mips-linux-user mipsn32el-linux-user mipsn32-linux-user nios2-linux-user or1k-linux-user ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user ppc-linux-user s390x-linux-user sh4eb-linux-user sh4-linux-user sparc32plus-linux-user sparc64-linux-user sparc-linux-user tilegx-linux-user x86_64-linux-user
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (1.2.15)
GTK support       yes (3.22.10)
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    yes
GNUTLS rnd        yes
libgcrypt         no
libgcrypt kdf     no
nettle            yes (2.7.1)
nettle kdf        yes
libtasn1          yes
curses support    yes
virgl support     no
curl support      yes
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    yes
Multipath support no
VNC support       yes
VNC SASL support  yes
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               no
vde support       no
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
HVF support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
malloc trim support yes
RDMA support      yes
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support yes
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            yes
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   no
TPM emulator      yes
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     yes
NUMA host support yes
libxml2           yes
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
capstone          git

WARNING: Use of SDL 1.2 is deprecated and will be removed in
WARNING: future releases. Please switch to using SDL 2.0
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak.tmp
  GEN     i386-softmmu/config-devices.mak.tmp
  GEN     lm32-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak.tmp
  GEN     m68k-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak.tmp
  GEN     microblaze-softmmu/config-devices.mak.tmp
  GEN     mips64-softmmu/config-devices.mak.tmp
  GEN     mipsel-softmmu/config-devices.mak.tmp
  GEN     mips64el-softmmu/config-devices.mak.tmp
  GEN     mips-softmmu/config-devices.mak.tmp
  GEN     moxie-softmmu/config-devices.mak.tmp
  GEN     nios2-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak.tmp
  GEN     ppc64-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak.tmp
  GEN     or1k-softmmu/config-devices.mak.tmp
  GEN     lm32-softmmu/config-devices.mak
  GEN     s390x-softmmu/config-devices.mak.tmp
  GEN     m68k-softmmu/config-devices.mak
  GEN     sh4-softmmu/config-devices.mak.tmp
  GEN     sh4eb-softmmu/config-devices.mak.tmp
  GEN     sparc64-softmmu/config-devices.mak.tmp
  GEN     microblaze-softmmu/config-devices.mak
  GEN     unicore32-softmmu/config-devices.mak.tmp
  GEN     tricore-softmmu/config-devices.mak.tmp
  GEN     sparc-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak
  GEN     aarch64-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak.tmp
  GEN     moxie-softmmu/config-devices.mak
  GEN     or1k-softmmu/config-devices.mak
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     i386-softmmu/config-devices.mak
  GEN     alpha-softmmu/config-devices.mak
  GEN     s390x-softmmu/config-devices.mak
  GEN     aarch64_be-linux-user/config-devices.mak.tmp
  GEN     xtensa-softmmu/config-devices.mak.tmp
  GEN     arm-linux-user/config-devices.mak.tmp
  GEN     aarch64-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak.tmp
  GEN     i386-linux-user/config-devices.mak.tmp
  GEN     hppa-linux-user/config-devices.mak.tmp
  GEN     m68k-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak.tmp
  GEN     armeb-linux-user/config-devices.mak.tmp
  GEN     microblazeel-linux-user/config-devices.mak.tmp
  GEN     mips64-linux-user/config-devices.mak.tmp
  GEN     mips64el-linux-user/config-devices.mak.tmp
  GEN     mipsel-linux-user/config-devices.mak.tmp
  GEN     nios2-linux-user/config-devices.mak.tmp
  GEN     ppc64abi32-linux-user/config-devices.mak.tmp
  GEN     ppc64le-linux-user/config-devices.mak.tmp
  GEN     ppc64-linux-user/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak
  GEN     s390x-linux-user/config-devices.mak.tmp
  GEN     alpha-linux-user/config-devices.mak.tmp
  GEN     ppc-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak.tmp
  GEN     sparc32plus-linux-user/config-devices.mak.tmp
  GEN     sparc-linux-user/config-devices.mak.tmp
  GEN     unicore32-softmmu/config-devices.mak
  GEN     sparc64-linux-user/config-devices.mak.tmp
  GEN     x86_64-linux-user/config-devices.mak.tmp
  GEN     mips-linux-user/config-devices.mak.tmp
  GEN     config-host.h
  GEN     qmp-commands.h
  GEN     mipsn32el-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak.tmp
  GEN     or1k-linux-user/config-devices.mak.tmp
  GEN     tricore-softmmu/config-devices.mak
  GEN     ppc64le-linux-user/config-devices.mak
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     sh4-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak
  GEN     s390x-linux-user/config-devices.mak
  GEN     i386-linux-user/config-devices.mak
  GEN     sparc-softmmu/config-devices.mak
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qmp-introspect.h
  GEN     qapi-event.c
  GEN     nios2-softmmu/config-devices.mak
  GEN     mipsn32-linux-user/config-devices.mak.tmp
  GEN     ppc64-softmmu/config-devices.mak
  GEN     qapi-event.h
  GIT     ui/keycodemapdb dtc capstone
  GEN     mips64el-softmmu/config-devices.mak
  GEN     mipsel-softmmu/config-devices.mak
  GEN     mips64-softmmu/config-devices.mak
  GEN     sh4eb-softmmu/config-devices.mak
  GEN     x86_64-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak
  GEN     qemu-options.def
  GEN     alpha-linux-user/config-devices.mak
  GEN     armeb-linux-user/config-devices.mak
  GEN     arm-linux-user/config-devices.mak
  GEN     mips64-linux-user/config-devices.mak
  GEN     mipsel-linux-user/config-devices.mak
  GEN     xtensa-softmmu/config-devices.mak
  GEN     aarch64-linux-user/config-devices.mak
  GEN     ppc-softmmu/config-devices.mak
  GEN     hppa-linux-user/config-devices.mak
  GEN     mips-linux-user/config-devices.mak
  GEN     qapi-visit.c
  GEN     ppc64abi32-linux-user/config-devices.mak
  GEN     ppc64-linux-user/config-devices.mak
  GEN     sh4-softmmu/config-devices.mak
  GEN     ppc-linux-user/config-devices.mak
  GEN     sh4-linux-user/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak
  GEN     sparc32plus-linux-user/config-devices.mak
  GEN     sh4eb-linux-user/config-devices.mak
  GEN     sparc-linux-user/config-devices.mak
  GEN     microblazeel-linux-user/config-devices.mak
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     sparc64-linux-user/config-devices.mak
  GEN     x86_64-linux-user/config-devices.mak
  GEN     tilegx-linux-user/config-devices.mak
  GEN     trace/generated-helpers-wrappers.h
  GEN     mips-softmmu/config-devices.mak
  GEN     mipsn32el-linux-user/config-devices.mak
  GEN     trace/generated-helpers.h
  GEN     m68k-linux-user/config-devices.mak
  GEN     aarch64_be-linux-user/config-devices.mak
  GEN     sparc64-softmmu/config-devices.mak
  GEN     trace/generated-helpers.c
  GEN     mipsn32-linux-user/config-devices.mak
  GEN     nios2-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak
  GEN     cris-linux-user/config-devices.mak
  GEN     module_block.h
  GEN     or1k-linux-user/config-devices.mak
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sparc64/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/pci-host/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     scsi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sparc64/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/pci-host/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
  GEN     ui/input-keymap-atset1-to-qcode.c
  GEN     ui/input-keymap-linux-to-qcode.c
  GEN     ui/input-keymap-qcode-to-atset1.c
  GEN     ui/input-keymap-qcode-to-atset2.c
  GEN     ui/input-keymap-qcode-to-atset3.c
  GEN     ui/input-keymap-qcode-to-linux.c
  GEN     ui/input-keymap-qcode-to-qnum.c
  GEN     ui/input-keymap-qnum-to-qcode.c
  GEN     ui/input-keymap-usb-to-qcode.c
  GEN     ui/input-keymap-win32-to-qcode.c
  GEN     ui/input-keymap-x11-to-qcode.c
  GEN     ui/input-keymap-qcode-to-sun.c
  GEN     ui/input-keymap-xorgkbd-to-qcode.c
  GEN     ui/input-keymap-xorgxquartz-to-qcode.c
  GEN     ui/input-keymap-xorgxwin-to-qcode.c
  GEN     ui/input-keymap-xorgevdev-to-qcode.c
  CC      cs.o
  CC      utils.o
  CC      SStream.o
  CC      MCInstrDesc.o
  CC      MCRegisterInfo.o
  CC      arch/ARM/ARMDisassembler.o
  CC      arch/ARM/ARMInstPrinter.o
  CC      arch/ARM/ARMMapping.o
  CC      arch/ARM/ARMModule.o
  CC      arch/AArch64/AArch64Disassembler.o
  CC      arch/AArch64/AArch64BaseInfo.o
  CC      arch/AArch64/AArch64InstPrinter.o
  CC      arch/AArch64/AArch64Mapping.o
  CC      arch/AArch64/AArch64Module.o
  CC      arch/Mips/MipsDisassembler.o
  CC      arch/Mips/MipsInstPrinter.o
  CC      arch/Mips/MipsModule.o
  CC      arch/Mips/MipsMapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dumptrees.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/trees.S
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/testutils.c
  CC      arch/PowerPC/PPCDisassembler.o
  CC      arch/PowerPC/PPCInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/value-labels.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/asm_tree_dump.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/truncated_property.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/check_path.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/overlay_bad_fixup.c
  CC      arch/PowerPC/PPCMapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/overlay.c
  CC      arch/PowerPC/PPCModule.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/subnode_iterate.c
  CC      arch/Sparc/SparcDisassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/property_iterate.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/integer-expressions.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/utilfdt_test.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/path_offset_aliases.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/add_subnode_with_nops.c
  CC      arch/Sparc/SparcInstPrinter.o
  CC      arch/Sparc/SparcMapping.o
  CC      arch/Sparc/SparcModule.o
  CC      arch/SystemZ/SystemZDisassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dtbs_equal_unordered.c
  CC      arch/SystemZ/SystemZInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dtb_reverse.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dtbs_equal_ordered.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/extra-terminating-null.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/incbin.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/boot-cpuid.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/phandle_format.c
  CC      arch/SystemZ/SystemZMapping.o
  CC      arch/SystemZ/SystemZModule.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/path-references.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/references.c
  CC      arch/SystemZ/SystemZMCTargetDesc.o
  CC      arch/X86/X86DisassemblerDecoder.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/string_escapes.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/propname_escapes.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/appendprop2.c
  CC      arch/X86/X86Disassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/appendprop1.c
  CC      arch/X86/X86IntelInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/del_node.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/del_property.c
  CC      arch/X86/X86ATTInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/setprop.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/set_name.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/rw_tree1.c
  CC      arch/X86/X86Mapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/nopulate.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/open_pack.c
  CC      arch/X86/X86Module.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/mangle-layout.c
  CC      arch/XCore/XCoreDisassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/move_and_save.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/sw_tree1.c
  CC      arch/XCore/XCoreInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/nop_node.c
  CC      arch/XCore/XCoreMapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/nop_property.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/setprop_inplace.c
  CC      arch/XCore/XCoreModule.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/stringlist.c
  CC      MCInst.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/addr_size_cells.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/notfound.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/sized_cells.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/char_literal.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_offset_by_compatible.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_alias.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_check_compatible.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_offset_by_phandle.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/parent_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/supernode_atdepth_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_path.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_offset_by_prop_value.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_phandle.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/subnode_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/find_property.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/root_node.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_mem_rsv.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/getprop.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_name.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_addresses.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_overlay.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/path_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_empty_tree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_strerror.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_rw.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_sw.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_wip.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_ro.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/util.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtoverlay.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtput.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtget.c
	 BISON dtc-parser.tab.c
	 LEX convert-dtsv0-lexer.lex.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/srcpos.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtdump.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/treesource.c
	 LEX dtc-lexer.lex.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/livetree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fstree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/flattree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/data.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/dtc.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/checks.c
	 DEP convert-dtsv0-lexer.lex.c
	 DEP dtc-parser.tab.c
	 DEP dtc-lexer.lex.c
	CHK version_gen.h
	UPD version_gen.h
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/util.c
	 CC libfdt/fdt.o
	 CC libfdt/fdt_ro.o
	 CC libfdt/fdt_wip.o
	 CC libfdt/fdt_sw.o
	 CC libfdt/fdt_rw.o
	 CC libfdt/fdt_strerror.o
	 CC libfdt/fdt_empty_tree.o
	 CC libfdt/fdt_addresses.o
	 CC libfdt/fdt_overlay.o
	 AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
  AR      libcapstone.a
ar: creating /var/tmp/patchew-tester-tmp-r4540qbd/src/build/capstone/libcapstone.a
  CC      tests/qemu-iotests/socket_scm_helper.o
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      qapi-types.o
  CC      qmp-introspect.o
  CC      qapi-visit.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi-event.o
  CC      qapi/qmp-registry.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qstring.o
  CC      qobject/qnum.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qobject.o
  CC      qobject/qjson.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/thread-pool.o
  CC      util/async.o
  CC      util/oslib-posix.o
  CC      util/aio-posix.o
  CC      util/mmap-alloc.o
  CC      util/main-loop.o
  CC      util/compatfd.o
  CC      util/iohandler.o
  CC      util/qemu-openpty.o
  CC      util/qemu-timer.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/event_notifier-posix.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/envlist.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/hbitmap.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/qemu-progress.o
  CC      util/crc32c.o
  CC      util/getauxval.o
  CC      util/throttle.o
  CC      util/uuid.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/timed-average.o
  CC      util/buffer.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/pagesize.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sparc64/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/pci-host/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      target/arm/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/mips/trace.o
  CC      target/i386/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/get-vm-name.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/iothread.o
  CC      stubs/is-daemonized.o
  CC      stubs/iothread-lock.o
  CC      stubs/linux-aio.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/sysbus.o
  CC      stubs/tpm.o
  CC      stubs/slirp.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-bitmap.o
  CC      block/qcow2-cache.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/qed-table.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/linux-aio.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      scsi/pr-manager.o
  CC      scsi/pr-manager-helper.o
  CC      block/curl.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-gnutls.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/net-listener.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      qemu-io.o
  CC      fsdev/virtfs-proxy-helper.o
  CC      fsdev/9p-marshal.o
  CC      fsdev/9p-iov-marshal.o
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      bootdevice.o
  CC      blockdev-nbd.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      os-posix.o
  CC      device-hotplug.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      hmp.o
  CC      qmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-file.o
  CC      backends/hostmem-ram.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      chardev/msmouse.o
  CC      block/stream.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      disas/alpha.o
  CC      disas/arm.o
  CXX     disas/arm-a64.o
  CC      disas/cris.o
  CC      disas/hppa.o
  CC      disas/i386.o
  CC      disas/m68k.o
  CC      disas/mips.o
  CC      disas/microblaze.o
  CC      disas/nios2.o
  CC      disas/moxie.o
  CC      disas/ppc.o
  CC      disas/s390.o
  CC      disas/sh4.o
  CC      disas/sparc.o
  CC      disas/lm32.o
  CC      disas/xtensa.o
  CXX     disas/libvixl/vixl/utils.o
  CXX     disas/libvixl/vixl/compiler-intrinsics.o
  CXX     disas/libvixl/vixl/a64/instructions-a64.o
  CXX     disas/libvixl/vixl/a64/disasm-a64.o
  CXX     disas/libvixl/vixl/a64/decoder-a64.o
  CC      fsdev/qemu-fsdev.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      hw/9pfs/9p.o
  CC      hw/9pfs/9p-local.o
  CC      hw/9pfs/9p-util.o
  CC      hw/9pfs/9p-xattr.o
  CC      hw/9pfs/9p-xattr-user.o
  CC      hw/9pfs/9p-posix-acl.o
  CC      hw/9pfs/coth.o
  CC      hw/9pfs/cofs.o
  CC      hw/9pfs/codir.o
  CC      hw/9pfs/coxattr.o
  CC      hw/9pfs/cofile.o
  CC      hw/9pfs/9p-synth.o
  CC      hw/9pfs/9p-handle.o
  CC      hw/9pfs/9p-proxy.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/cs4231.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/milkymist-ac97.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/fdc.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/escc.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/xilinx_uartlite.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/etraxfs_ser.o
  CC      hw/char/debugcon.o
  CC      hw/char/grlib_apbuart.o
  CC      hw/char/imx_serial.o
  CC      hw/char/lm32_juart.o
  CC      hw/char/lm32_uart.o
  CC      hw/char/milkymist-uart.o
  CC      hw/char/sclpconsole.o
  CC      hw/char/sclpconsole-lm.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/qdev-fw.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/empty_slot.o
  CC      hw/core/stream.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/loader-fit.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/g364fb.o
  CC      hw/display/jazz_led.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vga-isa-mm.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/milkymist-vgafb.o
  CC      hw/display/tc6393xb.o
  CC      hw/dma/puv3_dma.o
  CC      hw/dma/rc4030.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i82374.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xilinx_axidma.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/dma/sparc32_dma.o
  CC      hw/dma/etraxfs_dma.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/puv3_gpio.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/mpc8xxx.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/cmd646.o
  CC      hw/ide/macio.o
  CC      hw/ide/mmio.o
  CC      hw/ide/via.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/ide/ahci-allwinner.o
  CC      hw/ide/sii3112.o
  CC      hw/input/adb.o
  CC      hw/input/adb-mouse.o
  CC      hw/input/adb-kbd.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-host.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/intc/heathrow_pic.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/puv3_intc.o
  CC      hw/intc/xilinx_intc.o
  CC      hw/intc/xlnx-pmu-iomod-intc.o
  CC      hw/intc/xlnx-zynqmp-ipi.o
  CC      hw/intc/etraxfs_pic.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/lm32_pic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/slavio_intctl.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/openpic.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/i82378.o
  CC      hw/isa/apm.o
  CC      hw/isa/pc87312.o
  CC      hw/isa/piix4.o
  CC      hw/isa/vt82c686.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/vmcoreinfo.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/misc/puv3_pm.o
  CC      hw/misc/macio/macio.o
  CC      hw/misc/macio/mac_dbdma.o
  CC      hw/misc/macio/cuda.o
  CC      hw/net/dp8393x.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/opencores_eth.o
  CC      hw/net/xgmac.o
  CC      hw/net/mipsnet.o
  CC      hw/net/xilinx_axienet.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/lance.o
  CC      hw/net/sunhme.o
  CC      hw/net/sungem.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/eeprom_at24c.o
  CC      hw/nvram/ds1225y.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/nvram/mac_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-bridge/dec.o
  CC      hw/pci-bridge/simba.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/prep.o
  CC      hw/pci-host/grackle.o
  CC      hw/pci-host/uninorth.o
  CC      hw/pci-host/ppce500.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/sabre.o
  CC      hw/pci-host/bonito.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci-host/xilinx-pcie.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/m48t59.o
  CC      hw/timer/m48t59-isa.o
  CC      hw/timer/pl031.o
  CC      hw/timer/puv3_ost.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/xilinx_timer.o
  CC      hw/timer/slavio_timer.o
  CC      hw/timer/etraxfs_timer.o
  CC      hw/timer/grlib_gptimer.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/lm32_timer.o
  CC      hw/timer/milkymist-sysctl.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/sun4v-rtc.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_util.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/tpm/tpm_emulator.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/host-libusb.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_diag288.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo-failover.o
  CC      migration/colo.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/qemu-file-channel.o
  CC      migration/global_state.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/rdma.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/l2tpv3.o
  CC      net/eth.o
  CC      net/vhost-user.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dhcpv6.o
  CC      slirp/dnssearch.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/tcp_input.o
  CC      slirp/socket.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/sdl.o
  CC      ui/sdl_zoom.o
  CC      ui/vnc.o
  CC      ui/curses.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-auth-sasl.o
  CC      ui/vnc-jobs.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/gtk.o
  CC      ui/x_keymap.o
  CC      chardev/char.o
  CC      chardev/char-fe.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-fd.o
  CC      chardev/char-file.o
  CC      chardev/char-null.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  LINK    tests/qemu-iotests/socket_scm_helper
  CCAS    spapr-rtas/spapr-rtas.o
  CC      qga/commands.o
  CC      qga/guest-agent-command-state.o
  CC      qga/main.o
  Building spapr-rtas/spapr-rtas.img
  Building spapr-rtas/spapr-rtas.bin
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  CC      qemu-img.o
  AR      libqemuutil.a
  LINK    qemu-ga
  LINK    ivshmem-client
  LINK    ivshmem-server
  LINK    qemu-nbd
  LINK    qemu-img
  LINK    qemu-io
  LINK    fsdev/virtfs-proxy-helper
  LINK    scsi/qemu-pr-helper
  LINK    qemu-bridge-helper
  GEN     aarch64-linux-user/config-target.h
  CC      aarch64-linux-user/exec.o
  CC      aarch64-linux-user/tcg/tcg.o
  CC      aarch64-linux-user/tcg/tcg-op.o
  CC      aarch64-linux-user/tcg/optimize.o
  CC      aarch64-linux-user/tcg/tcg-common.o
  GEN     or1k-linux-user/config-target.h
  CC      aarch64-linux-user/fpu/softfloat.o
  CC      aarch64-linux-user/disas.o
  GEN     aarch64-linux-user/gdbstub-xml.c
  CC      aarch64-linux-user/thunk.o
  CC      aarch64-linux-user/gdbstub.o
  CC      aarch64-linux-user/accel/stubs/hax-stub.o
  GEN     microblazeel-linux-user/config-target.h
  GEN     alpha-linux-user/config-target.h
  CC      or1k-linux-user/exec.o
  CC      or1k-linux-user/tcg/tcg.o
  CC      or1k-linux-user/tcg/tcg-op.o
  GEN     ppc-linux-user/config-target.h
  CC      aarch64-linux-user/accel/stubs/hvf-stub.o
  GEN     mipsel-linux-user/config-target.h
  GEN     mips64-linux-user/config-target.h
  CC      aarch64-linux-user/accel/stubs/kvm-stub.o
  CC      aarch64-linux-user/accel/tcg/cpu-exec.o
  CC      aarch64-linux-user/accel/tcg/tcg-runtime.o
  GEN     sparc64-linux-user/config-target.h
  CC      aarch64-linux-user/accel/tcg/cpu-exec-common.o
  CC      or1k-linux-user/fpu/softfloat.o
  CC      or1k-linux-user/tcg/optimize.o
  CC      aarch64-linux-user/accel/tcg/translate-all.o
  CC      or1k-linux-user/disas.o
  CC      aarch64-linux-user/accel/tcg/translator.o
  CC      or1k-linux-user/tcg/tcg-common.o
  CC      aarch64-linux-user/accel/tcg/user-exec.o
  GEN     hppa-linux-user/config-target.h
  CC      aarch64-linux-user/accel/tcg/user-exec-stub.o
  CC      or1k-linux-user/gdbstub.o
  CC      or1k-linux-user/thunk.o
  CC      alpha-linux-user/exec.o
  CC      aarch64-linux-user/linux-user/main.o
  CC      mipsel-linux-user/exec.o
  CC      aarch64-linux-user/linux-user/strace.o
  CC      microblazeel-linux-user/tcg/tcg.o
  CC      aarch64-linux-user/linux-user/syscall.o
  CC      or1k-linux-user/accel/stubs/hax-stub.o
  CC      microblazeel-linux-user/exec.o
  CC      or1k-linux-user/accel/stubs/kvm-stub.o
  CC      mipsel-linux-user/tcg/optimize.o
  CC      mipsel-linux-user/tcg/tcg.o
  CC      mipsel-linux-user/tcg/tcg-common.o
  CC      sparc64-linux-user/exec.o
  CC      alpha-linux-user/tcg/tcg.o
  GEN     armeb-linux-user/config-target.h
  CC      or1k-linux-user/accel/stubs/hvf-stub.o
  GEN     i386-linux-user/config-target.h
  CC      sparc64-linux-user/tcg/tcg.o
  GEN     sparc-linux-user/config-target.h
  GEN     mips64el-linux-user/config-target.h
  CC      mipsel-linux-user/tcg/tcg-op.o
  GEN     mipsn32el-linux-user/config-target.h
  GEN     x86_64-linux-user/config-target.h
  GEN     aarch64_be-linux-user/config-target.h
  GEN     ppc64le-linux-user/config-target.h
  GEN     m68k-linux-user/config-target.h
  GEN     sh4-linux-user/config-target.h
  GEN     cris-linux-user/config-target.h
  GEN     sparc32plus-linux-user/config-target.h
  GEN     ppc64-linux-user/config-target.h
  GEN     nios2-linux-user/config-target.h
  GEN     arm-linux-user/config-target.h
  CC      ppc-linux-user/exec.o
  CC      hppa-linux-user/exec.o
  CC      i386-linux-user/exec.o
  CC      ppc64le-linux-user/exec.o
  CC      armeb-linux-user/exec.o
  CC      mipsn32el-linux-user/exec.o
  CC      sparc-linux-user/exec.o
  CC      x86_64-linux-user/exec.o
  CC      s390x-linux-user/gen-features
  CC      mips64-linux-user/exec.o
  GEN     mips-linux-user/config-target.h
  GEN     microblaze-linux-user/config-target.h
  CC      sh4-linux-user/exec.o
  GEN     tilegx-linux-user/config-target.h
  CC      mips64el-linux-user/exec.o
  CC      sparc32plus-linux-user/exec.o
  CC      aarch64_be-linux-user/exec.o
  CC      nios2-linux-user/exec.o
  CC      m68k-linux-user/exec.o
  GEN     mipsn32-linux-user/config-target.h
  CC      ppc64-linux-user/exec.o
  CC      cris-linux-user/exec.o
  GEN     ppc64abi32-linux-user/config-target.h
  CC      arm-linux-user/exec.o
  GEN     sh4eb-linux-user/config-target.h
  CC      mips-linux-user/exec.o
  CC      tilegx-linux-user/exec.o
  CC      microblaze-linux-user/exec.o
  CC      ppc64abi32-linux-user/exec.o
  CC      mipsn32-linux-user/exec.o
  GEN     or1k-softmmu/hmp-commands.h
  CC      sh4eb-linux-user/exec.o
  CC      sh4eb-linux-user/tcg/tcg.o
  GEN     s390x-linux-user/config-target.h
  GEN     or1k-softmmu/hmp-commands-info.h
  GEN     s390x-linux-user/gen-features.h
  CC      or1k-linux-user/accel/tcg/tcg-runtime.o
  CC      hppa-linux-user/tcg/tcg.o
  GEN     cris-softmmu/hmp-commands.h
  CC      cris-linux-user/tcg/tcg.o
  CC      microblaze-linux-user/tcg/tcg.o
  CC      hppa-linux-user/tcg/tcg-op.o
  CC      alpha-linux-user/tcg/tcg-op.o
  CC      s390x-linux-user/exec.o
  CC      hppa-linux-user/tcg/optimize.o
  CC      hppa-linux-user/tcg/tcg-common.o
  GEN     microblaze-softmmu/hmp-commands.h
  CC      m68k-linux-user/tcg/tcg.o
  CC      armeb-linux-user/tcg/tcg.o
  GEN     or1k-softmmu/config-target.h
  GEN     moxie-softmmu/hmp-commands.h
  GEN     cris-softmmu/hmp-commands-info.h
  GEN     m68k-softmmu/hmp-commands.h
  CC      cris-linux-user/tcg/tcg-op.o
  CC      or1k-softmmu/exec.o
  GEN     cris-softmmu/config-target.h
  CC      cris-linux-user/tcg/optimize.o
  CC      cris-softmmu/exec.o
  CC      s390x-linux-user/tcg/tcg.o
  GEN     microblaze-softmmu/hmp-commands-info.h
  CC      sparc32plus-linux-user/tcg/tcg.o
  GEN     m68k-softmmu/hmp-commands-info.h
  GEN     nios2-softmmu/hmp-commands.h
  GEN     moxie-softmmu/hmp-commands-info.h
  GEN     tricore-softmmu/hmp-commands.h
  CC      armeb-linux-user/tcg/tcg-op.o
  GEN     xtensaeb-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands.h
  GEN     microblaze-softmmu/config-target.h
  GEN     unicore32-softmmu/hmp-commands.h
  GEN     xtensaeb-softmmu/hmp-commands-info.h
  GEN     m68k-softmmu/config-target.h
  CC      microblaze-softmmu/exec.o
  CC      mips64-linux-user/tcg/tcg.o
  CC      ppc64le-linux-user/tcg/tcg.o
  CC      m68k-softmmu/exec.o
  GEN     moxie-softmmu/config-target.h
  CC      moxie-softmmu/exec.o
  GEN     tricore-softmmu/hmp-commands-info.h
  CC      i386-linux-user/tcg/tcg.o
  GEN     nios2-softmmu/hmp-commands-info.h
  CC      tilegx-linux-user/tcg/tcg.o
  CC      mipsn32el-linux-user/tcg/tcg.o
  GEN     unicore32-softmmu/hmp-commands-info.h
  CC      ppc64abi32-linux-user/tcg/tcg.o
  CC      i386-linux-user/tcg/tcg-op.o
  GEN     lm32-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands-info.h
  CC      mipsn32el-linux-user/tcg/tcg-op.o
  GEN     microblazeel-softmmu/hmp-commands.h
  GEN     tricore-softmmu/config-target.h
  CC      sh4eb-linux-user/tcg/tcg-op.o
  CC      sh4eb-linux-user/tcg/optimize.o
  CC      tilegx-linux-user/tcg/tcg-op.o
  GEN     sh4eb-softmmu/hmp-commands.h
  GEN     xtensaeb-softmmu/config-target.h
  CC      aarch64_be-linux-user/tcg/tcg.o
  CC      tricore-softmmu/exec.o
  CC      aarch64_be-linux-user/tcg/tcg-op.o
  GEN     nios2-softmmu/config-target.h
  CC      mipsel-linux-user/fpu/softfloat.o
  CC      sparc64-linux-user/tcg/tcg-op.o
  CC      ppc64abi32-linux-user/tcg/tcg-op.o
  GEN     unicore32-softmmu/config-target.h
  CC      xtensaeb-softmmu/exec.o
  CC      xtensaeb-softmmu/tcg/tcg.o
  CC      nios2-softmmu/exec.o
  CC      mips-linux-user/tcg/tcg.o
  GEN     sparc-softmmu/hmp-commands.h
  CC      sh4-linux-user/tcg/tcg.o
  GEN     ppc-softmmu/hmp-commands.h
  CC      cris-softmmu/tcg/tcg.o
  CC      mipsn32el-linux-user/tcg/optimize.o
  CC      unicore32-softmmu/exec.o
  CC      mips64el-linux-user/tcg/tcg.o
  CC      x86_64-linux-user/tcg/tcg.o
  CC      alpha-linux-user/tcg/optimize.o
  GEN     lm32-softmmu/hmp-commands-info.h
  GEN     alpha-softmmu/config-target.h
  GEN     microblazeel-softmmu/hmp-commands-info.h
  CC      alpha-linux-user/tcg/tcg-common.o
  CC      mipsel-linux-user/disas.o
  GEN     sh4eb-softmmu/hmp-commands-info.h
  CC      alpha-softmmu/exec.o
  GEN     arm-softmmu/hmp-commands.h
  CC      nios2-linux-user/tcg/tcg.o
  CC      ppc64-linux-user/tcg/tcg.o
  GEN     lm32-softmmu/config-target.h
  CC      arm-linux-user/tcg/tcg.o
  GEN     s390x-softmmu/hmp-commands.h
  GEN     sparc-softmmu/hmp-commands-info.h
  CC      arm-linux-user/tcg/tcg-op.o
  GEN     mips-softmmu/hmp-commands.h
  GEN     mips-softmmu/hmp-commands-info.h
  CC      lm32-softmmu/exec.o
  GEN     microblazeel-softmmu/config-target.h
  GEN     i386-softmmu/hmp-commands.h
  CC      mipsn32-linux-user/tcg/tcg.o
  GEN     sparc-softmmu/config-target.h
  GEN     ppc-softmmu/hmp-commands-info.h
  GEN     xtensa-softmmu/hmp-commands.h
  CC      microblazeel-softmmu/exec.o
  CC      sparc-softmmu/exec.o
  GEN     sh4eb-softmmu/config-target.h
  GEN     ppc64-softmmu/hmp-commands.h
  CC      sparc-linux-user/tcg/tcg.o
  CC      sparc-softmmu/tcg/tcg.o
  GEN     sparc64-softmmu/hmp-commands.h
  CC      sh4eb-softmmu/exec.o
  CC      sparc-softmmu/tcg/tcg-op.o
  GEN     ppc-softmmu/config-target.h
  CC      mipsn32el-linux-user/tcg/tcg-common.o
  GEN     ppcemb-softmmu/hmp-commands.h
  GEN     sh4-softmmu/hmp-commands.h
  CC      ppc-softmmu/exec.o
  CC      mipsn32el-linux-user/fpu/softfloat.o
  GEN     arm-softmmu/hmp-commands-info.h
  GEN     mips64-softmmu/hmp-commands.h
  GEN     s390x-softmmu/hmp-commands-info.h
  CC      ppc-linux-user/tcg/tcg.o
  GEN     mips-softmmu/config-target.h
  GEN     i386-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/hmp-commands.h
  CC      mips-softmmu/exec.o
  GEN     arm-softmmu/config-target.h
  GEN     i386-softmmu/config-target.h
  CC      arm-softmmu/exec.o
  GEN     ppcemb-softmmu/hmp-commands-info.h
  GEN     xtensa-softmmu/hmp-commands-info.h
  CC      s390x-softmmu/gen-features
  GEN     ppcemb-softmmu/config-target.h
  GEN     ppc64-softmmu/hmp-commands-info.h
  CC      cris-softmmu/tcg/tcg-op.o
  CC      arm-softmmu/tcg/tcg.o
  CC      ppc64abi32-linux-user/tcg/optimize.o
  GEN     mips64el-softmmu/hmp-commands.h
  CC      i386-softmmu/exec.o
  GEN     mipsel-softmmu/hmp-commands.h
  GEN     xtensa-softmmu/config-target.h
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     sparc64-softmmu/hmp-commands-info.h
  CC      ppcemb-softmmu/exec.o
  GEN     sh4-softmmu/hmp-commands-info.h
  GEN     mips64-softmmu/hmp-commands-info.h
  CC      xtensa-softmmu/exec.o
  CC      m68k-linux-user/tcg/tcg-op.o
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     ppc64-softmmu/config-target.h
  GEN     sparc64-softmmu/config-target.h
  GEN     mipsel-softmmu/hmp-commands-info.h
  GEN     s390x-softmmu/config-target.h
  CC      ppc64-softmmu/exec.o
  GEN     sh4-softmmu/config-target.h
  GEN     aarch64-softmmu/config-target.h
  CC      sparc64-softmmu/exec.o
  GEN     s390x-softmmu/gen-features.h
  CC      ppc64-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/exec.o
  CC      sh4-softmmu/exec.o
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     mips64-softmmu/config-target.h
  CC      s390x-softmmu/exec.o
  GEN     mips64el-softmmu/hmp-commands-info.h
  GEN     mipsel-softmmu/config-target.h
  CC      mips64-softmmu/exec.o
  CC      sh4-linux-user/tcg/tcg-op.o
  CC      mipsel-softmmu/exec.o
  GEN     x86_64-softmmu/config-target.h
  CC      m68k-linux-user/tcg/optimize.o
  CC      armeb-linux-user/tcg/optimize.o
  CC      x86_64-softmmu/exec.o
  GEN     mips64el-softmmu/config-target.h
  CC      mips64el-softmmu/exec.o
  CC      or1k-linux-user/accel/tcg/cpu-exec.o
  CC      arm-linux-user/tcg/optimize.o
  CC      ppc-softmmu/tcg/tcg.o
  CC      x86_64-linux-user/tcg/tcg-op.o
  CC      moxie-softmmu/tcg/tcg.o
  CC      s390x-linux-user/tcg/tcg-op.o
  CC      sh4eb-softmmu/tcg/tcg.o
  CC      xtensaeb-softmmu/tcg/tcg-op.o
  CC      microblazeel-linux-user/tcg/tcg-op.o
  CC      aarch64_be-linux-user/tcg/optimize.o
  CC      xtensa-softmmu/tcg/tcg.o
  CC      ppc-softmmu/tcg/tcg-op.o
  CC      nios2-softmmu/tcg/tcg.o
  CC      mipsn32-linux-user/tcg/tcg-op.o
  CC      nios2-linux-user/tcg/tcg-op.o
  CC      i386-linux-user/tcg/optimize.o
  CC      microblaze-linux-user/tcg/tcg-op.o
  CC      sh4-linux-user/tcg/optimize.o
  CC      microblaze-linux-user/tcg/optimize.o
  CC      mips64-softmmu/tcg/tcg.o
  CC      mips64-softmmu/tcg/tcg-op.o
  CC      tilegx-linux-user/tcg/optimize.o
  CC      sh4eb-softmmu/tcg/tcg-op.o
  CC      ppc64abi32-linux-user/tcg/tcg-common.o
  CC      sparc32plus-linux-user/tcg/tcg-op.o
  CC      mips64-linux-user/tcg/tcg-op.o
  CC      tilegx-linux-user/tcg/tcg-common.o
  CC      x86_64-softmmu/tcg/tcg.o
  CC      microblazeel-softmmu/tcg/tcg.o
  CC      alpha-linux-user/fpu/softfloat.o
  CC      sparc64-softmmu/tcg/tcg.o
  CC      alpha-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/tcg/tcg.o
  CC      ppc64abi32-linux-user/fpu/softfloat.o
  CC      x86_64-linux-user/tcg/optimize.o
  CC      x86_64-linux-user/tcg/tcg-common.o
  CC      sparc-linux-user/tcg/tcg-op.o
  CC      microblaze-linux-user/tcg/tcg-common.o
  CC      arm-linux-user/tcg/tcg-common.o
  CC      sh4eb-linux-user/tcg/tcg-common.o
  CC      x86_64-linux-user/fpu/softfloat.o
  CC      sparc32plus-linux-user/tcg/optimize.o
  CC      alpha-linux-user/disas.o
  CC      hppa-linux-user/fpu/softfloat.o
  CC      arm-linux-user/fpu/softfloat.o
  CC      aarch64_be-linux-user/tcg/tcg-common.o
  CC      arm-linux-user/disas.o
  CC      sparc-linux-user/tcg/optimize.o
  CC      ppcemb-softmmu/tcg/tcg.o
  CC      sh4eb-linux-user/fpu/softfloat.o
  CC      sh4eb-linux-user/disas.o
  CC      or1k-softmmu/tcg/tcg.o
  CC      or1k-softmmu/tcg/tcg-op.o
  CC      armeb-linux-user/tcg/tcg-common.o
  CC      alpha-softmmu/tcg/tcg-op.o
  CC      ppc64abi32-linux-user/disas.o
  CC      cris-linux-user/tcg/tcg-common.o
  CC      or1k-linux-user/accel/tcg/cpu-exec-common.o
  CC      nios2-softmmu/tcg/tcg-op.o
  CC      sparc64-linux-user/tcg/optimize.o
  CC      nios2-softmmu/tcg/optimize.o
  CC      aarch64_be-linux-user/fpu/softfloat.o
  CC      i386-linux-user/tcg/tcg-common.o
  CC      microblaze-softmmu/tcg/tcg.o
  CC      i386-linux-user/fpu/softfloat.o
  CC      tilegx-linux-user/fpu/softfloat.o
  CC      cris-linux-user/fpu/softfloat.o
  CC      sparc64-linux-user/tcg/tcg-common.o
  CC      sh4-linux-user/tcg/tcg-common.o
  CC      sparc64-softmmu/tcg/tcg-op.o
  CC      i386-linux-user/disas.o
  CC      m68k-linux-user/tcg/tcg-common.o
  CC      armeb-linux-user/fpu/softfloat.o
  CC      or1k-linux-user/accel/tcg/translate-all.o
  CC      ppc64le-linux-user/tcg/tcg-op.o
  CC      aarch64_be-linux-user/disas.o
  CC      mips-softmmu/tcg/tcg.o
  CC      xtensa-softmmu/tcg/tcg-op.o
  CC      sparc64-softmmu/tcg/optimize.o
  CC      lm32-softmmu/tcg/tcg.o
  CC      m68k-softmmu/tcg/tcg.o
  CC      sparc64-softmmu/tcg/tcg-common.o
  CC      mips64-softmmu/tcg/optimize.o
  CC      or1k-linux-user/accel/tcg/translator.o
  CC      moxie-softmmu/tcg/tcg-op.o
  CC      moxie-softmmu/tcg/optimize.o
  CC      m68k-linux-user/fpu/softfloat.o
  CC      mips64el-linux-user/tcg/tcg-op.o
  CC      sh4-linux-user/fpu/softfloat.o
  CC      mips-linux-user/tcg/tcg-op.o
  CC      m68k-linux-user/disas.o
  CC      mipsel-softmmu/tcg/tcg.o
  GEN     m68k-linux-user/gdbstub-xml.c
  CC      cris-softmmu/tcg/optimize.o
  CC      ppc64-linux-user/tcg/tcg-op.o
  CC      ppc64-linux-user/tcg/optimize.o
  CC      mips64el-linux-user/tcg/optimize.o
  CC      ppc-softmmu/tcg/optimize.o
  GEN     ppc64abi32-linux-user/gdbstub-xml.c
  CC      mips64-softmmu/tcg/tcg-common.o
  CC      hppa-linux-user/disas.o
  CC      s390x-softmmu/tcg/tcg.o
  CC      tricore-softmmu/tcg/tcg.o
  CC      sparc32plus-linux-user/tcg/tcg-common.o
  CC      nios2-linux-user/tcg/optimize.o
  CC      hppa-linux-user/gdbstub.o
  CC      microblazeel-linux-user/tcg/optimize.o
  CC      m68k-linux-user/gdbstub.o
  CC      s390x-linux-user/tcg/optimize.o
  CC      unicore32-softmmu/tcg/tcg.o
  CC      i386-softmmu/tcg/tcg.o
  CC      s390x-linux-user/tcg/tcg-common.o
  GEN     arm-linux-user/gdbstub-xml.c
  CC      sparc-softmmu/tcg/optimize.o
  CC      sh4-softmmu/tcg/tcg.o
  CC      mips-linux-user/tcg/optimize.o
  CC      mips64el-softmmu/tcg/tcg.o
  CC      sparc64-softmmu/fpu/softfloat.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      mipsel-linux-user/gdbstub.o
  CC      mipsel-linux-user/thunk.o
  CC      or1k-linux-user/accel/tcg/user-exec.o
  CC      mipsel-softmmu/tcg/tcg-op.o
  CC      armeb-linux-user/disas.o
  CC      xtensa-softmmu/tcg/optimize.o
  CC      ppc64abi32-linux-user/gdbstub.o
  CC      aarch64-linux-user/linux-user/mmap.o
  CC      sparc-softmmu/tcg/tcg-common.o
  CC      ppcemb-softmmu/tcg/tcg-op.o
  CC      ppc-linux-user/tcg/tcg-op.o
  CC      ppc64-softmmu/tcg/tcg-op.o
  CC      xtensaeb-softmmu/tcg/optimize.o
  GEN     armeb-linux-user/gdbstub-xml.c
  CC      nios2-softmmu/tcg/tcg-common.o
  CC      ppc-linux-user/tcg/optimize.o
  CC      mipsel-softmmu/tcg/optimize.o
  CC      tilegx-linux-user/disas.o
  CC      ppc64-softmmu/tcg/optimize.o
  CC      mips64el-softmmu/tcg/tcg-op.o
  CC      ppc-linux-user/tcg/tcg-common.o
  CC      ppc-linux-user/fpu/softfloat.o
  CC      cris-linux-user/disas.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      arm-softmmu/tcg/tcg-op.o
  CC      cris-softmmu/tcg/tcg-common.o
  GEN     aarch64_be-linux-user/gdbstub-xml.c
  CC      s390x-linux-user/fpu/softfloat.o
  CC      sh4eb-softmmu/tcg/optimize.o
  CC      microblazeel-linux-user/tcg/tcg-common.o
  CC      x86_64-linux-user/disas.o
  CC      tricore-softmmu/tcg/tcg-op.o
  CC      sparc64-softmmu/disas.o
  CC      sparc64-linux-user/fpu/softfloat.o
  CC      ppc-linux-user/disas.o
  CC      sh4eb-softmmu/tcg/tcg-common.o
  CC      sh4-linux-user/disas.o
  CC      xtensa-softmmu/tcg/tcg-common.o
  CC      mips64el-softmmu/tcg/optimize.o
  GEN     x86_64-linux-user/gdbstub-xml.c
  CC      microblazeel-linux-user/fpu/softfloat.o
  CC      xtensaeb-softmmu/tcg/tcg-common.o
  CC      cris-softmmu/fpu/softfloat.o
  CC      m68k-linux-user/thunk.o
  CC      aarch64_be-linux-user/gdbstub.o
  CC      mipsel-linux-user/accel/stubs/hax-stub.o
  CC      lm32-softmmu/tcg/tcg-op.o
  CC      s390x-softmmu/tcg/tcg-op.o
  CC      mipsn32el-linux-user/disas.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  CC      mipsn32-linux-user/tcg/optimize.o
  CC      cris-softmmu/disas.o
  CC      sh4-linux-user/gdbstub.o
  CC      mips-softmmu/tcg/tcg-op.o
  CC      microblaze-linux-user/fpu/softfloat.o
  CC      nios2-linux-user/tcg/tcg-common.o
  CC      s390x-linux-user/disas.o
  CC      unicore32-softmmu/tcg/tcg-op.o
  CC      microblaze-softmmu/tcg/tcg-op.o
  CC      mipsn32-linux-user/tcg/tcg-common.o
  CC      mipsel-linux-user/accel/stubs/hvf-stub.o
  CC      mips64-softmmu/fpu/softfloat.o
  CC      ppcemb-softmmu/tcg/optimize.o
  CC      s390x-softmmu/tcg/optimize.o
  CC      sparc64-linux-user/disas.o
  CC      armeb-linux-user/gdbstub.o
  CC      or1k-softmmu/tcg/optimize.o
  CC      microblazeel-softmmu/tcg/tcg-op.o
  CC      moxie-softmmu/tcg/tcg-common.o
  CC      mipsn32-linux-user/fpu/softfloat.o
  CC      sh4eb-linux-user/gdbstub.o
  CC      nios2-linux-user/fpu/softfloat.o
  CC      sparc-softmmu/fpu/softfloat.o
  CC      mipsn32el-linux-user/gdbstub.o
  CC      sparc-softmmu/disas.o
  CC      or1k-linux-user/accel/tcg/user-exec-stub.o
  GEN     s390x-linux-user/gdbstub-xml.c
  CC      microblazeel-softmmu/tcg/optimize.o
  CC      ppc-softmmu/tcg/tcg-common.o
  CC      mipsel-linux-user/accel/stubs/kvm-stub.o
  CC      ppc64-linux-user/tcg/tcg-common.o
  CC      nios2-softmmu/fpu/softfloat.o
  CC      nios2-softmmu/disas.o
  CC      or1k-linux-user/linux-user/main.o
  CC      sparc64-softmmu/arch_init.o
  CC      ppc-softmmu/fpu/softfloat.o
  CC      sparc-linux-user/tcg/tcg-common.o
  CC      sh4eb-softmmu/fpu/softfloat.o
  CC      sparc-linux-user/fpu/softfloat.o
  CC      sparc64-linux-user/gdbstub.o
  CC      ppc-softmmu/disas.o
  CC      mipsel-linux-user/accel/tcg/tcg-runtime.o
  CC      cris-softmmu/arch_init.o
  CC      sparc32plus-linux-user/fpu/softfloat.o
  CC      mips64-softmmu/disas.o
  CC      sh4eb-linux-user/thunk.o
  CC      hppa-linux-user/thunk.o
  CC      sh4eb-linux-user/accel/stubs/hax-stub.o
  CC      hppa-linux-user/accel/stubs/hax-stub.o
  CC      mips64el-softmmu/tcg/tcg-common.o
  CC      or1k-linux-user/linux-user/syscall.o
  CC      xtensaeb-softmmu/fpu/softfloat.o
  CC      xtensa-softmmu/fpu/softfloat.o
  CC      mips64-linux-user/tcg/optimize.o
  CC      arm-softmmu/tcg/optimize.o
  CC      i386-softmmu/tcg/tcg-op.o
  CC      alpha-linux-user/gdbstub.o
  CC      mipsn32-linux-user/disas.o
  CC      or1k-linux-user/linux-user/strace.o
  CC      cris-softmmu/cpus.o
  GEN     ppc-softmmu/gdbstub-xml.c
  CC      microblazeel-linux-user/disas.o
  CC      mipsel-linux-user/accel/tcg/cpu-exec.o
  CC      mipsn32el-linux-user/thunk.o
  CC      unicore32-softmmu/tcg/optimize.o
  CC      tilegx-linux-user/gdbstub.o
  CC      tilegx-linux-user/thunk.o
  CC      arm-softmmu/tcg/tcg-common.o
  CC      microblazeel-linux-user/gdbstub.o
  CC      microblazeel-linux-user/thunk.o
  CC      microblazeel-linux-user/accel/stubs/hax-stub.o
  CC      or1k-linux-user/linux-user/mmap.o
  CC      or1k-linux-user/linux-user/signal.o
  CC      ppc64le-linux-user/tcg/optimize.o
  CC      ppc64abi32-linux-user/thunk.o
  CC      ppc64-linux-user/fpu/softfloat.o
  CC      ppc64-linux-user/disas.o
  CC      sparc32plus-linux-user/disas.o
  GEN     i386-linux-user/gdbstub-xml.c
  CC      alpha-linux-user/thunk.o
  CC      unicore32-softmmu/tcg/tcg-common.o
  CC      sh4-linux-user/thunk.o
  CC      microblazeel-linux-user/accel/stubs/hvf-stub.o
  CC      mipsel-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64el-linux-user/tcg/tcg-common.o
  CC      sparc-linux-user/disas.o
  CC      mips64-softmmu/arch_init.o
  CC      ppc64-softmmu/tcg/tcg-common.o
  CC      xtensa-softmmu/disas.o
  CC      aarch64-linux-user/linux-user/signal.o
  CC      mipsn32el-linux-user/accel/stubs/hax-stub.o
  CC      mipsel-linux-user/accel/tcg/translate-all.o
  CC      alpha-softmmu/tcg/optimize.o
  CC      mipsn32el-linux-user/accel/stubs/hvf-stub.o
  GEN     ppc-linux-user/gdbstub-xml.c
  CC      mipsel-softmmu/tcg/tcg-common.o
  CC      mipsn32el-linux-user/accel/stubs/kvm-stub.o
  CC      sparc-softmmu/arch_init.o
  CC      i386-linux-user/gdbstub.o
  CC      mipsel-softmmu/fpu/softfloat.o
  CC      moxie-softmmu/fpu/softfloat.o
  CC      mips64-softmmu/cpus.o
  CC      m68k-softmmu/tcg/tcg-op.o
  CC      s390x-linux-user/gdbstub.o
  CC      i386-softmmu/tcg/optimize.o
  CC      hppa-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64abi32-linux-user/accel/stubs/hax-stub.o
  CC      sparc64-linux-user/thunk.o
  CC      mipsn32el-linux-user/accel/tcg/tcg-runtime.o
  CC      or1k-linux-user/linux-user/elfload.o
  CC      sh4eb-linux-user/accel/stubs/hvf-stub.o
  CC      alpha-linux-user/accel/stubs/hax-stub.o
  CC      alpha-linux-user/accel/stubs/hvf-stub.o
  CC      armeb-linux-user/thunk.o
  CC      x86_64-softmmu/tcg/optimize.o
  CC      arm-softmmu/fpu/softfloat.o
  CC      microblazeel-linux-user/accel/stubs/kvm-stub.o
  CC      mips-linux-user/tcg/tcg-common.o
  CC      nios2-linux-user/disas.o
  CC      sh4eb-softmmu/disas.o
  CC      or1k-softmmu/tcg/tcg-common.o
  CC      aarch64-linux-user/linux-user/elfload.o
  CC      arm-linux-user/gdbstub.o
  CC      sparc-linux-user/gdbstub.o
  CC      sparc-linux-user/thunk.o
  CC      hppa-linux-user/accel/stubs/kvm-stub.o
  CC      alpha-linux-user/accel/stubs/kvm-stub.o
  CC      sparc-linux-user/accel/stubs/hax-stub.o
  CC      sparc-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64abi32-linux-user/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/tcg/optimize.o
  CC      mips64el-linux-user/fpu/softfloat.o
  CC      alpha-linux-user/accel/tcg/tcg-runtime.o
  CC      sh4-softmmu/tcg/tcg-op.o
  CC      hppa-linux-user/accel/tcg/tcg-runtime.o
  CC      mips-linux-user/fpu/softfloat.o
  CC      hppa-linux-user/accel/tcg/cpu-exec.o
  CC      mips64-softmmu/monitor.o
  CC      mips64-linux-user/tcg/tcg-common.o
  CC      mips64-linux-user/fpu/softfloat.o
  CC      or1k-softmmu/fpu/softfloat.o
  CC      mipsn32-linux-user/gdbstub.o
  CC      mips64el-softmmu/fpu/softfloat.o
  CC      or1k-softmmu/disas.o
  CC      nios2-linux-user/gdbstub.o
  CC      mipsn32el-linux-user/accel/tcg/cpu-exec.o
  CC      sh4eb-linux-user/accel/stubs/kvm-stub.o
  CC      x86_64-linux-user/gdbstub.o
  CC      ppc-softmmu/arch_init.o
  CC      ppc64abi32-linux-user/accel/stubs/kvm-stub.o
  CC      ppc-softmmu/cpus.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      nios2-linux-user/thunk.o
  CC      ppcemb-softmmu/tcg/tcg-common.o
  CC      ppcemb-softmmu/fpu/softfloat.o
  CC      m68k-linux-user/accel/stubs/hax-stub.o
  CC      ppc-softmmu/monitor.o
  CC      alpha-linux-user/accel/tcg/cpu-exec.o
  CC      m68k-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64le-linux-user/tcg/tcg-common.o
  CC      mips64-softmmu/gdbstub.o
  CC      sparc32plus-linux-user/gdbstub.o
  CC      sparc32plus-linux-user/thunk.o
  CC      s390x-linux-user/thunk.o
  CC      ppc-linux-user/gdbstub.o
  CC      arm-softmmu/disas.o
  CC      mipsel-linux-user/accel/tcg/translator.o
  CC      or1k-linux-user/linux-user/linuxload.o
  CC      xtensa-softmmu/arch_init.o
  GEN     arm-softmmu/gdbstub-xml.c
  CC      x86_64-linux-user/thunk.o
  CC      moxie-softmmu/disas.o
  CC      xtensaeb-softmmu/disas.o
  CC      aarch64_be-linux-user/thunk.o
  CC      ppc64abi32-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-softmmu/fpu/softfloat.o
  CC      mipsn32-linux-user/thunk.o
  CC      aarch64-linux-user/linux-user/linuxload.o
  CC      ppc64le-linux-user/fpu/softfloat.o
  CC      mips64el-linux-user/disas.o
  CC      microblaze-softmmu/tcg/optimize.o
  CC      s390x-softmmu/tcg/tcg-common.o
  CC      microblazeel-softmmu/tcg/tcg-common.o
  CC      microblazeel-softmmu/fpu/softfloat.o
  CC      hppa-linux-user/accel/tcg/cpu-exec-common.o
  CC      hppa-linux-user/accel/tcg/translate-all.o
  CC      armeb-linux-user/accel/stubs/hax-stub.o
  CC      ppc-softmmu/gdbstub.o
  CC      sparc64-softmmu/cpus.o
  CC      alpha-softmmu/tcg/tcg-common.o
  CC      mips-linux-user/disas.o
  CC      mipsn32el-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      sparc64-linux-user/accel/stubs/hax-stub.o
  CC      tilegx-linux-user/accel/stubs/hax-stub.o
  CC      unicore32-softmmu/fpu/softfloat.o
  CC      alpha-linux-user/accel/tcg/cpu-exec-common.o
  CC      alpha-linux-user/accel/tcg/translate-all.o
  CC      mips64el-softmmu/disas.o
  CC      ppc64-softmmu/disas.o
  CC      tilegx-linux-user/accel/stubs/hvf-stub.o
  CC      mipsn32el-linux-user/accel/tcg/translate-all.o
  CC      armeb-linux-user/accel/stubs/hvf-stub.o
  CC      s390x-softmmu/fpu/softfloat.o
  CC      moxie-softmmu/arch_init.o
  CC      mips64el-linux-user/gdbstub.o
  CC      m68k-softmmu/tcg/tcg-common.o
  CC      mips64el-linux-user/thunk.o
  CC      hppa-linux-user/accel/tcg/translator.o
  CC      i386-linux-user/thunk.o
  CC      microblazeel-softmmu/disas.o
  CC      microblaze-softmmu/tcg/tcg-common.o
  CC      alpha-softmmu/fpu/softfloat.o
  CC      ppc64abi32-linux-user/accel/tcg/cpu-exec.o
  CC      tricore-softmmu/tcg/optimize.o
  CC      lm32-softmmu/tcg/optimize.o
  CC      nios2-linux-user/accel/stubs/hax-stub.o
  CC      sparc64-softmmu/monitor.o
  CC      i386-linux-user/accel/stubs/hax-stub.o
  CC      s390x-softmmu/disas.o
  CC      mips-linux-user/gdbstub.o
  CC      sparc64-softmmu/gdbstub.o
  CC      aarch64_be-linux-user/accel/stubs/hax-stub.o
  CC      sparc64-softmmu/balloon.o
  CC      armeb-linux-user/accel/stubs/kvm-stub.o
  CC      aarch64-linux-user/linux-user/uaccess.o
  CC      aarch64-linux-user/linux-user/uname.o
  CC      mips64-linux-user/disas.o
  CC      or1k-softmmu/arch_init.o
  CC      sh4-linux-user/accel/stubs/hax-stub.o
  CC      mipsn32-linux-user/accel/stubs/hax-stub.o
  CC      i386-linux-user/accel/stubs/hvf-stub.o
  CC      armeb-linux-user/accel/tcg/tcg-runtime.o
  CC      mipsn32el-linux-user/accel/tcg/translator.o
  CC      mipsel-linux-user/accel/tcg/user-exec.o
  CC      sh4eb-linux-user/accel/tcg/tcg-runtime.o
  CC      mips-linux-user/thunk.o
  CC      nios2-linux-user/accel/stubs/hvf-stub.o
  CC      arm-linux-user/thunk.o
  CC      aarch64_be-linux-user/accel/stubs/hvf-stub.o
  CC      arm-linux-user/accel/stubs/hax-stub.o
  CC      ppcemb-softmmu/disas.o
  CC      hppa-linux-user/accel/tcg/user-exec.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      nios2-linux-user/accel/stubs/kvm-stub.o
  CC      sh4-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64abi32-linux-user/accel/tcg/cpu-exec-common.o
  CC      moxie-softmmu/cpus.o
  CC      sparc64-linux-user/accel/stubs/hvf-stub.o
  CC      moxie-softmmu/monitor.o
  CCAS    aarch64-linux-user/linux-user/safe-syscall.o
  CC      alpha-softmmu/disas.o
  CC      lm32-softmmu/tcg/tcg-common.o
  GEN     ppc64-softmmu/gdbstub-xml.c
  CC      ppc64-softmmu/arch_init.o
  CC      aarch64-linux-user/linux-user/flatload.o
  CC      x86_64-linux-user/accel/stubs/hax-stub.o
  CC      sparc32plus-linux-user/accel/stubs/hax-stub.o
  CC      xtensa-softmmu/cpus.o
  CC      tilegx-linux-user/accel/stubs/kvm-stub.o
  CC      xtensa-softmmu/monitor.o
  CC      aarch64_be-linux-user/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      xtensa-softmmu/gdbstub.o
  CC      m68k-linux-user/accel/stubs/kvm-stub.o
  CC      hppa-linux-user/accel/tcg/user-exec-stub.o
  CC      mips-linux-user/accel/stubs/hax-stub.o
  CC      armeb-linux-user/accel/tcg/cpu-exec.o
  CC      mips64el-linux-user/accel/stubs/hax-stub.o
  CC      m68k-linux-user/accel/tcg/tcg-runtime.o
  CC      microblaze-linux-user/disas.o
  CC      sparc-linux-user/accel/stubs/kvm-stub.o
  CC      mips-linux-user/accel/stubs/hvf-stub.o
  CC      lm32-softmmu/fpu/softfloat.o
  CC      microblaze-softmmu/fpu/softfloat.o
  CC      i386-linux-user/accel/stubs/kvm-stub.o
  CC      ppc64abi32-linux-user/accel/tcg/translate-all.o
  CC      cris-softmmu/monitor.o
  CC      mips-linux-user/accel/stubs/kvm-stub.o
  CC      mips-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc-linux-user/thunk.o
  CC      sh4eb-linux-user/accel/tcg/cpu-exec.o
  CC      xtensa-softmmu/balloon.o
  CC      sparc64-linux-user/accel/stubs/kvm-stub.o
  GEN     ppcemb-softmmu/gdbstub-xml.c
  CC      sparc-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64-linux-user/target/arm/arm-semi.o
  CC      i386-softmmu/tcg/tcg-common.o
  CC      x86_64-linux-user/accel/stubs/hvf-stub.o
  CC      cris-linux-user/gdbstub.o
  CC      mips64-linux-user/gdbstub.o
  CC      unicore32-softmmu/disas.o
  CC      sparc-softmmu/cpus.o
  CC      unicore32-softmmu/arch_init.o
  GEN     ppc64-linux-user/gdbstub-xml.c
  CC      mipsn32-linux-user/accel/stubs/hvf-stub.o
  CC      arm-linux-user/accel/stubs/hvf-stub.o
  CC      mips-linux-user/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64el-softmmu/arch_init.o
  CC      i386-linux-user/accel/tcg/tcg-runtime.o
  CC      tilegx-linux-user/accel/tcg/tcg-runtime.o
  CC      xtensa-softmmu/ioport.o
  CC      sh4-softmmu/tcg/optimize.o
  CC      microblazeel-softmmu/arch_init.o
  CC      mips64-linux-user/thunk.o
  CC      xtensa-softmmu/numa.o
  CC      mipsel-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64-linux-user/gdbstub.o
  CC      microblazeel-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64_be-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/thunk.o
  CC      alpha-linux-user/accel/tcg/translator.o
  CC      sparc64-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/accel/stubs/hax-stub.o
  CC      mips-linux-user/accel/tcg/cpu-exec-common.o
  CC      mipsel-softmmu/disas.o
  CC      xtensa-softmmu/qtest.o
  CC      microblaze-linux-user/gdbstub.o
  CC      unicore32-softmmu/cpus.o
  CC      s390x-linux-user/accel/stubs/hax-stub.o
  CC      m68k-linux-user/accel/tcg/cpu-exec.o
  CC      tricore-softmmu/tcg/tcg-common.o
  CC      mips64-linux-user/accel/stubs/hax-stub.o
  CC      x86_64-linux-user/accel/stubs/kvm-stub.o
  CC      sh4-softmmu/tcg/tcg-common.o
  CC      arm-linux-user/accel/stubs/kvm-stub.o
  CC      m68k-softmmu/fpu/softfloat.o
  CC      microblaze-linux-user/thunk.o
  CC      or1k-softmmu/cpus.o
  CC      nios2-linux-user/accel/tcg/tcg-runtime.o
  CC      tricore-softmmu/fpu/softfloat.o
  CC      arm-linux-user/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/arch_init.o
  CC      x86_64-linux-user/accel/tcg/tcg-runtime.o
  CC      s390x-linux-user/accel/stubs/hvf-stub.o
  GEN     s390x-softmmu/gdbstub-xml.c
  CC      or1k-softmmu/monitor.o
  CC      i386-linux-user/accel/tcg/cpu-exec.o
  CC      mipsel-linux-user/linux-user/main.o
  CC      mipsn32el-linux-user/accel/tcg/user-exec.o
  CC      ppc-linux-user/accel/stubs/hax-stub.o
  CC      mipsel-softmmu/arch_init.o
  CC      nios2-softmmu/arch_init.o
  CC      lm32-softmmu/disas.o
  CC      armeb-linux-user/accel/tcg/translate-all.o
  CC      microblazeel-linux-user/accel/tcg/cpu-exec.o
  CC      microblazeel-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64_be-linux-user/accel/tcg/cpu-exec.o
  CC      microblazeel-linux-user/accel/tcg/translate-all.o
  CC      cris-linux-user/thunk.o
  CC      armeb-linux-user/accel/tcg/translator.o
  CC      tilegx-linux-user/accel/tcg/cpu-exec.o
  CC      sparc64-linux-user/accel/tcg/cpu-exec.o
  CC      m68k-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc-softmmu/monitor.o
  CC      unicore32-softmmu/monitor.o
  CC      sparc64-softmmu/ioport.o
  CC      sh4eb-linux-user/accel/tcg/cpu-exec-common.o
  CC      alpha-linux-user/accel/tcg/user-exec.o
  CC      alpha-linux-user/accel/tcg/user-exec-stub.o
  CC      mips-softmmu/tcg/optimize.o
  CC      m68k-linux-user/accel/tcg/translate-all.o
  CC      mipsel-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/accel/tcg/cpu-exec.o
  CC      sh4-linux-user/accel/stubs/kvm-stub.o
  CC      sparc64-softmmu/numa.o
  CC      s390x-linux-user/accel/stubs/kvm-stub.o
  CC      microblaze-softmmu/disas.o
  CC      arm-linux-user/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/disas.o
  CC      ppc-linux-user/accel/stubs/hvf-stub.o
  CC      mipsn32el-linux-user/accel/tcg/user-exec-stub.o
  CC      arm-softmmu/arch_init.o
  CC      ppc64abi32-linux-user/accel/tcg/translator.o
  CC      mips64el-softmmu/cpus.o
  CC      sparc64-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64-softmmu/balloon.o
  CC      sparc64-softmmu/qtest.o
  CC      cris-linux-user/accel/stubs/hax-stub.o
  CC      microblaze-softmmu/arch_init.o
  CC      alpha-softmmu/cpus.o
  CC      ppc64-linux-user/accel/stubs/hvf-stub.o
  CC      mipsn32el-linux-user/linux-user/main.o
  CC      sh4eb-linux-user/accel/tcg/translate-all.o
  CC      mips64el-linux-user/accel/stubs/hvf-stub.o
  CC      i386-softmmu/fpu/softfloat.o
  CC      mips-softmmu/tcg/tcg-common.o
  CC      hppa-linux-user/linux-user/main.o
  CC      sh4eb-softmmu/arch_init.o
  CC      mips64-softmmu/ioport.o
  CC      xtensa-softmmu/memory.o
  CC      tricore-softmmu/disas.o
  CC      microblazeel-softmmu/cpus.o
  CC      ppc-linux-user/accel/stubs/kvm-stub.o
  CC      nios2-softmmu/cpus.o
  CC      sh4-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64-linux-user/target/arm/kvm-stub.o
  CC      xtensa-softmmu/memory_mapping.o
  CC      s390x-linux-user/accel/tcg/tcg-runtime.o
  CC      tricore-softmmu/arch_init.o
  CC      microblaze-linux-user/accel/stubs/hax-stub.o
  CC      s390x-softmmu/arch_init.o
  CC      i386-softmmu/disas.o
  CC      nios2-linux-user/accel/tcg/cpu-exec.o
  CC      sparc64-linux-user/accel/tcg/translate-all.o
  CC      sh4-linux-user/accel/tcg/cpu-exec.o
  CC      mips-softmmu/fpu/softfloat.o
  CC      aarch64-softmmu/disas.o
  CC      sh4eb-softmmu/cpus.o
  CC      mips-softmmu/disas.o
  CC      cris-linux-user/accel/stubs/hvf-stub.o
  CC      x86_64-linux-user/accel/tcg/cpu-exec-common.o
  CC      ppcemb-softmmu/arch_init.o
  CC      microblaze-linux-user/accel/stubs/hvf-stub.o
  CC      tilegx-linux-user/accel/tcg/cpu-exec-common.o
  CC      i386-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64-linux-user/target/arm/translate.o
  CC      microblazeel-linux-user/accel/tcg/translator.o
  CC      mipsn32el-linux-user/linux-user/syscall.o
  CC      sh4-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64_be-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64_be-linux-user/accel/tcg/translate-all.o
  CC      arm-linux-user/accel/tcg/cpu-exec-common.o
  CC      x86_64-linux-user/accel/tcg/translate-all.o
  CC      microblaze-linux-user/accel/stubs/kvm-stub.o
  CC      x86_64-linux-user/accel/tcg/translator.o
  CC      alpha-softmmu/monitor.o
  CC      ppc-linux-user/accel/tcg/tcg-runtime.o
  CC      m68k-softmmu/disas.o
  CC      or1k-softmmu/gdbstub.o
  CC      mipsn32-linux-user/accel/stubs/kvm-stub.o
  CC      cris-linux-user/accel/stubs/kvm-stub.o
  CC      mipsel-softmmu/cpus.o
  CC      cris-linux-user/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/monitor.o
  CC      ppc-softmmu/balloon.o
  CC      ppc-softmmu/ioport.o
  CC      microblazeel-linux-user/accel/tcg/user-exec.o
  CC      mipsel-softmmu/gdbstub.o
  CC      mipsn32el-linux-user/linux-user/strace.o
  CC      tilegx-linux-user/accel/tcg/translate-all.o
  CC      xtensa-softmmu/dump.o
  CC      moxie-softmmu/gdbstub.o
  CC      s390x-softmmu/cpus.o
  CC      arm-linux-user/accel/tcg/translate-all.o
  CC      mipsel-linux-user/linux-user/strace.o
  CC      sh4-linux-user/accel/tcg/translate-all.o
  CC      ppc64abi32-linux-user/accel/tcg/user-exec.o
  CC      s390x-linux-user/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/accel/tcg/user-exec.o
  CC      mips-linux-user/accel/tcg/translate-all.o
  CC      or1k-linux-user/linux-user/uaccess.o
  CC      i386-linux-user/accel/tcg/translate-all.o
  CC      sh4eb-linux-user/accel/tcg/translator.o
  CC      microblaze-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64_be-linux-user/accel/tcg/translator.o
  CC      m68k-linux-user/accel/tcg/translator.o
  CC      unicore32-softmmu/gdbstub.o
  CC      ppc-softmmu/numa.o
  CC      sh4eb-softmmu/monitor.o
  CC      alpha-linux-user/linux-user/main.o
  CC      sh4-softmmu/fpu/softfloat.o
  CC      sh4-softmmu/disas.o
  CC      or1k-linux-user/linux-user/uname.o
  CC      ppc64abi32-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4-linux-user/accel/tcg/translator.o
  CC      xtensaeb-softmmu/arch_init.o
  CC      xtensaeb-softmmu/cpus.o
  CC      sparc-linux-user/accel/tcg/cpu-exec.o
  CC      mips64-softmmu/numa.o
  CC      microblaze-linux-user/accel/tcg/cpu-exec.o
  CC      hppa-linux-user/linux-user/syscall.o
  CC      sparc64-softmmu/memory.o
  CC      mipsn32-linux-user/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/balloon.o
  CC      sh4eb-softmmu/gdbstub.o
  CC      unicore32-softmmu/balloon.o
  CC      cris-linux-user/accel/tcg/cpu-exec.o
  CC      ppc-linux-user/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/accel/tcg/user-exec-stub.o
  CC      mips64el-linux-user/accel/stubs/kvm-stub.o
  CC      cris-softmmu/gdbstub.o
  CC      mipsn32-linux-user/accel/tcg/cpu-exec.o
  CC      mips64-linux-user/accel/stubs/hvf-stub.o
  GEN     i386-softmmu/gdbstub-xml.c
  CC      mipsel-linux-user/linux-user/mmap.o
  CC      mipsel-softmmu/ioport.o
  CC      m68k-linux-user/accel/tcg/user-exec.o
  CC      m68k-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4eb-linux-user/accel/tcg/user-exec.o
  CC      ppc64-softmmu/cpus.o
  CC      xtensa-softmmu/migration/ram.o
  CC      mipsn32el-linux-user/linux-user/mmap.o
  CC      ppc-softmmu/qtest.o
  CC      armeb-linux-user/linux-user/main.o
  CC      s390x-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc-softmmu/gdbstub.o
  CC      sparc64-linux-user/accel/tcg/translator.o
  CC      microblazeel-softmmu/monitor.o
  CC      ppc-softmmu/memory.o
  CC      nios2-linux-user/accel/tcg/cpu-exec-common.o
  CC      ppc64abi32-linux-user/linux-user/main.o
  CC      i386-softmmu/arch_init.o
  CC      ppcemb-softmmu/cpus.o
  CC      ppcemb-softmmu/monitor.o
  CC      arm-linux-user/accel/tcg/translator.o
  CC      ppc64le-linux-user/disas.o
  CC      alpha-softmmu/gdbstub.o
  CC      microblazeel-linux-user/accel/tcg/user-exec-stub.o
  CC      aarch64_be-linux-user/accel/tcg/user-exec.o
  CC      sh4eb-softmmu/balloon.o
  CC      arm-linux-user/accel/tcg/user-exec.o
  CC      aarch64-linux-user/target/arm/op_helper.o
  CC      s390x-softmmu/monitor.o
  CC      sh4eb-softmmu/ioport.o
  CC      sparc-linux-user/accel/tcg/cpu-exec-common.o
  CC      microblaze-linux-user/accel/tcg/cpu-exec-common.o
  CC      alpha-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/accel/tcg/user-exec.o
  CC      ppc-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc32plus-linux-user/accel/stubs/hvf-stub.o
  CC      s390x-linux-user/accel/tcg/translate-all.o
  CC      microblaze-linux-user/accel/tcg/translate-all.o
  CC      ppc-linux-user/accel/tcg/translate-all.o
  CC      moxie-softmmu/balloon.o
  CC      nios2-linux-user/accel/tcg/translate-all.o
  CC      mips64-softmmu/qtest.o
  CC      tricore-softmmu/cpus.o
  CC      cris-linux-user/accel/tcg/cpu-exec-common.o
  CC      microblazeel-linux-user/linux-user/main.o
  CC      cris-linux-user/accel/tcg/translate-all.o
  CC      sparc32plus-linux-user/accel/stubs/kvm-stub.o
  CC      sparc-softmmu/balloon.o
  CC      nios2-softmmu/monitor.o
  CC      mips-linux-user/accel/tcg/translator.o
  CC      sh4-linux-user/accel/tcg/user-exec.o
  CC      mipsel-linux-user/linux-user/signal.o
  CC      alpha-softmmu/balloon.o
  CC      xtensa-softmmu/accel/accel.o
  CC      xtensa-softmmu/accel/stubs/hax-stub.o
  CC      sparc-linux-user/accel/tcg/translate-all.o
  CC      alpha-linux-user/linux-user/strace.o
  CC      tilegx-linux-user/accel/tcg/translator.o
  CC      mipsn32-linux-user/accel/tcg/cpu-exec-common.o
  CC      xtensaeb-softmmu/monitor.o
  CC      arm-softmmu/cpus.o
  CC      mips64el-softmmu/monitor.o
  CC      armeb-linux-user/linux-user/syscall.o
  CC      ppc-softmmu/memory_mapping.o
  CC      sh4eb-linux-user/accel/tcg/user-exec-stub.o
  CC      mipsn32-linux-user/accel/tcg/translate-all.o
  CC      sparc64-linux-user/accel/tcg/user-exec.o
  CC      sparc-linux-user/accel/tcg/translator.o
  CC      ppcemb-softmmu/gdbstub.o
  CC      sparc64-linux-user/accel/tcg/user-exec-stub.o
  CC      i386-linux-user/accel/tcg/translator.o
  CC      hppa-linux-user/linux-user/strace.o
  CC      arm-softmmu/monitor.o
  CC      sparc32plus-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/accel/stubs/kvm-stub.o
  CC      sh4eb-linux-user/linux-user/main.o
  CC      ppc64abi32-linux-user/linux-user/syscall.o
  CC      mips64-softmmu/memory.o
  CC      cris-linux-user/accel/tcg/translator.o
  GEN     ppc64le-linux-user/gdbstub-xml.c
  CC      sparc-linux-user/accel/tcg/user-exec.o
  CC      hppa-linux-user/linux-user/mmap.o
  CC      s390x-softmmu/gdbstub.o
  CC      arm-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4eb-softmmu/numa.o
  CC      sparc32plus-linux-user/accel/tcg/cpu-exec.o
  CC      mipsel-softmmu/numa.o
  CC      arm-linux-user/linux-user/main.o
  CC      nios2-linux-user/accel/tcg/translator.o
  CC      microblaze-linux-user/accel/tcg/translator.o
  CC      alpha-linux-user/linux-user/mmap.o
  CC      armeb-linux-user/linux-user/strace.o
  CC      mipsel-linux-user/linux-user/elfload.o
  CC      ppc64le-linux-user/gdbstub.o
  CC      mips64-softmmu/memory_mapping.o
  CC      cris-softmmu/balloon.o
  CC      ppc64-linux-user/accel/tcg/tcg-runtime.o
  CC      tilegx-linux-user/accel/tcg/user-exec.o
  CC      m68k-linux-user/linux-user/main.o
  CC      i386-linux-user/accel/tcg/user-exec.o
  CC      mipsel-softmmu/qtest.o
  CC      mips-linux-user/accel/tcg/user-exec.o
  CC      microblazeel-linux-user/linux-user/syscall.o
  CC      mips64el-softmmu/gdbstub.o
  CC      sparc-linux-user/accel/tcg/user-exec-stub.o
  CC      alpha-linux-user/linux-user/signal.o
  CC      mips64-softmmu/dump.o
  CC      sparc64-softmmu/memory_mapping.o
  CC      moxie-softmmu/ioport.o
  CC      microblazeel-linux-user/linux-user/strace.o
  CC      aarch64_be-linux-user/accel/tcg/user-exec-stub.o
  CC      s390x-linux-user/accel/tcg/translator.o
  CC      armeb-linux-user/linux-user/mmap.o
  CC      arm-softmmu/gdbstub.o
  CC      ppc64abi32-linux-user/linux-user/strace.o
  CC      cris-linux-user/accel/tcg/user-exec.o
  CC      tilegx-linux-user/accel/tcg/user-exec-stub.o
  CC      nios2-softmmu/gdbstub.o
  CC      mips64-softmmu/migration/ram.o
  CC      mips-linux-user/accel/tcg/user-exec-stub.o
  CC      tricore-softmmu/monitor.o
  CC      microblaze-linux-user/accel/tcg/user-exec.o
  CC      sparc64-softmmu/dump.o
  CC      sh4-linux-user/accel/tcg/user-exec-stub.o
  CC      sparc32plus-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc32plus-linux-user/accel/tcg/translate-all.o
  CC      aarch64-linux-user/target/arm/helper.o
  CC      sparc-softmmu/ioport.o
  CC      ppc-linux-user/accel/tcg/translator.o
  CC      cris-softmmu/ioport.o
  CC      tricore-softmmu/gdbstub.o
  CC      mipsn32-linux-user/accel/tcg/translator.o
  CC      i386-softmmu/cpus.o
  CC      i386-softmmu/monitor.o
  CC      sh4eb-linux-user/linux-user/syscall.o
  CC      nios2-linux-user/accel/tcg/user-exec.o
  CC      aarch64_be-linux-user/linux-user/main.o
  CC      nios2-linux-user/accel/tcg/user-exec-stub.o
  CC      x86_64-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64le-linux-user/thunk.o
  CC      mips64el-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64le-linux-user/accel/stubs/hax-stub.o
  CC      m68k-linux-user/linux-user/syscall.o
  CC      nios2-linux-user/linux-user/main.o
  CC      sh4-linux-user/linux-user/main.o
  CC      sh4-softmmu/arch_init.o
  CC      s390x-linux-user/accel/tcg/user-exec.o
  CC      or1k-softmmu/balloon.o
  CC      tricore-softmmu/balloon.o
  CC      m68k-linux-user/linux-user/strace.o
  CC      moxie-softmmu/numa.o
  CC      aarch64_be-linux-user/linux-user/syscall.o
  CC      ppc64-linux-user/accel/tcg/cpu-exec.o
  GEN     m68k-softmmu/gdbstub-xml.c
  CC      arm-linux-user/linux-user/syscall.o
  CC      alpha-softmmu/ioport.o
  CC      aarch64-linux-user/target/arm/cpu.o
  CC      cris-softmmu/numa.o
  CC      microblaze-linux-user/accel/tcg/user-exec-stub.o
  CC      arm-linux-user/linux-user/strace.o
  CC      sparc64-linux-user/linux-user/main.o
  CC      ppc64-softmmu/monitor.o
  CC      s390x-softmmu/balloon.o
  CC      mips64el-linux-user/accel/tcg/cpu-exec.o
  CC      aarch64-linux-user/target/arm/neon_helper.o
  CC      ppcemb-softmmu/balloon.o
  CC      ppcemb-softmmu/ioport.o
  CC      unicore32-softmmu/ioport.o
  CC      i386-softmmu/gdbstub.o
  CC      x86_64-linux-user/linux-user/main.o
  CC      aarch64-linux-user/target/arm/iwmmxt_helper.o
  CC      cris-linux-user/accel/tcg/user-exec-stub.o
  CC      xtensa-softmmu/accel/stubs/hvf-stub.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  CC      sparc32plus-linux-user/accel/tcg/translator.o
  CC      sparc64-linux-user/linux-user/syscall.o
  CC      sparc64-linux-user/linux-user/strace.o
  CC      mips-linux-user/linux-user/main.o
  CCAS    or1k-linux-user/linux-user/safe-syscall.o
  CC      sh4-linux-user/linux-user/syscall.o
  CC      sh4-linux-user/linux-user/strace.o
  CC      or1k-softmmu/ioport.o
  CC      sh4eb-softmmu/qtest.o
  CC      aarch64-softmmu/arch_init.o
  CC      cris-linux-user/linux-user/main.o
  CC      xtensa-softmmu/accel/stubs/kvm-stub.o
  CC      ppc64-linux-user/accel/tcg/cpu-exec-common.o
  CC      ppc64abi32-linux-user/linux-user/mmap.o
  CC      mipsn32-linux-user/accel/tcg/user-exec.o
  CC      moxie-softmmu/qtest.o
  CC      moxie-softmmu/memory.o
  CC      ppc64-linux-user/accel/tcg/translate-all.o
  CC      mips64el-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc-softmmu/numa.o
  CC      sparc-linux-user/linux-user/main.o
  CC      cris-softmmu/qtest.o
  CC      sparc64-softmmu/migration/ram.o
  CC      sparc64-softmmu/accel/accel.o
  CC      hppa-linux-user/linux-user/signal.o
  CC      ppc64-linux-user/accel/tcg/translator.o
  CC      ppc64-linux-user/accel/tcg/user-exec.o
  CC      mips64-linux-user/accel/stubs/kvm-stub.o
  CC      tilegx-linux-user/linux-user/main.o
  CC      cris-softmmu/memory.o
  CC      mips-linux-user/linux-user/syscall.o
  CC      ppc-linux-user/accel/tcg/user-exec.o
  CC      mipsn32-linux-user/accel/tcg/user-exec-stub.o
  CC      mipsn32el-linux-user/linux-user/signal.o
  CC      xtensa-softmmu/accel/tcg/tcg-all.o
  CC      ppc64abi32-linux-user/linux-user/signal.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/arch_init.o
  CC      sparc64-softmmu/accel/stubs/hax-stub.o
  CC      mips-linux-user/linux-user/strace.o
  CC      mipsn32-linux-user/linux-user/main.o
  CC      i386-linux-user/accel/tcg/user-exec-stub.o
  CC      lm32-softmmu/arch_init.o
  CC      ppc64-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64le-linux-user/accel/stubs/hvf-stub.o
  CC      s390x-softmmu/ioport.o
  CC      aarch64-softmmu/cpus.o
  CC      mips64-linux-user/accel/tcg/tcg-runtime.o
  CC      mips64-softmmu/accel/accel.o
  CC      sparc-softmmu/qtest.o
  CC      mips64-softmmu/accel/stubs/hax-stub.o
  CC      sparc32plus-linux-user/accel/tcg/user-exec.o
  CC      unicore32-softmmu/numa.o
  CC      cris-linux-user/linux-user/syscall.o
  CC      ppc-softmmu/dump.o
  CC      aarch64_be-linux-user/linux-user/strace.o
  CC      mips64el-linux-user/accel/tcg/translate-all.o
  CC      tilegx-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/linux-user/syscall.o
  CC      or1k-softmmu/numa.o
  CC      mipsel-softmmu/memory.o
  CC      x86_64-softmmu/cpus.o
  CC      alpha-softmmu/numa.o
  CC      m68k-softmmu/arch_init.o
  CC      i386-softmmu/balloon.o
  CC      ppcemb-softmmu/numa.o
  CC      ppcemb-softmmu/qtest.o
  CC      microblaze-linux-user/linux-user/main.o
  CC      xtensa-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/monitor.o
  CC      x86_64-linux-user/linux-user/strace.o
  CC      i386-linux-user/linux-user/main.o
  CC      nios2-linux-user/linux-user/syscall.o
  CC      microblazeel-linux-user/linux-user/mmap.o
  CC      x86_64-linux-user/linux-user/mmap.o
  CC      moxie-softmmu/memory_mapping.o
  CC      microblazeel-softmmu/gdbstub.o
  CC      i386-softmmu/ioport.o
  CC      sh4eb-softmmu/memory.o
  CC      sparc-softmmu/memory.o
  CC      m68k-softmmu/cpus.o
  CC      ppc64abi32-linux-user/linux-user/elfload.o
  CC      microblaze-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/linux-user/signal.o
  CC      ppc64le-linux-user/accel/stubs/kvm-stub.o
  CC      s390x-linux-user/accel/tcg/user-exec-stub.o
  CC      nios2-softmmu/balloon.o
  CC      m68k-softmmu/monitor.o
  CC      sparc64-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/gdbstub.o
  CC      s390x-softmmu/numa.o
  CC      mipsel-softmmu/memory_mapping.o
  CC      sh4eb-linux-user/linux-user/strace.o
  CC      mipsel-linux-user/linux-user/linuxload.o
  CC      sparc-linux-user/linux-user/syscall.o
  CC      sparc-linux-user/linux-user/strace.o
  CC      aarch64-linux-user/target/arm/gdbstub.o
  CC      mips64-linux-user/accel/tcg/cpu-exec.o
  CC      alpha-linux-user/linux-user/elfload.o
  CC      lm32-softmmu/cpus.o
  CC      mipsn32-linux-user/linux-user/syscall.o
  CC      ppc64le-linux-user/accel/tcg/tcg-runtime.o
  CC      or1k-linux-user/target/openrisc/cpu.o
  CC      armeb-linux-user/linux-user/signal.o
  CC      ppc64abi32-linux-user/linux-user/linuxload.o
  CC      microblaze-linux-user/linux-user/strace.o
  CC      alpha-softmmu/qtest.o
  CC      or1k-softmmu/qtest.o
  CC      ppc64le-linux-user/accel/tcg/cpu-exec.o
  CC      i386-linux-user/linux-user/syscall.o
  CC      s390x-softmmu/qtest.o
  CC      xtensaeb-softmmu/gdbstub.o
  CC      sh4-softmmu/cpus.o
  CC      s390x-linux-user/linux-user/main.o
  CC      sh4eb-softmmu/memory_mapping.o
  CC      arm-linux-user/linux-user/mmap.o
  CC      ppc64-linux-user/linux-user/main.o
  CC      microblazeel-softmmu/balloon.o
  CC      microblaze-softmmu/cpus.o
  CC      i386-linux-user/linux-user/strace.o
  CC      mips64-softmmu/accel/stubs/hvf-stub.o
  CC      tricore-softmmu/ioport.o
  CC      unicore32-softmmu/qtest.o
  CC      mips64-softmmu/accel/stubs/kvm-stub.o
  CC      mips64el-linux-user/accel/tcg/translator.o
  CC      or1k-linux-user/target/openrisc/exception.o
  CC      aarch64_be-linux-user/linux-user/mmap.o
  CC      mips64-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64-linux-user/accel/tcg/translate-all.o
  CC      ppcemb-softmmu/memory.o
  CC      mips-softmmu/arch_init.o
  CC      sparc32plus-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4-softmmu/monitor.o
  CC      nios2-softmmu/ioport.o
  CC      i386-linux-user/linux-user/mmap.o
  CC      i386-linux-user/linux-user/signal.o
  CC      mips64-linux-user/accel/tcg/translator.o
  CC      mips-linux-user/linux-user/mmap.o
  CC      mips64-linux-user/accel/tcg/user-exec.o
  CC      hppa-linux-user/linux-user/elfload.o
  CC      xtensa-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/memory.o
  CC      microblaze-softmmu/monitor.o
  CC      ppc-linux-user/accel/tcg/user-exec-stub.o
  CC      or1k-linux-user/target/openrisc/interrupt.o
  CC      microblaze-linux-user/linux-user/mmap.o
  CC      sparc64-softmmu/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/gdbstub.o
  CC      nios2-softmmu/numa.o
  CC      or1k-softmmu/memory.o
  CC      ppcemb-softmmu/memory_mapping.o
  CC      ppcemb-softmmu/dump.o
  CC      nios2-softmmu/qtest.o
  CC      mips64el-linux-user/accel/tcg/user-exec.o
  CC      ppc-linux-user/linux-user/main.o
  CC      mips64el-softmmu/balloon.o
  CC      ppc64-linux-user/linux-user/syscall.o
  CC      aarch64_be-linux-user/linux-user/signal.o
  CC      s390x-softmmu/memory.o
  CC      mips64el-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64le-linux-user/accel/tcg/cpu-exec-common.o
  CC      lm32-softmmu/monitor.o
  CC      ppc-softmmu/migration/ram.o
  CC      mips64-softmmu/accel/tcg/tcg-all.o
  CC      mips-softmmu/cpus.o
  CC      aarch64-softmmu/monitor.o
  CC      aarch64-softmmu/gdbstub.o
  CC      alpha-softmmu/memory_mapping.o
  CC      sparc-softmmu/memory_mapping.o
  CC      sparc32plus-linux-user/linux-user/main.o
  CC      sparc32plus-linux-user/linux-user/syscall.o
  CC      or1k-linux-user/target/openrisc/mmu.o
  CC      microblazeel-linux-user/linux-user/signal.o
  CC      microblazeel-linux-user/linux-user/elfload.o
  CC      arm-softmmu/balloon.o
  CC      ppc64-linux-user/linux-user/strace.o
  CC      mips64el-linux-user/linux-user/main.o
  CC      ppc64abi32-linux-user/linux-user/uaccess.o
  CC      ppc64le-linux-user/accel/tcg/translate-all.o
  CC      sparc64-softmmu/accel/tcg/tcg-all.o
  CC      sparc64-softmmu/accel/tcg/cputlb.o
  CC      mips64el-softmmu/ioport.o
  CC      sh4-linux-user/linux-user/mmap.o
  CC      x86_64-softmmu/balloon.o
  CC      ppc64-linux-user/linux-user/mmap.o
  CC      unicore32-softmmu/memory.o
  CC      s390x-linux-user/linux-user/syscall.o
  CC      tricore-softmmu/numa.o
  CC      unicore32-softmmu/memory_mapping.o
  CC      sparc-softmmu/dump.o
  CC      ppcemb-softmmu/migration/ram.o
  CC      mips64-softmmu/accel/tcg/cputlb.o
  CC      or1k-linux-user/target/openrisc/translate.o
  CC      unicore32-softmmu/dump.o
  CC      aarch64-softmmu/balloon.o
  CC      hppa-linux-user/linux-user/linuxload.o
  CC      cris-softmmu/memory_mapping.o
  CC      m68k-softmmu/balloon.o
  CC      nios2-linux-user/linux-user/strace.o
  CC      m68k-softmmu/ioport.o
  CC      sh4eb-linux-user/linux-user/mmap.o
  CC      alpha-softmmu/dump.o
  CC      m68k-softmmu/numa.o
  CC      sparc32plus-linux-user/linux-user/strace.o
  CC      m68k-softmmu/qtest.o
  CC      mips-softmmu/monitor.o
  CC      mipsel-softmmu/dump.o
  CC      i386-softmmu/numa.o
  CC      microblazeel-softmmu/ioport.o
  CC      i386-softmmu/qtest.o
  CC      ppc64-softmmu/gdbstub.o
  CC      arm-softmmu/ioport.o
  CC      sparc64-linux-user/linux-user/mmap.o
  CC      xtensaeb-softmmu/balloon.o
  CC      tricore-softmmu/qtest.o
  CC      cris-linux-user/linux-user/strace.o
  CC      arm-softmmu/numa.o
  CC      or1k-linux-user/target/openrisc/exception_helper.o
  CC      m68k-softmmu/memory.o
  CC      xtensaeb-softmmu/ioport.o
  CC      x86_64-softmmu/ioport.o
  CC      mipsel-softmmu/migration/ram.o
  CC      arm-linux-user/linux-user/signal.o
  CC      xtensaeb-softmmu/numa.o
  CC      ppc64le-linux-user/accel/tcg/translator.o
  CC      tilegx-linux-user/linux-user/strace.o
  CC      xtensaeb-softmmu/qtest.o
  CC      mips64-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc-linux-user/linux-user/syscall.o
  CC      mips64el-softmmu/numa.o
  CC      ppc-linux-user/linux-user/strace.o
  CC      microblazeel-softmmu/numa.o
  CC      or1k-softmmu/memory_mapping.o
  CC      ppc64-softmmu/balloon.o
  CC      ppc64-softmmu/ioport.o
  CC      sh4eb-softmmu/dump.o
  CC      nios2-softmmu/memory.o
  CC      nios2-softmmu/memory_mapping.o
  CC      moxie-softmmu/dump.o
  CC      sparc64-softmmu/accel/tcg/tcg-runtime.o
  CC      ppc64le-linux-user/accel/tcg/user-exec.o
  CC      mips-linux-user/linux-user/signal.o
  CC      alpha-softmmu/migration/ram.o
  CC      arm-linux-user/linux-user/elfload.o
  CC      mips64-linux-user/linux-user/main.o
  CC      tricore-softmmu/memory.o
  CC      m68k-linux-user/linux-user/mmap.o
  CC      unicore32-softmmu/migration/ram.o
  CC      microblaze-linux-user/linux-user/signal.o
  CC      ppc64abi32-linux-user/linux-user/uname.o
  CC      nios2-linux-user/linux-user/mmap.o
  CC      ppc64-softmmu/numa.o
  CC      s390x-linux-user/linux-user/strace.o
  CC      mipsn32el-linux-user/linux-user/elfload.o
  CC      unicore32-softmmu/accel/accel.o
  CC      sh4-softmmu/gdbstub.o
  CC      ppcemb-softmmu/accel/accel.o
  CC      tilegx-linux-user/linux-user/mmap.o
  CC      i386-linux-user/linux-user/elfload.o
  CC      mips64el-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/linux-user/elfload.o
  CC      ppcemb-softmmu/accel/kvm/kvm-all.o
  CC      nios2-linux-user/linux-user/signal.o
  CC      sh4eb-softmmu/migration/ram.o
  CC      xtensa-softmmu/accel/tcg/cpu-exec.o
  CC      mips64el-linux-user/linux-user/strace.o
  CC      cris-linux-user/linux-user/mmap.o
  CC      arm-softmmu/qtest.o
  CC      i386-softmmu/memory.o
  CC      microblaze-linux-user/linux-user/elfload.o
  CC      sh4eb-linux-user/linux-user/signal.o
  CC      mipsn32-linux-user/linux-user/strace.o
  CC      mips64el-softmmu/qtest.o
  CC      microblaze-linux-user/linux-user/linuxload.o
  CC      microblazeel-softmmu/qtest.o
  CC      arm-linux-user/linux-user/linuxload.o
  CC      microblaze-softmmu/gdbstub.o
  CC      mips64el-softmmu/memory.o
  CC      microblaze-linux-user/linux-user/uaccess.o
  CC      sparc-softmmu/migration/ram.o
  CC      aarch64_be-linux-user/linux-user/elfload.o
  CC      arm-linux-user/linux-user/uaccess.o
  CC      i386-softmmu/memory_mapping.o
  CC      armeb-linux-user/linux-user/elfload.o
  CC      mips-softmmu/gdbstub.o
  CC      cris-softmmu/dump.o
  CC      ppc64-softmmu/qtest.o
  CC      s390x-softmmu/memory_mapping.o
  CC      mipsel-linux-user/linux-user/uaccess.o
  CC      mipsel-linux-user/linux-user/uname.o
  CC      sh4-softmmu/balloon.o
  CC      mips64el-softmmu/memory_mapping.o
  CC      sparc-linux-user/linux-user/mmap.o
  CC      xtensaeb-softmmu/memory.o
  CC      ppc-softmmu/accel/accel.o
  CC      ppcemb-softmmu/accel/kvm/sev.o
  CC      nios2-linux-user/linux-user/elfload.o
  CC      sparc32plus-linux-user/linux-user/mmap.o
  CC      sparc32plus-linux-user/linux-user/signal.o
  CC      microblazeel-linux-user/linux-user/linuxload.o
  CC      s390x-softmmu/dump.o
  CC      microblazeel-softmmu/memory.o
  CC      mipsel-softmmu/accel/accel.o
  CC      ppcemb-softmmu/accel/stubs/hax-stub.o
  CC      s390x-linux-user/linux-user/mmap.o
  CC      ppc-softmmu/accel/kvm/kvm-all.o
  CC      armeb-linux-user/linux-user/linuxload.o
  CC      x86_64-softmmu/numa.o
  CC      sparc64-linux-user/linux-user/signal.o
  CC      mips64-linux-user/linux-user/syscall.o
  CC      sparc64-linux-user/linux-user/elfload.o
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c: In function ‘sev_dbg_enc_dec’:
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘__u64’ [-Werror=format=]
                      fw_error_to_str(error));
                      ^
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘__u64’ [-Werror=format=]
  CC      hppa-linux-user/linux-user/uaccess.o
  CC      x86_64-softmmu/qtest.o
  CC      ppc64le-linux-user/accel/tcg/user-exec-stub.o
  CC      mipsn32el-linux-user/linux-user/linuxload.o
cc1: all warnings being treated as errors
make[1]: *** [accel/kvm/sev.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC      tricore-softmmu/memory_mapping.o
  CC      microblaze-softmmu/balloon.o
  CC      xtensa-softmmu/accel/tcg/cpu-exec-common.o
  CC      ppc-softmmu/accel/kvm/sev.o
  CC      sparc64-linux-user/linux-user/linuxload.o
  CC      sh4-linux-user/linux-user/signal.o
  CC      cris-softmmu/migration/ram.o
  CC      sparc32plus-linux-user/linux-user/elfload.o
  CCAS    mipsel-linux-user/linux-user/safe-syscall.o
  CC      sparc32plus-linux-user/linux-user/linuxload.o
  CC      mips64el-softmmu/dump.o
  CC      microblazeel-softmmu/memory_mapping.o
  CC      mipsel-softmmu/accel/stubs/hax-stub.o
  CC      mipsel-linux-user/target/mips/translate.o
  CC      aarch64-softmmu/ioport.o
  CC      sparc64-linux-user/linux-user/uaccess.o
  CC      sparc64-softmmu/accel/tcg/cpu-exec.o
  CC      arm-softmmu/memory.o
  CC      ppc64-softmmu/memory.o
  CC      moxie-softmmu/migration/ram.o
  CC      ppc64le-linux-user/linux-user/main.o
  CC      ppc64-softmmu/memory_mapping.o
  CC      lm32-softmmu/gdbstub.o
  CC      sh4-softmmu/ioport.o
  CC      or1k-linux-user/target/openrisc/fpu_helper.o
  CC      xtensaeb-softmmu/memory_mapping.o
  CC      microblaze-linux-user/linux-user/uname.o
  CC      sparc64-softmmu/accel/tcg/cpu-exec-common.o
  CC      aarch64-linux-user/target/arm/cpu64.o
  CC      microblazeel-softmmu/dump.o
  CC      sh4eb-softmmu/accel/accel.o
  CC      i386-linux-user/linux-user/linuxload.o
  CC      s390x-softmmu/migration/ram.o
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c: In function ‘sev_dbg_enc_dec’:
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘__u64’ [-Werror=format=]
                      fw_error_to_str(error));
                      ^
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘__u64’ [-Werror=format=]
  CC      mips-linux-user/linux-user/elfload.o
  CC      mips64-softmmu/accel/tcg/tcg-runtime.o
cc1: all warnings being treated as errors
make[1]: *** [accel/kvm/sev.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC      mips64-softmmu/accel/tcg/cpu-exec.o
  CC      ppc-linux-user/linux-user/mmap.o
  CC      sh4eb-softmmu/accel/stubs/hax-stub.o
  CC      sh4-linux-user/linux-user/elfload.o
  CC      xtensa-softmmu/accel/tcg/translate-all.o
make: *** [subdir-ppcemb-softmmu] Error 2
make: *** Waiting for unfinished jobs....
  CC      x86_64-linux-user/linux-user/linuxload.o
  CC      arm-softmmu/memory_mapping.o
  CC      m68k-linux-user/linux-user/signal.o
  CC      mipsel-linux-user/target/mips/dsp_helper.o
  CC      mipsel-linux-user/target/mips/op_helper.o
  CC      tilegx-linux-user/linux-user/signal.o
  CC      sparc-softmmu/accel/accel.o
  CC      alpha-softmmu/accel/accel.o
  CC      s390x-linux-user/linux-user/signal.o
  CC      or1k-softmmu/dump.o
  CC      or1k-linux-user/target/openrisc/interrupt_helper.o
  CC      m68k-linux-user/linux-user/elfload.o
  CC      microblaze-softmmu/ioport.o
  CC      cris-linux-user/linux-user/signal.o
  CC      mipsel-softmmu/accel/stubs/hvf-stub.o
  CC      sparc64-softmmu/accel/tcg/translate-all.o
  CC      s390x-softmmu/accel/accel.o
  CC      x86_64-linux-user/linux-user/uaccess.o
  CC      aarch64-softmmu/numa.o
  CC      mips64-linux-user/linux-user/strace.o
  CC      ppc64-softmmu/dump.o
  CC      mips64-softmmu/accel/tcg/cpu-exec-common.o
  CC      unicore32-softmmu/accel/stubs/hax-stub.o
  CC      x86_64-linux-user/linux-user/uname.o
  CC      m68k-softmmu/memory_mapping.o
  CC      s390x-softmmu/accel/stubs/hax-stub.o
  CC      microblazeel-linux-user/linux-user/uaccess.o
  CC      sh4-softmmu/numa.o
  CC      sparc-softmmu/accel/stubs/hax-stub.o
  CC      xtensa-softmmu/accel/tcg/translator.o
  CC      alpha-softmmu/accel/stubs/hax-stub.o
  CC      mips64-softmmu/accel/tcg/translate-all.o
  CC      sparc64-linux-user/linux-user/uname.o
  CC      sparc-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/dump.o
  CC      i386-softmmu/dump.o
  CC      x86_64-softmmu/memory.o
  CC      ppc64le-linux-user/linux-user/syscall.o
  CC      mipsel-softmmu/accel/stubs/kvm-stub.o
  CC      ppc64le-linux-user/linux-user/strace.o
  CC      alpha-linux-user/linux-user/linuxload.o
  CC      sh4eb-linux-user/linux-user/elfload.o
  CC      unicore32-softmmu/accel/stubs/hvf-stub.o
  CC      sparc-softmmu/accel/stubs/kvm-stub.o
  CC      m68k-softmmu/migration/ram.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      microblaze-softmmu/numa.o
  CC      ppc64le-linux-user/linux-user/mmap.o
  CC      cris-softmmu/accel/accel.o
  CC      unicore32-softmmu/accel/stubs/kvm-stub.o
  CC      mips-linux-user/linux-user/linuxload.o
  CC      cris-linux-user/linux-user/elfload.o
  CC      mipsn32-linux-user/linux-user/mmap.o
  CC      mips-softmmu/balloon.o
  CCAS    microblaze-linux-user/linux-user/safe-syscall.o
  CC      sparc-softmmu/accel/tcg/tcg-all.o
  CC      tricore-softmmu/dump.o
  CC      mipsel-softmmu/accel/tcg/tcg-all.o
  CC      aarch64-softmmu/qtest.o
  CC      sh4eb-softmmu/accel/stubs/hvf-stub.o
  CC      arm-linux-user/linux-user/uname.o
  CC      mips64el-linux-user/linux-user/mmap.o
  CC      alpha-softmmu/accel/stubs/hvf-stub.o
  CCAS    ppc64abi32-linux-user/linux-user/safe-syscall.o
  CC      mipsn32-linux-user/linux-user/signal.o
  CC      aarch64-softmmu/memory.o
  CC      i386-softmmu/migration/ram.o
  CC      ppc64le-linux-user/linux-user/signal.o
  CC      unicore32-softmmu/accel/tcg/tcg-all.o
  CC      xtensa-softmmu/hw/core/generic-loader.o
  CC      ppc64-softmmu/migration/ram.o
  CC      hppa-linux-user/linux-user/uname.o
  CC      ppc64le-linux-user/linux-user/elfload.o
  CC      lm32-softmmu/balloon.o
  CC      mipsel-softmmu/accel/tcg/cputlb.o
  CC      mipsel-softmmu/accel/tcg/tcg-runtime.o
  CC      nios2-softmmu/dump.o
  CC      mips64-softmmu/accel/tcg/translator.o
  CC      or1k-linux-user/target/openrisc/mmu_helper.o
  CC      sparc64-softmmu/accel/tcg/translator.o
  CC      unicore32-softmmu/accel/tcg/cputlb.o
  CC      mips-linux-user/linux-user/uaccess.o
  CC      sh4eb-softmmu/accel/stubs/kvm-stub.o
  CC      sh4eb-linux-user/linux-user/linuxload.o
  CC      sparc-softmmu/accel/tcg/cputlb.o
  CC      unicore32-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/tcg-all.o
  CC      alpha-softmmu/accel/stubs/kvm-stub.o
  CC      sh4-softmmu/qtest.o
  CC      i386-linux-user/linux-user/uaccess.o
  CC      mips-softmmu/ioport.o
  CC      sh4eb-linux-user/linux-user/uaccess.o
  CCAS    arm-linux-user/linux-user/safe-syscall.o
  CC      sh4-softmmu/memory.o
  CC      i386-softmmu/accel/accel.o
  CC      i386-linux-user/linux-user/uname.o
  CCAS    i386-linux-user/linux-user/safe-syscall.o
  CC      ppc64-softmmu/accel/accel.o
  CCAS    hppa-linux-user/linux-user/safe-syscall.o
  CC      hppa-linux-user/target/hppa/translate.o
  CC      ppc64-linux-user/linux-user/signal.o
  CC      microblazeel-softmmu/migration/ram.o
  CC      lm32-softmmu/ioport.o
  CC      microblazeel-linux-user/linux-user/uname.o
  CC      sh4eb-linux-user/linux-user/uname.o
  CC      x86_64-softmmu/dump.o
  CC      cris-linux-user/linux-user/linuxload.o
  CC      xtensa-softmmu/hw/core/null-machine.o
  CC      microblaze-softmmu/qtest.o
  CC      alpha-softmmu/accel/tcg/cputlb.o
  CC      mipsel-softmmu/accel/tcg/cpu-exec.o
  CC      sh4-linux-user/linux-user/linuxload.o
  CC      cris-linux-user/linux-user/uaccess.o
  CC      m68k-softmmu/accel/accel.o
  CC      ppc64le-linux-user/linux-user/linuxload.o
  CC      sh4eb-softmmu/accel/tcg/tcg-all.o
make: *** [subdir-ppc-softmmu] Error 2
  CC      sh4-softmmu/memory_mapping.o
  CC      mips-softmmu/numa.o
  CC      or1k-linux-user/target/openrisc/sys_helper.o
  CC      ppc64-softmmu/accel/kvm/kvm-all.o
  CC      microblazeel-softmmu/accel/accel.o
  CCAS    sparc64-linux-user/linux-user/safe-syscall.o
  CC      mips-softmmu/qtest.o
  CC      tilegx-linux-user/linux-user/elfload.o
  CC      ppc64abi32-linux-user/target/ppc/cpu-models.o
  CC      armeb-linux-user/linux-user/uaccess.o
  CC      m68k-softmmu/accel/stubs/hax-stub.o
  CC      sparc32plus-linux-user/linux-user/uaccess.o
  CC      hppa-linux-user/target/hppa/helper.o
  CCAS    x86_64-linux-user/linux-user/safe-syscall.o
  CC      nios2-linux-user/linux-user/linuxload.o
  CC      sparc32plus-linux-user/linux-user/uname.o
  CC      mips64el-softmmu/migration/ram.o
  CC      cris-softmmu/accel/stubs/hax-stub.o
  CCAS    microblazeel-linux-user/linux-user/safe-syscall.o
  CC      mipsn32-linux-user/linux-user/elfload.o
  CC      moxie-softmmu/accel/accel.o
  CC      sh4eb-softmmu/accel/tcg/cputlb.o
  CC      sh4-softmmu/dump.o
  CC      sh4-softmmu/migration/ram.o
  CC      or1k-linux-user/target/openrisc/gdbstub.o
  CC      xtensa-softmmu/hw/misc/mmio_interface.o
  CC      s390x-softmmu/accel/stubs/hvf-stub.o
  CC      sparc64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      hppa-linux-user/target/hppa/cpu.o
  CC      sparc-linux-user/linux-user/signal.o
  CC      sparc-softmmu/accel/tcg/tcg-runtime.o
  CC      mipsn32el-linux-user/linux-user/uaccess.o
  CC      mipsn32-linux-user/linux-user/linuxload.o
  CC      mipsel-softmmu/accel/tcg/cpu-exec-common.o
  CC      ppc-linux-user/linux-user/signal.o
  CC      i386-linux-user/linux-user/vm86.o
  CC      alpha-softmmu/accel/tcg/tcg-runtime.o
  CC      s390x-linux-user/linux-user/elfload.o
  CC      lm32-softmmu/numa.o
  CC      lm32-softmmu/qtest.o
  CC      cris-softmmu/accel/stubs/hvf-stub.o
  CC      or1k-softmmu/migration/ram.o
  CC      cris-softmmu/accel/stubs/kvm-stub.o
  CC      microblazeel-linux-user/linux-user/flatload.o
  CC      unicore32-softmmu/accel/tcg/cpu-exec.o
  CC      s390x-linux-user/linux-user/linuxload.o
  CC      microblaze-softmmu/memory.o
  CC      xtensa-softmmu/hw/net/vhost_net.o
  CC      aarch64_be-linux-user/linux-user/linuxload.o
  CC      cris-softmmu/accel/tcg/tcg-all.o
  CC      aarch64_be-linux-user/linux-user/uaccess.o
  CC      ppc64le-linux-user/linux-user/uaccess.o
  CC      microblazeel-softmmu/accel/stubs/hax-stub.o
  CC      nios2-softmmu/migration/ram.o
  CC      s390x-softmmu/accel/stubs/kvm-stub.o
  CC      m68k-softmmu/accel/stubs/hvf-stub.o
  CC      arm-linux-user/linux-user/flatload.o
  CC      mips64-softmmu/hw/9pfs/virtio-9p-device.o
  CCAS    sparc32plus-linux-user/linux-user/safe-syscall.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11.o
  CC      aarch64_be-linux-user/linux-user/uname.o
  CC      arm-softmmu/dump.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/migration/ram.o
  CC      mipsn32el-linux-user/linux-user/uname.o
  CC      tricore-softmmu/migration/ram.o
  CC      or1k-linux-user/trace/control-target.o
  CC      tricore-softmmu/accel/accel.o
  CC      hppa-linux-user/target/hppa/op_helper.o
  CC      mips64el-linux-user/linux-user/signal.o
  CCAS    aarch64_be-linux-user/linux-user/safe-syscall.o
  CC      or1k-softmmu/accel/accel.o
  CC      microblaze-linux-user/linux-user/flatload.o
  CC      moxie-softmmu/accel/stubs/hax-stub.o
  CC      xtensaeb-softmmu/dump.o
  CC      i386-softmmu/accel/stubs/hax-stub.o
  CC      or1k-softmmu/accel/stubs/hax-stub.o
  CC      mips64el-linux-user/linux-user/elfload.o
  CC      sparc64-softmmu/hw/block/virtio-blk.o
  CC      xtensa-softmmu/hw/net/rocker/qmp-norocker.o
  CC      tricore-softmmu/accel/stubs/hax-stub.o
  CC      ppc64le-linux-user/linux-user/uname.o
  CC      mips64el-linux-user/linux-user/linuxload.o
  CC      sparc32plus-linux-user/target/sparc/translate.o
  CC      nios2-softmmu/accel/accel.o
  CC      arm-softmmu/accel/accel.o
  CC      mips-linux-user/linux-user/uname.o
  CC      microblazeel-softmmu/accel/stubs/hvf-stub.o
  CC      cris-softmmu/accel/tcg/cputlb.o
  CC      aarch64-linux-user/target/arm/translate-a64.o
  CC      cris-softmmu/accel/tcg/tcg-runtime.o
  CC      armeb-linux-user/linux-user/uname.o
  CC      sh4-linux-user/linux-user/uaccess.o
  CC      m68k-softmmu/accel/stubs/kvm-stub.o
  CCAS    mipsn32el-linux-user/linux-user/safe-syscall.o
  CC      sparc-softmmu/accel/tcg/cpu-exec.o
  CC      sparc-softmmu/accel/tcg/cpu-exec-common.o
  CC      i386-softmmu/accel/stubs/hvf-stub.o
  CC      alpha-softmmu/accel/tcg/cpu-exec.o
  CC      mipsn32el-linux-user/target/mips/translate.o
  CC      nios2-linux-user/linux-user/uaccess.o
  CC      s390x-softmmu/accel/tcg/tcg-all.o
  CC      moxie-softmmu/accel/stubs/hvf-stub.o
  CC      ppc64-linux-user/linux-user/elfload.o
  CC      sparc32plus-linux-user/target/sparc/helper.o
  CC      cris-linux-user/linux-user/uname.o
  CC      or1k-linux-user/trace/generated-helpers.o
  CC      xtensa-softmmu/hw/vfio/common.o
  CC      mipsn32-linux-user/linux-user/uaccess.o
  CC      sparc64-softmmu/hw/block/vhost-user-blk.o
  CC      microblaze-linux-user/target/microblaze/translate.o
  CC      mips64-softmmu/hw/block/virtio-blk.o
  CC      mips64-softmmu/hw/block/vhost-user-blk.o
  CC      mips-softmmu/memory.o
  CCAS    ppc64le-linux-user/linux-user/safe-syscall.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      sparc-linux-user/linux-user/elfload.o
  CC      s390x-linux-user/linux-user/uaccess.o
  CC      ppc64abi32-linux-user/target/ppc/cpu.o
  CC      nios2-softmmu/accel/stubs/hax-stub.o
  CC      sparc64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/dump.o
  CC      mipsn32el-linux-user/target/mips/dsp_helper.o
  CC      x86_64-softmmu/migration/ram.o
  CC      mipsn32el-linux-user/target/mips/op_helper.o
  CC      sparc-softmmu/accel/tcg/translate-all.o
  CC      sparc64-softmmu/hw/char/virtio-serial-bus.o
  CC      m68k-linux-user/linux-user/linuxload.o
  CC      tricore-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/accel/tcg/tcg-all.o
  CC      s390x-softmmu/accel/tcg/cputlb.o
  CC      s390x-linux-user/linux-user/uname.o
  CC      i386-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/migration/ram.o
  CC      moxie-softmmu/accel/stubs/kvm-stub.o
  CC      alpha-softmmu/accel/tcg/cpu-exec-common.o
  CC      lm32-softmmu/memory.o
  CCAS    armeb-linux-user/linux-user/safe-syscall.o
  CC      alpha-softmmu/accel/tcg/translate-all.o
  LINK    or1k-linux-user/qemu-or1k
  CC      aarch64_be-linux-user/linux-user/flatload.o
  CC      aarch64-linux-user/target/arm/helper-a64.o
  CCAS    sh4eb-linux-user/linux-user/safe-syscall.o
  CC      mipsel-linux-user/target/mips/lmi_helper.o
  CC      xtensaeb-softmmu/migration/ram.o
  CC      sparc64-linux-user/target/sparc/translate.o
  CC      xtensaeb-softmmu/accel/accel.o
  CC      sh4-linux-user/linux-user/uname.o
  CC      microblaze-softmmu/memory_mapping.o
  CC      microblazeel-linux-user/target/microblaze/translate.o
  CC      moxie-softmmu/accel/tcg/tcg-all.o
  CC      alpha-linux-user/linux-user/uaccess.o
  CCAS    mips-linux-user/linux-user/safe-syscall.o
  CC      i386-softmmu/accel/tcg/tcg-all.o
  CC      i386-softmmu/accel/tcg/cputlb.o
  CC      m68k-softmmu/accel/tcg/cputlb.o
  CC      xtensa-softmmu/hw/vfio/platform.o
  CC      mips64el-softmmu/accel/accel.o
  CC      mipsel-softmmu/accel/tcg/translate-all.o
  CCAS    cris-linux-user/linux-user/safe-syscall.o
  CC      aarch64_be-linux-user/target/arm/arm-semi.o
  CC      sparc64-linux-user/target/sparc/helper.o
  CC      mipsn32-linux-user/linux-user/uname.o
  CC      alpha-linux-user/linux-user/uname.o
  CC      ppc64-linux-user/linux-user/linuxload.o
  CC      ppc64le-linux-user/target/ppc/cpu-models.o
  CC      moxie-softmmu/accel/tcg/cputlb.o
  CC      mips64-linux-user/linux-user/mmap.o
  CC      hppa-linux-user/target/hppa/gdbstub.o
  CC      aarch64-linux-user/target/arm/gdbstub64.o
  CC      tilegx-linux-user/linux-user/linuxload.o
  CC      xtensa-softmmu/hw/vfio/spapr.o
  CC      arm-softmmu/accel/stubs/hax-stub.o
  CC      mipsel-softmmu/accel/tcg/translator.o
  CC      lm32-softmmu/memory_mapping.o
  CC      mipsel-softmmu/hw/9pfs/virtio-9p-device.o
  CC      microblazeel-softmmu/accel/stubs/kvm-stub.o
  CC      microblazeel-softmmu/accel/tcg/tcg-all.o
  CC      mipsn32el-linux-user/target/mips/lmi_helper.o
  CC      mips64-linux-user/linux-user/signal.o
  CC      armeb-linux-user/linux-user/flatload.o
  CC      tilegx-linux-user/linux-user/uaccess.o
  CC      xtensa-softmmu/hw/xtensa/pic_cpu.o
  CC      sh4eb-softmmu/accel/tcg/tcg-runtime.o
  CC      ppc64abi32-linux-user/target/ppc/translate.o
  CC      x86_64-linux-user/target/i386/helper.o
  CC      mips64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11.o
  GEN     trace/generated-helpers.c
  CC      ppc64le-linux-user/target/ppc/cpu.o
  CC      moxie-softmmu/accel/tcg/tcg-runtime.o
  CC      mips64el-linux-user/linux-user/uaccess.o
  CC      sparc-linux-user/linux-user/linuxload.o
  CC      mipsn32el-linux-user/target/mips/helper.o
  CC      nios2-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-linux-user/linux-user/uaccess.o
  CC      or1k-softmmu/accel/stubs/hvf-stub.o
  CC      mips64el-softmmu/accel/stubs/hax-stub.o
  CC      ppc64-softmmu/accel/kvm/sev.o
  CC      sparc64-softmmu/hw/core/generic-loader.o
  CC      sparc32plus-linux-user/target/sparc/cpu.o
  CCAS    alpha-linux-user/linux-user/safe-syscall.o
  CC      sparc32plus-linux-user/target/sparc/fop_helper.o
  CC      alpha-linux-user/target/alpha/translate.o
  CC      microblazeel-softmmu/accel/tcg/cputlb.o
  CC      x86_64-linux-user/target/i386/cpu.o
  CCAS    sh4-linux-user/linux-user/safe-syscall.o
  CC      nios2-linux-user/linux-user/uname.o
  CC      xtensaeb-softmmu/accel/stubs/hax-stub.o
  CC      nios2-softmmu/accel/stubs/kvm-stub.o
  CC      mips-softmmu/memory_mapping.o
  CCAS    s390x-linux-user/linux-user/safe-syscall.o
  CC      microblaze-linux-user/target/microblaze/op_helper.o
  CC      tricore-softmmu/accel/stubs/kvm-stub.o
  CC      alpha-linux-user/target/alpha/helper.o
  CC      mips64el-softmmu/accel/stubs/hvf-stub.o
  CC      mipsel-linux-user/target/mips/helper.o
  CC      sparc64-linux-user/target/sparc/cpu.o
  CC      xtensaeb-softmmu/accel/stubs/hvf-stub.o
  CC      arm-softmmu/accel/stubs/hvf-stub.o
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c: In function ‘sev_dbg_enc_dec’:
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘__u64’ [-Werror=format=]
                      fw_error_to_str(error));
                      ^
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘__u64’ [-Werror=format=]
cc1: all warnings being treated as errors
make[1]: *** [accel/kvm/sev.o] Error 1
  CC      or1k-softmmu/accel/stubs/kvm-stub.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o
make: *** [subdir-ppc64-softmmu] Error 2
  CC      ppc64abi32-linux-user/target/ppc/kvm-stub.o
  CC      mips64el-linux-user/linux-user/uname.o
  CC      microblazeel-linux-user/target/microblaze/op_helper.o
  CC      mips64-softmmu/hw/char/virtio-serial-bus.o
  CC      mips64-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/accel/tcg/tcg-runtime.o
  CC      sh4-softmmu/accel/accel.o
  CC      i386-linux-user/target/i386/helper.o
  CC      mips64-linux-user/linux-user/elfload.o
  CC      tricore-softmmu/accel/tcg/tcg-all.o
  CC      xtensa-softmmu/hw/xtensa/sim.o
  CC      sparc64-linux-user/target/sparc/fop_helper.o
  CC      x86_64-softmmu/accel/accel.o
  CC      aarch64_be-linux-user/target/arm/kvm-stub.o
  CC      mips64-softmmu/hw/core/null-machine.o
  CC      ppc-linux-user/linux-user/elfload.o
  CC      sh4-softmmu/accel/stubs/hax-stub.o
  CC      lm32-softmmu/dump.o
  CC      aarch64_be-linux-user/target/arm/translate.o
  CC      moxie-softmmu/accel/tcg/cpu-exec.o
  CC      mips64el-softmmu/accel/stubs/kvm-stub.o
  CC      sparc64-softmmu/hw/core/null-machine.o
  CC      x86_64-linux-user/target/i386/gdbstub.o
  CC      ppc64le-linux-user/target/ppc/translate.o
  CC      sparc-softmmu/accel/tcg/translator.o
  CC      mipsel-softmmu/hw/block/virtio-blk.o
  CC      sparc-linux-user/linux-user/uaccess.o
  CC      or1k-softmmu/accel/tcg/tcg-all.o
  CC      hppa-linux-user/trace/control-target.o
  CC      i386-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-linux-user/target/arm/crypto_helper.o
  CC      x86_64-softmmu/accel/stubs/hax-stub.o
  CC      s390x-linux-user/target/s390x/cpu.o
  CC      nios2-softmmu/accel/tcg/tcg-all.o
  CC      ppc64-linux-user/linux-user/uaccess.o
  CC      alpha-linux-user/target/alpha/cpu.o
  CC      mips64el-softmmu/accel/tcg/tcg-all.o
  CC      tricore-softmmu/accel/tcg/cputlb.o
  CC      sh4eb-linux-user/linux-user/flatload.o
  CC      sh4eb-softmmu/accel/tcg/cpu-exec.o
  CC      s390x-linux-user/target/s390x/cpu_models.o
  CC      m68k-softmmu/accel/tcg/tcg-runtime.o
  CC      xtensa-softmmu/hw/xtensa/xtensa_memory.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o
  CC      arm-softmmu/accel/stubs/kvm-stub.o
  CCAS    mipsn32-linux-user/linux-user/safe-syscall.o
  CC      sh4eb-linux-user/target/sh4/translate.o
  CC      s390x-linux-user/target/s390x/cpu_features.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpopcode.o
  CC      aarch64-softmmu/accel/accel.o
  CC      mipsn32el-linux-user/target/mips/cpu.o
  CC      i386-softmmu/accel/tcg/cpu-exec.o
  CC      or1k-softmmu/accel/tcg/cputlb.o
  CC      sh4-softmmu/accel/stubs/hvf-stub.o
  CC      microblazeel-softmmu/accel/tcg/tcg-runtime.o
  CC      xtensa-softmmu/hw/xtensa/xtfpga.o
  CC      nios2-softmmu/accel/tcg/cputlb.o
  CC      nios2-softmmu/accel/tcg/tcg-runtime.o
  CC      nios2-softmmu/accel/tcg/cpu-exec.o
  CC      sparc64-softmmu/hw/display/vga.o
  CC      i386-linux-user/target/i386/cpu.o
  CC      mips64-linux-user/linux-user/linuxload.o
  CC      i386-softmmu/accel/tcg/cpu-exec-common.o
  CC      hppa-linux-user/trace/generated-helpers.o
  CC      s390x-linux-user/target/s390x/gdbstub.o
  CC      m68k-linux-user/linux-user/uname.o
  CC      microblaze-linux-user/target/microblaze/helper.o
  CC      nios2-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips64el-softmmu/accel/tcg/cputlb.o
  CC      i386-softmmu/accel/tcg/translate-all.o
  CC      cris-softmmu/accel/tcg/cpu-exec-common.o
  CC      s390x-linux-user/target/s390x/interrupt.o
  CC      arm-softmmu/accel/tcg/tcg-all.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  GEN     trace/generated-helpers.c
  CC      sh4-linux-user/linux-user/flatload.o
  CC      sh4eb-linux-user/target/sh4/op_helper.o
  CC      mipsel-softmmu/hw/block/vhost-user-blk.o
  CC      microblazeel-softmmu/accel/tcg/cpu-exec.o
  CC      microblazeel-linux-user/target/microblaze/helper.o
  CC      s390x-linux-user/target/s390x/helper.o
  CC      sparc-softmmu/hw/core/generic-loader.o
  CC      sh4-softmmu/accel/stubs/kvm-stub.o
  CC      sh4-softmmu/accel/tcg/tcg-all.o
  CC      alpha-linux-user/target/alpha/int_helper.o
  CC      tilegx-linux-user/linux-user/uname.o
  CC      cris-softmmu/accel/tcg/translate-all.o
  CC      microblazeel-linux-user/target/microblaze/cpu.o
  CC      s390x-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/accel/stubs/hvf-stub.o
  CC      mips64-linux-user/linux-user/uaccess.o
  CC      xtensa-softmmu/target/xtensa/xtensa-semi.o
  CC      x86_64-softmmu/accel/stubs/hvf-stub.o
  CC      microblaze-softmmu/dump.o
  CCAS    m68k-linux-user/linux-user/safe-syscall.o
  CC      lm32-softmmu/migration/ram.o
  CCAS    tilegx-linux-user/linux-user/safe-syscall.o
  CC      ppc-linux-user/linux-user/linuxload.o
  CC      ppc64-linux-user/linux-user/uname.o
  CC      unicore32-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-linux-user/target/cris/translate.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/single_cpdo.o
  CC      alpha-softmmu/hw/9pfs/virtio-9p-device.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/double_cpdo.o
  CC      xtensaeb-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64_be-linux-user/target/arm/op_helper.o
  CC      xtensa-softmmu/target/xtensa/core-dc232b.o
  CC      cris-linux-user/target/cris/op_helper.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      cris-linux-user/target/cris/helper.o
  LINK    hppa-linux-user/qemu-hppa
  CC      sh4eb-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4eb-softmmu/accel/tcg/translate-all.o
  CC      ppc64le-linux-user/target/ppc/kvm-stub.o
  CC      mipsn32el-linux-user/target/mips/gdbstub.o
  CC      aarch64-linux-user/trace/control-target.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      sparc-softmmu/hw/core/null-machine.o
  CC      alpha-linux-user/target/alpha/fpu_helper.o
  CC      mips-linux-user/target/mips/translate.o
  CC      mips64-softmmu/hw/display/vga.o
  CC      sh4-softmmu/accel/tcg/cputlb.o
  CC      sh4-softmmu/accel/tcg/tcg-runtime.o
  CC      mips-softmmu/dump.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      mips64el-softmmu/accel/tcg/tcg-runtime.o
  CC      m68k-linux-user/linux-user/flatload.o
  CC      tilegx-linux-user/target/tilegx/cpu.o
  CC      mipsn32-linux-user/target/mips/translate.o
  CC      arm-softmmu/accel/tcg/cputlb.o
  CC      tricore-softmmu/accel/tcg/tcg-runtime.o
  CCAS    nios2-linux-user/linux-user/safe-syscall.o
  CC      alpha-linux-user/target/alpha/vax_helper.o
  CC      x86_64-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      sparc-linux-user/linux-user/uname.o
  CC      alpha-softmmu/hw/block/virtio-blk.o
  CC      sh4-linux-user/target/sh4/translate.o
  CCAS    ppc64-linux-user/linux-user/safe-syscall.o
  CC      mipsel-softmmu/hw/block/dataplane/virtio-blk.o
  CC      mips64el-softmmu/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/extended_cpdo.o
  CC      x86_64-linux-user/target/i386/xsave_helper.o
  CC      unicore32-softmmu/accel/tcg/translate-all.o
  CC      mipsel-linux-user/target/mips/cpu.o
  CC      tricore-softmmu/accel/tcg/cpu-exec.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o
  CC      sh4eb-linux-user/target/sh4/helper.o
  CC      cris-linux-user/target/cris/cpu.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o
  CC      xtensaeb-softmmu/accel/tcg/tcg-all.o
  CC      mips-softmmu/migration/ram.o
  CC      ppc64abi32-linux-user/target/ppc/dfp_helper.o
  CC      microblaze-softmmu/migration/ram.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      xtensa-softmmu/target/xtensa/core-dc233c.o
  CC      tilegx-linux-user/target/tilegx/translate.o
  CC      mips64-softmmu/hw/display/virtio-gpu.o
  CC      sparc-softmmu/hw/display/tcx.o
  CC      aarch64_be-linux-user/target/arm/helper.o
  CC      aarch64_be-linux-user/target/arm/cpu.o
  CC      unicore32-softmmu/accel/tcg/translator.o
  CC      x86_64-linux-user/target/i386/translate.o
  CC      x86_64-linux-user/target/i386/bpt_helper.o
  CCAS    sparc-linux-user/linux-user/safe-syscall.o
  CC      armeb-linux-user/target/arm/arm-semi.o
  CC      microblazeel-linux-user/target/microblaze/gdbstub.o
  CC      microblaze-linux-user/target/microblaze/cpu.o
  CC      sparc32plus-linux-user/target/sparc/cc_helper.o
  CC      sparc32plus-linux-user/target/sparc/win_helper.o
  CC      mipsel-linux-user/target/mips/gdbstub.o
  CC      mips64el-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-softmmu/accel/tcg/translator.o
  CC      xtensaeb-softmmu/accel/tcg/cputlb.o
  CC      sparc-softmmu/hw/display/cg3.o
  CC      nios2-linux-user/target/nios2/translate.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/hw/char/virtio-serial-bus.o
  CC      mipsel-softmmu/hw/core/generic-loader.o
  CC      mips-softmmu/accel/accel.o
  CC      mips64-linux-user/linux-user/uname.o
  CC      i386-linux-user/target/i386/gdbstub.o
  CC      aarch64_be-linux-user/target/arm/neon_helper.o
  CC      mips-softmmu/accel/stubs/hax-stub.o
  CC      sh4eb-softmmu/accel/tcg/translator.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o
  CC      or1k-softmmu/accel/tcg/tcg-runtime.o
  CC      nios2-softmmu/accel/tcg/translate-all.o
  CC      sh4eb-linux-user/target/sh4/cpu.o
  CC      mipsel-linux-user/target/mips/msa_helper.o
  CC      nios2-softmmu/accel/tcg/translator.o
  CC      nios2-softmmu/hw/core/generic-loader.o
  CC      mipsn32el-linux-user/target/mips/msa_helper.o
  CC      sparc64-softmmu/hw/display/virtio-gpu.o
  CC      sparc-linux-user/target/sparc/translate.o
  CC      aarch64-linux-user/gdbstub-xml.o
  CC      sparc64-softmmu/hw/display/virtio-gpu-3d.o
  CC      unicore32-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-linux-user/linux-user/m68k-sim.o
  CC      sh4eb-softmmu/hw/9pfs/virtio-9p-device.o
  CC      mips-linux-user/target/mips/dsp_helper.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      moxie-softmmu/accel/tcg/cpu-exec-common.o
  CC      mipsel-softmmu/hw/core/null-machine.o
  CC      sh4-softmmu/accel/tcg/cpu-exec.o
  CC      arm-softmmu/accel/tcg/tcg-runtime.o
  CC      sparc64-softmmu/hw/display/virtio-gpu-pci.o
  CC      or1k-softmmu/accel/tcg/cpu-exec.o
  CC      cris-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/accel/tcg/translate-all.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpopcode.o
  CC      microblaze-linux-user/target/microblaze/gdbstub.o
  CC      mipsel-softmmu/hw/display/vga.o
  CC      moxie-softmmu/accel/tcg/translate-all.o
  CC      tricore-softmmu/accel/tcg/cpu-exec-common.o
  CC      i386-linux-user/target/i386/xsave_helper.o
  CC      moxie-softmmu/accel/tcg/translator.o
  CC      mips-linux-user/target/mips/op_helper.o
  CC      mipsn32-linux-user/target/mips/dsp_helper.o
  CCAS    mips64el-linux-user/linux-user/safe-syscall.o
  CC      ppc64abi32-linux-user/target/ppc/excp_helper.o
  CC      sparc64-softmmu/hw/misc/ivshmem.o
  CC      sparc-softmmu/hw/intc/grlib_irqmp.o
  CC      mipsn32-linux-user/target/mips/op_helper.o
  CC      cris-softmmu/hw/core/null-machine.o
  CC      tilegx-linux-user/target/tilegx/helper.o
  CC      mips64el-linux-user/target/mips/translate.o
  CC      sh4-linux-user/target/sh4/op_helper.o
  CC      armeb-linux-user/target/arm/kvm-stub.o
  CC      s390x-softmmu/accel/tcg/translator.o
  CC      unicore32-softmmu/hw/core/null-machine.o
  CC      microblazeel-softmmu/accel/tcg/cpu-exec-common.o
  CC      alpha-softmmu/hw/block/vhost-user-blk.o
  GEN     trace/generated-helpers.c
  CC      sparc64-softmmu/hw/misc/mmio_interface.o
  CC      ppc64le-linux-user/target/ppc/dfp_helper.o
  CC      sparc32plus-linux-user/target/sparc/mmu_helper.o
  CC      sparc-linux-user/target/sparc/helper.o
  CC      sparc64-softmmu/hw/net/virtio-net.o
  CC      ppc64-linux-user/target/ppc/cpu-models.o
  CC      armeb-linux-user/target/arm/translate.o
  CC      ppc64abi32-linux-user/target/ppc/fpu_helper.o
  CC      mips64el-linux-user/target/mips/dsp_helper.o
  CC      m68k-linux-user/target/m68k/m68k-semi.o
  CC      lm32-softmmu/accel/accel.o
  CC      microblaze-linux-user/trace/control-target.o
  CC      lm32-softmmu/accel/stubs/hax-stub.o
  CC      moxie-softmmu/hw/core/generic-loader.o
  CC      moxie-softmmu/hw/core/null-machine.o
  CC      sparc-softmmu/hw/misc/eccmemctl.o
  CC      mips64el-linux-user/target/mips/op_helper.o
  CC      sparc-softmmu/hw/misc/slavio_misc.o
  CC      arm-linux-user/linux-user/arm/nwfpe/single_cpdo.o
  CC      unicore32-softmmu/hw/misc/mmio_interface.o
  CC      cris-softmmu/hw/misc/mmio_interface.o
  CC      alpha-softmmu/hw/block/dataplane/virtio-blk.o
  CC      sh4eb-softmmu/hw/block/tc58128.o
  CC      ppc-linux-user/linux-user/uaccess.o
  CC      ppc64le-linux-user/target/ppc/excp_helper.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      i386-linux-user/target/i386/translate.o
  GEN     trace/generated-helpers.c
  CC      ppc64le-linux-user/target/ppc/fpu_helper.o
  CC      i386-linux-user/target/i386/bpt_helper.o
  CC      arm-linux-user/linux-user/arm/nwfpe/double_cpdo.o
  CC      ppc64abi32-linux-user/target/ppc/int_helper.o
  CC      sparc32plus-linux-user/target/sparc/ldst_helper.o
  CC      xtensa-softmmu/target/xtensa/core-de212.o
  CCAS    mips64-linux-user/linux-user/safe-syscall.o
  CC      cris-softmmu/hw/net/etraxfs_eth.o
  CC      mips-linux-user/target/mips/lmi_helper.o
  CC      ppc-linux-user/linux-user/uname.o
  CC      s390x-linux-user/target/s390x/translate.o
  CC      mipsn32-linux-user/target/mips/lmi_helper.o
  CC      x86_64-linux-user/target/i386/cc_helper.o
  CC      ppc64le-linux-user/target/ppc/int_helper.o
  CC      x86_64-linux-user/target/i386/excp_helper.o
  CC      lm32-softmmu/accel/stubs/hvf-stub.o
  CC      xtensa-softmmu/target/xtensa/core-fsf.o
  CC      sh4-linux-user/target/sh4/helper.o
  CC      mips64-softmmu/hw/display/virtio-gpu-3d.o
  CC      microblazeel-linux-user/trace/control-target.o
  CC      microblaze-softmmu/accel/accel.o
  CC      unicore32-softmmu/hw/net/vhost_net.o
  CC      armeb-linux-user/target/arm/op_helper.o
  CC      nios2-softmmu/hw/core/null-machine.o
  CC      microblaze-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/hw/block/virtio-blk.o
  CC      sparc32plus-linux-user/target/sparc/int64_helper.o
  CC      arm-linux-user/linux-user/arm/nwfpe/extended_cpdo.o
  CC      microblazeel-softmmu/accel/tcg/translate-all.o
  CC      microblazeel-softmmu/accel/tcg/translator.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips-softmmu/accel/stubs/kvm-stub.o
  CC      lm32-softmmu/accel/stubs/kvm-stub.o
  CC      m68k-linux-user/target/m68k/translate.o
  CC      lm32-softmmu/accel/tcg/tcg-all.o
  CC      s390x-softmmu/hw/9pfs/virtio-9p-device.o
  CC      tricore-softmmu/accel/tcg/translate-all.o
  CC      nios2-linux-user/target/nios2/op_helper.o
  CC      alpha-softmmu/hw/char/virtio-serial-bus.o
  CC      ppc64-linux-user/target/ppc/cpu.o
  CC      xtensaeb-softmmu/accel/tcg/tcg-runtime.o
  CC      unicore32-softmmu/hw/net/rocker/qmp-norocker.o
  CC      mips64-softmmu/hw/display/virtio-gpu-pci.o
  CC      m68k-softmmu/accel/tcg/cpu-exec.o
  CC      i386-softmmu/accel/tcg/translator.o
  CC      xtensa-softmmu/target/xtensa/core-sample_controller.o
  CC      cris-softmmu/hw/net/vhost_net.o
  CC      s390x-softmmu/hw/block/virtio-blk.o
  CC      sparc-softmmu/hw/misc/mmio_interface.o
  CC      alpha-linux-user/target/alpha/sys_helper.o
  CC      sh4eb-linux-user/target/sh4/gdbstub.o
  CC      nios2-softmmu/hw/intc/nios2_iic.o
  CC      s390x-softmmu/hw/block/vhost-user-blk.o
  CC      tilegx-linux-user/target/tilegx/simd_helper.o
  CC      i386-linux-user/target/i386/cc_helper.o
  CC      microblazeel-linux-user/trace/generated-helpers.o
  CC      or1k-softmmu/accel/tcg/cpu-exec-common.o
  CC      or1k-softmmu/accel/tcg/translate-all.o
  CC      arm-linux-user/target/arm/arm-semi.o
  CC      m68k-softmmu/accel/tcg/cpu-exec-common.o
  CC      or1k-softmmu/accel/tcg/translator.o
  CC      mips64el-softmmu/accel/tcg/translate-all.o
  CC      i386-linux-user/target/i386/excp_helper.o
  CC      lm32-softmmu/accel/tcg/cputlb.o
  CC      moxie-softmmu/hw/display/vga.o
  CC      sh4-softmmu/accel/tcg/translate-all.o
  CC      unicore32-softmmu/hw/vfio/common.o
  LINK    microblaze-linux-user/qemu-microblaze
  CC      sh4-softmmu/accel/tcg/translator.o
  CC      i386-softmmu/hw/9pfs/virtio-9p-device.o
  CC      sparc-softmmu/hw/net/vhost_net.o
  CC      microblaze-softmmu/accel/stubs/hax-stub.o
  CC      mipsn32-linux-user/target/mips/helper.o
  CC      sh4-softmmu/hw/9pfs/virtio-9p-device.o
  CC      mips64-softmmu/hw/intc/mips_gic.o
  CC      mips-softmmu/accel/tcg/tcg-all.o
  CC      alpha-linux-user/target/alpha/mem_helper.o
  CC      arm-softmmu/accel/tcg/cpu-exec.o
  CC      nios2-linux-user/target/nios2/helper.o
  CC      unicore32-softmmu/hw/vfio/platform.o
  CC      sh4-linux-user/target/sh4/cpu.o
  CC      mips64el-softmmu/accel/tcg/translator.o
  CC      mips64el-softmmu/hw/9pfs/virtio-9p-device.o
  CC      cris-softmmu/hw/net/rocker/qmp-norocker.o
  CC      i386-linux-user/target/i386/fpu_helper.o
  CC      xtensaeb-softmmu/accel/tcg/cpu-exec.o
  GEN     trace/generated-helpers.c
  CC      m68k-linux-user/target/m68k/op_helper.o
  CC      microblaze-softmmu/accel/stubs/hvf-stub.o
  CC      sparc32plus-linux-user/target/sparc/vis_helper.o
  CC      tilegx-linux-user/trace/control-target.o
  LINK    microblazeel-linux-user/qemu-microblazeel
  CC      s390x-linux-user/target/s390x/cc_helper.o
  CC      s390x-linux-user/target/s390x/excp_helper.o
  CC      microblazeel-softmmu/hw/core/generic-loader.o
  CC      mips-linux-user/target/mips/helper.o
  CC      mips-softmmu/accel/tcg/cputlb.o
  CC      sparc-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sparc-softmmu/hw/vfio/common.o
  CC      s390x-linux-user/target/s390x/fpu_helper.o
  CC      nios2-linux-user/target/nios2/cpu.o
  CC      s390x-linux-user/target/s390x/int_helper.o
  CC      mipsel-linux-user/target/mips/mips-semi.o
  CC      ppc64le-linux-user/target/ppc/timebase_helper.o
  CC      alpha-linux-user/target/alpha/gdbstub.o
  CC      mips64-softmmu/hw/misc/ivshmem.o
  CC      m68k-linux-user/target/m68k/helper.o
  CC      microblaze-softmmu/accel/stubs/kvm-stub.o
  CC      cris-softmmu/hw/vfio/common.o
  CC      i386-softmmu/hw/block/virtio-blk.o
  CC      nios2-softmmu/hw/misc/mmio_interface.o
  CC      mips64el-softmmu/hw/block/virtio-blk.o
  CC      cris-linux-user/target/cris/gdbstub.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      ppc64abi32-linux-user/target/ppc/timebase_helper.o
  CC      xtensaeb-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4eb-softmmu/hw/block/vhost-user-blk.o
  CC      sh4eb-linux-user/trace/control-target.o
  CC      sh4eb-softmmu/hw/block/dataplane/virtio-blk.o
  CC      nios2-linux-user/target/nios2/mmu.o
  CC      sparc64-softmmu/hw/net/vhost_net.o
  CC      cris-softmmu/hw/vfio/platform.o
  CC      alpha-softmmu/hw/core/generic-loader.o
  CC      microblazeel-softmmu/hw/core/null-machine.o
  GEN     trace/generated-helpers.c
  CC      lm32-softmmu/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/hw/display/virtio-gpu.o
  CC      mipsel-softmmu/hw/display/virtio-gpu-3d.o
  CC      arm-linux-user/target/arm/kvm-stub.o
  CC      mipsn32-linux-user/target/mips/cpu.o
  CC      tilegx-linux-user/trace/generated-helpers.o
  CC      alpha-linux-user/trace/control-target.o
  CC      nios2-softmmu/hw/net/vhost_net.o
  CC      mips64el-linux-user/target/mips/lmi_helper.o
  CC      mipsn32-linux-user/target/mips/gdbstub.o
  CC      mips-softmmu/accel/tcg/tcg-runtime.o
  CC      i386-softmmu/hw/block/vhost-user-blk.o
  CC      i386-softmmu/hw/block/dataplane/virtio-blk.o
  CC      m68k-softmmu/accel/tcg/translate-all.o
  CC      microblaze-softmmu/accel/tcg/tcg-all.o
  CC      s390x-softmmu/hw/block/dataplane/virtio-blk.o
  GEN     trace/generated-helpers.c
  CC      cris-softmmu/hw/vfio/spapr.o
  CCAS    ppc-linux-user/linux-user/safe-syscall.o
  CC      ppc64-linux-user/target/ppc/translate.o
  CC      microblazeel-softmmu/hw/dma/xlnx_dpdma.o
  CC      microblazeel-softmmu/hw/misc/mmio_interface.o
  CC      m68k-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/hw/cris/boot.o
  CC      microblazeel-softmmu/hw/net/xilinx_ethlite.o
  CC      mips64-linux-user/target/mips/translate.o
  CC      sparc-softmmu/hw/vfio/platform.o
  CC      arm-linux-user/target/arm/translate.o
  CC      nios2-linux-user/trace/control-target.o
  CC      sparc64-softmmu/hw/scsi/virtio-scsi.o
  CC      or1k-softmmu/hw/core/generic-loader.o
  CC      mips64-softmmu/hw/misc/mips_cmgcr.o
  CC      m68k-linux-user/target/m68k/cpu.o
  CC      nios2-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sh4-softmmu/hw/block/tc58128.o
  CC      sh4eb-linux-user/trace/generated-helpers.o
  CC      alpha-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/accel/tcg/translator.o
  CC      tricore-softmmu/accel/tcg/translator.o
  CC      x86_64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      s390x-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      xtensa-softmmu/target/xtensa/monitor.o
  CC      x86_64-linux-user/target/i386/fpu_helper.o
  CC      mips64-linux-user/target/mips/dsp_helper.o
  CC      arm-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips64-linux-user/target/mips/op_helper.o
  CC      alpha-linux-user/trace/generated-helpers.o
  CC      aarch64-linux-user/trace/generated-helpers.o
  CC      sparc-linux-user/target/sparc/cpu.o
  GEN     trace/generated-helpers.c
  CC      ppc64le-linux-user/target/ppc/misc_helper.o
  CC      ppc64le-linux-user/target/ppc/mem_helper.o
  CC      sh4eb-softmmu/hw/char/sh_serial.o
  CC      sparc64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      mips64-linux-user/target/mips/lmi_helper.o
  LINK    tilegx-linux-user/qemu-tilegx
  CC      microblaze-softmmu/accel/tcg/cputlb.o
  CC      mips64-linux-user/target/mips/helper.o
  CC      arm-linux-user/target/arm/op_helper.o
  CC      nios2-softmmu/hw/timer/altera_timer.o
  CC      or1k-softmmu/hw/core/null-machine.o
  CC      ppc64-linux-user/target/ppc/kvm-stub.o
  CC      i386-linux-user/target/i386/int_helper.o
  CC      xtensaeb-softmmu/accel/tcg/translate-all.o
  CC      ppc-linux-user/target/ppc/cpu-models.o
  CC      aarch64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      sh4-softmmu/hw/block/virtio-blk.o
  CC      sparc-softmmu/hw/vfio/spapr.o
  CC      alpha-softmmu/hw/display/vga.o
  CC      arm-softmmu/accel/tcg/translate-all.o
  CC      sh4-softmmu/hw/block/vhost-user-blk.o
  CC      nios2-linux-user/trace/generated-helpers.o
  CC      microblazeel-softmmu/hw/net/vhost_net.o
  CC      i386-softmmu/hw/char/virtio-serial-bus.o
  CC      sh4-softmmu/hw/block/dataplane/virtio-blk.o
  CC      ppc64-linux-user/target/ppc/dfp_helper.o
  CC      mipsel-softmmu/hw/display/virtio-gpu-pci.o
  CC      sh4eb-softmmu/hw/char/virtio-serial-bus.o
  LINK    sh4eb-linux-user/qemu-sh4eb
  CC      mips64-softmmu/hw/misc/mips_cpc.o
  CC      ppc-linux-user/target/ppc/cpu.o
  CC      unicore32-softmmu/hw/vfio/spapr.o
  CC      or1k-softmmu/hw/intc/ompic.o
  CC      sparc-softmmu/hw/sparc/sun4m_iommu.o
  CC      mipsn32el-linux-user/target/mips/mips-semi.o
  GEN     trace/generated-helpers.c
  CC      s390x-linux-user/target/s390x/mem_helper.o
  CC      sh4eb-softmmu/hw/core/generic-loader.o
  CC      cris-linux-user/trace/control-target.o
  CC      mips64el-softmmu/hw/block/vhost-user-blk.o
  LINK    alpha-linux-user/qemu-alpha
  CC      mipsn32-linux-user/target/mips/msa_helper.o
  CC      ppc64-linux-user/target/ppc/excp_helper.o
  CC      tricore-softmmu/hw/core/generic-loader.o
  CC      m68k-softmmu/hw/char/mcf_uart.o
  CC      m68k-softmmu/hw/core/generic-loader.o
  CC      tricore-softmmu/hw/misc/mmio_interface.o
  CC      tricore-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/hw/misc/mmio_interface.o
  CC      nios2-softmmu/hw/vfio/common.o
  CC      nios2-softmmu/hw/vfio/platform.o
  CC      ppc64-linux-user/target/ppc/fpu_helper.o
  GEN     trace/generated-helpers.c
  CC      sh4-linux-user/target/sh4/gdbstub.o
  CC      microblazeel-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sparc64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sparc-softmmu/hw/sparc/sun4m.o
  CC      m68k-softmmu/hw/net/mcf_fec.o
  CC      m68k-softmmu/hw/net/vhost_net.o
  GEN     trace/generated-helpers.c
  LINK    nios2-linux-user/qemu-nios2
  CC      ppc64le-linux-user/target/ppc/user_only_helper.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      or1k-softmmu/hw/misc/mmio_interface.o
  CC      nios2-softmmu/hw/vfio/spapr.o
  CC      sparc-linux-user/target/sparc/fop_helper.o
  CC      ppc64-linux-user/target/ppc/int_helper.o
  CC      mipsn32el-linux-user/trace/control-target.o
  CC      mipsel-softmmu/hw/intc/mips_gic.o
  CC      sparc32plus-linux-user/target/sparc/gdbstub.o
  CC      cris-softmmu/hw/cris/axis_dev88.o
  CC      mipsel-linux-user/trace/control-target.o
  CC      arm-softmmu/accel/tcg/translator.o
  CC      lm32-softmmu/accel/tcg/cpu-exec.o
  CC      mips64-softmmu/hw/misc/mips_itu.o
  CC      arm-linux-user/target/arm/helper.o
  CC      sh4eb-softmmu/hw/core/null-machine.o
  CC      mips64el-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      sparc-softmmu/hw/sparc/leon3.o
  CC      x86_64-linux-user/target/i386/int_helper.o
  CC      cris-linux-user/trace/generated-helpers.o
  CC      armeb-linux-user/target/arm/helper.o
  CC      tricore-softmmu/hw/net/vhost_net.o
  CC      unicore32-softmmu/hw/unicore32/puv3.o
  CC      microblazeel-softmmu/hw/vfio/common.o
  CC      microblazeel-softmmu/hw/vfio/platform.o
  CC      ppc64abi32-linux-user/target/ppc/misc_helper.o
  CC      i386-softmmu/hw/core/generic-loader.o
  CC      aarch64_be-linux-user/target/arm/iwmmxt_helper.o
  CC      aarch64_be-linux-user/target/arm/gdbstub.o
  CC      sh4-linux-user/trace/control-target.o
  CC      aarch64_be-linux-user/target/arm/cpu64.o
  CC      mipsel-softmmu/hw/misc/ivshmem.o
  CC      or1k-softmmu/hw/net/vhost_net.o
  CC      sparc-linux-user/target/sparc/cc_helper.o
  CC      s390x-softmmu/hw/char/terminal3270.o
  CC      sparc-linux-user/target/sparc/win_helper.o
  CC      sparc64-softmmu/hw/scsi/vhost-scsi.o
  CC      mipsn32-linux-user/target/mips/mips-semi.o
  CC      nios2-softmmu/hw/nios2/boot.o
  CC      or1k-softmmu/hw/net/rocker/qmp-norocker.o
  CC      ppc64abi32-linux-user/target/ppc/mem_helper.o
  GEN     trace/generated-helpers.c
  CC      mips-linux-user/target/mips/cpu.o
  CC      sparc-softmmu/target/sparc/machine.o
  CC      moxie-softmmu/hw/misc/mmio_interface.o
  CC      sh4eb-softmmu/hw/display/sm501.o
  CC      sparc64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      mips64el-linux-user/target/mips/helper.o
  CC      m68k-softmmu/hw/net/rocker/qmp-norocker.o
  CC      m68k-linux-user/target/m68k/fpu_helper.o
  CC      sparc32plus-linux-user/trace/control-target.o
  CC      sh4-softmmu/hw/char/sh_serial.o
  CC      arm-softmmu/hw/9pfs/virtio-9p-device.o
  CC      armeb-linux-user/target/arm/cpu.o
  CC      tricore-softmmu/hw/net/rocker/qmp-norocker.o
  CC      xtensaeb-softmmu/accel/tcg/translator.o
  CC      sparc-linux-user/target/sparc/mmu_helper.o
  CC      mips64-softmmu/hw/misc/mmio_interface.o
  CC      microblazeel-softmmu/hw/vfio/spapr.o
  LINK    cris-linux-user/qemu-cris
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      ppc64le-linux-user/target/ppc/gdbstub.o
  CC      arm-softmmu/hw/adc/stm32f2xx_adc.o
  CC      sh4-linux-user/trace/generated-helpers.o
  CC      x86_64-softmmu/hw/block/vhost-user-blk.o
  CC      mips64el-softmmu/hw/char/virtio-serial-bus.o
  CC      or1k-softmmu/hw/vfio/common.o
  CC      unicore32-softmmu/target/unicore32/translate.o
  CC      microblaze-softmmu/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/target/ppc/timebase_helper.o
  CC      microblaze-softmmu/accel/tcg/cpu-exec.o
  CC      sparc64-linux-user/target/sparc/cc_helper.o
  CC      sparc64-softmmu/hw/timer/mc146818rtc.o
  CC      xtensa-softmmu/target/xtensa/xtensa-isa.o
  CC      arm-softmmu/hw/block/virtio-blk.o
  CC      unicore32-softmmu/target/unicore32/op_helper.o
  CC      mips-softmmu/accel/tcg/cpu-exec.o
  CC      microblazeel-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o
  CC      cris-softmmu/target/cris/translate.o
  CC      m68k-softmmu/hw/vfio/common.o
  CC      lm32-softmmu/accel/tcg/cpu-exec-common.o
  CC      s390x-softmmu/hw/core/generic-loader.o
  CC      moxie-softmmu/hw/net/vhost_net.o
  CC      armeb-linux-user/target/arm/neon_helper.o
  CC      xtensa-softmmu/target/xtensa/translate.o
  CC      mipsn32el-linux-user/trace/generated-helpers.o
  CC      tricore-softmmu/hw/vfio/common.o
  CC      xtensa-softmmu/target/xtensa/op_helper.o
  CC      i386-softmmu/hw/core/null-machine.o
  CC      mips64el-linux-user/target/mips/cpu.o
  CC      sparc-linux-user/target/sparc/ldst_helper.o
  CC      sparc-softmmu/target/sparc/monitor.o
  CC      mips64el-linux-user/target/mips/gdbstub.o
  CC      mips64el-softmmu/hw/core/generic-loader.o
  GEN     trace/generated-helpers.c
  CC      cris-softmmu/target/cris/op_helper.o
  CC      sparc32plus-linux-user/trace/generated-helpers.o
  CC      xtensa-softmmu/target/xtensa/helper.o
  CC      i386-softmmu/hw/display/vga.o
  CC      sh4-softmmu/hw/char/virtio-serial-bus.o
  CC      nios2-softmmu/hw/nios2/cpu_pic.o
  CC      mips64-softmmu/hw/net/virtio-net.o
  CC      m68k-linux-user/target/m68k/gdbstub.o
  CC      unicore32-softmmu/target/unicore32/helper.o
  CC      unicore32-softmmu/target/unicore32/cpu.o
  CC      s390x-softmmu/hw/core/null-machine.o
  CC      aarch64-softmmu/hw/block/vhost-user-blk.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      s390x-linux-user/target/s390x/misc_helper.o
  CC      xtensaeb-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/hw/display/virtio-gpu.o
  CC      moxie-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sh4-softmmu/hw/core/generic-loader.o
  CC      ppc-linux-user/target/ppc/translate.o
  CC      sparc-linux-user/target/sparc/int32_helper.o
  CC      sparc-softmmu/target/sparc/translate.o
  CC      nios2-softmmu/hw/nios2/10m50_devboard.o
  CC      xtensaeb-softmmu/hw/core/null-machine.o
  CC      tricore-softmmu/hw/vfio/platform.o
  CC      mipsel-softmmu/hw/misc/mips_cmgcr.o
  CC      ppc64-linux-user/target/ppc/misc_helper.o
  CC      sparc-linux-user/target/sparc/gdbstub.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      unicore32-softmmu/target/unicore32/ucf64_helper.o
  CC      mips64el-linux-user/target/mips/msa_helper.o
  CC      xtensaeb-softmmu/hw/misc/mmio_interface.o
  LINK    sh4-linux-user/qemu-sh4
  CC      i386-softmmu/hw/display/virtio-gpu.o
  CC      m68k-softmmu/hw/vfio/platform.o
  CC      lm32-softmmu/accel/tcg/translate-all.o
  CC      sparc64-linux-user/target/sparc/win_helper.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      arm-linux-user/target/arm/cpu.o
  CC      moxie-softmmu/hw/timer/mc146818rtc.o
  CC      m68k-softmmu/hw/vfio/spapr.o
  CC      mips64el-linux-user/target/mips/mips-semi.o
  CC      sh4-softmmu/hw/core/null-machine.o
  CC      lm32-softmmu/accel/tcg/translator.o
  CC      arm-softmmu/hw/block/vhost-user-blk.o
  LINK    sparc32plus-linux-user/qemu-sparc32plus
  CC      arm-softmmu/hw/block/dataplane/virtio-blk.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/display/virtio-gpu-3d.o
  CC      xtensa-softmmu/target/xtensa/cpu.o
  GEN     trace/generated-helpers.c
  CC      nios2-softmmu/target/nios2/translate.o
  CC      ppc64abi32-linux-user/target/ppc/user_only_helper.o
  CC      cris-softmmu/target/cris/helper.o
  CC      sh4eb-softmmu/hw/display/vga.o
  CC      mipsel-softmmu/hw/misc/mips_cpc.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      xtensaeb-softmmu/hw/net/vhost_net.o
  CC      sparc-linux-user/trace/control-target.o
  CC      mipsel-softmmu/hw/misc/mips_itu.o
  CC      mips64el-softmmu/hw/core/null-machine.o
  CC      ppc-linux-user/target/ppc/kvm-stub.o
  CC      ppc64abi32-linux-user/target/ppc/gdbstub.o
  CC      sparc64-softmmu/hw/vfio/common.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      mips-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4-softmmu/hw/display/sm501.o
  CC      alpha-softmmu/hw/display/virtio-gpu.o
  CC      mipsel-linux-user/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      or1k-softmmu/hw/vfio/platform.o
  CC      mips64-softmmu/hw/net/vhost_net.o
  CC      armeb-linux-user/target/arm/iwmmxt_helper.o
  CC      xtensa-softmmu/target/xtensa/gdbstub.o
  CC      s390x-softmmu/hw/display/virtio-gpu-3d.o
  CC      mips64-softmmu/hw/scsi/virtio-scsi.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      microblaze-softmmu/accel/tcg/cpu-exec-common.o
  CC      unicore32-softmmu/target/unicore32/softmmu.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      i386-linux-user/target/i386/mem_helper.o
  CC      aarch64_be-linux-user/target/arm/translate-a64.o
  CC      armeb-linux-user/target/arm/gdbstub.o
  CC      xtensaeb-softmmu/hw/net/rocker/qmp-norocker.o
  CC      i386-linux-user/target/i386/misc_helper.o
  CC      moxie-softmmu/hw/vfio/common.o
  CC      sparc64-softmmu/hw/vfio/pci.o
  CC      mips64-linux-user/target/mips/cpu.o
  CC      or1k-softmmu/hw/vfio/spapr.o
  CC      mips-softmmu/accel/tcg/translate-all.o
  CC      sparc64-linux-user/target/sparc/mmu_helper.o
  CC      mipsel-softmmu/hw/misc/mmio_interface.o
  CC      sparc64-linux-user/target/sparc/ldst_helper.o
  CC      mips64el-softmmu/hw/display/vga.o
  CC      aarch64_be-linux-user/target/arm/helper-a64.o
  CC      ppc64-linux-user/target/ppc/mem_helper.o
  CC      microblazeel-softmmu/hw/microblaze/petalogix_ml605_mmu.o
  CC      mipsel-softmmu/hw/net/virtio-net.o
  CC      i386-linux-user/target/i386/mpx_helper.o
  CC      sparc-linux-user/trace/generated-helpers.o
  CC      microblazeel-softmmu/hw/microblaze/xlnx-zynqmp-pmu.o
  CC      arm-softmmu/hw/char/exynos4210_uart.o
  CC      mips64el-softmmu/hw/display/virtio-gpu.o
  CC      mips64el-softmmu/hw/display/virtio-gpu-3d.o
  CC      ppc64-linux-user/target/ppc/user_only_helper.o
  CC      aarch64_be-linux-user/target/arm/gdbstub64.o
  CC      tricore-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/display/virtio-gpu-pci.o
  CC      lm32-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      x86_64-linux-user/target/i386/mem_helper.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      m68k-softmmu/hw/m68k/an5206.o
  CC      m68k-softmmu/hw/m68k/mcf5208.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      sparc-softmmu/target/sparc/helper.o
  CC      xtensaeb-softmmu/hw/vfio/common.o
  CC      s390x-softmmu/hw/display/virtio-gpu-pci.o
  CC      i386-linux-user/target/i386/seg_helper.o
  CC      arm-softmmu/hw/char/omap_uart.o
  CC      microblaze-softmmu/accel/tcg/translate-all.o
  CC      sh4-softmmu/hw/display/vga.o
  CC      arm-softmmu/hw/char/digic-uart.o
  CC      arm-softmmu/hw/char/stm32f2xx_usart.o
  CC      xtensaeb-softmmu/hw/vfio/platform.o
  CC      sparc-softmmu/target/sparc/cpu.o
  CC      moxie-softmmu/hw/vfio/platform.o
  CC      sparc64-linux-user/target/sparc/int64_helper.o
  CC      moxie-softmmu/hw/vfio/spapr.o
  CC      sh4-softmmu/hw/display/virtio-gpu.o
  CC      sparc64-linux-user/target/sparc/vis_helper.o
  CC      mipsel-softmmu/hw/net/vhost_net.o
  CC      alpha-softmmu/hw/display/virtio-gpu-3d.o
  CC      mips64-linux-user/target/mips/gdbstub.o
  CC      sh4eb-softmmu/hw/display/virtio-gpu.o
  CC      arm-softmmu/hw/char/bcm2835_aux.o
  GEN     trace/generated-helpers.c
  CC      sh4eb-softmmu/hw/display/virtio-gpu-3d.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      alpha-softmmu/hw/display/virtio-gpu-pci.o
  CC      unicore32-softmmu/trace/control-target.o
  CC      or1k-softmmu/hw/openrisc/pic_cpu.o
  CC      sparc64-linux-user/target/sparc/gdbstub.o
  CC      m68k-softmmu/hw/m68k/mcf5206.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      tricore-softmmu/hw/tricore/tricore_testboard.o
  CC      tricore-softmmu/target/tricore/translate.o
  LINK    sparc-linux-user/qemu-sparc
  CC      i386-softmmu/hw/display/virtio-vga.o
  CC      microblazeel-softmmu/hw/microblaze/boot.o
  CC      microblazeel-softmmu/target/microblaze/translate.o
  CC      mipsel-softmmu/hw/scsi/virtio-scsi.o
  CC      ppc64-linux-user/target/ppc/gdbstub.o
  CC      sh4eb-softmmu/hw/display/virtio-gpu-pci.o
  CC      m68k-softmmu/hw/m68k/mcf_intc.o
  CC      mips64el-softmmu/hw/display/virtio-gpu-pci.o
  CC      lm32-softmmu/hw/core/null-machine.o
  CC      mips-softmmu/accel/tcg/translator.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/decNumber.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      s390x-softmmu/hw/intc/s390_flic.o
  GEN     trace/generated-helpers.c
  CC      sh4-softmmu/hw/display/virtio-gpu-3d.o
  CC      arm-softmmu/hw/char/virtio-serial-bus.o
  CC      sh4eb-softmmu/hw/intc/sh_intc.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/decNumber.o
  CC      alpha-softmmu/hw/misc/ivshmem.o
  CC      sparc-softmmu/target/sparc/fop_helper.o
  CC      s390x-linux-user/target/s390x/crypto_helper.o
  CC      m68k-softmmu/target/m68k/m68k-semi.o
  CC      s390x-softmmu/hw/misc/mmio_interface.o
  CC      alpha-softmmu/hw/misc/mmio_interface.o
  CC      or1k-softmmu/hw/openrisc/cputimer.o
  CC      m68k-softmmu/target/m68k/translate.o
  CC      lm32-softmmu/hw/input/milkymist-softusb.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      xtensaeb-softmmu/hw/vfio/spapr.o
  CC      mips64el-linux-user/trace/control-target.o
  CC      mipsn32-linux-user/trace/control-target.o
  CC      mips-softmmu/hw/9pfs/virtio-9p-device.o
  CC      tricore-softmmu/target/tricore/helper.o
  CC      armeb-linux-user/target/arm/crypto_helper.o
  CC      sparc64-softmmu/hw/vfio/pci-quirks.o
  CC      cris-softmmu/target/cris/cpu.o
  CC      cris-softmmu/target/cris/gdbstub.o
  CC      microblazeel-softmmu/target/microblaze/op_helper.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/hw/net/virtio-net.o
  CC      mips64-linux-user/target/mips/msa_helper.o
  CC      lm32-softmmu/hw/misc/milkymist-hpdmc.o
  CC      sparc64-linux-user/trace/control-target.o
  CC      arm-softmmu/hw/core/generic-loader.o
  CC      mips64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mips64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      moxie-softmmu/hw/moxie/moxiesim.o
  CC      or1k-softmmu/hw/openrisc/openrisc_sim.o
  CC      mips64-linux-user/target/mips/mips-semi.o
  CC      i386-softmmu/hw/intc/apic.o
  CC      i386-softmmu/hw/intc/apic_common.o
  GEN     trace/generated-helpers.c
  CC      x86_64-linux-user/target/i386/misc_helper.o
  CC      microblazeel-softmmu/target/microblaze/helper.o
  CC      microblazeel-softmmu/target/microblaze/cpu.o
  CC      mips-softmmu/hw/block/virtio-blk.o
  CC      cris-softmmu/target/cris/mmu.o
  CC      lm32-softmmu/hw/misc/milkymist-pfpu.o
  CC      arm-linux-user/target/arm/neon_helper.o
  CC      tricore-softmmu/target/tricore/cpu.o
  CC      s390x-softmmu/hw/net/virtio-net.o
  CC      i386-softmmu/hw/intc/ioapic.o
  CC      nios2-softmmu/target/nios2/op_helper.o
  CC      microblaze-softmmu/accel/tcg/translator.o
  CC      nios2-softmmu/target/nios2/helper.o
  CC      m68k-linux-user/trace/control-target.o
  CC      sh4eb-softmmu/hw/misc/ivshmem.o
  CC      s390x-softmmu/hw/net/vhost_net.o
  CC      or1k-softmmu/target/openrisc/machine.o
  CC      tricore-softmmu/target/tricore/op_helper.o
  CC      sh4eb-softmmu/hw/misc/mmio_interface.o
  CC      aarch64_be-linux-user/target/arm/crypto_helper.o
  CC      sparc64-linux-user/trace/generated-helpers.o
  CC      mips64-softmmu/hw/scsi/vhost-scsi.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      mips-softmmu/hw/block/vhost-user-blk.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      mipsel-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      arm-linux-user/target/arm/iwmmxt_helper.o
  CC      xtensaeb-softmmu/hw/xtensa/pic_cpu.o
  GEN     trace/generated-helpers.c
  CC      xtensaeb-softmmu/hw/xtensa/sim.o
  CC      cris-softmmu/target/cris/machine.o
  CC      moxie-softmmu/target/moxie/translate.o
  CC      mips64el-linux-user/trace/generated-helpers.o
  CC      s390x-linux-user/target/s390x/kvm-stub.o
  CC      sparc-softmmu/target/sparc/cc_helper.o
  CC      sparc-softmmu/target/sparc/win_helper.o
  CC      m68k-softmmu/target/m68k/op_helper.o
  CC      s390x-softmmu/hw/net/rocker/qmp-norocker.o
  CC      ppc-linux-user/target/ppc/dfp_helper.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      xtensaeb-softmmu/hw/xtensa/xtensa_memory.o
  CC      sparc-softmmu/target/sparc/mmu_helper.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      lm32-softmmu/hw/misc/mmio_interface.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/isa/lpc_ich9.o
  CC      sparc-softmmu/target/sparc/ldst_helper.o
  CC      aarch64_be-linux-user/trace/control-target.o
  CC      s390x-softmmu/hw/scsi/virtio-scsi.o
  CC      microblaze-softmmu/hw/core/generic-loader.o
  CC      sparc-softmmu/target/sparc/int32_helper.o
  CC      sparc64-softmmu/hw/vfio/platform.o
  CC      i386-linux-user/target/i386/smm_helper.o
  CC      aarch64_be-linux-user/gdbstub-xml.o
  CC      armeb-linux-user/trace/control-target.o
  CC      m68k-linux-user/gdbstub-xml.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/decNumber.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/misc/ivshmem.o
  CC      or1k-softmmu/target/openrisc/cpu.o
  CC      nios2-softmmu/target/nios2/cpu.o
  CC      sparc-softmmu/target/sparc/gdbstub.o
  CC      mips64el-softmmu/hw/intc/mips_gic.o
  LINK    sparc64-linux-user/qemu-sparc64
  CC      s390x-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      mipsn32-linux-user/trace/generated-helpers.o
  GEN     trace/generated-helpers.c
  CC      s390x-softmmu/hw/scsi/vhost-scsi-common.o
  GEN     trace/generated-helpers.c
  CC      x86_64-linux-user/target/i386/mpx_helper.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      i386-softmmu/hw/misc/pvpanic.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      mips64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      mips-softmmu/hw/block/dataplane/virtio-blk.o
  CC      or1k-softmmu/target/openrisc/exception.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      moxie-softmmu/target/moxie/helper.o
  CC      i386-softmmu/hw/misc/mmio_interface.o
  CC      nios2-softmmu/target/nios2/mmu.o
  CC      mipsel-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sh4eb-softmmu/hw/net/virtio-net.o
  CC      nios2-softmmu/target/nios2/monitor.o
  CC      sh4-softmmu/hw/display/virtio-gpu-pci.o
  CC      s390x-softmmu/hw/scsi/vhost-scsi.o
  CC      xtensaeb-softmmu/hw/xtensa/xtfpga.o
  CC      sh4-softmmu/hw/intc/sh_intc.o
  CC      sh4-softmmu/hw/misc/ivshmem.o
  CC      sh4-softmmu/hw/misc/mmio_interface.o
  CC      xtensaeb-softmmu/target/xtensa/xtensa-semi.o
  CC      sh4-softmmu/hw/net/virtio-net.o
  CC      lm32-softmmu/hw/net/milkymist-minimac2.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      arm-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/target/m68k/helper.o
  CC      xtensaeb-softmmu/target/xtensa/core-dc232b.o
  CC      unicore32-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/hw/scsi/vhost-user-scsi.o
  CC      sparc64-softmmu/hw/vfio/spapr.o
  CC      s390x-softmmu/hw/vfio/common.o
  CC      ppc-linux-user/target/ppc/excp_helper.o
  GEN     trace/generated-helpers.c
  CC      microblaze-softmmu/hw/core/null-machine.o
  CC      microblaze-softmmu/hw/dma/xlnx_dpdma.o
  CC      mips64el-softmmu/hw/misc/ivshmem.o
  CC      or1k-softmmu/target/openrisc/interrupt.o
  CC      mips64-softmmu/hw/timer/mips_gictimer.o
  CC      mipsel-softmmu/hw/scsi/vhost-scsi.o
  CC      xtensa-softmmu/trace/control-target.o
  CC      or1k-softmmu/target/openrisc/mmu.o
  CC      or1k-softmmu/target/openrisc/translate.o
  CC      m68k-linux-user/trace/generated-helpers.o
  GEN     trace/generated-helpers.c
  CC      mips64-softmmu/hw/timer/mc146818rtc.o
  CC      sh4eb-softmmu/hw/net/vhost_net.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      sh4-softmmu/hw/net/vhost_net.o
  CC      nios2-softmmu/trace/control-target.o
  CC      mips64-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/cpu/arm11mpcore.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      or1k-softmmu/target/openrisc/exception_helper.o
  CC      mipsel-softmmu/hw/scsi/vhost-user-scsi.o
  CC      microblaze-softmmu/hw/misc/mmio_interface.o
  CC      arm-softmmu/hw/cpu/realview_mpcore.o
  CC      mips64-softmmu/hw/vfio/pci.o
  CC      cris-softmmu/trace/control-target.o
  CC      or1k-softmmu/target/openrisc/fpu_helper.o
  CC      tricore-softmmu/target/tricore/fpu_helper.o
  CC      sh4-softmmu/hw/scsi/virtio-scsi.o
  CC      sh4eb-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mipsel-softmmu/hw/timer/mips_gictimer.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/hw/net/vhost_net.o
  CC      sh4-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      lm32-softmmu/hw/net/vhost_net.o
  LINK    unicore32-softmmu/qemu-system-unicore32
  CC      i386-softmmu/hw/net/virtio-net.o
  CC      mips-softmmu/hw/char/virtio-serial-bus.o
  CC      sparc64-softmmu/hw/virtio/virtio.o
  CC      mips64-linux-user/trace/control-target.o
  CC      aarch64_be-linux-user/trace/generated-helpers.o
  CC      microblazeel-softmmu/target/microblaze/gdbstub.o
  CC      arm-linux-user/target/arm/gdbstub.o
  CC      arm-linux-user/target/arm/crypto_helper.o
  CC      or1k-softmmu/target/openrisc/interrupt_helper.o
  CC      ppc-linux-user/target/ppc/fpu_helper.o
  CC      m68k-softmmu/target/m68k/cpu.o
  CC      arm-softmmu/hw/cpu/a9mpcore.o
  CC      mips64el-softmmu/hw/misc/mips_cmgcr.o
  LINK    aarch64-linux-user/qemu-aarch64
  CC      ppc-linux-user/target/ppc/int_helper.o
  CC      mipsel-softmmu/hw/timer/mc146818rtc.o
  CC      xtensaeb-softmmu/target/xtensa/core-dc233c.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      xtensaeb-softmmu/target/xtensa/core-de212.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      mips64-softmmu/hw/vfio/pci-quirks.o
  CC      s390x-softmmu/hw/vfio/pci.o
  CC      nios2-softmmu/trace/generated-helpers.o
  CC      lm32-softmmu/hw/net/rocker/qmp-norocker.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      sparc64-softmmu/hw/virtio/virtio-balloon.o
  GEN     trace/generated-helpers.c
  CC      moxie-softmmu/target/moxie/machine.o
  LINK    m68k-linux-user/qemu-m68k
  CC      mips64-softmmu/hw/vfio/platform.o
  CC      mips64el-softmmu/hw/misc/mips_cpc.o
  CC      mips64-softmmu/hw/vfio/spapr.o
  CC      ppc64le-linux-user/trace/control-target.o
  CC      mips64-softmmu/hw/virtio/virtio.o
  CC      sh4eb-softmmu/hw/scsi/vhost-scsi-common.o
  CC      xtensaeb-softmmu/target/xtensa/core-fsf.o
  CC      mips-softmmu/hw/core/generic-loader.o
  CC      armeb-linux-user/gdbstub-xml.o
  CC      s390x-softmmu/hw/vfio/pci-quirks.o
  CC      microblaze-softmmu/hw/net/xilinx_ethlite.o
  CC      s390x-softmmu/hw/vfio/ccw.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      ppc-linux-user/target/ppc/timebase_helper.o
  CC      or1k-softmmu/target/openrisc/mmu_helper.o
  CC      arm-softmmu/hw/cpu/a15mpcore.o
  CC      sh4-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sh4eb-softmmu/hw/scsi/vhost-scsi.o
  CC      mipsel-softmmu/hw/vfio/common.o
  CC      lm32-softmmu/hw/sd/milkymist-memcard.o
  CC      lm32-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/scsi/vhost-user-scsi.o
  CC      sh4eb-softmmu/hw/timer/sh_timer.o
  CC      ppc64abi32-linux-user/trace/control-target.o
  CC      ppc64-linux-user/trace/control-target.o
  LINK    nios2-softmmu/qemu-system-nios2
  CC      s390x-linux-user/trace/control-target.o
  CC      s390x-softmmu/hw/vfio/platform.o
  CC      x86_64-linux-user/target/i386/seg_helper.o
  CC      moxie-softmmu/target/moxie/cpu.o
  CC      lm32-softmmu/hw/vfio/platform.o
  CC      sh4-softmmu/hw/scsi/vhost-scsi.o
  CC      armeb-linux-user/trace/generated-helpers.o
  CC      sparc-softmmu/trace/control-target.o
  CC      mips64el-softmmu/hw/misc/mips_itu.o
  CC      microblaze-softmmu/hw/net/vhost_net.o
  CC      microblaze-softmmu/hw/net/rocker/qmp-norocker.o
  CC      xtensa-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/display/omap_dss.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  GEN     trace/generated-helpers.c
  CC      microblaze-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/timer/mc146818rtc.o
  CC      sh4-softmmu/hw/scsi/vhost-user-scsi.o
  CC      i386-softmmu/hw/net/vhost_net.o
  CC      mips64-softmmu/hw/virtio/virtio-balloon.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      s390x-softmmu/hw/vfio/spapr.o
  CC      moxie-softmmu/target/moxie/mmu.o
  GEN     trace/generated-helpers.c
  CC      moxie-softmmu/trace/control-target.o
  CC      arm-softmmu/hw/display/omap_lcdc.o
  CC      i386-linux-user/target/i386/svm_helper.o
  CC      ppc-linux-user/target/ppc/misc_helper.o
  CC      ppc-linux-user/target/ppc/mem_helper.o
  CC      ppc-linux-user/target/ppc/user_only_helper.o
  CC      m68k-softmmu/target/m68k/fpu_helper.o
  CC      i386-linux-user/target/i386/kvm-stub.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi-common.o
  CC      ppc-linux-user/target/ppc/gdbstub.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi.o
  CC      sh4eb-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      sparc64-softmmu/hw/virtio/vhost.o
  CC      s390x-linux-user/gdbstub-xml.o
  CC      sh4eb-softmmu/hw/vfio/pci.o
  CC      sh4eb-softmmu/hw/vfio/pci-quirks.o
  LINK    xtensa-softmmu/qemu-system-xtensa
  CC      alpha-softmmu/hw/scsi/vhost-user-scsi.o
  CC      arm-softmmu/hw/display/pxa2xx_lcd.o
  CC      sh4eb-softmmu/hw/vfio/platform.o
  CC      ppc64abi32-linux-user/gdbstub-xml.o
  CC      sparc-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/hw/virtio/virtio.o
  CC      or1k-softmmu/target/openrisc/sys_helper.o
  CC      xtensaeb-softmmu/target/xtensa/core-sample_controller.o
  CC      mips64el-softmmu/hw/misc/mmio_interface.o
  CC      s390x-softmmu/hw/virtio/virtio-balloon.o
  CC      cris-softmmu/trace/generated-helpers.o
  CC      sparc64-softmmu/hw/virtio/vhost-backend.o
  CC      sh4eb-softmmu/hw/vfio/spapr.o
  CC      ppc64-linux-user/gdbstub-xml.o
  CC      x86_64-softmmu/hw/misc/ivshmem.o
  CC      mipsel-softmmu/hw/vfio/pci.o
  CC      ppc64le-linux-user/gdbstub-xml.o
  CC      arm-linux-user/trace/control-target.o
  CC      alpha-softmmu/hw/timer/mc146818rtc.o
  CC      moxie-softmmu/trace/generated-helpers.o
  CC      sh4-softmmu/hw/timer/sh_timer.o
  CC      mips64-softmmu/hw/virtio/vhost.o
  GEN     trace/generated-helpers.c
  CC      sh4-softmmu/hw/timer/mc146818rtc.o
  CC      mipsel-softmmu/hw/vfio/pci-quirks.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/scsi/virtio-scsi.o
  CC      microblazeel-softmmu/target/microblaze/mmu.o
  CC      tricore-softmmu/trace/control-target.o
  CC      s390x-softmmu/hw/virtio/vhost.o
  CC      xtensaeb-softmmu/target/xtensa/monitor.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      mips-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/target/m68k/gdbstub.o
  CC      s390x-softmmu/hw/virtio/vhost-backend.o
  CC      m68k-softmmu/target/m68k/monitor.o
  CC      xtensaeb-softmmu/target/xtensa/xtensa-isa.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      s390x-linux-user/trace/generated-helpers.o
  CC      i386-linux-user/trace/control-target.o
  CC      i386-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      sh4-softmmu/hw/vfio/common.o
  CC      ppc64-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/hw/virtio/virtio.o
  CC      s390x-softmmu/hw/virtio/vhost-user.o
  CC      lm32-softmmu/hw/vfio/spapr.o
  CC      sparc64-softmmu/hw/virtio/vhost-user.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  LINK    sparc-softmmu/qemu-system-sparc
  CC      microblaze-softmmu/hw/vfio/platform.o
  CC      mips64el-softmmu/hw/net/virtio-net.o
  CC      x86_64-linux-user/target/i386/smm_helper.o
  CC      xtensaeb-softmmu/target/xtensa/translate.o
  CC      lm32-softmmu/hw/lm32/lm32_boards.o
  GEN     trace/generated-helpers.c
  LINK    cris-softmmu/qemu-system-cris
  CC      mipsel-softmmu/hw/vfio/platform.o
  GEN     trace/generated-helpers.c
  CC      or1k-softmmu/target/openrisc/gdbstub.o
  CC      sh4eb-softmmu/hw/virtio/virtio-balloon.o
  CC      mips-linux-user/target/mips/gdbstub.o
  CC      mips64-linux-user/trace/generated-helpers.o
  CC      mips64el-softmmu/hw/net/vhost_net.o
  CC      xtensaeb-softmmu/target/xtensa/op_helper.o
  LINK    moxie-softmmu/qemu-system-moxie
  CC      mips-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/decNumber.o
  CC      ppc64abi32-linux-user/trace/generated-helpers.o
  CC      mips64-softmmu/hw/virtio/vhost-backend.o
  CC      mipsel-softmmu/hw/vfio/spapr.o
  CC      arm-linux-user/gdbstub-xml.o
  CC      x86_64-linux-user/target/i386/svm_helper.o
  CC      sh4eb-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/scsi/vhost-scsi-common.o
  CC      x86_64-linux-user/target/i386/kvm-stub.o
  CC      xtensaeb-softmmu/target/xtensa/helper.o
  CC      i386-linux-user/gdbstub-xml.o
  CC      mipsel-softmmu/hw/virtio/virtio.o
  CC      arm-softmmu/hw/display/bcm2835_fb.o
  CC      microblazeel-softmmu/trace/control-target.o
  CC      alpha-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/virtio/vhost-backend.o
  CC      alpha-softmmu/hw/vfio/pci.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      s390x-softmmu/hw/virtio/vhost-vsock.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/scsi/vhost-scsi.o
  CC      i386-softmmu/hw/scsi/vhost-user-scsi.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      mipsel-softmmu/hw/virtio/virtio-balloon.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      arm-softmmu/hw/display/vga.o
  CC      alpha-softmmu/hw/vfio/pci-quirks.o
  CC      sh4eb-softmmu/hw/virtio/vhost-user.o
  CC      or1k-softmmu/trace/control-target.o
  CC      microblaze-softmmu/hw/vfio/spapr.o
  CC      sparc64-softmmu/hw/virtio/vhost-vsock.o
  CC      mipsel-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/timer/mc146818rtc.o
  CC      sh4eb-softmmu/hw/virtio/vhost-vsock.o
  CC      microblaze-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      mips-softmmu/hw/display/virtio-gpu.o
  CC      xtensaeb-softmmu/target/xtensa/cpu.o
  CC      mips-linux-user/target/mips/msa_helper.o
  CC      or1k-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      mipsel-softmmu/hw/virtio/vhost-backend.o
  CC      mips-linux-user/target/mips/mips-semi.o
  CC      microblazeel-softmmu/trace/generated-helpers.o
  CC      lm32-softmmu/hw/lm32/milkymist.o
  CC      s390x-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/display/virtio-gpu.o
  CC      mips64el-softmmu/hw/scsi/virtio-scsi.o
  CC      sh4-softmmu/hw/vfio/pci.o
  CC      s390x-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips64-softmmu/hw/virtio/vhost-user.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      ppc64le-linux-user/trace/generated-helpers.o
  CC      microblaze-softmmu/hw/microblaze/petalogix_ml605_mmu.o
  LINK    s390x-linux-user/qemu-s390x
  CC      mips64el-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      alpha-softmmu/hw/vfio/platform.o
  CC      m68k-softmmu/trace/control-target.o
  CC      tricore-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/display/virtio-gpu-3d.o
  CC      microblaze-softmmu/hw/microblaze/xlnx-zynqmp-pmu.o
  GEN     trace/generated-helpers.c
  CC      sh4eb-softmmu/hw/virtio/virtio-crypto.o
  CC      sparc64-softmmu/hw/virtio/virtio-crypto.o
  CC      mips-linux-user/trace/control-target.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      lm32-softmmu/target/lm32/translate.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/hw/vfio/spapr.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      sparc64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      x86_64-linux-user/trace/control-target.o
  CC      sparc64-softmmu/hw/sparc64/sparc64.o
  CC      microblaze-softmmu/hw/microblaze/boot.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      lm32-softmmu/target/lm32/op_helper.o
  CC      microblaze-softmmu/target/microblaze/translate.o
  CC      lm32-softmmu/target/lm32/helper.o
  CC      alpha-softmmu/hw/virtio/virtio.o
  CC      sparc64-softmmu/hw/sparc64/sun4u_iommu.o
  CC      mipsel-softmmu/hw/virtio/vhost-user.o
  CC      mipsel-softmmu/hw/virtio/vhost-vsock.o
  CC      mips64el-softmmu/hw/scsi/vhost-scsi-common.o
  CC      mips64el-softmmu/hw/scsi/vhost-scsi.o
  CC      sh4eb-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  LINK    or1k-softmmu/qemu-system-or1k
  LINK    microblazeel-softmmu/qemu-system-microblazeel
  CC      xtensaeb-softmmu/target/xtensa/gdbstub.o
  CC      alpha-softmmu/hw/virtio/virtio-balloon.o
  CC      mipsel-softmmu/hw/virtio/virtio-crypto.o
  CC      mips64-softmmu/hw/virtio/vhost-vsock.o
  CC      mips64-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/display/virtio-gpu-pci.o
  CC      arm-linux-user/trace/generated-helpers.o
  CC      mipsel-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      lm32-softmmu/target/lm32/cpu.o
  CC      s390x-softmmu/hw/s390x/s390-virtio-hcall.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi.o
  CC      i386-softmmu/hw/vfio/common.o
  CC      mips64el-softmmu/hw/scsi/vhost-user-scsi.o
  CC      ppc-linux-user/trace/control-target.o
  CC      i386-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/hw/sh4/shix.o
  CC      mips64el-softmmu/hw/timer/mips_gictimer.o
  CC      microblaze-softmmu/target/microblaze/op_helper.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/hw/dma/omap_dma.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
  CC      mips-linux-user/trace/generated-helpers.o
  CC      mips64el-softmmu/hw/timer/mc146818rtc.o
  CC      microblaze-softmmu/target/microblaze/helper.o
  CC      xtensaeb-softmmu/trace/control-target.o
  CC      microblaze-softmmu/target/microblaze/cpu.o
  CC      lm32-softmmu/target/lm32/gdbstub.o
  CC      lm32-softmmu/target/lm32/lm32-semi.o
  CC      sparc64-softmmu/hw/sparc64/sun4u.o
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      sh4eb-softmmu/hw/sh4/r2d.o
  CC      x86_64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      arm-softmmu/hw/dma/soc_dma.o
  CC      sh4eb-softmmu/hw/sh4/sh7750.o
  CC      sh4-softmmu/hw/vfio/pci-quirks.o
  CC      x86_64-linux-user/gdbstub-xml.o
  CC      sh4-softmmu/hw/vfio/platform.o
  CC      sh4-softmmu/hw/vfio/spapr.o
  CC      sh4eb-softmmu/hw/sh4/sh7750_regnames.o
  CC      alpha-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/dma/pxa2xx_dma.o
  CC      m68k-softmmu/gdbstub-xml.o
  CC      microblaze-softmmu/target/microblaze/gdbstub.o
  CC      mips-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      s390x-softmmu/hw/s390x/sclp.o
  CC      microblaze-softmmu/target/microblaze/mmu.o
  CC      mips-softmmu/hw/display/virtio-gpu-pci.o
  CC      s390x-softmmu/hw/s390x/event-facility.o
  CC      arm-softmmu/hw/dma/bcm2835_dma.o
  CC      x86_64-softmmu/hw/vfio/common.o
  CC      sparc64-softmmu/hw/sparc64/niagara.o
  CC      sh4eb-softmmu/hw/sh4/sh_pci.o
  CC      mipsel-softmmu/hw/mips/mips_r4k.o
  CC      arm-softmmu/hw/gpio/omap_gpio.o
  CC      sparc64-softmmu/target/sparc/machine.o
  CC      mips-softmmu/hw/intc/mips_gic.o
  CC      x86_64-linux-user/trace/generated-helpers.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/hw/vfio/pci.o
  CC      sparc64-softmmu/target/sparc/monitor.o
  CC      s390x-softmmu/hw/s390x/sclpquiesce.o
  CC      s390x-softmmu/hw/s390x/sclpcpu.o
  CC      sh4-softmmu/hw/virtio/virtio.o
  CC      sparc64-softmmu/target/sparc/translate.o
  CC      xtensaeb-softmmu/trace/generated-helpers.o
  CC      sh4-softmmu/hw/virtio/virtio-balloon.o
  CC      sh4eb-softmmu/target/sh4/translate.o
  CC      sh4-softmmu/hw/virtio/vhost.o
  CC      mips64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips-softmmu/hw/misc/ivshmem.o
  CC      s390x-softmmu/hw/s390x/ipl.o
  CC      sh4eb-softmmu/target/sh4/op_helper.o
  CC      lm32-softmmu/target/lm32/machine.o
  CC      sh4eb-softmmu/target/sh4/helper.o
  GEN     trace/generated-helpers.c
  CC      mips64el-softmmu/hw/vfio/common.o
  CC      sh4-softmmu/hw/virtio/vhost-backend.o
  CC      lm32-softmmu/trace/control-target.o
  CC      x86_64-softmmu/hw/vfio/pci-quirks.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      ppc-linux-user/gdbstub-xml.o
  CC      microblaze-softmmu/trace/control-target.o
  CC      s390x-softmmu/hw/s390x/css.o
  CC      mipsel-softmmu/hw/mips/mips_malta.o
  CC      s390x-softmmu/hw/s390x/s390-virtio-ccw.o
  CC      mips-softmmu/hw/misc/mips_cmgcr.o
  CC      mips64-softmmu/hw/mips/mips_r4k.o
  CC      s390x-softmmu/hw/s390x/3270-ccw.o
  CC      mips-softmmu/hw/misc/mips_cpc.o
  CC      arm-softmmu/hw/gpio/imx_gpio.o
  CC      arm-softmmu/hw/gpio/bcm2835_gpio.o
  CC      i386-softmmu/hw/vfio/pci.o
  CC      mips-softmmu/hw/misc/mips_itu.o
  CC      mipsel-softmmu/hw/mips/mips_mipssim.o
  CC      lm32-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/hw/s390x/virtio-ccw.o
  CC      arm-softmmu/hw/i2c/omap_i2c.o
  CC      sh4eb-softmmu/target/sh4/cpu.o
  CC      mips64-softmmu/hw/mips/mips_malta.o
  CC      arm-softmmu/hw/input/pxa2xx_keypad.o
  CC      mips64-softmmu/hw/mips/mips_mipssim.o
  CC      mips64-softmmu/hw/mips/addr.o
  CC      sparc64-softmmu/target/sparc/helper.o
  CC      sh4-softmmu/hw/virtio/vhost-user.o
  CC      mips64el-softmmu/hw/vfio/pci.o
  CC      i386-softmmu/hw/vfio/pci-quirks.o
  CC      s390x-softmmu/hw/s390x/css-bridge.o
  CC      mips64el-softmmu/hw/vfio/pci-quirks.o
  CC      sh4eb-softmmu/target/sh4/monitor.o
  CC      mipsel-softmmu/hw/mips/addr.o
  CC      x86_64-softmmu/hw/vfio/platform.o
  CC      arm-softmmu/hw/input/tsc210x.o
  CC      alpha-softmmu/hw/virtio/vhost-backend.o
  CC      ppc-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/target/sh4/gdbstub.o
  CC      sh4-softmmu/hw/virtio/vhost-vsock.o
  CC      x86_64-softmmu/hw/vfio/spapr.o
  CC      mips64el-softmmu/hw/vfio/platform.o
  GEN     trace/generated-helpers.c
  CC      s390x-softmmu/hw/s390x/ccw-device.o
  CC      mipsel-softmmu/hw/mips/mips_int.o
  CC      arm-softmmu/hw/intc/armv7m_nvic.o
  CC      mips-softmmu/hw/misc/mmio_interface.o
  CC      alpha-softmmu/hw/virtio/vhost-user.o
  CC      sh4-softmmu/hw/virtio/virtio-crypto.o
  CC      s390x-softmmu/hw/s390x/s390-pci-bus.o
  CC      sparc64-softmmu/target/sparc/cpu.o
  CC      sparc64-softmmu/target/sparc/fop_helper.o
  CC      arm-softmmu/hw/intc/exynos4210_gic.o
  CC      sh4eb-softmmu/trace/control-target.o
  CC      sparc64-softmmu/target/sparc/cc_helper.o
  CC      i386-softmmu/hw/vfio/platform.o
  CC      mipsel-softmmu/hw/mips/gt64xxx_pci.o
  CC      sparc64-softmmu/target/sparc/win_helper.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      i386-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/virtio/virtio.o
  CC      mips64-softmmu/hw/mips/mips_int.o
  CC      arm-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      mips64-softmmu/hw/mips/mips_jazz.o
  CC      mips64el-softmmu/hw/vfio/spapr.o
  CC      mipsel-softmmu/hw/mips/cps.o
  CC      sparc64-softmmu/target/sparc/mmu_helper.o
  CC      sparc64-softmmu/target/sparc/ldst_helper.o
  CC      mips64el-softmmu/hw/virtio/virtio.o
  CC      mips64el-softmmu/hw/virtio/virtio-balloon.o
  CC      i386-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      mips64-softmmu/hw/mips/gt64xxx_pci.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      i386-softmmu/hw/virtio/vhost.o
  CC      s390x-softmmu/hw/s390x/s390-pci-inst.o
  CC      arm-softmmu/hw/intc/bcm2835_ic.o
  CC      m68k-softmmu/trace/generated-helpers.o
  LINK    lm32-softmmu/qemu-system-lm32
  CC      mipsel-softmmu/target/mips/translate.o
  CC      mips64el-softmmu/hw/virtio/vhost.o
  CC      sh4-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      sh4eb-softmmu/trace/generated-helpers.o
  CC      alpha-softmmu/hw/virtio/vhost-vsock.o
  CC      sparc64-softmmu/target/sparc/int64_helper.o
  CC      x86_64-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      s390x-softmmu/hw/s390x/s390-skeys.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto.o
  CC      mips-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/intc/bcm2836_control.o
  CC      arm-softmmu/hw/intc/allwinner-a10-pic.o
  CC      mips-softmmu/hw/net/vhost_net.o
  LINK    xtensaeb-softmmu/qemu-system-xtensaeb
  CC      sh4-softmmu/hw/sh4/shix.o
  CC      x86_64-softmmu/hw/virtio/vhost-backend.o
  CC      sh4-softmmu/hw/sh4/r2d.o
  CC      mipsel-softmmu/target/mips/dsp_helper.o
  CC      arm-softmmu/hw/intc/aspeed_vic.o
  CC      sparc64-softmmu/target/sparc/vis_helper.o
  CC      sh4-softmmu/hw/sh4/sh7750.o
  CC      sh4-softmmu/hw/sh4/sh7750_regnames.o
  CC      x86_64-softmmu/hw/virtio/vhost-user.o
  CC      s390x-softmmu/hw/s390x/s390-stattrib.o
  CC      sparc64-softmmu/target/sparc/gdbstub.o
  CC      mips64el-softmmu/hw/virtio/vhost-backend.o
  CC      s390x-softmmu/hw/s390x/s390-ccw.o
  CC      mips64-softmmu/hw/mips/cps.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips-softmmu/hw/scsi/virtio-scsi.o
  CC      mips64el-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      mipsel-softmmu/target/mips/op_helper.o
  CC      arm-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      x86_64-softmmu/hw/virtio/vhost-vsock.o
  CC      mips64-softmmu/target/mips/translate.o
  CC      mips64-softmmu/target/mips/dsp_helper.o
  CC      mips64-softmmu/target/mips/op_helper.o
  CC      mips64el-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      mips64-softmmu/target/mips/lmi_helper.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/hw/misc/ivshmem.o
  CC      alpha-softmmu/hw/alpha/dp264.o
  CC      sh4-softmmu/hw/sh4/sh_pci.o
  CC      i386-softmmu/hw/virtio/vhost-user.o
  CC      sparc64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      sh4-softmmu/target/sh4/translate.o
  CC      mips64-softmmu/target/mips/helper.o
  CC      i386-softmmu/hw/virtio/vhost-vsock.o
  CC      sh4-softmmu/target/sh4/op_helper.o
  CC      sh4-softmmu/target/sh4/helper.o
  CC      microblaze-softmmu/trace/generated-helpers.o
  CC      i386-softmmu/hw/virtio/virtio-crypto.o
  CC      alpha-softmmu/hw/alpha/pci.o
  CC      sh4-softmmu/target/sh4/cpu.o
  CC      alpha-softmmu/hw/alpha/typhoon.o
  CC      arm-softmmu/hw/misc/arm_sysctl.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
  CC      mips64-softmmu/target/mips/cpu.o
  CC      sh4-softmmu/target/sh4/monitor.o
  CC      sh4-softmmu/target/sh4/gdbstub.o
  CC      arm-softmmu/hw/misc/cbus.o
  CC      mips64-softmmu/target/mips/gdbstub.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      i386-softmmu/hw/virtio/virtio-crypto-pci.o
  GEN     trace/generated-helpers.c
  CC      mips64el-softmmu/hw/virtio/virtio-crypto.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      arm-softmmu/hw/misc/exynos4210_pmu.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      i386-softmmu/hw/i386/multiboot.o
  CC      mips64-softmmu/target/mips/msa_helper.o
  CC      sh4-softmmu/trace/control-target.o
  CC      mips64el-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      arm-softmmu/hw/misc/exynos4210_clk.o
  CC      arm-softmmu/hw/misc/exynos4210_rng.o
  CC      mips64el-softmmu/hw/mips/mips_r4k.o
  CC      alpha-softmmu/target/alpha/machine.o
  CC      alpha-softmmu/target/alpha/translate.o
  CC      s390x-softmmu/target/s390x/cpu.o
  CC      s390x-softmmu/target/s390x/cpu_models.o
  CC      arm-softmmu/hw/misc/imx_ccm.o
  CC      arm-softmmu/hw/misc/imx31_ccm.o
  CC      arm-softmmu/hw/misc/imx25_ccm.o
  CC      mips-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mips-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sparc64-softmmu/trace/generated-helpers.o
  CC      mips64el-softmmu/hw/mips/mips_malta.o
  CC      mips64-softmmu/target/mips/mips-semi.o
  CC      mipsel-softmmu/target/mips/lmi_helper.o
  CC      arm-softmmu/hw/misc/imx6_ccm.o
  CC      s390x-softmmu/target/s390x/cpu_features.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  LINK    microblaze-softmmu/qemu-system-microblaze
  CC      alpha-softmmu/target/alpha/helper.o
  CC      alpha-softmmu/target/alpha/cpu.o
  CC      mips64-softmmu/target/mips/machine.o
  CC      sh4-softmmu/trace/generated-helpers.o
  CC      alpha-softmmu/target/alpha/int_helper.o
  CC      arm-softmmu/hw/misc/imx6_src.o
  CC      mips64el-softmmu/hw/mips/mips_mipssim.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
  CC      alpha-softmmu/target/alpha/fpu_helper.o
  CC      arm-softmmu/hw/misc/mst_fpga.o
  CC      arm-softmmu/hw/misc/omap_clk.o
  CC      arm-softmmu/hw/misc/omap_gpmc.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
  CC      alpha-softmmu/target/alpha/vax_helper.o
  CC      mips64-softmmu/target/mips/cp0_timer.o
  CC      s390x-softmmu/target/s390x/gdbstub.o
  CC      mips64el-softmmu/hw/mips/addr.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      arm-softmmu/hw/misc/omap_l4.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      i386-softmmu/hw/i386/pc.o
  CC      alpha-softmmu/target/alpha/sys_helper.o
  CC      mips-softmmu/hw/scsi/vhost-scsi.o
  CC      alpha-softmmu/target/alpha/mem_helper.o
  CC      s390x-softmmu/target/s390x/interrupt.o
  CC      mips-softmmu/hw/scsi/vhost-user-scsi.o
  CC      i386-softmmu/hw/i386/pc_piix.o
  CC      mips-softmmu/hw/timer/mips_gictimer.o
  CC      s390x-softmmu/target/s390x/helper.o
  CC      alpha-softmmu/target/alpha/gdbstub.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      mips-softmmu/hw/timer/mc146818rtc.o
  GEN     trace/generated-helpers.c
  CC      s390x-softmmu/target/s390x/translate.o
  CC      mipsel-softmmu/target/mips/helper.o
  CC      mipsel-softmmu/target/mips/cpu.o
  GEN     trace/generated-helpers.c
  CC      mipsel-softmmu/target/mips/gdbstub.o
  CC      alpha-softmmu/trace/control-target.o
  CC      arm-softmmu/hw/misc/omap_sdrc.o
  CC      s390x-softmmu/target/s390x/cc_helper.o
  CC      aarch64-softmmu/hw/misc/ivshmem.o
  CC      mips-softmmu/hw/vfio/common.o
  CC      mips-softmmu/hw/vfio/pci.o
  CC      mips64el-softmmu/hw/mips/mips_int.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      mips-softmmu/hw/vfio/pci-quirks.o
  CC      s390x-softmmu/target/s390x/excp_helper.o
  CC      mips64el-softmmu/hw/mips/mips_jazz.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      arm-softmmu/hw/misc/omap_tap.o
  CC      s390x-softmmu/target/s390x/fpu_helper.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      alpha-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/misc/bcm2835_mbox.o
  CC      i386-softmmu/hw/i386/pc_q35.o
  CC      mips64el-softmmu/hw/mips/mips_fulong2e.o
  CC      s390x-softmmu/target/s390x/int_helper.o
  CC      arm-softmmu/hw/misc/bcm2835_property.o
  CC      s390x-softmmu/target/s390x/mem_helper.o
  CC      mips64-softmmu/trace/control-target.o
  CC      mips64el-softmmu/hw/mips/gt64xxx_pci.o
  CC      mipsel-softmmu/target/mips/msa_helper.o
  CC      i386-softmmu/hw/i386/pc_sysfw.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      mips64el-softmmu/hw/mips/cps.o
  CC      mips64-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/target/s390x/misc_helper.o
  CC      i386-softmmu/hw/i386/x86-iommu.o
  CC      arm-softmmu/hw/misc/bcm2835_rng.o
  CC      mips64el-softmmu/hw/mips/boston.o
  CC      s390x-softmmu/target/s390x/crypto_helper.o
  CC      i386-softmmu/hw/i386/intel_iommu.o
  CC      arm-softmmu/hw/misc/zynq_slcr.o
  CC      s390x-softmmu/target/s390x/machine.o
  CC      mips-softmmu/hw/vfio/platform.o
  CC      i386-softmmu/hw/i386/amd_iommu.o
  CC      s390x-softmmu/target/s390x/ioinst.o
  CC      mips64el-softmmu/target/mips/translate.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      mips-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/i386/vmport.o
  CC      mipsel-softmmu/target/mips/mips-semi.o
  CC      mips-softmmu/hw/virtio/virtio.o
  CC      mipsel-softmmu/target/mips/machine.o
  CC      x86_64-softmmu/hw/i386/vmport.o
  CC      mips64el-softmmu/target/mips/dsp_helper.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      arm-softmmu/hw/misc/zynq-xadc.o
  CC      s390x-softmmu/target/s390x/arch_dump.o
  CC      x86_64-softmmu/hw/i386/vmmouse.o
  LINK    mipsel-linux-user/qemu-mipsel
  CC      mipsel-softmmu/target/mips/cp0_timer.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      i386-softmmu/hw/i386/vmmouse.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      s390x-softmmu/target/s390x/mmu_helper.o
  CC      mips64el-softmmu/target/mips/op_helper.o
  CC      mips64el-softmmu/target/mips/lmi_helper.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  GEN     trace/generated-helpers.c
  CC      mipsel-softmmu/trace/control-target.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      s390x-softmmu/target/s390x/diag.o
  CC      mips-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      s390x-softmmu/target/s390x/sigp.o
  CC      mips-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      s390x-softmmu/target/s390x/kvm-stub.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  CC      mips64el-softmmu/target/mips/helper.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/i386/kvmvapic.o
  CC      s390x-softmmu/trace/control-target.o
  CC      i386-softmmu/hw/i386/acpi-build.o
  CC      i386-softmmu/target/i386/helper.o
  CC      mipsel-softmmu/trace/generated-helpers.o
  CC      mips64el-softmmu/target/mips/cpu.o
  CC      s390x-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      mips64el-softmmu/target/mips/gdbstub.o
  CC      mips-softmmu/hw/virtio/vhost-backend.o
  CC      mips64el-softmmu/target/mips/msa_helper.o
  CC      i386-softmmu/target/i386/cpu.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      mips64el-softmmu/target/mips/mips-semi.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      i386-softmmu/target/i386/gdbstub.o
  CC      arm-softmmu/hw/misc/mps2-scc.o
  CC      mips64el-softmmu/target/mips/machine.o
  CC      arm-softmmu/hw/misc/aspeed_scu.o
  CC      mips-softmmu/hw/virtio/vhost-user.o
  CC      mips-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      mips64el-softmmu/target/mips/cp0_timer.o
  CC      i386-softmmu/target/i386/xsave_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      s390x-softmmu/trace/generated-helpers.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      i386-softmmu/target/i386/translate.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      mips-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  LINK    sh4eb-softmmu/qemu-system-sh4eb
  CC      arm-softmmu/hw/misc/aspeed_sdmc.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      mips64el-softmmu/trace/control-target.o
  CC      i386-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      i386-softmmu/target/i386/cc_helper.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      arm-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      i386-softmmu/target/i386/excp_helper.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      mips-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips64el-softmmu/trace/generated-helpers.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      mips-softmmu/hw/mips/mips_r4k.o
  CC      i386-softmmu/target/i386/fpu_helper.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      mips-softmmu/hw/mips/mips_malta.o
  CC      i386-softmmu/target/i386/int_helper.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      arm-softmmu/hw/misc/msf2-sysreg.o
  CC      mips-softmmu/hw/mips/mips_mipssim.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      i386-softmmu/target/i386/mem_helper.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      mips-softmmu/hw/mips/addr.o
  CC      mips-softmmu/hw/mips/mips_int.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      arm-softmmu/hw/net/virtio-net.o
  CC      mips-softmmu/hw/mips/gt64xxx_pci.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      mips-softmmu/hw/mips/cps.o
  CC      mips-softmmu/target/mips/translate.o
  CC      i386-softmmu/target/i386/misc_helper.o
  CC      arm-softmmu/hw/net/vhost_net.o
  CC      mips-softmmu/target/mips/dsp_helper.o
  CC      arm-softmmu/hw/pcmcia/pxa2xx.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      arm-softmmu/hw/scsi/virtio-scsi.o
  CC      mips-softmmu/target/mips/op_helper.o
  CC      mips-softmmu/target/mips/lmi_helper.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      i386-softmmu/target/i386/mpx_helper.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      mips-softmmu/target/mips/helper.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      i386-softmmu/target/i386/seg_helper.o
  CC      arm-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      i386-softmmu/target/i386/smm_helper.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  CC      i386-softmmu/target/i386/svm_helper.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      i386-softmmu/target/i386/machine.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      mips-softmmu/target/mips/cpu.o
  CC      mips-softmmu/target/mips/gdbstub.o
  CC      arm-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/scsi/vhost-scsi.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      arm-softmmu/hw/scsi/vhost-user-scsi.o
  CC      x86_64-softmmu/target/i386/kvm-stub.o
  CC      arm-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      mips-softmmu/target/mips/msa_helper.o
  CC      mips-softmmu/target/mips/mips-semi.o
  CC      i386-softmmu/target/i386/arch_memory_mapping.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      arm-softmmu/hw/sd/pxa2xx_mmci.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      i386-softmmu/target/i386/arch_dump.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/target/i386/monitor.o
  CC      x86_64-softmmu/trace/control-target.o
  CC      i386-softmmu/target/i386/kvm-stub.o
  CC      mips-softmmu/target/mips/machine.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/sd/bcm2835_sdhost.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mips-softmmu/target/mips/cp0_timer.o
  CC      arm-softmmu/hw/ssi/omap_spi.o
  CC      arm-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi.o
  CC      arm-softmmu/hw/timer/exynos4210_mct.o
  GEN     trace/generated-helpers.c
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      mips-softmmu/trace/control-target.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/timer/exynos4210_pwm.o
  CC      mips-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      i386-softmmu/gdbstub-xml.o
  CC      arm-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      arm-softmmu/hw/timer/omap_gptimer.o
  CC      i386-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      arm-softmmu/hw/timer/pxa2xx_timer.o
  CC      arm-softmmu/hw/timer/digic-timer.o
  CC      arm-softmmu/hw/timer/allwinner-a10-pit.o
  CC      arm-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      arm-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      arm-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      arm-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/vfio/common.o
  CC      arm-softmmu/hw/vfio/calxeda-xgmac.o
  CC      aarch64-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/platform.o
  CC      arm-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/vfio/calxeda-xgmac.o
  CC      arm-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/virtio/vhost-backend.o
  LINK    m68k-softmmu/qemu-system-m68k
  CC      arm-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/virtio/vhost-vsock.o
  CC      arm-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      arm-softmmu/hw/arm/boot.o
  CC      arm-softmmu/hw/arm/collie.o
  LINK    tricore-softmmu/qemu-system-tricore
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      arm-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      arm-softmmu/hw/arm/exynos4_boards.o
  CC      arm-softmmu/hw/arm/highbank.o
  CC      arm-softmmu/hw/arm/digic_boards.o
  CC      arm-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      arm-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      arm-softmmu/hw/arm/musicpal.o
  CC      arm-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      arm-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      arm-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      arm-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      arm-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      arm-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      arm-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      arm-softmmu/hw/arm/versatilepb.o
  CC      arm-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      arm-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      arm-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      arm-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      arm-softmmu/hw/arm/virt-acpi-build.o
  CC      arm-softmmu/hw/arm/netduino2.o
  CC      arm-softmmu/hw/arm/sysbus-fdt.o
  CC      arm-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      arm-softmmu/hw/arm/exynos4210.o
  CC      arm-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      arm-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      arm-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      arm-softmmu/hw/arm/omap1.o
  CC      arm-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      arm-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      arm-softmmu/hw/arm/strongarm.o
  LINK    i386-linux-user/qemu-i386
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      arm-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      arm-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      arm-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      arm-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      arm-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      arm-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      arm-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      arm-softmmu/hw/arm/imx25_pdk.o
  CC      arm-softmmu/hw/arm/fsl-imx31.o
  CC      arm-softmmu/hw/arm/fsl-imx6.o
  CC      arm-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      arm-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      arm-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      arm-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      arm-softmmu/hw/arm/mps2.o
  LINK    sh4-softmmu/qemu-system-sh4
  CC      arm-softmmu/hw/arm/msf2-soc.o
  CC      arm-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/translate.o
  LINK    alpha-softmmu/qemu-system-alpha
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      arm-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      arm-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/cpu.o
  LINK    sparc64-softmmu/qemu-system-sparc64
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      arm-softmmu/target/arm/psci.o
  CC      arm-softmmu/target/arm/arch_dump.o
  CC      arm-softmmu/target/arm/monitor.o
  CC      arm-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      arm-softmmu/target/arm/translate.o
  CC      arm-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  LINK    aarch64_be-linux-user/qemu-aarch64_be
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  CC      arm-softmmu/target/arm/helper.o
  CC      arm-softmmu/target/arm/cpu.o
  LINK    x86_64-linux-user/qemu-x86_64
  CC      arm-softmmu/target/arm/neon_helper.o
  CC      arm-softmmu/target/arm/iwmmxt_helper.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/trace/control-target.o
  CC      arm-softmmu/target/arm/crypto_helper.o
  CC      arm-softmmu/target/arm/arm-powerctl.o
  CC      aarch64-softmmu/gdbstub-xml.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/trace/control-target.o
  CC      aarch64-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/gdbstub-xml.o
  CC      arm-softmmu/trace/generated-helpers.o
  LINK    armeb-linux-user/qemu-armeb
  LINK    arm-linux-user/qemu-arm
  LINK    mips-linux-user/qemu-mips
  LINK    mipsn32el-linux-user/qemu-mipsn32el
  LINK    s390x-softmmu/qemu-system-s390x
  LINK    mipsn32-linux-user/qemu-mipsn32
  LINK    mips64-linux-user/qemu-mips64
  LINK    mips64el-linux-user/qemu-mips64el
  LINK    x86_64-softmmu/qemu-system-x86_64
  LINK    i386-softmmu/qemu-system-i386
  LINK    ppc64abi32-linux-user/qemu-ppc64abi32
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-x86_64] Error 1
make: *** [subdir-x86_64-softmmu] Error 2
  LINK    ppc-linux-user/qemu-ppc
  LINK    aarch64-softmmu/qemu-system-aarch64
  LINK    arm-softmmu/qemu-system-arm
  LINK    ppc64le-linux-user/qemu-ppc64le
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-i386] Error 1
make: *** [subdir-i386-softmmu] Error 2
  LINK    mips-softmmu/qemu-system-mips
  LINK    mipsel-softmmu/qemu-system-mipsel
  LINK    ppc64-linux-user/qemu-ppc64
  LINK    mips64el-softmmu/qemu-system-mips64el
  LINK    mips64-softmmu/qemu-system-mips64
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
@ 2018-01-29 18:31   ` no-reply
  0 siblings, 0 replies; 118+ messages in thread
From: no-reply @ 2018-01-29 18:31 UTC (permalink / raw)
  To: brijesh.singh
  Cc: famz, qemu-devel, edgar.iglesias, peter.maydell, ehabkost, kvm,
	Thomas.Lendacky, stefanha, mst, richard.henderson, dgilbert,
	pbonzini

Hi,

This series failed build test on ppc host. Please find the details below.

Subject: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
Type: series
Message-id: 20180129174132.108925-1-brijesh.singh@amd.com

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e
echo "=== ENV ==="
env
echo "=== PACKAGES ==="
rpm -qa
echo "=== TEST BEGIN ==="
INSTALL=$PWD/install
BUILD=$PWD/build
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --prefix=$INSTALL
make -j100
# XXX: we need reliable clean up
# make check -j100 V=1
make install
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 - [tag update]      patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com -> patchew/1517235657-22547-1-git-send-email-ghammer@redhat.com
 - [tag update]      patchew/20180123035349.24538-1-richard.henderson@linaro.org -> patchew/20180123035349.24538-1-richard.henderson@linaro.org
 * [new tag]         patchew/20180129174132.108925-1-brijesh.singh@amd.com -> patchew/20180129174132.108925-1-brijesh.singh@amd.com
Submodule 'capstone' (git://git.qemu.org/capstone.git) registered for path 'capstone'
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Submodule 'roms/QemuMacDrivers' (git://git.qemu.org/QemuMacDrivers.git) registered for path 'roms/QemuMacDrivers'
Submodule 'roms/SLOF' (git://git.qemu-project.org/SLOF.git) registered for path 'roms/SLOF'
Submodule 'roms/ipxe' (git://git.qemu-project.org/ipxe.git) registered for path 'roms/ipxe'
Submodule 'roms/openbios' (git://git.qemu-project.org/openbios.git) registered for path 'roms/openbios'
Submodule 'roms/openhackware' (git://git.qemu-project.org/openhackware.git) registered for path 'roms/openhackware'
Submodule 'roms/qemu-palcode' (git://github.com/rth7680/qemu-palcode.git) registered for path 'roms/qemu-palcode'
Submodule 'roms/seabios' (git://git.qemu-project.org/seabios.git/) registered for path 'roms/seabios'
Submodule 'roms/sgabios' (git://git.qemu-project.org/sgabios.git) registered for path 'roms/sgabios'
Submodule 'roms/skiboot' (git://git.qemu.org/skiboot.git) registered for path 'roms/skiboot'
Submodule 'roms/u-boot' (git://git.qemu-project.org/u-boot.git) registered for path 'roms/u-boot'
Submodule 'roms/vgabios' (git://git.qemu-project.org/vgabios.git/) registered for path 'roms/vgabios'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb'
Cloning into 'capstone'...
Submodule path 'capstone': checked out '22ead3e0bfdb87516656453336160e0a37b066bf'
Cloning into 'dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
Cloning into 'roms/QemuMacDrivers'...
Submodule path 'roms/QemuMacDrivers': checked out 'd4e7d7ac663fcb55f1b93575445fcbca372f17a7'
Cloning into 'roms/SLOF'...
Submodule path 'roms/SLOF': checked out 'fa981320a1e0968d6fc1b8de319723ff8212b337'
Cloning into 'roms/ipxe'...
Submodule path 'roms/ipxe': checked out '0600d3ae94f93efd10fc6b3c7420a9557a3a1670'
Cloning into 'roms/openbios'...
Submodule path 'roms/openbios': checked out 'b5c93acd14b7b3886c2c81d84cd18e666984a4c8'
Cloning into 'roms/openhackware'...
Submodule path 'roms/openhackware': checked out 'c559da7c8eec5e45ef1f67978827af6f0b9546f5'
Cloning into 'roms/qemu-palcode'...
Submodule path 'roms/qemu-palcode': checked out 'f3c7e44c70254975df2a00af39701eafbac4d471'
Cloning into 'roms/seabios'...
Submodule path 'roms/seabios': checked out '63451fca13c75870e1703eb3e20584d91179aebc'
Cloning into 'roms/sgabios'...
Submodule path 'roms/sgabios': checked out 'cbaee52287e5f32373181cff50a00b6c4ac9015a'
Cloning into 'roms/skiboot'...
Submodule path 'roms/skiboot': checked out 'e0ee24c27a172bcf482f6f2bc905e6211c134bcc'
Cloning into 'roms/u-boot'...
Submodule path 'roms/u-boot': checked out 'd85ca029f257b53a96da6c2fb421e78a003a9943'
Cloning into 'roms/vgabios'...
Submodule path 'roms/vgabios': checked out '19ea12c230ded95928ecaef0db47a82231c2e485'
Cloning into 'ui/keycodemapdb'...
Submodule path 'ui/keycodemapdb': checked out '10739aa26051a5d49d88132604539d3ed085e72e'
Switched to a new branch 'test'
6efcae2 sev: add migration blocker
16a9e00 target/i386: clear C-bit when walking SEV guest page table
3b5e4a5 sev: add debug encrypt and decrypt commands
9034d07 hw: i386: set ram_debug_ops when memory encryption is enabled
9b48370 sev: Finalize the SEV guest launch flow
5e12681 sev: emit the SEV_MEASUREMENT event
1c9a562 qapi: add SEV_MEASUREMENT event
b322fca target/i386: encrypt bios rom
10da3ed sev: add command to encrypt guest memory region
cc979f7 sev: add command to create launch memory encryption context
9388e9f hmp: display memory encryption support in 'info kvm'
8875a9e kvm: introduce memory encryption APIs
c530cf3 sev: register the guest memory range which may contain encrypted data
f486eda sev: add command to initialize the memory encryption context
cd64908 accel: add Secure Encrypted Virtulization (SEV) object
08729ca docs: add AMD Secure Encrypted Virtualization (SEV)
e13044a kvm: update kvm.h to include memory encryption ioctls
113e16b machine: add -memory-encryption property
f839a7f target/i386: add memory encryption feature cpuid support
4e159e7 monitor/i386: use debug APIs when accessing guest memory
fbeb706 exec: add debug version of physical memory read and write API
11bc137 exec: add ram_debug_ops support
1b02df6 memattrs: add debug attribute

=== OUTPUT BEGIN ===
=== ENV ===
XDG_SESSION_ID=161645
SHELL=/bin/sh
USER=patchew
PATCHEW=/home/patchew/patchew/patchew-cli -s http://patchew.org --nodebug
PATH=/usr/bin:/bin
PWD=/var/tmp/patchew-tester-tmp-r4540qbd/src
LANG=en_US.UTF-8
HOME=/home/patchew
SHLVL=2
LOGNAME=patchew
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/env
=== PACKAGES ===
plymouth-core-libs-0.8.9-0.28.20140113.el7.centos.ppc64le
vim-common-7.4.160-2.el7.ppc64le
perl-Test-Simple-0.98-243.el7.noarch
hplip-common-3.15.9-3.el7.ppc64le
valgrind-3.12.0-8.el7.ppc64le
gamin-0.1.10-16.el7.ppc64le
libpeas-loader-python-1.20.0-1.el7.ppc64le
telepathy-filesystem-0.0.2-6.el7.noarch
colord-libs-1.3.4-1.el7.ppc64le
kbd-legacy-1.15.5-13.el7.noarch
perl-CPAN-Meta-YAML-0.008-14.el7.noarch
libvirt-daemon-driver-nwfilter-3.2.0-14.el7.ppc64le
ntsysv-1.7.4-1.el7.ppc64le
kernel-bootwrapper-3.10.0-693.el7.ppc64le
telepathy-farstream-0.6.0-5.el7.ppc64le
kdenetwork-common-4.10.5-8.el7_0.noarch
elfutils-devel-0.168-8.el7.ppc64le
pm-utils-1.4.1-27.el7.ppc64le
perl-Error-0.17020-2.el7.noarch
usbmuxd-1.1.0-1.el7.ppc64le
bzip2-devel-1.0.6-13.el7.ppc64le
blktrace-1.0.5-8.el7.ppc64le
gnome-keyring-pam-3.20.0-3.el7.ppc64le
tzdata-java-2017b-1.el7.noarch
perl-devel-5.16.3-292.el7.ppc64le
gnome-getting-started-docs-3.22.0-1.el7.noarch
perl-Log-Message-Simple-0.10-2.el7.noarch
totem-pl-parser-3.10.7-1.el7.ppc64le
lohit-oriya-fonts-2.5.4.1-3.el7.noarch
python-coverage-3.6-0.5.b3.el7.ppc64le
java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.ppc64le
mailcap-2.1.41-2.el7.noarch
perl-CPANPLUS-0.91.38-4.el7.noarch
fprintd-pam-0.5.0-4.0.el7_0.ppc64le
less-458-9.el7.ppc64le
gupnp-igd-0.2.4-1.el7.ppc64le
thai-scalable-waree-fonts-0.5.0-7.el7.noarch
python-di-0.3-2.el7.noarch
yelp-libs-3.22.0-1.el7.ppc64le
vte-profile-0.46.2-1.el7.ppc64le
gpm-libs-1.20.7-5.el7.ppc64le
gnome-clocks-3.22.1-1.el7.ppc64le
p11-kit-trust-0.23.5-3.el7.ppc64le
gssproxy-0.7.0-4.el7.ppc64le
gnu-free-mono-fonts-20120503-8.el7.noarch
python-dateutil-1.5-7.el7.noarch
gucharmap-libs-3.18.2-1.el7.ppc64le
glibc-common-2.17-196.el7.ppc64le
libreport-plugin-mantisbt-2.1.11-38.el7.centos.ppc64le
motif-devel-2.3.4-8.1.el7_3.ppc64le
celt051-0.5.1.3-8.el7.ppc64le
radvd-1.9.2-9.el7.ppc64le
lohit-tamil-fonts-2.5.3-2.el7.noarch
python-ipaddress-1.0.16-2.el7.noarch
anaconda-widgets-21.48.22.121-1.el7.centos.ppc64le
zlib-1.2.7-17.el7.ppc64le
system-config-printer-1.4.1-19.el7.ppc64le
mozjs24-24.2.0-7.el7.ppc64le
device-mapper-multipath-libs-0.4.9-111.el7.ppc64le
wqy-microhei-fonts-0.2.0-0.12.beta.el7.noarch
python-schedutils-0.4-6.el7.ppc64le
gnome-bluetooth-3.20.1-1.el7.ppc64le
nss-util-3.28.4-3.el7.ppc64le
dotconf-1.3-8.el7.ppc64le
ibus-rawcode-1.3.2-3.el7.ppc64le
abattis-cantarell-fonts-0.0.25-1.el7.noarch
sssd-common-1.15.2-50.el7.ppc64le
sil-padauk-fonts-2.8-5.el7.noarch
bind-utils-9.9.4-50.el7.ppc64le
sox-14.4.1-6.el7.ppc64le
libSM-1.2.2-2.el7.ppc64le
libtiff-devel-4.0.3-27.el7_3.ppc64le
plymouth-system-theme-0.8.9-0.28.20140113.el7.centos.ppc64le
python-libs-2.7.5-58.el7.ppc64le
sssd-1.15.2-50.el7.ppc64le
rfkill-0.4-9.el7.ppc64le
cyrus-sasl-md5-2.1.26-21.el7.ppc64le
libXtst-devel-1.2.3-1.el7.ppc64le
avahi-libs-0.6.31-17.el7.ppc64le
ruby-2.0.0.648-30.el7.ppc64le
seahorse-3.20.0-1.el7.ppc64le
python-six-1.9.0-2.el7.noarch
gpgme-1.3.2-5.el7.ppc64le
iwl7260-firmware-22.0.7.0-56.el7.noarch
libsss_certmap-1.15.2-50.el7.ppc64le
xorg-x11-drv-wacom-0.34.2-2.el7.ppc64le
libXau-1.0.8-2.1.el7.ppc64le
shadow-utils-4.1.5.1-24.el7.ppc64le
evolution-ews-3.22.6-6.el7.ppc64le
libsecret-0.18.5-2.el7.ppc64le
perl-Module-Signature-0.73-2.el7.noarch
rootfiles-8.1-11.el7.noarch
trace-cmd-2.6.0-8.el7.ppc64le
hamcrest-1.3-6.el7.noarch
gawk-4.0.2-4.el7_3.1.ppc64le
usermode-1.111-5.el7.ppc64le
gnome-terminal-nautilus-3.22.1-2.el7.ppc64le
gvfs-client-1.30.4-3.el7.ppc64le
yum-utils-1.1.31-42.el7.noarch
iwl3945-firmware-15.32.2.9-56.el7.noarch
perl-Archive-Zip-1.30-11.el7.noarch
spice-glib-0.33-6.el7.ppc64le
augeas-libs-1.4.0-2.el7.ppc64le
openlmi-providers-0.5.0-4.el7.ppc64le
gnome-color-manager-3.22.2-1.el7.ppc64le
imsettings-libs-1.6.3-9.el7.ppc64le
nss-softokn-devel-3.28.3-6.el7.ppc64le
python34-3.4.5-4.el7.ppc64le
perl-DBI-1.627-4.el7.ppc64le
plymouth-plugin-label-0.8.9-0.28.20140113.el7.centos.ppc64le
binutils-2.25.1-31.base.el7.ppc64le
libsss_nss_idmap-1.15.2-50.el7.ppc64le
gvfs-smb-1.30.4-3.el7.ppc64le
freetype-devel-2.4.11-15.el7.ppc64le
libXi-1.7.9-1.el7.ppc64le
libitm-4.8.5-16.el7_4.1.ppc64le
perl-Text-Diff-1.41-5.el7.noarch
gcr-devel-3.20.0-1.el7.ppc64le
numactl-libs-2.0.9-6.el7_2.ppc64le
hardlink-1.0-19.el7.ppc64le
gnome-disk-utility-3.22.1-1.el7.ppc64le
mariadb-libs-5.5.56-2.el7.ppc64le
libnotify-0.7.7-1.el7.ppc64le
perl-TimeDate-2.30-2.el7.noarch
soprano-devel-2.9.2-3.el7.ppc64le
pixman-0.34.0-1.el7.ppc64le
kmod-20-15.el7.ppc64le
qt3-PostgreSQL-3.3.8b-51.el7.ppc64le
python2-pyasn1-0.1.9-7.el7.noarch
libXt-1.1.5-3.el7.ppc64le
perl-Font-AFM-1.20-13.el7.noarch
ibus-1.5.3-13.el7.ppc64le
findutils-4.5.11-5.el7.ppc64le
ibus-libs-1.5.3-13.el7.ppc64le
iprutils-2.4.14.1-1.el7.ppc64le
libpwquality-1.2.3-4.el7.ppc64le
libXrender-devel-0.9.10-1.el7.ppc64le
perl-IO-stringy-2.110-22.el7.noarch
kdelibs-4.14.8-6.el7_3.ppc64le
flac-libs-1.3.0-5.el7_1.ppc64le
device-mapper-event-libs-1.02.140-8.el7.ppc64le
gnutls-devel-3.3.26-9.el7.ppc64le
libXau-devel-1.0.8-2.1.el7.ppc64le
gstreamer1-plugins-base-1.10.4-1.el7.ppc64le
perl-HTML-Tree-5.03-2.el7.noarch
kdenetwork-kopete-4.10.5-8.el7_0.ppc64le
libepoxy-1.3.1-1.el7.ppc64le
mesa-libGLES-17.0.1-6.20170307.el7.ppc64le
qt-postgresql-4.8.5-13.el7.ppc64le
fontconfig-devel-2.10.95-11.el7.ppc64le
java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.ppc64le
libXfont-1.5.2-1.el7.ppc64le
libkexiv2-4.10.5-3.el7.ppc64le
openjpeg-libs-1.5.1-17.el7.ppc64le
iscsi-initiator-utils-6.2.0.874-4.el7.ppc64le
NetworkManager-adsl-1.8.0-9.el7.ppc64le
libgtop2-2.34.2-1.el7.ppc64le
libXdamage-devel-1.1.4-4.1.el7.ppc64le
ipset-libs-6.29-1.el7.ppc64le
kde-runtime-drkonqi-4.10.5-8.el7.ppc64le
e2fsprogs-libs-1.42.9-10.el7.ppc64le
dhclient-4.2.5-58.el7.centos.ppc64le
usbutils-007-5.el7.ppc64le
python-ethtool-0.8-5.el7.ppc64le
gstreamer1-plugins-bad-free-1.10.4-2.el7.ppc64le
fftw-libs-double-3.3.3-8.el7.ppc64le
kdenetwork-krdc-4.10.5-8.el7_0.ppc64le
fuse-libs-2.9.2-8.el7.ppc64le
pciutils-3.5.1-2.el7.ppc64le
at-3.1.13-22.el7.ppc64le
python-IPy-0.75-6.el7.noarch
libXp-1.0.2-2.1.el7.ppc64le
vim-minimal-7.4.160-2.el7.ppc64le
kdesdk-kmtrace-4.10.5-6.el7.ppc64le
libraw1394-2.1.0-2.el7.ppc64le
libdrm-devel-2.4.74-1.el7.ppc64le
irqbalance-1.0.7-10.el7.ppc64le
fipscheck-lib-1.4.1-6.el7.ppc64le
gvfs-1.30.4-3.el7.ppc64le
libiscsi-1.9.0-7.el7.ppc64le
motif-2.3.4-8.1.el7_3.ppc64le
keyutils-1.5.8-3.el7.ppc64le
NetworkManager-ppp-1.8.0-9.el7.ppc64le
systemtap-3.1-3.el7.ppc64le
boost-serialization-1.53.0-27.el7.ppc64le
grilo-0.3.3-1.el7.ppc64le
rpm-4.11.3-25.el7.ppc64le
kdegraphics-libs-4.10.5-3.el7.noarch
libfontenc-1.1.3-3.el7.ppc64le
perl-Git-1.8.3.1-11.el7.noarch
rubygem-abrt-0.3.0-1.el7.noarch
tcl-8.5.13-8.el7.ppc64le
gtksourceview3-3.22.2-1.el7.ppc64le
cmake-2.8.12.2-2.el7.ppc64le
pulseaudio-utils-10.0-3.el7.ppc64le
libusal-1.1.11-23.el7.ppc64le
grub2-ppc64le-2.02-0.64.el7.centos.ppc64le
libreport-plugin-mailx-2.1.11-38.el7.centos.ppc64le
libvisual-0.4.0-16.el7.ppc64le
metacity-2.34.13-7.el7.ppc64le
redland-virtuoso-1.0.16-6.el7.ppc64le
nautilus-3.22.3-3.el7.ppc64le
pciutils-libs-3.5.1-2.el7.ppc64le
soprano-2.9.2-3.el7.ppc64le
mariadb-devel-5.5.56-2.el7.ppc64le
libxkbcommon-x11-0.7.1-1.el7.ppc64le
farstream02-0.2.3-3.el7.ppc64le
redhat-rpm-config-9.1.0-76.el7.centos.noarch
skkdic-20130104-6.T1435.el7.noarch
perl-HTTP-Tiny-0.033-3.el7.noarch
lvm2-libs-2.02.171-8.el7.ppc64le
perl-XML-Grove-0.46alpha-52.el7.noarch
boost-devel-1.53.0-27.el7.ppc64le
pycairo-1.8.10-8.el7.ppc64le
popt-devel-1.13-16.el7.ppc64le
gnome-settings-daemon-3.22.2-5.el7.ppc64le
perl-Socket-2.010-4.el7.ppc64le
numad-0.5-17.20150602git.el7.ppc64le
e2fsprogs-devel-1.42.9-10.el7.ppc64le
libsecret-devel-0.18.5-2.el7.ppc64le
libXv-devel-1.0.11-1.el7.ppc64le
libchewing-0.3.4-6.el7.ppc64le
gnome-shell-extension-places-menu-3.22.2-10.el7.noarch
perl-Time-HiRes-1.9725-3.el7.ppc64le
openchange-2.3-2.el7.ppc64le
audit-libs-devel-2.7.6-3.el7.ppc64le
python-dmidecode-3.12.2-1.el7.ppc64le
libmediaart-1.9.1-1.el7.ppc64le
elfutils-default-yama-scope-0.168-8.el7.noarch
quota-4.01-14.el7.ppc64le
perl-threads-1.87-4.el7.ppc64le
realmd-0.16.1-9.el7.ppc64le
nautilus-sendto-3.8.4-1.el7.ppc64le
gstreamer-0.10.36-7.el7.ppc64le
cairo-gobject-devel-1.14.8-2.el7.ppc64le
abrt-libs-2.1.11-48.el7.centos.ppc64le
libvirt-daemon-driver-storage-iscsi-3.2.0-14.el7.ppc64le
perl-Pod-Parser-1.61-2.el7.noarch
python-devel-2.7.5-58.el7.ppc64le
mpfr-devel-3.1.1-4.el7.ppc64le
kernel-headers-3.10.0-693.el7.ppc64le
powerpc-utils-python-1.2.1-9.el7.noarch
linux-firmware-20170606-56.gitc990aae.el7.noarch
libqmi-1.16.0-1.el7.ppc64le
libvirt-libs-3.2.0-14.el7.ppc64le
perl-Digest-1.17-245.el7.noarch
libgcab1-0.7-3.el7.ppc64le
flex-2.5.37-3.el7.ppc64le
tzdata-2017b-1.el7.noarch
phonon-4.6.0-10.el7.ppc64le
anaconda-tui-21.48.22.121-1.el7.centos.ppc64le
libmbim-utils-1.14.0-2.el7.ppc64le
gnutls-utils-3.3.26-9.el7.ppc64le
perl-Parse-CPAN-Meta-1.4404-5.el7.noarch
flite-1.3-22.el7.ppc64le
nfs4-acl-tools-0.3.3-15.el7.ppc64le
poppler-data-0.4.6-3.el7.noarch
gvfs-fuse-1.30.4-3.el7.ppc64le
gnome-software-3.22.7-1.el7.ppc64le
perl-ExtUtils-ParseXS-3.18-3.el7.noarch
libvirt-python-3.2.0-3.el7.ppc64le
perl-Module-Load-Conditional-0.54-3.el7.noarch
python-netifaces-0.10.4-3.el7.ppc64le
swig-2.0.10-5.el7.ppc64le
ipa-client-common-4.5.0-20.el7.centos.noarch
cheese-libs-3.22.1-1.el7.ppc64le
gnome-tweak-tool-3.22.0-1.el7.noarch
perl-ExtUtils-CBuilder-0.28.2.6-292.el7.noarch
libsoup-devel-2.56.0-3.el7.ppc64le
perl-IO-Zlib-1.10-292.el7.noarch
fros-1.0-2.el7.noarch
lohit-devanagari-fonts-2.5.3-4.el7.noarch
grub2-ppc64le-modules-2.02-0.64.el7.centos.noarch
libgdata-0.17.8-1.el7.ppc64le
evince-nautilus-3.22.1-5.el7.ppc64le
perl-ExtUtils-Embed-1.30-292.el7.noarch
dleyna-connector-dbus-0.2.0-2.el7.ppc64le
libiec61883-1.2.0-10.el7.ppc64le
python-lxml-3.2.1-4.el7.ppc64le
liberation-serif-fonts-1.07.2-15.el7.noarch
tigervnc-license-1.8.0-1.el7.noarch
gnome-packagekit-3.22.1-2.el7.ppc64le
hpijs-3.15.9-3.el7.ppc64le
libmodman-2.0.1-8.el7.ppc64le
ntp-4.2.6p5-25.el7.centos.2.ppc64le
gmp-devel-6.0.0-15.el7.ppc64le
pyxattr-0.5.1-5.el7.ppc64le
sil-abyssinica-fonts-1.200-6.el7.noarch
ncurses-libs-5.9-13.20130511.el7.ppc64le
gnome-dictionary-libs-3.20.0-1.el7.ppc64le
kdesdk-devel-4.10.5-6.el7.ppc64le
libreport-rhel-anaconda-bugzilla-2.1.11-38.el7.centos.ppc64le
libvirt-daemon-config-network-3.2.0-14.el7.ppc64le
boost-iostreams-1.53.0-27.el7.ppc64le
python-ply-3.4-11.el7.noarch
ucs-miscfixed-fonts-0.3-11.el7.noarch
info-5.1-4.el7.ppc64le
libXxf86misc-devel-1.0.3-7.1.el7.ppc64le
ibus-qt-1.3.2-4.el7.ppc64le
gnome-video-effects-0.4.3-1.el7.noarch
bridge-utils-1.5-9.el7.ppc64le
make-3.82-23.el7.ppc64le
pywbem-0.7.0-25.20130827svn625.el7.noarch
pnm2ppa-1.04-28.el7.ppc64le
chkconfig-1.7.4-1.el7.ppc64le
at-spi2-atk-devel-2.22.0-2.el7.ppc64le
freeglut-devel-2.8.1-3.el7.ppc64le
jbigkit-libs-2.0-11.el7.ppc64le
sssd-ipa-1.15.2-50.el7.ppc64le
openssl-libs-1.0.2k-8.el7.ppc64le
ldns-1.6.16-10.el7.ppc64le
rdate-1.4-25.el7.ppc64le
libdb-5.3.21-20.el7.ppc64le
evince-libs-3.22.1-5.el7.ppc64le
empathy-3.12.12-4.el7.ppc64le
rubygem-json-1.7.7-30.el7.ppc64le
dmraid-1.0.0.rc16-28.el7.ppc64le
libblkid-2.23.2-43.el7.ppc64le
logrotate-3.8.6-14.el7.ppc64le
iwl105-firmware-18.168.6.1-56.el7.noarch
grep-2.20-3.el7.ppc64le
xorg-x11-drv-synaptics-1.9.0-1.el7.ppc64le
iowatcher-1.0-6.el7.ppc64le
rubygem-net-http-persistent-2.8-5.el7.noarch
setroubleshoot-plugins-3.0.65-1.el7.noarch
atk-2.22.0-3.el7.ppc64le
libcacard-2.5.2-2.el7.ppc64le
iwl6050-firmware-41.28.5.1-56.el7.noarch
lcms2-2.6-3.el7.ppc64le
tigervnc-server-minimal-1.8.0-1.el7.ppc64le
gvfs-goa-1.30.4-3.el7.ppc64le
authconfig-6.2.8-30.el7.ppc64le
yum-plugin-fastestmirror-1.1.31-42.el7.noarch
dbus-python-1.1.1-9.el7.ppc64le
perl-Archive-Tar-1.92-2.el7.noarch
iwl5000-firmware-8.83.5.1_1-56.el7.noarch
libacl-2.2.51-12.el7.ppc64le
farstream-0.1.2-8.el7.ppc64le
ppc64-utils-0.14-16.el7.ppc64le
servicelog-1.1.14-3.el7.ppc64le
python2-ipaclient-4.5.0-20.el7.centos.noarch
libpeas-1.20.0-1.el7.ppc64le
perl-TermReadKey-2.30-20.el7.ppc64le
hdparm-9.43-5.el7.ppc64le
libicu-50.1.2-15.el7.ppc64le
polkit-qt-0.103.0-10.el7_0.ppc64le
gnome-weather-3.20.2-1.el7.noarch
libmspack-0.5-0.5.alpha.el7.ppc64le
libkkc-data-0.3.1-9.el7.ppc64le
hicolor-icon-theme-0.12-7.el7.noarch
perl-Newt-1.08-36.el7.ppc64le
libstdc++-devel-4.8.5-16.el7_4.1.ppc64le
libexif-0.6.21-6.el7.ppc64le
gtk3-devel-3.22.10-4.el7.ppc64le
gvfs-mtp-1.30.4-3.el7.ppc64le
ncompress-4.2.4.4-3.el7.ppc64le
libXcomposite-0.4.4-4.1.el7.ppc64le
python-decorator-3.4.0-3.el7.noarch
perl-Business-ISBN-Data-20120719.001-2.el7.noarch
gcc-gfortran-4.8.5-16.el7_4.1.ppc64le
cpio-2.11-24.el7.ppc64le
mesa-libGLU-9.0.0-4.el7.ppc64le
baobab-3.22.1-1.el7.ppc64le
device-mapper-libs-1.02.140-8.el7.ppc64le
libXtst-1.2.3-1.el7.ppc64le
ModemManager-glib-1.6.0-2.el7.ppc64le
perl-HTML-Parser-3.71-4.el7.ppc64le
libical-1.0.1-1.el7.ppc64le
xorg-x11-xinit-1.3.4-1.el7.ppc64le
gstreamer1-plugins-base-devel-1.10.4-1.el7.ppc64le
libdrm-2.4.74-1.el7.ppc64le
libXfixes-devel-5.0.3-1.el7.ppc64le
python-gssapi-1.2.0-3.el7.ppc64le
perl-Text-Unidecode-0.04-20.el7.noarch
hunspell-1.3.2-15.el7.ppc64le
kde-settings-19-23.5.el7.centos.noarch
perl-App-cpanminus-1.6922-2.el7.noarch
parted-3.1-28.el7.ppc64le
mesa-libGL-17.0.1-6.20170307.el7.ppc64le
elfutils-libelf-devel-0.168-8.el7.ppc64le
perl-Net-LibIDN-0.12-15.el7.ppc64le
apr-1.4.8-3.el7.ppc64le
kdepimlibs-4.10.5-4.el7.ppc64le
virt-top-1.0.8-23.el7.ppc64le
samba-client-libs-4.6.2-8.el7.ppc64le
gstreamer-plugins-base-0.10.36-10.el7.ppc64le
json-glib-devel-1.2.6-1.el7.ppc64le
perl-autodie-2.16-2.el7.noarch
tar-1.26-32.el7.ppc64le
ksysguard-libs-4.11.19-8.el7.ppc64le
rdma-core-devel-13-7.el7.ppc64le
accountsservice-0.6.45-2.el7.ppc64le
libxklavier-5.4-7.el7.ppc64le
libxml2-devel-2.9.1-6.el7_2.3.ppc64le
ghostscript-fonts-5.50-32.el7.noarch
libassuan-2.1.0-3.el7.ppc64le
libkipi-devel-4.10.5-3.el7.ppc64le
python-smbc-1.0.13-7.el7.ppc64le
initscripts-9.49.39-1.el7.ppc64le
qt3-3.3.8b-51.el7.ppc64le
yum-metadata-parser-1.1.4-10.el7.ppc64le
device-mapper-persistent-data-0.7.0-0.1.rc6.el7.ppc64le
adwaita-icon-theme-3.22.0-1.el7.noarch
kdepim-4.10.5-6.el7.ppc64le
postfix-2.10.1-6.el7.ppc64le
abrt-addon-pstoreoops-2.1.11-48.el7.centos.ppc64le
freerdp-libs-1.0.2-10.el7.ppc64le
langtable-python-0.0.31-3.el7.noarch
tcp_wrappers-7.6-77.el7.ppc64le
lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.ppc64le
kde-style-oxygen-4.11.19-8.el7.ppc64le
powertop-2.3-12.el7.ppc64le
wpa_supplicant-2.6-5.el7.ppc64le
gtk3-3.22.10-4.el7.ppc64le
boost-python-1.53.0-27.el7.ppc64le
keyutils-libs-devel-1.5.8-3.el7.ppc64le
libdvdread-5.0.3-3.el7.ppc64le
im-chooser-common-1.6.4-4.el7.ppc64le
aic94xx-firmware-30-6.el7.noarch
media-player-info-17-4.el7.noarch
compat-gnome-desktop314-3.14.2-1.el7.ppc64le
harfbuzz-1.3.2-1.el7.ppc64le
libgcrypt-devel-1.5.3-14.el7.ppc64le
groff-base-1.22.2-8.el7.ppc64le
sane-backends-1.0.24-9.el7.ppc64le
setuptool-1.19.11-8.el7.ppc64le
ebtables-2.0.10-15.el7.ppc64le
libchamplain-0.12.15-1.el7.ppc64le
boost-math-1.53.0-27.el7.ppc64le
libuser-0.60-7.el7_1.ppc64le
boost-date-time-1.53.0-27.el7.ppc64le
espeak-1.47.11-4.el7.ppc64le
tbb-devel-4.1-9.20130314.el7.ppc64le
grub2-tools-minimal-2.02-0.64.el7.centos.ppc64le
gjs-1.46.0-1.el7.ppc64le
libsss_autofs-1.15.2-50.el7.ppc64le
deltarpm-3.6-3.el7.ppc64le
libnl-1.1.4-3.el7.ppc64le
libgpod-0.8.2-12.el7.ppc64le
postgresql-devel-9.2.21-1.el7.ppc64le
libibcm-13-7.el7.ppc64le
abrt-gui-libs-2.1.11-48.el7.centos.ppc64le
libxkbcommon-0.7.1-1.el7.ppc64le
passwd-0.79-4.el7.ppc64le
lsvpd-1.7.8-1.el7.ppc64le
fprintd-0.5.0-4.0.el7_0.ppc64le
hunspell-en-0.20121024-6.el7.noarch
qca-ossl-2.0.0-0.19.beta3.el7.ppc64le
libdmapsharing-2.9.37-1.el7.ppc64le
ortp-0.20.0-10.el7.ppc64le
python-pycurl-7.19.0-19.el7.ppc64le
perl-Pod-Escapes-1.04-292.el7.noarch
pcp-3.11.8-7.el7.ppc64le
libblkid-devel-2.23.2-43.el7.ppc64le
dracut-network-033-502.el7.ppc64le
pyatspi-2.20.3-1.el7.noarch
systemtap-sdt-devel-3.1-3.el7.ppc64le
check-0.9.9-5.el7.ppc64le
perl-threads-shared-1.43-6.el7.ppc64le
gnome-shell-extension-common-3.22.2-10.el7.noarch
gnome-icon-theme-symbolic-3.12.0-2.el7.noarch
abrt-cli-2.1.11-48.el7.centos.ppc64le
festival-speechtools-libs-1.2.96-28.el7.ppc64le
python-slip-dbus-0.4.0-2.el7.noarch
mesa-private-llvm-3.9.1-3.el7.ppc64le
perl-Time-Local-1.2300-2.el7.noarch
yelp-3.22.0-1.el7.ppc64le
fuse-devel-2.9.2-8.el7.ppc64le
dnsmasq-2.76-2.el7.ppc64le
festvox-slt-arctic-hts-0.20061229-28.el7.noarch
libtasn1-devel-4.10-1.el7.ppc64le
libgudev1-219-42.el7.ppc64le
perl-version-0.99.07-2.el7.ppc64le
libvirt-daemon-driver-qemu-3.2.0-14.el7.ppc64le
ps_mem-3.1-7.el7.noarch
rtkit-0.11-10.el7.ppc64le
abrt-gui-2.1.11-48.el7.centos.ppc64le
nettle-devel-2.7.1-8.el7.ppc64le
perl-ExtUtils-Manifest-1.61-244.el7.noarch
libreswan-3.20-3.el7.ppc64le
python-pyudev-0.15-9.el7.noarch
appstream-data-7-20170301.el7.noarch
powerpc-utils-1.3.3-4.el7.ppc64le
setup-2.8.71-7.el7.noarch
enscript-1.6.6-6.el7.ppc64le
libgexiv2-0.10.4-2.el7.ppc64le
perl-Digest-SHA-5.85-4.el7.ppc64le
upower-0.99.4-2.el7.ppc64le
dhcp-libs-4.2.5-58.el7.centos.ppc64le
kbd-1.15.5-13.el7.ppc64le
phonon-backend-gstreamer-4.6.3-3.el7.ppc64le
dejavu-fonts-common-2.33-6.el7.noarch
libaio-devel-0.3.109-13.el7.ppc64le
grubby-8.28-23.el7.ppc64le
perl-CPAN-Meta-2.120921-5.el7.noarch
libmusicbrainz5-5.0.1-9.el7.ppc64le
liberation-mono-fonts-1.07.2-15.el7.noarch
fcoe-utils-1.0.32-1.el7.ppc64le
gvfs-afc-1.30.4-3.el7.ppc64le
m17n-db-1.6.4-3.el7.noarch
time-1.7-45.el7.ppc64le
python-configobj-4.7.2-7.el7.noarch
perl-Log-Message-0.08-3.el7.noarch
glib-networking-2.50.0-1.el7.ppc64le
gnome-classic-session-3.22.2-10.el7.noarch
libglade2-2.6.4-11.el7.ppc64le
langtable-data-0.0.31-3.el7.noarch
dejavu-serif-fonts-2.33-6.el7.noarch
python-requests-2.6.0-1.el7_1.noarch
perl-HTML-Tagset-3.20-15.el7.noarch
gssdp-1.0.1-1.el7.ppc64le
perl-CPANPLUS-Dist-Build-0.70-3.el7.noarch
brasero-nautilus-3.12.1-2.el7.ppc64le
evolution-data-server-3.22.7-6.el7.ppc64le
khmeros-fonts-common-5.0-17.el7.noarch
dejavu-sans-fonts-2.33-6.el7.noarch
python-kmod-0.9-4.el7.ppc64le
lzop-1.03-10.el7.ppc64le
telepathy-salut-0.8.1-6.el7.ppc64le
tbb-4.1-9.20130314.el7.ppc64le
kdegraphics-devel-4.10.5-3.el7.noarch
libcryptui-3.12.2-1.el7.ppc64le
ncurses-base-5.9-13.20130511.el7.noarch
lohit-nepali-fonts-2.5.3-2.el7.noarch
python-configshell-1.1.fb23-3.el7.noarch
acl-2.2.51-12.el7.ppc64le
python-rtslib-2.1.fb63-2.el7.noarch
libreport-plugin-rhtsupport-2.1.11-38.el7.centos.ppc64le
imsettings-qt-1.6.3-9.el7.ppc64le
webkitgtk3-2.4.11-2.el7.ppc64le
libsepol-2.5-6.el7.ppc64le
smc-meera-fonts-6.0-7.el7.noarch
python-mako-0.8.1-2.el7.noarch
pinentry-0.8.1-17.el7.ppc64le
alsa-tools-firmware-1.1.0-1.el7.ppc64le
libgdither-0.6-8.el7.ppc64le
ibus-libpinyin-1.6.91-4.el7.ppc64le
libXp-devel-1.0.2-2.1.el7.ppc64le
nspr-4.13.1-1.0.el7_3.ppc64le
cscope-15.8-10.el7.ppc64le
m2crypto-0.21.1-17.el7.ppc64le
libatomic-4.8.5-16.el7.ppc64le
opencc-0.4.3-3.el7.ppc64le
sbc-1.0-5.el7.ppc64le
SDL-devel-1.2.15-14.el7.ppc64le
vorbis-tools-1.4.0-12.el7.ppc64le
bzip2-libs-1.0.6-13.el7.ppc64le
google-crosextra-carlito-fonts-1.103-0.2.20130920.el7.noarch
nmap-ncat-6.40-7.el7.ppc64le
krb5-libs-1.15.1-8.el7.ppc64le
sssd-krb5-1.15.2-50.el7.ppc64le
cups-filters-libs-1.0.35-22.el7.ppc64le
virt-manager-1.4.1-7.el7.noarch
evince-3.22.1-5.el7.ppc64le
readline-6.2-10.el7.ppc64le
ctags-5.8-13.el7.ppc64le
sound-theme-freedesktop-0.8-3.el7.noarch
ruby-libs-2.0.0.648-30.el7.ppc64le
pth-2.0.7-23.el7.ppc64le
rubygems-2.0.14.1-30.el7.noarch
gnome-dictionary-3.20.0-1.el7.ppc64le
xorg-x11-drv-evdev-2.10.5-2.1.el7.ppc64le
audit-libs-2.7.6-3.el7.ppc64le
iwl135-firmware-18.168.6.1-56.el7.noarch
python-nss-0.16.0-3.el7.ppc64le
json-glib-1.2.6-1.el7.ppc64le
flatpak-libs-0.8.7-1.el7.ppc64le
libutempter-1.1.6-4.el7.ppc64le
ekiga-4.0.1-7.el7.ppc64le
easymock2-2.5.2-12.el7.noarch
keyutils-libs-1.5.8-3.el7.ppc64le
iwl1000-firmware-39.31.5.1-56.el7.noarch
teamd-1.25-5.el7.ppc64le
telepathy-glib-0.24.0-1.el7.ppc64le
PackageKit-yum-1.1.5-1.el7.centos.ppc64le
virt-what-1.13-10.el7.ppc64le
ppc64-diag-2.7.3-3.el7.ppc64le
libpurple-2.10.11-5.el7.ppc64le
libffi-3.0.13-18.el7.ppc64le
iwl2000-firmware-18.168.6.1-56.el7.noarch
perl-YAML-0.84-5.el7.noarch
libxml2-python-2.9.1-6.el7_2.3.ppc64le
lsscsi-0.27-6.el7.ppc64le
systemtap-client-3.1-3.el7.ppc64le
virt-viewer-5.0-7.el7.ppc64le
dbusmenu-qt-0.9.2-7.el7.ppc64le
libtar-1.2.11-29.el7.ppc64le
ccache-3.3.4-1.el7.ppc64le
perl-DBD-SQLite-1.39-3.el7.ppc64le
gnome-icon-theme-3.12.0-1.el7.noarch
gdk-pixbuf2-2.36.5-1.el7.ppc64le
libpath_utils-0.2.1-27.el7.ppc64le
gvfs-archive-1.30.4-3.el7.ppc64le
gnome-online-accounts-devel-3.22.5-1.el7.ppc64le
yajl-2.0.4-4.el7.ppc64le
gcc-4.8.5-16.el7_4.1.ppc64le
perl-Pod-Coverage-0.23-3.el7.noarch
libselinux-python-2.5-11.el7.ppc64le
libX11-devel-1.6.5-1.el7.ppc64le
qrencode-libs-3.4.1-3.el7.ppc64le
gnome-system-log-3.9.90-3.el7.ppc64le
mesa-libGLU-devel-9.0.0-4.el7.ppc64le
boost-system-1.53.0-27.el7.ppc64le
perl-HTTP-Message-6.06-6.el7.noarch
cracklib-2.9.0-11.el7.ppc64le
libXcursor-1.1.14-8.el7.ppc64le
dbus-1.6.12-17.el7.ppc64le
libnotify-devel-0.7.7-1.el7.ppc64le
ibus-gtk3-1.5.3-13.el7.ppc64le
libv4l-0.9.5-4.el7.ppc64le
perl-Time-Piece-1.20.1-292.el7.ppc64le
cracklib-dicts-2.9.0-11.el7.ppc64le
startup-notification-0.12-8.el7.ppc64le
dconf-0.26.0-2.el7.ppc64le
net-snmp-devel-5.7.2-28.el7.ppc64le
kate-part-4.10.5-4.el7.ppc64le
orc-0.4.26-1.el7.ppc64le
kernel-devel-3.10.0-693.el7.ppc64le
avahi-gobject-0.6.31-17.el7.ppc64le
cairo-gobject-1.14.8-2.el7.ppc64le
httpd-2.4.6-67.el7.centos.ppc64le
subversion-1.7.14-10.el7.ppc64le
kdepimlibs-akonadi-4.10.5-4.el7.ppc64le
gdbm-1.10-8.el7.ppc64le
perl-File-CheckTree-4.42-3.el7.noarch
atk-devel-2.22.0-3.el7.ppc64le
java-1.8.0-openjdk-devel-1.8.0.131-11.b12.el7.ppc64le
abrt-dbus-2.1.11-48.el7.centos.ppc64le
qt-mysql-4.8.5-13.el7.ppc64le
libkdcraw-4.10.5-4.el7.ppc64le
libaio-0.3.109-13.el7.ppc64le
urw-fonts-2.4-16.el7.noarch
libgee06-0.6.8-3.el7.ppc64le
libXrandr-devel-1.5.1-2.el7.ppc64le
cronie-anacron-1.4.11-17.el7.ppc64le
mlocate-0.26-6.el7.ppc64le
kdesdk-okteta-devel-4.10.5-6.el7.ppc64le
iso-codes-3.46-2.el7.noarch
e2fsprogs-1.42.9-10.el7.ppc64le
at-spi2-atk-2.22.0-2.el7.ppc64le
libstoragemgmt-python-clibs-1.4.0-3.el7.ppc64le
PackageKit-command-not-found-1.1.5-1.el7.centos.ppc64le
kdenetwork-kopete-devel-4.10.5-8.el7_0.ppc64le
libmnl-1.0.3-7.el7.ppc64le
tcp_wrappers-devel-7.6-77.el7.ppc64le
python-dns-1.12.0-4.20150617git465785f.el7.noarch
libXinerama-devel-1.1.3-2.1.el7.ppc64le
libibverbs-13-7.el7.ppc64le
net-tools-2.0-0.22.20131004git.el7.ppc64le
kde-workspace-libs-4.11.19-8.el7.ppc64le
libwebp-0.3.0-7.el7.ppc64le
libattr-devel-2.4.46-12.el7.ppc64le
libkadm5-1.15.1-8.el7.ppc64le
gcr-3.20.0-1.el7.ppc64le
colord-1.3.4-1.el7.ppc64le
rsyslog-8.24.0-12.el7.ppc64le
im-chooser-1.6.4-4.el7.ppc64le
boost-filesystem-1.53.0-27.el7.ppc64le
libgpg-error-devel-1.12-3.el7.ppc64le
harfbuzz-icu-1.3.2-1.el7.ppc64le
libpeas-gtk-1.20.0-1.el7.ppc64le
abrt-addon-python-2.1.11-48.el7.centos.ppc64le
selinux-policy-targeted-3.13.1-166.el7.noarch
libksane-4.10.5-4.el7.ppc64le
m4-1.4.16-10.el7.ppc64le
xmlrpc-c-client-1.32.5-1905.svn2451.el7.ppc64le
sysvinit-tools-2.88-14.dsf.el7.ppc64le
libnma-1.8.0-3.el7.ppc64le
os-prober-1.58-9.el7.ppc64le
libproxy-mozjs-0.4.11-10.el7.ppc64le
speech-dispatcher-0.7.1-15.el7.ppc64le
boost-signals-1.53.0-27.el7.ppc64le
python-ldap-2.4.15-2.el7.ppc64le
libvpx-1.3.0-5.el7_0.ppc64le
nm-connection-editor-1.8.0-3.el7.ppc64le
NetworkManager-team-1.8.0-9.el7.ppc64le
perf-3.10.0-693.el7.ppc64le
libgsf-1.14.26-7.el7.ppc64le
libpfm-4.7.0-4.el7.ppc64le
postgresql-9.2.21-1.el7.ppc64le
ethtool-4.8-1.el7.ppc64le
xorg-x11-server-utils-7.7-20.el7.ppc64le
attica-0.4.2-1.el7.ppc64le
xfsdump-3.1.4-1.el7.ppc64le
firewalld-filesystem-0.4.4.4-6.el7.noarch
libXfont2-2.0.1-2.el7.ppc64le
net-snmp-agent-libs-5.7.2-28.el7.ppc64le
tcl-devel-8.5.13-8.el7.ppc64le
libgxps-0.2.5-1.el7.ppc64le
cyrus-sasl-devel-2.1.26-21.el7.ppc64le
hmaccalc-0.9.13-4.el7.ppc64le
libwacom-data-0.24-1.el7.noarch
perl-Pod-Usage-1.63-3.el7.noarch
python-yubico-1.2.3-1.el7.noarch
libXxf86vm-devel-1.1.4-1.el7.ppc64le
abrt-tui-2.1.11-48.el7.centos.ppc64le
pinfo-0.6.10-9.el7.ppc64le
gnome-shell-extension-user-theme-3.22.2-10.el7.noarch
perl-File-Path-2.09-2.el7.noarch
xorg-x11-fonts-Type1-7.5-9.el7.noarch
python-firewall-0.4.4.4-6.el7.noarch
libXres-1.0.7-2.1.el7.ppc64le
libcgroup-tools-0.41-13.el7.ppc64le
libnl-devel-1.1.4-3.el7.ppc64le
gnome-user-docs-3.22.0-1.el7.noarch
perl-Pod-Simple-3.28-4.el7.noarch
systemd-libs-219-42.el7.ppc64le
ncurses-devel-5.9-13.20130511.el7.ppc64le
mesa-libEGL-devel-17.0.1-6.20170307.el7.ppc64le
audit-2.7.6-3.el7.ppc64le
iotop-0.6-2.el7.noarch
libvirt-daemon-driver-storage-logical-3.2.0-14.el7.ppc64le
perl-Module-CoreList-2.76.02-292.el7.noarch
libmbim-1.14.0-2.el7.ppc64le
xdg-desktop-portal-0.5-2.el7.ppc64le
perl-Module-Load-0.24-3.el7.noarch
caribou-gtk3-module-0.4.21-1.el7.ppc64le
sqlite-devel-3.7.17-8.el7.ppc64le
centos-indexhtml-7-9.el7.centos.noarch
elfutils-0.168-8.el7.ppc64le
centos-release-7-4.1708.el7.centos.ppc64le
trousers-0.3.14-2.el7.ppc64le
perl-Thread-Queue-3.02-2.el7.noarch
python-meh-gui-0.25.2-1.el7.noarch
gom-0.3.2-1.el7.ppc64le
lldpad-1.0.1-3.git036e314.el7.ppc64le
libgusb-0.2.9-1.el7.ppc64le
liberation-fonts-common-1.07.2-15.el7.noarch
libimobiledevice-1.2.0-1.el7.ppc64le
perl-Module-Pluggable-4.8-3.el7.noarch
ghostscript-cups-9.07-28.el7.ppc64le
osinfo-db-tools-1.1.0-1.el7.ppc64le
kbd-misc-1.15.5-13.el7.noarch
dhcp-common-4.2.5-58.el7.centos.ppc64le
control-center-filesystem-3.22.2-5.el7.ppc64le
libvirt-glib-1.0.0-1.el7.ppc64le
perl-CPAN-Meta-Requirements-2.122-7.el7.noarch
PyQt4-4.10.1-13.el7.ppc64le
btrfs-progs-4.9.1-1.el7.ppc64le
anaconda-gui-21.48.22.121-1.el7.centos.ppc64le
libatasmart-0.19-6.el7.ppc64le
shared-desktop-ontologies-0.11.0-2.el7.noarch
libvirt-daemon-config-nwfilter-3.2.0-14.el7.ppc64le
autoconf-2.69-11.el7.noarch
gnome-terminal-3.22.1-2.el7.ppc64le
python-cups-1.9.63-6.el7.ppc64le
intltool-0.50.2-7.el7.noarch
glibc-headers-2.17-196.el7.ppc64le
kdesdk-common-4.10.5-6.el7.noarch
libvirt-daemon-driver-secret-3.2.0-14.el7.ppc64le
perl-Locale-Maketext-Simple-0.21-292.el7.noarch
gnome-keyring-3.20.0-3.el7.ppc64le
python-sss-murmur-1.15.2-50.el7.ppc64le
vim-enhanced-7.4.160-2.el7.ppc64le
perl-ExtUtils-MakeMaker-6.68-3.el7.noarch
emacs-filesystem-24.3-19.el7_3.noarch
libvncserver-0.9.9-9.el7_0.1.ppc64le
perl-Object-Accessor-0.42-292.el7.noarch
gnome-desktop3-3.22.2-2.el7.ppc64le
python-backports-1.0-8.el7.ppc64le
evolution-help-3.22.6-10.el7.noarch
systemtap-devel-3.1-3.el7.ppc64le
langtable-0.0.31-3.el7.noarch
geocode-glib-3.20.1-1.el7.ppc64le
perl-Compress-Raw-Bzip2-2.061-3.el7.ppc64le
pygtk2-libglade-2.24.0-9.el7.ppc64le
python-urllib3-1.10.2-3.el7.noarch
orca-3.6.3-4.el7.ppc64le
perl-File-Fetch-0.42-2.el7.noarch
latencytop-common-0.5-13.el7.ppc64le
geoclue2-libs-2.4.5-1.el7.ppc64le
perl-Module-Loaded-0.08-292.el7.noarch
webkitgtk4-2.14.7-2.el7.ppc64le
python-paste-1.7.5.1-9.20111221hg1498.el7.noarch
totem-nautilus-3.22.1-1.el7.ppc64le
libtool-2.4.2-22.el7_3.ppc64le
smc-fonts-common-6.0-7.el7.noarch
libnice-0.1.3-4.el7.ppc64le
libdvdnav-5.0.3-1.el7.ppc64le
folks-0.11.3-1.el7.ppc64le
python-ipaddr-2.1.11-1.el7.noarch
xorg-x11-utils-7.5-22.el7.ppc64le
oxygen-icon-theme-4.10.5-2.el7.noarch
libkkc-common-0.3.1-9.el7.noarch
libgovirt-0.3.3-5.el7.ppc64le
boost-timer-1.53.0-27.el7.ppc64le
gnome-packagekit-common-3.22.1-2.el7.ppc64le
javapackages-tools-3.4.1-11.el7.noarch
sane-backends-devel-1.0.24-9.el7.ppc64le
konkretcmpi-0.9.1-5.el7.ppc64le
perl-srpm-macros-1-8.el7.noarch
chrony-3.1-2.el7.centos.ppc64le
fuse-2.9.2-8.el7.ppc64le
evolution-3.22.6-10.el7.ppc64le
python-urwid-1.1.1-3.el7.ppc64le
shotwell-0.24.5-1.el7.ppc64le
libreport-web-2.1.11-38.el7.centos.ppc64le
glibc-2.17-196.el7.ppc64le
usb_modeswitch-data-20160612-2.el7.noarch
patch-2.7.1-8.el7.ppc64le
file-roller-3.22.3-1.el7.ppc64le
python-netaddr-0.7.5-7.el7.noarch
ibus-table-chinese-1.4.6-3.el7.noarch
libreport-plugin-reportuploader-2.1.11-38.el7.centos.ppc64le
pcre-8.32-17.el7.ppc64le
libvirt-daemon-driver-network-3.2.0-14.el7.ppc64le
cyrus-sasl-plain-2.1.26-21.el7.ppc64le
glade-libs-3.20.0-1.el7.ppc64le
python-markupsafe-0.11-10.el7.ppc64le
kdenetwork-devel-4.10.5-8.el7_0.noarch
libreport-plugin-ureport-2.1.11-38.el7.centos.ppc64le
dbus-libs-1.6.12-17.el7.ppc64le
alsa-firmware-1.0.28-2.el7.noarch
mozjs17-17.0.0-19.el7.ppc64le
avahi-ui-gtk3-0.6.31-17.el7.ppc64le
python-cffi-1.6.0-5.el7.ppc64le
xdg-user-dirs-gtk-0.10-4.el7.ppc64le
gavl-1.4.0-4.el7.ppc64le
libjpeg-turbo-1.2.90-5.el7.ppc64le
device-mapper-multipath-0.4.9-111.el7.ppc64le
libcdio-0.92-1.el7.ppc64le
pulseaudio-module-bluetooth-10.0-3.el7.ppc64le
pytalloc-2.1.9-1.el7.ppc64le
ibus-sayura-1.3.2-3.el7.ppc64le
checkpolicy-2.5-4.el7.ppc64le
libICE-1.0.9-9.el7.ppc64le
libvirt-daemon-driver-interface-3.2.0-14.el7.ppc64le
libunistring-0.9.3-9.el7.ppc64le
libXScrnSaver-devel-1.2.2-6.1.el7.ppc64le
openlmi-python-base-0.5.0-4.el7.noarch
PyQt4-devel-4.10.1-13.el7.ppc64le
libndp-1.2-7.el7.ppc64le
libxml2-2.9.1-6.el7_2.3.ppc64le
sssd-krb5-common-1.15.2-50.el7.ppc64le
ncurses-5.9-13.20130511.el7.ppc64le
icedax-1.1.11-23.el7.ppc64le
libmsn-4.2.1-7.el7.ppc64le
evolution-data-server-devel-3.22.7-6.el7.ppc64le
poppler-0.26.5-16.el7.ppc64le
sed-4.2.2-5.el7.ppc64le
sssd-ldap-1.15.2-50.el7.ppc64le
fontconfig-2.10.95-11.el7.ppc64le
pinentry-qt-0.8.1-17.el7.ppc64le
cyrus-sasl-scram-2.1.26-21.el7.ppc64le
paps-0.6.8-28.el7.1.ppc64le
libyaml-0.1.4-11.el7_0.ppc64le
libgpg-error-1.12-3.el7.ppc64le
sgpio-1.2.0.10-13.el7.ppc64le
alsa-lib-1.1.3-3.el7.ppc64le
gutenprint-5.2.9-18.el7.ppc64le
openslp-2.0.0-6.el7.ppc64le
ruby-irb-2.0.0.648-30.el7.noarch
libgcrypt-1.5.3-14.el7.ppc64le
python-blivet-0.61.15.65-1.el7.noarch
gzip-1.5-9.el7.ppc64le
xorg-x11-drv-void-1.4.1-2.el7.ppc64le
nss-pem-1.0.3-4.el7.ppc64le
rubygem-rdoc-4.0.0-30.el7.noarch
libcap-ng-0.7.5-4.el7.ppc64le
rpm-build-libs-4.11.3-25.el7.ppc64le
shared-mime-info-1.8-3.el7.ppc64le
xorg-x11-drv-v4l-0.2.0-47.el7.ppc64le
nss-tools-3.28.4-8.el7.ppc64le
libsemanage-2.5-8.el7.ppc64le
libxcb-1.12-1.el7.ppc64le
flatpak-0.8.7-1.el7.ppc64le
gstreamer1-1.10.4-2.el7.ppc64le
xorg-x11-drv-nouveau-1.0.13-3.el7.ppc64le
sgml-common-0.6.3-39.el7.noarch
util-linux-2.23.2-43.el7.ppc64le
libtdb-1.3.12-2.el7.ppc64le
rpm-devel-4.11.3-25.el7.ppc64le
gobject-introspection-1.50.0-1.el7.ppc64le
qdox-1.12.1-10.el7.noarch
libteam-1.25-5.el7.ppc64le
openssh-clients-7.4p1-11.el7.ppc64le
libattr-2.4.46-12.el7.ppc64le
python-meh-0.25.2-1.el7.noarch
avahi-glib-0.6.31-17.el7.ppc64le
rhino-1.7R5-1.el7.noarch
perl-Pod-Checker-1.60-2.el7.noarch
rarian-0.8.1-11.el7.ppc64le
gmp-6.0.0-15.el7.ppc64le
createrepo-0.9.9-28.el7.noarch
python-gobject-base-3.22.0-1.el7.ppc64le
telepathy-haze-0.8.0-1.el7.ppc64le
perl-Version-Requirements-0.101022-244.el7.noarch
tog-pegasus-2.14.1-5.el7.ppc64le
lua-5.1.4-15.el7.ppc64le
libburn-1.2.8-4.el7.ppc64le
openssl-1.0.2k-8.el7.ppc64le
dleyna-server-0.5.0-1.el7.ppc64le
perl-IO-HTML-1.00-2.el7.noarch
libsemanage-python-2.5-8.el7.ppc64le
libidn-1.28-4.el7.ppc64le
nss-devel-3.28.4-8.el7.ppc64le
net-snmp-libs-5.7.2-28.el7.ppc64le
paps-libs-0.6.8-28.el7.1.ppc64le
perl-DBIx-Simple-1.35-7.el7.noarch
lzo-minilzo-2.06-8.el7.ppc64le
libref_array-0.1.5-27.el7.ppc64le
libX11-1.6.5-1.el7.ppc64le
xdg-utils-1.1.0-0.17.20120809git.el7.noarch
harfbuzz-devel-1.3.2-1.el7.ppc64le
perl-CGI-3.63-4.el7.noarch
libini_config-1.3.0-27.el7.ppc64le
xmlrpc-c-1.32.5-1905.svn2451.el7.ppc64le
libXfixes-5.0.3-1.el7.ppc64le
glibmm24-2.50.0-1.el7.ppc64le
webkitgtk4-devel-2.14.7-2.el7.ppc64le
perl-Devel-Symdump-2.10-2.el7.noarch
libpipeline-1.2.3-3.el7.ppc64le
mpfr-3.1.1-4.el7.ppc64le
libXrandr-1.5.1-2.el7.ppc64le
cyrus-sasl-gssapi-2.1.26-21.el7.ppc64le
gtk2-devel-2.24.31-1.el7.ppc64le
perl-URI-1.60-9.el7.noarch
kpartx-0.4.9-111.el7.ppc64le
file-libs-5.11-33.el7.ppc64le
libXext-devel-1.3.3-3.el7.ppc64le
libSM-devel-1.2.2-2.el7.ppc64le
qt-devel-4.8.5-13.el7.ppc64le
perl-HTTP-Date-6.02-8.el7.noarch
dracut-033-502.el7.ppc64le
libtool-ltdl-2.4.2-22.el7_3.ppc64le
libcanberra-0.30-5.el7.ppc64le
python-enum34-1.0.4-1.el7.noarch
libxkbfile-devel-1.0.9-3.el7.ppc64le
perl-HTTP-Cookies-6.01-5.el7.noarch
polkit-0.112-12.el7_3.ppc64le
libtheora-1.1.1-8.el7.ppc64le
libXpm-3.5.12-1.el7.ppc64le
libevent-2.0.21-4.el7.ppc64le
ibus-gtk2-1.5.3-13.el7.ppc64le
kdelibs-common-4.14.8-6.el7_3.ppc64le
systemd-sysv-219-42.el7.ppc64le
diffutils-3.3-4.el7.ppc64le
libXv-1.0.11-1.el7.ppc64le
pam-1.1.8-18.el7.ppc64le
imsettings-gsettings-1.6.3-9.el7.ppc64le
perl-YAML-Tiny-1.51-6.el7.noarch
GConf2-3.2.6-8.el7.ppc64le
libtasn1-4.10-1.el7.ppc64le
libxkbfile-1.0.9-3.el7.ppc64le
gettext-libs-0.19.8.1-2.el7.ppc64le
kdelibs-ktexteditor-4.14.8-6.el7_3.ppc64le
perl-Env-1.04-2.el7.noarch
libpciaccess-0.13.4-3.el7_3.ppc64le
nss-softokn-3.28.3-6.el7.ppc64le
pango-1.40.4-1.el7.ppc64le
telepathy-logger-0.8.0-5.el7.ppc64le
nepomuk-core-4.10.5-5.el7.ppc64le
perl-Net-HTTP-6.06-2.el7.noarch
samba-common-4.6.2-8.el7.noarch
libsigc++20-2.10.0-1.el7.ppc64le
cogl-1.22.2-1.el7.ppc64le
pcre-devel-8.32-17.el7.ppc64le
kdenetwork-kopete-libs-4.10.5-8.el7_0.ppc64le
icoutils-0.31.3-1.el7_3.ppc64le
pyparted-3.9-13.el7.ppc64le
apr-util-1.5.2-6.el7.ppc64le
giflib-4.1.6-9.el7.ppc64le
expat-devel-2.1.0-10.el7_3.ppc64le
kdesdk-okteta-4.10.5-6.el7.ppc64le
papi-5.2.0-23.el7.ppc64le
abrt-python-2.1.11-48.el7.centos.ppc64le
lzo-2.06-8.el7.ppc64le
java-1.8.0-openjdk-1.8.0.131-11.b12.el7.ppc64le
libffi-devel-3.0.13-18.el7.ppc64le
kwin-libs-4.11.19-8.el7.ppc64le
xorg-x11-font-utils-7.5-20.el7.ppc64le
iscsi-initiator-utils-iscsiuio-6.2.0.874-4.el7.ppc64le
file-5.11-33.el7.ppc64le
libXft-devel-2.3.2-2.el7.ppc64le
libipa_hbac-1.15.2-50.el7.ppc64le
kwin-gles-libs-4.11.19-8.el7.ppc64le
libsamplerate-0.1.8-6.el7.ppc64le
cronie-1.4.11-17.el7.ppc64le
xml-common-0.6.3-39.el7.noarch
ghostscript-9.07-28.el7.ppc64le
libpinyin-data-0.9.93-4.el7.ppc64le
kde-runtime-libs-4.10.5-8.el7.ppc64le
ipset-6.29-1.el7.ppc64le
plymouth-0.8.9-0.28.20140113.el7.centos.ppc64le
taglib-1.8-7.20130218git.el7.ppc64le
at-spi2-core-2.22.0-1.el7.ppc64le
xfsprogs-4.5.0-12.el7.ppc64le
kdepim-runtime-4.10.5-3.el7.ppc64le
libusbmuxd-1.0.10-5.el7.ppc64le
libstoragemgmt-python-1.4.0-3.el7.noarch
libseccomp-2.3.1-3.el7.ppc64le
gstreamer1-plugins-good-1.10.4-2.el7.ppc64le
pyusb-1.0.0-0.11.b1.el7.noarch
nepomuk-core-devel-4.10.5-5.el7.ppc64le
libofa-0.9.3-24.el7.ppc64le
device-mapper-event-1.02.140-8.el7.ppc64le
librtas-2.0.1-1.el7.ppc64le
libXcomposite-devel-0.4.4-4.1.el7.ppc64le
audit-libs-python-2.7.6-3.el7.ppc64le
okular-libs-4.10.5-4.el7.ppc64le
gdisk-0.8.6-5.el7.ppc64le
libibumad-13-7.el7.ppc64le
libsndfile-1.0.25-10.el7.ppc64le
libXxf86misc-1.0.3-7.1.el7.ppc64le
pyparsing-1.5.6-9.el7.noarch
kdesdk-kmtrace-libs-4.10.5-6.el7.ppc64le
attr-2.4.46-12.el7.ppc64le
rpcbind-0.2.0-42.el7.ppc64le
slang-2.2.4-11.el7.ppc64le
gtk2-2.24.31-1.el7.ppc64le
libssh2-1.4.3-10.el7_2.1.ppc64le
kdesdk-kompare-4.10.5-6.el7.ppc64le
openssl-devel-1.0.2k-8.el7.ppc64le
bluez-5.44-2.el7.ppc64le
boost-thread-1.53.0-27.el7.ppc64le
clutter-gtk-1.8.2-1.el7.ppc64le
soundtouch-1.4.0-9.el7.ppc64le
ibus-table-1.5.0-5.el7.noarch
setools-libs-3.3.8-1.1.el7.ppc64le
ppp-2.4.5-33.el7.ppc64le
libvpd-2.2.5-1.el7.ppc64le
clutter-gst3-3.0.22-1.el7.ppc64le
boost-test-1.53.0-27.el7.ppc64le
libgphoto2-2.5.2-5.el7.ppc64le
libcurl-7.29.0-42.el7.ppc64le
libmtp-1.1.6-5.el7.ppc64le
unzip-6.0-16.el7.ppc64le
vte291-0.46.2-1.el7.ppc64le
boost-random-1.53.0-27.el7.ppc64le
hplip-libs-3.15.9-3.el7.ppc64le
openldap-2.4.44-5.el7.ppc64le
rsync-3.0.9-18.el7.ppc64le
psmisc-22.20-15.el7.ppc64le
compat-cheese314-3.14.2-1.el7.ppc64le
dosfstools-3.0.20-9.el7.ppc64le
sane-backends-drivers-cameras-1.0.24-9.el7.ppc64le
kde-filesystem-4-47.el7.ppc64le
cryptsetup-1.7.4-3.el7.ppc64le
boost-program-options-1.53.0-27.el7.ppc64le
libgnomekbd-3.22.0.1-1.el7.ppc64le
libsrtp-1.4.4-10.20101004cvs.el7.ppc64le
speech-dispatcher-python-0.7.1-15.el7.ppc64le
raptor2-2.0.9-3.el7.ppc64le
grub2-tools-2.02-0.64.el7.centos.ppc64le
libiodbc-3.52.7-7.el7.ppc64le
gtk-vnc2-0.7.0-2.el7.ppc64le
libdv-1.0.0-17.el7.ppc64le
libXxf86dga-1.1.4-2.1.el7.ppc64le
python-deltarpm-3.6-3.el7.ppc64le
ibacm-13-7.el7.ppc64le
opus-1.0.2-6.el7.ppc64le
system-config-printer-libs-1.4.1-19.el7.noarch
libthai-0.1.14-9.el7.ppc64le
tracker-1.10.5-4.el7.ppc64le
shared-desktop-ontologies-devel-0.11.0-2.el7.noarch
qt-4.8.5-13.el7.ppc64le
pcre2-10.23-2.el7.ppc64le
gtkspell3-3.0.3-4.el7.ppc64le
libevdev-1.5.6-1.el7.ppc64le
totem-3.22.1-1.el7.ppc64le
virtuoso-opensource-6.1.6-6.el7.ppc64le
strigi-libs-0.7.7-12.20120626.el7.ppc64le
boost-wave-1.53.0-27.el7.ppc64le
libXmu-devel-1.1.2-2.el7.ppc64le
iproute-3.10.0-87.el7.ppc64le
firewalld-0.4.4.4-6.el7.noarch
color-filesystem-1-13.el7.noarch
automoc-1.0-0.20.rc3.el7.ppc64le
perl-Pod-Perldoc-3.20-4.el7.noarch
poppler-utils-0.26.5-16.el7.ppc64le
boost-1.53.0-27.el7.ppc64le
pcp-libs-3.11.8-7.el7.ppc64le
pykickstart-1.99.66.12-1.el7.noarch
openldap-devel-2.4.44-5.el7.ppc64le
perl-Encode-2.51-7.el7.ppc64le
python-gobject-3.22.0-1.el7.ppc64le
krb5-workstation-1.15.1-8.el7.ppc64le
libwacom-0.24-1.el7.ppc64le
isomd5sum-1.0.10-5.el7.ppc64le
abrt-addon-vmcore-2.1.11-48.el7.centos.ppc64le
perl-constant-1.27-2.el7.noarch
compat-libcogl12-1.14.0-3.el7.ppc64le
python-libipa_hbac-1.15.2-50.el7.ppc64le
gdm-3.22.3-11.el7.ppc64le
gstreamer1-devel-1.10.4-2.el7.ppc64le
abrt-retrace-client-2.1.11-48.el7.centos.ppc64le
perl-Exporter-5.68-3.el7.noarch
libXpm-devel-3.5.12-1.el7.ppc64le
python2-pyasn1-modules-0.1.9-7.el7.noarch
gnome-shell-extension-alternate-tab-3.22.2-10.el7.noarch
ttmkfdir-3.0.9-42.el7.ppc64le
samba-libs-4.6.2-8.el7.ppc64le
perl-File-Temp-0.23.01-3.el7.noarch
brltty-4.5-15.el7.ppc64le
sos-3.4-6.el7.centos.noarch
gnome-shell-extension-window-list-3.22.2-10.el7.noarch
clucene-core-2.3.3.4-11.el7.ppc64le
osinfo-db-20170423-2.el7.noarch
perl-macros-5.16.3-292.el7.ppc64le
python-brlapi-0.6.0-15.el7.ppc64le
libselinux-devel-2.5-11.el7.ppc64le
quota-nls-4.01-14.el7.noarch
elfutils-libs-0.168-8.el7.ppc64le
oddjob-mkhomedir-0.31.5-4.el7.ppc64le
perl-5.16.3-292.el7.ppc64le
opal-3.10.10-4.el7.ppc64le
gstreamer-tools-0.10.36-7.el7.ppc64le
libvirt-daemon-driver-storage-scsi-3.2.0-14.el7.ppc64le
satyr-0.13-14.el7.ppc64le
polkit-docs-0.112-12.el7_3.noarch
perl-Compress-Raw-Zlib-2.061-4.el7.ppc64le
compat-libcogl-pango12-1.14.0-3.el7.ppc64le
alsa-lib-devel-1.1.3-3.el7.ppc64le
libvirt-daemon-driver-storage-mpath-3.2.0-14.el7.ppc64le
NetworkManager-libnm-1.8.0-9.el7.ppc64le
tcsh-6.18.01-15.el7.ppc64le
perl-XML-Dumper-0.81-17.el7.noarch
libpfm-devel-4.7.0-4.el7.ppc64le
unixODBC-devel-2.3.1-11.el7.ppc64le
rcs-5.9.0-5.el7.ppc64le
ltrace-0.7.91-14.el7.ppc64le
ed-1.9-4.el7.ppc64le
wqy-zenhei-fonts-0.9.46-11.el7.noarch
lohit-bengali-fonts-2.5.3-4.el7.noarch
paratype-pt-sans-fonts-20101909-3.el7.noarch
paktype-naskh-basic-fonts-4.1-3.el7.noarch
lklug-fonts-0.6-10.20090803cvs.el7.noarch
lohit-kannada-fonts-2.5.3-3.el7.noarch
cjkuni-uming-fonts-0.2.20080216.1-53.el7.noarch
vlgothic-fonts-20130607-2.el7.noarch
lohit-telugu-fonts-2.5.3-3.el7.noarch
gnu-free-serif-fonts-20120503-8.el7.noarch
jomolhari-fonts-0.003-17.el7.noarch
scl-utils-20130529-17.el7_1.ppc64le
diffstat-1.57-4.el7.ppc64le
xorg-x11-drivers-7.7-6.el7.ppc64le
setserial-2.17-33.el7.ppc64le
vinagre-3.22.0-8.el7.ppc64le
man-pages-overrides-7.4.3-1.el7.ppc64le
gedit-3.22.0-3.el7.ppc64le
iwl5150-firmware-8.24.2.2-56.el7.noarch
gnome-contacts-3.22.1-1.el7.ppc64le
words-3.0-22.el7.noarch
setroubleshoot-3.2.28-3.el7.ppc64le
iwl7265-firmware-22.0.7.0-56.el7.noarch
gnome-system-monitor-3.22.2-2.el7.ppc64le
man-pages-3.53-5.el7.noarch
librsvg2-devel-2.40.16-1.el7.ppc64le
gpg-pubkey-f4a80eb5-53a7ff4b
system-config-printer-udev-1.4.1-19.el7.ppc64le
gnome-calculator-3.22.3-1.el7.ppc64le
libgcc-4.8.5-16.el7_4.1.ppc64le
gvfs-afp-1.30.4-3.el7.ppc64le
cpp-4.8.5-16.el7_4.1.ppc64le
latencytop-0.5-13.el7.ppc64le
gcc-c++-4.8.5-16.el7_4.1.ppc64le
gtk3-immodule-xim-3.22.10-4.el7.ppc64le
mousetweaks-3.12.0-1.el7.ppc64le
qt3-MySQL-3.3.8b-51.el7.ppc64le
xvattr-1.3-27.el7.ppc64le
yum-langpacks-0.4.2-7.el7.noarch
rpm-build-4.11.3-25.el7.ppc64le
virt-install-1.4.1-7.el7.noarch
samba-client-4.6.2-8.el7.ppc64le
qt-odbc-4.8.5-13.el7.ppc64le
NetworkManager-tui-1.8.0-9.el7.ppc64le
avahi-0.6.31-17.el7.ppc64le
httpd-manual-2.4.6-67.el7.centos.noarch
PackageKit-gstreamer-plugin-1.1.5-1.el7.centos.ppc64le
tuned-2.8.0-5.el7.noarch
qemu-guest-agent-2.8.0-2.el7.ppc64le
smartmontools-6.2-8.el7.ppc64le
openssh-server-7.4p1-11.el7.ppc64le
dracut-config-rescue-033-502.el7.ppc64le
openlmi-providers-devel-0.5.0-4.el7.ppc64le
oprofile-0.9.9-22.el7.ppc64le
perl-homedir-1.008010-4.el7.noarch
libgudev1-devel-219-42.el7.ppc64le
sudo-1.8.19p2-10.el7.ppc64le
libacl-devel-2.2.51-12.el7.ppc64le
perl-XML-Twig-3.44-2.el7.noarch
crash-trace-command-2.0-12.el7.ppc64le
crash-gcore-command-1.3.1-0.el7.ppc64le
libgnome-keyring-devel-3.12.0-1.el7.ppc64le
binutils-devel-2.25.1-31.base.el7.ppc64le
libcap-ng-devel-0.7.5-4.el7.ppc64le
bash-completion-2.1-6.el7.noarch
dstat-0.7.2-12.el7.noarch
wget-1.14-15.el7.ppc64le
gpg-pubkey-352c64e5-52ae6884
certmonger-0.78.4-3.el7.ppc64le
libatomic-static-4.8.5-16.el7.ppc64le
libicu-devel-50.1.2-15.el7.ppc64le
caribou-0.4.21-1.el7.ppc64le
grub2-common-2.02-0.64.el7.centos.noarch
plymouth-graphics-libs-0.8.9-0.28.20140113.el7.centos.ppc64le
kernel-3.10.0-693.el7.ppc64le
perl-Perl-OSType-1.003-3.el7.noarch
libvirt-daemon-3.2.0-14.el7.ppc64le
ledmon-0.80-2.el7.ppc64le
gupnp-av-0.12.10-1.el7.ppc64le
cups-1.6.3-29.el7.ppc64le
mozilla-filesystem-1.9-11.el7.ppc64le
libqmi-utils-1.16.0-1.el7.ppc64le
anaconda-core-21.48.22.121-1.el7.centos.ppc64le
perl-JSON-PP-2.27202-2.el7.noarch
libvirt-client-3.2.0-14.el7.ppc64le
numactl-devel-2.0.9-6.el7_2.ppc64le
cups-client-1.6.3-29.el7.ppc64le
mutter-3.22.3-11.el7.ppc64le
ipa-common-4.5.0-20.el7.centos.noarch
glibc-devel-2.17-196.el7.ppc64le
firefox-52.2.0-2.el7.centos.ppc64le
perl-Params-Check-0.38-2.el7.noarch
virt-manager-common-1.4.1-7.el7.noarch
indent-2.2.11-13.el7.ppc64le
python-linux-procfs-0.4.9-3.el7.noarch
gnome-session-3.22.3-4.el7.ppc64le
adwaita-cursor-theme-3.22.0-1.el7.noarch
perl-Archive-Extract-0.68-3.el7.noarch
gnome-initial-setup-3.22.1-4.el7.ppc64le
perl-IO-Compress-2.061-2.el7.noarch
geoclue2-2.4.5-1.el7.ppc64le
khmeros-base-fonts-5.0-17.el7.noarch
python-tempita-0.5.1-6.el7.noarch
gnome-online-accounts-3.22.5-1.el7.ppc64le
nhn-nanum-fonts-common-3.020-9.el7.noarch
gobject-introspection-devel-1.50.0-1.el7.ppc64le
rhythmbox-3.4.1-1.el7.ppc64le
libavc1394-0.5.3-14.el7.ppc64le
telepathy-gabble-0.18.1-4.el7.ppc64le
stix-fonts-1.1.0-5.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
gnome-packagekit-installer-3.22.1-2.el7.ppc64le
mesa-filesystem-17.0.1-6.20170307.el7.ppc64le
konkretcmpi-python-0.9.1-5.el7.ppc64le
libsane-hpaio-3.15.9-3.el7.ppc64le
copy-jdk-configs-2.2-3.el7.noarch
usb_modeswitch-2.4.0-5.el7.ppc64le
nhn-nanum-gothic-fonts-3.020-9.el7.noarch
pytz-2016.10-2.el7.noarch
librsvg2-tools-2.40.16-1.el7.ppc64le
bash-4.2.46-28.el7.ppc64le
libreport-plugin-bugzilla-2.1.11-38.el7.centos.ppc64le
kde-workspace-devel-4.11.19-8.el7.ppc64le
libdb-devel-5.3.21-20.el7.ppc64le
fxload-2002_04_11-16.el7.ppc64le
google-crosextra-caladea-fonts-1.002-0.4.20130214.el7.noarch
python-pycparser-2.14-1.el7.noarch
libtimezonemap-0.4.4-1.el7.ppc64le
libcom_err-1.42.9-10.el7.ppc64le
frei0r-plugins-1.3-13.el7.ppc64le
ibus-m17n-1.3.4-13.el7.ppc64le
libcdio-paranoia-10.2+0.90-11.el7.ppc64le
netcf-libs-0.2.8-4.el7.ppc64le
lohit-punjabi-fonts-2.5.3-2.el7.noarch
cmpi-bindings-pywbem-0.9.5-6.el7.ppc64le
at-spi2-core-devel-2.22.0-1.el7.ppc64le
xz-libs-5.2.2-1.el7.ppc64le
libasyncns-0.8-7.el7.ppc64le
libcanberra-devel-0.30-5.el7.ppc64le
coreutils-8.22-18.el7.ppc64le
sssd-ad-1.15.2-50.el7.ppc64le
doxygen-1.8.5-3.el7.ppc64le
httpd-tools-2.4.6-67.el7.centos.ppc64le
libspectre-0.2.8-1.el7.ppc64le
cyrus-sasl-lib-2.1.26-21.el7.ppc64le
rubygem-bigdecimal-1.2.0-30.el7.ppc64le
icedtea-web-1.6.2-4.el7.ppc64le
libarchive-3.1.2-10.el7_2.ppc64le
python-pyblock-0.53-6.el7.ppc64le
byacc-1.9.20130304-3.el7.ppc64le
wodim-1.1.11-23.el7.ppc64le
xorg-x11-drv-qxl-0.1.5-3.el7.ppc64le
elfutils-libelf-0.168-8.el7.ppc64le
rubygem-thor-0.19.1-1.el7.noarch
file-roller-nautilus-3.22.3-1.el7.ppc64le
pkgconfig-0.27.1-4.el7.ppc64le
setroubleshoot-server-3.2.28-3.el7.ppc64le
iwl2030-firmware-18.168.6.1-56.el7.noarch
mailx-12.5-16.el7.ppc64le
xorg-x11-drv-fbdev-0.4.3-25.el7.ppc64le
libtevent-0.9.31-1.el7.ppc64le
policycoreutils-2.5-17.1.el7.ppc64le
java-1.7.0-openjdk-devel-1.7.0.141-2.6.10.5.el7.ppc64le
gsettings-desktop-schemas-3.22.0-1.el7.ppc64le
yum-3.4.3-154.el7.centos.noarch
iwl6000g2a-firmware-17.168.5.3-56.el7.noarch
perl-B-Lint-1.17-3.el7.noarch
gstreamer-plugins-bad-free-0.10.23-23.el7.ppc64le
libvorbis-1.3.3-8.el7.ppc64le
rarian-compat-0.8.1-11.el7.ppc64le
abrt-desktop-2.1.11-48.el7.centos.ppc64le
desktop-file-utils-0.23-1.el7.ppc64le
libiptcdata-1.0.4-11.el7.ppc64le
gpg-pubkey-f533f4fa-56585169
perl-DB_File-1.830-6.el7.ppc64le
compat-poppler022-qt-0.22.5-4.el7.ppc64le
libldb-1.1.29-1.el7.ppc64le
http-parser-2.7.1-1.el7.ppc64le
NetworkManager-libreswan-gnome-1.2.4-2.el7.ppc64le
centos-logos-70.0.6-3.el7.centos.noarch
libX11-common-1.6.5-1.el7.noarch
libstdc++-4.8.5-16.el7_4.1.ppc64le
perl-FCGI-0.74-8.el7.ppc64le
pango-devel-1.40.4-1.el7.ppc64le
libbasicobjects-0.1.1-27.el7.ppc64le
gtk2-immodule-xim-2.24.31-1.el7.ppc64le
libgnome-keyring-3.12.0-1.el7.ppc64le
libXrender-0.9.10-1.el7.ppc64le
libitm-devel-4.8.5-16.el7_4.1.ppc64le
perl-Business-ISBN-2.06-2.el7.noarch
freeglut-2.8.1-3.el7.ppc64le
device-mapper-1.02.140-8.el7.ppc64le
xdg-desktop-portal-gtk-0.5-1.el7.ppc64le
libudisks2-2.1.2-6.el7.ppc64le
pulseaudio-libs-10.0-3.el7.ppc64le
perl-HTTP-Daemon-6.01-5.el7.noarch
xorg-x11-xauth-1.0.9-1.el7.ppc64le
nettle-2.7.1-8.el7.ppc64le
polkit-pkla-compat-0.1-4.el7.ppc64le
startup-notification-devel-0.12-8.el7.ppc64le
genisoimage-1.1.11-23.el7.ppc64le
dbus-x11-1.6.12-17.el7.ppc64le
perl-Text-Soundex-3.04-4.el7.ppc64le
xdg-user-dirs-0.15-4.el7.ppc64le
jansson-2.10-1.el7.ppc64le
NetworkManager-glib-1.8.0-9.el7.ppc64le
rpm-sign-4.11.3-25.el7.ppc64le
gettext-0.19.8.1-2.el7.ppc64le
cairo-1.14.8-2.el7.ppc64le
perl-IO-Socket-SSL-1.94-6.el7.noarch
kdepimlibs-kxmlrpcclient-4.10.5-4.el7.ppc64le
libplist-1.12-3.el7.ppc64le
libwbclient-4.6.2-8.el7.ppc64le
cgdcbxd-1.0.2-7.el7.ppc64le
glib2-devel-2.50.3-3.el7.ppc64le
gdk-pixbuf2-devel-2.36.5-1.el7.ppc64le
theora-tools-1.1.1-8.el7.ppc64le
libkipi-4.10.5-3.el7.ppc64le
libmng-1.0.10-14.el7.ppc64le
abrt-addon-kerneloops-2.1.11-48.el7.centos.ppc64le
grub2-2.02-0.64.el7.centos.ppc64le
xz-devel-5.2.2-1.el7.ppc64le
xorg-x11-xkb-utils-7.7-12.el7.ppc64le
libverto-tevent-0.2.5-4.el7.ppc64le
libkdcraw-devel-4.10.5-4.el7.ppc64le
bzip2-1.0.6-13.el7.ppc64le
iputils-20160308-10.el7.ppc64le
cifs-utils-6.2-10.el7.ppc64le
libpinyin-0.9.93-4.el7.ppc64le
libao-1.1.0-8.el7.ppc64le
gdbm-devel-1.10-8.el7.ppc64le
kdepim-libs-4.10.5-6.el7.ppc64le
libxshmfence-1.2-1.el7.ppc64le
libstoragemgmt-1.4.0-3.el7.ppc64le
psacct-6.6.1-13.el7.ppc64le
pyliblzma-0.5.3-11.el7.ppc64le
libXcursor-devel-1.1.14-8.el7.ppc64le
hesiod-3.2.1-3.el7.ppc64le
okular-devel-4.10.5-4.el7.ppc64le
gsm-1.0.13-11.el7.ppc64le
telepathy-mission-control-5.16.3-3.el7.ppc64le
rng-tools-5-11.el7.ppc64le
python-chardet-2.2.1-1.el7_1.noarch
libcanberra-gtk3-0.30-5.el7.ppc64le
krb5-devel-1.15.1-8.el7.ppc64le
kdesdk-kompare-devel-4.10.5-6.el7.ppc64le
unixODBC-2.3.1-11.el7.ppc64le
dbus-devel-1.6.12-17.el7.ppc64le
kpatch-0.4.0-1.el7.noarch
graphite2-1.3.6-1.el7_2.ppc64le
nautilus-extensions-3.22.3-3.el7.ppc64le
libdb-utils-5.3.21-20.el7.ppc64le
sane-backends-libs-1.0.24-9.el7.ppc64le
zip-3.0-11.el7.ppc64le
mdadm-4.0-5.el7.ppc64le
memstomp-0.1.4-11.el7.ppc64le
libconfig-1.4.9-5.el7.ppc64le
clutter-gst2-2.0.18-1.el7.ppc64le
postgresql-libs-9.2.21-1.el7.ppc64le
gsound-1.0.2-2.el7.ppc64le
ilmbase-1.0.3-7.el7.ppc64le
udisks2-2.1.2-6.el7.ppc64le
perl-core-5.16.3-292.el7.ppc64le
pcsc-lite-libs-1.8.8-6.el7.ppc64le
gvnc-0.7.0-2.el7.ppc64le
qemu-img-1.5.3-141.el7.ppc64le
libappstream-glib-0.6.10-1.el7.ppc64le
sg3_utils-libs-1.37-12.el7.ppc64le
librdmacm-13-7.el7.ppc64le
adcli-0.8.1-3.el7.ppc64le
libnfnetlink-1.0.1-4.el7.ppc64le
colord-gtk-0.1.25-4.el7.ppc64le
libuser-python-0.60-7.el7_1.ppc64le
libfprint-0.5.0-4.el7.ppc64le
OpenEXR-libs-1.7.1-7.el7.ppc64le
attica-devel-0.4.2-1.el7.ppc64le
papi-devel-5.2.0-23.el7.ppc64le
m17n-lib-1.6.4-14.el7.ppc64le
qimageblitz-0.0.6-7.el7.ppc64le
python-urlgrabber-3.10-8.el7.noarch
pcp-selinux-3.11.8-7.el7.ppc64le
perl-Text-ParseWords-3.29-4.el7.noarch
apr-util-devel-1.5.2-6.el7.ppc64le
readline-devel-6.2-10.el7.ppc64le
python-kitchen-1.1.1-5.el7.noarch
gnome-abrt-0.3.4-8.el7.ppc64le
check-devel-0.9.9-5.el7.ppc64le
pulseaudio-gdm-hooks-10.0-3.el7.ppc64le
perl-Scalar-List-Utils-1.27-248.el7.ppc64le
abrt-addon-ccpp-2.1.11-48.el7.centos.ppc64le
gnome-icon-theme-extras-3.12.0-1.el7.noarch
python-slip-0.4.0-2.el7.noarch
brlapi-0.6.0-15.el7.ppc64le
qpdf-libs-5.0.1-3.el7.ppc64le
yelp-xsl-3.20.1-1.el7.noarch
perl-Storable-2.45-3.el7.ppc64le
libosinfo-1.0.0-1.el7.ppc64le
libcap-devel-2.22-9.el7.ppc64le
libepoxy-devel-1.3.1-1.el7.ppc64le
festival-1.96-28.el7.ppc64le
libusbx-1.0.20-1.el7.ppc64le
libvirt-daemon-driver-storage-disk-3.2.0-14.el7.ppc64le
perl-Test-Harness-3.28-3.el7.noarch
polkit-devel-0.112-12.el7_3.ppc64le
perl-Crypt-SSLeay-0.64-5.el7.ppc64le
libverto-devel-0.2.5-4.el7.ppc64le
caribou-gtk2-module-0.4.21-1.el7.ppc64le
vim-filesystem-7.4.160-2.el7.ppc64le
procps-ng-3.3.10-16.el7.ppc64le
NetworkManager-libreswan-1.2.4-2.el7.ppc64le
perl-Module-Metadata-1.000018-2.el7.noarch
pixman-devel-0.34.0-1.el7.ppc64le
patchutils-0.3.3-4.el7.ppc64le
filesystem-3.2-21.el7.ppc64le
cups-filesystem-1.6.3-29.el7.noarch
gettext-devel-0.19.8.1-2.el7.ppc64le
usbredir-0.7.1-2.el7.ppc64le
neon-0.30.0-3.el7.ppc64le
perl-LWP-MediaTypes-6.02-2.el7.noarch
python-qrcode-core-5.0.1-1.el7.noarch
hyphen-en-2.8.6-5.el7.noarch
gnu-free-fonts-common-20120503-8.el7.noarch
gtkmm30-3.22.0-1.el7.ppc64le
initial-setup-gui-0.3.9.40-1.el7.centos.ppc64le
libhugetlbfs-2.16-12.el7.ppc64le
subversion-libs-1.7.14-10.el7.ppc64le
perl-Encode-Locale-1.03-5.el7.noarch
python-inotify-0.9.4-4.el7.noarch
nano-2.3.1-10.el7.ppc64le
mobile-broadband-provider-info-1.20170310-1.el7.noarch
adwaita-gtk2-theme-3.22.2-1.el7.ppc64le
ipa-client-4.5.0-20.el7.centos.ppc64le
perl-IPC-Cmd-0.80-4.el7.noarch
libsoup-2.56.0-3.el7.ppc64le
perl-Term-UI-0.36-2.el7.noarch
python-setuptools-0.9.8-7.el7.noarch
dejavu-sans-mono-fonts-2.33-6.el7.noarch
bind-license-9.9.4-50.el7.noarch
webkitgtk4-jsc-2.14.7-2.el7.ppc64le
firewall-config-0.4.4.4-6.el7.noarch
perl-CPAN-1.9800-292.el7.noarch
gupnp-1.0.1-1.el7.ppc64le
boost-graph-1.53.0-27.el7.ppc64le
python-perf-3.10.0-693.el7.ppc64le
overpass-fonts-2.1-1.el7.noarch
thai-scalable-fonts-common-0.5.0-7.el7.noarch
webkitgtk4-jsc-devel-2.14.7-2.el7.ppc64le
pulseaudio-module-x11-10.0-3.el7.ppc64le
marisa-0.2.4-4.el7.ppc64le
gnutls-c++-3.3.26-9.el7.ppc64le
ca-certificates-2017.2.14-71.el7.noarch
python-idna-2.4-1.el7.noarch
strace-4.12-4.el7.ppc64le
nss-softokn-freebl-3.28.3-6.el7.ppc64le
vino-3.22.0-3.el7.ppc64le
libXaw-devel-1.0.13-4.el7.ppc64le
libreport-centos-2.1.11-38.el7.centos.ppc64le
alsa-utils-1.1.3-2.el7.ppc64le
libnl3-cli-3.2.28-4.el7.ppc64le
python-iniparse-0.4-9.el7.noarch
traceroute-2.0.22-2.el7.ppc64le
libselinux-2.5-11.el7.ppc64le
keybinder3-0.3.0-1.el7.ppc64le
kdepim-devel-4.10.5-6.el7.ppc64le
pakchois-0.4-10.el7.ppc64le
cryptsetup-python-1.7.4-3.el7.ppc64le
libjpeg-turbo-devel-1.2.90-5.el7.ppc64le
python-jwcrypto-0.2.1-1.el7.noarch
lohit-malayalam-fonts-2.5.3-2.el7.noarch
libpng-1.5.13-7.el7_2.ppc64le
freerdp-plugins-1.0.2-10.el7.ppc64le
ibus-chewing-1.4.4-14.el7.ppc64le
libfastjson-0.99.4-2.el7.ppc64le
libsss_sudo-1.15.2-50.el7.ppc64le
redhat-menus-12.0.2-8.el7.noarch
bind-libs-9.9.4-50.el7.ppc64le
gnu-free-sans-fonts-20120503-8.el7.noarch
libuuid-2.23.2-43.el7.ppc64le
festival-freebsoft-utils-0.10-7.el7.noarch
unique3-devel-3.0.2-8.el7.ppc64le
compat-poppler022-0.22.5-4.el7.ppc64le
sssd-proxy-1.15.2-50.el7.ppc64le
python-2.7.5-58.el7.ppc64le
libwvstreams-4.6.1-11.el7.ppc64le
lrzsz-0.12.20-36.el7.ppc64le
sqlite-3.7.17-8.el7.ppc64le
xorg-x11-server-common-1.19.3-11.el7.ppc64le
sushi-3.21.91-1.el7.ppc64le
rubygem-psych-2.0.0-30.el7.ppc64le
gnupg2-2.0.22-4.el7.ppc64le
libmount-2.23.2-43.el7.ppc64le
nss-3.28.4-8.el7.ppc64le
iwl3160-firmware-22.0.7.0-56.el7.noarch
libnl3-3.2.28-4.el7.ppc64le
xorg-x11-drv-ati-7.7.1-3.20160928git3fc839ff.el7.ppc64le
evolution-mapi-3.22.6-1.el7.ppc64le
libservicelog-1.1.17-2.el7.ppc64le
perl-PAR-Dist-0.49-2.el7.noarch
dbus-glib-0.100-7.el7.ppc64le
docbook-style-xsl-1.78.1-3.el7.noarch
iwl100-firmware-39.31.5.1-56.el7.noarch
libxslt-1.1.28-5.el7.ppc64le
junit-4.11-8.el7.noarch
gnome-session-xsession-3.22.3-4.el7.ppc64le
selinux-policy-3.13.1-166.el7.noarch
PackageKit-1.1.5-1.el7.centos.ppc64le
zlib-devel-1.2.7-17.el7.ppc64le
perl-libxml-perl-0.08-19.el7.noarch
iwl4965-firmware-228.61.2.24-56.el7.noarch
p11-kit-0.23.5-3.el7.ppc64le
spice-gtk3-0.33-6.el7.ppc64le
pygobject3-devel-3.22.0-1.el7.ppc64le
systemtap-runtime-3.1-3.el7.ppc64le
nss-softokn-freebl-devel-3.28.3-6.el7.ppc64le
libgee-0.18.1-1.el7.ppc64le
perl-PlRPC-0.2020-14.el7.noarch
python34-libs-3.4.5-4.el7.ppc64le
json-c-0.11-4.el7_0.ppc64le
plymouth-plugin-two-step-0.8.9-0.28.20140113.el7.centos.ppc64le
gnome-font-viewer-3.22.0-1.el7.ppc64le
sssd-client-1.15.2-50.el7.ppc64le
libXext-1.3.3-3.el7.ppc64le
nspr-devel-4.13.1-1.0.el7_3.ppc64le
perl-Algorithm-Diff-1.1902-17.el7.noarch
libgomp-4.8.5-16.el7_4.1.ppc64le
tcp_wrappers-libs-7.6-77.el7.ppc64le
libgdata-devel-0.17.8-1.el7.ppc64le
gnome-screenshot-3.22.0-1.el7.ppc64le
mtdev-1.1.5-5.el7.ppc64le
mesa-libEGL-17.0.1-6.20170307.el7.ppc64le
libpng-devel-1.5.13-7.el7_2.ppc64le
perl-Digest-SHA1-2.13-9.el7.ppc64le
libdhash-0.4.3-27.el7.ppc64le
phonon-devel-4.6.0-10.el7.ppc64le
qt3-ODBC-3.3.8b-51.el7.ppc64le
systemd-219-42.el7.ppc64le
libXinerama-1.1.3-2.1.el7.ppc64le
gdb-7.6.1-100.el7.ppc64le
perl-File-Listing-6.04-7.el7.noarch
jasper-libs-1.900.1-31.el7.ppc64le
ibus-setup-1.5.3-13.el7.noarch
spice-vdagent-0.14.0-14.el7.ppc64le
PackageKit-glib-1.1.5-1.el7.centos.ppc64le
libXmu-1.1.2-2.el7.ppc64le
atkmm-2.24.2-1.el7.ppc64le
perl-Sys-Syslog-0.33-3.el7.ppc64le
libXdmcp-1.1.2-6.el7.ppc64le
kdelibs-devel-4.14.8-6.el7_3.ppc64le
targetcli-2.1.fb46-1.el7.noarch
libcgroup-0.41-13.el7.ppc64le
qt-x11-4.8.5-13.el7.ppc64le
libxcb-devel-1.12-1.el7.ppc64le
perl-HTML-Format-2.10-7.el7.noarch
libsss_idmap-1.15.2-50.el7.ppc64le
kactivities-4.10.5-3.el7.ppc64le
httpd-devel-2.4.6-67.el7.centos.ppc64le
abrt-2.1.11-48.el7.centos.ppc64le
java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.ppc64le
apr-devel-1.4.8-3.el7.ppc64le
cdparanoia-10.2-17.el7.ppc64le
libpcap-1.5.3-9.el7.ppc64le
libkworkspace-4.11.19-8.el7.ppc64le
dbus-glib-devel-0.100-7.el7.ppc64le
crontabs-1.11-6.20121102git.el7.noarch
libXi-devel-1.7.9-1.el7.ppc64le
gnome-menus-3.13.3-3.el7.ppc64le
libieee1284-devel-0.2.11-15.el7.ppc64le
kmod-libs-20-15.el7.ppc64le
kde-runtime-4.10.5-8.el7.ppc64le
mod_ssl-2.4.6-67.el7.centos.ppc64le
cyrus-sasl-2.1.26-21.el7.ppc64le
libXScrnSaver-1.2.2-6.1.el7.ppc64le
python-augeas-0.5.0-2.el7.noarch
LibRaw-0.14.8-5.el7.20120830git98d925.ppc64le
hyphen-2.8.6-5.el7.ppc64le
kdenetwork-krdc-libs-4.10.5-8.el7_0.ppc64le
opal-prd-5.5.0-1.el7.ppc64le
rdma-core-13-7.el7.ppc64le
pulseaudio-10.0-3.el7.ppc64le
python-sssdconfig-1.15.2-50.el7.noarch
libisofs-1.2.8-4.el7.ppc64le
libverto-0.2.5-4.el7.ppc64le
kdesdk-kmtrace-devel-4.10.5-6.el7.ppc64le
systemd-devel-219-42.el7.ppc64le
mesa-dri-drivers-17.0.1-6.20170307.el7.ppc64le
clutter-1.26.0-1.el7.ppc64le
fipscheck-1.4.1-6.el7.ppc64le
dwz-0.11-3.el7.ppc64le
boost-regex-1.53.0-27.el7.ppc64le
libXaw-1.0.13-4.el7.ppc64le
systemd-python-219-42.el7.ppc64le
zenity-3.22.0-1.el7.ppc64le
boost-atomic-1.53.0-27.el7.ppc64le
rpm-libs-4.11.3-25.el7.ppc64le
GeoIP-1.5.0-11.el7.ppc64le
libksane-devel-4.10.5-4.el7.ppc64le
rubygem-bundler-1.7.8-3.el7.noarch
git-1.8.3.1-11.el7.ppc64le
brasero-libs-3.12.1-2.el7.ppc64le
c-ares-1.10.0-3.el7.ppc64le
libnfsidmap-0.25-17.el7.ppc64le
cdparanoia-libs-10.2-17.el7.ppc64le
tk-8.5.13-6.el7.ppc64le
libhugetlbfs-devel-2.16-12.el7.ppc64le
NetworkManager-wifi-1.8.0-9.el7.ppc64le
libcanberra-gtk2-0.30-5.el7.ppc64le
hostname-3.13-3.el7.ppc64le
redland-1.0.16-6.el7.ppc64le
libdaemon-0.14-7.el7.ppc64le
brasero-3.12.1-2.el7.ppc64le
cups-devel-1.6.3-29.el7.ppc64le
qca2-2.0.3-7.el7.ppc64le
pangomm-2.40.1-1.el7.ppc64le
libnetfilter_conntrack-1.0.6-1.el7_3.ppc64le
sip-devel-4.14.6-4.el7.ppc64le
perl-parent-0.225-244.el7.noarch
libkkc-0.3.1-9.el7.ppc64le
crypto-utils-2.4.1-42.el7.ppc64le
lvm2-2.02.171-8.el7.ppc64le
poppler-glib-0.26.5-16.el7.ppc64le
crash-7.1.9-2.el7.ppc64le
libbluray-0.2.3-5.el7.ppc64le
perl-Filter-1.49-3.el7.ppc64le
control-center-3.22.2-5.el7.ppc64le
c-ares-devel-1.10.0-3.el7.ppc64le
sysstat-10.1.5-12.el7.ppc64le
mesa-libGL-devel-17.0.1-6.20170307.el7.ppc64le
python-pwquality-1.2.3-4.el7.ppc64le
liblouis-python-2.5.2-10.el7.noarch
perl-PathTools-3.40-5.el7.ppc64le
gnome-shell-extension-apps-menu-3.22.2-10.el7.noarch
hunspell-devel-1.3.2-15.el7.ppc64le
policycoreutils-python-2.5-17.1.el7.ppc64le
libwnck3-3.20.1-1.el7.ppc64le
gsettings-desktop-schemas-devel-3.22.0-1.el7.ppc64le
lsof-4.87-4.el7.ppc64le
perl-Getopt-Long-2.40-2.el7.noarch
nfs-utils-1.3.0-0.48.el7.ppc64le
mtr-0.85-7.el7.ppc64le
autofs-5.0.7-69.el7.ppc64le
cairo-devel-1.14.8-2.el7.ppc64le
xorg-x11-xbitmaps-1.1.1-6.el7.noarch
libreport-2.1.11-38.el7.centos.ppc64le
perl-XML-Parser-2.41-10.el7.ppc64le
libvirt-daemon-driver-storage-3.2.0-14.el7.ppc64le
python2-caribou-0.4.21-1.el7.noarch
fontpackages-filesystem-1.44-8.el7.noarch
perl-Test-Pod-1.48-3.el7.noarch
libuuid-devel-2.23.2-43.el7.ppc64le
perl-Package-Constants-0.02-292.el7.noarch
gnutls-3.3.26-9.el7.ppc64le
libreport-cli-2.1.11-38.el7.centos.ppc64le
gettext-common-devel-0.19.8.1-2.el7.noarch
cups-filters-1.0.35-22.el7.ppc64le
xkeyboard-config-2.20-1.el7.noarch
bison-3.0.4-1.el7.ppc64le
compat-libcolord1-1.0.4-1.el7.ppc64le
perl-Digest-MD5-2.52-3.el7.ppc64le
gnutls-dane-3.3.26-9.el7.ppc64le
libusbx-devel-1.0.20-1.el7.ppc64le
initial-setup-0.3.9.40-1.el7.centos.ppc64le
libchamplain-gtk-0.12.15-1.el7.ppc64le
libreport-filesystem-2.1.11-38.el7.centos.ppc64le
m17n-contrib-1.1.14-3.el7.noarch
newt-python-0.52.15-4.el7.ppc64le
perl-Locale-Maketext-1.23-3.el7.noarch
libvirt-daemon-driver-nodedev-3.2.0-14.el7.ppc64le
perl-ExtUtils-Install-1.58-292.el7.noarch
libvirt-3.2.0-14.el7.ppc64le
gnome-themes-standard-3.22.2-1.el7.ppc64le
gl-manpages-1.1-7.20130122.el7.noarch
lohit-gujarati-fonts-2.5.3-2.el7.noarch
python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
perl-local-lib-1.008010-4.el7.noarch
rest-0.8.0-1.el7.ppc64le
perl-Module-Build-0.40.05-2.el7.noarch
ibus-kkc-1.5.18-7.el7.ppc64le
webkitgtk4-plugin-process-gtk2-2.14.7-2.el7.ppc64le
basesystem-10.0-7.el7.centos.noarch
madan-fonts-2.000-11.el7.noarch
python-beaker-1.5.4-10.el7.noarch
boost-locale-1.53.0-27.el7.ppc64le
dleyna-core-0.5.0-1.el7.ppc64le
liberation-sans-fonts-1.07.2-15.el7.noarch
tk-devel-8.5.13-6.el7.ppc64le
gnome-packagekit-updater-3.22.1-2.el7.ppc64le
cim-schema-2.33.0-6.el7.noarch
lohit-assamese-fonts-2.5.3-2.el7.noarch
tagsoup-1.2.1-8.el7.noarch
libshout-2.2.2-11.el7.ppc64le
ntpdate-4.2.6p5-25.el7.centos.2.ppc64le
libproxy-0.4.11-10.el7.ppc64le
gvfs-gphoto2-1.30.4-3.el7.ppc64le
gspell-1.2.3-1.el7.ppc64le
sil-nuosu-fonts-2.1.1-5.el7.noarch
python-ntplib-0.3.2-1.el7.noarch
bc-1.06.95-13.el7.ppc64le
libvirt-daemon-driver-lxc-3.2.0-14.el7.ppc64le
libreport-anaconda-2.1.11-38.el7.centos.ppc64le
kdepimlibs-devel-4.10.5-4.el7.ppc64le
unique3-3.0.2-8.el7.ppc64le
freetype-2.4.11-15.el7.ppc64le
lohit-marathi-fonts-2.5.3-2.el7.noarch
python2-cryptography-1.7.2-1.el7.ppc64le
libss-1.42.9-10.el7.ppc64le
kernel-tools-libs-3.10.0-693.el7.ppc64le
libsysfs-2.1.0-16.el7.ppc64le
ibus-hangul-1.4.2-10.el7.ppc64le
freerdp-1.0.2-10.el7.ppc64le
popt-1.13-16.el7.ppc64le
open-sans-fonts-1.10-1.el7.noarch
bind-libs-lite-9.9.4-50.el7.ppc64le
lksctp-tools-1.0.17-2.el7.ppc64le
sssd-common-pac-1.15.2-50.el7.ppc64le
libtiff-4.0.3-27.el7_3.ppc64le
gnome-desktop3-devel-3.22.2-2.el7.ppc64le
cdrdao-1.2.3-20.el7.ppc64le
expat-2.1.0-10.el7_3.ppc64le
latrace-0.5.11-6.1.el7.ppc64le
perl-Net-SSLeay-1.55-6.el7.ppc64le
cups-libs-1.6.3-29.el7.ppc64le
dmraid-events-1.0.0.rc16-28.el7.ppc64le
rubygem-io-console-0.4.2-30.el7.ppc64le
gutenprint-cups-5.2.9-18.el7.ppc64le
xorg-x11-server-Xorg-1.19.3-11.el7.ppc64le
libtalloc-2.1.9-1.el7.ppc64le
iwl6000g2b-firmware-17.168.5.2-56.el7.noarch
nss-sysinit-3.28.4-8.el7.ppc64le
glib2-2.50.3-3.el7.ppc64le
rpm-python-4.11.3-25.el7.ppc64le
ustr-1.0.4-16.el7.ppc64le
gucharmap-3.18.2-1.el7.ppc64le
xorg-x11-drv-dummy-0.3.7-1.el7.ppc64le
libogg-1.3.0-7.el7.ppc64le
iwl6000-firmware-9.221.4.1-56.el7.noarch
docbook-dtds-1.0-60.el7.noarch
xorg-x11-proto-devel-7.7-20.el7.noarch
pygpgme-0.3-9.el7.ppc64le
openssh-7.4p1-11.el7.ppc64le
cheese-3.22.1-1.el7.ppc64le
jline-1.0-8.el7.noarch
libcap-2.22-9.el7.ppc64le
ivtv-firmware-20080701-26.el7.noarch
perl-Pod-LaTeX-0.61-2.el7.noarch
enchant-1.6.0-8.el7.ppc64le
python2-ipalib-4.5.0-20.el7.centos.noarch
tog-pegasus-libs-2.14.1-5.el7.ppc64le
firstboot-19.12-1.el7.ppc64le
gupnp-dlna-0.10.5-1.el7.ppc64le
which-2.20-7.el7.ppc64le
epel-release-7-9.noarch
perl-Net-Daemon-0.48-5.el7.noarch
libcroco-0.6.11-1.el7.ppc64le
liboauth-devel-0.9.7-4.el7.ppc64le
libhangul-0.1.0-8.el7.ppc64le
eog-3.20.5-2.el7.ppc64le
plymouth-theme-charge-0.8.9-0.28.20140113.el7.centos.ppc64le
libcollection-0.6.2-27.el7.ppc64le
libgfortran-4.8.5-16.el7_4.1.ppc64le
perl-Locale-Codes-3.26-2.el7.noarch
pygobject2-2.28.6-11.el7.ppc64le
libXdamage-1.1.4-4.1.el7.ppc64le
libestr-0.1.9-2.el7.ppc64le
PackageKit-gtk3-module-1.1.5-1.el7.centos.ppc64le
libgweather-devel-3.20.4-1.el7.ppc64le
xz-5.2.2-1.el7.ppc64le
perl-WWW-RobotRules-6.02-5.el7.noarch
libICE-devel-1.0.9-9.el7.ppc64le
libXft-2.3.2-2.el7.ppc64le
cryptsetup-libs-1.7.4-3.el7.ppc64le
alsa-plugins-pulseaudio-1.1.1-1.el7.ppc64le
glx-utils-8.2.0-3.el7.ppc64le
speex-1.2-0.19.rc1.el7.ppc64le
perl-HTTP-Negotiate-6.01-5.el7.noarch
libtirpc-0.2.4-0.10.el7.ppc64le
pulseaudio-libs-glib2-10.0-3.el7.ppc64le
mesa-libgbm-17.0.1-6.20170307.el7.ppc64le
pulseaudio-libs-devel-10.0-3.el7.ppc64le
imsettings-1.6.3-9.el7.ppc64le
hunspell-en-US-0.20121024-6.el7.noarch
perl-IO-Socket-IP-0.21-4.el7.noarch
nss-util-devel-3.28.4-3.el7.ppc64le
libXxf86vm-1.1.4-1.el7.ppc64le
hwdata-0.252-8.6.el7.ppc64le
kernel-tools-3.10.0-693.el7.ppc64le
nepomuk-core-libs-4.10.5-5.el7.ppc64le
exiv2-libs-0.23-6.el7.ppc64le
perl-libwww-perl-6.05-2.el7.noarch
p11-kit-devel-0.23.5-3.el7.ppc64le
librsvg2-2.40.16-1.el7.ppc64le
libsmbclient-4.6.2-8.el7.ppc64le
abrt-console-notification-2.1.11-48.el7.centos.ppc64le
kdesdk-okteta-libs-4.10.5-6.el7.ppc64le
boost-chrono-1.53.0-27.el7.ppc64le
iw-4.3-1.el7.ppc64le
libcom_err-devel-1.42.9-10.el7.ppc64le
akonadi-1.9.2-4.el7.ppc64le
accountsservice-libs-0.6.45-2.el7.ppc64le
wvdial-1.61-9.el7.ppc64le
libkexiv2-devel-4.10.5-3.el7.ppc64le
libmpc-1.0.1-3.el7.ppc64le
lm_sensors-devel-3.4.0-4.20160601gitf9185e5.el7.ppc64le
meanwhile-1.1.0-12.el7.ppc64le
libXt-devel-1.1.5-3.el7.ppc64le
plymouth-scripts-0.8.9-0.28.20140113.el7.centos.ppc64le
mod_fcgid-2.3.9-4.el7.ppc64le
kdepim-runtime-libs-4.10.5-3.el7.ppc64le
mesa-libglapi-17.0.1-6.20170307.el7.ppc64le
hunspell-en-GB-0.20121024-6.el7.noarch
sip-4.14.6-4.el7.ppc64le
cairomm-1.12.0-1.el7.ppc64le
abrt-addon-xorg-2.1.11-48.el7.centos.ppc64le
ModemManager-1.6.0-2.el7.ppc64le
kdenetwork-krdc-devel-4.10.5-8.el7_0.ppc64le
libieee1284-0.2.11-15.el7.ppc64le
highlight-3.13-3.el7.ppc64le
pyOpenSSL-0.13.1-3.el7.ppc64le
gtk-update-icon-cache-3.22.10-4.el7.ppc64le
NetworkManager-1.8.0-9.el7.ppc64le
crda-3.13_2016.02.08-1.el7.ppc64le
kdesdk-kompare-libs-4.10.5-6.el7.ppc64le
newt-0.52.15-4.el7.ppc64le
xcb-util-0.4.0-2.el7.ppc64le
automake-1.13.4-3.el7.noarch
libgweather-3.20.4-1.el7.ppc64le
lockdev-1.0.4-0.13.20111007git.el7.ppc64le
man-db-2.6.3-9.el7.ppc64le
gd-2.0.35-26.el7.ppc64le
exempi-2.2.0-8.el7.ppc64le
curl-7.29.0-42.el7.ppc64le
snappy-1.1.0-3.el7.ppc64le
libreport-gtk-2.1.11-38.el7.centos.ppc64le
unbound-libs-1.4.20-34.el7.ppc64le
tcpdump-4.9.0-5.el7.ppc64le
sane-backends-drivers-scanners-1.0.24-9.el7.ppc64le
libedit-3.0-12.20121213cvs.el7.ppc64le
liboauth-0.9.7-4.el7.ppc64le
libmpcdec-1.2.6-12.el7.ppc64le
libnm-gtk-1.8.0-3.el7.ppc64le
grub2-tools-extra-2.02-0.64.el7.centos.ppc64le
libdmx-1.1.3-3.el7.ppc64le
wavpack-4.60.1-9.el7.ppc64le
rasqal-0.9.30-4.el7.ppc64le
autogen-libopts-5.18-5.el7.ppc64le
gnome-bluetooth-libs-3.20.1-1.el7.ppc64le
qt-settings-19-23.5.el7.centos.noarch
libxslt-devel-1.1.28-5.el7.ppc64le
grilo-plugins-0.3.4-1.el7.ppc64le
SDL-1.2.15-14.el7.ppc64le
sip-macros-4.14.6-4.el7.ppc64le
iptables-1.4.21-18.0.1.el7.centos.ppc64le
gstreamer-plugins-good-0.10.31-13.el7.ppc64le
qjson-0.8.1-4.el7.ppc64le
perl-Test-Pod-Coverage-1.08-21.el7.noarch
pcp-conf-3.11.8-7.el7.ppc64le
perl-podlators-2.5.1-3.el7.noarch
libcurl-devel-7.29.0-42.el7.ppc64le
graphite2-devel-1.3.6-1.el7_2.ppc64le
pygtk2-2.24.0-9.el7.ppc64le
kexec-tools-2.0.14-17.el7.ppc64le
iptables-devel-1.4.21-18.0.1.el7.centos.ppc64le
gnome-shell-3.22.3-17.el7.ppc64le
perl-Carp-1.26-244.el7.noarch
liblouis-2.5.2-10.el7.ppc64le
dvd+rw-tools-7.1-15.el7.ppc64le
ptlib-2.10.10-6.el7.ppc64le
samba-common-libs-4.6.2-8.el7.ppc64le
gvfs-devel-1.30.4-3.el7.ppc64le
gnome-shell-extension-launch-new-instance-3.22.2-10.el7.noarch
perl-libs-5.16.3-292.el7.ppc64le
libselinux-utils-2.5-11.el7.ppc64le
libsepol-devel-2.5-6.el7.ppc64le
festival-lib-1.96-28.el7.ppc64le
oddjob-0.31.5-4.el7.ppc64le
latencytop-tui-0.5-13.el7.ppc64le
libvirt-daemon-driver-storage-core-3.2.0-14.el7.ppc64le
perl-Data-Dumper-2.145-3.el7.ppc64le
libreport-python-2.1.11-38.el7.centos.ppc64le
libical-devel-1.0.1-1.el7.ppc64le
libmx-1.4.7-10.el7.ppc64le
cups-pk-helper-0.2.6-2.el7.ppc64le
=== TEST BEGIN ===
Install prefix    /var/tmp/patchew-tester-tmp-r4540qbd/src/install
BIOS directory    /var/tmp/patchew-tester-tmp-r4540qbd/src/install/share/qemu
firmware path     /var/tmp/patchew-tester-tmp-r4540qbd/src/install/share/qemu-firmware
binary directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/bin
library directory /var/tmp/patchew-tester-tmp-r4540qbd/src/install/lib
module directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/lib/qemu
libexec directory /var/tmp/patchew-tester-tmp-r4540qbd/src/install/libexec
include directory /var/tmp/patchew-tester-tmp-r4540qbd/src/install/include
config directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/etc
local state directory   /var/tmp/patchew-tester-tmp-r4540qbd/src/install/var
Manual directory  /var/tmp/patchew-tester-tmp-r4540qbd/src/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /var/tmp/patchew-tester-tmp-r4540qbd/src
GIT binary        git
GIT submodules    ui/keycodemapdb dtc capstone
C compiler        cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1   -I$(SRC_PATH)/dtc/libfdt -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -DNCURSES_WIDECHAR   -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -Wno-missing-braces -I/usr/include/p11-kit-1       -I/usr/include/libpng15   -I$(SRC_PATH)/capstone/include
LDFLAGS           -Wl,--warn-common -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          ppc64
host big endian   no
target list       aarch64-softmmu alpha-softmmu arm-softmmu cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu microblazeel-softmmu microblaze-softmmu mips64el-softmmu mips64-softmmu mipsel-softmmu mips-softmmu moxie-softmmu nios2-softmmu or1k-softmmu ppc64-softmmu ppcemb-softmmu ppc-softmmu s390x-softmmu sh4eb-softmmu sh4-softmmu sparc64-softmmu sparc-softmmu tricore-softmmu unicore32-softmmu x86_64-softmmu xtensaeb-softmmu xtensa-softmmu aarch64_be-linux-user aarch64-linux-user alpha-linux-user armeb-linux-user arm-linux-user cris-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblazeel-linux-user microblaze-linux-user mips64el-linux-user mips64-linux-user mipsel-linux-user mips-linux-user mipsn32el-linux-user mipsn32-linux-user nios2-linux-user or1k-linux-user ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user ppc-linux-user s390x-linux-user sh4eb-linux-user sh4-linux-user sparc32plus-linux-user sparc64-linux-user sparc-linux-user tilegx-linux-user x86_64-linux-user
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (1.2.15)
GTK support       yes (3.22.10)
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    yes
GNUTLS rnd        yes
libgcrypt         no
libgcrypt kdf     no
nettle            yes (2.7.1)
nettle kdf        yes
libtasn1          yes
curses support    yes
virgl support     no
curl support      yes
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    yes
Multipath support no
VNC support       yes
VNC SASL support  yes
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               no
vde support       no
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
HVF support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
malloc trim support yes
RDMA support      yes
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support yes
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            yes
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   no
TPM emulator      yes
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     yes
NUMA host support yes
libxml2           yes
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
capstone          git

WARNING: Use of SDL 1.2 is deprecated and will be removed in
WARNING: future releases. Please switch to using SDL 2.0
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak.tmp
  GEN     i386-softmmu/config-devices.mak.tmp
  GEN     lm32-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak.tmp
  GEN     m68k-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak.tmp
  GEN     microblaze-softmmu/config-devices.mak.tmp
  GEN     mips64-softmmu/config-devices.mak.tmp
  GEN     mipsel-softmmu/config-devices.mak.tmp
  GEN     mips64el-softmmu/config-devices.mak.tmp
  GEN     mips-softmmu/config-devices.mak.tmp
  GEN     moxie-softmmu/config-devices.mak.tmp
  GEN     nios2-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak.tmp
  GEN     ppc64-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak.tmp
  GEN     or1k-softmmu/config-devices.mak.tmp
  GEN     lm32-softmmu/config-devices.mak
  GEN     s390x-softmmu/config-devices.mak.tmp
  GEN     m68k-softmmu/config-devices.mak
  GEN     sh4-softmmu/config-devices.mak.tmp
  GEN     sh4eb-softmmu/config-devices.mak.tmp
  GEN     sparc64-softmmu/config-devices.mak.tmp
  GEN     microblaze-softmmu/config-devices.mak
  GEN     unicore32-softmmu/config-devices.mak.tmp
  GEN     tricore-softmmu/config-devices.mak.tmp
  GEN     sparc-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak
  GEN     aarch64-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak.tmp
  GEN     moxie-softmmu/config-devices.mak
  GEN     or1k-softmmu/config-devices.mak
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     i386-softmmu/config-devices.mak
  GEN     alpha-softmmu/config-devices.mak
  GEN     s390x-softmmu/config-devices.mak
  GEN     aarch64_be-linux-user/config-devices.mak.tmp
  GEN     xtensa-softmmu/config-devices.mak.tmp
  GEN     arm-linux-user/config-devices.mak.tmp
  GEN     aarch64-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak.tmp
  GEN     i386-linux-user/config-devices.mak.tmp
  GEN     hppa-linux-user/config-devices.mak.tmp
  GEN     m68k-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak.tmp
  GEN     armeb-linux-user/config-devices.mak.tmp
  GEN     microblazeel-linux-user/config-devices.mak.tmp
  GEN     mips64-linux-user/config-devices.mak.tmp
  GEN     mips64el-linux-user/config-devices.mak.tmp
  GEN     mipsel-linux-user/config-devices.mak.tmp
  GEN     nios2-linux-user/config-devices.mak.tmp
  GEN     ppc64abi32-linux-user/config-devices.mak.tmp
  GEN     ppc64le-linux-user/config-devices.mak.tmp
  GEN     ppc64-linux-user/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak
  GEN     s390x-linux-user/config-devices.mak.tmp
  GEN     alpha-linux-user/config-devices.mak.tmp
  GEN     ppc-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak.tmp
  GEN     sparc32plus-linux-user/config-devices.mak.tmp
  GEN     sparc-linux-user/config-devices.mak.tmp
  GEN     unicore32-softmmu/config-devices.mak
  GEN     sparc64-linux-user/config-devices.mak.tmp
  GEN     x86_64-linux-user/config-devices.mak.tmp
  GEN     mips-linux-user/config-devices.mak.tmp
  GEN     config-host.h
  GEN     qmp-commands.h
  GEN     mipsn32el-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak.tmp
  GEN     or1k-linux-user/config-devices.mak.tmp
  GEN     tricore-softmmu/config-devices.mak
  GEN     ppc64le-linux-user/config-devices.mak
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     sh4-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak
  GEN     s390x-linux-user/config-devices.mak
  GEN     i386-linux-user/config-devices.mak
  GEN     sparc-softmmu/config-devices.mak
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qmp-introspect.h
  GEN     qapi-event.c
  GEN     nios2-softmmu/config-devices.mak
  GEN     mipsn32-linux-user/config-devices.mak.tmp
  GEN     ppc64-softmmu/config-devices.mak
  GEN     qapi-event.h
  GIT     ui/keycodemapdb dtc capstone
  GEN     mips64el-softmmu/config-devices.mak
  GEN     mipsel-softmmu/config-devices.mak
  GEN     mips64-softmmu/config-devices.mak
  GEN     sh4eb-softmmu/config-devices.mak
  GEN     x86_64-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak
  GEN     qemu-options.def
  GEN     alpha-linux-user/config-devices.mak
  GEN     armeb-linux-user/config-devices.mak
  GEN     arm-linux-user/config-devices.mak
  GEN     mips64-linux-user/config-devices.mak
  GEN     mipsel-linux-user/config-devices.mak
  GEN     xtensa-softmmu/config-devices.mak
  GEN     aarch64-linux-user/config-devices.mak
  GEN     ppc-softmmu/config-devices.mak
  GEN     hppa-linux-user/config-devices.mak
  GEN     mips-linux-user/config-devices.mak
  GEN     qapi-visit.c
  GEN     ppc64abi32-linux-user/config-devices.mak
  GEN     ppc64-linux-user/config-devices.mak
  GEN     sh4-softmmu/config-devices.mak
  GEN     ppc-linux-user/config-devices.mak
  GEN     sh4-linux-user/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak
  GEN     sparc32plus-linux-user/config-devices.mak
  GEN     sh4eb-linux-user/config-devices.mak
  GEN     sparc-linux-user/config-devices.mak
  GEN     microblazeel-linux-user/config-devices.mak
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     sparc64-linux-user/config-devices.mak
  GEN     x86_64-linux-user/config-devices.mak
  GEN     tilegx-linux-user/config-devices.mak
  GEN     trace/generated-helpers-wrappers.h
  GEN     mips-softmmu/config-devices.mak
  GEN     mipsn32el-linux-user/config-devices.mak
  GEN     trace/generated-helpers.h
  GEN     m68k-linux-user/config-devices.mak
  GEN     aarch64_be-linux-user/config-devices.mak
  GEN     sparc64-softmmu/config-devices.mak
  GEN     trace/generated-helpers.c
  GEN     mipsn32-linux-user/config-devices.mak
  GEN     nios2-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak
  GEN     cris-linux-user/config-devices.mak
  GEN     module_block.h
  GEN     or1k-linux-user/config-devices.mak
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sparc64/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/pci-host/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     scsi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sparc64/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/pci-host/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
  GEN     ui/input-keymap-atset1-to-qcode.c
  GEN     ui/input-keymap-linux-to-qcode.c
  GEN     ui/input-keymap-qcode-to-atset1.c
  GEN     ui/input-keymap-qcode-to-atset2.c
  GEN     ui/input-keymap-qcode-to-atset3.c
  GEN     ui/input-keymap-qcode-to-linux.c
  GEN     ui/input-keymap-qcode-to-qnum.c
  GEN     ui/input-keymap-qnum-to-qcode.c
  GEN     ui/input-keymap-usb-to-qcode.c
  GEN     ui/input-keymap-win32-to-qcode.c
  GEN     ui/input-keymap-x11-to-qcode.c
  GEN     ui/input-keymap-qcode-to-sun.c
  GEN     ui/input-keymap-xorgkbd-to-qcode.c
  GEN     ui/input-keymap-xorgxquartz-to-qcode.c
  GEN     ui/input-keymap-xorgxwin-to-qcode.c
  GEN     ui/input-keymap-xorgevdev-to-qcode.c
  CC      cs.o
  CC      utils.o
  CC      SStream.o
  CC      MCInstrDesc.o
  CC      MCRegisterInfo.o
  CC      arch/ARM/ARMDisassembler.o
  CC      arch/ARM/ARMInstPrinter.o
  CC      arch/ARM/ARMMapping.o
  CC      arch/ARM/ARMModule.o
  CC      arch/AArch64/AArch64Disassembler.o
  CC      arch/AArch64/AArch64BaseInfo.o
  CC      arch/AArch64/AArch64InstPrinter.o
  CC      arch/AArch64/AArch64Mapping.o
  CC      arch/AArch64/AArch64Module.o
  CC      arch/Mips/MipsDisassembler.o
  CC      arch/Mips/MipsInstPrinter.o
  CC      arch/Mips/MipsModule.o
  CC      arch/Mips/MipsMapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dumptrees.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/trees.S
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/testutils.c
  CC      arch/PowerPC/PPCDisassembler.o
  CC      arch/PowerPC/PPCInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/value-labels.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/asm_tree_dump.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/truncated_property.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/check_path.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/overlay_bad_fixup.c
  CC      arch/PowerPC/PPCMapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/overlay.c
  CC      arch/PowerPC/PPCModule.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/subnode_iterate.c
  CC      arch/Sparc/SparcDisassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/property_iterate.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/integer-expressions.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/utilfdt_test.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/path_offset_aliases.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/add_subnode_with_nops.c
  CC      arch/Sparc/SparcInstPrinter.o
  CC      arch/Sparc/SparcMapping.o
  CC      arch/Sparc/SparcModule.o
  CC      arch/SystemZ/SystemZDisassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dtbs_equal_unordered.c
  CC      arch/SystemZ/SystemZInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dtb_reverse.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/dtbs_equal_ordered.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/extra-terminating-null.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/incbin.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/boot-cpuid.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/phandle_format.c
  CC      arch/SystemZ/SystemZMapping.o
  CC      arch/SystemZ/SystemZModule.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/path-references.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/references.c
  CC      arch/SystemZ/SystemZMCTargetDesc.o
  CC      arch/X86/X86DisassemblerDecoder.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/string_escapes.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/propname_escapes.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/appendprop2.c
  CC      arch/X86/X86Disassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/appendprop1.c
  CC      arch/X86/X86IntelInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/del_node.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/del_property.c
  CC      arch/X86/X86ATTInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/setprop.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/set_name.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/rw_tree1.c
  CC      arch/X86/X86Mapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/nopulate.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/open_pack.c
  CC      arch/X86/X86Module.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/mangle-layout.c
  CC      arch/XCore/XCoreDisassembler.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/move_and_save.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/sw_tree1.c
  CC      arch/XCore/XCoreInstPrinter.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/nop_node.c
  CC      arch/XCore/XCoreMapping.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/nop_property.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/setprop_inplace.c
  CC      arch/XCore/XCoreModule.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/stringlist.c
  CC      MCInst.o
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/addr_size_cells.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/notfound.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/sized_cells.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/char_literal.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_offset_by_compatible.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_alias.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_check_compatible.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_offset_by_phandle.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/parent_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/supernode_atdepth_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_path.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/node_offset_by_prop_value.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_phandle.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/subnode_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/find_property.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/root_node.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_mem_rsv.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/getprop.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/get_name.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_addresses.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_overlay.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/tests/path_offset.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_empty_tree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_strerror.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_rw.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_sw.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_wip.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt_ro.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/util.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtoverlay.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/libfdt/fdt.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtput.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtget.c
	 BISON dtc-parser.tab.c
	 LEX convert-dtsv0-lexer.lex.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/srcpos.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fdtdump.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/treesource.c
	 LEX dtc-lexer.lex.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/livetree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/fstree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/flattree.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/data.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/dtc.c
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/checks.c
	 DEP convert-dtsv0-lexer.lex.c
	 DEP dtc-parser.tab.c
	 DEP dtc-lexer.lex.c
	CHK version_gen.h
	UPD version_gen.h
	 DEP /var/tmp/patchew-tester-tmp-r4540qbd/src/dtc/util.c
	 CC libfdt/fdt.o
	 CC libfdt/fdt_ro.o
	 CC libfdt/fdt_wip.o
	 CC libfdt/fdt_sw.o
	 CC libfdt/fdt_rw.o
	 CC libfdt/fdt_strerror.o
	 CC libfdt/fdt_empty_tree.o
	 CC libfdt/fdt_addresses.o
	 CC libfdt/fdt_overlay.o
	 AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
  AR      libcapstone.a
ar: creating /var/tmp/patchew-tester-tmp-r4540qbd/src/build/capstone/libcapstone.a
  CC      tests/qemu-iotests/socket_scm_helper.o
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      qapi-types.o
  CC      qmp-introspect.o
  CC      qapi-visit.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi-event.o
  CC      qapi/qmp-registry.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qstring.o
  CC      qobject/qnum.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qobject.o
  CC      qobject/qjson.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/thread-pool.o
  CC      util/async.o
  CC      util/oslib-posix.o
  CC      util/aio-posix.o
  CC      util/mmap-alloc.o
  CC      util/main-loop.o
  CC      util/compatfd.o
  CC      util/iohandler.o
  CC      util/qemu-openpty.o
  CC      util/qemu-timer.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/event_notifier-posix.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/envlist.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/hbitmap.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/qemu-progress.o
  CC      util/crc32c.o
  CC      util/getauxval.o
  CC      util/throttle.o
  CC      util/uuid.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/timed-average.o
  CC      util/buffer.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/pagesize.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sparc64/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/pci-host/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      target/arm/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/mips/trace.o
  CC      target/i386/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/get-vm-name.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/iothread.o
  CC      stubs/is-daemonized.o
  CC      stubs/iothread-lock.o
  CC      stubs/linux-aio.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/sysbus.o
  CC      stubs/tpm.o
  CC      stubs/slirp.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-bitmap.o
  CC      block/qcow2-cache.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/qed-table.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/linux-aio.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      scsi/pr-manager.o
  CC      scsi/pr-manager-helper.o
  CC      block/curl.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-gnutls.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/net-listener.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      qemu-io.o
  CC      fsdev/virtfs-proxy-helper.o
  CC      fsdev/9p-marshal.o
  CC      fsdev/9p-iov-marshal.o
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      bootdevice.o
  CC      blockdev-nbd.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      os-posix.o
  CC      device-hotplug.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      hmp.o
  CC      qmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-file.o
  CC      backends/hostmem-ram.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      chardev/msmouse.o
  CC      block/stream.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      disas/alpha.o
  CC      disas/arm.o
  CXX     disas/arm-a64.o
  CC      disas/cris.o
  CC      disas/hppa.o
  CC      disas/i386.o
  CC      disas/m68k.o
  CC      disas/mips.o
  CC      disas/microblaze.o
  CC      disas/nios2.o
  CC      disas/moxie.o
  CC      disas/ppc.o
  CC      disas/s390.o
  CC      disas/sh4.o
  CC      disas/sparc.o
  CC      disas/lm32.o
  CC      disas/xtensa.o
  CXX     disas/libvixl/vixl/utils.o
  CXX     disas/libvixl/vixl/compiler-intrinsics.o
  CXX     disas/libvixl/vixl/a64/instructions-a64.o
  CXX     disas/libvixl/vixl/a64/disasm-a64.o
  CXX     disas/libvixl/vixl/a64/decoder-a64.o
  CC      fsdev/qemu-fsdev.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      hw/9pfs/9p.o
  CC      hw/9pfs/9p-local.o
  CC      hw/9pfs/9p-util.o
  CC      hw/9pfs/9p-xattr.o
  CC      hw/9pfs/9p-xattr-user.o
  CC      hw/9pfs/9p-posix-acl.o
  CC      hw/9pfs/coth.o
  CC      hw/9pfs/cofs.o
  CC      hw/9pfs/codir.o
  CC      hw/9pfs/coxattr.o
  CC      hw/9pfs/cofile.o
  CC      hw/9pfs/9p-synth.o
  CC      hw/9pfs/9p-handle.o
  CC      hw/9pfs/9p-proxy.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/cs4231.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/milkymist-ac97.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/fdc.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/escc.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/xilinx_uartlite.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/etraxfs_ser.o
  CC      hw/char/debugcon.o
  CC      hw/char/grlib_apbuart.o
  CC      hw/char/imx_serial.o
  CC      hw/char/lm32_juart.o
  CC      hw/char/lm32_uart.o
  CC      hw/char/milkymist-uart.o
  CC      hw/char/sclpconsole.o
  CC      hw/char/sclpconsole-lm.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/qdev-fw.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/empty_slot.o
  CC      hw/core/stream.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/loader-fit.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/g364fb.o
  CC      hw/display/jazz_led.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vga-isa-mm.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/milkymist-vgafb.o
  CC      hw/display/tc6393xb.o
  CC      hw/dma/puv3_dma.o
  CC      hw/dma/rc4030.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i82374.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xilinx_axidma.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/dma/sparc32_dma.o
  CC      hw/dma/etraxfs_dma.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/puv3_gpio.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/mpc8xxx.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/cmd646.o
  CC      hw/ide/macio.o
  CC      hw/ide/mmio.o
  CC      hw/ide/via.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/ide/ahci-allwinner.o
  CC      hw/ide/sii3112.o
  CC      hw/input/adb.o
  CC      hw/input/adb-mouse.o
  CC      hw/input/adb-kbd.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-host.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/intc/heathrow_pic.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/puv3_intc.o
  CC      hw/intc/xilinx_intc.o
  CC      hw/intc/xlnx-pmu-iomod-intc.o
  CC      hw/intc/xlnx-zynqmp-ipi.o
  CC      hw/intc/etraxfs_pic.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/lm32_pic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/slavio_intctl.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/openpic.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/i82378.o
  CC      hw/isa/apm.o
  CC      hw/isa/pc87312.o
  CC      hw/isa/piix4.o
  CC      hw/isa/vt82c686.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/vmcoreinfo.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/misc/puv3_pm.o
  CC      hw/misc/macio/macio.o
  CC      hw/misc/macio/mac_dbdma.o
  CC      hw/misc/macio/cuda.o
  CC      hw/net/dp8393x.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/opencores_eth.o
  CC      hw/net/xgmac.o
  CC      hw/net/mipsnet.o
  CC      hw/net/xilinx_axienet.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/lance.o
  CC      hw/net/sunhme.o
  CC      hw/net/sungem.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/eeprom_at24c.o
  CC      hw/nvram/ds1225y.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/nvram/mac_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-bridge/dec.o
  CC      hw/pci-bridge/simba.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/prep.o
  CC      hw/pci-host/grackle.o
  CC      hw/pci-host/uninorth.o
  CC      hw/pci-host/ppce500.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/sabre.o
  CC      hw/pci-host/bonito.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci-host/xilinx-pcie.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/m48t59.o
  CC      hw/timer/m48t59-isa.o
  CC      hw/timer/pl031.o
  CC      hw/timer/puv3_ost.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/xilinx_timer.o
  CC      hw/timer/slavio_timer.o
  CC      hw/timer/etraxfs_timer.o
  CC      hw/timer/grlib_gptimer.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/lm32_timer.o
  CC      hw/timer/milkymist-sysctl.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/sun4v-rtc.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_util.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/tpm/tpm_emulator.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/host-libusb.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_diag288.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo-failover.o
  CC      migration/colo.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/qemu-file-channel.o
  CC      migration/global_state.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/rdma.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/l2tpv3.o
  CC      net/eth.o
  CC      net/vhost-user.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dhcpv6.o
  CC      slirp/dnssearch.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/tcp_input.o
  CC      slirp/socket.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/sdl.o
  CC      ui/sdl_zoom.o
  CC      ui/vnc.o
  CC      ui/curses.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-auth-sasl.o
  CC      ui/vnc-jobs.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/gtk.o
  CC      ui/x_keymap.o
  CC      chardev/char.o
  CC      chardev/char-fe.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-fd.o
  CC      chardev/char-file.o
  CC      chardev/char-null.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  LINK    tests/qemu-iotests/socket_scm_helper
  CCAS    spapr-rtas/spapr-rtas.o
  CC      qga/commands.o
  CC      qga/guest-agent-command-state.o
  CC      qga/main.o
  Building spapr-rtas/spapr-rtas.img
  Building spapr-rtas/spapr-rtas.bin
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  CC      qemu-img.o
  AR      libqemuutil.a
  LINK    qemu-ga
  LINK    ivshmem-client
  LINK    ivshmem-server
  LINK    qemu-nbd
  LINK    qemu-img
  LINK    qemu-io
  LINK    fsdev/virtfs-proxy-helper
  LINK    scsi/qemu-pr-helper
  LINK    qemu-bridge-helper
  GEN     aarch64-linux-user/config-target.h
  CC      aarch64-linux-user/exec.o
  CC      aarch64-linux-user/tcg/tcg.o
  CC      aarch64-linux-user/tcg/tcg-op.o
  CC      aarch64-linux-user/tcg/optimize.o
  CC      aarch64-linux-user/tcg/tcg-common.o
  GEN     or1k-linux-user/config-target.h
  CC      aarch64-linux-user/fpu/softfloat.o
  CC      aarch64-linux-user/disas.o
  GEN     aarch64-linux-user/gdbstub-xml.c
  CC      aarch64-linux-user/thunk.o
  CC      aarch64-linux-user/gdbstub.o
  CC      aarch64-linux-user/accel/stubs/hax-stub.o
  GEN     microblazeel-linux-user/config-target.h
  GEN     alpha-linux-user/config-target.h
  CC      or1k-linux-user/exec.o
  CC      or1k-linux-user/tcg/tcg.o
  CC      or1k-linux-user/tcg/tcg-op.o
  GEN     ppc-linux-user/config-target.h
  CC      aarch64-linux-user/accel/stubs/hvf-stub.o
  GEN     mipsel-linux-user/config-target.h
  GEN     mips64-linux-user/config-target.h
  CC      aarch64-linux-user/accel/stubs/kvm-stub.o
  CC      aarch64-linux-user/accel/tcg/cpu-exec.o
  CC      aarch64-linux-user/accel/tcg/tcg-runtime.o
  GEN     sparc64-linux-user/config-target.h
  CC      aarch64-linux-user/accel/tcg/cpu-exec-common.o
  CC      or1k-linux-user/fpu/softfloat.o
  CC      or1k-linux-user/tcg/optimize.o
  CC      aarch64-linux-user/accel/tcg/translate-all.o
  CC      or1k-linux-user/disas.o
  CC      aarch64-linux-user/accel/tcg/translator.o
  CC      or1k-linux-user/tcg/tcg-common.o
  CC      aarch64-linux-user/accel/tcg/user-exec.o
  GEN     hppa-linux-user/config-target.h
  CC      aarch64-linux-user/accel/tcg/user-exec-stub.o
  CC      or1k-linux-user/gdbstub.o
  CC      or1k-linux-user/thunk.o
  CC      alpha-linux-user/exec.o
  CC      aarch64-linux-user/linux-user/main.o
  CC      mipsel-linux-user/exec.o
  CC      aarch64-linux-user/linux-user/strace.o
  CC      microblazeel-linux-user/tcg/tcg.o
  CC      aarch64-linux-user/linux-user/syscall.o
  CC      or1k-linux-user/accel/stubs/hax-stub.o
  CC      microblazeel-linux-user/exec.o
  CC      or1k-linux-user/accel/stubs/kvm-stub.o
  CC      mipsel-linux-user/tcg/optimize.o
  CC      mipsel-linux-user/tcg/tcg.o
  CC      mipsel-linux-user/tcg/tcg-common.o
  CC      sparc64-linux-user/exec.o
  CC      alpha-linux-user/tcg/tcg.o
  GEN     armeb-linux-user/config-target.h
  CC      or1k-linux-user/accel/stubs/hvf-stub.o
  GEN     i386-linux-user/config-target.h
  CC      sparc64-linux-user/tcg/tcg.o
  GEN     sparc-linux-user/config-target.h
  GEN     mips64el-linux-user/config-target.h
  CC      mipsel-linux-user/tcg/tcg-op.o
  GEN     mipsn32el-linux-user/config-target.h
  GEN     x86_64-linux-user/config-target.h
  GEN     aarch64_be-linux-user/config-target.h
  GEN     ppc64le-linux-user/config-target.h
  GEN     m68k-linux-user/config-target.h
  GEN     sh4-linux-user/config-target.h
  GEN     cris-linux-user/config-target.h
  GEN     sparc32plus-linux-user/config-target.h
  GEN     ppc64-linux-user/config-target.h
  GEN     nios2-linux-user/config-target.h
  GEN     arm-linux-user/config-target.h
  CC      ppc-linux-user/exec.o
  CC      hppa-linux-user/exec.o
  CC      i386-linux-user/exec.o
  CC      ppc64le-linux-user/exec.o
  CC      armeb-linux-user/exec.o
  CC      mipsn32el-linux-user/exec.o
  CC      sparc-linux-user/exec.o
  CC      x86_64-linux-user/exec.o
  CC      s390x-linux-user/gen-features
  CC      mips64-linux-user/exec.o
  GEN     mips-linux-user/config-target.h
  GEN     microblaze-linux-user/config-target.h
  CC      sh4-linux-user/exec.o
  GEN     tilegx-linux-user/config-target.h
  CC      mips64el-linux-user/exec.o
  CC      sparc32plus-linux-user/exec.o
  CC      aarch64_be-linux-user/exec.o
  CC      nios2-linux-user/exec.o
  CC      m68k-linux-user/exec.o
  GEN     mipsn32-linux-user/config-target.h
  CC      ppc64-linux-user/exec.o
  CC      cris-linux-user/exec.o
  GEN     ppc64abi32-linux-user/config-target.h
  CC      arm-linux-user/exec.o
  GEN     sh4eb-linux-user/config-target.h
  CC      mips-linux-user/exec.o
  CC      tilegx-linux-user/exec.o
  CC      microblaze-linux-user/exec.o
  CC      ppc64abi32-linux-user/exec.o
  CC      mipsn32-linux-user/exec.o
  GEN     or1k-softmmu/hmp-commands.h
  CC      sh4eb-linux-user/exec.o
  CC      sh4eb-linux-user/tcg/tcg.o
  GEN     s390x-linux-user/config-target.h
  GEN     or1k-softmmu/hmp-commands-info.h
  GEN     s390x-linux-user/gen-features.h
  CC      or1k-linux-user/accel/tcg/tcg-runtime.o
  CC      hppa-linux-user/tcg/tcg.o
  GEN     cris-softmmu/hmp-commands.h
  CC      cris-linux-user/tcg/tcg.o
  CC      microblaze-linux-user/tcg/tcg.o
  CC      hppa-linux-user/tcg/tcg-op.o
  CC      alpha-linux-user/tcg/tcg-op.o
  CC      s390x-linux-user/exec.o
  CC      hppa-linux-user/tcg/optimize.o
  CC      hppa-linux-user/tcg/tcg-common.o
  GEN     microblaze-softmmu/hmp-commands.h
  CC      m68k-linux-user/tcg/tcg.o
  CC      armeb-linux-user/tcg/tcg.o
  GEN     or1k-softmmu/config-target.h
  GEN     moxie-softmmu/hmp-commands.h
  GEN     cris-softmmu/hmp-commands-info.h
  GEN     m68k-softmmu/hmp-commands.h
  CC      cris-linux-user/tcg/tcg-op.o
  CC      or1k-softmmu/exec.o
  GEN     cris-softmmu/config-target.h
  CC      cris-linux-user/tcg/optimize.o
  CC      cris-softmmu/exec.o
  CC      s390x-linux-user/tcg/tcg.o
  GEN     microblaze-softmmu/hmp-commands-info.h
  CC      sparc32plus-linux-user/tcg/tcg.o
  GEN     m68k-softmmu/hmp-commands-info.h
  GEN     nios2-softmmu/hmp-commands.h
  GEN     moxie-softmmu/hmp-commands-info.h
  GEN     tricore-softmmu/hmp-commands.h
  CC      armeb-linux-user/tcg/tcg-op.o
  GEN     xtensaeb-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands.h
  GEN     microblaze-softmmu/config-target.h
  GEN     unicore32-softmmu/hmp-commands.h
  GEN     xtensaeb-softmmu/hmp-commands-info.h
  GEN     m68k-softmmu/config-target.h
  CC      microblaze-softmmu/exec.o
  CC      mips64-linux-user/tcg/tcg.o
  CC      ppc64le-linux-user/tcg/tcg.o
  CC      m68k-softmmu/exec.o
  GEN     moxie-softmmu/config-target.h
  CC      moxie-softmmu/exec.o
  GEN     tricore-softmmu/hmp-commands-info.h
  CC      i386-linux-user/tcg/tcg.o
  GEN     nios2-softmmu/hmp-commands-info.h
  CC      tilegx-linux-user/tcg/tcg.o
  CC      mipsn32el-linux-user/tcg/tcg.o
  GEN     unicore32-softmmu/hmp-commands-info.h
  CC      ppc64abi32-linux-user/tcg/tcg.o
  CC      i386-linux-user/tcg/tcg-op.o
  GEN     lm32-softmmu/hmp-commands.h
  GEN     alpha-softmmu/hmp-commands-info.h
  CC      mipsn32el-linux-user/tcg/tcg-op.o
  GEN     microblazeel-softmmu/hmp-commands.h
  GEN     tricore-softmmu/config-target.h
  CC      sh4eb-linux-user/tcg/tcg-op.o
  CC      sh4eb-linux-user/tcg/optimize.o
  CC      tilegx-linux-user/tcg/tcg-op.o
  GEN     sh4eb-softmmu/hmp-commands.h
  GEN     xtensaeb-softmmu/config-target.h
  CC      aarch64_be-linux-user/tcg/tcg.o
  CC      tricore-softmmu/exec.o
  CC      aarch64_be-linux-user/tcg/tcg-op.o
  GEN     nios2-softmmu/config-target.h
  CC      mipsel-linux-user/fpu/softfloat.o
  CC      sparc64-linux-user/tcg/tcg-op.o
  CC      ppc64abi32-linux-user/tcg/tcg-op.o
  GEN     unicore32-softmmu/config-target.h
  CC      xtensaeb-softmmu/exec.o
  CC      xtensaeb-softmmu/tcg/tcg.o
  CC      nios2-softmmu/exec.o
  CC      mips-linux-user/tcg/tcg.o
  GEN     sparc-softmmu/hmp-commands.h
  CC      sh4-linux-user/tcg/tcg.o
  GEN     ppc-softmmu/hmp-commands.h
  CC      cris-softmmu/tcg/tcg.o
  CC      mipsn32el-linux-user/tcg/optimize.o
  CC      unicore32-softmmu/exec.o
  CC      mips64el-linux-user/tcg/tcg.o
  CC      x86_64-linux-user/tcg/tcg.o
  CC      alpha-linux-user/tcg/optimize.o
  GEN     lm32-softmmu/hmp-commands-info.h
  GEN     alpha-softmmu/config-target.h
  GEN     microblazeel-softmmu/hmp-commands-info.h
  CC      alpha-linux-user/tcg/tcg-common.o
  CC      mipsel-linux-user/disas.o
  GEN     sh4eb-softmmu/hmp-commands-info.h
  CC      alpha-softmmu/exec.o
  GEN     arm-softmmu/hmp-commands.h
  CC      nios2-linux-user/tcg/tcg.o
  CC      ppc64-linux-user/tcg/tcg.o
  GEN     lm32-softmmu/config-target.h
  CC      arm-linux-user/tcg/tcg.o
  GEN     s390x-softmmu/hmp-commands.h
  GEN     sparc-softmmu/hmp-commands-info.h
  CC      arm-linux-user/tcg/tcg-op.o
  GEN     mips-softmmu/hmp-commands.h
  GEN     mips-softmmu/hmp-commands-info.h
  CC      lm32-softmmu/exec.o
  GEN     microblazeel-softmmu/config-target.h
  GEN     i386-softmmu/hmp-commands.h
  CC      mipsn32-linux-user/tcg/tcg.o
  GEN     sparc-softmmu/config-target.h
  GEN     ppc-softmmu/hmp-commands-info.h
  GEN     xtensa-softmmu/hmp-commands.h
  CC      microblazeel-softmmu/exec.o
  CC      sparc-softmmu/exec.o
  GEN     sh4eb-softmmu/config-target.h
  GEN     ppc64-softmmu/hmp-commands.h
  CC      sparc-linux-user/tcg/tcg.o
  CC      sparc-softmmu/tcg/tcg.o
  GEN     sparc64-softmmu/hmp-commands.h
  CC      sh4eb-softmmu/exec.o
  CC      sparc-softmmu/tcg/tcg-op.o
  GEN     ppc-softmmu/config-target.h
  CC      mipsn32el-linux-user/tcg/tcg-common.o
  GEN     ppcemb-softmmu/hmp-commands.h
  GEN     sh4-softmmu/hmp-commands.h
  CC      ppc-softmmu/exec.o
  CC      mipsn32el-linux-user/fpu/softfloat.o
  GEN     arm-softmmu/hmp-commands-info.h
  GEN     mips64-softmmu/hmp-commands.h
  GEN     s390x-softmmu/hmp-commands-info.h
  CC      ppc-linux-user/tcg/tcg.o
  GEN     mips-softmmu/config-target.h
  GEN     i386-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/hmp-commands.h
  CC      mips-softmmu/exec.o
  GEN     arm-softmmu/config-target.h
  GEN     i386-softmmu/config-target.h
  CC      arm-softmmu/exec.o
  GEN     ppcemb-softmmu/hmp-commands-info.h
  GEN     xtensa-softmmu/hmp-commands-info.h
  CC      s390x-softmmu/gen-features
  GEN     ppcemb-softmmu/config-target.h
  GEN     ppc64-softmmu/hmp-commands-info.h
  CC      cris-softmmu/tcg/tcg-op.o
  CC      arm-softmmu/tcg/tcg.o
  CC      ppc64abi32-linux-user/tcg/optimize.o
  GEN     mips64el-softmmu/hmp-commands.h
  CC      i386-softmmu/exec.o
  GEN     mipsel-softmmu/hmp-commands.h
  GEN     xtensa-softmmu/config-target.h
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     sparc64-softmmu/hmp-commands-info.h
  CC      ppcemb-softmmu/exec.o
  GEN     sh4-softmmu/hmp-commands-info.h
  GEN     mips64-softmmu/hmp-commands-info.h
  CC      xtensa-softmmu/exec.o
  CC      m68k-linux-user/tcg/tcg-op.o
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     ppc64-softmmu/config-target.h
  GEN     sparc64-softmmu/config-target.h
  GEN     mipsel-softmmu/hmp-commands-info.h
  GEN     s390x-softmmu/config-target.h
  CC      ppc64-softmmu/exec.o
  GEN     sh4-softmmu/config-target.h
  GEN     aarch64-softmmu/config-target.h
  CC      sparc64-softmmu/exec.o
  GEN     s390x-softmmu/gen-features.h
  CC      ppc64-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/exec.o
  CC      sh4-softmmu/exec.o
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     mips64-softmmu/config-target.h
  CC      s390x-softmmu/exec.o
  GEN     mips64el-softmmu/hmp-commands-info.h
  GEN     mipsel-softmmu/config-target.h
  CC      mips64-softmmu/exec.o
  CC      sh4-linux-user/tcg/tcg-op.o
  CC      mipsel-softmmu/exec.o
  GEN     x86_64-softmmu/config-target.h
  CC      m68k-linux-user/tcg/optimize.o
  CC      armeb-linux-user/tcg/optimize.o
  CC      x86_64-softmmu/exec.o
  GEN     mips64el-softmmu/config-target.h
  CC      mips64el-softmmu/exec.o
  CC      or1k-linux-user/accel/tcg/cpu-exec.o
  CC      arm-linux-user/tcg/optimize.o
  CC      ppc-softmmu/tcg/tcg.o
  CC      x86_64-linux-user/tcg/tcg-op.o
  CC      moxie-softmmu/tcg/tcg.o
  CC      s390x-linux-user/tcg/tcg-op.o
  CC      sh4eb-softmmu/tcg/tcg.o
  CC      xtensaeb-softmmu/tcg/tcg-op.o
  CC      microblazeel-linux-user/tcg/tcg-op.o
  CC      aarch64_be-linux-user/tcg/optimize.o
  CC      xtensa-softmmu/tcg/tcg.o
  CC      ppc-softmmu/tcg/tcg-op.o
  CC      nios2-softmmu/tcg/tcg.o
  CC      mipsn32-linux-user/tcg/tcg-op.o
  CC      nios2-linux-user/tcg/tcg-op.o
  CC      i386-linux-user/tcg/optimize.o
  CC      microblaze-linux-user/tcg/tcg-op.o
  CC      sh4-linux-user/tcg/optimize.o
  CC      microblaze-linux-user/tcg/optimize.o
  CC      mips64-softmmu/tcg/tcg.o
  CC      mips64-softmmu/tcg/tcg-op.o
  CC      tilegx-linux-user/tcg/optimize.o
  CC      sh4eb-softmmu/tcg/tcg-op.o
  CC      ppc64abi32-linux-user/tcg/tcg-common.o
  CC      sparc32plus-linux-user/tcg/tcg-op.o
  CC      mips64-linux-user/tcg/tcg-op.o
  CC      tilegx-linux-user/tcg/tcg-common.o
  CC      x86_64-softmmu/tcg/tcg.o
  CC      microblazeel-softmmu/tcg/tcg.o
  CC      alpha-linux-user/fpu/softfloat.o
  CC      sparc64-softmmu/tcg/tcg.o
  CC      alpha-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/tcg/tcg.o
  CC      ppc64abi32-linux-user/fpu/softfloat.o
  CC      x86_64-linux-user/tcg/optimize.o
  CC      x86_64-linux-user/tcg/tcg-common.o
  CC      sparc-linux-user/tcg/tcg-op.o
  CC      microblaze-linux-user/tcg/tcg-common.o
  CC      arm-linux-user/tcg/tcg-common.o
  CC      sh4eb-linux-user/tcg/tcg-common.o
  CC      x86_64-linux-user/fpu/softfloat.o
  CC      sparc32plus-linux-user/tcg/optimize.o
  CC      alpha-linux-user/disas.o
  CC      hppa-linux-user/fpu/softfloat.o
  CC      arm-linux-user/fpu/softfloat.o
  CC      aarch64_be-linux-user/tcg/tcg-common.o
  CC      arm-linux-user/disas.o
  CC      sparc-linux-user/tcg/optimize.o
  CC      ppcemb-softmmu/tcg/tcg.o
  CC      sh4eb-linux-user/fpu/softfloat.o
  CC      sh4eb-linux-user/disas.o
  CC      or1k-softmmu/tcg/tcg.o
  CC      or1k-softmmu/tcg/tcg-op.o
  CC      armeb-linux-user/tcg/tcg-common.o
  CC      alpha-softmmu/tcg/tcg-op.o
  CC      ppc64abi32-linux-user/disas.o
  CC      cris-linux-user/tcg/tcg-common.o
  CC      or1k-linux-user/accel/tcg/cpu-exec-common.o
  CC      nios2-softmmu/tcg/tcg-op.o
  CC      sparc64-linux-user/tcg/optimize.o
  CC      nios2-softmmu/tcg/optimize.o
  CC      aarch64_be-linux-user/fpu/softfloat.o
  CC      i386-linux-user/tcg/tcg-common.o
  CC      microblaze-softmmu/tcg/tcg.o
  CC      i386-linux-user/fpu/softfloat.o
  CC      tilegx-linux-user/fpu/softfloat.o
  CC      cris-linux-user/fpu/softfloat.o
  CC      sparc64-linux-user/tcg/tcg-common.o
  CC      sh4-linux-user/tcg/tcg-common.o
  CC      sparc64-softmmu/tcg/tcg-op.o
  CC      i386-linux-user/disas.o
  CC      m68k-linux-user/tcg/tcg-common.o
  CC      armeb-linux-user/fpu/softfloat.o
  CC      or1k-linux-user/accel/tcg/translate-all.o
  CC      ppc64le-linux-user/tcg/tcg-op.o
  CC      aarch64_be-linux-user/disas.o
  CC      mips-softmmu/tcg/tcg.o
  CC      xtensa-softmmu/tcg/tcg-op.o
  CC      sparc64-softmmu/tcg/optimize.o
  CC      lm32-softmmu/tcg/tcg.o
  CC      m68k-softmmu/tcg/tcg.o
  CC      sparc64-softmmu/tcg/tcg-common.o
  CC      mips64-softmmu/tcg/optimize.o
  CC      or1k-linux-user/accel/tcg/translator.o
  CC      moxie-softmmu/tcg/tcg-op.o
  CC      moxie-softmmu/tcg/optimize.o
  CC      m68k-linux-user/fpu/softfloat.o
  CC      mips64el-linux-user/tcg/tcg-op.o
  CC      sh4-linux-user/fpu/softfloat.o
  CC      mips-linux-user/tcg/tcg-op.o
  CC      m68k-linux-user/disas.o
  CC      mipsel-softmmu/tcg/tcg.o
  GEN     m68k-linux-user/gdbstub-xml.c
  CC      cris-softmmu/tcg/optimize.o
  CC      ppc64-linux-user/tcg/tcg-op.o
  CC      ppc64-linux-user/tcg/optimize.o
  CC      mips64el-linux-user/tcg/optimize.o
  CC      ppc-softmmu/tcg/optimize.o
  GEN     ppc64abi32-linux-user/gdbstub-xml.c
  CC      mips64-softmmu/tcg/tcg-common.o
  CC      hppa-linux-user/disas.o
  CC      s390x-softmmu/tcg/tcg.o
  CC      tricore-softmmu/tcg/tcg.o
  CC      sparc32plus-linux-user/tcg/tcg-common.o
  CC      nios2-linux-user/tcg/optimize.o
  CC      hppa-linux-user/gdbstub.o
  CC      microblazeel-linux-user/tcg/optimize.o
  CC      m68k-linux-user/gdbstub.o
  CC      s390x-linux-user/tcg/optimize.o
  CC      unicore32-softmmu/tcg/tcg.o
  CC      i386-softmmu/tcg/tcg.o
  CC      s390x-linux-user/tcg/tcg-common.o
  GEN     arm-linux-user/gdbstub-xml.c
  CC      sparc-softmmu/tcg/optimize.o
  CC      sh4-softmmu/tcg/tcg.o
  CC      mips-linux-user/tcg/optimize.o
  CC      mips64el-softmmu/tcg/tcg.o
  CC      sparc64-softmmu/fpu/softfloat.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      mipsel-linux-user/gdbstub.o
  CC      mipsel-linux-user/thunk.o
  CC      or1k-linux-user/accel/tcg/user-exec.o
  CC      mipsel-softmmu/tcg/tcg-op.o
  CC      armeb-linux-user/disas.o
  CC      xtensa-softmmu/tcg/optimize.o
  CC      ppc64abi32-linux-user/gdbstub.o
  CC      aarch64-linux-user/linux-user/mmap.o
  CC      sparc-softmmu/tcg/tcg-common.o
  CC      ppcemb-softmmu/tcg/tcg-op.o
  CC      ppc-linux-user/tcg/tcg-op.o
  CC      ppc64-softmmu/tcg/tcg-op.o
  CC      xtensaeb-softmmu/tcg/optimize.o
  GEN     armeb-linux-user/gdbstub-xml.c
  CC      nios2-softmmu/tcg/tcg-common.o
  CC      ppc-linux-user/tcg/optimize.o
  CC      mipsel-softmmu/tcg/optimize.o
  CC      tilegx-linux-user/disas.o
  CC      ppc64-softmmu/tcg/optimize.o
  CC      mips64el-softmmu/tcg/tcg-op.o
  CC      ppc-linux-user/tcg/tcg-common.o
  CC      ppc-linux-user/fpu/softfloat.o
  CC      cris-linux-user/disas.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      arm-softmmu/tcg/tcg-op.o
  CC      cris-softmmu/tcg/tcg-common.o
  GEN     aarch64_be-linux-user/gdbstub-xml.c
  CC      s390x-linux-user/fpu/softfloat.o
  CC      sh4eb-softmmu/tcg/optimize.o
  CC      microblazeel-linux-user/tcg/tcg-common.o
  CC      x86_64-linux-user/disas.o
  CC      tricore-softmmu/tcg/tcg-op.o
  CC      sparc64-softmmu/disas.o
  CC      sparc64-linux-user/fpu/softfloat.o
  CC      ppc-linux-user/disas.o
  CC      sh4eb-softmmu/tcg/tcg-common.o
  CC      sh4-linux-user/disas.o
  CC      xtensa-softmmu/tcg/tcg-common.o
  CC      mips64el-softmmu/tcg/optimize.o
  GEN     x86_64-linux-user/gdbstub-xml.c
  CC      microblazeel-linux-user/fpu/softfloat.o
  CC      xtensaeb-softmmu/tcg/tcg-common.o
  CC      cris-softmmu/fpu/softfloat.o
  CC      m68k-linux-user/thunk.o
  CC      aarch64_be-linux-user/gdbstub.o
  CC      mipsel-linux-user/accel/stubs/hax-stub.o
  CC      lm32-softmmu/tcg/tcg-op.o
  CC      s390x-softmmu/tcg/tcg-op.o
  CC      mipsn32el-linux-user/disas.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  CC      mipsn32-linux-user/tcg/optimize.o
  CC      cris-softmmu/disas.o
  CC      sh4-linux-user/gdbstub.o
  CC      mips-softmmu/tcg/tcg-op.o
  CC      microblaze-linux-user/fpu/softfloat.o
  CC      nios2-linux-user/tcg/tcg-common.o
  CC      s390x-linux-user/disas.o
  CC      unicore32-softmmu/tcg/tcg-op.o
  CC      microblaze-softmmu/tcg/tcg-op.o
  CC      mipsn32-linux-user/tcg/tcg-common.o
  CC      mipsel-linux-user/accel/stubs/hvf-stub.o
  CC      mips64-softmmu/fpu/softfloat.o
  CC      ppcemb-softmmu/tcg/optimize.o
  CC      s390x-softmmu/tcg/optimize.o
  CC      sparc64-linux-user/disas.o
  CC      armeb-linux-user/gdbstub.o
  CC      or1k-softmmu/tcg/optimize.o
  CC      microblazeel-softmmu/tcg/tcg-op.o
  CC      moxie-softmmu/tcg/tcg-common.o
  CC      mipsn32-linux-user/fpu/softfloat.o
  CC      sh4eb-linux-user/gdbstub.o
  CC      nios2-linux-user/fpu/softfloat.o
  CC      sparc-softmmu/fpu/softfloat.o
  CC      mipsn32el-linux-user/gdbstub.o
  CC      sparc-softmmu/disas.o
  CC      or1k-linux-user/accel/tcg/user-exec-stub.o
  GEN     s390x-linux-user/gdbstub-xml.c
  CC      microblazeel-softmmu/tcg/optimize.o
  CC      ppc-softmmu/tcg/tcg-common.o
  CC      mipsel-linux-user/accel/stubs/kvm-stub.o
  CC      ppc64-linux-user/tcg/tcg-common.o
  CC      nios2-softmmu/fpu/softfloat.o
  CC      nios2-softmmu/disas.o
  CC      or1k-linux-user/linux-user/main.o
  CC      sparc64-softmmu/arch_init.o
  CC      ppc-softmmu/fpu/softfloat.o
  CC      sparc-linux-user/tcg/tcg-common.o
  CC      sh4eb-softmmu/fpu/softfloat.o
  CC      sparc-linux-user/fpu/softfloat.o
  CC      sparc64-linux-user/gdbstub.o
  CC      ppc-softmmu/disas.o
  CC      mipsel-linux-user/accel/tcg/tcg-runtime.o
  CC      cris-softmmu/arch_init.o
  CC      sparc32plus-linux-user/fpu/softfloat.o
  CC      mips64-softmmu/disas.o
  CC      sh4eb-linux-user/thunk.o
  CC      hppa-linux-user/thunk.o
  CC      sh4eb-linux-user/accel/stubs/hax-stub.o
  CC      hppa-linux-user/accel/stubs/hax-stub.o
  CC      mips64el-softmmu/tcg/tcg-common.o
  CC      or1k-linux-user/linux-user/syscall.o
  CC      xtensaeb-softmmu/fpu/softfloat.o
  CC      xtensa-softmmu/fpu/softfloat.o
  CC      mips64-linux-user/tcg/optimize.o
  CC      arm-softmmu/tcg/optimize.o
  CC      i386-softmmu/tcg/tcg-op.o
  CC      alpha-linux-user/gdbstub.o
  CC      mipsn32-linux-user/disas.o
  CC      or1k-linux-user/linux-user/strace.o
  CC      cris-softmmu/cpus.o
  GEN     ppc-softmmu/gdbstub-xml.c
  CC      microblazeel-linux-user/disas.o
  CC      mipsel-linux-user/accel/tcg/cpu-exec.o
  CC      mipsn32el-linux-user/thunk.o
  CC      unicore32-softmmu/tcg/optimize.o
  CC      tilegx-linux-user/gdbstub.o
  CC      tilegx-linux-user/thunk.o
  CC      arm-softmmu/tcg/tcg-common.o
  CC      microblazeel-linux-user/gdbstub.o
  CC      microblazeel-linux-user/thunk.o
  CC      microblazeel-linux-user/accel/stubs/hax-stub.o
  CC      or1k-linux-user/linux-user/mmap.o
  CC      or1k-linux-user/linux-user/signal.o
  CC      ppc64le-linux-user/tcg/optimize.o
  CC      ppc64abi32-linux-user/thunk.o
  CC      ppc64-linux-user/fpu/softfloat.o
  CC      ppc64-linux-user/disas.o
  CC      sparc32plus-linux-user/disas.o
  GEN     i386-linux-user/gdbstub-xml.c
  CC      alpha-linux-user/thunk.o
  CC      unicore32-softmmu/tcg/tcg-common.o
  CC      sh4-linux-user/thunk.o
  CC      microblazeel-linux-user/accel/stubs/hvf-stub.o
  CC      mipsel-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64el-linux-user/tcg/tcg-common.o
  CC      sparc-linux-user/disas.o
  CC      mips64-softmmu/arch_init.o
  CC      ppc64-softmmu/tcg/tcg-common.o
  CC      xtensa-softmmu/disas.o
  CC      aarch64-linux-user/linux-user/signal.o
  CC      mipsn32el-linux-user/accel/stubs/hax-stub.o
  CC      mipsel-linux-user/accel/tcg/translate-all.o
  CC      alpha-softmmu/tcg/optimize.o
  CC      mipsn32el-linux-user/accel/stubs/hvf-stub.o
  GEN     ppc-linux-user/gdbstub-xml.c
  CC      mipsel-softmmu/tcg/tcg-common.o
  CC      mipsn32el-linux-user/accel/stubs/kvm-stub.o
  CC      sparc-softmmu/arch_init.o
  CC      i386-linux-user/gdbstub.o
  CC      mipsel-softmmu/fpu/softfloat.o
  CC      moxie-softmmu/fpu/softfloat.o
  CC      mips64-softmmu/cpus.o
  CC      m68k-softmmu/tcg/tcg-op.o
  CC      s390x-linux-user/gdbstub.o
  CC      i386-softmmu/tcg/optimize.o
  CC      hppa-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64abi32-linux-user/accel/stubs/hax-stub.o
  CC      sparc64-linux-user/thunk.o
  CC      mipsn32el-linux-user/accel/tcg/tcg-runtime.o
  CC      or1k-linux-user/linux-user/elfload.o
  CC      sh4eb-linux-user/accel/stubs/hvf-stub.o
  CC      alpha-linux-user/accel/stubs/hax-stub.o
  CC      alpha-linux-user/accel/stubs/hvf-stub.o
  CC      armeb-linux-user/thunk.o
  CC      x86_64-softmmu/tcg/optimize.o
  CC      arm-softmmu/fpu/softfloat.o
  CC      microblazeel-linux-user/accel/stubs/kvm-stub.o
  CC      mips-linux-user/tcg/tcg-common.o
  CC      nios2-linux-user/disas.o
  CC      sh4eb-softmmu/disas.o
  CC      or1k-softmmu/tcg/tcg-common.o
  CC      aarch64-linux-user/linux-user/elfload.o
  CC      arm-linux-user/gdbstub.o
  CC      sparc-linux-user/gdbstub.o
  CC      sparc-linux-user/thunk.o
  CC      hppa-linux-user/accel/stubs/kvm-stub.o
  CC      alpha-linux-user/accel/stubs/kvm-stub.o
  CC      sparc-linux-user/accel/stubs/hax-stub.o
  CC      sparc-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64abi32-linux-user/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/tcg/optimize.o
  CC      mips64el-linux-user/fpu/softfloat.o
  CC      alpha-linux-user/accel/tcg/tcg-runtime.o
  CC      sh4-softmmu/tcg/tcg-op.o
  CC      hppa-linux-user/accel/tcg/tcg-runtime.o
  CC      mips-linux-user/fpu/softfloat.o
  CC      hppa-linux-user/accel/tcg/cpu-exec.o
  CC      mips64-softmmu/monitor.o
  CC      mips64-linux-user/tcg/tcg-common.o
  CC      mips64-linux-user/fpu/softfloat.o
  CC      or1k-softmmu/fpu/softfloat.o
  CC      mipsn32-linux-user/gdbstub.o
  CC      mips64el-softmmu/fpu/softfloat.o
  CC      or1k-softmmu/disas.o
  CC      nios2-linux-user/gdbstub.o
  CC      mipsn32el-linux-user/accel/tcg/cpu-exec.o
  CC      sh4eb-linux-user/accel/stubs/kvm-stub.o
  CC      x86_64-linux-user/gdbstub.o
  CC      ppc-softmmu/arch_init.o
  CC      ppc64abi32-linux-user/accel/stubs/kvm-stub.o
  CC      ppc-softmmu/cpus.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      nios2-linux-user/thunk.o
  CC      ppcemb-softmmu/tcg/tcg-common.o
  CC      ppcemb-softmmu/fpu/softfloat.o
  CC      m68k-linux-user/accel/stubs/hax-stub.o
  CC      ppc-softmmu/monitor.o
  CC      alpha-linux-user/accel/tcg/cpu-exec.o
  CC      m68k-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64le-linux-user/tcg/tcg-common.o
  CC      mips64-softmmu/gdbstub.o
  CC      sparc32plus-linux-user/gdbstub.o
  CC      sparc32plus-linux-user/thunk.o
  CC      s390x-linux-user/thunk.o
  CC      ppc-linux-user/gdbstub.o
  CC      arm-softmmu/disas.o
  CC      mipsel-linux-user/accel/tcg/translator.o
  CC      or1k-linux-user/linux-user/linuxload.o
  CC      xtensa-softmmu/arch_init.o
  GEN     arm-softmmu/gdbstub-xml.c
  CC      x86_64-linux-user/thunk.o
  CC      moxie-softmmu/disas.o
  CC      xtensaeb-softmmu/disas.o
  CC      aarch64_be-linux-user/thunk.o
  CC      ppc64abi32-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-softmmu/fpu/softfloat.o
  CC      mipsn32-linux-user/thunk.o
  CC      aarch64-linux-user/linux-user/linuxload.o
  CC      ppc64le-linux-user/fpu/softfloat.o
  CC      mips64el-linux-user/disas.o
  CC      microblaze-softmmu/tcg/optimize.o
  CC      s390x-softmmu/tcg/tcg-common.o
  CC      microblazeel-softmmu/tcg/tcg-common.o
  CC      microblazeel-softmmu/fpu/softfloat.o
  CC      hppa-linux-user/accel/tcg/cpu-exec-common.o
  CC      hppa-linux-user/accel/tcg/translate-all.o
  CC      armeb-linux-user/accel/stubs/hax-stub.o
  CC      ppc-softmmu/gdbstub.o
  CC      sparc64-softmmu/cpus.o
  CC      alpha-softmmu/tcg/tcg-common.o
  CC      mips-linux-user/disas.o
  CC      mipsn32el-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      sparc64-linux-user/accel/stubs/hax-stub.o
  CC      tilegx-linux-user/accel/stubs/hax-stub.o
  CC      unicore32-softmmu/fpu/softfloat.o
  CC      alpha-linux-user/accel/tcg/cpu-exec-common.o
  CC      alpha-linux-user/accel/tcg/translate-all.o
  CC      mips64el-softmmu/disas.o
  CC      ppc64-softmmu/disas.o
  CC      tilegx-linux-user/accel/stubs/hvf-stub.o
  CC      mipsn32el-linux-user/accel/tcg/translate-all.o
  CC      armeb-linux-user/accel/stubs/hvf-stub.o
  CC      s390x-softmmu/fpu/softfloat.o
  CC      moxie-softmmu/arch_init.o
  CC      mips64el-linux-user/gdbstub.o
  CC      m68k-softmmu/tcg/tcg-common.o
  CC      mips64el-linux-user/thunk.o
  CC      hppa-linux-user/accel/tcg/translator.o
  CC      i386-linux-user/thunk.o
  CC      microblazeel-softmmu/disas.o
  CC      microblaze-softmmu/tcg/tcg-common.o
  CC      alpha-softmmu/fpu/softfloat.o
  CC      ppc64abi32-linux-user/accel/tcg/cpu-exec.o
  CC      tricore-softmmu/tcg/optimize.o
  CC      lm32-softmmu/tcg/optimize.o
  CC      nios2-linux-user/accel/stubs/hax-stub.o
  CC      sparc64-softmmu/monitor.o
  CC      i386-linux-user/accel/stubs/hax-stub.o
  CC      s390x-softmmu/disas.o
  CC      mips-linux-user/gdbstub.o
  CC      sparc64-softmmu/gdbstub.o
  CC      aarch64_be-linux-user/accel/stubs/hax-stub.o
  CC      sparc64-softmmu/balloon.o
  CC      armeb-linux-user/accel/stubs/kvm-stub.o
  CC      aarch64-linux-user/linux-user/uaccess.o
  CC      aarch64-linux-user/linux-user/uname.o
  CC      mips64-linux-user/disas.o
  CC      or1k-softmmu/arch_init.o
  CC      sh4-linux-user/accel/stubs/hax-stub.o
  CC      mipsn32-linux-user/accel/stubs/hax-stub.o
  CC      i386-linux-user/accel/stubs/hvf-stub.o
  CC      armeb-linux-user/accel/tcg/tcg-runtime.o
  CC      mipsn32el-linux-user/accel/tcg/translator.o
  CC      mipsel-linux-user/accel/tcg/user-exec.o
  CC      sh4eb-linux-user/accel/tcg/tcg-runtime.o
  CC      mips-linux-user/thunk.o
  CC      nios2-linux-user/accel/stubs/hvf-stub.o
  CC      arm-linux-user/thunk.o
  CC      aarch64_be-linux-user/accel/stubs/hvf-stub.o
  CC      arm-linux-user/accel/stubs/hax-stub.o
  CC      ppcemb-softmmu/disas.o
  CC      hppa-linux-user/accel/tcg/user-exec.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      nios2-linux-user/accel/stubs/kvm-stub.o
  CC      sh4-linux-user/accel/stubs/hvf-stub.o
  CC      ppc64abi32-linux-user/accel/tcg/cpu-exec-common.o
  CC      moxie-softmmu/cpus.o
  CC      sparc64-linux-user/accel/stubs/hvf-stub.o
  CC      moxie-softmmu/monitor.o
  CCAS    aarch64-linux-user/linux-user/safe-syscall.o
  CC      alpha-softmmu/disas.o
  CC      lm32-softmmu/tcg/tcg-common.o
  GEN     ppc64-softmmu/gdbstub-xml.c
  CC      ppc64-softmmu/arch_init.o
  CC      aarch64-linux-user/linux-user/flatload.o
  CC      x86_64-linux-user/accel/stubs/hax-stub.o
  CC      sparc32plus-linux-user/accel/stubs/hax-stub.o
  CC      xtensa-softmmu/cpus.o
  CC      tilegx-linux-user/accel/stubs/kvm-stub.o
  CC      xtensa-softmmu/monitor.o
  CC      aarch64_be-linux-user/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      xtensa-softmmu/gdbstub.o
  CC      m68k-linux-user/accel/stubs/kvm-stub.o
  CC      hppa-linux-user/accel/tcg/user-exec-stub.o
  CC      mips-linux-user/accel/stubs/hax-stub.o
  CC      armeb-linux-user/accel/tcg/cpu-exec.o
  CC      mips64el-linux-user/accel/stubs/hax-stub.o
  CC      m68k-linux-user/accel/tcg/tcg-runtime.o
  CC      microblaze-linux-user/disas.o
  CC      sparc-linux-user/accel/stubs/kvm-stub.o
  CC      mips-linux-user/accel/stubs/hvf-stub.o
  CC      lm32-softmmu/fpu/softfloat.o
  CC      microblaze-softmmu/fpu/softfloat.o
  CC      i386-linux-user/accel/stubs/kvm-stub.o
  CC      ppc64abi32-linux-user/accel/tcg/translate-all.o
  CC      cris-softmmu/monitor.o
  CC      mips-linux-user/accel/stubs/kvm-stub.o
  CC      mips-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc-linux-user/thunk.o
  CC      sh4eb-linux-user/accel/tcg/cpu-exec.o
  CC      xtensa-softmmu/balloon.o
  CC      sparc64-linux-user/accel/stubs/kvm-stub.o
  GEN     ppcemb-softmmu/gdbstub-xml.c
  CC      sparc-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64-linux-user/target/arm/arm-semi.o
  CC      i386-softmmu/tcg/tcg-common.o
  CC      x86_64-linux-user/accel/stubs/hvf-stub.o
  CC      cris-linux-user/gdbstub.o
  CC      mips64-linux-user/gdbstub.o
  CC      unicore32-softmmu/disas.o
  CC      sparc-softmmu/cpus.o
  CC      unicore32-softmmu/arch_init.o
  GEN     ppc64-linux-user/gdbstub-xml.c
  CC      mipsn32-linux-user/accel/stubs/hvf-stub.o
  CC      arm-linux-user/accel/stubs/hvf-stub.o
  CC      mips-linux-user/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64el-softmmu/arch_init.o
  CC      i386-linux-user/accel/tcg/tcg-runtime.o
  CC      tilegx-linux-user/accel/tcg/tcg-runtime.o
  CC      xtensa-softmmu/ioport.o
  CC      sh4-softmmu/tcg/optimize.o
  CC      microblazeel-softmmu/arch_init.o
  CC      mips64-linux-user/thunk.o
  CC      xtensa-softmmu/numa.o
  CC      mipsel-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64-linux-user/gdbstub.o
  CC      microblazeel-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64_be-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/thunk.o
  CC      alpha-linux-user/accel/tcg/translator.o
  CC      sparc64-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/accel/stubs/hax-stub.o
  CC      mips-linux-user/accel/tcg/cpu-exec-common.o
  CC      mipsel-softmmu/disas.o
  CC      xtensa-softmmu/qtest.o
  CC      microblaze-linux-user/gdbstub.o
  CC      unicore32-softmmu/cpus.o
  CC      s390x-linux-user/accel/stubs/hax-stub.o
  CC      m68k-linux-user/accel/tcg/cpu-exec.o
  CC      tricore-softmmu/tcg/tcg-common.o
  CC      mips64-linux-user/accel/stubs/hax-stub.o
  CC      x86_64-linux-user/accel/stubs/kvm-stub.o
  CC      sh4-softmmu/tcg/tcg-common.o
  CC      arm-linux-user/accel/stubs/kvm-stub.o
  CC      m68k-softmmu/fpu/softfloat.o
  CC      microblaze-linux-user/thunk.o
  CC      or1k-softmmu/cpus.o
  CC      nios2-linux-user/accel/tcg/tcg-runtime.o
  CC      tricore-softmmu/fpu/softfloat.o
  CC      arm-linux-user/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/arch_init.o
  CC      x86_64-linux-user/accel/tcg/tcg-runtime.o
  CC      s390x-linux-user/accel/stubs/hvf-stub.o
  GEN     s390x-softmmu/gdbstub-xml.c
  CC      or1k-softmmu/monitor.o
  CC      i386-linux-user/accel/tcg/cpu-exec.o
  CC      mipsel-linux-user/linux-user/main.o
  CC      mipsn32el-linux-user/accel/tcg/user-exec.o
  CC      ppc-linux-user/accel/stubs/hax-stub.o
  CC      mipsel-softmmu/arch_init.o
  CC      nios2-softmmu/arch_init.o
  CC      lm32-softmmu/disas.o
  CC      armeb-linux-user/accel/tcg/translate-all.o
  CC      microblazeel-linux-user/accel/tcg/cpu-exec.o
  CC      microblazeel-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64_be-linux-user/accel/tcg/cpu-exec.o
  CC      microblazeel-linux-user/accel/tcg/translate-all.o
  CC      cris-linux-user/thunk.o
  CC      armeb-linux-user/accel/tcg/translator.o
  CC      tilegx-linux-user/accel/tcg/cpu-exec.o
  CC      sparc64-linux-user/accel/tcg/cpu-exec.o
  CC      m68k-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc-softmmu/monitor.o
  CC      unicore32-softmmu/monitor.o
  CC      sparc64-softmmu/ioport.o
  CC      sh4eb-linux-user/accel/tcg/cpu-exec-common.o
  CC      alpha-linux-user/accel/tcg/user-exec.o
  CC      alpha-linux-user/accel/tcg/user-exec-stub.o
  CC      mips-softmmu/tcg/optimize.o
  CC      m68k-linux-user/accel/tcg/translate-all.o
  CC      mipsel-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/accel/tcg/cpu-exec.o
  CC      sh4-linux-user/accel/stubs/kvm-stub.o
  CC      sparc64-softmmu/numa.o
  CC      s390x-linux-user/accel/stubs/kvm-stub.o
  CC      microblaze-softmmu/disas.o
  CC      arm-linux-user/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/disas.o
  CC      ppc-linux-user/accel/stubs/hvf-stub.o
  CC      mipsn32el-linux-user/accel/tcg/user-exec-stub.o
  CC      arm-softmmu/arch_init.o
  CC      ppc64abi32-linux-user/accel/tcg/translator.o
  CC      mips64el-softmmu/cpus.o
  CC      sparc64-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64-softmmu/balloon.o
  CC      sparc64-softmmu/qtest.o
  CC      cris-linux-user/accel/stubs/hax-stub.o
  CC      microblaze-softmmu/arch_init.o
  CC      alpha-softmmu/cpus.o
  CC      ppc64-linux-user/accel/stubs/hvf-stub.o
  CC      mipsn32el-linux-user/linux-user/main.o
  CC      sh4eb-linux-user/accel/tcg/translate-all.o
  CC      mips64el-linux-user/accel/stubs/hvf-stub.o
  CC      i386-softmmu/fpu/softfloat.o
  CC      mips-softmmu/tcg/tcg-common.o
  CC      hppa-linux-user/linux-user/main.o
  CC      sh4eb-softmmu/arch_init.o
  CC      mips64-softmmu/ioport.o
  CC      xtensa-softmmu/memory.o
  CC      tricore-softmmu/disas.o
  CC      microblazeel-softmmu/cpus.o
  CC      ppc-linux-user/accel/stubs/kvm-stub.o
  CC      nios2-softmmu/cpus.o
  CC      sh4-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64-linux-user/target/arm/kvm-stub.o
  CC      xtensa-softmmu/memory_mapping.o
  CC      s390x-linux-user/accel/tcg/tcg-runtime.o
  CC      tricore-softmmu/arch_init.o
  CC      microblaze-linux-user/accel/stubs/hax-stub.o
  CC      s390x-softmmu/arch_init.o
  CC      i386-softmmu/disas.o
  CC      nios2-linux-user/accel/tcg/cpu-exec.o
  CC      sparc64-linux-user/accel/tcg/translate-all.o
  CC      sh4-linux-user/accel/tcg/cpu-exec.o
  CC      mips-softmmu/fpu/softfloat.o
  CC      aarch64-softmmu/disas.o
  CC      sh4eb-softmmu/cpus.o
  CC      mips-softmmu/disas.o
  CC      cris-linux-user/accel/stubs/hvf-stub.o
  CC      x86_64-linux-user/accel/tcg/cpu-exec-common.o
  CC      ppcemb-softmmu/arch_init.o
  CC      microblaze-linux-user/accel/stubs/hvf-stub.o
  CC      tilegx-linux-user/accel/tcg/cpu-exec-common.o
  CC      i386-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64-linux-user/target/arm/translate.o
  CC      microblazeel-linux-user/accel/tcg/translator.o
  CC      mipsn32el-linux-user/linux-user/syscall.o
  CC      sh4-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64_be-linux-user/accel/tcg/cpu-exec-common.o
  CC      aarch64_be-linux-user/accel/tcg/translate-all.o
  CC      arm-linux-user/accel/tcg/cpu-exec-common.o
  CC      x86_64-linux-user/accel/tcg/translate-all.o
  CC      microblaze-linux-user/accel/stubs/kvm-stub.o
  CC      x86_64-linux-user/accel/tcg/translator.o
  CC      alpha-softmmu/monitor.o
  CC      ppc-linux-user/accel/tcg/tcg-runtime.o
  CC      m68k-softmmu/disas.o
  CC      or1k-softmmu/gdbstub.o
  CC      mipsn32-linux-user/accel/stubs/kvm-stub.o
  CC      cris-linux-user/accel/stubs/kvm-stub.o
  CC      mipsel-softmmu/cpus.o
  CC      cris-linux-user/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/monitor.o
  CC      ppc-softmmu/balloon.o
  CC      ppc-softmmu/ioport.o
  CC      microblazeel-linux-user/accel/tcg/user-exec.o
  CC      mipsel-softmmu/gdbstub.o
  CC      mipsn32el-linux-user/linux-user/strace.o
  CC      tilegx-linux-user/accel/tcg/translate-all.o
  CC      xtensa-softmmu/dump.o
  CC      moxie-softmmu/gdbstub.o
  CC      s390x-softmmu/cpus.o
  CC      arm-linux-user/accel/tcg/translate-all.o
  CC      mipsel-linux-user/linux-user/strace.o
  CC      sh4-linux-user/accel/tcg/translate-all.o
  CC      ppc64abi32-linux-user/accel/tcg/user-exec.o
  CC      s390x-linux-user/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/accel/tcg/user-exec.o
  CC      mips-linux-user/accel/tcg/translate-all.o
  CC      or1k-linux-user/linux-user/uaccess.o
  CC      i386-linux-user/accel/tcg/translate-all.o
  CC      sh4eb-linux-user/accel/tcg/translator.o
  CC      microblaze-linux-user/accel/tcg/tcg-runtime.o
  CC      aarch64_be-linux-user/accel/tcg/translator.o
  CC      m68k-linux-user/accel/tcg/translator.o
  CC      unicore32-softmmu/gdbstub.o
  CC      ppc-softmmu/numa.o
  CC      sh4eb-softmmu/monitor.o
  CC      alpha-linux-user/linux-user/main.o
  CC      sh4-softmmu/fpu/softfloat.o
  CC      sh4-softmmu/disas.o
  CC      or1k-linux-user/linux-user/uname.o
  CC      ppc64abi32-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4-linux-user/accel/tcg/translator.o
  CC      xtensaeb-softmmu/arch_init.o
  CC      xtensaeb-softmmu/cpus.o
  CC      sparc-linux-user/accel/tcg/cpu-exec.o
  CC      mips64-softmmu/numa.o
  CC      microblaze-linux-user/accel/tcg/cpu-exec.o
  CC      hppa-linux-user/linux-user/syscall.o
  CC      sparc64-softmmu/memory.o
  CC      mipsn32-linux-user/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/balloon.o
  CC      sh4eb-softmmu/gdbstub.o
  CC      unicore32-softmmu/balloon.o
  CC      cris-linux-user/accel/tcg/cpu-exec.o
  CC      ppc-linux-user/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/accel/tcg/user-exec-stub.o
  CC      mips64el-linux-user/accel/stubs/kvm-stub.o
  CC      cris-softmmu/gdbstub.o
  CC      mipsn32-linux-user/accel/tcg/cpu-exec.o
  CC      mips64-linux-user/accel/stubs/hvf-stub.o
  GEN     i386-softmmu/gdbstub-xml.c
  CC      mipsel-linux-user/linux-user/mmap.o
  CC      mipsel-softmmu/ioport.o
  CC      m68k-linux-user/accel/tcg/user-exec.o
  CC      m68k-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4eb-linux-user/accel/tcg/user-exec.o
  CC      ppc64-softmmu/cpus.o
  CC      xtensa-softmmu/migration/ram.o
  CC      mipsn32el-linux-user/linux-user/mmap.o
  CC      ppc-softmmu/qtest.o
  CC      armeb-linux-user/linux-user/main.o
  CC      s390x-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc-softmmu/gdbstub.o
  CC      sparc64-linux-user/accel/tcg/translator.o
  CC      microblazeel-softmmu/monitor.o
  CC      ppc-softmmu/memory.o
  CC      nios2-linux-user/accel/tcg/cpu-exec-common.o
  CC      ppc64abi32-linux-user/linux-user/main.o
  CC      i386-softmmu/arch_init.o
  CC      ppcemb-softmmu/cpus.o
  CC      ppcemb-softmmu/monitor.o
  CC      arm-linux-user/accel/tcg/translator.o
  CC      ppc64le-linux-user/disas.o
  CC      alpha-softmmu/gdbstub.o
  CC      microblazeel-linux-user/accel/tcg/user-exec-stub.o
  CC      aarch64_be-linux-user/accel/tcg/user-exec.o
  CC      sh4eb-softmmu/balloon.o
  CC      arm-linux-user/accel/tcg/user-exec.o
  CC      aarch64-linux-user/target/arm/op_helper.o
  CC      s390x-softmmu/monitor.o
  CC      sh4eb-softmmu/ioport.o
  CC      sparc-linux-user/accel/tcg/cpu-exec-common.o
  CC      microblaze-linux-user/accel/tcg/cpu-exec-common.o
  CC      alpha-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/accel/tcg/user-exec.o
  CC      ppc-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc32plus-linux-user/accel/stubs/hvf-stub.o
  CC      s390x-linux-user/accel/tcg/translate-all.o
  CC      microblaze-linux-user/accel/tcg/translate-all.o
  CC      ppc-linux-user/accel/tcg/translate-all.o
  CC      moxie-softmmu/balloon.o
  CC      nios2-linux-user/accel/tcg/translate-all.o
  CC      mips64-softmmu/qtest.o
  CC      tricore-softmmu/cpus.o
  CC      cris-linux-user/accel/tcg/cpu-exec-common.o
  CC      microblazeel-linux-user/linux-user/main.o
  CC      cris-linux-user/accel/tcg/translate-all.o
  CC      sparc32plus-linux-user/accel/stubs/kvm-stub.o
  CC      sparc-softmmu/balloon.o
  CC      nios2-softmmu/monitor.o
  CC      mips-linux-user/accel/tcg/translator.o
  CC      sh4-linux-user/accel/tcg/user-exec.o
  CC      mipsel-linux-user/linux-user/signal.o
  CC      alpha-softmmu/balloon.o
  CC      xtensa-softmmu/accel/accel.o
  CC      xtensa-softmmu/accel/stubs/hax-stub.o
  CC      sparc-linux-user/accel/tcg/translate-all.o
  CC      alpha-linux-user/linux-user/strace.o
  CC      tilegx-linux-user/accel/tcg/translator.o
  CC      mipsn32-linux-user/accel/tcg/cpu-exec-common.o
  CC      xtensaeb-softmmu/monitor.o
  CC      arm-softmmu/cpus.o
  CC      mips64el-softmmu/monitor.o
  CC      armeb-linux-user/linux-user/syscall.o
  CC      ppc-softmmu/memory_mapping.o
  CC      sh4eb-linux-user/accel/tcg/user-exec-stub.o
  CC      mipsn32-linux-user/accel/tcg/translate-all.o
  CC      sparc64-linux-user/accel/tcg/user-exec.o
  CC      sparc-linux-user/accel/tcg/translator.o
  CC      ppcemb-softmmu/gdbstub.o
  CC      sparc64-linux-user/accel/tcg/user-exec-stub.o
  CC      i386-linux-user/accel/tcg/translator.o
  CC      hppa-linux-user/linux-user/strace.o
  CC      arm-softmmu/monitor.o
  CC      sparc32plus-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/accel/stubs/kvm-stub.o
  CC      sh4eb-linux-user/linux-user/main.o
  CC      ppc64abi32-linux-user/linux-user/syscall.o
  CC      mips64-softmmu/memory.o
  CC      cris-linux-user/accel/tcg/translator.o
  GEN     ppc64le-linux-user/gdbstub-xml.c
  CC      sparc-linux-user/accel/tcg/user-exec.o
  CC      hppa-linux-user/linux-user/mmap.o
  CC      s390x-softmmu/gdbstub.o
  CC      arm-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4eb-softmmu/numa.o
  CC      sparc32plus-linux-user/accel/tcg/cpu-exec.o
  CC      mipsel-softmmu/numa.o
  CC      arm-linux-user/linux-user/main.o
  CC      nios2-linux-user/accel/tcg/translator.o
  CC      microblaze-linux-user/accel/tcg/translator.o
  CC      alpha-linux-user/linux-user/mmap.o
  CC      armeb-linux-user/linux-user/strace.o
  CC      mipsel-linux-user/linux-user/elfload.o
  CC      ppc64le-linux-user/gdbstub.o
  CC      mips64-softmmu/memory_mapping.o
  CC      cris-softmmu/balloon.o
  CC      ppc64-linux-user/accel/tcg/tcg-runtime.o
  CC      tilegx-linux-user/accel/tcg/user-exec.o
  CC      m68k-linux-user/linux-user/main.o
  CC      i386-linux-user/accel/tcg/user-exec.o
  CC      mipsel-softmmu/qtest.o
  CC      mips-linux-user/accel/tcg/user-exec.o
  CC      microblazeel-linux-user/linux-user/syscall.o
  CC      mips64el-softmmu/gdbstub.o
  CC      sparc-linux-user/accel/tcg/user-exec-stub.o
  CC      alpha-linux-user/linux-user/signal.o
  CC      mips64-softmmu/dump.o
  CC      sparc64-softmmu/memory_mapping.o
  CC      moxie-softmmu/ioport.o
  CC      microblazeel-linux-user/linux-user/strace.o
  CC      aarch64_be-linux-user/accel/tcg/user-exec-stub.o
  CC      s390x-linux-user/accel/tcg/translator.o
  CC      armeb-linux-user/linux-user/mmap.o
  CC      arm-softmmu/gdbstub.o
  CC      ppc64abi32-linux-user/linux-user/strace.o
  CC      cris-linux-user/accel/tcg/user-exec.o
  CC      tilegx-linux-user/accel/tcg/user-exec-stub.o
  CC      nios2-softmmu/gdbstub.o
  CC      mips64-softmmu/migration/ram.o
  CC      mips-linux-user/accel/tcg/user-exec-stub.o
  CC      tricore-softmmu/monitor.o
  CC      microblaze-linux-user/accel/tcg/user-exec.o
  CC      sparc64-softmmu/dump.o
  CC      sh4-linux-user/accel/tcg/user-exec-stub.o
  CC      sparc32plus-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc32plus-linux-user/accel/tcg/translate-all.o
  CC      aarch64-linux-user/target/arm/helper.o
  CC      sparc-softmmu/ioport.o
  CC      ppc-linux-user/accel/tcg/translator.o
  CC      cris-softmmu/ioport.o
  CC      tricore-softmmu/gdbstub.o
  CC      mipsn32-linux-user/accel/tcg/translator.o
  CC      i386-softmmu/cpus.o
  CC      i386-softmmu/monitor.o
  CC      sh4eb-linux-user/linux-user/syscall.o
  CC      nios2-linux-user/accel/tcg/user-exec.o
  CC      aarch64_be-linux-user/linux-user/main.o
  CC      nios2-linux-user/accel/tcg/user-exec-stub.o
  CC      x86_64-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64le-linux-user/thunk.o
  CC      mips64el-linux-user/accel/tcg/tcg-runtime.o
  CC      ppc64le-linux-user/accel/stubs/hax-stub.o
  CC      m68k-linux-user/linux-user/syscall.o
  CC      nios2-linux-user/linux-user/main.o
  CC      sh4-linux-user/linux-user/main.o
  CC      sh4-softmmu/arch_init.o
  CC      s390x-linux-user/accel/tcg/user-exec.o
  CC      or1k-softmmu/balloon.o
  CC      tricore-softmmu/balloon.o
  CC      m68k-linux-user/linux-user/strace.o
  CC      moxie-softmmu/numa.o
  CC      aarch64_be-linux-user/linux-user/syscall.o
  CC      ppc64-linux-user/accel/tcg/cpu-exec.o
  GEN     m68k-softmmu/gdbstub-xml.c
  CC      arm-linux-user/linux-user/syscall.o
  CC      alpha-softmmu/ioport.o
  CC      aarch64-linux-user/target/arm/cpu.o
  CC      cris-softmmu/numa.o
  CC      microblaze-linux-user/accel/tcg/user-exec-stub.o
  CC      arm-linux-user/linux-user/strace.o
  CC      sparc64-linux-user/linux-user/main.o
  CC      ppc64-softmmu/monitor.o
  CC      s390x-softmmu/balloon.o
  CC      mips64el-linux-user/accel/tcg/cpu-exec.o
  CC      aarch64-linux-user/target/arm/neon_helper.o
  CC      ppcemb-softmmu/balloon.o
  CC      ppcemb-softmmu/ioport.o
  CC      unicore32-softmmu/ioport.o
  CC      i386-softmmu/gdbstub.o
  CC      x86_64-linux-user/linux-user/main.o
  CC      aarch64-linux-user/target/arm/iwmmxt_helper.o
  CC      cris-linux-user/accel/tcg/user-exec-stub.o
  CC      xtensa-softmmu/accel/stubs/hvf-stub.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  CC      sparc32plus-linux-user/accel/tcg/translator.o
  CC      sparc64-linux-user/linux-user/syscall.o
  CC      sparc64-linux-user/linux-user/strace.o
  CC      mips-linux-user/linux-user/main.o
  CCAS    or1k-linux-user/linux-user/safe-syscall.o
  CC      sh4-linux-user/linux-user/syscall.o
  CC      sh4-linux-user/linux-user/strace.o
  CC      or1k-softmmu/ioport.o
  CC      sh4eb-softmmu/qtest.o
  CC      aarch64-softmmu/arch_init.o
  CC      cris-linux-user/linux-user/main.o
  CC      xtensa-softmmu/accel/stubs/kvm-stub.o
  CC      ppc64-linux-user/accel/tcg/cpu-exec-common.o
  CC      ppc64abi32-linux-user/linux-user/mmap.o
  CC      mipsn32-linux-user/accel/tcg/user-exec.o
  CC      moxie-softmmu/qtest.o
  CC      moxie-softmmu/memory.o
  CC      ppc64-linux-user/accel/tcg/translate-all.o
  CC      mips64el-linux-user/accel/tcg/cpu-exec-common.o
  CC      sparc-softmmu/numa.o
  CC      sparc-linux-user/linux-user/main.o
  CC      cris-softmmu/qtest.o
  CC      sparc64-softmmu/migration/ram.o
  CC      sparc64-softmmu/accel/accel.o
  CC      hppa-linux-user/linux-user/signal.o
  CC      ppc64-linux-user/accel/tcg/translator.o
  CC      ppc64-linux-user/accel/tcg/user-exec.o
  CC      mips64-linux-user/accel/stubs/kvm-stub.o
  CC      tilegx-linux-user/linux-user/main.o
  CC      cris-softmmu/memory.o
  CC      mips-linux-user/linux-user/syscall.o
  CC      ppc-linux-user/accel/tcg/user-exec.o
  CC      mipsn32-linux-user/accel/tcg/user-exec-stub.o
  CC      mipsn32el-linux-user/linux-user/signal.o
  CC      xtensa-softmmu/accel/tcg/tcg-all.o
  CC      ppc64abi32-linux-user/linux-user/signal.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/arch_init.o
  CC      sparc64-softmmu/accel/stubs/hax-stub.o
  CC      mips-linux-user/linux-user/strace.o
  CC      mipsn32-linux-user/linux-user/main.o
  CC      i386-linux-user/accel/tcg/user-exec-stub.o
  CC      lm32-softmmu/arch_init.o
  CC      ppc64-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64le-linux-user/accel/stubs/hvf-stub.o
  CC      s390x-softmmu/ioport.o
  CC      aarch64-softmmu/cpus.o
  CC      mips64-linux-user/accel/tcg/tcg-runtime.o
  CC      mips64-softmmu/accel/accel.o
  CC      sparc-softmmu/qtest.o
  CC      mips64-softmmu/accel/stubs/hax-stub.o
  CC      sparc32plus-linux-user/accel/tcg/user-exec.o
  CC      unicore32-softmmu/numa.o
  CC      cris-linux-user/linux-user/syscall.o
  CC      ppc-softmmu/dump.o
  CC      aarch64_be-linux-user/linux-user/strace.o
  CC      mips64el-linux-user/accel/tcg/translate-all.o
  CC      tilegx-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/linux-user/syscall.o
  CC      or1k-softmmu/numa.o
  CC      mipsel-softmmu/memory.o
  CC      x86_64-softmmu/cpus.o
  CC      alpha-softmmu/numa.o
  CC      m68k-softmmu/arch_init.o
  CC      i386-softmmu/balloon.o
  CC      ppcemb-softmmu/numa.o
  CC      ppcemb-softmmu/qtest.o
  CC      microblaze-linux-user/linux-user/main.o
  CC      xtensa-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/monitor.o
  CC      x86_64-linux-user/linux-user/strace.o
  CC      i386-linux-user/linux-user/main.o
  CC      nios2-linux-user/linux-user/syscall.o
  CC      microblazeel-linux-user/linux-user/mmap.o
  CC      x86_64-linux-user/linux-user/mmap.o
  CC      moxie-softmmu/memory_mapping.o
  CC      microblazeel-softmmu/gdbstub.o
  CC      i386-softmmu/ioport.o
  CC      sh4eb-softmmu/memory.o
  CC      sparc-softmmu/memory.o
  CC      m68k-softmmu/cpus.o
  CC      ppc64abi32-linux-user/linux-user/elfload.o
  CC      microblaze-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/linux-user/signal.o
  CC      ppc64le-linux-user/accel/stubs/kvm-stub.o
  CC      s390x-linux-user/accel/tcg/user-exec-stub.o
  CC      nios2-softmmu/balloon.o
  CC      m68k-softmmu/monitor.o
  CC      sparc64-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/gdbstub.o
  CC      s390x-softmmu/numa.o
  CC      mipsel-softmmu/memory_mapping.o
  CC      sh4eb-linux-user/linux-user/strace.o
  CC      mipsel-linux-user/linux-user/linuxload.o
  CC      sparc-linux-user/linux-user/syscall.o
  CC      sparc-linux-user/linux-user/strace.o
  CC      aarch64-linux-user/target/arm/gdbstub.o
  CC      mips64-linux-user/accel/tcg/cpu-exec.o
  CC      alpha-linux-user/linux-user/elfload.o
  CC      lm32-softmmu/cpus.o
  CC      mipsn32-linux-user/linux-user/syscall.o
  CC      ppc64le-linux-user/accel/tcg/tcg-runtime.o
  CC      or1k-linux-user/target/openrisc/cpu.o
  CC      armeb-linux-user/linux-user/signal.o
  CC      ppc64abi32-linux-user/linux-user/linuxload.o
  CC      microblaze-linux-user/linux-user/strace.o
  CC      alpha-softmmu/qtest.o
  CC      or1k-softmmu/qtest.o
  CC      ppc64le-linux-user/accel/tcg/cpu-exec.o
  CC      i386-linux-user/linux-user/syscall.o
  CC      s390x-softmmu/qtest.o
  CC      xtensaeb-softmmu/gdbstub.o
  CC      sh4-softmmu/cpus.o
  CC      s390x-linux-user/linux-user/main.o
  CC      sh4eb-softmmu/memory_mapping.o
  CC      arm-linux-user/linux-user/mmap.o
  CC      ppc64-linux-user/linux-user/main.o
  CC      microblazeel-softmmu/balloon.o
  CC      microblaze-softmmu/cpus.o
  CC      i386-linux-user/linux-user/strace.o
  CC      mips64-softmmu/accel/stubs/hvf-stub.o
  CC      tricore-softmmu/ioport.o
  CC      unicore32-softmmu/qtest.o
  CC      mips64-softmmu/accel/stubs/kvm-stub.o
  CC      mips64el-linux-user/accel/tcg/translator.o
  CC      or1k-linux-user/target/openrisc/exception.o
  CC      aarch64_be-linux-user/linux-user/mmap.o
  CC      mips64-linux-user/accel/tcg/cpu-exec-common.o
  CC      mips64-linux-user/accel/tcg/translate-all.o
  CC      ppcemb-softmmu/memory.o
  CC      mips-softmmu/arch_init.o
  CC      sparc32plus-linux-user/accel/tcg/user-exec-stub.o
  CC      sh4-softmmu/monitor.o
  CC      nios2-softmmu/ioport.o
  CC      i386-linux-user/linux-user/mmap.o
  CC      i386-linux-user/linux-user/signal.o
  CC      mips64-linux-user/accel/tcg/translator.o
  CC      mips-linux-user/linux-user/mmap.o
  CC      mips64-linux-user/accel/tcg/user-exec.o
  CC      hppa-linux-user/linux-user/elfload.o
  CC      xtensa-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/memory.o
  CC      microblaze-softmmu/monitor.o
  CC      ppc-linux-user/accel/tcg/user-exec-stub.o
  CC      or1k-linux-user/target/openrisc/interrupt.o
  CC      microblaze-linux-user/linux-user/mmap.o
  CC      sparc64-softmmu/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/gdbstub.o
  CC      nios2-softmmu/numa.o
  CC      or1k-softmmu/memory.o
  CC      ppcemb-softmmu/memory_mapping.o
  CC      ppcemb-softmmu/dump.o
  CC      nios2-softmmu/qtest.o
  CC      mips64el-linux-user/accel/tcg/user-exec.o
  CC      ppc-linux-user/linux-user/main.o
  CC      mips64el-softmmu/balloon.o
  CC      ppc64-linux-user/linux-user/syscall.o
  CC      aarch64_be-linux-user/linux-user/signal.o
  CC      s390x-softmmu/memory.o
  CC      mips64el-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc64le-linux-user/accel/tcg/cpu-exec-common.o
  CC      lm32-softmmu/monitor.o
  CC      ppc-softmmu/migration/ram.o
  CC      mips64-softmmu/accel/tcg/tcg-all.o
  CC      mips-softmmu/cpus.o
  CC      aarch64-softmmu/monitor.o
  CC      aarch64-softmmu/gdbstub.o
  CC      alpha-softmmu/memory_mapping.o
  CC      sparc-softmmu/memory_mapping.o
  CC      sparc32plus-linux-user/linux-user/main.o
  CC      sparc32plus-linux-user/linux-user/syscall.o
  CC      or1k-linux-user/target/openrisc/mmu.o
  CC      microblazeel-linux-user/linux-user/signal.o
  CC      microblazeel-linux-user/linux-user/elfload.o
  CC      arm-softmmu/balloon.o
  CC      ppc64-linux-user/linux-user/strace.o
  CC      mips64el-linux-user/linux-user/main.o
  CC      ppc64abi32-linux-user/linux-user/uaccess.o
  CC      ppc64le-linux-user/accel/tcg/translate-all.o
  CC      sparc64-softmmu/accel/tcg/tcg-all.o
  CC      sparc64-softmmu/accel/tcg/cputlb.o
  CC      mips64el-softmmu/ioport.o
  CC      sh4-linux-user/linux-user/mmap.o
  CC      x86_64-softmmu/balloon.o
  CC      ppc64-linux-user/linux-user/mmap.o
  CC      unicore32-softmmu/memory.o
  CC      s390x-linux-user/linux-user/syscall.o
  CC      tricore-softmmu/numa.o
  CC      unicore32-softmmu/memory_mapping.o
  CC      sparc-softmmu/dump.o
  CC      ppcemb-softmmu/migration/ram.o
  CC      mips64-softmmu/accel/tcg/cputlb.o
  CC      or1k-linux-user/target/openrisc/translate.o
  CC      unicore32-softmmu/dump.o
  CC      aarch64-softmmu/balloon.o
  CC      hppa-linux-user/linux-user/linuxload.o
  CC      cris-softmmu/memory_mapping.o
  CC      m68k-softmmu/balloon.o
  CC      nios2-linux-user/linux-user/strace.o
  CC      m68k-softmmu/ioport.o
  CC      sh4eb-linux-user/linux-user/mmap.o
  CC      alpha-softmmu/dump.o
  CC      m68k-softmmu/numa.o
  CC      sparc32plus-linux-user/linux-user/strace.o
  CC      m68k-softmmu/qtest.o
  CC      mips-softmmu/monitor.o
  CC      mipsel-softmmu/dump.o
  CC      i386-softmmu/numa.o
  CC      microblazeel-softmmu/ioport.o
  CC      i386-softmmu/qtest.o
  CC      ppc64-softmmu/gdbstub.o
  CC      arm-softmmu/ioport.o
  CC      sparc64-linux-user/linux-user/mmap.o
  CC      xtensaeb-softmmu/balloon.o
  CC      tricore-softmmu/qtest.o
  CC      cris-linux-user/linux-user/strace.o
  CC      arm-softmmu/numa.o
  CC      or1k-linux-user/target/openrisc/exception_helper.o
  CC      m68k-softmmu/memory.o
  CC      xtensaeb-softmmu/ioport.o
  CC      x86_64-softmmu/ioport.o
  CC      mipsel-softmmu/migration/ram.o
  CC      arm-linux-user/linux-user/signal.o
  CC      xtensaeb-softmmu/numa.o
  CC      ppc64le-linux-user/accel/tcg/translator.o
  CC      tilegx-linux-user/linux-user/strace.o
  CC      xtensaeb-softmmu/qtest.o
  CC      mips64-linux-user/accel/tcg/user-exec-stub.o
  CC      ppc-linux-user/linux-user/syscall.o
  CC      mips64el-softmmu/numa.o
  CC      ppc-linux-user/linux-user/strace.o
  CC      microblazeel-softmmu/numa.o
  CC      or1k-softmmu/memory_mapping.o
  CC      ppc64-softmmu/balloon.o
  CC      ppc64-softmmu/ioport.o
  CC      sh4eb-softmmu/dump.o
  CC      nios2-softmmu/memory.o
  CC      nios2-softmmu/memory_mapping.o
  CC      moxie-softmmu/dump.o
  CC      sparc64-softmmu/accel/tcg/tcg-runtime.o
  CC      ppc64le-linux-user/accel/tcg/user-exec.o
  CC      mips-linux-user/linux-user/signal.o
  CC      alpha-softmmu/migration/ram.o
  CC      arm-linux-user/linux-user/elfload.o
  CC      mips64-linux-user/linux-user/main.o
  CC      tricore-softmmu/memory.o
  CC      m68k-linux-user/linux-user/mmap.o
  CC      unicore32-softmmu/migration/ram.o
  CC      microblaze-linux-user/linux-user/signal.o
  CC      ppc64abi32-linux-user/linux-user/uname.o
  CC      nios2-linux-user/linux-user/mmap.o
  CC      ppc64-softmmu/numa.o
  CC      s390x-linux-user/linux-user/strace.o
  CC      mipsn32el-linux-user/linux-user/elfload.o
  CC      unicore32-softmmu/accel/accel.o
  CC      sh4-softmmu/gdbstub.o
  CC      ppcemb-softmmu/accel/accel.o
  CC      tilegx-linux-user/linux-user/mmap.o
  CC      i386-linux-user/linux-user/elfload.o
  CC      mips64el-linux-user/linux-user/syscall.o
  CC      x86_64-linux-user/linux-user/elfload.o
  CC      ppcemb-softmmu/accel/kvm/kvm-all.o
  CC      nios2-linux-user/linux-user/signal.o
  CC      sh4eb-softmmu/migration/ram.o
  CC      xtensa-softmmu/accel/tcg/cpu-exec.o
  CC      mips64el-linux-user/linux-user/strace.o
  CC      cris-linux-user/linux-user/mmap.o
  CC      arm-softmmu/qtest.o
  CC      i386-softmmu/memory.o
  CC      microblaze-linux-user/linux-user/elfload.o
  CC      sh4eb-linux-user/linux-user/signal.o
  CC      mipsn32-linux-user/linux-user/strace.o
  CC      mips64el-softmmu/qtest.o
  CC      microblaze-linux-user/linux-user/linuxload.o
  CC      microblazeel-softmmu/qtest.o
  CC      arm-linux-user/linux-user/linuxload.o
  CC      microblaze-softmmu/gdbstub.o
  CC      mips64el-softmmu/memory.o
  CC      microblaze-linux-user/linux-user/uaccess.o
  CC      sparc-softmmu/migration/ram.o
  CC      aarch64_be-linux-user/linux-user/elfload.o
  CC      arm-linux-user/linux-user/uaccess.o
  CC      i386-softmmu/memory_mapping.o
  CC      armeb-linux-user/linux-user/elfload.o
  CC      mips-softmmu/gdbstub.o
  CC      cris-softmmu/dump.o
  CC      ppc64-softmmu/qtest.o
  CC      s390x-softmmu/memory_mapping.o
  CC      mipsel-linux-user/linux-user/uaccess.o
  CC      mipsel-linux-user/linux-user/uname.o
  CC      sh4-softmmu/balloon.o
  CC      mips64el-softmmu/memory_mapping.o
  CC      sparc-linux-user/linux-user/mmap.o
  CC      xtensaeb-softmmu/memory.o
  CC      ppc-softmmu/accel/accel.o
  CC      ppcemb-softmmu/accel/kvm/sev.o
  CC      nios2-linux-user/linux-user/elfload.o
  CC      sparc32plus-linux-user/linux-user/mmap.o
  CC      sparc32plus-linux-user/linux-user/signal.o
  CC      microblazeel-linux-user/linux-user/linuxload.o
  CC      s390x-softmmu/dump.o
  CC      microblazeel-softmmu/memory.o
  CC      mipsel-softmmu/accel/accel.o
  CC      ppcemb-softmmu/accel/stubs/hax-stub.o
  CC      s390x-linux-user/linux-user/mmap.o
  CC      ppc-softmmu/accel/kvm/kvm-all.o
  CC      armeb-linux-user/linux-user/linuxload.o
  CC      x86_64-softmmu/numa.o
  CC      sparc64-linux-user/linux-user/signal.o
  CC      mips64-linux-user/linux-user/syscall.o
  CC      sparc64-linux-user/linux-user/elfload.o
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c: In function ‘sev_dbg_enc_dec’:
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘__u64’ [-Werror=format=]
                      fw_error_to_str(error));
                      ^
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘__u64’ [-Werror=format=]
  CC      hppa-linux-user/linux-user/uaccess.o
  CC      x86_64-softmmu/qtest.o
  CC      ppc64le-linux-user/accel/tcg/user-exec-stub.o
  CC      mipsn32el-linux-user/linux-user/linuxload.o
cc1: all warnings being treated as errors
make[1]: *** [accel/kvm/sev.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC      tricore-softmmu/memory_mapping.o
  CC      microblaze-softmmu/balloon.o
  CC      xtensa-softmmu/accel/tcg/cpu-exec-common.o
  CC      ppc-softmmu/accel/kvm/sev.o
  CC      sparc64-linux-user/linux-user/linuxload.o
  CC      sh4-linux-user/linux-user/signal.o
  CC      cris-softmmu/migration/ram.o
  CC      sparc32plus-linux-user/linux-user/elfload.o
  CCAS    mipsel-linux-user/linux-user/safe-syscall.o
  CC      sparc32plus-linux-user/linux-user/linuxload.o
  CC      mips64el-softmmu/dump.o
  CC      microblazeel-softmmu/memory_mapping.o
  CC      mipsel-softmmu/accel/stubs/hax-stub.o
  CC      mipsel-linux-user/target/mips/translate.o
  CC      aarch64-softmmu/ioport.o
  CC      sparc64-linux-user/linux-user/uaccess.o
  CC      sparc64-softmmu/accel/tcg/cpu-exec.o
  CC      arm-softmmu/memory.o
  CC      ppc64-softmmu/memory.o
  CC      moxie-softmmu/migration/ram.o
  CC      ppc64le-linux-user/linux-user/main.o
  CC      ppc64-softmmu/memory_mapping.o
  CC      lm32-softmmu/gdbstub.o
  CC      sh4-softmmu/ioport.o
  CC      or1k-linux-user/target/openrisc/fpu_helper.o
  CC      xtensaeb-softmmu/memory_mapping.o
  CC      microblaze-linux-user/linux-user/uname.o
  CC      sparc64-softmmu/accel/tcg/cpu-exec-common.o
  CC      aarch64-linux-user/target/arm/cpu64.o
  CC      microblazeel-softmmu/dump.o
  CC      sh4eb-softmmu/accel/accel.o
  CC      i386-linux-user/linux-user/linuxload.o
  CC      s390x-softmmu/migration/ram.o
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c: In function ‘sev_dbg_enc_dec’:
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘__u64’ [-Werror=format=]
                      fw_error_to_str(error));
                      ^
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘__u64’ [-Werror=format=]
  CC      mips-linux-user/linux-user/elfload.o
  CC      mips64-softmmu/accel/tcg/tcg-runtime.o
cc1: all warnings being treated as errors
make[1]: *** [accel/kvm/sev.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC      mips64-softmmu/accel/tcg/cpu-exec.o
  CC      ppc-linux-user/linux-user/mmap.o
  CC      sh4eb-softmmu/accel/stubs/hax-stub.o
  CC      sh4-linux-user/linux-user/elfload.o
  CC      xtensa-softmmu/accel/tcg/translate-all.o
make: *** [subdir-ppcemb-softmmu] Error 2
make: *** Waiting for unfinished jobs....
  CC      x86_64-linux-user/linux-user/linuxload.o
  CC      arm-softmmu/memory_mapping.o
  CC      m68k-linux-user/linux-user/signal.o
  CC      mipsel-linux-user/target/mips/dsp_helper.o
  CC      mipsel-linux-user/target/mips/op_helper.o
  CC      tilegx-linux-user/linux-user/signal.o
  CC      sparc-softmmu/accel/accel.o
  CC      alpha-softmmu/accel/accel.o
  CC      s390x-linux-user/linux-user/signal.o
  CC      or1k-softmmu/dump.o
  CC      or1k-linux-user/target/openrisc/interrupt_helper.o
  CC      m68k-linux-user/linux-user/elfload.o
  CC      microblaze-softmmu/ioport.o
  CC      cris-linux-user/linux-user/signal.o
  CC      mipsel-softmmu/accel/stubs/hvf-stub.o
  CC      sparc64-softmmu/accel/tcg/translate-all.o
  CC      s390x-softmmu/accel/accel.o
  CC      x86_64-linux-user/linux-user/uaccess.o
  CC      aarch64-softmmu/numa.o
  CC      mips64-linux-user/linux-user/strace.o
  CC      ppc64-softmmu/dump.o
  CC      mips64-softmmu/accel/tcg/cpu-exec-common.o
  CC      unicore32-softmmu/accel/stubs/hax-stub.o
  CC      x86_64-linux-user/linux-user/uname.o
  CC      m68k-softmmu/memory_mapping.o
  CC      s390x-softmmu/accel/stubs/hax-stub.o
  CC      microblazeel-linux-user/linux-user/uaccess.o
  CC      sh4-softmmu/numa.o
  CC      sparc-softmmu/accel/stubs/hax-stub.o
  CC      xtensa-softmmu/accel/tcg/translator.o
  CC      alpha-softmmu/accel/stubs/hax-stub.o
  CC      mips64-softmmu/accel/tcg/translate-all.o
  CC      sparc64-linux-user/linux-user/uname.o
  CC      sparc-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/dump.o
  CC      i386-softmmu/dump.o
  CC      x86_64-softmmu/memory.o
  CC      ppc64le-linux-user/linux-user/syscall.o
  CC      mipsel-softmmu/accel/stubs/kvm-stub.o
  CC      ppc64le-linux-user/linux-user/strace.o
  CC      alpha-linux-user/linux-user/linuxload.o
  CC      sh4eb-linux-user/linux-user/elfload.o
  CC      unicore32-softmmu/accel/stubs/hvf-stub.o
  CC      sparc-softmmu/accel/stubs/kvm-stub.o
  CC      m68k-softmmu/migration/ram.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      microblaze-softmmu/numa.o
  CC      ppc64le-linux-user/linux-user/mmap.o
  CC      cris-softmmu/accel/accel.o
  CC      unicore32-softmmu/accel/stubs/kvm-stub.o
  CC      mips-linux-user/linux-user/linuxload.o
  CC      cris-linux-user/linux-user/elfload.o
  CC      mipsn32-linux-user/linux-user/mmap.o
  CC      mips-softmmu/balloon.o
  CCAS    microblaze-linux-user/linux-user/safe-syscall.o
  CC      sparc-softmmu/accel/tcg/tcg-all.o
  CC      tricore-softmmu/dump.o
  CC      mipsel-softmmu/accel/tcg/tcg-all.o
  CC      aarch64-softmmu/qtest.o
  CC      sh4eb-softmmu/accel/stubs/hvf-stub.o
  CC      arm-linux-user/linux-user/uname.o
  CC      mips64el-linux-user/linux-user/mmap.o
  CC      alpha-softmmu/accel/stubs/hvf-stub.o
  CCAS    ppc64abi32-linux-user/linux-user/safe-syscall.o
  CC      mipsn32-linux-user/linux-user/signal.o
  CC      aarch64-softmmu/memory.o
  CC      i386-softmmu/migration/ram.o
  CC      ppc64le-linux-user/linux-user/signal.o
  CC      unicore32-softmmu/accel/tcg/tcg-all.o
  CC      xtensa-softmmu/hw/core/generic-loader.o
  CC      ppc64-softmmu/migration/ram.o
  CC      hppa-linux-user/linux-user/uname.o
  CC      ppc64le-linux-user/linux-user/elfload.o
  CC      lm32-softmmu/balloon.o
  CC      mipsel-softmmu/accel/tcg/cputlb.o
  CC      mipsel-softmmu/accel/tcg/tcg-runtime.o
  CC      nios2-softmmu/dump.o
  CC      mips64-softmmu/accel/tcg/translator.o
  CC      or1k-linux-user/target/openrisc/mmu_helper.o
  CC      sparc64-softmmu/accel/tcg/translator.o
  CC      unicore32-softmmu/accel/tcg/cputlb.o
  CC      mips-linux-user/linux-user/uaccess.o
  CC      sh4eb-softmmu/accel/stubs/kvm-stub.o
  CC      sh4eb-linux-user/linux-user/linuxload.o
  CC      sparc-softmmu/accel/tcg/cputlb.o
  CC      unicore32-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/tcg-all.o
  CC      alpha-softmmu/accel/stubs/kvm-stub.o
  CC      sh4-softmmu/qtest.o
  CC      i386-linux-user/linux-user/uaccess.o
  CC      mips-softmmu/ioport.o
  CC      sh4eb-linux-user/linux-user/uaccess.o
  CCAS    arm-linux-user/linux-user/safe-syscall.o
  CC      sh4-softmmu/memory.o
  CC      i386-softmmu/accel/accel.o
  CC      i386-linux-user/linux-user/uname.o
  CCAS    i386-linux-user/linux-user/safe-syscall.o
  CC      ppc64-softmmu/accel/accel.o
  CCAS    hppa-linux-user/linux-user/safe-syscall.o
  CC      hppa-linux-user/target/hppa/translate.o
  CC      ppc64-linux-user/linux-user/signal.o
  CC      microblazeel-softmmu/migration/ram.o
  CC      lm32-softmmu/ioport.o
  CC      microblazeel-linux-user/linux-user/uname.o
  CC      sh4eb-linux-user/linux-user/uname.o
  CC      x86_64-softmmu/dump.o
  CC      cris-linux-user/linux-user/linuxload.o
  CC      xtensa-softmmu/hw/core/null-machine.o
  CC      microblaze-softmmu/qtest.o
  CC      alpha-softmmu/accel/tcg/cputlb.o
  CC      mipsel-softmmu/accel/tcg/cpu-exec.o
  CC      sh4-linux-user/linux-user/linuxload.o
  CC      cris-linux-user/linux-user/uaccess.o
  CC      m68k-softmmu/accel/accel.o
  CC      ppc64le-linux-user/linux-user/linuxload.o
  CC      sh4eb-softmmu/accel/tcg/tcg-all.o
make: *** [subdir-ppc-softmmu] Error 2
  CC      sh4-softmmu/memory_mapping.o
  CC      mips-softmmu/numa.o
  CC      or1k-linux-user/target/openrisc/sys_helper.o
  CC      ppc64-softmmu/accel/kvm/kvm-all.o
  CC      microblazeel-softmmu/accel/accel.o
  CCAS    sparc64-linux-user/linux-user/safe-syscall.o
  CC      mips-softmmu/qtest.o
  CC      tilegx-linux-user/linux-user/elfload.o
  CC      ppc64abi32-linux-user/target/ppc/cpu-models.o
  CC      armeb-linux-user/linux-user/uaccess.o
  CC      m68k-softmmu/accel/stubs/hax-stub.o
  CC      sparc32plus-linux-user/linux-user/uaccess.o
  CC      hppa-linux-user/target/hppa/helper.o
  CCAS    x86_64-linux-user/linux-user/safe-syscall.o
  CC      nios2-linux-user/linux-user/linuxload.o
  CC      sparc32plus-linux-user/linux-user/uname.o
  CC      mips64el-softmmu/migration/ram.o
  CC      cris-softmmu/accel/stubs/hax-stub.o
  CCAS    microblazeel-linux-user/linux-user/safe-syscall.o
  CC      mipsn32-linux-user/linux-user/elfload.o
  CC      moxie-softmmu/accel/accel.o
  CC      sh4eb-softmmu/accel/tcg/cputlb.o
  CC      sh4-softmmu/dump.o
  CC      sh4-softmmu/migration/ram.o
  CC      or1k-linux-user/target/openrisc/gdbstub.o
  CC      xtensa-softmmu/hw/misc/mmio_interface.o
  CC      s390x-softmmu/accel/stubs/hvf-stub.o
  CC      sparc64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      hppa-linux-user/target/hppa/cpu.o
  CC      sparc-linux-user/linux-user/signal.o
  CC      sparc-softmmu/accel/tcg/tcg-runtime.o
  CC      mipsn32el-linux-user/linux-user/uaccess.o
  CC      mipsn32-linux-user/linux-user/linuxload.o
  CC      mipsel-softmmu/accel/tcg/cpu-exec-common.o
  CC      ppc-linux-user/linux-user/signal.o
  CC      i386-linux-user/linux-user/vm86.o
  CC      alpha-softmmu/accel/tcg/tcg-runtime.o
  CC      s390x-linux-user/linux-user/elfload.o
  CC      lm32-softmmu/numa.o
  CC      lm32-softmmu/qtest.o
  CC      cris-softmmu/accel/stubs/hvf-stub.o
  CC      or1k-softmmu/migration/ram.o
  CC      cris-softmmu/accel/stubs/kvm-stub.o
  CC      microblazeel-linux-user/linux-user/flatload.o
  CC      unicore32-softmmu/accel/tcg/cpu-exec.o
  CC      s390x-linux-user/linux-user/linuxload.o
  CC      microblaze-softmmu/memory.o
  CC      xtensa-softmmu/hw/net/vhost_net.o
  CC      aarch64_be-linux-user/linux-user/linuxload.o
  CC      cris-softmmu/accel/tcg/tcg-all.o
  CC      aarch64_be-linux-user/linux-user/uaccess.o
  CC      ppc64le-linux-user/linux-user/uaccess.o
  CC      microblazeel-softmmu/accel/stubs/hax-stub.o
  CC      nios2-softmmu/migration/ram.o
  CC      s390x-softmmu/accel/stubs/kvm-stub.o
  CC      m68k-softmmu/accel/stubs/hvf-stub.o
  CC      arm-linux-user/linux-user/flatload.o
  CC      mips64-softmmu/hw/9pfs/virtio-9p-device.o
  CCAS    sparc32plus-linux-user/linux-user/safe-syscall.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11.o
  CC      aarch64_be-linux-user/linux-user/uname.o
  CC      arm-softmmu/dump.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/migration/ram.o
  CC      mipsn32el-linux-user/linux-user/uname.o
  CC      tricore-softmmu/migration/ram.o
  CC      or1k-linux-user/trace/control-target.o
  CC      tricore-softmmu/accel/accel.o
  CC      hppa-linux-user/target/hppa/op_helper.o
  CC      mips64el-linux-user/linux-user/signal.o
  CCAS    aarch64_be-linux-user/linux-user/safe-syscall.o
  CC      or1k-softmmu/accel/accel.o
  CC      microblaze-linux-user/linux-user/flatload.o
  CC      moxie-softmmu/accel/stubs/hax-stub.o
  CC      xtensaeb-softmmu/dump.o
  CC      i386-softmmu/accel/stubs/hax-stub.o
  CC      or1k-softmmu/accel/stubs/hax-stub.o
  CC      mips64el-linux-user/linux-user/elfload.o
  CC      sparc64-softmmu/hw/block/virtio-blk.o
  CC      xtensa-softmmu/hw/net/rocker/qmp-norocker.o
  CC      tricore-softmmu/accel/stubs/hax-stub.o
  CC      ppc64le-linux-user/linux-user/uname.o
  CC      mips64el-linux-user/linux-user/linuxload.o
  CC      sparc32plus-linux-user/target/sparc/translate.o
  CC      nios2-softmmu/accel/accel.o
  CC      arm-softmmu/accel/accel.o
  CC      mips-linux-user/linux-user/uname.o
  CC      microblazeel-softmmu/accel/stubs/hvf-stub.o
  CC      cris-softmmu/accel/tcg/cputlb.o
  CC      aarch64-linux-user/target/arm/translate-a64.o
  CC      cris-softmmu/accel/tcg/tcg-runtime.o
  CC      armeb-linux-user/linux-user/uname.o
  CC      sh4-linux-user/linux-user/uaccess.o
  CC      m68k-softmmu/accel/stubs/kvm-stub.o
  CCAS    mipsn32el-linux-user/linux-user/safe-syscall.o
  CC      sparc-softmmu/accel/tcg/cpu-exec.o
  CC      sparc-softmmu/accel/tcg/cpu-exec-common.o
  CC      i386-softmmu/accel/stubs/hvf-stub.o
  CC      alpha-softmmu/accel/tcg/cpu-exec.o
  CC      mipsn32el-linux-user/target/mips/translate.o
  CC      nios2-linux-user/linux-user/uaccess.o
  CC      s390x-softmmu/accel/tcg/tcg-all.o
  CC      moxie-softmmu/accel/stubs/hvf-stub.o
  CC      ppc64-linux-user/linux-user/elfload.o
  CC      sparc32plus-linux-user/target/sparc/helper.o
  CC      cris-linux-user/linux-user/uname.o
  CC      or1k-linux-user/trace/generated-helpers.o
  CC      xtensa-softmmu/hw/vfio/common.o
  CC      mipsn32-linux-user/linux-user/uaccess.o
  CC      sparc64-softmmu/hw/block/vhost-user-blk.o
  CC      microblaze-linux-user/target/microblaze/translate.o
  CC      mips64-softmmu/hw/block/virtio-blk.o
  CC      mips64-softmmu/hw/block/vhost-user-blk.o
  CC      mips-softmmu/memory.o
  CCAS    ppc64le-linux-user/linux-user/safe-syscall.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      sparc-linux-user/linux-user/elfload.o
  CC      s390x-linux-user/linux-user/uaccess.o
  CC      ppc64abi32-linux-user/target/ppc/cpu.o
  CC      nios2-softmmu/accel/stubs/hax-stub.o
  CC      sparc64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/dump.o
  CC      mipsn32el-linux-user/target/mips/dsp_helper.o
  CC      x86_64-softmmu/migration/ram.o
  CC      mipsn32el-linux-user/target/mips/op_helper.o
  CC      sparc-softmmu/accel/tcg/translate-all.o
  CC      sparc64-softmmu/hw/char/virtio-serial-bus.o
  CC      m68k-linux-user/linux-user/linuxload.o
  CC      tricore-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-softmmu/accel/tcg/tcg-all.o
  CC      s390x-softmmu/accel/tcg/cputlb.o
  CC      s390x-linux-user/linux-user/uname.o
  CC      i386-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/migration/ram.o
  CC      moxie-softmmu/accel/stubs/kvm-stub.o
  CC      alpha-softmmu/accel/tcg/cpu-exec-common.o
  CC      lm32-softmmu/memory.o
  CCAS    armeb-linux-user/linux-user/safe-syscall.o
  CC      alpha-softmmu/accel/tcg/translate-all.o
  LINK    or1k-linux-user/qemu-or1k
  CC      aarch64_be-linux-user/linux-user/flatload.o
  CC      aarch64-linux-user/target/arm/helper-a64.o
  CCAS    sh4eb-linux-user/linux-user/safe-syscall.o
  CC      mipsel-linux-user/target/mips/lmi_helper.o
  CC      xtensaeb-softmmu/migration/ram.o
  CC      sparc64-linux-user/target/sparc/translate.o
  CC      xtensaeb-softmmu/accel/accel.o
  CC      sh4-linux-user/linux-user/uname.o
  CC      microblaze-softmmu/memory_mapping.o
  CC      microblazeel-linux-user/target/microblaze/translate.o
  CC      moxie-softmmu/accel/tcg/tcg-all.o
  CC      alpha-linux-user/linux-user/uaccess.o
  CCAS    mips-linux-user/linux-user/safe-syscall.o
  CC      i386-softmmu/accel/tcg/tcg-all.o
  CC      i386-softmmu/accel/tcg/cputlb.o
  CC      m68k-softmmu/accel/tcg/cputlb.o
  CC      xtensa-softmmu/hw/vfio/platform.o
  CC      mips64el-softmmu/accel/accel.o
  CC      mipsel-softmmu/accel/tcg/translate-all.o
  CCAS    cris-linux-user/linux-user/safe-syscall.o
  CC      aarch64_be-linux-user/target/arm/arm-semi.o
  CC      sparc64-linux-user/target/sparc/helper.o
  CC      mipsn32-linux-user/linux-user/uname.o
  CC      alpha-linux-user/linux-user/uname.o
  CC      ppc64-linux-user/linux-user/linuxload.o
  CC      ppc64le-linux-user/target/ppc/cpu-models.o
  CC      moxie-softmmu/accel/tcg/cputlb.o
  CC      mips64-linux-user/linux-user/mmap.o
  CC      hppa-linux-user/target/hppa/gdbstub.o
  CC      aarch64-linux-user/target/arm/gdbstub64.o
  CC      tilegx-linux-user/linux-user/linuxload.o
  CC      xtensa-softmmu/hw/vfio/spapr.o
  CC      arm-softmmu/accel/stubs/hax-stub.o
  CC      mipsel-softmmu/accel/tcg/translator.o
  CC      lm32-softmmu/memory_mapping.o
  CC      mipsel-softmmu/hw/9pfs/virtio-9p-device.o
  CC      microblazeel-softmmu/accel/stubs/kvm-stub.o
  CC      microblazeel-softmmu/accel/tcg/tcg-all.o
  CC      mipsn32el-linux-user/target/mips/lmi_helper.o
  CC      mips64-linux-user/linux-user/signal.o
  CC      armeb-linux-user/linux-user/flatload.o
  CC      tilegx-linux-user/linux-user/uaccess.o
  CC      xtensa-softmmu/hw/xtensa/pic_cpu.o
  CC      sh4eb-softmmu/accel/tcg/tcg-runtime.o
  CC      ppc64abi32-linux-user/target/ppc/translate.o
  CC      x86_64-linux-user/target/i386/helper.o
  CC      mips64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11.o
  GEN     trace/generated-helpers.c
  CC      ppc64le-linux-user/target/ppc/cpu.o
  CC      moxie-softmmu/accel/tcg/tcg-runtime.o
  CC      mips64el-linux-user/linux-user/uaccess.o
  CC      sparc-linux-user/linux-user/linuxload.o
  CC      mipsn32el-linux-user/target/mips/helper.o
  CC      nios2-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-linux-user/linux-user/uaccess.o
  CC      or1k-softmmu/accel/stubs/hvf-stub.o
  CC      mips64el-softmmu/accel/stubs/hax-stub.o
  CC      ppc64-softmmu/accel/kvm/sev.o
  CC      sparc64-softmmu/hw/core/generic-loader.o
  CC      sparc32plus-linux-user/target/sparc/cpu.o
  CCAS    alpha-linux-user/linux-user/safe-syscall.o
  CC      sparc32plus-linux-user/target/sparc/fop_helper.o
  CC      alpha-linux-user/target/alpha/translate.o
  CC      microblazeel-softmmu/accel/tcg/cputlb.o
  CC      x86_64-linux-user/target/i386/cpu.o
  CCAS    sh4-linux-user/linux-user/safe-syscall.o
  CC      nios2-linux-user/linux-user/uname.o
  CC      xtensaeb-softmmu/accel/stubs/hax-stub.o
  CC      nios2-softmmu/accel/stubs/kvm-stub.o
  CC      mips-softmmu/memory_mapping.o
  CCAS    s390x-linux-user/linux-user/safe-syscall.o
  CC      microblaze-linux-user/target/microblaze/op_helper.o
  CC      tricore-softmmu/accel/stubs/kvm-stub.o
  CC      alpha-linux-user/target/alpha/helper.o
  CC      mips64el-softmmu/accel/stubs/hvf-stub.o
  CC      mipsel-linux-user/target/mips/helper.o
  CC      sparc64-linux-user/target/sparc/cpu.o
  CC      xtensaeb-softmmu/accel/stubs/hvf-stub.o
  CC      arm-softmmu/accel/stubs/hvf-stub.o
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c: In function ‘sev_dbg_enc_dec’:
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘__u64’ [-Werror=format=]
                      fw_error_to_str(error));
                      ^
/var/tmp/patchew-tester-tmp-r4540qbd/src/accel/kvm/sev.c:540:22: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘__u64’ [-Werror=format=]
cc1: all warnings being treated as errors
make[1]: *** [accel/kvm/sev.o] Error 1
  CC      or1k-softmmu/accel/stubs/kvm-stub.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o
make: *** [subdir-ppc64-softmmu] Error 2
  CC      ppc64abi32-linux-user/target/ppc/kvm-stub.o
  CC      mips64el-linux-user/linux-user/uname.o
  CC      microblazeel-linux-user/target/microblaze/op_helper.o
  CC      mips64-softmmu/hw/char/virtio-serial-bus.o
  CC      mips64-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/accel/tcg/tcg-runtime.o
  CC      sh4-softmmu/accel/accel.o
  CC      i386-linux-user/target/i386/helper.o
  CC      mips64-linux-user/linux-user/elfload.o
  CC      tricore-softmmu/accel/tcg/tcg-all.o
  CC      xtensa-softmmu/hw/xtensa/sim.o
  CC      sparc64-linux-user/target/sparc/fop_helper.o
  CC      x86_64-softmmu/accel/accel.o
  CC      aarch64_be-linux-user/target/arm/kvm-stub.o
  CC      mips64-softmmu/hw/core/null-machine.o
  CC      ppc-linux-user/linux-user/elfload.o
  CC      sh4-softmmu/accel/stubs/hax-stub.o
  CC      lm32-softmmu/dump.o
  CC      aarch64_be-linux-user/target/arm/translate.o
  CC      moxie-softmmu/accel/tcg/cpu-exec.o
  CC      mips64el-softmmu/accel/stubs/kvm-stub.o
  CC      sparc64-softmmu/hw/core/null-machine.o
  CC      x86_64-linux-user/target/i386/gdbstub.o
  CC      ppc64le-linux-user/target/ppc/translate.o
  CC      sparc-softmmu/accel/tcg/translator.o
  CC      mipsel-softmmu/hw/block/virtio-blk.o
  CC      sparc-linux-user/linux-user/uaccess.o
  CC      or1k-softmmu/accel/tcg/tcg-all.o
  CC      hppa-linux-user/trace/control-target.o
  CC      i386-softmmu/accel/tcg/tcg-runtime.o
  CC      alpha-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-linux-user/target/arm/crypto_helper.o
  CC      x86_64-softmmu/accel/stubs/hax-stub.o
  CC      s390x-linux-user/target/s390x/cpu.o
  CC      nios2-softmmu/accel/tcg/tcg-all.o
  CC      ppc64-linux-user/linux-user/uaccess.o
  CC      alpha-linux-user/target/alpha/cpu.o
  CC      mips64el-softmmu/accel/tcg/tcg-all.o
  CC      tricore-softmmu/accel/tcg/cputlb.o
  CC      sh4eb-linux-user/linux-user/flatload.o
  CC      sh4eb-softmmu/accel/tcg/cpu-exec.o
  CC      s390x-linux-user/target/s390x/cpu_models.o
  CC      m68k-softmmu/accel/tcg/tcg-runtime.o
  CC      xtensa-softmmu/hw/xtensa/xtensa_memory.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o
  CC      arm-softmmu/accel/stubs/kvm-stub.o
  CCAS    mipsn32-linux-user/linux-user/safe-syscall.o
  CC      sh4eb-linux-user/target/sh4/translate.o
  CC      s390x-linux-user/target/s390x/cpu_features.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/fpopcode.o
  CC      aarch64-softmmu/accel/accel.o
  CC      mipsn32el-linux-user/target/mips/cpu.o
  CC      i386-softmmu/accel/tcg/cpu-exec.o
  CC      or1k-softmmu/accel/tcg/cputlb.o
  CC      sh4-softmmu/accel/stubs/hvf-stub.o
  CC      microblazeel-softmmu/accel/tcg/tcg-runtime.o
  CC      xtensa-softmmu/hw/xtensa/xtfpga.o
  CC      nios2-softmmu/accel/tcg/cputlb.o
  CC      nios2-softmmu/accel/tcg/tcg-runtime.o
  CC      nios2-softmmu/accel/tcg/cpu-exec.o
  CC      sparc64-softmmu/hw/display/vga.o
  CC      i386-linux-user/target/i386/cpu.o
  CC      mips64-linux-user/linux-user/linuxload.o
  CC      i386-softmmu/accel/tcg/cpu-exec-common.o
  CC      hppa-linux-user/trace/generated-helpers.o
  CC      s390x-linux-user/target/s390x/gdbstub.o
  CC      m68k-linux-user/linux-user/uname.o
  CC      microblaze-linux-user/target/microblaze/helper.o
  CC      nios2-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips64el-softmmu/accel/tcg/cputlb.o
  CC      i386-softmmu/accel/tcg/translate-all.o
  CC      cris-softmmu/accel/tcg/cpu-exec-common.o
  CC      s390x-linux-user/target/s390x/interrupt.o
  CC      arm-softmmu/accel/tcg/tcg-all.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  GEN     trace/generated-helpers.c
  CC      sh4-linux-user/linux-user/flatload.o
  CC      sh4eb-linux-user/target/sh4/op_helper.o
  CC      mipsel-softmmu/hw/block/vhost-user-blk.o
  CC      microblazeel-softmmu/accel/tcg/cpu-exec.o
  CC      microblazeel-linux-user/target/microblaze/helper.o
  CC      s390x-linux-user/target/s390x/helper.o
  CC      sparc-softmmu/hw/core/generic-loader.o
  CC      sh4-softmmu/accel/stubs/kvm-stub.o
  CC      sh4-softmmu/accel/tcg/tcg-all.o
  CC      alpha-linux-user/target/alpha/int_helper.o
  CC      tilegx-linux-user/linux-user/uname.o
  CC      cris-softmmu/accel/tcg/translate-all.o
  CC      microblazeel-linux-user/target/microblaze/cpu.o
  CC      s390x-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/accel/stubs/hvf-stub.o
  CC      mips64-linux-user/linux-user/uaccess.o
  CC      xtensa-softmmu/target/xtensa/xtensa-semi.o
  CC      x86_64-softmmu/accel/stubs/hvf-stub.o
  CC      microblaze-softmmu/dump.o
  CCAS    m68k-linux-user/linux-user/safe-syscall.o
  CC      lm32-softmmu/migration/ram.o
  CCAS    tilegx-linux-user/linux-user/safe-syscall.o
  CC      ppc-linux-user/linux-user/linuxload.o
  CC      ppc64-linux-user/linux-user/uname.o
  CC      unicore32-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-linux-user/target/cris/translate.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/single_cpdo.o
  CC      alpha-softmmu/hw/9pfs/virtio-9p-device.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/double_cpdo.o
  CC      xtensaeb-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64_be-linux-user/target/arm/op_helper.o
  CC      xtensa-softmmu/target/xtensa/core-dc232b.o
  CC      cris-linux-user/target/cris/op_helper.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      cris-linux-user/target/cris/helper.o
  LINK    hppa-linux-user/qemu-hppa
  CC      sh4eb-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4eb-softmmu/accel/tcg/translate-all.o
  CC      ppc64le-linux-user/target/ppc/kvm-stub.o
  CC      mipsn32el-linux-user/target/mips/gdbstub.o
  CC      aarch64-linux-user/trace/control-target.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      sparc-softmmu/hw/core/null-machine.o
  CC      alpha-linux-user/target/alpha/fpu_helper.o
  CC      mips-linux-user/target/mips/translate.o
  CC      mips64-softmmu/hw/display/vga.o
  CC      sh4-softmmu/accel/tcg/cputlb.o
  CC      sh4-softmmu/accel/tcg/tcg-runtime.o
  CC      mips-softmmu/dump.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      mips64el-softmmu/accel/tcg/tcg-runtime.o
  CC      m68k-linux-user/linux-user/flatload.o
  CC      tilegx-linux-user/target/tilegx/cpu.o
  CC      mipsn32-linux-user/target/mips/translate.o
  CC      arm-softmmu/accel/tcg/cputlb.o
  CC      tricore-softmmu/accel/tcg/tcg-runtime.o
  CCAS    nios2-linux-user/linux-user/safe-syscall.o
  CC      alpha-linux-user/target/alpha/vax_helper.o
  CC      x86_64-softmmu/accel/stubs/kvm-stub.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      sparc-linux-user/linux-user/uname.o
  CC      alpha-softmmu/hw/block/virtio-blk.o
  CC      sh4-linux-user/target/sh4/translate.o
  CCAS    ppc64-linux-user/linux-user/safe-syscall.o
  CC      mipsel-softmmu/hw/block/dataplane/virtio-blk.o
  CC      mips64el-softmmu/accel/tcg/cpu-exec.o
  CC      armeb-linux-user/linux-user/arm/nwfpe/extended_cpdo.o
  CC      x86_64-linux-user/target/i386/xsave_helper.o
  CC      unicore32-softmmu/accel/tcg/translate-all.o
  CC      mipsel-linux-user/target/mips/cpu.o
  CC      tricore-softmmu/accel/tcg/cpu-exec.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o
  CC      sh4eb-linux-user/target/sh4/helper.o
  CC      cris-linux-user/target/cris/cpu.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o
  CC      xtensaeb-softmmu/accel/tcg/tcg-all.o
  CC      mips-softmmu/migration/ram.o
  CC      ppc64abi32-linux-user/target/ppc/dfp_helper.o
  CC      microblaze-softmmu/migration/ram.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      xtensa-softmmu/target/xtensa/core-dc233c.o
  CC      tilegx-linux-user/target/tilegx/translate.o
  CC      mips64-softmmu/hw/display/virtio-gpu.o
  CC      sparc-softmmu/hw/display/tcx.o
  CC      aarch64_be-linux-user/target/arm/helper.o
  CC      aarch64_be-linux-user/target/arm/cpu.o
  CC      unicore32-softmmu/accel/tcg/translator.o
  CC      x86_64-linux-user/target/i386/translate.o
  CC      x86_64-linux-user/target/i386/bpt_helper.o
  CCAS    sparc-linux-user/linux-user/safe-syscall.o
  CC      armeb-linux-user/target/arm/arm-semi.o
  CC      microblazeel-linux-user/target/microblaze/gdbstub.o
  CC      microblaze-linux-user/target/microblaze/cpu.o
  CC      sparc32plus-linux-user/target/sparc/cc_helper.o
  CC      sparc32plus-linux-user/target/sparc/win_helper.o
  CC      mipsel-linux-user/target/mips/gdbstub.o
  CC      mips64el-softmmu/accel/tcg/cpu-exec-common.o
  CC      cris-softmmu/accel/tcg/translator.o
  CC      xtensaeb-softmmu/accel/tcg/cputlb.o
  CC      sparc-softmmu/hw/display/cg3.o
  CC      nios2-linux-user/target/nios2/translate.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/hw/char/virtio-serial-bus.o
  CC      mipsel-softmmu/hw/core/generic-loader.o
  CC      mips-softmmu/accel/accel.o
  CC      mips64-linux-user/linux-user/uname.o
  CC      i386-linux-user/target/i386/gdbstub.o
  CC      aarch64_be-linux-user/target/arm/neon_helper.o
  CC      mips-softmmu/accel/stubs/hax-stub.o
  CC      sh4eb-softmmu/accel/tcg/translator.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o
  CC      or1k-softmmu/accel/tcg/tcg-runtime.o
  CC      nios2-softmmu/accel/tcg/translate-all.o
  CC      sh4eb-linux-user/target/sh4/cpu.o
  CC      mipsel-linux-user/target/mips/msa_helper.o
  CC      nios2-softmmu/accel/tcg/translator.o
  CC      nios2-softmmu/hw/core/generic-loader.o
  CC      mipsn32el-linux-user/target/mips/msa_helper.o
  CC      sparc64-softmmu/hw/display/virtio-gpu.o
  CC      sparc-linux-user/target/sparc/translate.o
  CC      aarch64-linux-user/gdbstub-xml.o
  CC      sparc64-softmmu/hw/display/virtio-gpu-3d.o
  CC      unicore32-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips-softmmu/accel/stubs/hvf-stub.o
  CC      m68k-linux-user/linux-user/m68k-sim.o
  CC      sh4eb-softmmu/hw/9pfs/virtio-9p-device.o
  CC      mips-linux-user/target/mips/dsp_helper.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      moxie-softmmu/accel/tcg/cpu-exec-common.o
  CC      mipsel-softmmu/hw/core/null-machine.o
  CC      sh4-softmmu/accel/tcg/cpu-exec.o
  CC      arm-softmmu/accel/tcg/tcg-runtime.o
  CC      sparc64-softmmu/hw/display/virtio-gpu-pci.o
  CC      or1k-softmmu/accel/tcg/cpu-exec.o
  CC      cris-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/accel/tcg/translate-all.o
  CC      arm-linux-user/linux-user/arm/nwfpe/fpopcode.o
  CC      microblaze-linux-user/target/microblaze/gdbstub.o
  CC      mipsel-softmmu/hw/display/vga.o
  CC      moxie-softmmu/accel/tcg/translate-all.o
  CC      tricore-softmmu/accel/tcg/cpu-exec-common.o
  CC      i386-linux-user/target/i386/xsave_helper.o
  CC      moxie-softmmu/accel/tcg/translator.o
  CC      mips-linux-user/target/mips/op_helper.o
  CC      mipsn32-linux-user/target/mips/dsp_helper.o
  CCAS    mips64el-linux-user/linux-user/safe-syscall.o
  CC      ppc64abi32-linux-user/target/ppc/excp_helper.o
  CC      sparc64-softmmu/hw/misc/ivshmem.o
  CC      sparc-softmmu/hw/intc/grlib_irqmp.o
  CC      mipsn32-linux-user/target/mips/op_helper.o
  CC      cris-softmmu/hw/core/null-machine.o
  CC      tilegx-linux-user/target/tilegx/helper.o
  CC      mips64el-linux-user/target/mips/translate.o
  CC      sh4-linux-user/target/sh4/op_helper.o
  CC      armeb-linux-user/target/arm/kvm-stub.o
  CC      s390x-softmmu/accel/tcg/translator.o
  CC      unicore32-softmmu/hw/core/null-machine.o
  CC      microblazeel-softmmu/accel/tcg/cpu-exec-common.o
  CC      alpha-softmmu/hw/block/vhost-user-blk.o
  GEN     trace/generated-helpers.c
  CC      sparc64-softmmu/hw/misc/mmio_interface.o
  CC      ppc64le-linux-user/target/ppc/dfp_helper.o
  CC      sparc32plus-linux-user/target/sparc/mmu_helper.o
  CC      sparc-linux-user/target/sparc/helper.o
  CC      sparc64-softmmu/hw/net/virtio-net.o
  CC      ppc64-linux-user/target/ppc/cpu-models.o
  CC      armeb-linux-user/target/arm/translate.o
  CC      ppc64abi32-linux-user/target/ppc/fpu_helper.o
  CC      mips64el-linux-user/target/mips/dsp_helper.o
  CC      m68k-linux-user/target/m68k/m68k-semi.o
  CC      lm32-softmmu/accel/accel.o
  CC      microblaze-linux-user/trace/control-target.o
  CC      lm32-softmmu/accel/stubs/hax-stub.o
  CC      moxie-softmmu/hw/core/generic-loader.o
  CC      moxie-softmmu/hw/core/null-machine.o
  CC      sparc-softmmu/hw/misc/eccmemctl.o
  CC      mips64el-linux-user/target/mips/op_helper.o
  CC      sparc-softmmu/hw/misc/slavio_misc.o
  CC      arm-linux-user/linux-user/arm/nwfpe/single_cpdo.o
  CC      unicore32-softmmu/hw/misc/mmio_interface.o
  CC      cris-softmmu/hw/misc/mmio_interface.o
  CC      alpha-softmmu/hw/block/dataplane/virtio-blk.o
  CC      sh4eb-softmmu/hw/block/tc58128.o
  CC      ppc-linux-user/linux-user/uaccess.o
  CC      ppc64le-linux-user/target/ppc/excp_helper.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      i386-linux-user/target/i386/translate.o
  GEN     trace/generated-helpers.c
  CC      ppc64le-linux-user/target/ppc/fpu_helper.o
  CC      i386-linux-user/target/i386/bpt_helper.o
  CC      arm-linux-user/linux-user/arm/nwfpe/double_cpdo.o
  CC      ppc64abi32-linux-user/target/ppc/int_helper.o
  CC      sparc32plus-linux-user/target/sparc/ldst_helper.o
  CC      xtensa-softmmu/target/xtensa/core-de212.o
  CCAS    mips64-linux-user/linux-user/safe-syscall.o
  CC      cris-softmmu/hw/net/etraxfs_eth.o
  CC      mips-linux-user/target/mips/lmi_helper.o
  CC      ppc-linux-user/linux-user/uname.o
  CC      s390x-linux-user/target/s390x/translate.o
  CC      mipsn32-linux-user/target/mips/lmi_helper.o
  CC      x86_64-linux-user/target/i386/cc_helper.o
  CC      ppc64le-linux-user/target/ppc/int_helper.o
  CC      x86_64-linux-user/target/i386/excp_helper.o
  CC      lm32-softmmu/accel/stubs/hvf-stub.o
  CC      xtensa-softmmu/target/xtensa/core-fsf.o
  CC      sh4-linux-user/target/sh4/helper.o
  CC      mips64-softmmu/hw/display/virtio-gpu-3d.o
  CC      microblazeel-linux-user/trace/control-target.o
  CC      microblaze-softmmu/accel/accel.o
  CC      unicore32-softmmu/hw/net/vhost_net.o
  CC      armeb-linux-user/target/arm/op_helper.o
  CC      nios2-softmmu/hw/core/null-machine.o
  CC      microblaze-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/hw/block/virtio-blk.o
  CC      sparc32plus-linux-user/target/sparc/int64_helper.o
  CC      arm-linux-user/linux-user/arm/nwfpe/extended_cpdo.o
  CC      microblazeel-softmmu/accel/tcg/translate-all.o
  CC      microblazeel-softmmu/accel/tcg/translator.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips-softmmu/accel/stubs/kvm-stub.o
  CC      lm32-softmmu/accel/stubs/kvm-stub.o
  CC      m68k-linux-user/target/m68k/translate.o
  CC      lm32-softmmu/accel/tcg/tcg-all.o
  CC      s390x-softmmu/hw/9pfs/virtio-9p-device.o
  CC      tricore-softmmu/accel/tcg/translate-all.o
  CC      nios2-linux-user/target/nios2/op_helper.o
  CC      alpha-softmmu/hw/char/virtio-serial-bus.o
  CC      ppc64-linux-user/target/ppc/cpu.o
  CC      xtensaeb-softmmu/accel/tcg/tcg-runtime.o
  CC      unicore32-softmmu/hw/net/rocker/qmp-norocker.o
  CC      mips64-softmmu/hw/display/virtio-gpu-pci.o
  CC      m68k-softmmu/accel/tcg/cpu-exec.o
  CC      i386-softmmu/accel/tcg/translator.o
  CC      xtensa-softmmu/target/xtensa/core-sample_controller.o
  CC      cris-softmmu/hw/net/vhost_net.o
  CC      s390x-softmmu/hw/block/virtio-blk.o
  CC      sparc-softmmu/hw/misc/mmio_interface.o
  CC      alpha-linux-user/target/alpha/sys_helper.o
  CC      sh4eb-linux-user/target/sh4/gdbstub.o
  CC      nios2-softmmu/hw/intc/nios2_iic.o
  CC      s390x-softmmu/hw/block/vhost-user-blk.o
  CC      tilegx-linux-user/target/tilegx/simd_helper.o
  CC      i386-linux-user/target/i386/cc_helper.o
  CC      microblazeel-linux-user/trace/generated-helpers.o
  CC      or1k-softmmu/accel/tcg/cpu-exec-common.o
  CC      or1k-softmmu/accel/tcg/translate-all.o
  CC      arm-linux-user/target/arm/arm-semi.o
  CC      m68k-softmmu/accel/tcg/cpu-exec-common.o
  CC      or1k-softmmu/accel/tcg/translator.o
  CC      mips64el-softmmu/accel/tcg/translate-all.o
  CC      i386-linux-user/target/i386/excp_helper.o
  CC      lm32-softmmu/accel/tcg/cputlb.o
  CC      moxie-softmmu/hw/display/vga.o
  CC      sh4-softmmu/accel/tcg/translate-all.o
  CC      unicore32-softmmu/hw/vfio/common.o
  LINK    microblaze-linux-user/qemu-microblaze
  CC      sh4-softmmu/accel/tcg/translator.o
  CC      i386-softmmu/hw/9pfs/virtio-9p-device.o
  CC      sparc-softmmu/hw/net/vhost_net.o
  CC      microblaze-softmmu/accel/stubs/hax-stub.o
  CC      mipsn32-linux-user/target/mips/helper.o
  CC      sh4-softmmu/hw/9pfs/virtio-9p-device.o
  CC      mips64-softmmu/hw/intc/mips_gic.o
  CC      mips-softmmu/accel/tcg/tcg-all.o
  CC      alpha-linux-user/target/alpha/mem_helper.o
  CC      arm-softmmu/accel/tcg/cpu-exec.o
  CC      nios2-linux-user/target/nios2/helper.o
  CC      unicore32-softmmu/hw/vfio/platform.o
  CC      sh4-linux-user/target/sh4/cpu.o
  CC      mips64el-softmmu/accel/tcg/translator.o
  CC      mips64el-softmmu/hw/9pfs/virtio-9p-device.o
  CC      cris-softmmu/hw/net/rocker/qmp-norocker.o
  CC      i386-linux-user/target/i386/fpu_helper.o
  CC      xtensaeb-softmmu/accel/tcg/cpu-exec.o
  GEN     trace/generated-helpers.c
  CC      m68k-linux-user/target/m68k/op_helper.o
  CC      microblaze-softmmu/accel/stubs/hvf-stub.o
  CC      sparc32plus-linux-user/target/sparc/vis_helper.o
  CC      tilegx-linux-user/trace/control-target.o
  LINK    microblazeel-linux-user/qemu-microblazeel
  CC      s390x-linux-user/target/s390x/cc_helper.o
  CC      s390x-linux-user/target/s390x/excp_helper.o
  CC      microblazeel-softmmu/hw/core/generic-loader.o
  CC      mips-linux-user/target/mips/helper.o
  CC      mips-softmmu/accel/tcg/cputlb.o
  CC      sparc-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sparc-softmmu/hw/vfio/common.o
  CC      s390x-linux-user/target/s390x/fpu_helper.o
  CC      nios2-linux-user/target/nios2/cpu.o
  CC      s390x-linux-user/target/s390x/int_helper.o
  CC      mipsel-linux-user/target/mips/mips-semi.o
  CC      ppc64le-linux-user/target/ppc/timebase_helper.o
  CC      alpha-linux-user/target/alpha/gdbstub.o
  CC      mips64-softmmu/hw/misc/ivshmem.o
  CC      m68k-linux-user/target/m68k/helper.o
  CC      microblaze-softmmu/accel/stubs/kvm-stub.o
  CC      cris-softmmu/hw/vfio/common.o
  CC      i386-softmmu/hw/block/virtio-blk.o
  CC      nios2-softmmu/hw/misc/mmio_interface.o
  CC      mips64el-softmmu/hw/block/virtio-blk.o
  CC      cris-linux-user/target/cris/gdbstub.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      ppc64abi32-linux-user/target/ppc/timebase_helper.o
  CC      xtensaeb-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4eb-softmmu/hw/block/vhost-user-blk.o
  CC      sh4eb-linux-user/trace/control-target.o
  CC      sh4eb-softmmu/hw/block/dataplane/virtio-blk.o
  CC      nios2-linux-user/target/nios2/mmu.o
  CC      sparc64-softmmu/hw/net/vhost_net.o
  CC      cris-softmmu/hw/vfio/platform.o
  CC      alpha-softmmu/hw/core/generic-loader.o
  CC      microblazeel-softmmu/hw/core/null-machine.o
  GEN     trace/generated-helpers.c
  CC      lm32-softmmu/accel/tcg/tcg-runtime.o
  CC      mipsel-softmmu/hw/display/virtio-gpu.o
  CC      mipsel-softmmu/hw/display/virtio-gpu-3d.o
  CC      arm-linux-user/target/arm/kvm-stub.o
  CC      mipsn32-linux-user/target/mips/cpu.o
  CC      tilegx-linux-user/trace/generated-helpers.o
  CC      alpha-linux-user/trace/control-target.o
  CC      nios2-softmmu/hw/net/vhost_net.o
  CC      mips64el-linux-user/target/mips/lmi_helper.o
  CC      mipsn32-linux-user/target/mips/gdbstub.o
  CC      mips-softmmu/accel/tcg/tcg-runtime.o
  CC      i386-softmmu/hw/block/vhost-user-blk.o
  CC      i386-softmmu/hw/block/dataplane/virtio-blk.o
  CC      m68k-softmmu/accel/tcg/translate-all.o
  CC      microblaze-softmmu/accel/tcg/tcg-all.o
  CC      s390x-softmmu/hw/block/dataplane/virtio-blk.o
  GEN     trace/generated-helpers.c
  CC      cris-softmmu/hw/vfio/spapr.o
  CCAS    ppc-linux-user/linux-user/safe-syscall.o
  CC      ppc64-linux-user/target/ppc/translate.o
  CC      microblazeel-softmmu/hw/dma/xlnx_dpdma.o
  CC      microblazeel-softmmu/hw/misc/mmio_interface.o
  CC      m68k-softmmu/accel/tcg/translator.o
  CC      cris-softmmu/hw/cris/boot.o
  CC      microblazeel-softmmu/hw/net/xilinx_ethlite.o
  CC      mips64-linux-user/target/mips/translate.o
  CC      sparc-softmmu/hw/vfio/platform.o
  CC      arm-linux-user/target/arm/translate.o
  CC      nios2-linux-user/trace/control-target.o
  CC      sparc64-softmmu/hw/scsi/virtio-scsi.o
  CC      or1k-softmmu/hw/core/generic-loader.o
  CC      mips64-softmmu/hw/misc/mips_cmgcr.o
  CC      m68k-linux-user/target/m68k/cpu.o
  CC      nios2-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sh4-softmmu/hw/block/tc58128.o
  CC      sh4eb-linux-user/trace/generated-helpers.o
  CC      alpha-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/accel/tcg/translator.o
  CC      tricore-softmmu/accel/tcg/translator.o
  CC      x86_64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      s390x-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      xtensa-softmmu/target/xtensa/monitor.o
  CC      x86_64-linux-user/target/i386/fpu_helper.o
  CC      mips64-linux-user/target/mips/dsp_helper.o
  CC      arm-softmmu/accel/tcg/cpu-exec-common.o
  CC      mips64-linux-user/target/mips/op_helper.o
  CC      alpha-linux-user/trace/generated-helpers.o
  CC      aarch64-linux-user/trace/generated-helpers.o
  CC      sparc-linux-user/target/sparc/cpu.o
  GEN     trace/generated-helpers.c
  CC      ppc64le-linux-user/target/ppc/misc_helper.o
  CC      ppc64le-linux-user/target/ppc/mem_helper.o
  CC      sh4eb-softmmu/hw/char/sh_serial.o
  CC      sparc64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      mips64-linux-user/target/mips/lmi_helper.o
  LINK    tilegx-linux-user/qemu-tilegx
  CC      microblaze-softmmu/accel/tcg/cputlb.o
  CC      mips64-linux-user/target/mips/helper.o
  CC      arm-linux-user/target/arm/op_helper.o
  CC      nios2-softmmu/hw/timer/altera_timer.o
  CC      or1k-softmmu/hw/core/null-machine.o
  CC      ppc64-linux-user/target/ppc/kvm-stub.o
  CC      i386-linux-user/target/i386/int_helper.o
  CC      xtensaeb-softmmu/accel/tcg/translate-all.o
  CC      ppc-linux-user/target/ppc/cpu-models.o
  CC      aarch64-softmmu/hw/9pfs/virtio-9p-device.o
  CC      sh4-softmmu/hw/block/virtio-blk.o
  CC      sparc-softmmu/hw/vfio/spapr.o
  CC      alpha-softmmu/hw/display/vga.o
  CC      arm-softmmu/accel/tcg/translate-all.o
  CC      sh4-softmmu/hw/block/vhost-user-blk.o
  CC      nios2-linux-user/trace/generated-helpers.o
  CC      microblazeel-softmmu/hw/net/vhost_net.o
  CC      i386-softmmu/hw/char/virtio-serial-bus.o
  CC      sh4-softmmu/hw/block/dataplane/virtio-blk.o
  CC      ppc64-linux-user/target/ppc/dfp_helper.o
  CC      mipsel-softmmu/hw/display/virtio-gpu-pci.o
  CC      sh4eb-softmmu/hw/char/virtio-serial-bus.o
  LINK    sh4eb-linux-user/qemu-sh4eb
  CC      mips64-softmmu/hw/misc/mips_cpc.o
  CC      ppc-linux-user/target/ppc/cpu.o
  CC      unicore32-softmmu/hw/vfio/spapr.o
  CC      or1k-softmmu/hw/intc/ompic.o
  CC      sparc-softmmu/hw/sparc/sun4m_iommu.o
  CC      mipsn32el-linux-user/target/mips/mips-semi.o
  GEN     trace/generated-helpers.c
  CC      s390x-linux-user/target/s390x/mem_helper.o
  CC      sh4eb-softmmu/hw/core/generic-loader.o
  CC      cris-linux-user/trace/control-target.o
  CC      mips64el-softmmu/hw/block/vhost-user-blk.o
  LINK    alpha-linux-user/qemu-alpha
  CC      mipsn32-linux-user/target/mips/msa_helper.o
  CC      ppc64-linux-user/target/ppc/excp_helper.o
  CC      tricore-softmmu/hw/core/generic-loader.o
  CC      m68k-softmmu/hw/char/mcf_uart.o
  CC      m68k-softmmu/hw/core/generic-loader.o
  CC      tricore-softmmu/hw/misc/mmio_interface.o
  CC      tricore-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/hw/misc/mmio_interface.o
  CC      nios2-softmmu/hw/vfio/common.o
  CC      nios2-softmmu/hw/vfio/platform.o
  CC      ppc64-linux-user/target/ppc/fpu_helper.o
  GEN     trace/generated-helpers.c
  CC      sh4-linux-user/target/sh4/gdbstub.o
  CC      microblazeel-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sparc64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sparc-softmmu/hw/sparc/sun4m.o
  CC      m68k-softmmu/hw/net/mcf_fec.o
  CC      m68k-softmmu/hw/net/vhost_net.o
  GEN     trace/generated-helpers.c
  LINK    nios2-linux-user/qemu-nios2
  CC      ppc64le-linux-user/target/ppc/user_only_helper.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      or1k-softmmu/hw/misc/mmio_interface.o
  CC      nios2-softmmu/hw/vfio/spapr.o
  CC      sparc-linux-user/target/sparc/fop_helper.o
  CC      ppc64-linux-user/target/ppc/int_helper.o
  CC      mipsn32el-linux-user/trace/control-target.o
  CC      mipsel-softmmu/hw/intc/mips_gic.o
  CC      sparc32plus-linux-user/target/sparc/gdbstub.o
  CC      cris-softmmu/hw/cris/axis_dev88.o
  CC      mipsel-linux-user/trace/control-target.o
  CC      arm-softmmu/accel/tcg/translator.o
  CC      lm32-softmmu/accel/tcg/cpu-exec.o
  CC      mips64-softmmu/hw/misc/mips_itu.o
  CC      arm-linux-user/target/arm/helper.o
  CC      sh4eb-softmmu/hw/core/null-machine.o
  CC      mips64el-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      sparc-softmmu/hw/sparc/leon3.o
  CC      x86_64-linux-user/target/i386/int_helper.o
  CC      cris-linux-user/trace/generated-helpers.o
  CC      armeb-linux-user/target/arm/helper.o
  CC      tricore-softmmu/hw/net/vhost_net.o
  CC      unicore32-softmmu/hw/unicore32/puv3.o
  CC      microblazeel-softmmu/hw/vfio/common.o
  CC      microblazeel-softmmu/hw/vfio/platform.o
  CC      ppc64abi32-linux-user/target/ppc/misc_helper.o
  CC      i386-softmmu/hw/core/generic-loader.o
  CC      aarch64_be-linux-user/target/arm/iwmmxt_helper.o
  CC      aarch64_be-linux-user/target/arm/gdbstub.o
  CC      sh4-linux-user/trace/control-target.o
  CC      aarch64_be-linux-user/target/arm/cpu64.o
  CC      mipsel-softmmu/hw/misc/ivshmem.o
  CC      or1k-softmmu/hw/net/vhost_net.o
  CC      sparc-linux-user/target/sparc/cc_helper.o
  CC      s390x-softmmu/hw/char/terminal3270.o
  CC      sparc-linux-user/target/sparc/win_helper.o
  CC      sparc64-softmmu/hw/scsi/vhost-scsi.o
  CC      mipsn32-linux-user/target/mips/mips-semi.o
  CC      nios2-softmmu/hw/nios2/boot.o
  CC      or1k-softmmu/hw/net/rocker/qmp-norocker.o
  CC      ppc64abi32-linux-user/target/ppc/mem_helper.o
  GEN     trace/generated-helpers.c
  CC      mips-linux-user/target/mips/cpu.o
  CC      sparc-softmmu/target/sparc/machine.o
  CC      moxie-softmmu/hw/misc/mmio_interface.o
  CC      sh4eb-softmmu/hw/display/sm501.o
  CC      sparc64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      mips64el-linux-user/target/mips/helper.o
  CC      m68k-softmmu/hw/net/rocker/qmp-norocker.o
  CC      m68k-linux-user/target/m68k/fpu_helper.o
  CC      sparc32plus-linux-user/trace/control-target.o
  CC      sh4-softmmu/hw/char/sh_serial.o
  CC      arm-softmmu/hw/9pfs/virtio-9p-device.o
  CC      armeb-linux-user/target/arm/cpu.o
  CC      tricore-softmmu/hw/net/rocker/qmp-norocker.o
  CC      xtensaeb-softmmu/accel/tcg/translator.o
  CC      sparc-linux-user/target/sparc/mmu_helper.o
  CC      mips64-softmmu/hw/misc/mmio_interface.o
  CC      microblazeel-softmmu/hw/vfio/spapr.o
  LINK    cris-linux-user/qemu-cris
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      ppc64le-linux-user/target/ppc/gdbstub.o
  CC      arm-softmmu/hw/adc/stm32f2xx_adc.o
  CC      sh4-linux-user/trace/generated-helpers.o
  CC      x86_64-softmmu/hw/block/vhost-user-blk.o
  CC      mips64el-softmmu/hw/char/virtio-serial-bus.o
  CC      or1k-softmmu/hw/vfio/common.o
  CC      unicore32-softmmu/target/unicore32/translate.o
  CC      microblaze-softmmu/accel/tcg/tcg-runtime.o
  CC      ppc64-linux-user/target/ppc/timebase_helper.o
  CC      microblaze-softmmu/accel/tcg/cpu-exec.o
  CC      sparc64-linux-user/target/sparc/cc_helper.o
  CC      sparc64-softmmu/hw/timer/mc146818rtc.o
  CC      xtensa-softmmu/target/xtensa/xtensa-isa.o
  CC      arm-softmmu/hw/block/virtio-blk.o
  CC      unicore32-softmmu/target/unicore32/op_helper.o
  CC      mips-softmmu/accel/tcg/cpu-exec.o
  CC      microblazeel-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o
  CC      cris-softmmu/target/cris/translate.o
  CC      m68k-softmmu/hw/vfio/common.o
  CC      lm32-softmmu/accel/tcg/cpu-exec-common.o
  CC      s390x-softmmu/hw/core/generic-loader.o
  CC      moxie-softmmu/hw/net/vhost_net.o
  CC      armeb-linux-user/target/arm/neon_helper.o
  CC      xtensa-softmmu/target/xtensa/translate.o
  CC      mipsn32el-linux-user/trace/generated-helpers.o
  CC      tricore-softmmu/hw/vfio/common.o
  CC      xtensa-softmmu/target/xtensa/op_helper.o
  CC      i386-softmmu/hw/core/null-machine.o
  CC      mips64el-linux-user/target/mips/cpu.o
  CC      sparc-linux-user/target/sparc/ldst_helper.o
  CC      sparc-softmmu/target/sparc/monitor.o
  CC      mips64el-linux-user/target/mips/gdbstub.o
  CC      mips64el-softmmu/hw/core/generic-loader.o
  GEN     trace/generated-helpers.c
  CC      cris-softmmu/target/cris/op_helper.o
  CC      sparc32plus-linux-user/trace/generated-helpers.o
  CC      xtensa-softmmu/target/xtensa/helper.o
  CC      i386-softmmu/hw/display/vga.o
  CC      sh4-softmmu/hw/char/virtio-serial-bus.o
  CC      nios2-softmmu/hw/nios2/cpu_pic.o
  CC      mips64-softmmu/hw/net/virtio-net.o
  CC      m68k-linux-user/target/m68k/gdbstub.o
  CC      unicore32-softmmu/target/unicore32/helper.o
  CC      unicore32-softmmu/target/unicore32/cpu.o
  CC      s390x-softmmu/hw/core/null-machine.o
  CC      aarch64-softmmu/hw/block/vhost-user-blk.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      s390x-linux-user/target/s390x/misc_helper.o
  CC      xtensaeb-softmmu/hw/core/generic-loader.o
  CC      s390x-softmmu/hw/display/virtio-gpu.o
  CC      moxie-softmmu/hw/net/rocker/qmp-norocker.o
  CC      sh4-softmmu/hw/core/generic-loader.o
  CC      ppc-linux-user/target/ppc/translate.o
  CC      sparc-linux-user/target/sparc/int32_helper.o
  CC      sparc-softmmu/target/sparc/translate.o
  CC      nios2-softmmu/hw/nios2/10m50_devboard.o
  CC      xtensaeb-softmmu/hw/core/null-machine.o
  CC      tricore-softmmu/hw/vfio/platform.o
  CC      mipsel-softmmu/hw/misc/mips_cmgcr.o
  CC      ppc64-linux-user/target/ppc/misc_helper.o
  CC      sparc-linux-user/target/sparc/gdbstub.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      unicore32-softmmu/target/unicore32/ucf64_helper.o
  CC      mips64el-linux-user/target/mips/msa_helper.o
  CC      xtensaeb-softmmu/hw/misc/mmio_interface.o
  LINK    sh4-linux-user/qemu-sh4
  CC      i386-softmmu/hw/display/virtio-gpu.o
  CC      m68k-softmmu/hw/vfio/platform.o
  CC      lm32-softmmu/accel/tcg/translate-all.o
  CC      sparc64-linux-user/target/sparc/win_helper.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      arm-linux-user/target/arm/cpu.o
  CC      moxie-softmmu/hw/timer/mc146818rtc.o
  CC      m68k-softmmu/hw/vfio/spapr.o
  CC      mips64el-linux-user/target/mips/mips-semi.o
  CC      sh4-softmmu/hw/core/null-machine.o
  CC      lm32-softmmu/accel/tcg/translator.o
  CC      arm-softmmu/hw/block/vhost-user-blk.o
  LINK    sparc32plus-linux-user/qemu-sparc32plus
  CC      arm-softmmu/hw/block/dataplane/virtio-blk.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/display/virtio-gpu-3d.o
  CC      xtensa-softmmu/target/xtensa/cpu.o
  GEN     trace/generated-helpers.c
  CC      nios2-softmmu/target/nios2/translate.o
  CC      ppc64abi32-linux-user/target/ppc/user_only_helper.o
  CC      cris-softmmu/target/cris/helper.o
  CC      sh4eb-softmmu/hw/display/vga.o
  CC      mipsel-softmmu/hw/misc/mips_cpc.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      xtensaeb-softmmu/hw/net/vhost_net.o
  CC      sparc-linux-user/trace/control-target.o
  CC      mipsel-softmmu/hw/misc/mips_itu.o
  CC      mips64el-softmmu/hw/core/null-machine.o
  CC      ppc-linux-user/target/ppc/kvm-stub.o
  CC      ppc64abi32-linux-user/target/ppc/gdbstub.o
  CC      sparc64-softmmu/hw/vfio/common.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      mips-softmmu/accel/tcg/cpu-exec-common.o
  CC      sh4-softmmu/hw/display/sm501.o
  CC      alpha-softmmu/hw/display/virtio-gpu.o
  CC      mipsel-linux-user/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      or1k-softmmu/hw/vfio/platform.o
  CC      mips64-softmmu/hw/net/vhost_net.o
  CC      armeb-linux-user/target/arm/iwmmxt_helper.o
  CC      xtensa-softmmu/target/xtensa/gdbstub.o
  CC      s390x-softmmu/hw/display/virtio-gpu-3d.o
  CC      mips64-softmmu/hw/scsi/virtio-scsi.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      microblaze-softmmu/accel/tcg/cpu-exec-common.o
  CC      unicore32-softmmu/target/unicore32/softmmu.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      i386-linux-user/target/i386/mem_helper.o
  CC      aarch64_be-linux-user/target/arm/translate-a64.o
  CC      armeb-linux-user/target/arm/gdbstub.o
  CC      xtensaeb-softmmu/hw/net/rocker/qmp-norocker.o
  CC      i386-linux-user/target/i386/misc_helper.o
  CC      moxie-softmmu/hw/vfio/common.o
  CC      sparc64-softmmu/hw/vfio/pci.o
  CC      mips64-linux-user/target/mips/cpu.o
  CC      or1k-softmmu/hw/vfio/spapr.o
  CC      mips-softmmu/accel/tcg/translate-all.o
  CC      sparc64-linux-user/target/sparc/mmu_helper.o
  CC      mipsel-softmmu/hw/misc/mmio_interface.o
  CC      sparc64-linux-user/target/sparc/ldst_helper.o
  CC      mips64el-softmmu/hw/display/vga.o
  CC      aarch64_be-linux-user/target/arm/helper-a64.o
  CC      ppc64-linux-user/target/ppc/mem_helper.o
  CC      microblazeel-softmmu/hw/microblaze/petalogix_ml605_mmu.o
  CC      mipsel-softmmu/hw/net/virtio-net.o
  CC      i386-linux-user/target/i386/mpx_helper.o
  CC      sparc-linux-user/trace/generated-helpers.o
  CC      microblazeel-softmmu/hw/microblaze/xlnx-zynqmp-pmu.o
  CC      arm-softmmu/hw/char/exynos4210_uart.o
  CC      mips64el-softmmu/hw/display/virtio-gpu.o
  CC      mips64el-softmmu/hw/display/virtio-gpu-3d.o
  CC      ppc64-linux-user/target/ppc/user_only_helper.o
  CC      aarch64_be-linux-user/target/arm/gdbstub64.o
  CC      tricore-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/display/virtio-gpu-pci.o
  CC      lm32-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      x86_64-linux-user/target/i386/mem_helper.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      m68k-softmmu/hw/m68k/an5206.o
  CC      m68k-softmmu/hw/m68k/mcf5208.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      sparc-softmmu/target/sparc/helper.o
  CC      xtensaeb-softmmu/hw/vfio/common.o
  CC      s390x-softmmu/hw/display/virtio-gpu-pci.o
  CC      i386-linux-user/target/i386/seg_helper.o
  CC      arm-softmmu/hw/char/omap_uart.o
  CC      microblaze-softmmu/accel/tcg/translate-all.o
  CC      sh4-softmmu/hw/display/vga.o
  CC      arm-softmmu/hw/char/digic-uart.o
  CC      arm-softmmu/hw/char/stm32f2xx_usart.o
  CC      xtensaeb-softmmu/hw/vfio/platform.o
  CC      sparc-softmmu/target/sparc/cpu.o
  CC      moxie-softmmu/hw/vfio/platform.o
  CC      sparc64-linux-user/target/sparc/int64_helper.o
  CC      moxie-softmmu/hw/vfio/spapr.o
  CC      sh4-softmmu/hw/display/virtio-gpu.o
  CC      sparc64-linux-user/target/sparc/vis_helper.o
  CC      mipsel-softmmu/hw/net/vhost_net.o
  CC      alpha-softmmu/hw/display/virtio-gpu-3d.o
  CC      mips64-linux-user/target/mips/gdbstub.o
  CC      sh4eb-softmmu/hw/display/virtio-gpu.o
  CC      arm-softmmu/hw/char/bcm2835_aux.o
  GEN     trace/generated-helpers.c
  CC      sh4eb-softmmu/hw/display/virtio-gpu-3d.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      alpha-softmmu/hw/display/virtio-gpu-pci.o
  CC      unicore32-softmmu/trace/control-target.o
  CC      or1k-softmmu/hw/openrisc/pic_cpu.o
  CC      sparc64-linux-user/target/sparc/gdbstub.o
  CC      m68k-softmmu/hw/m68k/mcf5206.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      tricore-softmmu/hw/tricore/tricore_testboard.o
  CC      tricore-softmmu/target/tricore/translate.o
  LINK    sparc-linux-user/qemu-sparc
  CC      i386-softmmu/hw/display/virtio-vga.o
  CC      microblazeel-softmmu/hw/microblaze/boot.o
  CC      microblazeel-softmmu/target/microblaze/translate.o
  CC      mipsel-softmmu/hw/scsi/virtio-scsi.o
  CC      ppc64-linux-user/target/ppc/gdbstub.o
  CC      sh4eb-softmmu/hw/display/virtio-gpu-pci.o
  CC      m68k-softmmu/hw/m68k/mcf_intc.o
  CC      mips64el-softmmu/hw/display/virtio-gpu-pci.o
  CC      lm32-softmmu/hw/core/null-machine.o
  CC      mips-softmmu/accel/tcg/translator.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/decNumber.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      s390x-softmmu/hw/intc/s390_flic.o
  GEN     trace/generated-helpers.c
  CC      sh4-softmmu/hw/display/virtio-gpu-3d.o
  CC      arm-softmmu/hw/char/virtio-serial-bus.o
  CC      sh4eb-softmmu/hw/intc/sh_intc.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/decNumber.o
  CC      alpha-softmmu/hw/misc/ivshmem.o
  CC      sparc-softmmu/target/sparc/fop_helper.o
  CC      s390x-linux-user/target/s390x/crypto_helper.o
  CC      m68k-softmmu/target/m68k/m68k-semi.o
  CC      s390x-softmmu/hw/misc/mmio_interface.o
  CC      alpha-softmmu/hw/misc/mmio_interface.o
  CC      or1k-softmmu/hw/openrisc/cputimer.o
  CC      m68k-softmmu/target/m68k/translate.o
  CC      lm32-softmmu/hw/input/milkymist-softusb.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      xtensaeb-softmmu/hw/vfio/spapr.o
  CC      mips64el-linux-user/trace/control-target.o
  CC      mipsn32-linux-user/trace/control-target.o
  CC      mips-softmmu/hw/9pfs/virtio-9p-device.o
  CC      tricore-softmmu/target/tricore/helper.o
  CC      armeb-linux-user/target/arm/crypto_helper.o
  CC      sparc64-softmmu/hw/vfio/pci-quirks.o
  CC      cris-softmmu/target/cris/cpu.o
  CC      cris-softmmu/target/cris/gdbstub.o
  CC      microblazeel-softmmu/target/microblaze/op_helper.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/hw/net/virtio-net.o
  CC      mips64-linux-user/target/mips/msa_helper.o
  CC      lm32-softmmu/hw/misc/milkymist-hpdmc.o
  CC      sparc64-linux-user/trace/control-target.o
  CC      arm-softmmu/hw/core/generic-loader.o
  CC      mips64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mips64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      moxie-softmmu/hw/moxie/moxiesim.o
  CC      or1k-softmmu/hw/openrisc/openrisc_sim.o
  CC      mips64-linux-user/target/mips/mips-semi.o
  CC      i386-softmmu/hw/intc/apic.o
  CC      i386-softmmu/hw/intc/apic_common.o
  GEN     trace/generated-helpers.c
  CC      x86_64-linux-user/target/i386/misc_helper.o
  CC      microblazeel-softmmu/target/microblaze/helper.o
  CC      microblazeel-softmmu/target/microblaze/cpu.o
  CC      mips-softmmu/hw/block/virtio-blk.o
  CC      cris-softmmu/target/cris/mmu.o
  CC      lm32-softmmu/hw/misc/milkymist-pfpu.o
  CC      arm-linux-user/target/arm/neon_helper.o
  CC      tricore-softmmu/target/tricore/cpu.o
  CC      s390x-softmmu/hw/net/virtio-net.o
  CC      i386-softmmu/hw/intc/ioapic.o
  CC      nios2-softmmu/target/nios2/op_helper.o
  CC      microblaze-softmmu/accel/tcg/translator.o
  CC      nios2-softmmu/target/nios2/helper.o
  CC      m68k-linux-user/trace/control-target.o
  CC      sh4eb-softmmu/hw/misc/ivshmem.o
  CC      s390x-softmmu/hw/net/vhost_net.o
  CC      or1k-softmmu/target/openrisc/machine.o
  CC      tricore-softmmu/target/tricore/op_helper.o
  CC      sh4eb-softmmu/hw/misc/mmio_interface.o
  CC      aarch64_be-linux-user/target/arm/crypto_helper.o
  CC      sparc64-linux-user/trace/generated-helpers.o
  CC      mips64-softmmu/hw/scsi/vhost-scsi.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      mips-softmmu/hw/block/vhost-user-blk.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      mipsel-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      arm-linux-user/target/arm/iwmmxt_helper.o
  CC      xtensaeb-softmmu/hw/xtensa/pic_cpu.o
  GEN     trace/generated-helpers.c
  CC      xtensaeb-softmmu/hw/xtensa/sim.o
  CC      cris-softmmu/target/cris/machine.o
  CC      moxie-softmmu/target/moxie/translate.o
  CC      mips64el-linux-user/trace/generated-helpers.o
  CC      s390x-linux-user/target/s390x/kvm-stub.o
  CC      sparc-softmmu/target/sparc/cc_helper.o
  CC      sparc-softmmu/target/sparc/win_helper.o
  CC      m68k-softmmu/target/m68k/op_helper.o
  CC      s390x-softmmu/hw/net/rocker/qmp-norocker.o
  CC      ppc-linux-user/target/ppc/dfp_helper.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      xtensaeb-softmmu/hw/xtensa/xtensa_memory.o
  CC      sparc-softmmu/target/sparc/mmu_helper.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      lm32-softmmu/hw/misc/mmio_interface.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/isa/lpc_ich9.o
  CC      sparc-softmmu/target/sparc/ldst_helper.o
  CC      aarch64_be-linux-user/trace/control-target.o
  CC      s390x-softmmu/hw/scsi/virtio-scsi.o
  CC      microblaze-softmmu/hw/core/generic-loader.o
  CC      sparc-softmmu/target/sparc/int32_helper.o
  CC      sparc64-softmmu/hw/vfio/platform.o
  CC      i386-linux-user/target/i386/smm_helper.o
  CC      aarch64_be-linux-user/gdbstub-xml.o
  CC      armeb-linux-user/trace/control-target.o
  CC      m68k-linux-user/gdbstub-xml.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/decNumber.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/misc/ivshmem.o
  CC      or1k-softmmu/target/openrisc/cpu.o
  CC      nios2-softmmu/target/nios2/cpu.o
  CC      sparc-softmmu/target/sparc/gdbstub.o
  CC      mips64el-softmmu/hw/intc/mips_gic.o
  LINK    sparc64-linux-user/qemu-sparc64
  CC      s390x-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      mipsn32-linux-user/trace/generated-helpers.o
  GEN     trace/generated-helpers.c
  CC      s390x-softmmu/hw/scsi/vhost-scsi-common.o
  GEN     trace/generated-helpers.c
  CC      x86_64-linux-user/target/i386/mpx_helper.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      i386-softmmu/hw/misc/pvpanic.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      mips64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      mips-softmmu/hw/block/dataplane/virtio-blk.o
  CC      or1k-softmmu/target/openrisc/exception.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      moxie-softmmu/target/moxie/helper.o
  CC      i386-softmmu/hw/misc/mmio_interface.o
  CC      nios2-softmmu/target/nios2/mmu.o
  CC      mipsel-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sh4eb-softmmu/hw/net/virtio-net.o
  CC      nios2-softmmu/target/nios2/monitor.o
  CC      sh4-softmmu/hw/display/virtio-gpu-pci.o
  CC      s390x-softmmu/hw/scsi/vhost-scsi.o
  CC      xtensaeb-softmmu/hw/xtensa/xtfpga.o
  CC      sh4-softmmu/hw/intc/sh_intc.o
  CC      sh4-softmmu/hw/misc/ivshmem.o
  CC      sh4-softmmu/hw/misc/mmio_interface.o
  CC      xtensaeb-softmmu/target/xtensa/xtensa-semi.o
  CC      sh4-softmmu/hw/net/virtio-net.o
  CC      lm32-softmmu/hw/net/milkymist-minimac2.o
  CC      ppc64abi32-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      arm-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/target/m68k/helper.o
  CC      xtensaeb-softmmu/target/xtensa/core-dc232b.o
  CC      unicore32-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/hw/scsi/vhost-user-scsi.o
  CC      sparc64-softmmu/hw/vfio/spapr.o
  CC      s390x-softmmu/hw/vfio/common.o
  CC      ppc-linux-user/target/ppc/excp_helper.o
  GEN     trace/generated-helpers.c
  CC      microblaze-softmmu/hw/core/null-machine.o
  CC      microblaze-softmmu/hw/dma/xlnx_dpdma.o
  CC      mips64el-softmmu/hw/misc/ivshmem.o
  CC      or1k-softmmu/target/openrisc/interrupt.o
  CC      mips64-softmmu/hw/timer/mips_gictimer.o
  CC      mipsel-softmmu/hw/scsi/vhost-scsi.o
  CC      xtensa-softmmu/trace/control-target.o
  CC      or1k-softmmu/target/openrisc/mmu.o
  CC      or1k-softmmu/target/openrisc/translate.o
  CC      m68k-linux-user/trace/generated-helpers.o
  GEN     trace/generated-helpers.c
  CC      mips64-softmmu/hw/timer/mc146818rtc.o
  CC      sh4eb-softmmu/hw/net/vhost_net.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      sh4-softmmu/hw/net/vhost_net.o
  CC      nios2-softmmu/trace/control-target.o
  CC      mips64-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/cpu/arm11mpcore.o
  CC      ppc64le-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      ppc64-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      or1k-softmmu/target/openrisc/exception_helper.o
  CC      mipsel-softmmu/hw/scsi/vhost-user-scsi.o
  CC      microblaze-softmmu/hw/misc/mmio_interface.o
  CC      arm-softmmu/hw/cpu/realview_mpcore.o
  CC      mips64-softmmu/hw/vfio/pci.o
  CC      cris-softmmu/trace/control-target.o
  CC      or1k-softmmu/target/openrisc/fpu_helper.o
  CC      tricore-softmmu/target/tricore/fpu_helper.o
  CC      sh4-softmmu/hw/scsi/virtio-scsi.o
  CC      sh4eb-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mipsel-softmmu/hw/timer/mips_gictimer.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/hw/net/vhost_net.o
  CC      sh4-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      lm32-softmmu/hw/net/vhost_net.o
  LINK    unicore32-softmmu/qemu-system-unicore32
  CC      i386-softmmu/hw/net/virtio-net.o
  CC      mips-softmmu/hw/char/virtio-serial-bus.o
  CC      sparc64-softmmu/hw/virtio/virtio.o
  CC      mips64-linux-user/trace/control-target.o
  CC      aarch64_be-linux-user/trace/generated-helpers.o
  CC      microblazeel-softmmu/target/microblaze/gdbstub.o
  CC      arm-linux-user/target/arm/gdbstub.o
  CC      arm-linux-user/target/arm/crypto_helper.o
  CC      or1k-softmmu/target/openrisc/interrupt_helper.o
  CC      ppc-linux-user/target/ppc/fpu_helper.o
  CC      m68k-softmmu/target/m68k/cpu.o
  CC      arm-softmmu/hw/cpu/a9mpcore.o
  CC      mips64el-softmmu/hw/misc/mips_cmgcr.o
  LINK    aarch64-linux-user/qemu-aarch64
  CC      ppc-linux-user/target/ppc/int_helper.o
  CC      mipsel-softmmu/hw/timer/mc146818rtc.o
  CC      xtensaeb-softmmu/target/xtensa/core-dc233c.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      xtensaeb-softmmu/target/xtensa/core-de212.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      mips64-softmmu/hw/vfio/pci-quirks.o
  CC      s390x-softmmu/hw/vfio/pci.o
  CC      nios2-softmmu/trace/generated-helpers.o
  CC      lm32-softmmu/hw/net/rocker/qmp-norocker.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      sparc64-softmmu/hw/virtio/virtio-balloon.o
  GEN     trace/generated-helpers.c
  CC      moxie-softmmu/target/moxie/machine.o
  LINK    m68k-linux-user/qemu-m68k
  CC      mips64-softmmu/hw/vfio/platform.o
  CC      mips64el-softmmu/hw/misc/mips_cpc.o
  CC      mips64-softmmu/hw/vfio/spapr.o
  CC      ppc64le-linux-user/trace/control-target.o
  CC      mips64-softmmu/hw/virtio/virtio.o
  CC      sh4eb-softmmu/hw/scsi/vhost-scsi-common.o
  CC      xtensaeb-softmmu/target/xtensa/core-fsf.o
  CC      mips-softmmu/hw/core/generic-loader.o
  CC      armeb-linux-user/gdbstub-xml.o
  CC      s390x-softmmu/hw/vfio/pci-quirks.o
  CC      microblaze-softmmu/hw/net/xilinx_ethlite.o
  CC      s390x-softmmu/hw/vfio/ccw.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      ppc-linux-user/target/ppc/timebase_helper.o
  CC      or1k-softmmu/target/openrisc/mmu_helper.o
  CC      arm-softmmu/hw/cpu/a15mpcore.o
  CC      sh4-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sh4eb-softmmu/hw/scsi/vhost-scsi.o
  CC      mipsel-softmmu/hw/vfio/common.o
  CC      lm32-softmmu/hw/sd/milkymist-memcard.o
  CC      lm32-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/scsi/vhost-user-scsi.o
  CC      sh4eb-softmmu/hw/timer/sh_timer.o
  CC      ppc64abi32-linux-user/trace/control-target.o
  CC      ppc64-linux-user/trace/control-target.o
  LINK    nios2-softmmu/qemu-system-nios2
  CC      s390x-linux-user/trace/control-target.o
  CC      s390x-softmmu/hw/vfio/platform.o
  CC      x86_64-linux-user/target/i386/seg_helper.o
  CC      moxie-softmmu/target/moxie/cpu.o
  CC      lm32-softmmu/hw/vfio/platform.o
  CC      sh4-softmmu/hw/scsi/vhost-scsi.o
  CC      armeb-linux-user/trace/generated-helpers.o
  CC      sparc-softmmu/trace/control-target.o
  CC      mips64el-softmmu/hw/misc/mips_itu.o
  CC      microblaze-softmmu/hw/net/vhost_net.o
  CC      microblaze-softmmu/hw/net/rocker/qmp-norocker.o
  CC      xtensa-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/display/omap_dss.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  GEN     trace/generated-helpers.c
  CC      microblaze-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/timer/mc146818rtc.o
  CC      sh4-softmmu/hw/scsi/vhost-user-scsi.o
  CC      i386-softmmu/hw/net/vhost_net.o
  CC      mips64-softmmu/hw/virtio/virtio-balloon.o
  CC      alpha-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      s390x-softmmu/hw/vfio/spapr.o
  CC      moxie-softmmu/target/moxie/mmu.o
  GEN     trace/generated-helpers.c
  CC      moxie-softmmu/trace/control-target.o
  CC      arm-softmmu/hw/display/omap_lcdc.o
  CC      i386-linux-user/target/i386/svm_helper.o
  CC      ppc-linux-user/target/ppc/misc_helper.o
  CC      ppc-linux-user/target/ppc/mem_helper.o
  CC      ppc-linux-user/target/ppc/user_only_helper.o
  CC      m68k-softmmu/target/m68k/fpu_helper.o
  CC      i386-linux-user/target/i386/kvm-stub.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi-common.o
  CC      ppc-linux-user/target/ppc/gdbstub.o
  CC      alpha-softmmu/hw/scsi/vhost-scsi.o
  CC      sh4eb-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      sparc64-softmmu/hw/virtio/vhost.o
  CC      s390x-linux-user/gdbstub-xml.o
  CC      sh4eb-softmmu/hw/vfio/pci.o
  CC      sh4eb-softmmu/hw/vfio/pci-quirks.o
  LINK    xtensa-softmmu/qemu-system-xtensa
  CC      alpha-softmmu/hw/scsi/vhost-user-scsi.o
  CC      arm-softmmu/hw/display/pxa2xx_lcd.o
  CC      sh4eb-softmmu/hw/vfio/platform.o
  CC      ppc64abi32-linux-user/gdbstub-xml.o
  CC      sparc-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/hw/virtio/virtio.o
  CC      or1k-softmmu/target/openrisc/sys_helper.o
  CC      xtensaeb-softmmu/target/xtensa/core-sample_controller.o
  CC      mips64el-softmmu/hw/misc/mmio_interface.o
  CC      s390x-softmmu/hw/virtio/virtio-balloon.o
  CC      cris-softmmu/trace/generated-helpers.o
  CC      sparc64-softmmu/hw/virtio/vhost-backend.o
  CC      sh4eb-softmmu/hw/vfio/spapr.o
  CC      ppc64-linux-user/gdbstub-xml.o
  CC      x86_64-softmmu/hw/misc/ivshmem.o
  CC      mipsel-softmmu/hw/vfio/pci.o
  CC      ppc64le-linux-user/gdbstub-xml.o
  CC      arm-linux-user/trace/control-target.o
  CC      alpha-softmmu/hw/timer/mc146818rtc.o
  CC      moxie-softmmu/trace/generated-helpers.o
  CC      sh4-softmmu/hw/timer/sh_timer.o
  CC      mips64-softmmu/hw/virtio/vhost.o
  GEN     trace/generated-helpers.c
  CC      sh4-softmmu/hw/timer/mc146818rtc.o
  CC      mipsel-softmmu/hw/vfio/pci-quirks.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/scsi/virtio-scsi.o
  CC      microblazeel-softmmu/target/microblaze/mmu.o
  CC      tricore-softmmu/trace/control-target.o
  CC      s390x-softmmu/hw/virtio/vhost.o
  CC      xtensaeb-softmmu/target/xtensa/monitor.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      mips-softmmu/hw/core/null-machine.o
  CC      m68k-softmmu/target/m68k/gdbstub.o
  CC      s390x-softmmu/hw/virtio/vhost-backend.o
  CC      m68k-softmmu/target/m68k/monitor.o
  CC      xtensaeb-softmmu/target/xtensa/xtensa-isa.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/decContext.o
  CC      s390x-linux-user/trace/generated-helpers.o
  CC      i386-linux-user/trace/control-target.o
  CC      i386-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      sh4-softmmu/hw/vfio/common.o
  CC      ppc64-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/hw/virtio/virtio.o
  CC      s390x-softmmu/hw/virtio/vhost-user.o
  CC      lm32-softmmu/hw/vfio/spapr.o
  CC      sparc64-softmmu/hw/virtio/vhost-user.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  LINK    sparc-softmmu/qemu-system-sparc
  CC      microblaze-softmmu/hw/vfio/platform.o
  CC      mips64el-softmmu/hw/net/virtio-net.o
  CC      x86_64-linux-user/target/i386/smm_helper.o
  CC      xtensaeb-softmmu/target/xtensa/translate.o
  CC      lm32-softmmu/hw/lm32/lm32_boards.o
  GEN     trace/generated-helpers.c
  LINK    cris-softmmu/qemu-system-cris
  CC      mipsel-softmmu/hw/vfio/platform.o
  GEN     trace/generated-helpers.c
  CC      or1k-softmmu/target/openrisc/gdbstub.o
  CC      sh4eb-softmmu/hw/virtio/virtio-balloon.o
  CC      mips-linux-user/target/mips/gdbstub.o
  CC      mips64-linux-user/trace/generated-helpers.o
  CC      mips64el-softmmu/hw/net/vhost_net.o
  CC      xtensaeb-softmmu/target/xtensa/op_helper.o
  LINK    moxie-softmmu/qemu-system-moxie
  CC      mips-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/decNumber.o
  CC      ppc64abi32-linux-user/trace/generated-helpers.o
  CC      mips64-softmmu/hw/virtio/vhost-backend.o
  CC      mipsel-softmmu/hw/vfio/spapr.o
  CC      arm-linux-user/gdbstub-xml.o
  CC      x86_64-linux-user/target/i386/svm_helper.o
  CC      sh4eb-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/scsi/vhost-scsi-common.o
  CC      x86_64-linux-user/target/i386/kvm-stub.o
  CC      xtensaeb-softmmu/target/xtensa/helper.o
  CC      i386-linux-user/gdbstub-xml.o
  CC      mipsel-softmmu/hw/virtio/virtio.o
  CC      arm-softmmu/hw/display/bcm2835_fb.o
  CC      microblazeel-softmmu/trace/control-target.o
  CC      alpha-softmmu/hw/vfio/common.o
  CC      sh4eb-softmmu/hw/virtio/vhost-backend.o
  CC      alpha-softmmu/hw/vfio/pci.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/dpd/decimal32.o
  CC      s390x-softmmu/hw/virtio/vhost-vsock.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/scsi/vhost-scsi.o
  CC      i386-softmmu/hw/scsi/vhost-user-scsi.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      mipsel-softmmu/hw/virtio/virtio-balloon.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/dpd/decimal64.o
  CC      arm-softmmu/hw/display/vga.o
  CC      alpha-softmmu/hw/vfio/pci-quirks.o
  CC      sh4eb-softmmu/hw/virtio/vhost-user.o
  CC      or1k-softmmu/trace/control-target.o
  CC      microblaze-softmmu/hw/vfio/spapr.o
  CC      sparc64-softmmu/hw/virtio/vhost-vsock.o
  CC      mipsel-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/timer/mc146818rtc.o
  CC      sh4eb-softmmu/hw/virtio/vhost-vsock.o
  CC      microblaze-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o
  CC      ppc-linux-user/target/ppc/../../libdecnumber/dpd/decimal128.o
  CC      mips-softmmu/hw/display/virtio-gpu.o
  CC      xtensaeb-softmmu/target/xtensa/cpu.o
  CC      mips-linux-user/target/mips/msa_helper.o
  CC      or1k-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      mipsel-softmmu/hw/virtio/vhost-backend.o
  CC      mips-linux-user/target/mips/mips-semi.o
  CC      microblazeel-softmmu/trace/generated-helpers.o
  CC      lm32-softmmu/hw/lm32/milkymist.o
  CC      s390x-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/display/virtio-gpu.o
  CC      mips64el-softmmu/hw/scsi/virtio-scsi.o
  CC      sh4-softmmu/hw/vfio/pci.o
  CC      s390x-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips64-softmmu/hw/virtio/vhost-user.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      ppc64le-linux-user/trace/generated-helpers.o
  CC      microblaze-softmmu/hw/microblaze/petalogix_ml605_mmu.o
  LINK    s390x-linux-user/qemu-s390x
  CC      mips64el-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      alpha-softmmu/hw/vfio/platform.o
  CC      m68k-softmmu/trace/control-target.o
  CC      tricore-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/display/virtio-gpu-3d.o
  CC      microblaze-softmmu/hw/microblaze/xlnx-zynqmp-pmu.o
  GEN     trace/generated-helpers.c
  CC      sh4eb-softmmu/hw/virtio/virtio-crypto.o
  CC      sparc64-softmmu/hw/virtio/virtio-crypto.o
  CC      mips-linux-user/trace/control-target.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      lm32-softmmu/target/lm32/translate.o
  GEN     trace/generated-helpers.c
  CC      alpha-softmmu/hw/vfio/spapr.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      sparc64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      x86_64-linux-user/trace/control-target.o
  CC      sparc64-softmmu/hw/sparc64/sparc64.o
  CC      microblaze-softmmu/hw/microblaze/boot.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      lm32-softmmu/target/lm32/op_helper.o
  CC      microblaze-softmmu/target/microblaze/translate.o
  CC      lm32-softmmu/target/lm32/helper.o
  CC      alpha-softmmu/hw/virtio/virtio.o
  CC      sparc64-softmmu/hw/sparc64/sun4u_iommu.o
  CC      mipsel-softmmu/hw/virtio/vhost-user.o
  CC      mipsel-softmmu/hw/virtio/vhost-vsock.o
  CC      mips64el-softmmu/hw/scsi/vhost-scsi-common.o
  CC      mips64el-softmmu/hw/scsi/vhost-scsi.o
  CC      sh4eb-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  LINK    or1k-softmmu/qemu-system-or1k
  LINK    microblazeel-softmmu/qemu-system-microblazeel
  CC      xtensaeb-softmmu/target/xtensa/gdbstub.o
  CC      alpha-softmmu/hw/virtio/virtio-balloon.o
  CC      mipsel-softmmu/hw/virtio/virtio-crypto.o
  CC      mips64-softmmu/hw/virtio/vhost-vsock.o
  CC      mips64-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/display/virtio-gpu-pci.o
  CC      arm-linux-user/trace/generated-helpers.o
  CC      mipsel-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      lm32-softmmu/target/lm32/cpu.o
  CC      s390x-softmmu/hw/s390x/s390-virtio-hcall.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi.o
  CC      i386-softmmu/hw/vfio/common.o
  CC      mips64el-softmmu/hw/scsi/vhost-user-scsi.o
  CC      ppc-linux-user/trace/control-target.o
  CC      i386-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/hw/sh4/shix.o
  CC      mips64el-softmmu/hw/timer/mips_gictimer.o
  CC      microblaze-softmmu/target/microblaze/op_helper.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/hw/dma/omap_dma.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
  CC      mips-linux-user/trace/generated-helpers.o
  CC      mips64el-softmmu/hw/timer/mc146818rtc.o
  CC      microblaze-softmmu/target/microblaze/helper.o
  CC      xtensaeb-softmmu/trace/control-target.o
  CC      microblaze-softmmu/target/microblaze/cpu.o
  CC      lm32-softmmu/target/lm32/gdbstub.o
  CC      lm32-softmmu/target/lm32/lm32-semi.o
  CC      sparc64-softmmu/hw/sparc64/sun4u.o
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      sh4eb-softmmu/hw/sh4/r2d.o
  CC      x86_64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      arm-softmmu/hw/dma/soc_dma.o
  CC      sh4eb-softmmu/hw/sh4/sh7750.o
  CC      sh4-softmmu/hw/vfio/pci-quirks.o
  CC      x86_64-linux-user/gdbstub-xml.o
  CC      sh4-softmmu/hw/vfio/platform.o
  CC      sh4-softmmu/hw/vfio/spapr.o
  CC      sh4eb-softmmu/hw/sh4/sh7750_regnames.o
  CC      alpha-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/dma/pxa2xx_dma.o
  CC      m68k-softmmu/gdbstub-xml.o
  CC      microblaze-softmmu/target/microblaze/gdbstub.o
  CC      mips-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      s390x-softmmu/hw/s390x/sclp.o
  CC      microblaze-softmmu/target/microblaze/mmu.o
  CC      mips-softmmu/hw/display/virtio-gpu-pci.o
  CC      s390x-softmmu/hw/s390x/event-facility.o
  CC      arm-softmmu/hw/dma/bcm2835_dma.o
  CC      x86_64-softmmu/hw/vfio/common.o
  CC      sparc64-softmmu/hw/sparc64/niagara.o
  CC      sh4eb-softmmu/hw/sh4/sh_pci.o
  CC      mipsel-softmmu/hw/mips/mips_r4k.o
  CC      arm-softmmu/hw/gpio/omap_gpio.o
  CC      sparc64-softmmu/target/sparc/machine.o
  CC      mips-softmmu/hw/intc/mips_gic.o
  CC      x86_64-linux-user/trace/generated-helpers.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/hw/vfio/pci.o
  CC      sparc64-softmmu/target/sparc/monitor.o
  CC      s390x-softmmu/hw/s390x/sclpquiesce.o
  CC      s390x-softmmu/hw/s390x/sclpcpu.o
  CC      sh4-softmmu/hw/virtio/virtio.o
  CC      sparc64-softmmu/target/sparc/translate.o
  CC      xtensaeb-softmmu/trace/generated-helpers.o
  CC      sh4-softmmu/hw/virtio/virtio-balloon.o
  CC      sh4eb-softmmu/target/sh4/translate.o
  CC      sh4-softmmu/hw/virtio/vhost.o
  CC      mips64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips-softmmu/hw/misc/ivshmem.o
  CC      s390x-softmmu/hw/s390x/ipl.o
  CC      sh4eb-softmmu/target/sh4/op_helper.o
  CC      lm32-softmmu/target/lm32/machine.o
  CC      sh4eb-softmmu/target/sh4/helper.o
  GEN     trace/generated-helpers.c
  CC      mips64el-softmmu/hw/vfio/common.o
  CC      sh4-softmmu/hw/virtio/vhost-backend.o
  CC      lm32-softmmu/trace/control-target.o
  CC      x86_64-softmmu/hw/vfio/pci-quirks.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      ppc-linux-user/gdbstub-xml.o
  CC      microblaze-softmmu/trace/control-target.o
  CC      s390x-softmmu/hw/s390x/css.o
  CC      mipsel-softmmu/hw/mips/mips_malta.o
  CC      s390x-softmmu/hw/s390x/s390-virtio-ccw.o
  CC      mips-softmmu/hw/misc/mips_cmgcr.o
  CC      mips64-softmmu/hw/mips/mips_r4k.o
  CC      s390x-softmmu/hw/s390x/3270-ccw.o
  CC      mips-softmmu/hw/misc/mips_cpc.o
  CC      arm-softmmu/hw/gpio/imx_gpio.o
  CC      arm-softmmu/hw/gpio/bcm2835_gpio.o
  CC      i386-softmmu/hw/vfio/pci.o
  CC      mips-softmmu/hw/misc/mips_itu.o
  CC      mipsel-softmmu/hw/mips/mips_mipssim.o
  CC      lm32-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/hw/s390x/virtio-ccw.o
  CC      arm-softmmu/hw/i2c/omap_i2c.o
  CC      sh4eb-softmmu/target/sh4/cpu.o
  CC      mips64-softmmu/hw/mips/mips_malta.o
  CC      arm-softmmu/hw/input/pxa2xx_keypad.o
  CC      mips64-softmmu/hw/mips/mips_mipssim.o
  CC      mips64-softmmu/hw/mips/addr.o
  CC      sparc64-softmmu/target/sparc/helper.o
  CC      sh4-softmmu/hw/virtio/vhost-user.o
  CC      mips64el-softmmu/hw/vfio/pci.o
  CC      i386-softmmu/hw/vfio/pci-quirks.o
  CC      s390x-softmmu/hw/s390x/css-bridge.o
  CC      mips64el-softmmu/hw/vfio/pci-quirks.o
  CC      sh4eb-softmmu/target/sh4/monitor.o
  CC      mipsel-softmmu/hw/mips/addr.o
  CC      x86_64-softmmu/hw/vfio/platform.o
  CC      arm-softmmu/hw/input/tsc210x.o
  CC      alpha-softmmu/hw/virtio/vhost-backend.o
  CC      ppc-linux-user/trace/generated-helpers.o
  CC      sh4eb-softmmu/target/sh4/gdbstub.o
  CC      sh4-softmmu/hw/virtio/vhost-vsock.o
  CC      x86_64-softmmu/hw/vfio/spapr.o
  CC      mips64el-softmmu/hw/vfio/platform.o
  GEN     trace/generated-helpers.c
  CC      s390x-softmmu/hw/s390x/ccw-device.o
  CC      mipsel-softmmu/hw/mips/mips_int.o
  CC      arm-softmmu/hw/intc/armv7m_nvic.o
  CC      mips-softmmu/hw/misc/mmio_interface.o
  CC      alpha-softmmu/hw/virtio/vhost-user.o
  CC      sh4-softmmu/hw/virtio/virtio-crypto.o
  CC      s390x-softmmu/hw/s390x/s390-pci-bus.o
  CC      sparc64-softmmu/target/sparc/cpu.o
  CC      sparc64-softmmu/target/sparc/fop_helper.o
  CC      arm-softmmu/hw/intc/exynos4210_gic.o
  CC      sh4eb-softmmu/trace/control-target.o
  CC      sparc64-softmmu/target/sparc/cc_helper.o
  CC      i386-softmmu/hw/vfio/platform.o
  CC      mipsel-softmmu/hw/mips/gt64xxx_pci.o
  CC      sparc64-softmmu/target/sparc/win_helper.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      i386-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/virtio/virtio.o
  CC      mips64-softmmu/hw/mips/mips_int.o
  CC      arm-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      mips64-softmmu/hw/mips/mips_jazz.o
  CC      mips64el-softmmu/hw/vfio/spapr.o
  CC      mipsel-softmmu/hw/mips/cps.o
  CC      sparc64-softmmu/target/sparc/mmu_helper.o
  CC      sparc64-softmmu/target/sparc/ldst_helper.o
  CC      mips64el-softmmu/hw/virtio/virtio.o
  CC      mips64el-softmmu/hw/virtio/virtio-balloon.o
  CC      i386-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      mips64-softmmu/hw/mips/gt64xxx_pci.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      i386-softmmu/hw/virtio/vhost.o
  CC      s390x-softmmu/hw/s390x/s390-pci-inst.o
  CC      arm-softmmu/hw/intc/bcm2835_ic.o
  CC      m68k-softmmu/trace/generated-helpers.o
  LINK    lm32-softmmu/qemu-system-lm32
  CC      mipsel-softmmu/target/mips/translate.o
  CC      mips64el-softmmu/hw/virtio/vhost.o
  CC      sh4-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      sh4eb-softmmu/trace/generated-helpers.o
  CC      alpha-softmmu/hw/virtio/vhost-vsock.o
  CC      sparc64-softmmu/target/sparc/int64_helper.o
  CC      x86_64-softmmu/hw/virtio/vhost.o
  CC      i386-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      s390x-softmmu/hw/s390x/s390-skeys.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto.o
  CC      mips-softmmu/hw/net/virtio-net.o
  CC      arm-softmmu/hw/intc/bcm2836_control.o
  CC      arm-softmmu/hw/intc/allwinner-a10-pic.o
  CC      mips-softmmu/hw/net/vhost_net.o
  LINK    xtensaeb-softmmu/qemu-system-xtensaeb
  CC      sh4-softmmu/hw/sh4/shix.o
  CC      x86_64-softmmu/hw/virtio/vhost-backend.o
  CC      sh4-softmmu/hw/sh4/r2d.o
  CC      mipsel-softmmu/target/mips/dsp_helper.o
  CC      arm-softmmu/hw/intc/aspeed_vic.o
  CC      sparc64-softmmu/target/sparc/vis_helper.o
  CC      sh4-softmmu/hw/sh4/sh7750.o
  CC      sh4-softmmu/hw/sh4/sh7750_regnames.o
  CC      x86_64-softmmu/hw/virtio/vhost-user.o
  CC      s390x-softmmu/hw/s390x/s390-stattrib.o
  CC      sparc64-softmmu/target/sparc/gdbstub.o
  CC      mips64el-softmmu/hw/virtio/vhost-backend.o
  CC      s390x-softmmu/hw/s390x/s390-ccw.o
  CC      mips64-softmmu/hw/mips/cps.o
  CC      alpha-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips-softmmu/hw/scsi/virtio-scsi.o
  CC      mips64el-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      mipsel-softmmu/target/mips/op_helper.o
  CC      arm-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      x86_64-softmmu/hw/virtio/vhost-vsock.o
  CC      mips64-softmmu/target/mips/translate.o
  CC      mips64-softmmu/target/mips/dsp_helper.o
  CC      mips64-softmmu/target/mips/op_helper.o
  CC      mips64el-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      mips64-softmmu/target/mips/lmi_helper.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/hw/misc/ivshmem.o
  CC      alpha-softmmu/hw/alpha/dp264.o
  CC      sh4-softmmu/hw/sh4/sh_pci.o
  CC      i386-softmmu/hw/virtio/vhost-user.o
  CC      sparc64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      sh4-softmmu/target/sh4/translate.o
  CC      mips64-softmmu/target/mips/helper.o
  CC      i386-softmmu/hw/virtio/vhost-vsock.o
  CC      sh4-softmmu/target/sh4/op_helper.o
  CC      sh4-softmmu/target/sh4/helper.o
  CC      microblaze-softmmu/trace/generated-helpers.o
  CC      i386-softmmu/hw/virtio/virtio-crypto.o
  CC      alpha-softmmu/hw/alpha/pci.o
  CC      sh4-softmmu/target/sh4/cpu.o
  CC      alpha-softmmu/hw/alpha/typhoon.o
  CC      arm-softmmu/hw/misc/arm_sysctl.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
  CC      mips64-softmmu/target/mips/cpu.o
  CC      sh4-softmmu/target/sh4/monitor.o
  CC      sh4-softmmu/target/sh4/gdbstub.o
  CC      arm-softmmu/hw/misc/cbus.o
  CC      mips64-softmmu/target/mips/gdbstub.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      i386-softmmu/hw/virtio/virtio-crypto-pci.o
  GEN     trace/generated-helpers.c
  CC      mips64el-softmmu/hw/virtio/virtio-crypto.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      arm-softmmu/hw/misc/exynos4210_pmu.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      i386-softmmu/hw/i386/multiboot.o
  CC      mips64-softmmu/target/mips/msa_helper.o
  CC      sh4-softmmu/trace/control-target.o
  CC      mips64el-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      arm-softmmu/hw/misc/exynos4210_clk.o
  CC      arm-softmmu/hw/misc/exynos4210_rng.o
  CC      mips64el-softmmu/hw/mips/mips_r4k.o
  CC      alpha-softmmu/target/alpha/machine.o
  CC      alpha-softmmu/target/alpha/translate.o
  CC      s390x-softmmu/target/s390x/cpu.o
  CC      s390x-softmmu/target/s390x/cpu_models.o
  CC      arm-softmmu/hw/misc/imx_ccm.o
  CC      arm-softmmu/hw/misc/imx31_ccm.o
  CC      arm-softmmu/hw/misc/imx25_ccm.o
  CC      mips-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mips-softmmu/hw/scsi/vhost-scsi-common.o
  CC      sparc64-softmmu/trace/generated-helpers.o
  CC      mips64el-softmmu/hw/mips/mips_malta.o
  CC      mips64-softmmu/target/mips/mips-semi.o
  CC      mipsel-softmmu/target/mips/lmi_helper.o
  CC      arm-softmmu/hw/misc/imx6_ccm.o
  CC      s390x-softmmu/target/s390x/cpu_features.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  LINK    microblaze-softmmu/qemu-system-microblaze
  CC      alpha-softmmu/target/alpha/helper.o
  CC      alpha-softmmu/target/alpha/cpu.o
  CC      mips64-softmmu/target/mips/machine.o
  CC      sh4-softmmu/trace/generated-helpers.o
  CC      alpha-softmmu/target/alpha/int_helper.o
  CC      arm-softmmu/hw/misc/imx6_src.o
  CC      mips64el-softmmu/hw/mips/mips_mipssim.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
  CC      alpha-softmmu/target/alpha/fpu_helper.o
  CC      arm-softmmu/hw/misc/mst_fpga.o
  CC      arm-softmmu/hw/misc/omap_clk.o
  CC      arm-softmmu/hw/misc/omap_gpmc.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
  CC      alpha-softmmu/target/alpha/vax_helper.o
  CC      mips64-softmmu/target/mips/cp0_timer.o
  CC      s390x-softmmu/target/s390x/gdbstub.o
  CC      mips64el-softmmu/hw/mips/addr.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      arm-softmmu/hw/misc/omap_l4.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      i386-softmmu/hw/i386/pc.o
  CC      alpha-softmmu/target/alpha/sys_helper.o
  CC      mips-softmmu/hw/scsi/vhost-scsi.o
  CC      alpha-softmmu/target/alpha/mem_helper.o
  CC      s390x-softmmu/target/s390x/interrupt.o
  CC      mips-softmmu/hw/scsi/vhost-user-scsi.o
  CC      i386-softmmu/hw/i386/pc_piix.o
  CC      mips-softmmu/hw/timer/mips_gictimer.o
  CC      s390x-softmmu/target/s390x/helper.o
  CC      alpha-softmmu/target/alpha/gdbstub.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      mips-softmmu/hw/timer/mc146818rtc.o
  GEN     trace/generated-helpers.c
  CC      s390x-softmmu/target/s390x/translate.o
  CC      mipsel-softmmu/target/mips/helper.o
  CC      mipsel-softmmu/target/mips/cpu.o
  GEN     trace/generated-helpers.c
  CC      mipsel-softmmu/target/mips/gdbstub.o
  CC      alpha-softmmu/trace/control-target.o
  CC      arm-softmmu/hw/misc/omap_sdrc.o
  CC      s390x-softmmu/target/s390x/cc_helper.o
  CC      aarch64-softmmu/hw/misc/ivshmem.o
  CC      mips-softmmu/hw/vfio/common.o
  CC      mips-softmmu/hw/vfio/pci.o
  CC      mips64el-softmmu/hw/mips/mips_int.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      mips-softmmu/hw/vfio/pci-quirks.o
  CC      s390x-softmmu/target/s390x/excp_helper.o
  CC      mips64el-softmmu/hw/mips/mips_jazz.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      arm-softmmu/hw/misc/omap_tap.o
  CC      s390x-softmmu/target/s390x/fpu_helper.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      alpha-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/misc/bcm2835_mbox.o
  CC      i386-softmmu/hw/i386/pc_q35.o
  CC      mips64el-softmmu/hw/mips/mips_fulong2e.o
  CC      s390x-softmmu/target/s390x/int_helper.o
  CC      arm-softmmu/hw/misc/bcm2835_property.o
  CC      s390x-softmmu/target/s390x/mem_helper.o
  CC      mips64-softmmu/trace/control-target.o
  CC      mips64el-softmmu/hw/mips/gt64xxx_pci.o
  CC      mipsel-softmmu/target/mips/msa_helper.o
  CC      i386-softmmu/hw/i386/pc_sysfw.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      mips64el-softmmu/hw/mips/cps.o
  CC      mips64-softmmu/trace/generated-helpers.o
  CC      s390x-softmmu/target/s390x/misc_helper.o
  CC      i386-softmmu/hw/i386/x86-iommu.o
  CC      arm-softmmu/hw/misc/bcm2835_rng.o
  CC      mips64el-softmmu/hw/mips/boston.o
  CC      s390x-softmmu/target/s390x/crypto_helper.o
  CC      i386-softmmu/hw/i386/intel_iommu.o
  CC      arm-softmmu/hw/misc/zynq_slcr.o
  CC      s390x-softmmu/target/s390x/machine.o
  CC      mips-softmmu/hw/vfio/platform.o
  CC      i386-softmmu/hw/i386/amd_iommu.o
  CC      s390x-softmmu/target/s390x/ioinst.o
  CC      mips64el-softmmu/target/mips/translate.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      mips-softmmu/hw/vfio/spapr.o
  CC      i386-softmmu/hw/i386/vmport.o
  CC      mipsel-softmmu/target/mips/mips-semi.o
  CC      mips-softmmu/hw/virtio/virtio.o
  CC      mipsel-softmmu/target/mips/machine.o
  CC      x86_64-softmmu/hw/i386/vmport.o
  CC      mips64el-softmmu/target/mips/dsp_helper.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      arm-softmmu/hw/misc/zynq-xadc.o
  CC      s390x-softmmu/target/s390x/arch_dump.o
  CC      x86_64-softmmu/hw/i386/vmmouse.o
  LINK    mipsel-linux-user/qemu-mipsel
  CC      mipsel-softmmu/target/mips/cp0_timer.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      i386-softmmu/hw/i386/vmmouse.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      s390x-softmmu/target/s390x/mmu_helper.o
  CC      mips64el-softmmu/target/mips/op_helper.o
  CC      mips64el-softmmu/target/mips/lmi_helper.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  GEN     trace/generated-helpers.c
  CC      mipsel-softmmu/trace/control-target.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      s390x-softmmu/target/s390x/diag.o
  CC      mips-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      s390x-softmmu/target/s390x/sigp.o
  CC      mips-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      s390x-softmmu/target/s390x/kvm-stub.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  CC      mips64el-softmmu/target/mips/helper.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/hw/i386/kvmvapic.o
  CC      s390x-softmmu/trace/control-target.o
  CC      i386-softmmu/hw/i386/acpi-build.o
  CC      i386-softmmu/target/i386/helper.o
  CC      mipsel-softmmu/trace/generated-helpers.o
  CC      mips64el-softmmu/target/mips/cpu.o
  CC      s390x-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      mips64el-softmmu/target/mips/gdbstub.o
  CC      mips-softmmu/hw/virtio/vhost-backend.o
  CC      mips64el-softmmu/target/mips/msa_helper.o
  CC      i386-softmmu/target/i386/cpu.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      mips64el-softmmu/target/mips/mips-semi.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      i386-softmmu/target/i386/gdbstub.o
  CC      arm-softmmu/hw/misc/mps2-scc.o
  CC      mips64el-softmmu/target/mips/machine.o
  CC      arm-softmmu/hw/misc/aspeed_scu.o
  CC      mips-softmmu/hw/virtio/vhost-user.o
  CC      mips-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      mips64el-softmmu/target/mips/cp0_timer.o
  CC      i386-softmmu/target/i386/xsave_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      s390x-softmmu/trace/generated-helpers.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      i386-softmmu/target/i386/translate.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      mips-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  LINK    sh4eb-softmmu/qemu-system-sh4eb
  CC      arm-softmmu/hw/misc/aspeed_sdmc.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      mips64el-softmmu/trace/control-target.o
  CC      i386-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      i386-softmmu/target/i386/cc_helper.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      arm-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      i386-softmmu/target/i386/excp_helper.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      mips-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      mips64el-softmmu/trace/generated-helpers.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      mips-softmmu/hw/mips/mips_r4k.o
  CC      i386-softmmu/target/i386/fpu_helper.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      mips-softmmu/hw/mips/mips_malta.o
  CC      i386-softmmu/target/i386/int_helper.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      arm-softmmu/hw/misc/msf2-sysreg.o
  CC      mips-softmmu/hw/mips/mips_mipssim.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      i386-softmmu/target/i386/mem_helper.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      mips-softmmu/hw/mips/addr.o
  CC      mips-softmmu/hw/mips/mips_int.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      arm-softmmu/hw/net/virtio-net.o
  CC      mips-softmmu/hw/mips/gt64xxx_pci.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      mips-softmmu/hw/mips/cps.o
  CC      mips-softmmu/target/mips/translate.o
  CC      i386-softmmu/target/i386/misc_helper.o
  CC      arm-softmmu/hw/net/vhost_net.o
  CC      mips-softmmu/target/mips/dsp_helper.o
  CC      arm-softmmu/hw/pcmcia/pxa2xx.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      arm-softmmu/hw/scsi/virtio-scsi.o
  CC      mips-softmmu/target/mips/op_helper.o
  CC      mips-softmmu/target/mips/lmi_helper.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      i386-softmmu/target/i386/mpx_helper.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      mips-softmmu/target/mips/helper.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      i386-softmmu/target/i386/seg_helper.o
  CC      arm-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      i386-softmmu/target/i386/smm_helper.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  CC      i386-softmmu/target/i386/svm_helper.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      i386-softmmu/target/i386/machine.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      mips-softmmu/target/mips/cpu.o
  CC      mips-softmmu/target/mips/gdbstub.o
  CC      arm-softmmu/hw/scsi/vhost-scsi-common.o
  CC      arm-softmmu/hw/scsi/vhost-scsi.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      arm-softmmu/hw/scsi/vhost-user-scsi.o
  CC      x86_64-softmmu/target/i386/kvm-stub.o
  CC      arm-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      mips-softmmu/target/mips/msa_helper.o
  CC      mips-softmmu/target/mips/mips-semi.o
  CC      i386-softmmu/target/i386/arch_memory_mapping.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      arm-softmmu/hw/sd/pxa2xx_mmci.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      i386-softmmu/target/i386/arch_dump.o
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/target/i386/monitor.o
  CC      x86_64-softmmu/trace/control-target.o
  CC      i386-softmmu/target/i386/kvm-stub.o
  CC      mips-softmmu/target/mips/machine.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      arm-softmmu/hw/sd/bcm2835_sdhost.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      mips-softmmu/target/mips/cp0_timer.o
  CC      arm-softmmu/hw/ssi/omap_spi.o
  CC      arm-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi.o
  CC      arm-softmmu/hw/timer/exynos4210_mct.o
  GEN     trace/generated-helpers.c
  GEN     trace/generated-helpers.c
  CC      i386-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      mips-softmmu/trace/control-target.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/timer/exynos4210_pwm.o
  CC      mips-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      i386-softmmu/gdbstub-xml.o
  CC      arm-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      arm-softmmu/hw/timer/omap_gptimer.o
  CC      i386-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      arm-softmmu/hw/timer/pxa2xx_timer.o
  CC      arm-softmmu/hw/timer/digic-timer.o
  CC      arm-softmmu/hw/timer/allwinner-a10-pit.o
  CC      arm-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      arm-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      arm-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      arm-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/vfio/common.o
  CC      arm-softmmu/hw/vfio/calxeda-xgmac.o
  CC      aarch64-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/vfio/pci-quirks.o
  CC      arm-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/platform.o
  CC      arm-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/vfio/calxeda-xgmac.o
  CC      arm-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      arm-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/virtio/vhost.o
  CC      arm-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/virtio/vhost-backend.o
  LINK    m68k-softmmu/qemu-system-m68k
  CC      arm-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/virtio/vhost-vsock.o
  CC      arm-softmmu/hw/virtio/virtio-crypto.o
  CC      arm-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      arm-softmmu/hw/arm/boot.o
  CC      arm-softmmu/hw/arm/collie.o
  LINK    tricore-softmmu/qemu-system-tricore
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      arm-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      arm-softmmu/hw/arm/exynos4_boards.o
  CC      arm-softmmu/hw/arm/highbank.o
  CC      arm-softmmu/hw/arm/digic_boards.o
  CC      arm-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      arm-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      arm-softmmu/hw/arm/musicpal.o
  CC      arm-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      arm-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      arm-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      arm-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      arm-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      arm-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      arm-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      arm-softmmu/hw/arm/versatilepb.o
  CC      arm-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      arm-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      arm-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      arm-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      arm-softmmu/hw/arm/virt-acpi-build.o
  CC      arm-softmmu/hw/arm/netduino2.o
  CC      arm-softmmu/hw/arm/sysbus-fdt.o
  CC      arm-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      arm-softmmu/hw/arm/exynos4210.o
  CC      arm-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      arm-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      arm-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      arm-softmmu/hw/arm/omap1.o
  CC      arm-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      arm-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      arm-softmmu/hw/arm/strongarm.o
  LINK    i386-linux-user/qemu-i386
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      arm-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      arm-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      arm-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      arm-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      arm-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      arm-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      arm-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      arm-softmmu/hw/arm/imx25_pdk.o
  CC      arm-softmmu/hw/arm/fsl-imx31.o
  CC      arm-softmmu/hw/arm/fsl-imx6.o
  CC      arm-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      arm-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      arm-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      arm-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      arm-softmmu/hw/arm/mps2.o
  LINK    sh4-softmmu/qemu-system-sh4
  CC      arm-softmmu/hw/arm/msf2-soc.o
  CC      arm-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/translate.o
  LINK    alpha-softmmu/qemu-system-alpha
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      arm-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      arm-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/cpu.o
  LINK    sparc64-softmmu/qemu-system-sparc64
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      arm-softmmu/target/arm/psci.o
  CC      arm-softmmu/target/arm/arch_dump.o
  CC      arm-softmmu/target/arm/monitor.o
  CC      arm-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      arm-softmmu/target/arm/translate.o
  CC      arm-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  LINK    aarch64_be-linux-user/qemu-aarch64_be
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  CC      arm-softmmu/target/arm/helper.o
  CC      arm-softmmu/target/arm/cpu.o
  LINK    x86_64-linux-user/qemu-x86_64
  CC      arm-softmmu/target/arm/neon_helper.o
  CC      arm-softmmu/target/arm/iwmmxt_helper.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/trace/control-target.o
  CC      arm-softmmu/target/arm/crypto_helper.o
  CC      arm-softmmu/target/arm/arm-powerctl.o
  CC      aarch64-softmmu/gdbstub-xml.o
  GEN     trace/generated-helpers.c
  CC      arm-softmmu/trace/control-target.o
  CC      aarch64-softmmu/trace/generated-helpers.o
  CC      arm-softmmu/gdbstub-xml.o
  CC      arm-softmmu/trace/generated-helpers.o
  LINK    armeb-linux-user/qemu-armeb
  LINK    arm-linux-user/qemu-arm
  LINK    mips-linux-user/qemu-mips
  LINK    mipsn32el-linux-user/qemu-mipsn32el
  LINK    s390x-softmmu/qemu-system-s390x
  LINK    mipsn32-linux-user/qemu-mipsn32
  LINK    mips64-linux-user/qemu-mips64
  LINK    mips64el-linux-user/qemu-mips64el
  LINK    x86_64-softmmu/qemu-system-x86_64
  LINK    i386-softmmu/qemu-system-i386
  LINK    ppc64abi32-linux-user/qemu-ppc64abi32
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-x86_64] Error 1
make: *** [subdir-x86_64-softmmu] Error 2
  LINK    ppc-linux-user/qemu-ppc
  LINK    aarch64-softmmu/qemu-system-aarch64
  LINK    arm-softmmu/qemu-system-arm
  LINK    ppc64le-linux-user/qemu-ppc64le
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-r4540qbd/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-i386] Error 1
make: *** [subdir-i386-softmmu] Error 2
  LINK    mips-softmmu/qemu-system-mips
  LINK    mipsel-softmmu/qemu-system-mipsel
  LINK    ppc64-linux-user/qemu-ppc64
  LINK    mips64el-softmmu/qemu-system-mips64el
  LINK    mips64-softmmu/qemu-system-mips64
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

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

* Re: [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
@ 2018-01-30 17:49     ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-01-30 17:49 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> AMD EPYC processors support memory encryption feature. The feature
> is reported through CPUID 8000_001F[EAX].
> 
> Fn8000_001F [EAX]:
>  Bit 0   Secure Memory Encryption (SME) supported
>  Bit 1   Secure Encrypted Virtualization (SEV) supported
>  Bit 2   Page flush MSR supported
>  Bit 3   Ecrypted State (SEV-ES) support
> 
> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> provide additional information regarding the feature (such as which page
> table bit is used to mark pages as encrypted etc). The information in EBX
> and ECX may vary from one family to another hence we use the host cpuid
> to populate the EBX information.

That's going to make it interesting for migration.  If the guest needs
to know that C-bit position then you presumably can't migrate between
those two host types, but we wouldn't have anything that currently
stops us.
We already have similar problems with variations in physical address
size but normally get away with that, especially on smaller VMs.

Dave


> The details for memory encryption CPUID is available in AMD APM
> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1

> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
>  target/i386/cpu.h |  6 ++++++
>  2 files changed, 42 insertions(+)
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index a49d2221adc9..4147eb6e18a9 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
>  #define TCG_EXT4_FEATURES 0
>  #define TCG_SVM_FEATURES 0
>  #define TCG_KVM_FEATURES 0
> +#define TCG_MEM_ENCRYPT_FEATURES 0
>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
>          .cpuid_reg = R_EDX,
>          .tcg_features = ~0U,
>      },
> +    [FEAT_MEM_ENCRYPT] = {
> +        .feat_names = {
> +            "sme", "sev", "page-flush-msr", "sev-es",
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +        },
> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
> +    }
>  };
>  
>  typedef struct X86RegisterInfo32 {
> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_XSAVE_XGETBV1,
>          .features[FEAT_6_EAX] =
>              CPUID_6_EAX_ARAT,
> +        /* Missing: SEV_ES */
> +        .features[FEAT_MEM_ENCRYPT] =
> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
>          .xlevel = 0x8000000A,
>          .model_id = "AMD EPYC Processor",
>      },
> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
>              *edx = 0;
>          }
>          break;
> +    case 0x8000001F:
> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
> +            *eax = env->features[FEAT_MEM_ENCRYPT];
> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
> +            *ecx = 0;
> +            *edx = 0;
> +        } else {
> +            *eax = 0;
> +            *ebx = 0;
> +            *ecx = 0;
> +            *edx = 0;
> +        }
> +        break;
>      case 0xC0000000:
>          *eax = env->cpuid_xlevel2;
>          *ebx = 0;
> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
>          /* SVM requires CPUID[0x8000000A] */
>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
>          }
> +        /* SEV requires CPUID[0x8000001F] */
> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
> +        }
>      }
>  
>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index f91e37d25dea..f7a0ab20fdd1 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
>      FEAT_6_EAX,         /* CPUID[6].EAX */
>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
>      FEATURE_WORDS,
>  } FeatureWord;
>  
> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
>  
>  #define CPUID_6_EAX_ARAT       (1U << 2)
>  
> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
> +
>  /* CPUID[0x80000007].EDX flags: */
>  #define CPUID_APM_INVTSC       (1U << 8)
>  
> -- 
> 2.9.5
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
@ 2018-01-30 17:49     ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-01-30 17:49 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> AMD EPYC processors support memory encryption feature. The feature
> is reported through CPUID 8000_001F[EAX].
> 
> Fn8000_001F [EAX]:
>  Bit 0   Secure Memory Encryption (SME) supported
>  Bit 1   Secure Encrypted Virtualization (SEV) supported
>  Bit 2   Page flush MSR supported
>  Bit 3   Ecrypted State (SEV-ES) support
> 
> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> provide additional information regarding the feature (such as which page
> table bit is used to mark pages as encrypted etc). The information in EBX
> and ECX may vary from one family to another hence we use the host cpuid
> to populate the EBX information.

That's going to make it interesting for migration.  If the guest needs
to know that C-bit position then you presumably can't migrate between
those two host types, but we wouldn't have anything that currently
stops us.
We already have similar problems with variations in physical address
size but normally get away with that, especially on smaller VMs.

Dave


> The details for memory encryption CPUID is available in AMD APM
> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1

> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
>  target/i386/cpu.h |  6 ++++++
>  2 files changed, 42 insertions(+)
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index a49d2221adc9..4147eb6e18a9 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
>  #define TCG_EXT4_FEATURES 0
>  #define TCG_SVM_FEATURES 0
>  #define TCG_KVM_FEATURES 0
> +#define TCG_MEM_ENCRYPT_FEATURES 0
>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
>          .cpuid_reg = R_EDX,
>          .tcg_features = ~0U,
>      },
> +    [FEAT_MEM_ENCRYPT] = {
> +        .feat_names = {
> +            "sme", "sev", "page-flush-msr", "sev-es",
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +            NULL, NULL, NULL, NULL,
> +        },
> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
> +    }
>  };
>  
>  typedef struct X86RegisterInfo32 {
> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_XSAVE_XGETBV1,
>          .features[FEAT_6_EAX] =
>              CPUID_6_EAX_ARAT,
> +        /* Missing: SEV_ES */
> +        .features[FEAT_MEM_ENCRYPT] =
> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
>          .xlevel = 0x8000000A,
>          .model_id = "AMD EPYC Processor",
>      },
> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
>              *edx = 0;
>          }
>          break;
> +    case 0x8000001F:
> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
> +            *eax = env->features[FEAT_MEM_ENCRYPT];
> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
> +            *ecx = 0;
> +            *edx = 0;
> +        } else {
> +            *eax = 0;
> +            *ebx = 0;
> +            *ecx = 0;
> +            *edx = 0;
> +        }
> +        break;
>      case 0xC0000000:
>          *eax = env->cpuid_xlevel2;
>          *ebx = 0;
> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
>          /* SVM requires CPUID[0x8000000A] */
>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
>          }
> +        /* SEV requires CPUID[0x8000001F] */
> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
> +        }
>      }
>  
>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index f91e37d25dea..f7a0ab20fdd1 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
>      FEAT_6_EAX,         /* CPUID[6].EAX */
>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
>      FEATURE_WORDS,
>  } FeatureWord;
>  
> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
>  
>  #define CPUID_6_EAX_ARAT       (1U << 2)
>  
> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
> +
>  /* CPUID[0x80000007].EDX flags: */
>  #define CPUID_APM_INVTSC       (1U << 8)
>  
> -- 
> 2.9.5
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
@ 2018-01-30 20:08     ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-01-30 20:08 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> During machine creation we encrypted the guest bios image, the
> LAUNCH_MEASURE command can be used to retrieve the measurement of
> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
> libvirt can grab the measurement value as soon as we are done with
> creating the encrypted machine.

Can you ust clarify what happens if the libvirt has disconnected and
reconnected to qemu and so didn't see the event?  Can the reconnecting
libvirt query it and find out it's ready/not ready yet?

Dave

> Cc: Daniel P. Berrange <berrange@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: kvm@vger.kernel.org
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  accel/kvm/trace-events |  1 +
>  include/sysemu/sev.h   |  1 +
>  3 files changed, 60 insertions(+)
> 
> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> index 1f757df725df..b78cf3144b1d 100644
> --- a/accel/kvm/sev.c
> +++ b/accel/kvm/sev.c
> @@ -19,11 +19,13 @@
>  #include "sysemu/sev.h"
>  #include "sysemu/sysemu.h"
>  #include "trace.h"
> +#include "qapi-event.h"
>  
>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
>  
>  static int sev_fd;
> +static SEVState *sev_state;
>  
>  #define SEV_FW_MAX_ERROR      0x17
>  
> @@ -418,6 +420,59 @@ err:
>      return ret;
>  }
>  
> +static void
> +sev_launch_get_measure(Notifier *notifier, void *unused)
> +{
> +    int ret, error;
> +    guchar *data;
> +    SEVState *s = sev_state;
> +    struct kvm_sev_launch_measure *measurement;
> +
> +    measurement = g_malloc0(sizeof(*measurement));
> +    if (!measurement) {
> +        return;
> +    }
> +
> +    /* query the measurement blob length */
> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> +    if (!measurement->len) {
> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> +                     __func__, ret, error, fw_error_to_str(errno));
> +        goto free_measurement;
> +    }
> +
> +    data = g_malloc(measurement->len);
> +    if (s->measurement) {
> +        goto free_data;
> +    }
> +
> +    measurement->uaddr = (unsigned long)data;
> +
> +    /* get the measurement blob */
> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> +    if (ret) {
> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> +                     __func__, ret, error, fw_error_to_str(errno));
> +        goto free_data;
> +    }
> +
> +    sev_set_guest_state(SEV_STATE_SECRET);
> +
> +    /* encode the measurement value and emit the event */
> +    s->measurement = g_base64_encode(data, measurement->len);
> +    trace_kvm_sev_launch_measurement(s->measurement);
> +    qapi_event_send_sev_measurement(s->measurement, &error_abort);
> +
> +free_data:
> +    g_free(data);
> +free_measurement:
> +    g_free(measurement);
> +}
> +
> +static Notifier sev_machine_done_notify = {
> +    .notify = sev_launch_get_measure,
> +};
> +
>  void *
>  sev_guest_init(const char *id)
>  {
> @@ -461,6 +516,9 @@ sev_guest_init(const char *id)
>      }
>  
>      ram_block_notifier_add(&sev_ram_notifier);
> +    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
> +
> +    sev_state = s;
>  
>      return s;
>  err:
> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> index c55546f36a25..51df5113ad07 100644
> --- a/accel/kvm/trace-events
> +++ b/accel/kvm/trace-events
> @@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
>  kvm_sev_change_state(char *old, char *new) "%s -> %s"
>  kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
>  kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
> +kvm_sev_launch_measurement(const char *value) "data %s"
> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> index 839800efdbbf..572120c865ea 100644
> --- a/include/sysemu/sev.h
> +++ b/include/sysemu/sev.h
> @@ -63,6 +63,7 @@ typedef enum {
>  
>  struct SEVState {
>      QSevGuestInfo *sev_info;
> +    gchar *measurement;
>  };
>  
>  typedef struct SEVState SEVState;
> -- 
> 2.9.5
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
@ 2018-01-30 20:08     ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-01-30 20:08 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> During machine creation we encrypted the guest bios image, the
> LAUNCH_MEASURE command can be used to retrieve the measurement of
> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
> libvirt can grab the measurement value as soon as we are done with
> creating the encrypted machine.

Can you ust clarify what happens if the libvirt has disconnected and
reconnected to qemu and so didn't see the event?  Can the reconnecting
libvirt query it and find out it's ready/not ready yet?

Dave

> Cc: Daniel P. Berrange <berrange@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: kvm@vger.kernel.org
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  accel/kvm/trace-events |  1 +
>  include/sysemu/sev.h   |  1 +
>  3 files changed, 60 insertions(+)
> 
> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> index 1f757df725df..b78cf3144b1d 100644
> --- a/accel/kvm/sev.c
> +++ b/accel/kvm/sev.c
> @@ -19,11 +19,13 @@
>  #include "sysemu/sev.h"
>  #include "sysemu/sysemu.h"
>  #include "trace.h"
> +#include "qapi-event.h"
>  
>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
>  
>  static int sev_fd;
> +static SEVState *sev_state;
>  
>  #define SEV_FW_MAX_ERROR      0x17
>  
> @@ -418,6 +420,59 @@ err:
>      return ret;
>  }
>  
> +static void
> +sev_launch_get_measure(Notifier *notifier, void *unused)
> +{
> +    int ret, error;
> +    guchar *data;
> +    SEVState *s = sev_state;
> +    struct kvm_sev_launch_measure *measurement;
> +
> +    measurement = g_malloc0(sizeof(*measurement));
> +    if (!measurement) {
> +        return;
> +    }
> +
> +    /* query the measurement blob length */
> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> +    if (!measurement->len) {
> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> +                     __func__, ret, error, fw_error_to_str(errno));
> +        goto free_measurement;
> +    }
> +
> +    data = g_malloc(measurement->len);
> +    if (s->measurement) {
> +        goto free_data;
> +    }
> +
> +    measurement->uaddr = (unsigned long)data;
> +
> +    /* get the measurement blob */
> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> +    if (ret) {
> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> +                     __func__, ret, error, fw_error_to_str(errno));
> +        goto free_data;
> +    }
> +
> +    sev_set_guest_state(SEV_STATE_SECRET);
> +
> +    /* encode the measurement value and emit the event */
> +    s->measurement = g_base64_encode(data, measurement->len);
> +    trace_kvm_sev_launch_measurement(s->measurement);
> +    qapi_event_send_sev_measurement(s->measurement, &error_abort);
> +
> +free_data:
> +    g_free(data);
> +free_measurement:
> +    g_free(measurement);
> +}
> +
> +static Notifier sev_machine_done_notify = {
> +    .notify = sev_launch_get_measure,
> +};
> +
>  void *
>  sev_guest_init(const char *id)
>  {
> @@ -461,6 +516,9 @@ sev_guest_init(const char *id)
>      }
>  
>      ram_block_notifier_add(&sev_ram_notifier);
> +    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
> +
> +    sev_state = s;
>  
>      return s;
>  err:
> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> index c55546f36a25..51df5113ad07 100644
> --- a/accel/kvm/trace-events
> +++ b/accel/kvm/trace-events
> @@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
>  kvm_sev_change_state(char *old, char *new) "%s -> %s"
>  kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
>  kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
> +kvm_sev_launch_measurement(const char *value) "data %s"
> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> index 839800efdbbf..572120c865ea 100644
> --- a/include/sysemu/sev.h
> +++ b/include/sysemu/sev.h
> @@ -63,6 +63,7 @@ typedef enum {
>  
>  struct SEVState {
>      QSevGuestInfo *sev_info;
> +    gchar *measurement;
>  };
>  
>  typedef struct SEVState SEVState;
> -- 
> 2.9.5
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
  2018-01-30 17:49     ` [Qemu-devel] " Dr. David Alan Gilbert
@ 2018-01-30 21:46       ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 21:46 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson



On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> AMD EPYC processors support memory encryption feature. The feature
>> is reported through CPUID 8000_001F[EAX].
>>
>> Fn8000_001F [EAX]:
>>  Bit 0   Secure Memory Encryption (SME) supported
>>  Bit 1   Secure Encrypted Virtualization (SEV) supported
>>  Bit 2   Page flush MSR supported
>>  Bit 3   Ecrypted State (SEV-ES) support
>>
>> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
>> provide additional information regarding the feature (such as which page
>> table bit is used to mark pages as encrypted etc). The information in EBX
>> and ECX may vary from one family to another hence we use the host cpuid
>> to populate the EBX information.
> That's going to make it interesting for migration.  If the guest needs
> to know that C-bit position then you presumably can't migrate between
> those two host types, but we wouldn't have anything that currently
> stops us.
> We already have similar problems with variations in physical address
> size but normally get away with that, especially on smaller VMs.

Dave,

While building the page tables guest need to know the C-bit position.
The C-bit position in the guest is same as C-bit position on the host.
For migration case, we should be able to migrate SEV guest on same host
type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
be okay migrating the SEV guests among those host types).  Since C-bit
position is not fixed hence migrating to different host family will be
an issue.

-Brijesh
> Dave
>
>
>> The details for memory encryption CPUID is available in AMD APM
>> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Richard Henderson <rth@twiddle.net>
>> Cc: Eduardo Habkost <ehabkost@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
>>  target/i386/cpu.h |  6 ++++++
>>  2 files changed, 42 insertions(+)
>>
>> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>> index a49d2221adc9..4147eb6e18a9 100644
>> --- a/target/i386/cpu.c
>> +++ b/target/i386/cpu.c
>> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
>>  #define TCG_EXT4_FEATURES 0
>>  #define TCG_SVM_FEATURES 0
>>  #define TCG_KVM_FEATURES 0
>> +#define TCG_MEM_ENCRYPT_FEATURES 0
>>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
>>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
>>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
>> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
>>          .cpuid_reg = R_EDX,
>>          .tcg_features = ~0U,
>>      },
>> +    [FEAT_MEM_ENCRYPT] = {
>> +        .feat_names = {
>> +            "sme", "sev", "page-flush-msr", "sev-es",
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +        },
>> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
>> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
>> +    }
>>  };
>>  
>>  typedef struct X86RegisterInfo32 {
>> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>>              CPUID_XSAVE_XGETBV1,
>>          .features[FEAT_6_EAX] =
>>              CPUID_6_EAX_ARAT,
>> +        /* Missing: SEV_ES */
>> +        .features[FEAT_MEM_ENCRYPT] =
>> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
>>          .xlevel = 0x8000000A,
>>          .model_id = "AMD EPYC Processor",
>>      },
>> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
>>              *edx = 0;
>>          }
>>          break;
>> +    case 0x8000001F:
>> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
>> +            *eax = env->features[FEAT_MEM_ENCRYPT];
>> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
>> +            *ecx = 0;
>> +            *edx = 0;
>> +        } else {
>> +            *eax = 0;
>> +            *ebx = 0;
>> +            *ecx = 0;
>> +            *edx = 0;
>> +        }
>> +        break;
>>      case 0xC0000000:
>>          *eax = env->cpuid_xlevel2;
>>          *ebx = 0;
>> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
>>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
>>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
>>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
>> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
>>          /* SVM requires CPUID[0x8000000A] */
>>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
>>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
>>          }
>> +        /* SEV requires CPUID[0x8000001F] */
>> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
>> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
>> +        }
>>      }
>>  
>>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
>> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
>> index f91e37d25dea..f7a0ab20fdd1 100644
>> --- a/target/i386/cpu.h
>> +++ b/target/i386/cpu.h
>> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
>>      FEAT_6_EAX,         /* CPUID[6].EAX */
>>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
>>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
>> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
>>      FEATURE_WORDS,
>>  } FeatureWord;
>>  
>> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
>>  
>>  #define CPUID_6_EAX_ARAT       (1U << 2)
>>  
>> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
>> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
>> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
>> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
>> +
>>  /* CPUID[0x80000007].EDX flags: */
>>  #define CPUID_APM_INVTSC       (1U << 8)
>>  
>> -- 
>> 2.9.5
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
@ 2018-01-30 21:46       ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 21:46 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson



On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> AMD EPYC processors support memory encryption feature. The feature
>> is reported through CPUID 8000_001F[EAX].
>>
>> Fn8000_001F [EAX]:
>>  Bit 0   Secure Memory Encryption (SME) supported
>>  Bit 1   Secure Encrypted Virtualization (SEV) supported
>>  Bit 2   Page flush MSR supported
>>  Bit 3   Ecrypted State (SEV-ES) support
>>
>> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
>> provide additional information regarding the feature (such as which page
>> table bit is used to mark pages as encrypted etc). The information in EBX
>> and ECX may vary from one family to another hence we use the host cpuid
>> to populate the EBX information.
> That's going to make it interesting for migration.  If the guest needs
> to know that C-bit position then you presumably can't migrate between
> those two host types, but we wouldn't have anything that currently
> stops us.
> We already have similar problems with variations in physical address
> size but normally get away with that, especially on smaller VMs.

Dave,

While building the page tables guest need to know the C-bit position.
The C-bit position in the guest is same as C-bit position on the host.
For migration case, we should be able to migrate SEV guest on same host
type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
be okay migrating the SEV guests among those host types).  Since C-bit
position is not fixed hence migrating to different host family will be
an issue.

-Brijesh
> Dave
>
>
>> The details for memory encryption CPUID is available in AMD APM
>> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Richard Henderson <rth@twiddle.net>
>> Cc: Eduardo Habkost <ehabkost@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
>>  target/i386/cpu.h |  6 ++++++
>>  2 files changed, 42 insertions(+)
>>
>> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>> index a49d2221adc9..4147eb6e18a9 100644
>> --- a/target/i386/cpu.c
>> +++ b/target/i386/cpu.c
>> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
>>  #define TCG_EXT4_FEATURES 0
>>  #define TCG_SVM_FEATURES 0
>>  #define TCG_KVM_FEATURES 0
>> +#define TCG_MEM_ENCRYPT_FEATURES 0
>>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
>>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
>>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
>> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
>>          .cpuid_reg = R_EDX,
>>          .tcg_features = ~0U,
>>      },
>> +    [FEAT_MEM_ENCRYPT] = {
>> +        .feat_names = {
>> +            "sme", "sev", "page-flush-msr", "sev-es",
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +            NULL, NULL, NULL, NULL,
>> +        },
>> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
>> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
>> +    }
>>  };
>>  
>>  typedef struct X86RegisterInfo32 {
>> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>>              CPUID_XSAVE_XGETBV1,
>>          .features[FEAT_6_EAX] =
>>              CPUID_6_EAX_ARAT,
>> +        /* Missing: SEV_ES */
>> +        .features[FEAT_MEM_ENCRYPT] =
>> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
>>          .xlevel = 0x8000000A,
>>          .model_id = "AMD EPYC Processor",
>>      },
>> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
>>              *edx = 0;
>>          }
>>          break;
>> +    case 0x8000001F:
>> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
>> +            *eax = env->features[FEAT_MEM_ENCRYPT];
>> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
>> +            *ecx = 0;
>> +            *edx = 0;
>> +        } else {
>> +            *eax = 0;
>> +            *ebx = 0;
>> +            *ecx = 0;
>> +            *edx = 0;
>> +        }
>> +        break;
>>      case 0xC0000000:
>>          *eax = env->cpuid_xlevel2;
>>          *ebx = 0;
>> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
>>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
>>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
>>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
>> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
>>          /* SVM requires CPUID[0x8000000A] */
>>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
>>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
>>          }
>> +        /* SEV requires CPUID[0x8000001F] */
>> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
>> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
>> +        }
>>      }
>>  
>>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
>> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
>> index f91e37d25dea..f7a0ab20fdd1 100644
>> --- a/target/i386/cpu.h
>> +++ b/target/i386/cpu.h
>> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
>>      FEAT_6_EAX,         /* CPUID[6].EAX */
>>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
>>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
>> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
>>      FEATURE_WORDS,
>>  } FeatureWord;
>>  
>> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
>>  
>>  #define CPUID_6_EAX_ARAT       (1U << 2)
>>  
>> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
>> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
>> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
>> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
>> +
>>  /* CPUID[0x80000007].EDX flags: */
>>  #define CPUID_APM_INVTSC       (1U << 8)
>>  
>> -- 
>> 2.9.5
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 02/23] exec: add ram_debug_ops support
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
@ 2018-01-30 21:59     ` Edgar E. Iglesias
  -1 siblings, 0 replies; 118+ messages in thread
From: Edgar E. Iglesias @ 2018-01-30 21:59 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Dr. David Alan Gilbert, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson

On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
> Currently, the guest memory access for the debug purpose is performed
> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
> ram_debug_ops callbacks. The ram_debug_ops can be used to override
> memcpy() with something else.
> 
> The feature can be used by encrypted guest -- which can register
> callbacks to override memcpy() with memory encryption/decryption APIs.
> 
> a typical usage:
> 
> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> 
> MemoryRegionRAMReadWriteOps ops;
> ops.read = mem_read;
> ops.write = mem_write;


Hi,

Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
I was hoping a similar infrastructure could be used for MMIO
debug accesses.

Best regards,
Edgar



> 
> memory_region_init_ram(mem, NULL, "memory", size, NULL);
> memory_region_set_ram_debug_ops(mem, ops);
> 
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
>  include/exec/memory.h | 27 +++++++++++++++++++++
>  2 files changed, 77 insertions(+), 16 deletions(-)
> 
> diff --git a/exec.c b/exec.c
> index 629a5083851d..1919052b7385 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
>          } else {
>              /* RAM case */
>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> -            memcpy(ptr, buf, l);
> +            if (attrs.debug && mr->ram_debug_ops) {
> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
> +            } else {
> +                memcpy(ptr, buf, l);
> +            }
>              invalidate_and_set_dirty(mr, addr1, l);
>          }
>  
> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
>          } else {
>              /* RAM case */
>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> -            memcpy(buf, ptr, l);
> +            if (attrs.debug && mr->ram_debug_ops) {
> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
> +            } else {
> +                memcpy(buf, ptr, l);
> +            }
>          }
>  
>          if (release_lock) {
> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
>  
>  enum write_rom_type {
>      WRITE_DATA,
> +    READ_DATA,
>      FLUSH_CACHE,
>  };
>  
> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
> +    enum write_rom_type type)
>  {
>      hwaddr l;
>      uint8_t *ptr;
> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>          if (!(memory_region_is_ram(mr) ||
>                memory_region_is_romd(mr))) {
>              l = memory_access_size(mr, l, addr1);
> +            /* Pass MMIO down to address address_space_rw */
> +            switch (type) {
> +            case READ_DATA:
> +            case WRITE_DATA:
> +                address_space_rw(as, addr1, attrs, buf, l,
> +                                 type == WRITE_DATA);
> +                break;
> +            case FLUSH_CACHE:
> +                break;
> +            }
>          } else {
>              /* ROM/RAM case */
>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>              switch (type) {
> +            case READ_DATA:
> +                if (mr->ram_debug_ops) {
> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
> +                } else {
> +                    memcpy(buf, ptr, l);
> +                }
> +                break;
>              case WRITE_DATA:
> -                memcpy(ptr, buf, l);
> +                if (mr->ram_debug_ops) {
> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
> +                } else {
> +                    memcpy(ptr, buf, l);
> +                }
>                  invalidate_and_set_dirty(mr, addr1, l);
>                  break;
>              case FLUSH_CACHE:
> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
>                                     const uint8_t *buf, int len)
>  {
> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
>  }
>  
>  void cpu_flush_icache_range(hwaddr start, int len)
> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
>          return;
>      }
>  
> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
> -                                           start, NULL, len, FLUSH_CACHE);
> +    cpu_physical_memory_rw_internal(&address_space_memory,
> +                                    start, NULL, len,
> +                                    MEMTXATTRS_UNSPECIFIED,
> +                                    FLUSH_CACHE);
>  }
>  
>  typedef struct {
> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>      int l;
>      hwaddr phys_addr;
>      target_ulong page;
> +    int type = is_write ? WRITE_DATA : READ_DATA;
>  
>      cpu_synchronize_state(cpu);
>      while (len > 0) {
> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>          page = addr & TARGET_PAGE_MASK;
>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
>          asidx = cpu_asidx_from_attrs(cpu, attrs);
> +
> +        /* set debug attrs to indicate memory access is from the debugger */
> +        attrs.debug = 1;
> +
>          /* if no physical page mapped, return an error */
>          if (phys_addr == -1)
>              return -1;
> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>          if (l > len)
>              l = len;
>          phys_addr += (addr & ~TARGET_PAGE_MASK);
> -        if (is_write) {
> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
> -                                          phys_addr, buf, l);
> -        } else {
> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
> -                             MEMTXATTRS_UNSPECIFIED,
> -                             buf, l, 0);
> -        }
> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
> +                                        phys_addr, buf, l, attrs,
> +                                        type);
>          len -= l;
>          buf += l;
>          addr += l;
> diff --git a/include/exec/memory.h b/include/exec/memory.h
> index 07c5d6d59796..4d027fffeebf 100644
> --- a/include/exec/memory.h
> +++ b/include/exec/memory.h
> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
>  
> +/* Memory Region RAM debug callback */
> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
> +
> +struct MemoryRegionRAMReadWriteOps {
> +    /* Write data into guest memory */
> +    int (*write) (uint8_t *dest, const uint8_t *src,
> +                  uint32_t len, MemTxAttrs attrs);
> +    /* Read data from guest memory */
> +    int (*read) (uint8_t *dest, const uint8_t *src,
> +                 uint32_t len, MemTxAttrs attrs);
> +};
> +
>  struct MemoryRegion {
>      Object parent_obj;
>  
> @@ -254,6 +266,7 @@ struct MemoryRegion {
>      const char *name;
>      unsigned ioeventfd_nb;
>      MemoryRegionIoeventfd *ioeventfds;
> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
>  };
>  
>  struct IOMMUMemoryRegion {
> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
>                                               Error **errp);
>  
>  /**
> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
> + *
> + * @mr: the #MemoryRegion to be initialized
> + * @ops: a function that will be used for when accessing @target region during
> + *       debug
> + */
> +static inline void
> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
> +                                const MemoryRegionRAMReadWriteOps *ops)
> +{
> +    mr->ram_debug_ops = ops;
> +}
> +
> +/**
>   * memory_region_init_reservation: Initialize a memory region that reserves
>   *                                 I/O space.
>   *
> -- 
> 2.9.5
> 

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

* Re: [Qemu-devel] [PATCH v6 02/23] exec: add ram_debug_ops support
@ 2018-01-30 21:59     ` Edgar E. Iglesias
  0 siblings, 0 replies; 118+ messages in thread
From: Edgar E. Iglesias @ 2018-01-30 21:59 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Dr. David Alan Gilbert, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson

On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
> Currently, the guest memory access for the debug purpose is performed
> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
> ram_debug_ops callbacks. The ram_debug_ops can be used to override
> memcpy() with something else.
> 
> The feature can be used by encrypted guest -- which can register
> callbacks to override memcpy() with memory encryption/decryption APIs.
> 
> a typical usage:
> 
> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> 
> MemoryRegionRAMReadWriteOps ops;
> ops.read = mem_read;
> ops.write = mem_write;


Hi,

Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
I was hoping a similar infrastructure could be used for MMIO
debug accesses.

Best regards,
Edgar



> 
> memory_region_init_ram(mem, NULL, "memory", size, NULL);
> memory_region_set_ram_debug_ops(mem, ops);
> 
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
>  include/exec/memory.h | 27 +++++++++++++++++++++
>  2 files changed, 77 insertions(+), 16 deletions(-)
> 
> diff --git a/exec.c b/exec.c
> index 629a5083851d..1919052b7385 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
>          } else {
>              /* RAM case */
>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> -            memcpy(ptr, buf, l);
> +            if (attrs.debug && mr->ram_debug_ops) {
> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
> +            } else {
> +                memcpy(ptr, buf, l);
> +            }
>              invalidate_and_set_dirty(mr, addr1, l);
>          }
>  
> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
>          } else {
>              /* RAM case */
>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> -            memcpy(buf, ptr, l);
> +            if (attrs.debug && mr->ram_debug_ops) {
> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
> +            } else {
> +                memcpy(buf, ptr, l);
> +            }
>          }
>  
>          if (release_lock) {
> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
>  
>  enum write_rom_type {
>      WRITE_DATA,
> +    READ_DATA,
>      FLUSH_CACHE,
>  };
>  
> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
> +    enum write_rom_type type)
>  {
>      hwaddr l;
>      uint8_t *ptr;
> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>          if (!(memory_region_is_ram(mr) ||
>                memory_region_is_romd(mr))) {
>              l = memory_access_size(mr, l, addr1);
> +            /* Pass MMIO down to address address_space_rw */
> +            switch (type) {
> +            case READ_DATA:
> +            case WRITE_DATA:
> +                address_space_rw(as, addr1, attrs, buf, l,
> +                                 type == WRITE_DATA);
> +                break;
> +            case FLUSH_CACHE:
> +                break;
> +            }
>          } else {
>              /* ROM/RAM case */
>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>              switch (type) {
> +            case READ_DATA:
> +                if (mr->ram_debug_ops) {
> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
> +                } else {
> +                    memcpy(buf, ptr, l);
> +                }
> +                break;
>              case WRITE_DATA:
> -                memcpy(ptr, buf, l);
> +                if (mr->ram_debug_ops) {
> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
> +                } else {
> +                    memcpy(ptr, buf, l);
> +                }
>                  invalidate_and_set_dirty(mr, addr1, l);
>                  break;
>              case FLUSH_CACHE:
> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
>                                     const uint8_t *buf, int len)
>  {
> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
>  }
>  
>  void cpu_flush_icache_range(hwaddr start, int len)
> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
>          return;
>      }
>  
> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
> -                                           start, NULL, len, FLUSH_CACHE);
> +    cpu_physical_memory_rw_internal(&address_space_memory,
> +                                    start, NULL, len,
> +                                    MEMTXATTRS_UNSPECIFIED,
> +                                    FLUSH_CACHE);
>  }
>  
>  typedef struct {
> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>      int l;
>      hwaddr phys_addr;
>      target_ulong page;
> +    int type = is_write ? WRITE_DATA : READ_DATA;
>  
>      cpu_synchronize_state(cpu);
>      while (len > 0) {
> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>          page = addr & TARGET_PAGE_MASK;
>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
>          asidx = cpu_asidx_from_attrs(cpu, attrs);
> +
> +        /* set debug attrs to indicate memory access is from the debugger */
> +        attrs.debug = 1;
> +
>          /* if no physical page mapped, return an error */
>          if (phys_addr == -1)
>              return -1;
> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>          if (l > len)
>              l = len;
>          phys_addr += (addr & ~TARGET_PAGE_MASK);
> -        if (is_write) {
> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
> -                                          phys_addr, buf, l);
> -        } else {
> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
> -                             MEMTXATTRS_UNSPECIFIED,
> -                             buf, l, 0);
> -        }
> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
> +                                        phys_addr, buf, l, attrs,
> +                                        type);
>          len -= l;
>          buf += l;
>          addr += l;
> diff --git a/include/exec/memory.h b/include/exec/memory.h
> index 07c5d6d59796..4d027fffeebf 100644
> --- a/include/exec/memory.h
> +++ b/include/exec/memory.h
> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
>  
> +/* Memory Region RAM debug callback */
> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
> +
> +struct MemoryRegionRAMReadWriteOps {
> +    /* Write data into guest memory */
> +    int (*write) (uint8_t *dest, const uint8_t *src,
> +                  uint32_t len, MemTxAttrs attrs);
> +    /* Read data from guest memory */
> +    int (*read) (uint8_t *dest, const uint8_t *src,
> +                 uint32_t len, MemTxAttrs attrs);
> +};
> +
>  struct MemoryRegion {
>      Object parent_obj;
>  
> @@ -254,6 +266,7 @@ struct MemoryRegion {
>      const char *name;
>      unsigned ioeventfd_nb;
>      MemoryRegionIoeventfd *ioeventfds;
> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
>  };
>  
>  struct IOMMUMemoryRegion {
> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
>                                               Error **errp);
>  
>  /**
> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
> + *
> + * @mr: the #MemoryRegion to be initialized
> + * @ops: a function that will be used for when accessing @target region during
> + *       debug
> + */
> +static inline void
> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
> +                                const MemoryRegionRAMReadWriteOps *ops)
> +{
> +    mr->ram_debug_ops = ops;
> +}
> +
> +/**
>   * memory_region_init_reservation: Initialize a memory region that reserves
>   *                                 I/O space.
>   *
> -- 
> 2.9.5
> 

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

* Re: [PATCH v6 01/23] memattrs: add debug attribute
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
@ 2018-01-30 21:59     ` Edgar E. Iglesias
  -1 siblings, 0 replies; 118+ messages in thread
From: Edgar E. Iglesias @ 2018-01-30 21:59 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Dr. David Alan Gilbert, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Alistair Francis

On Mon, Jan 29, 2018 at 11:41:10AM -0600, Brijesh Singh wrote:
> Extend the MemTxAttrs to include 'debug' flag. The flag can be used as
> general indicator that operation was triggered by the debugger.
> 
> Later in the patch series we set the debug=1 when issuing a memory access
> from the gdbstub or HMP commands. This patch is prerequisite to support
> debugging the encrypted guest. If we see request with debug=1 then we
> will need to use encryption APIs to access the guest memory.
> 
> Cc: Alistair Francis <alistair.francis@xilinx.com>
> Cc: Peter Maydell <peter.maydell@linaro.org>
> Cc: Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> Cc: Richard Henderson <richard.henderson@linaro.org>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>

Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>


> ---
>  include/exec/memattrs.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h
> index d4a16420984b..08099e4f7e72 100644
> --- a/include/exec/memattrs.h
> +++ b/include/exec/memattrs.h
> @@ -37,6 +37,8 @@ typedef struct MemTxAttrs {
>      unsigned int user:1;
>      /* Requester ID (for MSI for example) */
>      unsigned int requester_id:16;
> +    /* Memory access request from the debugger */
> +    unsigned int debug:1;
>  } MemTxAttrs;
>  
>  /* Bus masters which don't specify any attributes will get this,
> -- 
> 2.9.5
> 

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

* Re: [Qemu-devel] [PATCH v6 01/23] memattrs: add debug attribute
@ 2018-01-30 21:59     ` Edgar E. Iglesias
  0 siblings, 0 replies; 118+ messages in thread
From: Edgar E. Iglesias @ 2018-01-30 21:59 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Dr. David Alan Gilbert, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Alistair Francis

On Mon, Jan 29, 2018 at 11:41:10AM -0600, Brijesh Singh wrote:
> Extend the MemTxAttrs to include 'debug' flag. The flag can be used as
> general indicator that operation was triggered by the debugger.
> 
> Later in the patch series we set the debug=1 when issuing a memory access
> from the gdbstub or HMP commands. This patch is prerequisite to support
> debugging the encrypted guest. If we see request with debug=1 then we
> will need to use encryption APIs to access the guest memory.
> 
> Cc: Alistair Francis <alistair.francis@xilinx.com>
> Cc: Peter Maydell <peter.maydell@linaro.org>
> Cc: Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> Cc: Richard Henderson <richard.henderson@linaro.org>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>

Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>


> ---
>  include/exec/memattrs.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h
> index d4a16420984b..08099e4f7e72 100644
> --- a/include/exec/memattrs.h
> +++ b/include/exec/memattrs.h
> @@ -37,6 +37,8 @@ typedef struct MemTxAttrs {
>      unsigned int user:1;
>      /* Requester ID (for MSI for example) */
>      unsigned int requester_id:16;
> +    /* Memory access request from the debugger */
> +    unsigned int debug:1;
>  } MemTxAttrs;
>  
>  /* Bus masters which don't specify any attributes will get this,
> -- 
> 2.9.5
> 

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

* Re: [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-01-30 20:08     ` [Qemu-devel] " Dr. David Alan Gilbert
@ 2018-01-30 22:13       ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 22:13 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange



On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> During machine creation we encrypted the guest bios image, the
>> LAUNCH_MEASURE command can be used to retrieve the measurement of
>> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
>> libvirt can grab the measurement value as soon as we are done with
>> creating the encrypted machine.
> Can you ust clarify what happens if the libvirt has disconnected and
> reconnected to qemu and so didn't see the event?  Can the reconnecting
> libvirt query it and find out it's ready/not ready yet?

Dave,

I have not looked into details between libvirt and qemu interaction to
comment how and when the events will be delivered. Recently, one of my
colleague was implementing libvirt interface for the SEV guest and ran
into somewhat a similar challenge and posted question on libvirt mailing
list [1].

In previous discussion on qemu mailing list, we agreed to implement SEV
MEASUREMENT event which can be seen by libvirt. That's what this patch
is doing.

But during the libvirt implementation it seems that qemu monitor
silently drops all the events before it get the first qmp_capabilities
command. At a quick glance it seems on reconnect, libvirt issues
qmp_capabilities command and any event issued before the
qmp_capabilities command will never to delivered to libvirt. we are
looking for  help from libvirt/qemu monitor experts on how we solve this
problem. Our goal is to provide the measurement to libvirt before
libvirt issues "continue" command. Since event can't be seen by libvirt
before it resumes the guest hence I was wondering if we should we should
drop the SEV measurement event and consider adding a new QMP command to
query the SEV measurement.

[1] https://www.redhat.com/archives/libvir-list/2018-January/msg00602.html

> Dave
>
>> Cc: Daniel P. Berrange <berrange@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: kvm@vger.kernel.org
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>  accel/kvm/trace-events |  1 +
>>  include/sysemu/sev.h   |  1 +
>>  3 files changed, 60 insertions(+)
>>
>> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
>> index 1f757df725df..b78cf3144b1d 100644
>> --- a/accel/kvm/sev.c
>> +++ b/accel/kvm/sev.c
>> @@ -19,11 +19,13 @@
>>  #include "sysemu/sev.h"
>>  #include "sysemu/sysemu.h"
>>  #include "trace.h"
>> +#include "qapi-event.h"
>>  
>>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
>>  
>>  static int sev_fd;
>> +static SEVState *sev_state;
>>  
>>  #define SEV_FW_MAX_ERROR      0x17
>>  
>> @@ -418,6 +420,59 @@ err:
>>      return ret;
>>  }
>>  
>> +static void
>> +sev_launch_get_measure(Notifier *notifier, void *unused)
>> +{
>> +    int ret, error;
>> +    guchar *data;
>> +    SEVState *s = sev_state;
>> +    struct kvm_sev_launch_measure *measurement;
>> +
>> +    measurement = g_malloc0(sizeof(*measurement));
>> +    if (!measurement) {
>> +        return;
>> +    }
>> +
>> +    /* query the measurement blob length */
>> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
>> +    if (!measurement->len) {
>> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
>> +                     __func__, ret, error, fw_error_to_str(errno));
>> +        goto free_measurement;
>> +    }
>> +
>> +    data = g_malloc(measurement->len);
>> +    if (s->measurement) {
>> +        goto free_data;
>> +    }
>> +
>> +    measurement->uaddr = (unsigned long)data;
>> +
>> +    /* get the measurement blob */
>> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
>> +    if (ret) {
>> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
>> +                     __func__, ret, error, fw_error_to_str(errno));
>> +        goto free_data;
>> +    }
>> +
>> +    sev_set_guest_state(SEV_STATE_SECRET);
>> +
>> +    /* encode the measurement value and emit the event */
>> +    s->measurement = g_base64_encode(data, measurement->len);
>> +    trace_kvm_sev_launch_measurement(s->measurement);
>> +    qapi_event_send_sev_measurement(s->measurement, &error_abort);
>> +
>> +free_data:
>> +    g_free(data);
>> +free_measurement:
>> +    g_free(measurement);
>> +}
>> +
>> +static Notifier sev_machine_done_notify = {
>> +    .notify = sev_launch_get_measure,
>> +};
>> +
>>  void *
>>  sev_guest_init(const char *id)
>>  {
>> @@ -461,6 +516,9 @@ sev_guest_init(const char *id)
>>      }
>>  
>>      ram_block_notifier_add(&sev_ram_notifier);
>> +    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
>> +
>> +    sev_state = s;
>>  
>>      return s;
>>  err:
>> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
>> index c55546f36a25..51df5113ad07 100644
>> --- a/accel/kvm/trace-events
>> +++ b/accel/kvm/trace-events
>> @@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
>>  kvm_sev_change_state(char *old, char *new) "%s -> %s"
>>  kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
>>  kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
>> +kvm_sev_launch_measurement(const char *value) "data %s"
>> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
>> index 839800efdbbf..572120c865ea 100644
>> --- a/include/sysemu/sev.h
>> +++ b/include/sysemu/sev.h
>> @@ -63,6 +63,7 @@ typedef enum {
>>  
>>  struct SEVState {
>>      QSevGuestInfo *sev_info;
>> +    gchar *measurement;
>>  };
>>  
>>  typedef struct SEVState SEVState;
>> -- 
>> 2.9.5
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
@ 2018-01-30 22:13       ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 22:13 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange



On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> During machine creation we encrypted the guest bios image, the
>> LAUNCH_MEASURE command can be used to retrieve the measurement of
>> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
>> libvirt can grab the measurement value as soon as we are done with
>> creating the encrypted machine.
> Can you ust clarify what happens if the libvirt has disconnected and
> reconnected to qemu and so didn't see the event?  Can the reconnecting
> libvirt query it and find out it's ready/not ready yet?

Dave,

I have not looked into details between libvirt and qemu interaction to
comment how and when the events will be delivered. Recently, one of my
colleague was implementing libvirt interface for the SEV guest and ran
into somewhat a similar challenge and posted question on libvirt mailing
list [1].

In previous discussion on qemu mailing list, we agreed to implement SEV
MEASUREMENT event which can be seen by libvirt. That's what this patch
is doing.

But during the libvirt implementation it seems that qemu monitor
silently drops all the events before it get the first qmp_capabilities
command. At a quick glance it seems on reconnect, libvirt issues
qmp_capabilities command and any event issued before the
qmp_capabilities command will never to delivered to libvirt. we are
looking for  help from libvirt/qemu monitor experts on how we solve this
problem. Our goal is to provide the measurement to libvirt before
libvirt issues "continue" command. Since event can't be seen by libvirt
before it resumes the guest hence I was wondering if we should we should
drop the SEV measurement event and consider adding a new QMP command to
query the SEV measurement.

[1] https://www.redhat.com/archives/libvir-list/2018-January/msg00602.html

> Dave
>
>> Cc: Daniel P. Berrange <berrange@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: kvm@vger.kernel.org
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>  accel/kvm/trace-events |  1 +
>>  include/sysemu/sev.h   |  1 +
>>  3 files changed, 60 insertions(+)
>>
>> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
>> index 1f757df725df..b78cf3144b1d 100644
>> --- a/accel/kvm/sev.c
>> +++ b/accel/kvm/sev.c
>> @@ -19,11 +19,13 @@
>>  #include "sysemu/sev.h"
>>  #include "sysemu/sysemu.h"
>>  #include "trace.h"
>> +#include "qapi-event.h"
>>  
>>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
>>  
>>  static int sev_fd;
>> +static SEVState *sev_state;
>>  
>>  #define SEV_FW_MAX_ERROR      0x17
>>  
>> @@ -418,6 +420,59 @@ err:
>>      return ret;
>>  }
>>  
>> +static void
>> +sev_launch_get_measure(Notifier *notifier, void *unused)
>> +{
>> +    int ret, error;
>> +    guchar *data;
>> +    SEVState *s = sev_state;
>> +    struct kvm_sev_launch_measure *measurement;
>> +
>> +    measurement = g_malloc0(sizeof(*measurement));
>> +    if (!measurement) {
>> +        return;
>> +    }
>> +
>> +    /* query the measurement blob length */
>> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
>> +    if (!measurement->len) {
>> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
>> +                     __func__, ret, error, fw_error_to_str(errno));
>> +        goto free_measurement;
>> +    }
>> +
>> +    data = g_malloc(measurement->len);
>> +    if (s->measurement) {
>> +        goto free_data;
>> +    }
>> +
>> +    measurement->uaddr = (unsigned long)data;
>> +
>> +    /* get the measurement blob */
>> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
>> +    if (ret) {
>> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
>> +                     __func__, ret, error, fw_error_to_str(errno));
>> +        goto free_data;
>> +    }
>> +
>> +    sev_set_guest_state(SEV_STATE_SECRET);
>> +
>> +    /* encode the measurement value and emit the event */
>> +    s->measurement = g_base64_encode(data, measurement->len);
>> +    trace_kvm_sev_launch_measurement(s->measurement);
>> +    qapi_event_send_sev_measurement(s->measurement, &error_abort);
>> +
>> +free_data:
>> +    g_free(data);
>> +free_measurement:
>> +    g_free(measurement);
>> +}
>> +
>> +static Notifier sev_machine_done_notify = {
>> +    .notify = sev_launch_get_measure,
>> +};
>> +
>>  void *
>>  sev_guest_init(const char *id)
>>  {
>> @@ -461,6 +516,9 @@ sev_guest_init(const char *id)
>>      }
>>  
>>      ram_block_notifier_add(&sev_ram_notifier);
>> +    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
>> +
>> +    sev_state = s;
>>  
>>      return s;
>>  err:
>> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
>> index c55546f36a25..51df5113ad07 100644
>> --- a/accel/kvm/trace-events
>> +++ b/accel/kvm/trace-events
>> @@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
>>  kvm_sev_change_state(char *old, char *new) "%s -> %s"
>>  kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
>>  kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
>> +kvm_sev_launch_measurement(const char *value) "data %s"
>> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
>> index 839800efdbbf..572120c865ea 100644
>> --- a/include/sysemu/sev.h
>> +++ b/include/sysemu/sev.h
>> @@ -63,6 +63,7 @@ typedef enum {
>>  
>>  struct SEVState {
>>      QSevGuestInfo *sev_info;
>> +    gchar *measurement;
>>  };
>>  
>>  typedef struct SEVState SEVState;
>> -- 
>> 2.9.5
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
  2018-01-30 21:46       ` [Qemu-devel] " Brijesh Singh
@ 2018-01-30 22:15         ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 22:15 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson



On 1/30/18 3:46 PM, Brijesh Singh wrote:
>
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>> AMD EPYC processors support memory encryption feature. The feature
>>> is reported through CPUID 8000_001F[EAX].
>>>
>>> Fn8000_001F [EAX]:
>>>  Bit 0   Secure Memory Encryption (SME) supported
>>>  Bit 1   Secure Encrypted Virtualization (SEV) supported
>>>  Bit 2   Page flush MSR supported
>>>  Bit 3   Ecrypted State (SEV-ES) support
>>>
>>> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
>>> provide additional information regarding the feature (such as which page
>>> table bit is used to mark pages as encrypted etc). The information in EBX
>>> and ECX may vary from one family to another hence we use the host cpuid
>>> to populate the EBX information.
>> That's going to make it interesting for migration.  If the guest needs
>> to know that C-bit position then you presumably can't migrate between
>> those two host types, but we wouldn't have anything that currently
>> stops us.
>> We already have similar problems with variations in physical address
>> size but normally get away with that, especially on smaller VMs.
> Dave,
>
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types).  Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.

One small correct, Ryzen CPUs do not support SEV feature hence we will
not able migrate SEV guest from EPYC to Ryzen.

> -Brijesh
>> Dave
>>
>>
>>> The details for memory encryption CPUID is available in AMD APM
>>> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1
>>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>>> Cc: Richard Henderson <rth@twiddle.net>
>>> Cc: Eduardo Habkost <ehabkost@redhat.com>
>>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>>> ---
>>>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
>>>  target/i386/cpu.h |  6 ++++++
>>>  2 files changed, 42 insertions(+)
>>>
>>> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>>> index a49d2221adc9..4147eb6e18a9 100644
>>> --- a/target/i386/cpu.c
>>> +++ b/target/i386/cpu.c
>>> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
>>>  #define TCG_EXT4_FEATURES 0
>>>  #define TCG_SVM_FEATURES 0
>>>  #define TCG_KVM_FEATURES 0
>>> +#define TCG_MEM_ENCRYPT_FEATURES 0
>>>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
>>>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
>>>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
>>> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
>>>          .cpuid_reg = R_EDX,
>>>          .tcg_features = ~0U,
>>>      },
>>> +    [FEAT_MEM_ENCRYPT] = {
>>> +        .feat_names = {
>>> +            "sme", "sev", "page-flush-msr", "sev-es",
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +        },
>>> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
>>> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
>>> +    }
>>>  };
>>>  
>>>  typedef struct X86RegisterInfo32 {
>>> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>>>              CPUID_XSAVE_XGETBV1,
>>>          .features[FEAT_6_EAX] =
>>>              CPUID_6_EAX_ARAT,
>>> +        /* Missing: SEV_ES */
>>> +        .features[FEAT_MEM_ENCRYPT] =
>>> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
>>>          .xlevel = 0x8000000A,
>>>          .model_id = "AMD EPYC Processor",
>>>      },
>>> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
>>>              *edx = 0;
>>>          }
>>>          break;
>>> +    case 0x8000001F:
>>> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
>>> +            *eax = env->features[FEAT_MEM_ENCRYPT];
>>> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
>>> +            *ecx = 0;
>>> +            *edx = 0;
>>> +        } else {
>>> +            *eax = 0;
>>> +            *ebx = 0;
>>> +            *ecx = 0;
>>> +            *edx = 0;
>>> +        }
>>> +        break;
>>>      case 0xC0000000:
>>>          *eax = env->cpuid_xlevel2;
>>>          *ebx = 0;
>>> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
>>>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
>>>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
>>>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
>>> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
>>>          /* SVM requires CPUID[0x8000000A] */
>>>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
>>>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
>>>          }
>>> +        /* SEV requires CPUID[0x8000001F] */
>>> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
>>> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
>>> +        }
>>>      }
>>>  
>>>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
>>> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
>>> index f91e37d25dea..f7a0ab20fdd1 100644
>>> --- a/target/i386/cpu.h
>>> +++ b/target/i386/cpu.h
>>> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
>>>      FEAT_6_EAX,         /* CPUID[6].EAX */
>>>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
>>>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
>>> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
>>>      FEATURE_WORDS,
>>>  } FeatureWord;
>>>  
>>> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
>>>  
>>>  #define CPUID_6_EAX_ARAT       (1U << 2)
>>>  
>>> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
>>> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
>>> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
>>> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
>>> +
>>>  /* CPUID[0x80000007].EDX flags: */
>>>  #define CPUID_APM_INVTSC       (1U << 8)
>>>  
>>> -- 
>>> 2.9.5
>>>
>> --
>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
@ 2018-01-30 22:15         ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 22:15 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson



On 1/30/18 3:46 PM, Brijesh Singh wrote:
>
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>> AMD EPYC processors support memory encryption feature. The feature
>>> is reported through CPUID 8000_001F[EAX].
>>>
>>> Fn8000_001F [EAX]:
>>>  Bit 0   Secure Memory Encryption (SME) supported
>>>  Bit 1   Secure Encrypted Virtualization (SEV) supported
>>>  Bit 2   Page flush MSR supported
>>>  Bit 3   Ecrypted State (SEV-ES) support
>>>
>>> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
>>> provide additional information regarding the feature (such as which page
>>> table bit is used to mark pages as encrypted etc). The information in EBX
>>> and ECX may vary from one family to another hence we use the host cpuid
>>> to populate the EBX information.
>> That's going to make it interesting for migration.  If the guest needs
>> to know that C-bit position then you presumably can't migrate between
>> those two host types, but we wouldn't have anything that currently
>> stops us.
>> We already have similar problems with variations in physical address
>> size but normally get away with that, especially on smaller VMs.
> Dave,
>
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types).  Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.

One small correct, Ryzen CPUs do not support SEV feature hence we will
not able migrate SEV guest from EPYC to Ryzen.

> -Brijesh
>> Dave
>>
>>
>>> The details for memory encryption CPUID is available in AMD APM
>>> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1
>>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>>> Cc: Richard Henderson <rth@twiddle.net>
>>> Cc: Eduardo Habkost <ehabkost@redhat.com>
>>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>>> ---
>>>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
>>>  target/i386/cpu.h |  6 ++++++
>>>  2 files changed, 42 insertions(+)
>>>
>>> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>>> index a49d2221adc9..4147eb6e18a9 100644
>>> --- a/target/i386/cpu.c
>>> +++ b/target/i386/cpu.c
>>> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
>>>  #define TCG_EXT4_FEATURES 0
>>>  #define TCG_SVM_FEATURES 0
>>>  #define TCG_KVM_FEATURES 0
>>> +#define TCG_MEM_ENCRYPT_FEATURES 0
>>>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
>>>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
>>>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
>>> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
>>>          .cpuid_reg = R_EDX,
>>>          .tcg_features = ~0U,
>>>      },
>>> +    [FEAT_MEM_ENCRYPT] = {
>>> +        .feat_names = {
>>> +            "sme", "sev", "page-flush-msr", "sev-es",
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +            NULL, NULL, NULL, NULL,
>>> +        },
>>> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
>>> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
>>> +    }
>>>  };
>>>  
>>>  typedef struct X86RegisterInfo32 {
>>> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>>>              CPUID_XSAVE_XGETBV1,
>>>          .features[FEAT_6_EAX] =
>>>              CPUID_6_EAX_ARAT,
>>> +        /* Missing: SEV_ES */
>>> +        .features[FEAT_MEM_ENCRYPT] =
>>> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
>>>          .xlevel = 0x8000000A,
>>>          .model_id = "AMD EPYC Processor",
>>>      },
>>> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
>>>              *edx = 0;
>>>          }
>>>          break;
>>> +    case 0x8000001F:
>>> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
>>> +            *eax = env->features[FEAT_MEM_ENCRYPT];
>>> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
>>> +            *ecx = 0;
>>> +            *edx = 0;
>>> +        } else {
>>> +            *eax = 0;
>>> +            *ebx = 0;
>>> +            *ecx = 0;
>>> +            *edx = 0;
>>> +        }
>>> +        break;
>>>      case 0xC0000000:
>>>          *eax = env->cpuid_xlevel2;
>>>          *ebx = 0;
>>> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
>>>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
>>>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
>>>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
>>> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
>>>          /* SVM requires CPUID[0x8000000A] */
>>>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
>>>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
>>>          }
>>> +        /* SEV requires CPUID[0x8000001F] */
>>> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
>>> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
>>> +        }
>>>      }
>>>  
>>>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
>>> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
>>> index f91e37d25dea..f7a0ab20fdd1 100644
>>> --- a/target/i386/cpu.h
>>> +++ b/target/i386/cpu.h
>>> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
>>>      FEAT_6_EAX,         /* CPUID[6].EAX */
>>>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
>>>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
>>> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
>>>      FEATURE_WORDS,
>>>  } FeatureWord;
>>>  
>>> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
>>>  
>>>  #define CPUID_6_EAX_ARAT       (1U << 2)
>>>  
>>> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
>>> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
>>> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
>>> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
>>> +
>>>  /* CPUID[0x80000007].EDX flags: */
>>>  #define CPUID_APM_INVTSC       (1U << 8)
>>>  
>>> -- 
>>> 2.9.5
>>>
>> --
>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 02/23] exec: add ram_debug_ops support
  2018-01-30 21:59     ` [Qemu-devel] " Edgar E. Iglesias
@ 2018-01-30 22:34       ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 22:34 UTC (permalink / raw)
  To: Edgar E. Iglesias
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson



On 1/30/18 3:59 PM, Edgar E. Iglesias wrote:
> On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
>> Currently, the guest memory access for the debug purpose is performed
>> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
>> ram_debug_ops callbacks. The ram_debug_ops can be used to override
>> memcpy() with something else.
>>
>> The feature can be used by encrypted guest -- which can register
>> callbacks to override memcpy() with memory encryption/decryption APIs.
>>
>> a typical usage:
>>
>> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>>
>> MemoryRegionRAMReadWriteOps ops;
>> ops.read = mem_read;
>> ops.write = mem_write;
>
> Hi,
>
> Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
> I was hoping a similar infrastructure could be used for MMIO
> debug accesses.

Hi Edgar,

The MMIO regions will contains unencrypted data hence I do not find the
need to add debug hooks for it. A memcpy() to/from MMIO should be fine.
If we see the need for MMIO case then it can extended later.

Brijesh
> Best regards,
> Edgar
>
>
>
>> memory_region_init_ram(mem, NULL, "memory", size, NULL);
>> memory_region_set_ram_debug_ops(mem, ops);
>>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>> Cc: Richard Henderson <rth@twiddle.net>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
>>  include/exec/memory.h | 27 +++++++++++++++++++++
>>  2 files changed, 77 insertions(+), 16 deletions(-)
>>
>> diff --git a/exec.c b/exec.c
>> index 629a5083851d..1919052b7385 100644
>> --- a/exec.c
>> +++ b/exec.c
>> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
>>          } else {
>>              /* RAM case */
>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>> -            memcpy(ptr, buf, l);
>> +            if (attrs.debug && mr->ram_debug_ops) {
>> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
>> +            } else {
>> +                memcpy(ptr, buf, l);
>> +            }
>>              invalidate_and_set_dirty(mr, addr1, l);
>>          }
>>  
>> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
>>          } else {
>>              /* RAM case */
>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>> -            memcpy(buf, ptr, l);
>> +            if (attrs.debug && mr->ram_debug_ops) {
>> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
>> +            } else {
>> +                memcpy(buf, ptr, l);
>> +            }
>>          }
>>  
>>          if (release_lock) {
>> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
>>  
>>  enum write_rom_type {
>>      WRITE_DATA,
>> +    READ_DATA,
>>      FLUSH_CACHE,
>>  };
>>  
>> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
>> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
>> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
>> +    enum write_rom_type type)
>>  {
>>      hwaddr l;
>>      uint8_t *ptr;
>> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>          if (!(memory_region_is_ram(mr) ||
>>                memory_region_is_romd(mr))) {
>>              l = memory_access_size(mr, l, addr1);
>> +            /* Pass MMIO down to address address_space_rw */
>> +            switch (type) {
>> +            case READ_DATA:
>> +            case WRITE_DATA:
>> +                address_space_rw(as, addr1, attrs, buf, l,
>> +                                 type == WRITE_DATA);
>> +                break;
>> +            case FLUSH_CACHE:
>> +                break;
>> +            }
>>          } else {
>>              /* ROM/RAM case */
>>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>>              switch (type) {
>> +            case READ_DATA:
>> +                if (mr->ram_debug_ops) {
>> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
>> +                } else {
>> +                    memcpy(buf, ptr, l);
>> +                }
>> +                break;
>>              case WRITE_DATA:
>> -                memcpy(ptr, buf, l);
>> +                if (mr->ram_debug_ops) {
>> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
>> +                } else {
>> +                    memcpy(ptr, buf, l);
>> +                }
>>                  invalidate_and_set_dirty(mr, addr1, l);
>>                  break;
>>              case FLUSH_CACHE:
>> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
>>                                     const uint8_t *buf, int len)
>>  {
>> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
>> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
>> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
>>  }
>>  
>>  void cpu_flush_icache_range(hwaddr start, int len)
>> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
>>          return;
>>      }
>>  
>> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
>> -                                           start, NULL, len, FLUSH_CACHE);
>> +    cpu_physical_memory_rw_internal(&address_space_memory,
>> +                                    start, NULL, len,
>> +                                    MEMTXATTRS_UNSPECIFIED,
>> +                                    FLUSH_CACHE);
>>  }
>>  
>>  typedef struct {
>> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>      int l;
>>      hwaddr phys_addr;
>>      target_ulong page;
>> +    int type = is_write ? WRITE_DATA : READ_DATA;
>>  
>>      cpu_synchronize_state(cpu);
>>      while (len > 0) {
>> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>          page = addr & TARGET_PAGE_MASK;
>>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
>>          asidx = cpu_asidx_from_attrs(cpu, attrs);
>> +
>> +        /* set debug attrs to indicate memory access is from the debugger */
>> +        attrs.debug = 1;
>> +
>>          /* if no physical page mapped, return an error */
>>          if (phys_addr == -1)
>>              return -1;
>> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>          if (l > len)
>>              l = len;
>>          phys_addr += (addr & ~TARGET_PAGE_MASK);
>> -        if (is_write) {
>> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
>> -                                          phys_addr, buf, l);
>> -        } else {
>> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
>> -                             MEMTXATTRS_UNSPECIFIED,
>> -                             buf, l, 0);
>> -        }
>> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
>> +                                        phys_addr, buf, l, attrs,
>> +                                        type);
>>          len -= l;
>>          buf += l;
>>          addr += l;
>> diff --git a/include/exec/memory.h b/include/exec/memory.h
>> index 07c5d6d59796..4d027fffeebf 100644
>> --- a/include/exec/memory.h
>> +++ b/include/exec/memory.h
>> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
>>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
>>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
>>  
>> +/* Memory Region RAM debug callback */
>> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
>> +
>> +struct MemoryRegionRAMReadWriteOps {
>> +    /* Write data into guest memory */
>> +    int (*write) (uint8_t *dest, const uint8_t *src,
>> +                  uint32_t len, MemTxAttrs attrs);
>> +    /* Read data from guest memory */
>> +    int (*read) (uint8_t *dest, const uint8_t *src,
>> +                 uint32_t len, MemTxAttrs attrs);
>> +};
>> +
>>  struct MemoryRegion {
>>      Object parent_obj;
>>  
>> @@ -254,6 +266,7 @@ struct MemoryRegion {
>>      const char *name;
>>      unsigned ioeventfd_nb;
>>      MemoryRegionIoeventfd *ioeventfds;
>> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
>>  };
>>  
>>  struct IOMMUMemoryRegion {
>> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
>>                                               Error **errp);
>>  
>>  /**
>> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
>> + *
>> + * @mr: the #MemoryRegion to be initialized
>> + * @ops: a function that will be used for when accessing @target region during
>> + *       debug
>> + */
>> +static inline void
>> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
>> +                                const MemoryRegionRAMReadWriteOps *ops)
>> +{
>> +    mr->ram_debug_ops = ops;
>> +}
>> +
>> +/**
>>   * memory_region_init_reservation: Initialize a memory region that reserves
>>   *                                 I/O space.
>>   *
>> -- 
>> 2.9.5
>>

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

* Re: [Qemu-devel] [PATCH v6 02/23] exec: add ram_debug_ops support
@ 2018-01-30 22:34       ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 22:34 UTC (permalink / raw)
  To: Edgar E. Iglesias
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson



On 1/30/18 3:59 PM, Edgar E. Iglesias wrote:
> On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
>> Currently, the guest memory access for the debug purpose is performed
>> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
>> ram_debug_ops callbacks. The ram_debug_ops can be used to override
>> memcpy() with something else.
>>
>> The feature can be used by encrypted guest -- which can register
>> callbacks to override memcpy() with memory encryption/decryption APIs.
>>
>> a typical usage:
>>
>> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>>
>> MemoryRegionRAMReadWriteOps ops;
>> ops.read = mem_read;
>> ops.write = mem_write;
>
> Hi,
>
> Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
> I was hoping a similar infrastructure could be used for MMIO
> debug accesses.

Hi Edgar,

The MMIO regions will contains unencrypted data hence I do not find the
need to add debug hooks for it. A memcpy() to/from MMIO should be fine.
If we see the need for MMIO case then it can extended later.

Brijesh
> Best regards,
> Edgar
>
>
>
>> memory_region_init_ram(mem, NULL, "memory", size, NULL);
>> memory_region_set_ram_debug_ops(mem, ops);
>>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>> Cc: Richard Henderson <rth@twiddle.net>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
>>  include/exec/memory.h | 27 +++++++++++++++++++++
>>  2 files changed, 77 insertions(+), 16 deletions(-)
>>
>> diff --git a/exec.c b/exec.c
>> index 629a5083851d..1919052b7385 100644
>> --- a/exec.c
>> +++ b/exec.c
>> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
>>          } else {
>>              /* RAM case */
>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>> -            memcpy(ptr, buf, l);
>> +            if (attrs.debug && mr->ram_debug_ops) {
>> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
>> +            } else {
>> +                memcpy(ptr, buf, l);
>> +            }
>>              invalidate_and_set_dirty(mr, addr1, l);
>>          }
>>  
>> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
>>          } else {
>>              /* RAM case */
>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>> -            memcpy(buf, ptr, l);
>> +            if (attrs.debug && mr->ram_debug_ops) {
>> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
>> +            } else {
>> +                memcpy(buf, ptr, l);
>> +            }
>>          }
>>  
>>          if (release_lock) {
>> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
>>  
>>  enum write_rom_type {
>>      WRITE_DATA,
>> +    READ_DATA,
>>      FLUSH_CACHE,
>>  };
>>  
>> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
>> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
>> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
>> +    enum write_rom_type type)
>>  {
>>      hwaddr l;
>>      uint8_t *ptr;
>> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>          if (!(memory_region_is_ram(mr) ||
>>                memory_region_is_romd(mr))) {
>>              l = memory_access_size(mr, l, addr1);
>> +            /* Pass MMIO down to address address_space_rw */
>> +            switch (type) {
>> +            case READ_DATA:
>> +            case WRITE_DATA:
>> +                address_space_rw(as, addr1, attrs, buf, l,
>> +                                 type == WRITE_DATA);
>> +                break;
>> +            case FLUSH_CACHE:
>> +                break;
>> +            }
>>          } else {
>>              /* ROM/RAM case */
>>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>>              switch (type) {
>> +            case READ_DATA:
>> +                if (mr->ram_debug_ops) {
>> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
>> +                } else {
>> +                    memcpy(buf, ptr, l);
>> +                }
>> +                break;
>>              case WRITE_DATA:
>> -                memcpy(ptr, buf, l);
>> +                if (mr->ram_debug_ops) {
>> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
>> +                } else {
>> +                    memcpy(ptr, buf, l);
>> +                }
>>                  invalidate_and_set_dirty(mr, addr1, l);
>>                  break;
>>              case FLUSH_CACHE:
>> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
>>                                     const uint8_t *buf, int len)
>>  {
>> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
>> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
>> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
>>  }
>>  
>>  void cpu_flush_icache_range(hwaddr start, int len)
>> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
>>          return;
>>      }
>>  
>> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
>> -                                           start, NULL, len, FLUSH_CACHE);
>> +    cpu_physical_memory_rw_internal(&address_space_memory,
>> +                                    start, NULL, len,
>> +                                    MEMTXATTRS_UNSPECIFIED,
>> +                                    FLUSH_CACHE);
>>  }
>>  
>>  typedef struct {
>> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>      int l;
>>      hwaddr phys_addr;
>>      target_ulong page;
>> +    int type = is_write ? WRITE_DATA : READ_DATA;
>>  
>>      cpu_synchronize_state(cpu);
>>      while (len > 0) {
>> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>          page = addr & TARGET_PAGE_MASK;
>>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
>>          asidx = cpu_asidx_from_attrs(cpu, attrs);
>> +
>> +        /* set debug attrs to indicate memory access is from the debugger */
>> +        attrs.debug = 1;
>> +
>>          /* if no physical page mapped, return an error */
>>          if (phys_addr == -1)
>>              return -1;
>> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>          if (l > len)
>>              l = len;
>>          phys_addr += (addr & ~TARGET_PAGE_MASK);
>> -        if (is_write) {
>> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
>> -                                          phys_addr, buf, l);
>> -        } else {
>> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
>> -                             MEMTXATTRS_UNSPECIFIED,
>> -                             buf, l, 0);
>> -        }
>> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
>> +                                        phys_addr, buf, l, attrs,
>> +                                        type);
>>          len -= l;
>>          buf += l;
>>          addr += l;
>> diff --git a/include/exec/memory.h b/include/exec/memory.h
>> index 07c5d6d59796..4d027fffeebf 100644
>> --- a/include/exec/memory.h
>> +++ b/include/exec/memory.h
>> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
>>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
>>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
>>  
>> +/* Memory Region RAM debug callback */
>> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
>> +
>> +struct MemoryRegionRAMReadWriteOps {
>> +    /* Write data into guest memory */
>> +    int (*write) (uint8_t *dest, const uint8_t *src,
>> +                  uint32_t len, MemTxAttrs attrs);
>> +    /* Read data from guest memory */
>> +    int (*read) (uint8_t *dest, const uint8_t *src,
>> +                 uint32_t len, MemTxAttrs attrs);
>> +};
>> +
>>  struct MemoryRegion {
>>      Object parent_obj;
>>  
>> @@ -254,6 +266,7 @@ struct MemoryRegion {
>>      const char *name;
>>      unsigned ioeventfd_nb;
>>      MemoryRegionIoeventfd *ioeventfds;
>> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
>>  };
>>  
>>  struct IOMMUMemoryRegion {
>> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
>>                                               Error **errp);
>>  
>>  /**
>> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
>> + *
>> + * @mr: the #MemoryRegion to be initialized
>> + * @ops: a function that will be used for when accessing @target region during
>> + *       debug
>> + */
>> +static inline void
>> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
>> +                                const MemoryRegionRAMReadWriteOps *ops)
>> +{
>> +    mr->ram_debug_ops = ops;
>> +}
>> +
>> +/**
>>   * memory_region_init_reservation: Initialize a memory region that reserves
>>   *                                 I/O space.
>>   *
>> -- 
>> 2.9.5
>>

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

* Re: [PATCH v6 02/23] exec: add ram_debug_ops support
  2018-01-30 22:34       ` [Qemu-devel] " Brijesh Singh
@ 2018-01-30 22:37         ` Edgar E. Iglesias
  -1 siblings, 0 replies; 118+ messages in thread
From: Edgar E. Iglesias @ 2018-01-30 22:37 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Dr. David Alan Gilbert, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson

On Tue, Jan 30, 2018 at 04:34:37PM -0600, Brijesh Singh wrote:
> 
> 
> On 1/30/18 3:59 PM, Edgar E. Iglesias wrote:
> > On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
> >> Currently, the guest memory access for the debug purpose is performed
> >> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
> >> ram_debug_ops callbacks. The ram_debug_ops can be used to override
> >> memcpy() with something else.
> >>
> >> The feature can be used by encrypted guest -- which can register
> >> callbacks to override memcpy() with memory encryption/decryption APIs.
> >>
> >> a typical usage:
> >>
> >> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> >> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> >>
> >> MemoryRegionRAMReadWriteOps ops;
> >> ops.read = mem_read;
> >> ops.write = mem_write;
> >
> > Hi,
> >
> > Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
> > I was hoping a similar infrastructure could be used for MMIO
> > debug accesses.
> 
> Hi Edgar,
> 
> The MMIO regions will contains unencrypted data hence I do not find the
> need to add debug hooks for it. A memcpy() to/from MMIO should be fine.
> If we see the need for MMIO case then it can extended later.

In this use-case yes, but in a general use-case MMIO regions may also
want to differentiate debug from normal accesses.

I'm not saying you need to implement MMIO examples but do we really
need to have ram_debug_ops and mmio_debug_ops in the future?
Can we get away with one somehow?

Cheers,
Edgar

> 
> Brijesh
> > Best regards,
> > Edgar
> >
> >
> >
> >> memory_region_init_ram(mem, NULL, "memory", size, NULL);
> >> memory_region_set_ram_debug_ops(mem, ops);
> >>
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> >> Cc: Richard Henderson <rth@twiddle.net>
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
> >>  include/exec/memory.h | 27 +++++++++++++++++++++
> >>  2 files changed, 77 insertions(+), 16 deletions(-)
> >>
> >> diff --git a/exec.c b/exec.c
> >> index 629a5083851d..1919052b7385 100644
> >> --- a/exec.c
> >> +++ b/exec.c
> >> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
> >>          } else {
> >>              /* RAM case */
> >>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> >> -            memcpy(ptr, buf, l);
> >> +            if (attrs.debug && mr->ram_debug_ops) {
> >> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
> >> +            } else {
> >> +                memcpy(ptr, buf, l);
> >> +            }
> >>              invalidate_and_set_dirty(mr, addr1, l);
> >>          }
> >>  
> >> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
> >>          } else {
> >>              /* RAM case */
> >>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> >> -            memcpy(buf, ptr, l);
> >> +            if (attrs.debug && mr->ram_debug_ops) {
> >> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
> >> +            } else {
> >> +                memcpy(buf, ptr, l);
> >> +            }
> >>          }
> >>  
> >>          if (release_lock) {
> >> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
> >>  
> >>  enum write_rom_type {
> >>      WRITE_DATA,
> >> +    READ_DATA,
> >>      FLUSH_CACHE,
> >>  };
> >>  
> >> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> >> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
> >> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
> >> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
> >> +    enum write_rom_type type)
> >>  {
> >>      hwaddr l;
> >>      uint8_t *ptr;
> >> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> >>          if (!(memory_region_is_ram(mr) ||
> >>                memory_region_is_romd(mr))) {
> >>              l = memory_access_size(mr, l, addr1);
> >> +            /* Pass MMIO down to address address_space_rw */
> >> +            switch (type) {
> >> +            case READ_DATA:
> >> +            case WRITE_DATA:
> >> +                address_space_rw(as, addr1, attrs, buf, l,
> >> +                                 type == WRITE_DATA);
> >> +                break;
> >> +            case FLUSH_CACHE:
> >> +                break;
> >> +            }
> >>          } else {
> >>              /* ROM/RAM case */
> >>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
> >>              switch (type) {
> >> +            case READ_DATA:
> >> +                if (mr->ram_debug_ops) {
> >> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
> >> +                } else {
> >> +                    memcpy(buf, ptr, l);
> >> +                }
> >> +                break;
> >>              case WRITE_DATA:
> >> -                memcpy(ptr, buf, l);
> >> +                if (mr->ram_debug_ops) {
> >> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
> >> +                } else {
> >> +                    memcpy(ptr, buf, l);
> >> +                }
> >>                  invalidate_and_set_dirty(mr, addr1, l);
> >>                  break;
> >>              case FLUSH_CACHE:
> >> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> >>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
> >>                                     const uint8_t *buf, int len)
> >>  {
> >> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
> >> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
> >> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
> >>  }
> >>  
> >>  void cpu_flush_icache_range(hwaddr start, int len)
> >> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
> >>          return;
> >>      }
> >>  
> >> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
> >> -                                           start, NULL, len, FLUSH_CACHE);
> >> +    cpu_physical_memory_rw_internal(&address_space_memory,
> >> +                                    start, NULL, len,
> >> +                                    MEMTXATTRS_UNSPECIFIED,
> >> +                                    FLUSH_CACHE);
> >>  }
> >>  
> >>  typedef struct {
> >> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
> >>      int l;
> >>      hwaddr phys_addr;
> >>      target_ulong page;
> >> +    int type = is_write ? WRITE_DATA : READ_DATA;
> >>  
> >>      cpu_synchronize_state(cpu);
> >>      while (len > 0) {
> >> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
> >>          page = addr & TARGET_PAGE_MASK;
> >>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
> >>          asidx = cpu_asidx_from_attrs(cpu, attrs);
> >> +
> >> +        /* set debug attrs to indicate memory access is from the debugger */
> >> +        attrs.debug = 1;
> >> +
> >>          /* if no physical page mapped, return an error */
> >>          if (phys_addr == -1)
> >>              return -1;
> >> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
> >>          if (l > len)
> >>              l = len;
> >>          phys_addr += (addr & ~TARGET_PAGE_MASK);
> >> -        if (is_write) {
> >> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
> >> -                                          phys_addr, buf, l);
> >> -        } else {
> >> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
> >> -                             MEMTXATTRS_UNSPECIFIED,
> >> -                             buf, l, 0);
> >> -        }
> >> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
> >> +                                        phys_addr, buf, l, attrs,
> >> +                                        type);
> >>          len -= l;
> >>          buf += l;
> >>          addr += l;
> >> diff --git a/include/exec/memory.h b/include/exec/memory.h
> >> index 07c5d6d59796..4d027fffeebf 100644
> >> --- a/include/exec/memory.h
> >> +++ b/include/exec/memory.h
> >> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
> >>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
> >>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
> >>  
> >> +/* Memory Region RAM debug callback */
> >> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
> >> +
> >> +struct MemoryRegionRAMReadWriteOps {
> >> +    /* Write data into guest memory */
> >> +    int (*write) (uint8_t *dest, const uint8_t *src,
> >> +                  uint32_t len, MemTxAttrs attrs);
> >> +    /* Read data from guest memory */
> >> +    int (*read) (uint8_t *dest, const uint8_t *src,
> >> +                 uint32_t len, MemTxAttrs attrs);
> >> +};
> >> +
> >>  struct MemoryRegion {
> >>      Object parent_obj;
> >>  
> >> @@ -254,6 +266,7 @@ struct MemoryRegion {
> >>      const char *name;
> >>      unsigned ioeventfd_nb;
> >>      MemoryRegionIoeventfd *ioeventfds;
> >> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
> >>  };
> >>  
> >>  struct IOMMUMemoryRegion {
> >> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
> >>                                               Error **errp);
> >>  
> >>  /**
> >> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
> >> + *
> >> + * @mr: the #MemoryRegion to be initialized
> >> + * @ops: a function that will be used for when accessing @target region during
> >> + *       debug
> >> + */
> >> +static inline void
> >> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
> >> +                                const MemoryRegionRAMReadWriteOps *ops)
> >> +{
> >> +    mr->ram_debug_ops = ops;
> >> +}
> >> +
> >> +/**
> >>   * memory_region_init_reservation: Initialize a memory region that reserves
> >>   *                                 I/O space.
> >>   *
> >> -- 
> >> 2.9.5
> >>
> 

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

* Re: [Qemu-devel] [PATCH v6 02/23] exec: add ram_debug_ops support
@ 2018-01-30 22:37         ` Edgar E. Iglesias
  0 siblings, 0 replies; 118+ messages in thread
From: Edgar E. Iglesias @ 2018-01-30 22:37 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Dr. David Alan Gilbert, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson

On Tue, Jan 30, 2018 at 04:34:37PM -0600, Brijesh Singh wrote:
> 
> 
> On 1/30/18 3:59 PM, Edgar E. Iglesias wrote:
> > On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
> >> Currently, the guest memory access for the debug purpose is performed
> >> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
> >> ram_debug_ops callbacks. The ram_debug_ops can be used to override
> >> memcpy() with something else.
> >>
> >> The feature can be used by encrypted guest -- which can register
> >> callbacks to override memcpy() with memory encryption/decryption APIs.
> >>
> >> a typical usage:
> >>
> >> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> >> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
> >>
> >> MemoryRegionRAMReadWriteOps ops;
> >> ops.read = mem_read;
> >> ops.write = mem_write;
> >
> > Hi,
> >
> > Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
> > I was hoping a similar infrastructure could be used for MMIO
> > debug accesses.
> 
> Hi Edgar,
> 
> The MMIO regions will contains unencrypted data hence I do not find the
> need to add debug hooks for it. A memcpy() to/from MMIO should be fine.
> If we see the need for MMIO case then it can extended later.

In this use-case yes, but in a general use-case MMIO regions may also
want to differentiate debug from normal accesses.

I'm not saying you need to implement MMIO examples but do we really
need to have ram_debug_ops and mmio_debug_ops in the future?
Can we get away with one somehow?

Cheers,
Edgar

> 
> Brijesh
> > Best regards,
> > Edgar
> >
> >
> >
> >> memory_region_init_ram(mem, NULL, "memory", size, NULL);
> >> memory_region_set_ram_debug_ops(mem, ops);
> >>
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> >> Cc: Richard Henderson <rth@twiddle.net>
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
> >>  include/exec/memory.h | 27 +++++++++++++++++++++
> >>  2 files changed, 77 insertions(+), 16 deletions(-)
> >>
> >> diff --git a/exec.c b/exec.c
> >> index 629a5083851d..1919052b7385 100644
> >> --- a/exec.c
> >> +++ b/exec.c
> >> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
> >>          } else {
> >>              /* RAM case */
> >>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> >> -            memcpy(ptr, buf, l);
> >> +            if (attrs.debug && mr->ram_debug_ops) {
> >> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
> >> +            } else {
> >> +                memcpy(ptr, buf, l);
> >> +            }
> >>              invalidate_and_set_dirty(mr, addr1, l);
> >>          }
> >>  
> >> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
> >>          } else {
> >>              /* RAM case */
> >>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> >> -            memcpy(buf, ptr, l);
> >> +            if (attrs.debug && mr->ram_debug_ops) {
> >> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
> >> +            } else {
> >> +                memcpy(buf, ptr, l);
> >> +            }
> >>          }
> >>  
> >>          if (release_lock) {
> >> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
> >>  
> >>  enum write_rom_type {
> >>      WRITE_DATA,
> >> +    READ_DATA,
> >>      FLUSH_CACHE,
> >>  };
> >>  
> >> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> >> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
> >> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
> >> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
> >> +    enum write_rom_type type)
> >>  {
> >>      hwaddr l;
> >>      uint8_t *ptr;
> >> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> >>          if (!(memory_region_is_ram(mr) ||
> >>                memory_region_is_romd(mr))) {
> >>              l = memory_access_size(mr, l, addr1);
> >> +            /* Pass MMIO down to address address_space_rw */
> >> +            switch (type) {
> >> +            case READ_DATA:
> >> +            case WRITE_DATA:
> >> +                address_space_rw(as, addr1, attrs, buf, l,
> >> +                                 type == WRITE_DATA);
> >> +                break;
> >> +            case FLUSH_CACHE:
> >> +                break;
> >> +            }
> >>          } else {
> >>              /* ROM/RAM case */
> >>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
> >>              switch (type) {
> >> +            case READ_DATA:
> >> +                if (mr->ram_debug_ops) {
> >> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
> >> +                } else {
> >> +                    memcpy(buf, ptr, l);
> >> +                }
> >> +                break;
> >>              case WRITE_DATA:
> >> -                memcpy(ptr, buf, l);
> >> +                if (mr->ram_debug_ops) {
> >> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
> >> +                } else {
> >> +                    memcpy(ptr, buf, l);
> >> +                }
> >>                  invalidate_and_set_dirty(mr, addr1, l);
> >>                  break;
> >>              case FLUSH_CACHE:
> >> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
> >>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
> >>                                     const uint8_t *buf, int len)
> >>  {
> >> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
> >> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
> >> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
> >>  }
> >>  
> >>  void cpu_flush_icache_range(hwaddr start, int len)
> >> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
> >>          return;
> >>      }
> >>  
> >> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
> >> -                                           start, NULL, len, FLUSH_CACHE);
> >> +    cpu_physical_memory_rw_internal(&address_space_memory,
> >> +                                    start, NULL, len,
> >> +                                    MEMTXATTRS_UNSPECIFIED,
> >> +                                    FLUSH_CACHE);
> >>  }
> >>  
> >>  typedef struct {
> >> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
> >>      int l;
> >>      hwaddr phys_addr;
> >>      target_ulong page;
> >> +    int type = is_write ? WRITE_DATA : READ_DATA;
> >>  
> >>      cpu_synchronize_state(cpu);
> >>      while (len > 0) {
> >> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
> >>          page = addr & TARGET_PAGE_MASK;
> >>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
> >>          asidx = cpu_asidx_from_attrs(cpu, attrs);
> >> +
> >> +        /* set debug attrs to indicate memory access is from the debugger */
> >> +        attrs.debug = 1;
> >> +
> >>          /* if no physical page mapped, return an error */
> >>          if (phys_addr == -1)
> >>              return -1;
> >> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
> >>          if (l > len)
> >>              l = len;
> >>          phys_addr += (addr & ~TARGET_PAGE_MASK);
> >> -        if (is_write) {
> >> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
> >> -                                          phys_addr, buf, l);
> >> -        } else {
> >> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
> >> -                             MEMTXATTRS_UNSPECIFIED,
> >> -                             buf, l, 0);
> >> -        }
> >> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
> >> +                                        phys_addr, buf, l, attrs,
> >> +                                        type);
> >>          len -= l;
> >>          buf += l;
> >>          addr += l;
> >> diff --git a/include/exec/memory.h b/include/exec/memory.h
> >> index 07c5d6d59796..4d027fffeebf 100644
> >> --- a/include/exec/memory.h
> >> +++ b/include/exec/memory.h
> >> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
> >>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
> >>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
> >>  
> >> +/* Memory Region RAM debug callback */
> >> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
> >> +
> >> +struct MemoryRegionRAMReadWriteOps {
> >> +    /* Write data into guest memory */
> >> +    int (*write) (uint8_t *dest, const uint8_t *src,
> >> +                  uint32_t len, MemTxAttrs attrs);
> >> +    /* Read data from guest memory */
> >> +    int (*read) (uint8_t *dest, const uint8_t *src,
> >> +                 uint32_t len, MemTxAttrs attrs);
> >> +};
> >> +
> >>  struct MemoryRegion {
> >>      Object parent_obj;
> >>  
> >> @@ -254,6 +266,7 @@ struct MemoryRegion {
> >>      const char *name;
> >>      unsigned ioeventfd_nb;
> >>      MemoryRegionIoeventfd *ioeventfds;
> >> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
> >>  };
> >>  
> >>  struct IOMMUMemoryRegion {
> >> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
> >>                                               Error **errp);
> >>  
> >>  /**
> >> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
> >> + *
> >> + * @mr: the #MemoryRegion to be initialized
> >> + * @ops: a function that will be used for when accessing @target region during
> >> + *       debug
> >> + */
> >> +static inline void
> >> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
> >> +                                const MemoryRegionRAMReadWriteOps *ops)
> >> +{
> >> +    mr->ram_debug_ops = ops;
> >> +}
> >> +
> >> +/**
> >>   * memory_region_init_reservation: Initialize a memory region that reserves
> >>   *                                 I/O space.
> >>   *
> >> -- 
> >> 2.9.5
> >>
> 

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

* Re: [PATCH v6 02/23] exec: add ram_debug_ops support
  2018-01-30 22:37         ` [Qemu-devel] " Edgar E. Iglesias
@ 2018-01-30 23:26           ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 23:26 UTC (permalink / raw)
  To: Edgar E. Iglesias
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson



On 1/30/18 4:37 PM, Edgar E. Iglesias wrote:
> On Tue, Jan 30, 2018 at 04:34:37PM -0600, Brijesh Singh wrote:
>>
>> On 1/30/18 3:59 PM, Edgar E. Iglesias wrote:
>>> On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
>>>> Currently, the guest memory access for the debug purpose is performed
>>>> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
>>>> ram_debug_ops callbacks. The ram_debug_ops can be used to override
>>>> memcpy() with something else.
>>>>
>>>> The feature can be used by encrypted guest -- which can register
>>>> callbacks to override memcpy() with memory encryption/decryption APIs.
>>>>
>>>> a typical usage:
>>>>
>>>> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>>>> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>>>>
>>>> MemoryRegionRAMReadWriteOps ops;
>>>> ops.read = mem_read;
>>>> ops.write = mem_write;
>>> Hi,
>>>
>>> Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
>>> I was hoping a similar infrastructure could be used for MMIO
>>> debug accesses.
>> Hi Edgar,
>>
>> The MMIO regions will contains unencrypted data hence I do not find the
>> need to add debug hooks for it. A memcpy() to/from MMIO should be fine.
>> If we see the need for MMIO case then it can extended later.
> In this use-case yes, but in a general use-case MMIO regions may also
> want to differentiate debug from normal accesses.
>
> I'm not saying you need to implement MMIO examples but do we really
> need to have ram_debug_ops and mmio_debug_ops in the future?
> Can we get away with one somehow?

If anyone see this coming in near future then having one debug_ops makes
sense and it should be  doable. If we decide to use debug_ops for MMIO
then I could see us needing to add a new argument to debug_ops callback
to let the client knows whether the access came MMIO vs RAM region
because client may do different things for RAM vs MMIO case (e.g in SEV
RAM is encrypted but MMIO is unencrypted).

> Cheers,
> Edgar
>
>> Brijesh
>>> Best regards,
>>> Edgar
>>>
>>>
>>>
>>>> memory_region_init_ram(mem, NULL, "memory", size, NULL);
>>>> memory_region_set_ram_debug_ops(mem, ops);
>>>>
>>>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>>>> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>>>> Cc: Richard Henderson <rth@twiddle.net>
>>>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>>>> ---
>>>>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
>>>>  include/exec/memory.h | 27 +++++++++++++++++++++
>>>>  2 files changed, 77 insertions(+), 16 deletions(-)
>>>>
>>>> diff --git a/exec.c b/exec.c
>>>> index 629a5083851d..1919052b7385 100644
>>>> --- a/exec.c
>>>> +++ b/exec.c
>>>> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
>>>>          } else {
>>>>              /* RAM case */
>>>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>>>> -            memcpy(ptr, buf, l);
>>>> +            if (attrs.debug && mr->ram_debug_ops) {
>>>> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
>>>> +            } else {
>>>> +                memcpy(ptr, buf, l);
>>>> +            }
>>>>              invalidate_and_set_dirty(mr, addr1, l);
>>>>          }
>>>>  
>>>> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
>>>>          } else {
>>>>              /* RAM case */
>>>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>>>> -            memcpy(buf, ptr, l);
>>>> +            if (attrs.debug && mr->ram_debug_ops) {
>>>> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
>>>> +            } else {
>>>> +                memcpy(buf, ptr, l);
>>>> +            }
>>>>          }
>>>>  
>>>>          if (release_lock) {
>>>> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
>>>>  
>>>>  enum write_rom_type {
>>>>      WRITE_DATA,
>>>> +    READ_DATA,
>>>>      FLUSH_CACHE,
>>>>  };
>>>>  
>>>> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>>> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
>>>> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
>>>> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
>>>> +    enum write_rom_type type)
>>>>  {
>>>>      hwaddr l;
>>>>      uint8_t *ptr;
>>>> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>>>          if (!(memory_region_is_ram(mr) ||
>>>>                memory_region_is_romd(mr))) {
>>>>              l = memory_access_size(mr, l, addr1);
>>>> +            /* Pass MMIO down to address address_space_rw */
>>>> +            switch (type) {
>>>> +            case READ_DATA:
>>>> +            case WRITE_DATA:
>>>> +                address_space_rw(as, addr1, attrs, buf, l,
>>>> +                                 type == WRITE_DATA);
>>>> +                break;
>>>> +            case FLUSH_CACHE:
>>>> +                break;
>>>> +            }
>>>>          } else {
>>>>              /* ROM/RAM case */
>>>>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>>>>              switch (type) {
>>>> +            case READ_DATA:
>>>> +                if (mr->ram_debug_ops) {
>>>> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
>>>> +                } else {
>>>> +                    memcpy(buf, ptr, l);
>>>> +                }
>>>> +                break;
>>>>              case WRITE_DATA:
>>>> -                memcpy(ptr, buf, l);
>>>> +                if (mr->ram_debug_ops) {
>>>> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
>>>> +                } else {
>>>> +                    memcpy(ptr, buf, l);
>>>> +                }
>>>>                  invalidate_and_set_dirty(mr, addr1, l);
>>>>                  break;
>>>>              case FLUSH_CACHE:
>>>> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>>>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
>>>>                                     const uint8_t *buf, int len)
>>>>  {
>>>> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
>>>> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
>>>> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
>>>>  }
>>>>  
>>>>  void cpu_flush_icache_range(hwaddr start, int len)
>>>> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
>>>>          return;
>>>>      }
>>>>  
>>>> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
>>>> -                                           start, NULL, len, FLUSH_CACHE);
>>>> +    cpu_physical_memory_rw_internal(&address_space_memory,
>>>> +                                    start, NULL, len,
>>>> +                                    MEMTXATTRS_UNSPECIFIED,
>>>> +                                    FLUSH_CACHE);
>>>>  }
>>>>  
>>>>  typedef struct {
>>>> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>>>      int l;
>>>>      hwaddr phys_addr;
>>>>      target_ulong page;
>>>> +    int type = is_write ? WRITE_DATA : READ_DATA;
>>>>  
>>>>      cpu_synchronize_state(cpu);
>>>>      while (len > 0) {
>>>> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>>>          page = addr & TARGET_PAGE_MASK;
>>>>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
>>>>          asidx = cpu_asidx_from_attrs(cpu, attrs);
>>>> +
>>>> +        /* set debug attrs to indicate memory access is from the debugger */
>>>> +        attrs.debug = 1;
>>>> +
>>>>          /* if no physical page mapped, return an error */
>>>>          if (phys_addr == -1)
>>>>              return -1;
>>>> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>>>          if (l > len)
>>>>              l = len;
>>>>          phys_addr += (addr & ~TARGET_PAGE_MASK);
>>>> -        if (is_write) {
>>>> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
>>>> -                                          phys_addr, buf, l);
>>>> -        } else {
>>>> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
>>>> -                             MEMTXATTRS_UNSPECIFIED,
>>>> -                             buf, l, 0);
>>>> -        }
>>>> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
>>>> +                                        phys_addr, buf, l, attrs,
>>>> +                                        type);
>>>>          len -= l;
>>>>          buf += l;
>>>>          addr += l;
>>>> diff --git a/include/exec/memory.h b/include/exec/memory.h
>>>> index 07c5d6d59796..4d027fffeebf 100644
>>>> --- a/include/exec/memory.h
>>>> +++ b/include/exec/memory.h
>>>> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
>>>>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
>>>>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
>>>>  
>>>> +/* Memory Region RAM debug callback */
>>>> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
>>>> +
>>>> +struct MemoryRegionRAMReadWriteOps {
>>>> +    /* Write data into guest memory */
>>>> +    int (*write) (uint8_t *dest, const uint8_t *src,
>>>> +                  uint32_t len, MemTxAttrs attrs);
>>>> +    /* Read data from guest memory */
>>>> +    int (*read) (uint8_t *dest, const uint8_t *src,
>>>> +                 uint32_t len, MemTxAttrs attrs);
>>>> +};
>>>> +
>>>>  struct MemoryRegion {
>>>>      Object parent_obj;
>>>>  
>>>> @@ -254,6 +266,7 @@ struct MemoryRegion {
>>>>      const char *name;
>>>>      unsigned ioeventfd_nb;
>>>>      MemoryRegionIoeventfd *ioeventfds;
>>>> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
>>>>  };
>>>>  
>>>>  struct IOMMUMemoryRegion {
>>>> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
>>>>                                               Error **errp);
>>>>  
>>>>  /**
>>>> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
>>>> + *
>>>> + * @mr: the #MemoryRegion to be initialized
>>>> + * @ops: a function that will be used for when accessing @target region during
>>>> + *       debug
>>>> + */
>>>> +static inline void
>>>> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
>>>> +                                const MemoryRegionRAMReadWriteOps *ops)
>>>> +{
>>>> +    mr->ram_debug_ops = ops;
>>>> +}
>>>> +
>>>> +/**
>>>>   * memory_region_init_reservation: Initialize a memory region that reserves
>>>>   *                                 I/O space.
>>>>   *
>>>> -- 
>>>> 2.9.5
>>>>

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

* Re: [Qemu-devel] [PATCH v6 02/23] exec: add ram_debug_ops support
@ 2018-01-30 23:26           ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-30 23:26 UTC (permalink / raw)
  To: Edgar E. Iglesias
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Dr. David Alan Gilbert,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Peter Crosthwaite, Richard Henderson



On 1/30/18 4:37 PM, Edgar E. Iglesias wrote:
> On Tue, Jan 30, 2018 at 04:34:37PM -0600, Brijesh Singh wrote:
>>
>> On 1/30/18 3:59 PM, Edgar E. Iglesias wrote:
>>> On Mon, Jan 29, 2018 at 11:41:11AM -0600, Brijesh Singh wrote:
>>>> Currently, the guest memory access for the debug purpose is performed
>>>> using the memcpy(). Lets extend the 'struct MemoryRegion' to include
>>>> ram_debug_ops callbacks. The ram_debug_ops can be used to override
>>>> memcpy() with something else.
>>>>
>>>> The feature can be used by encrypted guest -- which can register
>>>> callbacks to override memcpy() with memory encryption/decryption APIs.
>>>>
>>>> a typical usage:
>>>>
>>>> mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>>>> mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs);
>>>>
>>>> MemoryRegionRAMReadWriteOps ops;
>>>> ops.read = mem_read;
>>>> ops.write = mem_write;
>>> Hi,
>>>
>>> Do these really need to be RAM specific (ram_debug_ops -> debug_ops) ?
>>> I was hoping a similar infrastructure could be used for MMIO
>>> debug accesses.
>> Hi Edgar,
>>
>> The MMIO regions will contains unencrypted data hence I do not find the
>> need to add debug hooks for it. A memcpy() to/from MMIO should be fine.
>> If we see the need for MMIO case then it can extended later.
> In this use-case yes, but in a general use-case MMIO regions may also
> want to differentiate debug from normal accesses.
>
> I'm not saying you need to implement MMIO examples but do we really
> need to have ram_debug_ops and mmio_debug_ops in the future?
> Can we get away with one somehow?

If anyone see this coming in near future then having one debug_ops makes
sense and it should be  doable. If we decide to use debug_ops for MMIO
then I could see us needing to add a new argument to debug_ops callback
to let the client knows whether the access came MMIO vs RAM region
because client may do different things for RAM vs MMIO case (e.g in SEV
RAM is encrypted but MMIO is unencrypted).

> Cheers,
> Edgar
>
>> Brijesh
>>> Best regards,
>>> Edgar
>>>
>>>
>>>
>>>> memory_region_init_ram(mem, NULL, "memory", size, NULL);
>>>> memory_region_set_ram_debug_ops(mem, ops);
>>>>
>>>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>>>> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>>>> Cc: Richard Henderson <rth@twiddle.net>
>>>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>>>> ---
>>>>  exec.c                | 66 ++++++++++++++++++++++++++++++++++++++-------------
>>>>  include/exec/memory.h | 27 +++++++++++++++++++++
>>>>  2 files changed, 77 insertions(+), 16 deletions(-)
>>>>
>>>> diff --git a/exec.c b/exec.c
>>>> index 629a5083851d..1919052b7385 100644
>>>> --- a/exec.c
>>>> +++ b/exec.c
>>>> @@ -3050,7 +3050,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
>>>>          } else {
>>>>              /* RAM case */
>>>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>>>> -            memcpy(ptr, buf, l);
>>>> +            if (attrs.debug && mr->ram_debug_ops) {
>>>> +                mr->ram_debug_ops->write(ptr, buf, l, attrs);
>>>> +            } else {
>>>> +                memcpy(ptr, buf, l);
>>>> +            }
>>>>              invalidate_and_set_dirty(mr, addr1, l);
>>>>          }
>>>>  
>>>> @@ -3148,7 +3152,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
>>>>          } else {
>>>>              /* RAM case */
>>>>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
>>>> -            memcpy(buf, ptr, l);
>>>> +            if (attrs.debug && mr->ram_debug_ops) {
>>>> +                mr->ram_debug_ops->read(buf, ptr, l, attrs);
>>>> +            } else {
>>>> +                memcpy(buf, ptr, l);
>>>> +            }
>>>>          }
>>>>  
>>>>          if (release_lock) {
>>>> @@ -3218,11 +3226,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
>>>>  
>>>>  enum write_rom_type {
>>>>      WRITE_DATA,
>>>> +    READ_DATA,
>>>>      FLUSH_CACHE,
>>>>  };
>>>>  
>>>> -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>>> -    hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type)
>>>> +static inline void cpu_physical_memory_rw_internal(AddressSpace *as,
>>>> +    hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs,
>>>> +    enum write_rom_type type)
>>>>  {
>>>>      hwaddr l;
>>>>      uint8_t *ptr;
>>>> @@ -3237,12 +3247,33 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>>>          if (!(memory_region_is_ram(mr) ||
>>>>                memory_region_is_romd(mr))) {
>>>>              l = memory_access_size(mr, l, addr1);
>>>> +            /* Pass MMIO down to address address_space_rw */
>>>> +            switch (type) {
>>>> +            case READ_DATA:
>>>> +            case WRITE_DATA:
>>>> +                address_space_rw(as, addr1, attrs, buf, l,
>>>> +                                 type == WRITE_DATA);
>>>> +                break;
>>>> +            case FLUSH_CACHE:
>>>> +                break;
>>>> +            }
>>>>          } else {
>>>>              /* ROM/RAM case */
>>>>              ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>>>>              switch (type) {
>>>> +            case READ_DATA:
>>>> +                if (mr->ram_debug_ops) {
>>>> +                    mr->ram_debug_ops->read(buf, ptr, l, attrs);
>>>> +                } else {
>>>> +                    memcpy(buf, ptr, l);
>>>> +                }
>>>> +                break;
>>>>              case WRITE_DATA:
>>>> -                memcpy(ptr, buf, l);
>>>> +                if (mr->ram_debug_ops) {
>>>> +                    mr->ram_debug_ops->write(ptr, buf, l, attrs);
>>>> +                } else {
>>>> +                    memcpy(ptr, buf, l);
>>>> +                }
>>>>                  invalidate_and_set_dirty(mr, addr1, l);
>>>>                  break;
>>>>              case FLUSH_CACHE:
>>>> @@ -3261,7 +3292,8 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as,
>>>>  void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
>>>>                                     const uint8_t *buf, int len)
>>>>  {
>>>> -    cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA);
>>>> +    cpu_physical_memory_rw_internal(as, addr, (uint8_t *)buf, len,
>>>> +            MEMTXATTRS_UNSPECIFIED, WRITE_DATA);
>>>>  }
>>>>  
>>>>  void cpu_flush_icache_range(hwaddr start, int len)
>>>> @@ -3276,8 +3308,10 @@ void cpu_flush_icache_range(hwaddr start, int len)
>>>>          return;
>>>>      }
>>>>  
>>>> -    cpu_physical_memory_write_rom_internal(&address_space_memory,
>>>> -                                           start, NULL, len, FLUSH_CACHE);
>>>> +    cpu_physical_memory_rw_internal(&address_space_memory,
>>>> +                                    start, NULL, len,
>>>> +                                    MEMTXATTRS_UNSPECIFIED,
>>>> +                                    FLUSH_CACHE);
>>>>  }
>>>>  
>>>>  typedef struct {
>>>> @@ -3583,6 +3617,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>>>      int l;
>>>>      hwaddr phys_addr;
>>>>      target_ulong page;
>>>> +    int type = is_write ? WRITE_DATA : READ_DATA;
>>>>  
>>>>      cpu_synchronize_state(cpu);
>>>>      while (len > 0) {
>>>> @@ -3592,6 +3627,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>>>          page = addr & TARGET_PAGE_MASK;
>>>>          phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs);
>>>>          asidx = cpu_asidx_from_attrs(cpu, attrs);
>>>> +
>>>> +        /* set debug attrs to indicate memory access is from the debugger */
>>>> +        attrs.debug = 1;
>>>> +
>>>>          /* if no physical page mapped, return an error */
>>>>          if (phys_addr == -1)
>>>>              return -1;
>>>> @@ -3599,14 +3638,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
>>>>          if (l > len)
>>>>              l = len;
>>>>          phys_addr += (addr & ~TARGET_PAGE_MASK);
>>>> -        if (is_write) {
>>>> -            cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as,
>>>> -                                          phys_addr, buf, l);
>>>> -        } else {
>>>> -            address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
>>>> -                             MEMTXATTRS_UNSPECIFIED,
>>>> -                             buf, l, 0);
>>>> -        }
>>>> +        cpu_physical_memory_rw_internal(cpu->cpu_ases[asidx].as,
>>>> +                                        phys_addr, buf, l, attrs,
>>>> +                                        type);
>>>>          len -= l;
>>>>          buf += l;
>>>>          addr += l;
>>>> diff --git a/include/exec/memory.h b/include/exec/memory.h
>>>> index 07c5d6d59796..4d027fffeebf 100644
>>>> --- a/include/exec/memory.h
>>>> +++ b/include/exec/memory.h
>>>> @@ -215,6 +215,18 @@ typedef struct IOMMUMemoryRegionClass {
>>>>  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
>>>>  typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
>>>>  
>>>> +/* Memory Region RAM debug callback */
>>>> +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps;
>>>> +
>>>> +struct MemoryRegionRAMReadWriteOps {
>>>> +    /* Write data into guest memory */
>>>> +    int (*write) (uint8_t *dest, const uint8_t *src,
>>>> +                  uint32_t len, MemTxAttrs attrs);
>>>> +    /* Read data from guest memory */
>>>> +    int (*read) (uint8_t *dest, const uint8_t *src,
>>>> +                 uint32_t len, MemTxAttrs attrs);
>>>> +};
>>>> +
>>>>  struct MemoryRegion {
>>>>      Object parent_obj;
>>>>  
>>>> @@ -254,6 +266,7 @@ struct MemoryRegion {
>>>>      const char *name;
>>>>      unsigned ioeventfd_nb;
>>>>      MemoryRegionIoeventfd *ioeventfds;
>>>> +    const MemoryRegionRAMReadWriteOps *ram_debug_ops;
>>>>  };
>>>>  
>>>>  struct IOMMUMemoryRegion {
>>>> @@ -624,6 +637,20 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
>>>>                                               Error **errp);
>>>>  
>>>>  /**
>>>> + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory region
>>>> + *
>>>> + * @mr: the #MemoryRegion to be initialized
>>>> + * @ops: a function that will be used for when accessing @target region during
>>>> + *       debug
>>>> + */
>>>> +static inline void
>>>> +memory_region_set_ram_debug_ops(MemoryRegion *mr,
>>>> +                                const MemoryRegionRAMReadWriteOps *ops)
>>>> +{
>>>> +    mr->ram_debug_ops = ops;
>>>> +}
>>>> +
>>>> +/**
>>>>   * memory_region_init_reservation: Initialize a memory region that reserves
>>>>   *                                 I/O space.
>>>>   *
>>>> -- 
>>>> 2.9.5
>>>>

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

* Re: [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
  2018-01-30 21:46       ` [Qemu-devel] " Brijesh Singh
@ 2018-01-31  9:57         ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-01-31  9:57 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> AMD EPYC processors support memory encryption feature. The feature
> >> is reported through CPUID 8000_001F[EAX].
> >>
> >> Fn8000_001F [EAX]:
> >>  Bit 0   Secure Memory Encryption (SME) supported
> >>  Bit 1   Secure Encrypted Virtualization (SEV) supported
> >>  Bit 2   Page flush MSR supported
> >>  Bit 3   Ecrypted State (SEV-ES) support
> >>
> >> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> >> provide additional information regarding the feature (such as which page
> >> table bit is used to mark pages as encrypted etc). The information in EBX
> >> and ECX may vary from one family to another hence we use the host cpuid
> >> to populate the EBX information.
> > That's going to make it interesting for migration.  If the guest needs
> > to know that C-bit position then you presumably can't migrate between
> > those two host types, but we wouldn't have anything that currently
> > stops us.
> > We already have similar problems with variations in physical address
> > size but normally get away with that, especially on smaller VMs.
> 
> Dave,
> 
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types).  Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.

Sure; so the interesting question is how would a management layer like
libvirt know when it's safe to migrate a guest between EPYC and a later
family that has the C-bit in a different location?

Dave

> -Brijesh
> > Dave
> >
> >
> >> The details for memory encryption CPUID is available in AMD APM
> >> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Cc: Richard Henderson <rth@twiddle.net>
> >> Cc: Eduardo Habkost <ehabkost@redhat.com>
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
> >>  target/i386/cpu.h |  6 ++++++
> >>  2 files changed, 42 insertions(+)
> >>
> >> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> >> index a49d2221adc9..4147eb6e18a9 100644
> >> --- a/target/i386/cpu.c
> >> +++ b/target/i386/cpu.c
> >> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
> >>  #define TCG_EXT4_FEATURES 0
> >>  #define TCG_SVM_FEATURES 0
> >>  #define TCG_KVM_FEATURES 0
> >> +#define TCG_MEM_ENCRYPT_FEATURES 0
> >>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
> >>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
> >>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
> >> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
> >>          .cpuid_reg = R_EDX,
> >>          .tcg_features = ~0U,
> >>      },
> >> +    [FEAT_MEM_ENCRYPT] = {
> >> +        .feat_names = {
> >> +            "sme", "sev", "page-flush-msr", "sev-es",
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +        },
> >> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
> >> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
> >> +    }
> >>  };
> >>  
> >>  typedef struct X86RegisterInfo32 {
> >> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
> >>              CPUID_XSAVE_XGETBV1,
> >>          .features[FEAT_6_EAX] =
> >>              CPUID_6_EAX_ARAT,
> >> +        /* Missing: SEV_ES */
> >> +        .features[FEAT_MEM_ENCRYPT] =
> >> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
> >>          .xlevel = 0x8000000A,
> >>          .model_id = "AMD EPYC Processor",
> >>      },
> >> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
> >>              *edx = 0;
> >>          }
> >>          break;
> >> +    case 0x8000001F:
> >> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
> >> +            *eax = env->features[FEAT_MEM_ENCRYPT];
> >> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
> >> +            *ecx = 0;
> >> +            *edx = 0;
> >> +        } else {
> >> +            *eax = 0;
> >> +            *ebx = 0;
> >> +            *ecx = 0;
> >> +            *edx = 0;
> >> +        }
> >> +        break;
> >>      case 0xC0000000:
> >>          *eax = env->cpuid_xlevel2;
> >>          *ebx = 0;
> >> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
> >>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
> >>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
> >>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
> >> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
> >>          /* SVM requires CPUID[0x8000000A] */
> >>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
> >>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
> >>          }
> >> +        /* SEV requires CPUID[0x8000001F] */
> >> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
> >> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
> >> +        }
> >>      }
> >>  
> >>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
> >> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> >> index f91e37d25dea..f7a0ab20fdd1 100644
> >> --- a/target/i386/cpu.h
> >> +++ b/target/i386/cpu.h
> >> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
> >>      FEAT_6_EAX,         /* CPUID[6].EAX */
> >>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
> >>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
> >> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
> >>      FEATURE_WORDS,
> >>  } FeatureWord;
> >>  
> >> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
> >>  
> >>  #define CPUID_6_EAX_ARAT       (1U << 2)
> >>  
> >> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
> >> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
> >> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
> >> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
> >> +
> >>  /* CPUID[0x80000007].EDX flags: */
> >>  #define CPUID_APM_INVTSC       (1U << 8)
> >>  
> >> -- 
> >> 2.9.5
> >>
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
@ 2018-01-31  9:57         ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-01-31  9:57 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Richard Henderson

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> AMD EPYC processors support memory encryption feature. The feature
> >> is reported through CPUID 8000_001F[EAX].
> >>
> >> Fn8000_001F [EAX]:
> >>  Bit 0   Secure Memory Encryption (SME) supported
> >>  Bit 1   Secure Encrypted Virtualization (SEV) supported
> >>  Bit 2   Page flush MSR supported
> >>  Bit 3   Ecrypted State (SEV-ES) support
> >>
> >> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> >> provide additional information regarding the feature (such as which page
> >> table bit is used to mark pages as encrypted etc). The information in EBX
> >> and ECX may vary from one family to another hence we use the host cpuid
> >> to populate the EBX information.
> > That's going to make it interesting for migration.  If the guest needs
> > to know that C-bit position then you presumably can't migrate between
> > those two host types, but we wouldn't have anything that currently
> > stops us.
> > We already have similar problems with variations in physical address
> > size but normally get away with that, especially on smaller VMs.
> 
> Dave,
> 
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types).  Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.

Sure; so the interesting question is how would a management layer like
libvirt know when it's safe to migrate a guest between EPYC and a later
family that has the C-bit in a different location?

Dave

> -Brijesh
> > Dave
> >
> >
> >> The details for memory encryption CPUID is available in AMD APM
> >> (http://support.amd.com/TechDocs/24593.pdf) Section 15.34.1
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Cc: Richard Henderson <rth@twiddle.net>
> >> Cc: Eduardo Habkost <ehabkost@redhat.com>
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  target/i386/cpu.c | 36 ++++++++++++++++++++++++++++++++++++
> >>  target/i386/cpu.h |  6 ++++++
> >>  2 files changed, 42 insertions(+)
> >>
> >> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> >> index a49d2221adc9..4147eb6e18a9 100644
> >> --- a/target/i386/cpu.c
> >> +++ b/target/i386/cpu.c
> >> @@ -234,6 +234,7 @@ static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
> >>  #define TCG_EXT4_FEATURES 0
> >>  #define TCG_SVM_FEATURES 0
> >>  #define TCG_KVM_FEATURES 0
> >> +#define TCG_MEM_ENCRYPT_FEATURES 0
> >>  #define TCG_7_0_EBX_FEATURES (CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_SMAP | \
> >>            CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ADX | \
> >>            CPUID_7_0_EBX_PCOMMIT | CPUID_7_0_EBX_CLFLUSHOPT |            \
> >> @@ -545,6 +546,20 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
> >>          .cpuid_reg = R_EDX,
> >>          .tcg_features = ~0U,
> >>      },
> >> +    [FEAT_MEM_ENCRYPT] = {
> >> +        .feat_names = {
> >> +            "sme", "sev", "page-flush-msr", "sev-es",
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +            NULL, NULL, NULL, NULL,
> >> +        },
> >> +        .cpuid_eax = 0x8000001F, .cpuid_reg = R_EAX,
> >> +        .tcg_features = TCG_MEM_ENCRYPT_FEATURES,
> >> +    }
> >>  };
> >>  
> >>  typedef struct X86RegisterInfo32 {
> >> @@ -1965,6 +1980,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
> >>              CPUID_XSAVE_XGETBV1,
> >>          .features[FEAT_6_EAX] =
> >>              CPUID_6_EAX_ARAT,
> >> +        /* Missing: SEV_ES */
> >> +        .features[FEAT_MEM_ENCRYPT] =
> >> +            CPUID_8000_001F_EAX_SME | CPUID_8000_001F_EAX_SEV,
> >>          .xlevel = 0x8000000A,
> >>          .model_id = "AMD EPYC Processor",
> >>      },
> >> @@ -3589,6 +3607,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
> >>              *edx = 0;
> >>          }
> >>          break;
> >> +    case 0x8000001F:
> >> +        if (env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV) {
> >> +            *eax = env->features[FEAT_MEM_ENCRYPT];
> >> +            host_cpuid(0x8000001F, 0, NULL, ebx, NULL, NULL);
> >> +            *ecx = 0;
> >> +            *edx = 0;
> >> +        } else {
> >> +            *eax = 0;
> >> +            *ebx = 0;
> >> +            *ecx = 0;
> >> +            *edx = 0;
> >> +        }
> >> +        break;
> >>      case 0xC0000000:
> >>          *eax = env->cpuid_xlevel2;
> >>          *ebx = 0;
> >> @@ -4036,10 +4067,15 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
> >>          x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX);
> >>          x86_cpu_adjust_feat_level(cpu, FEAT_SVM);
> >>          x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE);
> >> +        x86_cpu_adjust_feat_level(cpu, FEAT_MEM_ENCRYPT);
> >>          /* SVM requires CPUID[0x8000000A] */
> >>          if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) {
> >>              x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A);
> >>          }
> >> +        /* SEV requires CPUID[0x8000001F] */
> >> +        if ((env->features[FEAT_MEM_ENCRYPT] & CPUID_8000_001F_EAX_SEV)) {
> >> +            x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);
> >> +        }
> >>      }
> >>  
> >>      /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */
> >> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> >> index f91e37d25dea..f7a0ab20fdd1 100644
> >> --- a/target/i386/cpu.h
> >> +++ b/target/i386/cpu.h
> >> @@ -483,6 +483,7 @@ typedef enum FeatureWord {
> >>      FEAT_6_EAX,         /* CPUID[6].EAX */
> >>      FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */
> >>      FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */
> >> +    FEAT_MEM_ENCRYPT,   /* CPUID[8000_001F].EAX */
> >>      FEATURE_WORDS,
> >>  } FeatureWord;
> >>  
> >> @@ -679,6 +680,11 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
> >>  
> >>  #define CPUID_6_EAX_ARAT       (1U << 2)
> >>  
> >> +#define CPUID_8000_001F_EAX_SME             (1U << 0) /* SME */
> >> +#define CPUID_8000_001F_EAX_SEV             (1U << 1) /* SEV */
> >> +#define CPUID_8000_001F_EAX_PAGE_FLUSH_MSR  (1U << 2) /* Page flush MSR */
> >> +#define CPUID_8000_001F_EAX_SEV_ES          (1U << 3) /* SEV-ES */
> >> +
> >>  /* CPUID[0x80000007].EDX flags: */
> >>  #define CPUID_APM_INVTSC       (1U << 8)
> >>  
> >> -- 
> >> 2.9.5
> >>
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
  2018-01-30 21:46       ` [Qemu-devel] " Brijesh Singh
@ 2018-01-31 13:41         ` Eduardo Habkost
  -1 siblings, 0 replies; 118+ messages in thread
From: Eduardo Habkost @ 2018-01-31 13:41 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: Dr. David Alan Gilbert, qemu-devel, kvm, Paolo Bonzini,
	Tom Lendacky, Peter Maydell, Richard Henderson,
	Edgar E. Iglesias, Stefan Hajnoczi, Eric Blake,
	Michael S. Tsirkin, Daniel P . Berrange, Richard Henderson

On Tue, Jan 30, 2018 at 03:46:45PM -0600, Brijesh Singh wrote:
> 
> 
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> AMD EPYC processors support memory encryption feature. The feature
> >> is reported through CPUID 8000_001F[EAX].
> >>
> >> Fn8000_001F [EAX]:
> >>  Bit 0   Secure Memory Encryption (SME) supported
> >>  Bit 1   Secure Encrypted Virtualization (SEV) supported
> >>  Bit 2   Page flush MSR supported
> >>  Bit 3   Ecrypted State (SEV-ES) support
> >>
> >> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> >> provide additional information regarding the feature (such as which page
> >> table bit is used to mark pages as encrypted etc). The information in EBX
> >> and ECX may vary from one family to another hence we use the host cpuid
> >> to populate the EBX information.
> > That's going to make it interesting for migration.  If the guest needs
> > to know that C-bit position then you presumably can't migrate between
> > those two host types, but we wouldn't have anything that currently
> > stops us.
> > We already have similar problems with variations in physical address
> > size but normally get away with that, especially on smaller VMs.
> 
> Dave,
> 
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types).  Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.

Thanks for the explanation.  If this affects ability to migrate,
you need to either:
a) not report the "sev" property on
   query-cpu-model-expansion type=static output (because the
   feature is not migration-safe); or
b) make the C-bit position configurable, and let management
   explicitly specify it.  In this case, you need to validate the
   configured C-bit position and prevent the VM from running if
   it doesn't match the host.  This is more work, but would make
   the feature migration-safe and more useful for management
   software.

Option (b) is preferred because it lets management software
ensure the VM is migratable to a host before starting migration.

There was a very recent discussion about migration-safe features
and the problems with relaying host CPUID data directly to the
guest.  Look for the "i386: Add Intel Processor Trace feature
support" threads in qemu-devel for more info.

I'm looking for a way to document these rules concisely so people
touching the CPUID code are aware of the available options.

-- 
Eduardo

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

* Re: [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
@ 2018-01-31 13:41         ` Eduardo Habkost
  0 siblings, 0 replies; 118+ messages in thread
From: Eduardo Habkost @ 2018-01-31 13:41 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: Dr. David Alan Gilbert, qemu-devel, kvm, Paolo Bonzini,
	Tom Lendacky, Peter Maydell, Richard Henderson,
	Edgar E. Iglesias, Stefan Hajnoczi, Eric Blake,
	Michael S. Tsirkin, Daniel P . Berrange, Richard Henderson

On Tue, Jan 30, 2018 at 03:46:45PM -0600, Brijesh Singh wrote:
> 
> 
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> AMD EPYC processors support memory encryption feature. The feature
> >> is reported through CPUID 8000_001F[EAX].
> >>
> >> Fn8000_001F [EAX]:
> >>  Bit 0   Secure Memory Encryption (SME) supported
> >>  Bit 1   Secure Encrypted Virtualization (SEV) supported
> >>  Bit 2   Page flush MSR supported
> >>  Bit 3   Ecrypted State (SEV-ES) support
> >>
> >> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> >> provide additional information regarding the feature (such as which page
> >> table bit is used to mark pages as encrypted etc). The information in EBX
> >> and ECX may vary from one family to another hence we use the host cpuid
> >> to populate the EBX information.
> > That's going to make it interesting for migration.  If the guest needs
> > to know that C-bit position then you presumably can't migrate between
> > those two host types, but we wouldn't have anything that currently
> > stops us.
> > We already have similar problems with variations in physical address
> > size but normally get away with that, especially on smaller VMs.
> 
> Dave,
> 
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types).  Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.

Thanks for the explanation.  If this affects ability to migrate,
you need to either:
a) not report the "sev" property on
   query-cpu-model-expansion type=static output (because the
   feature is not migration-safe); or
b) make the C-bit position configurable, and let management
   explicitly specify it.  In this case, you need to validate the
   configured C-bit position and prevent the VM from running if
   it doesn't match the host.  This is more work, but would make
   the feature migration-safe and more useful for management
   software.

Option (b) is preferred because it lets management software
ensure the VM is migratable to a host before starting migration.

There was a very recent discussion about migration-safe features
and the problems with relaying host CPUID data directly to the
guest.  Look for the "i386: Add Intel Processor Trace feature
support" threads in qemu-devel for more info.

I'm looking for a way to document these rules concisely so people
touching the CPUID code are aware of the available options.

-- 
Eduardo

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

* Re: [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
  2018-01-31 13:41         ` [Qemu-devel] " Eduardo Habkost
@ 2018-01-31 16:05           ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-31 16:05 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: brijesh.singh, Dr. David Alan Gilbert, qemu-devel, kvm,
	Paolo Bonzini, Tom Lendacky, Peter Maydell, Richard Henderson,
	Edgar E. Iglesias, Stefan Hajnoczi, Eric Blake,
	Michael S. Tsirkin, Daniel P . Berrange, Richard Henderson



On 01/31/2018 07:41 AM, Eduardo Habkost wrote:
> On Tue, Jan 30, 2018 at 03:46:45PM -0600, Brijesh Singh wrote:
>>
>>
>> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>> AMD EPYC processors support memory encryption feature. The feature
>>>> is reported through CPUID 8000_001F[EAX].
>>>>
>>>> Fn8000_001F [EAX]:
>>>>   Bit 0   Secure Memory Encryption (SME) supported
>>>>   Bit 1   Secure Encrypted Virtualization (SEV) supported
>>>>   Bit 2   Page flush MSR supported
>>>>   Bit 3   Ecrypted State (SEV-ES) support
>>>>
>>>> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
>>>> provide additional information regarding the feature (such as which page
>>>> table bit is used to mark pages as encrypted etc). The information in EBX
>>>> and ECX may vary from one family to another hence we use the host cpuid
>>>> to populate the EBX information.
>>> That's going to make it interesting for migration.  If the guest needs
>>> to know that C-bit position then you presumably can't migrate between
>>> those two host types, but we wouldn't have anything that currently
>>> stops us.
>>> We already have similar problems with variations in physical address
>>> size but normally get away with that, especially on smaller VMs.
>>
>> Dave,
>>
>> While building the page tables guest need to know the C-bit position.
>> The C-bit position in the guest is same as C-bit position on the host.
>> For migration case, we should be able to migrate SEV guest on same host
>> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
>> be okay migrating the SEV guests among those host types).  Since C-bit
>> position is not fixed hence migrating to different host family will be
>> an issue.
> 
> Thanks for the explanation.  If this affects ability to migrate,
> you need to either:
> a) not report the "sev" property on
>     query-cpu-model-expansion type=static output (because the
>     feature is not migration-safe); or
> b) make the C-bit position configurable, and let management
>     explicitly specify it.  In this case, you need to validate the
>     configured C-bit position and prevent the VM from running if
>     it doesn't match the host.  This is more work, but would make
>     the feature migration-safe and more useful for management
>     software.
> 
> Option (b) is preferred because it lets management software
> ensure the VM is migratable to a host before starting migration.
> 
> There was a very recent discussion about migration-safe features
> and the problems with relaying host CPUID data directly to the
> guest.  Look for the "i386: Add Intel Processor Trace feature
> support" threads in qemu-devel for more info.
> 
> I'm looking for a way to document these rules concisely so people
> touching the CPUID code are aware of the available options.
> 


I also prefer Option (b). In next series, I will extend the sev-guest 
object to add a new property (cbitpos). Management software stack can 
use this property to pass the c-bit position and we validate it. Thanks 
for the feedback.

-Brijesh

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

* Re: [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
@ 2018-01-31 16:05           ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-01-31 16:05 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: brijesh.singh, Dr. David Alan Gilbert, qemu-devel, kvm,
	Paolo Bonzini, Tom Lendacky, Peter Maydell, Richard Henderson,
	Edgar E. Iglesias, Stefan Hajnoczi, Eric Blake,
	Michael S. Tsirkin, Daniel P . Berrange, Richard Henderson



On 01/31/2018 07:41 AM, Eduardo Habkost wrote:
> On Tue, Jan 30, 2018 at 03:46:45PM -0600, Brijesh Singh wrote:
>>
>>
>> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>> AMD EPYC processors support memory encryption feature. The feature
>>>> is reported through CPUID 8000_001F[EAX].
>>>>
>>>> Fn8000_001F [EAX]:
>>>>   Bit 0   Secure Memory Encryption (SME) supported
>>>>   Bit 1   Secure Encrypted Virtualization (SEV) supported
>>>>   Bit 2   Page flush MSR supported
>>>>   Bit 3   Ecrypted State (SEV-ES) support
>>>>
>>>> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
>>>> provide additional information regarding the feature (such as which page
>>>> table bit is used to mark pages as encrypted etc). The information in EBX
>>>> and ECX may vary from one family to another hence we use the host cpuid
>>>> to populate the EBX information.
>>> That's going to make it interesting for migration.  If the guest needs
>>> to know that C-bit position then you presumably can't migrate between
>>> those two host types, but we wouldn't have anything that currently
>>> stops us.
>>> We already have similar problems with variations in physical address
>>> size but normally get away with that, especially on smaller VMs.
>>
>> Dave,
>>
>> While building the page tables guest need to know the C-bit position.
>> The C-bit position in the guest is same as C-bit position on the host.
>> For migration case, we should be able to migrate SEV guest on same host
>> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
>> be okay migrating the SEV guests among those host types).  Since C-bit
>> position is not fixed hence migrating to different host family will be
>> an issue.
> 
> Thanks for the explanation.  If this affects ability to migrate,
> you need to either:
> a) not report the "sev" property on
>     query-cpu-model-expansion type=static output (because the
>     feature is not migration-safe); or
> b) make the C-bit position configurable, and let management
>     explicitly specify it.  In this case, you need to validate the
>     configured C-bit position and prevent the VM from running if
>     it doesn't match the host.  This is more work, but would make
>     the feature migration-safe and more useful for management
>     software.
> 
> Option (b) is preferred because it lets management software
> ensure the VM is migratable to a host before starting migration.
> 
> There was a very recent discussion about migration-safe features
> and the problems with relaying host CPUID data directly to the
> guest.  Look for the "i386: Add Intel Processor Trace feature
> support" threads in qemu-devel for more info.
> 
> I'm looking for a way to document these rules concisely so people
> touching the CPUID code are aware of the available options.
> 


I also prefer Option (b). In next series, I will extend the sev-guest 
object to add a new property (cbitpos). Management software stack can 
use this property to pass the c-bit position and we validate it. Thanks 
for the feedback.

-Brijesh

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
  (?)
@ 2018-01-31 17:43   ` Markus Armbruster
  2018-02-01 15:21     ` Brijesh Singh
  -1 siblings, 1 reply; 118+ messages in thread
From: Markus Armbruster @ 2018-01-31 17:43 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, Edgar E. Iglesias, Peter Maydell, Eduardo Habkost,
	kvm, Tom Lendacky, Stefan Hajnoczi, Michael S. Tsirkin,
	Richard Henderson, Dr. David Alan Gilbert, Paolo Bonzini

Brijesh Singh <brijesh.singh@amd.com> writes:

> update 'info kvm' to display the memory encryption support.
>
> (qemu) info kvm
> kvm support: enabled
> memory encryption: disabled
>
> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  hmp.c            | 2 ++
>  qapi-schema.json | 5 ++++-
>  qmp.c            | 1 +
>  3 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/hmp.c b/hmp.c
> index 056bf70cf1e2..6ceb6b30af75 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
>      monitor_printf(mon, "kvm support: ");
>      if (info->present) {
>          monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
> +        monitor_printf(mon, "memory encryption: %s\n",
> +                       info->mem_encryption ? "enabled" : "disabled");
>      } else {
>          monitor_printf(mon, "not compiled\n");
>      }
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 5c06745c7927..2046c96669bf 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -314,9 +314,12 @@
>  #
>  # @present: true if KVM acceleration is built into this executable
>  #
> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
> +#
>  # Since: 0.14.0
>  ##
> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
> +            'mem-encryption' : 'bool'} }

This extends QMP's query-kvm.  Your commit message claims the patch
affects only HMP.  Needs fixing.  The cleanest way is to split the patch
into its QMP part (hunks #2 and #3) and its HMP part (hunk #1).

>  
>  ##
>  # @query-kvm:
> diff --git a/qmp.c b/qmp.c
> index 52cfd2d81c0f..3a527bc8c39c 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
>  
>      info->enabled = kvm_enabled();
>      info->present = kvm_available();
> +    info->mem_encryption = kvm_memcrypt_enabled();
>  
>      return info;
>  }

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

* Re: [Qemu-devel] [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
  (?)
@ 2018-01-31 17:45   ` Markus Armbruster
  2018-02-01 15:25     ` Brijesh Singh
  -1 siblings, 1 reply; 118+ messages in thread
From: Markus Armbruster @ 2018-01-31 17:45 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, Edgar E. Iglesias, Peter Maydell, Eduardo Habkost,
	kvm, Tom Lendacky, Stefan Hajnoczi, Michael S. Tsirkin,
	Richard Henderson, Dr. David Alan Gilbert, Paolo Bonzini

Brijesh Singh <brijesh.singh@amd.com> writes:

> Add SEV_MEASUREMENT event which can be used by libvirt to get the
> measurement of the memory regions encrypted through the SEV launch
> flow. The measurement value is base64 encoded.
>
> Cc: Daniel P. Berrange <berrange@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  qapi-schema.json | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 2046c96669bf..e1f5d14e2e3f 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -3192,3 +3192,16 @@
>  # Since: 2.11
>  ##
>  { 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} }
> +
> +##
> +# @SEV_MEASUREMENT:
> +#
> +# Emitted when measurement is available for the SEV guest.
> +#
> +# @value: measurement value encoded in base64
> +#
> +# Since: 2.12
> +#
> +##
> +{ 'event' : 'SEV_MEASUREMENT',
> +  'data' : { 'value' : 'str' } }

New event -> automatic question: do we need a way to poll for this
information?  Say when an event could get lost during a libvirt restart.

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

* Re: [PATCH v6 10/23] sev: add command to initialize the memory encryption context
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
@ 2018-02-01 12:13     ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 12:13 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> When memory encryption is enabled, KVM_SEV_INIT command is used to
> initialize the platform. The command loads the SEV related persistent
> data from non-volatile storage and initializes the platform context.
> This command should be first issued before invoking any other guest
> commands provided by the SEV firmware.

Some minor comments rather than full review.

> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  accel/kvm/kvm-all.c    |  15 ++++++
>  accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
>  accel/kvm/trace-events |   2 +
>  include/sysemu/sev.h   |  10 ++++
>  4 files changed, 151 insertions(+)
> 
> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index f290f487a573..a9b16846675e 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -38,6 +38,7 @@
>  #include "qemu/event_notifier.h"
>  #include "trace.h"
>  #include "hw/irq.h"
> +#include "sysemu/sev.h"
>  
>  #include "hw/boards.h"
>  
> @@ -103,6 +104,9 @@ struct KVMState
>  #endif
>      KVMMemoryListener memory_listener;
>      QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
> +
> +    /* memory encryption */
> +    void *memcrypt_handle;
>  };
>  
>  KVMState *kvm_state;
> @@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
>  
>      kvm_state = s;
>  
> +    /*
> +     * if memory encryption object is specified then initialize the memory
> +     * encryption context.
> +     * */

Style: should be */

> +    if (ms->memory_encryption) {
> +        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
> +        if (!kvm_state->memcrypt_handle) {
> +            goto err;
> +        }
> +    }
> +
>      ret = kvm_arch_init(ms, s);
>      if (ret < 0) {
>          goto err;
> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> index e93fdfeb0c8f..be1791e510b3 100644
> --- a/accel/kvm/sev.c
> +++ b/accel/kvm/sev.c
> @@ -18,10 +18,72 @@
>  #include "sysemu/kvm.h"
>  #include "sysemu/sev.h"
>  #include "sysemu/sysemu.h"
> +#include "trace.h"
>  
>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
>  
> +static int sev_fd;
> +
> +#define SEV_FW_MAX_ERROR      0x17
> +
> +static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {

Perhaps:
   static const char *sev_few_errlist[] = {
?

> +    "",
> +    "Platform state is invalid",
> +    "Guest state is invalid",
> +    "Platform configuration is invalid",
> +    "Buffer too small",
> +    "Platform is already owned",
> +    "Certificate is invalid",
> +    "Policy is not allowed",
> +    "Guest is not active",
> +    "Invalid address",
> +    "Bad signature",
> +    "Bad measurement",
> +    "Asid is already owned",
> +    "Invalid ASID",
> +    "WBINVD is required",
> +    "DF_FLUSH is required",
> +    "Guest handle is invalid",
> +    "Invalid command",
> +    "Guest is active",
> +    "Hardware error",
> +    "Hardware unsafe",
> +    "Feature not supported",
> +    "Invalid parameter"
> +};
> +
> +static int
> +sev_ioctl(int cmd, void *data, int *error)
> +{
> +    int r;
> +    struct kvm_sev_cmd input;
> +
> +    memset(&input, 0x0, sizeof(input));
> +
> +    input.id = cmd;
> +    input.sev_fd = sev_fd;
> +    input.data = (__u64)data;
> +
> +    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
> +
> +    if (error) {
> +        *error = input.error;
> +    }
> +
> +    return r;
> +}
> +
> +static char *
> +fw_error_to_str(int code)
> +{
> +    if (code > SEV_FW_MAX_ERROR) {

I'm trying to convince myself whether that should be >= and whether the
maximum error is really 0x16 ?  Your list up there has 23 entries
so I think trying to access error 0x17 would be bad.

> +        return NULL;

It might be better to return 'No error' or the like unless you're going
to be testing for NULL; that way you never end up with a Null getting
out.

> +    }
> +
> +    return sev_fw_errlist[code];
> +}
> +
>  static void
>  qsev_guest_finalize(Object *obj)
>  {
> @@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
>      }
>  };
>  
> +static QSevGuestInfo *
> +lookup_sev_guest_info(const char *id)
> +{
> +    Object *obj;
> +    QSevGuestInfo *info;
> +
> +    obj = object_resolve_path_component(object_get_objects_root(), id);
> +    if (!obj) {
> +        return NULL;
> +    }
> +
> +    info = (QSevGuestInfo *)
> +            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
> +    if (!info) {
> +        return NULL;
> +    }
> +
> +    return info;
> +}
> +
> +void *
> +sev_guest_init(const char *id)
> +{
> +    SEVState *s;
> +    char *devname;
> +    int ret, fw_error;
> +
> +    s = g_malloc0(sizeof(SEVState));

g_new0 is easier.

> +    if (!s) {
> +        return NULL;
> +    }

and allocation aborts rather than returning NULL (unless you use the
_try_ version of g_new)

> +
> +    s->sev_info = lookup_sev_guest_info(id);
> +    if (!s->sev_info) {
> +        error_report("%s: '%s' is not a valid '%s' object",
> +                     __func__, id, TYPE_QSEV_GUEST_INFO);
> +        goto err;
> +    }
> +
> +    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
> +    sev_fd = open(devname, O_RDWR);
> +    if (sev_fd < 0) {
> +        error_report("%s: Failed to open %s '%s'", __func__,
> +                     devname, strerror(errno));
> +        goto err;
> +    }
> +    g_free(devname);
> +
> +    trace_kvm_sev_init();
> +    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
> +    if (ret) {
> +        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
> +                     __func__, ret, fw_error, fw_error_to_str(fw_error));
> +        goto err;
> +    }
> +
> +    return s;
> +err:
> +    g_free(s);
> +    return NULL;
> +}
> +
>  static void
>  sev_register_types(void)
>  {
> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> index f89ba5578dc1..ea487e5a5913 100644
> --- a/accel/kvm/trace-events
> +++ b/accel/kvm/trace-events
> @@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
>  kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
>  kvm_irqchip_release_virq(int virq) "virq %d"
>  
> +# sev.c
> +kvm_sev_init(void) ""
> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> index d2621a9d1100..6aec25bc05e5 100644
> --- a/include/sysemu/sev.h
> +++ b/include/sysemu/sev.h
> @@ -14,6 +14,8 @@
>  #ifndef QEMU_SEV_H
>  #define QEMU_SEV_H
>  
> +#include <linux/kvm.h>
> +
>  #include "qom/object.h"
>  #include "qapi/error.h"
>  #include "sysemu/kvm.h"
> @@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
>      ObjectClass parent_class;
>  };
>  
> +struct SEVState {
> +    QSevGuestInfo *sev_info;
> +};
> +
> +typedef struct SEVState SEVState;
> +
> +void *sev_guest_init(const char *id);
> +
>  #endif
>  
> -- 
> 2.9.5
> 

Dave

--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 10/23] sev: add command to initialize the memory encryption context
@ 2018-02-01 12:13     ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 12:13 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> When memory encryption is enabled, KVM_SEV_INIT command is used to
> initialize the platform. The command loads the SEV related persistent
> data from non-volatile storage and initializes the platform context.
> This command should be first issued before invoking any other guest
> commands provided by the SEV firmware.

Some minor comments rather than full review.

> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  accel/kvm/kvm-all.c    |  15 ++++++
>  accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
>  accel/kvm/trace-events |   2 +
>  include/sysemu/sev.h   |  10 ++++
>  4 files changed, 151 insertions(+)
> 
> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index f290f487a573..a9b16846675e 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -38,6 +38,7 @@
>  #include "qemu/event_notifier.h"
>  #include "trace.h"
>  #include "hw/irq.h"
> +#include "sysemu/sev.h"
>  
>  #include "hw/boards.h"
>  
> @@ -103,6 +104,9 @@ struct KVMState
>  #endif
>      KVMMemoryListener memory_listener;
>      QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
> +
> +    /* memory encryption */
> +    void *memcrypt_handle;
>  };
>  
>  KVMState *kvm_state;
> @@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
>  
>      kvm_state = s;
>  
> +    /*
> +     * if memory encryption object is specified then initialize the memory
> +     * encryption context.
> +     * */

Style: should be */

> +    if (ms->memory_encryption) {
> +        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
> +        if (!kvm_state->memcrypt_handle) {
> +            goto err;
> +        }
> +    }
> +
>      ret = kvm_arch_init(ms, s);
>      if (ret < 0) {
>          goto err;
> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> index e93fdfeb0c8f..be1791e510b3 100644
> --- a/accel/kvm/sev.c
> +++ b/accel/kvm/sev.c
> @@ -18,10 +18,72 @@
>  #include "sysemu/kvm.h"
>  #include "sysemu/sev.h"
>  #include "sysemu/sysemu.h"
> +#include "trace.h"
>  
>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
>  
> +static int sev_fd;
> +
> +#define SEV_FW_MAX_ERROR      0x17
> +
> +static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {

Perhaps:
   static const char *sev_few_errlist[] = {
?

> +    "",
> +    "Platform state is invalid",
> +    "Guest state is invalid",
> +    "Platform configuration is invalid",
> +    "Buffer too small",
> +    "Platform is already owned",
> +    "Certificate is invalid",
> +    "Policy is not allowed",
> +    "Guest is not active",
> +    "Invalid address",
> +    "Bad signature",
> +    "Bad measurement",
> +    "Asid is already owned",
> +    "Invalid ASID",
> +    "WBINVD is required",
> +    "DF_FLUSH is required",
> +    "Guest handle is invalid",
> +    "Invalid command",
> +    "Guest is active",
> +    "Hardware error",
> +    "Hardware unsafe",
> +    "Feature not supported",
> +    "Invalid parameter"
> +};
> +
> +static int
> +sev_ioctl(int cmd, void *data, int *error)
> +{
> +    int r;
> +    struct kvm_sev_cmd input;
> +
> +    memset(&input, 0x0, sizeof(input));
> +
> +    input.id = cmd;
> +    input.sev_fd = sev_fd;
> +    input.data = (__u64)data;
> +
> +    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
> +
> +    if (error) {
> +        *error = input.error;
> +    }
> +
> +    return r;
> +}
> +
> +static char *
> +fw_error_to_str(int code)
> +{
> +    if (code > SEV_FW_MAX_ERROR) {

I'm trying to convince myself whether that should be >= and whether the
maximum error is really 0x16 ?  Your list up there has 23 entries
so I think trying to access error 0x17 would be bad.

> +        return NULL;

It might be better to return 'No error' or the like unless you're going
to be testing for NULL; that way you never end up with a Null getting
out.

> +    }
> +
> +    return sev_fw_errlist[code];
> +}
> +
>  static void
>  qsev_guest_finalize(Object *obj)
>  {
> @@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
>      }
>  };
>  
> +static QSevGuestInfo *
> +lookup_sev_guest_info(const char *id)
> +{
> +    Object *obj;
> +    QSevGuestInfo *info;
> +
> +    obj = object_resolve_path_component(object_get_objects_root(), id);
> +    if (!obj) {
> +        return NULL;
> +    }
> +
> +    info = (QSevGuestInfo *)
> +            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
> +    if (!info) {
> +        return NULL;
> +    }
> +
> +    return info;
> +}
> +
> +void *
> +sev_guest_init(const char *id)
> +{
> +    SEVState *s;
> +    char *devname;
> +    int ret, fw_error;
> +
> +    s = g_malloc0(sizeof(SEVState));

g_new0 is easier.

> +    if (!s) {
> +        return NULL;
> +    }

and allocation aborts rather than returning NULL (unless you use the
_try_ version of g_new)

> +
> +    s->sev_info = lookup_sev_guest_info(id);
> +    if (!s->sev_info) {
> +        error_report("%s: '%s' is not a valid '%s' object",
> +                     __func__, id, TYPE_QSEV_GUEST_INFO);
> +        goto err;
> +    }
> +
> +    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
> +    sev_fd = open(devname, O_RDWR);
> +    if (sev_fd < 0) {
> +        error_report("%s: Failed to open %s '%s'", __func__,
> +                     devname, strerror(errno));
> +        goto err;
> +    }
> +    g_free(devname);
> +
> +    trace_kvm_sev_init();
> +    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
> +    if (ret) {
> +        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
> +                     __func__, ret, fw_error, fw_error_to_str(fw_error));
> +        goto err;
> +    }
> +
> +    return s;
> +err:
> +    g_free(s);
> +    return NULL;
> +}
> +
>  static void
>  sev_register_types(void)
>  {
> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> index f89ba5578dc1..ea487e5a5913 100644
> --- a/accel/kvm/trace-events
> +++ b/accel/kvm/trace-events
> @@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
>  kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
>  kvm_irqchip_release_virq(int virq) "virq %d"
>  
> +# sev.c
> +kvm_sev_init(void) ""
> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> index d2621a9d1100..6aec25bc05e5 100644
> --- a/include/sysemu/sev.h
> +++ b/include/sysemu/sev.h
> @@ -14,6 +14,8 @@
>  #ifndef QEMU_SEV_H
>  #define QEMU_SEV_H
>  
> +#include <linux/kvm.h>
> +
>  #include "qom/object.h"
>  #include "qapi/error.h"
>  #include "sysemu/kvm.h"
> @@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
>      ObjectClass parent_class;
>  };
>  
> +struct SEVState {
> +    QSevGuestInfo *sev_info;
> +};
> +
> +typedef struct SEVState SEVState;
> +
> +void *sev_guest_init(const char *id);
> +
>  #endif
>  
> -- 
> 2.9.5
> 

Dave

--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-01-31 17:43   ` Markus Armbruster
@ 2018-02-01 15:21     ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-01 15:21 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: brijesh.singh, qemu-devel, Edgar E. Iglesias, Peter Maydell,
	Eduardo Habkost, kvm, Tom Lendacky, Stefan Hajnoczi,
	Michael S. Tsirkin, Richard Henderson, Dr. David Alan Gilbert,
	Paolo Bonzini



On 01/31/2018 11:43 AM, Markus Armbruster wrote:
> Brijesh Singh <brijesh.singh@amd.com> writes:
> 
>> update 'info kvm' to display the memory encryption support.
>>
>> (qemu) info kvm
>> kvm support: enabled
>> memory encryption: disabled
>>
>> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>> Cc: Eric Blake <eblake@redhat.com>
>> Cc: Markus Armbruster <armbru@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>   hmp.c            | 2 ++
>>   qapi-schema.json | 5 ++++-
>>   qmp.c            | 1 +
>>   3 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/hmp.c b/hmp.c
>> index 056bf70cf1e2..6ceb6b30af75 100644
>> --- a/hmp.c
>> +++ b/hmp.c
>> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
>>       monitor_printf(mon, "kvm support: ");
>>       if (info->present) {
>>           monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
>> +        monitor_printf(mon, "memory encryption: %s\n",
>> +                       info->mem_encryption ? "enabled" : "disabled");
>>       } else {
>>           monitor_printf(mon, "not compiled\n");
>>       }
>> diff --git a/qapi-schema.json b/qapi-schema.json
>> index 5c06745c7927..2046c96669bf 100644
>> --- a/qapi-schema.json
>> +++ b/qapi-schema.json
>> @@ -314,9 +314,12 @@
>>   #
>>   # @present: true if KVM acceleration is built into this executable
>>   #
>> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
>> +#
>>   # Since: 0.14.0
>>   ##
>> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
>> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
>> +            'mem-encryption' : 'bool'} }
> 
> This extends QMP's query-kvm.  Your commit message claims the patch
> affects only HMP.  Needs fixing.  The cleanest way is to split the patch
> into its QMP part (hunks #2 and #3) and its HMP part (hunk #1).
> 


Noted, I will break this into two patches in next series. Thanks for 
feedback.

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

* Re: [Qemu-devel] [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event
  2018-01-31 17:45   ` Markus Armbruster
@ 2018-02-01 15:25     ` Brijesh Singh
  2018-02-01 15:28         ` Eric Blake
  0 siblings, 1 reply; 118+ messages in thread
From: Brijesh Singh @ 2018-02-01 15:25 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: brijesh.singh, qemu-devel, Edgar E. Iglesias, Peter Maydell,
	Eduardo Habkost, kvm, Tom Lendacky, Stefan Hajnoczi,
	Michael S. Tsirkin, Richard Henderson, Dr. David Alan Gilbert,
	Paolo Bonzini



On 01/31/2018 11:45 AM, Markus Armbruster wrote:
> Brijesh Singh <brijesh.singh@amd.com> writes:
> 
>> Add SEV_MEASUREMENT event which can be used by libvirt to get the
>> measurement of the memory regions encrypted through the SEV launch
>> flow. The measurement value is base64 encoded.
>>
>> Cc: Daniel P. Berrange <berrange@redhat.com>
>> Cc: Eric Blake <eblake@redhat.com>
>> Cc: Markus Armbruster <armbru@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>   qapi-schema.json | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/qapi-schema.json b/qapi-schema.json
>> index 2046c96669bf..e1f5d14e2e3f 100644
>> --- a/qapi-schema.json
>> +++ b/qapi-schema.json
>> @@ -3192,3 +3192,16 @@
>>   # Since: 2.11
>>   ##
>>   { 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} }
>> +
>> +##
>> +# @SEV_MEASUREMENT:
>> +#
>> +# Emitted when measurement is available for the SEV guest.
>> +#
>> +# @value: measurement value encoded in base64
>> +#
>> +# Since: 2.12
>> +#
>> +##
>> +{ 'event' : 'SEV_MEASUREMENT',
>> +  'data' : { 'value' : 'str' } }
> 
> New event -> automatic question: do we need a way to poll for this
> information?  Say when an event could get lost during a libvirt restart.
> 


In our initial SEV patches for libvirt we ran into similar cases where 
the event was dropped on restart, and now leaning towards dropping this 
event patch and add a new QMP command which can be used by libvirt to 
retrieve the measurement.

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

* Re: [Qemu-devel] [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event
  2018-02-01 15:25     ` Brijesh Singh
@ 2018-02-01 15:28         ` Eric Blake
  0 siblings, 0 replies; 118+ messages in thread
From: Eric Blake @ 2018-02-01 15:28 UTC (permalink / raw)
  To: Brijesh Singh, Markus Armbruster
  Cc: Edgar E. Iglesias, Peter Maydell, Eduardo Habkost, kvm,
	Tom Lendacky, Stefan Hajnoczi, Michael S. Tsirkin,
	Richard Henderson, qemu-devel, Dr. David Alan Gilbert,
	Paolo Bonzini


[-- Attachment #1.1: Type: text/plain, Size: 871 bytes --]

On 02/01/2018 09:25 AM, Brijesh Singh wrote:

>>> +{ 'event' : 'SEV_MEASUREMENT',
>>> +  'data' : { 'value' : 'str' } }
>>
>> New event -> automatic question: do we need a way to poll for this
>> information?  Say when an event could get lost during a libvirt restart.
>>
> 
> 
> In our initial SEV patches for libvirt we ran into similar cases where
> the event was dropped on restart, and now leaning towards dropping this
> event patch and add a new QMP command which can be used by libvirt to
> retrieve the measurement.

An event may still be useful to minimize the amount of polling required
when the connection is not broken.  It's just that any setup that ONLY
permits events (and not also polling) is fragile.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]

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

* Re: [Qemu-devel] [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event
@ 2018-02-01 15:28         ` Eric Blake
  0 siblings, 0 replies; 118+ messages in thread
From: Eric Blake @ 2018-02-01 15:28 UTC (permalink / raw)
  To: Brijesh Singh, Markus Armbruster
  Cc: Edgar E. Iglesias, Peter Maydell, Eduardo Habkost, kvm,
	Tom Lendacky, Stefan Hajnoczi, Michael S. Tsirkin,
	Richard Henderson, qemu-devel, Dr. David Alan Gilbert,
	Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 871 bytes --]

On 02/01/2018 09:25 AM, Brijesh Singh wrote:

>>> +{ 'event' : 'SEV_MEASUREMENT',
>>> +  'data' : { 'value' : 'str' } }
>>
>> New event -> automatic question: do we need a way to poll for this
>> information?  Say when an event could get lost during a libvirt restart.
>>
> 
> 
> In our initial SEV patches for libvirt we ran into similar cases where
> the event was dropped on restart, and now leaning towards dropping this
> event patch and add a new QMP command which can be used by libvirt to
> retrieve the measurement.

An event may still be useful to minimize the amount of polling required
when the connection is not broken.  It's just that any setup that ONLY
permits events (and not also polling) is fragile.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]

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

* Re: [PATCH v6 10/23] sev: add command to initialize the memory encryption context
  2018-02-01 12:13     ` [Qemu-devel] " Dr. David Alan Gilbert
@ 2018-02-01 15:33       ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-01 15:33 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange



On 02/01/2018 06:13 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> When memory encryption is enabled, KVM_SEV_INIT command is used to
>> initialize the platform. The command loads the SEV related persistent
>> data from non-volatile storage and initializes the platform context.
>> This command should be first issued before invoking any other guest
>> commands provided by the SEV firmware.
> 
> Some minor comments rather than full review.
> 
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>   accel/kvm/kvm-all.c    |  15 ++++++
>>   accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
>>   accel/kvm/trace-events |   2 +
>>   include/sysemu/sev.h   |  10 ++++
>>   4 files changed, 151 insertions(+)
>>
>> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
>> index f290f487a573..a9b16846675e 100644
>> --- a/accel/kvm/kvm-all.c
>> +++ b/accel/kvm/kvm-all.c
>> @@ -38,6 +38,7 @@
>>   #include "qemu/event_notifier.h"
>>   #include "trace.h"
>>   #include "hw/irq.h"
>> +#include "sysemu/sev.h"
>>   
>>   #include "hw/boards.h"
>>   
>> @@ -103,6 +104,9 @@ struct KVMState
>>   #endif
>>       KVMMemoryListener memory_listener;
>>       QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
>> +
>> +    /* memory encryption */
>> +    void *memcrypt_handle;
>>   };
>>   
>>   KVMState *kvm_state;
>> @@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
>>   
>>       kvm_state = s;
>>   
>> +    /*
>> +     * if memory encryption object is specified then initialize the memory
>> +     * encryption context.
>> +     * */
> 
> Style: should be */


Ah noted, I will fix this.


> 
>> +    if (ms->memory_encryption) {
>> +        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
>> +        if (!kvm_state->memcrypt_handle) {
>> +            goto err;
>> +        }
>> +    }
>> +
>>       ret = kvm_arch_init(ms, s);
>>       if (ret < 0) {
>>           goto err;
>> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
>> index e93fdfeb0c8f..be1791e510b3 100644
>> --- a/accel/kvm/sev.c
>> +++ b/accel/kvm/sev.c
>> @@ -18,10 +18,72 @@
>>   #include "sysemu/kvm.h"
>>   #include "sysemu/sev.h"
>>   #include "sysemu/sysemu.h"
>> +#include "trace.h"
>>   
>>   #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>>   #define DEFAULT_SEV_DEVICE      "/dev/sev"
>>   
>> +static int sev_fd;
>> +
>> +#define SEV_FW_MAX_ERROR      0x17
>> +
>> +static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
> 
> Perhaps:
>     static const char *sev_few_errlist[] = {
> ?
> 

Sure, we can make it const, i will take care of this in next rev.


>> +    "",
>> +    "Platform state is invalid",
>> +    "Guest state is invalid",
>> +    "Platform configuration is invalid",
>> +    "Buffer too small",
>> +    "Platform is already owned",
>> +    "Certificate is invalid",
>> +    "Policy is not allowed",
>> +    "Guest is not active",
>> +    "Invalid address",
>> +    "Bad signature",
>> +    "Bad measurement",
>> +    "Asid is already owned",
>> +    "Invalid ASID",
>> +    "WBINVD is required",
>> +    "DF_FLUSH is required",
>> +    "Guest handle is invalid",
>> +    "Invalid command",
>> +    "Guest is active",
>> +    "Hardware error",
>> +    "Hardware unsafe",
>> +    "Feature not supported",
>> +    "Invalid parameter"
>> +};
>> +
>> +static int
>> +sev_ioctl(int cmd, void *data, int *error)
>> +{
>> +    int r;
>> +    struct kvm_sev_cmd input;
>> +
>> +    memset(&input, 0x0, sizeof(input));
>> +
>> +    input.id = cmd;
>> +    input.sev_fd = sev_fd;
>> +    input.data = (__u64)data;
>> +
>> +    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
>> +
>> +    if (error) {
>> +        *error = input.error;
>> +    }
>> +
>> +    return r;
>> +}
>> +
>> +static char *
>> +fw_error_to_str(int code)
>> +{
>> +    if (code > SEV_FW_MAX_ERROR) {
> 
> I'm trying to convince myself whether that should be >= and whether the
> maximum error is really 0x16 ?  Your list up there has 23 entries
> so I think trying to access error 0x17 would be bad.
> 

Good catch, it should be >=.


>> +        return NULL;
> 
> It might be better to return 'No error' or the like unless you're going
> to be testing for NULL; that way you never end up with a Null getting
> out.
> 

Sure, I can do that.


>> +    }
>> +
>> +    return sev_fw_errlist[code];
>> +}
>> +
>>   static void
>>   qsev_guest_finalize(Object *obj)
>>   {
>> @@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
>>       }
>>   };
>>   
>> +static QSevGuestInfo *
>> +lookup_sev_guest_info(const char *id)
>> +{
>> +    Object *obj;
>> +    QSevGuestInfo *info;
>> +
>> +    obj = object_resolve_path_component(object_get_objects_root(), id);
>> +    if (!obj) {
>> +        return NULL;
>> +    }
>> +
>> +    info = (QSevGuestInfo *)
>> +            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
>> +    if (!info) {
>> +        return NULL;
>> +    }
>> +
>> +    return info;
>> +}
>> +
>> +void *
>> +sev_guest_init(const char *id)
>> +{
>> +    SEVState *s;
>> +    char *devname;
>> +    int ret, fw_error;
>> +
>> +    s = g_malloc0(sizeof(SEVState));
> 
> g_new0 is easier.


Sure, I can switch to using g_new0.


> 
>> +    if (!s) {
>> +        return NULL;
>> +    }
> 
> and allocation aborts rather than returning NULL (unless you use the
> _try_ version of g_new)


Agreed, I will abort on allocation failure.


> 
>> +
>> +    s->sev_info = lookup_sev_guest_info(id);
>> +    if (!s->sev_info) {
>> +        error_report("%s: '%s' is not a valid '%s' object",
>> +                     __func__, id, TYPE_QSEV_GUEST_INFO);
>> +        goto err;
>> +    }
>> +
>> +    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
>> +    sev_fd = open(devname, O_RDWR);
>> +    if (sev_fd < 0) {
>> +        error_report("%s: Failed to open %s '%s'", __func__,
>> +                     devname, strerror(errno));
>> +        goto err;
>> +    }
>> +    g_free(devname);
>> +
>> +    trace_kvm_sev_init();
>> +    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
>> +    if (ret) {
>> +        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
>> +                     __func__, ret, fw_error, fw_error_to_str(fw_error));
>> +        goto err;
>> +    }
>> +
>> +    return s;
>> +err:
>> +    g_free(s);
>> +    return NULL;
>> +}
>> +
>>   static void
>>   sev_register_types(void)
>>   {
>> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
>> index f89ba5578dc1..ea487e5a5913 100644
>> --- a/accel/kvm/trace-events
>> +++ b/accel/kvm/trace-events
>> @@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
>>   kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
>>   kvm_irqchip_release_virq(int virq) "virq %d"
>>   
>> +# sev.c
>> +kvm_sev_init(void) ""
>> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
>> index d2621a9d1100..6aec25bc05e5 100644
>> --- a/include/sysemu/sev.h
>> +++ b/include/sysemu/sev.h
>> @@ -14,6 +14,8 @@
>>   #ifndef QEMU_SEV_H
>>   #define QEMU_SEV_H
>>   
>> +#include <linux/kvm.h>
>> +
>>   #include "qom/object.h"
>>   #include "qapi/error.h"
>>   #include "sysemu/kvm.h"
>> @@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
>>       ObjectClass parent_class;
>>   };
>>   
>> +struct SEVState {
>> +    QSevGuestInfo *sev_info;
>> +};
>> +
>> +typedef struct SEVState SEVState;
>> +
>> +void *sev_guest_init(const char *id);
>> +
>>   #endif
>>   
>> -- 
>> 2.9.5
>>
> 
> Dave
> 
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 

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

* Re: [Qemu-devel] [PATCH v6 10/23] sev: add command to initialize the memory encryption context
@ 2018-02-01 15:33       ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-01 15:33 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange



On 02/01/2018 06:13 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> When memory encryption is enabled, KVM_SEV_INIT command is used to
>> initialize the platform. The command loads the SEV related persistent
>> data from non-volatile storage and initializes the platform context.
>> This command should be first issued before invoking any other guest
>> commands provided by the SEV firmware.
> 
> Some minor comments rather than full review.
> 
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>   accel/kvm/kvm-all.c    |  15 ++++++
>>   accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
>>   accel/kvm/trace-events |   2 +
>>   include/sysemu/sev.h   |  10 ++++
>>   4 files changed, 151 insertions(+)
>>
>> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
>> index f290f487a573..a9b16846675e 100644
>> --- a/accel/kvm/kvm-all.c
>> +++ b/accel/kvm/kvm-all.c
>> @@ -38,6 +38,7 @@
>>   #include "qemu/event_notifier.h"
>>   #include "trace.h"
>>   #include "hw/irq.h"
>> +#include "sysemu/sev.h"
>>   
>>   #include "hw/boards.h"
>>   
>> @@ -103,6 +104,9 @@ struct KVMState
>>   #endif
>>       KVMMemoryListener memory_listener;
>>       QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
>> +
>> +    /* memory encryption */
>> +    void *memcrypt_handle;
>>   };
>>   
>>   KVMState *kvm_state;
>> @@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
>>   
>>       kvm_state = s;
>>   
>> +    /*
>> +     * if memory encryption object is specified then initialize the memory
>> +     * encryption context.
>> +     * */
> 
> Style: should be */


Ah noted, I will fix this.


> 
>> +    if (ms->memory_encryption) {
>> +        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
>> +        if (!kvm_state->memcrypt_handle) {
>> +            goto err;
>> +        }
>> +    }
>> +
>>       ret = kvm_arch_init(ms, s);
>>       if (ret < 0) {
>>           goto err;
>> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
>> index e93fdfeb0c8f..be1791e510b3 100644
>> --- a/accel/kvm/sev.c
>> +++ b/accel/kvm/sev.c
>> @@ -18,10 +18,72 @@
>>   #include "sysemu/kvm.h"
>>   #include "sysemu/sev.h"
>>   #include "sysemu/sysemu.h"
>> +#include "trace.h"
>>   
>>   #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
>>   #define DEFAULT_SEV_DEVICE      "/dev/sev"
>>   
>> +static int sev_fd;
>> +
>> +#define SEV_FW_MAX_ERROR      0x17
>> +
>> +static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
> 
> Perhaps:
>     static const char *sev_few_errlist[] = {
> ?
> 

Sure, we can make it const, i will take care of this in next rev.


>> +    "",
>> +    "Platform state is invalid",
>> +    "Guest state is invalid",
>> +    "Platform configuration is invalid",
>> +    "Buffer too small",
>> +    "Platform is already owned",
>> +    "Certificate is invalid",
>> +    "Policy is not allowed",
>> +    "Guest is not active",
>> +    "Invalid address",
>> +    "Bad signature",
>> +    "Bad measurement",
>> +    "Asid is already owned",
>> +    "Invalid ASID",
>> +    "WBINVD is required",
>> +    "DF_FLUSH is required",
>> +    "Guest handle is invalid",
>> +    "Invalid command",
>> +    "Guest is active",
>> +    "Hardware error",
>> +    "Hardware unsafe",
>> +    "Feature not supported",
>> +    "Invalid parameter"
>> +};
>> +
>> +static int
>> +sev_ioctl(int cmd, void *data, int *error)
>> +{
>> +    int r;
>> +    struct kvm_sev_cmd input;
>> +
>> +    memset(&input, 0x0, sizeof(input));
>> +
>> +    input.id = cmd;
>> +    input.sev_fd = sev_fd;
>> +    input.data = (__u64)data;
>> +
>> +    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
>> +
>> +    if (error) {
>> +        *error = input.error;
>> +    }
>> +
>> +    return r;
>> +}
>> +
>> +static char *
>> +fw_error_to_str(int code)
>> +{
>> +    if (code > SEV_FW_MAX_ERROR) {
> 
> I'm trying to convince myself whether that should be >= and whether the
> maximum error is really 0x16 ?  Your list up there has 23 entries
> so I think trying to access error 0x17 would be bad.
> 

Good catch, it should be >=.


>> +        return NULL;
> 
> It might be better to return 'No error' or the like unless you're going
> to be testing for NULL; that way you never end up with a Null getting
> out.
> 

Sure, I can do that.


>> +    }
>> +
>> +    return sev_fw_errlist[code];
>> +}
>> +
>>   static void
>>   qsev_guest_finalize(Object *obj)
>>   {
>> @@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
>>       }
>>   };
>>   
>> +static QSevGuestInfo *
>> +lookup_sev_guest_info(const char *id)
>> +{
>> +    Object *obj;
>> +    QSevGuestInfo *info;
>> +
>> +    obj = object_resolve_path_component(object_get_objects_root(), id);
>> +    if (!obj) {
>> +        return NULL;
>> +    }
>> +
>> +    info = (QSevGuestInfo *)
>> +            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
>> +    if (!info) {
>> +        return NULL;
>> +    }
>> +
>> +    return info;
>> +}
>> +
>> +void *
>> +sev_guest_init(const char *id)
>> +{
>> +    SEVState *s;
>> +    char *devname;
>> +    int ret, fw_error;
>> +
>> +    s = g_malloc0(sizeof(SEVState));
> 
> g_new0 is easier.


Sure, I can switch to using g_new0.


> 
>> +    if (!s) {
>> +        return NULL;
>> +    }
> 
> and allocation aborts rather than returning NULL (unless you use the
> _try_ version of g_new)


Agreed, I will abort on allocation failure.


> 
>> +
>> +    s->sev_info = lookup_sev_guest_info(id);
>> +    if (!s->sev_info) {
>> +        error_report("%s: '%s' is not a valid '%s' object",
>> +                     __func__, id, TYPE_QSEV_GUEST_INFO);
>> +        goto err;
>> +    }
>> +
>> +    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
>> +    sev_fd = open(devname, O_RDWR);
>> +    if (sev_fd < 0) {
>> +        error_report("%s: Failed to open %s '%s'", __func__,
>> +                     devname, strerror(errno));
>> +        goto err;
>> +    }
>> +    g_free(devname);
>> +
>> +    trace_kvm_sev_init();
>> +    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
>> +    if (ret) {
>> +        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
>> +                     __func__, ret, fw_error, fw_error_to_str(fw_error));
>> +        goto err;
>> +    }
>> +
>> +    return s;
>> +err:
>> +    g_free(s);
>> +    return NULL;
>> +}
>> +
>>   static void
>>   sev_register_types(void)
>>   {
>> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
>> index f89ba5578dc1..ea487e5a5913 100644
>> --- a/accel/kvm/trace-events
>> +++ b/accel/kvm/trace-events
>> @@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
>>   kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
>>   kvm_irqchip_release_virq(int virq) "virq %d"
>>   
>> +# sev.c
>> +kvm_sev_init(void) ""
>> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
>> index d2621a9d1100..6aec25bc05e5 100644
>> --- a/include/sysemu/sev.h
>> +++ b/include/sysemu/sev.h
>> @@ -14,6 +14,8 @@
>>   #ifndef QEMU_SEV_H
>>   #define QEMU_SEV_H
>>   
>> +#include <linux/kvm.h>
>> +
>>   #include "qom/object.h"
>>   #include "qapi/error.h"
>>   #include "sysemu/kvm.h"
>> @@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
>>       ObjectClass parent_class;
>>   };
>>   
>> +struct SEVState {
>> +    QSevGuestInfo *sev_info;
>> +};
>> +
>> +typedef struct SEVState SEVState;
>> +
>> +void *sev_guest_init(const char *id);
>> +
>>   #endif
>>   
>> -- 
>> 2.9.5
>>
> 
> Dave
> 
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 

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

* Re: [PATCH v6 10/23] sev: add command to initialize the memory encryption context
  2018-02-01 15:33       ` [Qemu-devel] " Brijesh Singh
@ 2018-02-01 15:46         ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 15:46 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 02/01/2018 06:13 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > When memory encryption is enabled, KVM_SEV_INIT command is used to
> > > initialize the platform. The command loads the SEV related persistent
> > > data from non-volatile storage and initializes the platform context.
> > > This command should be first issued before invoking any other guest
> > > commands provided by the SEV firmware.
> > 
> > Some minor comments rather than full review.
> > 
> > > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> > > ---
> > >   accel/kvm/kvm-all.c    |  15 ++++++
> > >   accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
> > >   accel/kvm/trace-events |   2 +
> > >   include/sysemu/sev.h   |  10 ++++
> > >   4 files changed, 151 insertions(+)
> > > 
> > > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> > > index f290f487a573..a9b16846675e 100644
> > > --- a/accel/kvm/kvm-all.c
> > > +++ b/accel/kvm/kvm-all.c
> > > @@ -38,6 +38,7 @@
> > >   #include "qemu/event_notifier.h"
> > >   #include "trace.h"
> > >   #include "hw/irq.h"
> > > +#include "sysemu/sev.h"
> > >   #include "hw/boards.h"
> > > @@ -103,6 +104,9 @@ struct KVMState
> > >   #endif
> > >       KVMMemoryListener memory_listener;
> > >       QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
> > > +
> > > +    /* memory encryption */
> > > +    void *memcrypt_handle;
> > >   };
> > >   KVMState *kvm_state;
> > > @@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
> > >       kvm_state = s;
> > > +    /*
> > > +     * if memory encryption object is specified then initialize the memory
> > > +     * encryption context.
> > > +     * */
> > 
> > Style: should be */
> 
> 
> Ah noted, I will fix this.
> 
> 
> > 
> > > +    if (ms->memory_encryption) {
> > > +        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
> > > +        if (!kvm_state->memcrypt_handle) {
> > > +            goto err;
> > > +        }
> > > +    }
> > > +
> > >       ret = kvm_arch_init(ms, s);
> > >       if (ret < 0) {
> > >           goto err;
> > > diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> > > index e93fdfeb0c8f..be1791e510b3 100644
> > > --- a/accel/kvm/sev.c
> > > +++ b/accel/kvm/sev.c
> > > @@ -18,10 +18,72 @@
> > >   #include "sysemu/kvm.h"
> > >   #include "sysemu/sev.h"
> > >   #include "sysemu/sysemu.h"
> > > +#include "trace.h"
> > >   #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
> > >   #define DEFAULT_SEV_DEVICE      "/dev/sev"
> > > +static int sev_fd;
> > > +
> > > +#define SEV_FW_MAX_ERROR      0x17
> > > +
> > > +static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
> > 
> > Perhaps:
> >     static const char *sev_few_errlist[] = {
> > ?
> > 
> 
> Sure, we can make it const, i will take care of this in next rev.
> 
> 
> > > +    "",
> > > +    "Platform state is invalid",
> > > +    "Guest state is invalid",
> > > +    "Platform configuration is invalid",
> > > +    "Buffer too small",
> > > +    "Platform is already owned",
> > > +    "Certificate is invalid",
> > > +    "Policy is not allowed",
> > > +    "Guest is not active",
> > > +    "Invalid address",
> > > +    "Bad signature",
> > > +    "Bad measurement",
> > > +    "Asid is already owned",
> > > +    "Invalid ASID",
> > > +    "WBINVD is required",
> > > +    "DF_FLUSH is required",
> > > +    "Guest handle is invalid",
> > > +    "Invalid command",
> > > +    "Guest is active",
> > > +    "Hardware error",
> > > +    "Hardware unsafe",
> > > +    "Feature not supported",
> > > +    "Invalid parameter"
> > > +};
> > > +
> > > +static int
> > > +sev_ioctl(int cmd, void *data, int *error)
> > > +{
> > > +    int r;
> > > +    struct kvm_sev_cmd input;
> > > +
> > > +    memset(&input, 0x0, sizeof(input));
> > > +
> > > +    input.id = cmd;
> > > +    input.sev_fd = sev_fd;
> > > +    input.data = (__u64)data;
> > > +
> > > +    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
> > > +
> > > +    if (error) {
> > > +        *error = input.error;
> > > +    }
> > > +
> > > +    return r;
> > > +}
> > > +
> > > +static char *
> > > +fw_error_to_str(int code)
> > > +{
> > > +    if (code > SEV_FW_MAX_ERROR) {
> > 
> > I'm trying to convince myself whether that should be >= and whether the
> > maximum error is really 0x16 ?  Your list up there has 23 entries
> > so I think trying to access error 0x17 would be bad.
> > 
> 
> Good catch, it should be >=.
> 
> 
> > > +        return NULL;
> > 
> > It might be better to return 'No error' or the like unless you're going
> > to be testing for NULL; that way you never end up with a Null getting
> > out.
> > 
> 
> Sure, I can do that.
> 
> 
> > > +    }
> > > +
> > > +    return sev_fw_errlist[code];
> > > +}
> > > +
> > >   static void
> > >   qsev_guest_finalize(Object *obj)
> > >   {
> > > @@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
> > >       }
> > >   };
> > > +static QSevGuestInfo *
> > > +lookup_sev_guest_info(const char *id)
> > > +{
> > > +    Object *obj;
> > > +    QSevGuestInfo *info;
> > > +
> > > +    obj = object_resolve_path_component(object_get_objects_root(), id);
> > > +    if (!obj) {
> > > +        return NULL;
> > > +    }
> > > +
> > > +    info = (QSevGuestInfo *)
> > > +            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
> > > +    if (!info) {
> > > +        return NULL;
> > > +    }
> > > +
> > > +    return info;
> > > +}
> > > +
> > > +void *
> > > +sev_guest_init(const char *id)
> > > +{
> > > +    SEVState *s;
> > > +    char *devname;
> > > +    int ret, fw_error;
> > > +
> > > +    s = g_malloc0(sizeof(SEVState));
> > 
> > g_new0 is easier.
> 
> 
> Sure, I can switch to using g_new0.
> 
> 
> > 
> > > +    if (!s) {
> > > +        return NULL;
> > > +    }
> > 
> > and allocation aborts rather than returning NULL (unless you use the
> > _try_ version of g_new)
> 
> 
> Agreed, I will abort on allocation failure.

No, I mean you don't need to, since g_new0 etc will abort themselves
on an allocation failure; there's no need to check.

Dave

> 
> > 
> > > +
> > > +    s->sev_info = lookup_sev_guest_info(id);
> > > +    if (!s->sev_info) {
> > > +        error_report("%s: '%s' is not a valid '%s' object",
> > > +                     __func__, id, TYPE_QSEV_GUEST_INFO);
> > > +        goto err;
> > > +    }
> > > +
> > > +    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
> > > +    sev_fd = open(devname, O_RDWR);
> > > +    if (sev_fd < 0) {
> > > +        error_report("%s: Failed to open %s '%s'", __func__,
> > > +                     devname, strerror(errno));
> > > +        goto err;
> > > +    }
> > > +    g_free(devname);
> > > +
> > > +    trace_kvm_sev_init();
> > > +    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
> > > +    if (ret) {
> > > +        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
> > > +                     __func__, ret, fw_error, fw_error_to_str(fw_error));
> > > +        goto err;
> > > +    }
> > > +
> > > +    return s;
> > > +err:
> > > +    g_free(s);
> > > +    return NULL;
> > > +}
> > > +
> > >   static void
> > >   sev_register_types(void)
> > >   {
> > > diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> > > index f89ba5578dc1..ea487e5a5913 100644
> > > --- a/accel/kvm/trace-events
> > > +++ b/accel/kvm/trace-events
> > > @@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
> > >   kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
> > >   kvm_irqchip_release_virq(int virq) "virq %d"
> > > +# sev.c
> > > +kvm_sev_init(void) ""
> > > diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> > > index d2621a9d1100..6aec25bc05e5 100644
> > > --- a/include/sysemu/sev.h
> > > +++ b/include/sysemu/sev.h
> > > @@ -14,6 +14,8 @@
> > >   #ifndef QEMU_SEV_H
> > >   #define QEMU_SEV_H
> > > +#include <linux/kvm.h>
> > > +
> > >   #include "qom/object.h"
> > >   #include "qapi/error.h"
> > >   #include "sysemu/kvm.h"
> > > @@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
> > >       ObjectClass parent_class;
> > >   };
> > > +struct SEVState {
> > > +    QSevGuestInfo *sev_info;
> > > +};
> > > +
> > > +typedef struct SEVState SEVState;
> > > +
> > > +void *sev_guest_init(const char *id);
> > > +
> > >   #endif
> > > -- 
> > > 2.9.5
> > > 
> > 
> > Dave
> > 
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> > 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 10/23] sev: add command to initialize the memory encryption context
@ 2018-02-01 15:46         ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 15:46 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 02/01/2018 06:13 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > When memory encryption is enabled, KVM_SEV_INIT command is used to
> > > initialize the platform. The command loads the SEV related persistent
> > > data from non-volatile storage and initializes the platform context.
> > > This command should be first issued before invoking any other guest
> > > commands provided by the SEV firmware.
> > 
> > Some minor comments rather than full review.
> > 
> > > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> > > ---
> > >   accel/kvm/kvm-all.c    |  15 ++++++
> > >   accel/kvm/sev.c        | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
> > >   accel/kvm/trace-events |   2 +
> > >   include/sysemu/sev.h   |  10 ++++
> > >   4 files changed, 151 insertions(+)
> > > 
> > > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> > > index f290f487a573..a9b16846675e 100644
> > > --- a/accel/kvm/kvm-all.c
> > > +++ b/accel/kvm/kvm-all.c
> > > @@ -38,6 +38,7 @@
> > >   #include "qemu/event_notifier.h"
> > >   #include "trace.h"
> > >   #include "hw/irq.h"
> > > +#include "sysemu/sev.h"
> > >   #include "hw/boards.h"
> > > @@ -103,6 +104,9 @@ struct KVMState
> > >   #endif
> > >       KVMMemoryListener memory_listener;
> > >       QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;
> > > +
> > > +    /* memory encryption */
> > > +    void *memcrypt_handle;
> > >   };
> > >   KVMState *kvm_state;
> > > @@ -1632,6 +1636,17 @@ static int kvm_init(MachineState *ms)
> > >       kvm_state = s;
> > > +    /*
> > > +     * if memory encryption object is specified then initialize the memory
> > > +     * encryption context.
> > > +     * */
> > 
> > Style: should be */
> 
> 
> Ah noted, I will fix this.
> 
> 
> > 
> > > +    if (ms->memory_encryption) {
> > > +        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
> > > +        if (!kvm_state->memcrypt_handle) {
> > > +            goto err;
> > > +        }
> > > +    }
> > > +
> > >       ret = kvm_arch_init(ms, s);
> > >       if (ret < 0) {
> > >           goto err;
> > > diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> > > index e93fdfeb0c8f..be1791e510b3 100644
> > > --- a/accel/kvm/sev.c
> > > +++ b/accel/kvm/sev.c
> > > @@ -18,10 +18,72 @@
> > >   #include "sysemu/kvm.h"
> > >   #include "sysemu/sev.h"
> > >   #include "sysemu/sysemu.h"
> > > +#include "trace.h"
> > >   #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
> > >   #define DEFAULT_SEV_DEVICE      "/dev/sev"
> > > +static int sev_fd;
> > > +
> > > +#define SEV_FW_MAX_ERROR      0x17
> > > +
> > > +static char sev_fw_errlist[SEV_FW_MAX_ERROR][100] = {
> > 
> > Perhaps:
> >     static const char *sev_few_errlist[] = {
> > ?
> > 
> 
> Sure, we can make it const, i will take care of this in next rev.
> 
> 
> > > +    "",
> > > +    "Platform state is invalid",
> > > +    "Guest state is invalid",
> > > +    "Platform configuration is invalid",
> > > +    "Buffer too small",
> > > +    "Platform is already owned",
> > > +    "Certificate is invalid",
> > > +    "Policy is not allowed",
> > > +    "Guest is not active",
> > > +    "Invalid address",
> > > +    "Bad signature",
> > > +    "Bad measurement",
> > > +    "Asid is already owned",
> > > +    "Invalid ASID",
> > > +    "WBINVD is required",
> > > +    "DF_FLUSH is required",
> > > +    "Guest handle is invalid",
> > > +    "Invalid command",
> > > +    "Guest is active",
> > > +    "Hardware error",
> > > +    "Hardware unsafe",
> > > +    "Feature not supported",
> > > +    "Invalid parameter"
> > > +};
> > > +
> > > +static int
> > > +sev_ioctl(int cmd, void *data, int *error)
> > > +{
> > > +    int r;
> > > +    struct kvm_sev_cmd input;
> > > +
> > > +    memset(&input, 0x0, sizeof(input));
> > > +
> > > +    input.id = cmd;
> > > +    input.sev_fd = sev_fd;
> > > +    input.data = (__u64)data;
> > > +
> > > +    r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input);
> > > +
> > > +    if (error) {
> > > +        *error = input.error;
> > > +    }
> > > +
> > > +    return r;
> > > +}
> > > +
> > > +static char *
> > > +fw_error_to_str(int code)
> > > +{
> > > +    if (code > SEV_FW_MAX_ERROR) {
> > 
> > I'm trying to convince myself whether that should be >= and whether the
> > maximum error is really 0x16 ?  Your list up there has 23 entries
> > so I think trying to access error 0x17 would be bad.
> > 
> 
> Good catch, it should be >=.
> 
> 
> > > +        return NULL;
> > 
> > It might be better to return 'No error' or the like unless you're going
> > to be testing for NULL; that way you never end up with a Null getting
> > out.
> > 
> 
> Sure, I can do that.
> 
> 
> > > +    }
> > > +
> > > +    return sev_fw_errlist[code];
> > > +}
> > > +
> > >   static void
> > >   qsev_guest_finalize(Object *obj)
> > >   {
> > > @@ -170,6 +232,68 @@ static const TypeInfo qsev_guest_info = {
> > >       }
> > >   };
> > > +static QSevGuestInfo *
> > > +lookup_sev_guest_info(const char *id)
> > > +{
> > > +    Object *obj;
> > > +    QSevGuestInfo *info;
> > > +
> > > +    obj = object_resolve_path_component(object_get_objects_root(), id);
> > > +    if (!obj) {
> > > +        return NULL;
> > > +    }
> > > +
> > > +    info = (QSevGuestInfo *)
> > > +            object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO);
> > > +    if (!info) {
> > > +        return NULL;
> > > +    }
> > > +
> > > +    return info;
> > > +}
> > > +
> > > +void *
> > > +sev_guest_init(const char *id)
> > > +{
> > > +    SEVState *s;
> > > +    char *devname;
> > > +    int ret, fw_error;
> > > +
> > > +    s = g_malloc0(sizeof(SEVState));
> > 
> > g_new0 is easier.
> 
> 
> Sure, I can switch to using g_new0.
> 
> 
> > 
> > > +    if (!s) {
> > > +        return NULL;
> > > +    }
> > 
> > and allocation aborts rather than returning NULL (unless you use the
> > _try_ version of g_new)
> 
> 
> Agreed, I will abort on allocation failure.

No, I mean you don't need to, since g_new0 etc will abort themselves
on an allocation failure; there's no need to check.

Dave

> 
> > 
> > > +
> > > +    s->sev_info = lookup_sev_guest_info(id);
> > > +    if (!s->sev_info) {
> > > +        error_report("%s: '%s' is not a valid '%s' object",
> > > +                     __func__, id, TYPE_QSEV_GUEST_INFO);
> > > +        goto err;
> > > +    }
> > > +
> > > +    devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL);
> > > +    sev_fd = open(devname, O_RDWR);
> > > +    if (sev_fd < 0) {
> > > +        error_report("%s: Failed to open %s '%s'", __func__,
> > > +                     devname, strerror(errno));
> > > +        goto err;
> > > +    }
> > > +    g_free(devname);
> > > +
> > > +    trace_kvm_sev_init();
> > > +    ret = sev_ioctl(KVM_SEV_INIT, NULL, &fw_error);
> > > +    if (ret) {
> > > +        error_report("%s: failed to initialize ret=%d fw_error=%d '%s'",
> > > +                     __func__, ret, fw_error, fw_error_to_str(fw_error));
> > > +        goto err;
> > > +    }
> > > +
> > > +    return s;
> > > +err:
> > > +    g_free(s);
> > > +    return NULL;
> > > +}
> > > +
> > >   static void
> > >   sev_register_types(void)
> > >   {
> > > diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> > > index f89ba5578dc1..ea487e5a5913 100644
> > > --- a/accel/kvm/trace-events
> > > +++ b/accel/kvm/trace-events
> > > @@ -13,3 +13,5 @@ kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d vi
> > >   kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
> > >   kvm_irqchip_release_virq(int virq) "virq %d"
> > > +# sev.c
> > > +kvm_sev_init(void) ""
> > > diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> > > index d2621a9d1100..6aec25bc05e5 100644
> > > --- a/include/sysemu/sev.h
> > > +++ b/include/sysemu/sev.h
> > > @@ -14,6 +14,8 @@
> > >   #ifndef QEMU_SEV_H
> > >   #define QEMU_SEV_H
> > > +#include <linux/kvm.h>
> > > +
> > >   #include "qom/object.h"
> > >   #include "qapi/error.h"
> > >   #include "sysemu/kvm.h"
> > > @@ -49,5 +51,13 @@ struct QSevGuestInfoClass {
> > >       ObjectClass parent_class;
> > >   };
> > > +struct SEVState {
> > > +    QSevGuestInfo *sev_info;
> > > +};
> > > +
> > > +typedef struct SEVState SEVState;
> > > +
> > > +void *sev_guest_init(const char *id);
> > > +
> > >   #endif
> > > -- 
> > > 2.9.5
> > > 
> > 
> > Dave
> > 
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> > 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-01-30 22:13       ` [Qemu-devel] " Brijesh Singh
@ 2018-02-01 17:27         ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 17:27 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> During machine creation we encrypted the guest bios image, the
> >> LAUNCH_MEASURE command can be used to retrieve the measurement of
> >> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
> >> libvirt can grab the measurement value as soon as we are done with
> >> creating the encrypted machine.
> > Can you ust clarify what happens if the libvirt has disconnected and
> > reconnected to qemu and so didn't see the event?  Can the reconnecting
> > libvirt query it and find out it's ready/not ready yet?
> 
> Dave,
> 
> I have not looked into details between libvirt and qemu interaction to
> comment how and when the events will be delivered. Recently, one of my
> colleague was implementing libvirt interface for the SEV guest and ran
> into somewhat a similar challenge and posted question on libvirt mailing
> list [1].
> 
> In previous discussion on qemu mailing list, we agreed to implement SEV
> MEASUREMENT event which can be seen by libvirt. That's what this patch
> is doing.
> 
> But during the libvirt implementation it seems that qemu monitor
> silently drops all the events before it get the first qmp_capabilities
> command. At a quick glance it seems on reconnect, libvirt issues
> qmp_capabilities command and any event issued before the
> qmp_capabilities command will never to delivered to libvirt. we are
> looking for  help from libvirt/qemu monitor experts on how we solve this
> problem. Our goal is to provide the measurement to libvirt before
> libvirt issues "continue" command. Since event can't be seen by libvirt
> before it resumes the guest hence I was wondering if we should we should
> drop the SEV measurement event and consider adding a new QMP command to
> query the SEV measurement.

Yep, I'll leave it to the libvirt contacts for the best way they'd like
to see that, as Eric says there's nothing wrong with having both the
command and event if useful.  Also keep in mind coping with a guest that
crashes early or that measurement never arrives.

Dave

> [1] https://www.redhat.com/archives/libvir-list/2018-January/msg00602.html
> 
> > Dave
> >
> >> Cc: Daniel P. Berrange <berrange@redhat.com>
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Cc: kvm@vger.kernel.org
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
> >>  accel/kvm/trace-events |  1 +
> >>  include/sysemu/sev.h   |  1 +
> >>  3 files changed, 60 insertions(+)
> >>
> >> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> >> index 1f757df725df..b78cf3144b1d 100644
> >> --- a/accel/kvm/sev.c
> >> +++ b/accel/kvm/sev.c
> >> @@ -19,11 +19,13 @@
> >>  #include "sysemu/sev.h"
> >>  #include "sysemu/sysemu.h"
> >>  #include "trace.h"
> >> +#include "qapi-event.h"
> >>  
> >>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
> >>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
> >>  
> >>  static int sev_fd;
> >> +static SEVState *sev_state;
> >>  
> >>  #define SEV_FW_MAX_ERROR      0x17
> >>  
> >> @@ -418,6 +420,59 @@ err:
> >>      return ret;
> >>  }
> >>  
> >> +static void
> >> +sev_launch_get_measure(Notifier *notifier, void *unused)
> >> +{
> >> +    int ret, error;
> >> +    guchar *data;
> >> +    SEVState *s = sev_state;
> >> +    struct kvm_sev_launch_measure *measurement;
> >> +
> >> +    measurement = g_malloc0(sizeof(*measurement));
> >> +    if (!measurement) {
> >> +        return;
> >> +    }
> >> +
> >> +    /* query the measurement blob length */
> >> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> >> +    if (!measurement->len) {
> >> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> >> +                     __func__, ret, error, fw_error_to_str(errno));
> >> +        goto free_measurement;
> >> +    }
> >> +
> >> +    data = g_malloc(measurement->len);
> >> +    if (s->measurement) {
> >> +        goto free_data;
> >> +    }
> >> +
> >> +    measurement->uaddr = (unsigned long)data;
> >> +
> >> +    /* get the measurement blob */
> >> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> >> +    if (ret) {
> >> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> >> +                     __func__, ret, error, fw_error_to_str(errno));
> >> +        goto free_data;
> >> +    }
> >> +
> >> +    sev_set_guest_state(SEV_STATE_SECRET);
> >> +
> >> +    /* encode the measurement value and emit the event */
> >> +    s->measurement = g_base64_encode(data, measurement->len);
> >> +    trace_kvm_sev_launch_measurement(s->measurement);
> >> +    qapi_event_send_sev_measurement(s->measurement, &error_abort);
> >> +
> >> +free_data:
> >> +    g_free(data);
> >> +free_measurement:
> >> +    g_free(measurement);
> >> +}
> >> +
> >> +static Notifier sev_machine_done_notify = {
> >> +    .notify = sev_launch_get_measure,
> >> +};
> >> +
> >>  void *
> >>  sev_guest_init(const char *id)
> >>  {
> >> @@ -461,6 +516,9 @@ sev_guest_init(const char *id)
> >>      }
> >>  
> >>      ram_block_notifier_add(&sev_ram_notifier);
> >> +    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
> >> +
> >> +    sev_state = s;
> >>  
> >>      return s;
> >>  err:
> >> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> >> index c55546f36a25..51df5113ad07 100644
> >> --- a/accel/kvm/trace-events
> >> +++ b/accel/kvm/trace-events
> >> @@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
> >>  kvm_sev_change_state(char *old, char *new) "%s -> %s"
> >>  kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
> >>  kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
> >> +kvm_sev_launch_measurement(const char *value) "data %s"
> >> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> >> index 839800efdbbf..572120c865ea 100644
> >> --- a/include/sysemu/sev.h
> >> +++ b/include/sysemu/sev.h
> >> @@ -63,6 +63,7 @@ typedef enum {
> >>  
> >>  struct SEVState {
> >>      QSevGuestInfo *sev_info;
> >> +    gchar *measurement;
> >>  };
> >>  
> >>  typedef struct SEVState SEVState;
> >> -- 
> >> 2.9.5
> >>
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
@ 2018-02-01 17:27         ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 17:27 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> During machine creation we encrypted the guest bios image, the
> >> LAUNCH_MEASURE command can be used to retrieve the measurement of
> >> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
> >> libvirt can grab the measurement value as soon as we are done with
> >> creating the encrypted machine.
> > Can you ust clarify what happens if the libvirt has disconnected and
> > reconnected to qemu and so didn't see the event?  Can the reconnecting
> > libvirt query it and find out it's ready/not ready yet?
> 
> Dave,
> 
> I have not looked into details between libvirt and qemu interaction to
> comment how and when the events will be delivered. Recently, one of my
> colleague was implementing libvirt interface for the SEV guest and ran
> into somewhat a similar challenge and posted question on libvirt mailing
> list [1].
> 
> In previous discussion on qemu mailing list, we agreed to implement SEV
> MEASUREMENT event which can be seen by libvirt. That's what this patch
> is doing.
> 
> But during the libvirt implementation it seems that qemu monitor
> silently drops all the events before it get the first qmp_capabilities
> command. At a quick glance it seems on reconnect, libvirt issues
> qmp_capabilities command and any event issued before the
> qmp_capabilities command will never to delivered to libvirt. we are
> looking for  help from libvirt/qemu monitor experts on how we solve this
> problem. Our goal is to provide the measurement to libvirt before
> libvirt issues "continue" command. Since event can't be seen by libvirt
> before it resumes the guest hence I was wondering if we should we should
> drop the SEV measurement event and consider adding a new QMP command to
> query the SEV measurement.

Yep, I'll leave it to the libvirt contacts for the best way they'd like
to see that, as Eric says there's nothing wrong with having both the
command and event if useful.  Also keep in mind coping with a guest that
crashes early or that measurement never arrives.

Dave

> [1] https://www.redhat.com/archives/libvir-list/2018-January/msg00602.html
> 
> > Dave
> >
> >> Cc: Daniel P. Berrange <berrange@redhat.com>
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Cc: kvm@vger.kernel.org
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  accel/kvm/sev.c        | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
> >>  accel/kvm/trace-events |  1 +
> >>  include/sysemu/sev.h   |  1 +
> >>  3 files changed, 60 insertions(+)
> >>
> >> diff --git a/accel/kvm/sev.c b/accel/kvm/sev.c
> >> index 1f757df725df..b78cf3144b1d 100644
> >> --- a/accel/kvm/sev.c
> >> +++ b/accel/kvm/sev.c
> >> @@ -19,11 +19,13 @@
> >>  #include "sysemu/sev.h"
> >>  #include "sysemu/sysemu.h"
> >>  #include "trace.h"
> >> +#include "qapi-event.h"
> >>  
> >>  #define DEFAULT_GUEST_POLICY    0x1 /* disable debug */
> >>  #define DEFAULT_SEV_DEVICE      "/dev/sev"
> >>  
> >>  static int sev_fd;
> >> +static SEVState *sev_state;
> >>  
> >>  #define SEV_FW_MAX_ERROR      0x17
> >>  
> >> @@ -418,6 +420,59 @@ err:
> >>      return ret;
> >>  }
> >>  
> >> +static void
> >> +sev_launch_get_measure(Notifier *notifier, void *unused)
> >> +{
> >> +    int ret, error;
> >> +    guchar *data;
> >> +    SEVState *s = sev_state;
> >> +    struct kvm_sev_launch_measure *measurement;
> >> +
> >> +    measurement = g_malloc0(sizeof(*measurement));
> >> +    if (!measurement) {
> >> +        return;
> >> +    }
> >> +
> >> +    /* query the measurement blob length */
> >> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> >> +    if (!measurement->len) {
> >> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> >> +                     __func__, ret, error, fw_error_to_str(errno));
> >> +        goto free_measurement;
> >> +    }
> >> +
> >> +    data = g_malloc(measurement->len);
> >> +    if (s->measurement) {
> >> +        goto free_data;
> >> +    }
> >> +
> >> +    measurement->uaddr = (unsigned long)data;
> >> +
> >> +    /* get the measurement blob */
> >> +    ret = sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measurement, &error);
> >> +    if (ret) {
> >> +        error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'",
> >> +                     __func__, ret, error, fw_error_to_str(errno));
> >> +        goto free_data;
> >> +    }
> >> +
> >> +    sev_set_guest_state(SEV_STATE_SECRET);
> >> +
> >> +    /* encode the measurement value and emit the event */
> >> +    s->measurement = g_base64_encode(data, measurement->len);
> >> +    trace_kvm_sev_launch_measurement(s->measurement);
> >> +    qapi_event_send_sev_measurement(s->measurement, &error_abort);
> >> +
> >> +free_data:
> >> +    g_free(data);
> >> +free_measurement:
> >> +    g_free(measurement);
> >> +}
> >> +
> >> +static Notifier sev_machine_done_notify = {
> >> +    .notify = sev_launch_get_measure,
> >> +};
> >> +
> >>  void *
> >>  sev_guest_init(const char *id)
> >>  {
> >> @@ -461,6 +516,9 @@ sev_guest_init(const char *id)
> >>      }
> >>  
> >>      ram_block_notifier_add(&sev_ram_notifier);
> >> +    qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
> >> +
> >> +    sev_state = s;
> >>  
> >>      return s;
> >>  err:
> >> diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events
> >> index c55546f36a25..51df5113ad07 100644
> >> --- a/accel/kvm/trace-events
> >> +++ b/accel/kvm/trace-events
> >> @@ -20,3 +20,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"
> >>  kvm_sev_change_state(char *old, char *new) "%s -> %s"
> >>  kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
> >>  kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
> >> +kvm_sev_launch_measurement(const char *value) "data %s"
> >> diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h
> >> index 839800efdbbf..572120c865ea 100644
> >> --- a/include/sysemu/sev.h
> >> +++ b/include/sysemu/sev.h
> >> @@ -63,6 +63,7 @@ typedef enum {
> >>  
> >>  struct SEVState {
> >>      QSevGuestInfo *sev_info;
> >> +    gchar *measurement;
> >>  };
> >>  
> >>  typedef struct SEVState SEVState;
> >> -- 
> >> 2.9.5
> >>
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
@ 2018-02-01 17:58     ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 17:58 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Markus Armbruster

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> update 'info kvm' to display the memory encryption support.
> 
> (qemu) info kvm
> kvm support: enabled
> memory encryption: disabled

As Markus said, this should be split qmp/hmp; but something else to
think about is whether this is a boolean or needs to be an enum;  do
you have one version of encryption or are we going to need to flag up
versions or the features of the encryption?

Dave

> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  hmp.c            | 2 ++
>  qapi-schema.json | 5 ++++-
>  qmp.c            | 1 +
>  3 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/hmp.c b/hmp.c
> index 056bf70cf1e2..6ceb6b30af75 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
>      monitor_printf(mon, "kvm support: ");
>      if (info->present) {
>          monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
> +        monitor_printf(mon, "memory encryption: %s\n",
> +                       info->mem_encryption ? "enabled" : "disabled");
>      } else {
>          monitor_printf(mon, "not compiled\n");
>      }
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 5c06745c7927..2046c96669bf 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -314,9 +314,12 @@
>  #
>  # @present: true if KVM acceleration is built into this executable
>  #
> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
> +#
>  # Since: 0.14.0
>  ##
> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
> +            'mem-encryption' : 'bool'} }
>  
>  ##
>  # @query-kvm:
> diff --git a/qmp.c b/qmp.c
> index 52cfd2d81c0f..3a527bc8c39c 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
>  
>      info->enabled = kvm_enabled();
>      info->present = kvm_available();
> +    info->mem_encryption = kvm_memcrypt_enabled();
>  
>      return info;
>  }
> -- 
> 2.9.5
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
@ 2018-02-01 17:58     ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 17:58 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Markus Armbruster

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> update 'info kvm' to display the memory encryption support.
> 
> (qemu) info kvm
> kvm support: enabled
> memory encryption: disabled

As Markus said, this should be split qmp/hmp; but something else to
think about is whether this is a boolean or needs to be an enum;  do
you have one version of encryption or are we going to need to flag up
versions or the features of the encryption?

Dave

> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  hmp.c            | 2 ++
>  qapi-schema.json | 5 ++++-
>  qmp.c            | 1 +
>  3 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/hmp.c b/hmp.c
> index 056bf70cf1e2..6ceb6b30af75 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
>      monitor_printf(mon, "kvm support: ");
>      if (info->present) {
>          monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
> +        monitor_printf(mon, "memory encryption: %s\n",
> +                       info->mem_encryption ? "enabled" : "disabled");
>      } else {
>          monitor_printf(mon, "not compiled\n");
>      }
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 5c06745c7927..2046c96669bf 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -314,9 +314,12 @@
>  #
>  # @present: true if KVM acceleration is built into this executable
>  #
> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
> +#
>  # Since: 0.14.0
>  ##
> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
> +            'mem-encryption' : 'bool'} }
>  
>  ##
>  # @query-kvm:
> diff --git a/qmp.c b/qmp.c
> index 52cfd2d81c0f..3a527bc8c39c 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
>  
>      info->enabled = kvm_enabled();
>      info->present = kvm_available();
> +    info->mem_encryption = kvm_memcrypt_enabled();
>  
>      return info;
>  }
> -- 
> 2.9.5
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-02-01 17:58     ` [Qemu-devel] " Dr. David Alan Gilbert
@ 2018-02-01 19:55       ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-01 19:55 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Markus Armbruster



On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> update 'info kvm' to display the memory encryption support.
>>
>> (qemu) info kvm
>> kvm support: enabled
>> memory encryption: disabled
> As Markus said, this should be split qmp/hmp; but something else to
> think about is whether this is a boolean or needs to be an enum;  do
> you have one version of encryption or are we going to need to flag up
> versions or the features of the encryption?

In future I could see us providing encrypted state status when we
implement SEV-ES support, something like

(qemu) info kvm
kvm support: enabled
memory encryption: enabled
cpu register state: encrypted

but so far I do not see need to provide the version string. If user
wants to know the SEV version then it can open /dev/sev device to get
platform status and more.

> Dave
>
>> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>> Cc: Eric Blake <eblake@redhat.com>
>> Cc: Markus Armbruster <armbru@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  hmp.c            | 2 ++
>>  qapi-schema.json | 5 ++++-
>>  qmp.c            | 1 +
>>  3 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/hmp.c b/hmp.c
>> index 056bf70cf1e2..6ceb6b30af75 100644
>> --- a/hmp.c
>> +++ b/hmp.c
>> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
>>      monitor_printf(mon, "kvm support: ");
>>      if (info->present) {
>>          monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
>> +        monitor_printf(mon, "memory encryption: %s\n",
>> +                       info->mem_encryption ? "enabled" : "disabled");
>>      } else {
>>          monitor_printf(mon, "not compiled\n");
>>      }
>> diff --git a/qapi-schema.json b/qapi-schema.json
>> index 5c06745c7927..2046c96669bf 100644
>> --- a/qapi-schema.json
>> +++ b/qapi-schema.json
>> @@ -314,9 +314,12 @@
>>  #
>>  # @present: true if KVM acceleration is built into this executable
>>  #
>> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
>> +#
>>  # Since: 0.14.0
>>  ##
>> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
>> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
>> +            'mem-encryption' : 'bool'} }
>>  
>>  ##
>>  # @query-kvm:
>> diff --git a/qmp.c b/qmp.c
>> index 52cfd2d81c0f..3a527bc8c39c 100644
>> --- a/qmp.c
>> +++ b/qmp.c
>> @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
>>  
>>      info->enabled = kvm_enabled();
>>      info->present = kvm_available();
>> +    info->mem_encryption = kvm_memcrypt_enabled();
>>  
>>      return info;
>>  }
>> -- 
>> 2.9.5
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
@ 2018-02-01 19:55       ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-01 19:55 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Markus Armbruster



On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>> update 'info kvm' to display the memory encryption support.
>>
>> (qemu) info kvm
>> kvm support: enabled
>> memory encryption: disabled
> As Markus said, this should be split qmp/hmp; but something else to
> think about is whether this is a boolean or needs to be an enum;  do
> you have one version of encryption or are we going to need to flag up
> versions or the features of the encryption?

In future I could see us providing encrypted state status when we
implement SEV-ES support, something like

(qemu) info kvm
kvm support: enabled
memory encryption: enabled
cpu register state: encrypted

but so far I do not see need to provide the version string. If user
wants to know the SEV version then it can open /dev/sev device to get
platform status and more.

> Dave
>
>> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>> Cc: Eric Blake <eblake@redhat.com>
>> Cc: Markus Armbruster <armbru@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>>  hmp.c            | 2 ++
>>  qapi-schema.json | 5 ++++-
>>  qmp.c            | 1 +
>>  3 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/hmp.c b/hmp.c
>> index 056bf70cf1e2..6ceb6b30af75 100644
>> --- a/hmp.c
>> +++ b/hmp.c
>> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
>>      monitor_printf(mon, "kvm support: ");
>>      if (info->present) {
>>          monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
>> +        monitor_printf(mon, "memory encryption: %s\n",
>> +                       info->mem_encryption ? "enabled" : "disabled");
>>      } else {
>>          monitor_printf(mon, "not compiled\n");
>>      }
>> diff --git a/qapi-schema.json b/qapi-schema.json
>> index 5c06745c7927..2046c96669bf 100644
>> --- a/qapi-schema.json
>> +++ b/qapi-schema.json
>> @@ -314,9 +314,12 @@
>>  #
>>  # @present: true if KVM acceleration is built into this executable
>>  #
>> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
>> +#
>>  # Since: 0.14.0
>>  ##
>> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
>> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
>> +            'mem-encryption' : 'bool'} }
>>  
>>  ##
>>  # @query-kvm:
>> diff --git a/qmp.c b/qmp.c
>> index 52cfd2d81c0f..3a527bc8c39c 100644
>> --- a/qmp.c
>> +++ b/qmp.c
>> @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
>>  
>>      info->enabled = kvm_enabled();
>>      info->present = kvm_available();
>> +    info->mem_encryption = kvm_memcrypt_enabled();
>>  
>>      return info;
>>  }
>> -- 
>> 2.9.5
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-02-01 19:55       ` [Qemu-devel] " Brijesh Singh
@ 2018-02-01 20:04         ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 20:04 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Markus Armbruster

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> update 'info kvm' to display the memory encryption support.
> >>
> >> (qemu) info kvm
> >> kvm support: enabled
> >> memory encryption: disabled
> > As Markus said, this should be split qmp/hmp; but something else to
> > think about is whether this is a boolean or needs to be an enum;  do
> > you have one version of encryption or are we going to need to flag up
> > versions or the features of the encryption?
> 
> In future I could see us providing encrypted state status when we
> implement SEV-ES support, something like
> 
> (qemu) info kvm
> kvm support: enabled
> memory encryption: enabled
> cpu register state: encrypted
> 
> but so far I do not see need to provide the version string. If user
> wants to know the SEV version then it can open /dev/sev device to get
> platform status and more.

Yes, I was worried a bit more about how general that was going to be
or whether we're collecting a lot of architecture specific fields here.
So I wondered, if it was an enum, whether that would be come:

memory encryption: none

memory encryption: SEV

memory encryption: SEV-ES

(I'm not too sure whether that's better or not, just a suggestion)

Dave

> 
> > Dave
> >
> >> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >> Cc: Eric Blake <eblake@redhat.com>
> >> Cc: Markus Armbruster <armbru@redhat.com>
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  hmp.c            | 2 ++
> >>  qapi-schema.json | 5 ++++-
> >>  qmp.c            | 1 +
> >>  3 files changed, 7 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/hmp.c b/hmp.c
> >> index 056bf70cf1e2..6ceb6b30af75 100644
> >> --- a/hmp.c
> >> +++ b/hmp.c
> >> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
> >>      monitor_printf(mon, "kvm support: ");
> >>      if (info->present) {
> >>          monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
> >> +        monitor_printf(mon, "memory encryption: %s\n",
> >> +                       info->mem_encryption ? "enabled" : "disabled");
> >>      } else {
> >>          monitor_printf(mon, "not compiled\n");
> >>      }
> >> diff --git a/qapi-schema.json b/qapi-schema.json
> >> index 5c06745c7927..2046c96669bf 100644
> >> --- a/qapi-schema.json
> >> +++ b/qapi-schema.json
> >> @@ -314,9 +314,12 @@
> >>  #
> >>  # @present: true if KVM acceleration is built into this executable
> >>  #
> >> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
> >> +#
> >>  # Since: 0.14.0
> >>  ##
> >> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
> >> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
> >> +            'mem-encryption' : 'bool'} }
> >>  
> >>  ##
> >>  # @query-kvm:
> >> diff --git a/qmp.c b/qmp.c
> >> index 52cfd2d81c0f..3a527bc8c39c 100644
> >> --- a/qmp.c
> >> +++ b/qmp.c
> >> @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
> >>  
> >>      info->enabled = kvm_enabled();
> >>      info->present = kvm_available();
> >> +    info->mem_encryption = kvm_memcrypt_enabled();
> >>  
> >>      return info;
> >>  }
> >> -- 
> >> 2.9.5
> >>
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
@ 2018-02-01 20:04         ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-01 20:04 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Markus Armbruster

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> update 'info kvm' to display the memory encryption support.
> >>
> >> (qemu) info kvm
> >> kvm support: enabled
> >> memory encryption: disabled
> > As Markus said, this should be split qmp/hmp; but something else to
> > think about is whether this is a boolean or needs to be an enum;  do
> > you have one version of encryption or are we going to need to flag up
> > versions or the features of the encryption?
> 
> In future I could see us providing encrypted state status when we
> implement SEV-ES support, something like
> 
> (qemu) info kvm
> kvm support: enabled
> memory encryption: enabled
> cpu register state: encrypted
> 
> but so far I do not see need to provide the version string. If user
> wants to know the SEV version then it can open /dev/sev device to get
> platform status and more.

Yes, I was worried a bit more about how general that was going to be
or whether we're collecting a lot of architecture specific fields here.
So I wondered, if it was an enum, whether that would be come:

memory encryption: none

memory encryption: SEV

memory encryption: SEV-ES

(I'm not too sure whether that's better or not, just a suggestion)

Dave

> 
> > Dave
> >
> >> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >> Cc: Eric Blake <eblake@redhat.com>
> >> Cc: Markus Armbruster <armbru@redhat.com>
> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> >> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> >> ---
> >>  hmp.c            | 2 ++
> >>  qapi-schema.json | 5 ++++-
> >>  qmp.c            | 1 +
> >>  3 files changed, 7 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/hmp.c b/hmp.c
> >> index 056bf70cf1e2..6ceb6b30af75 100644
> >> --- a/hmp.c
> >> +++ b/hmp.c
> >> @@ -88,6 +88,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict)
> >>      monitor_printf(mon, "kvm support: ");
> >>      if (info->present) {
> >>          monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled");
> >> +        monitor_printf(mon, "memory encryption: %s\n",
> >> +                       info->mem_encryption ? "enabled" : "disabled");
> >>      } else {
> >>          monitor_printf(mon, "not compiled\n");
> >>      }
> >> diff --git a/qapi-schema.json b/qapi-schema.json
> >> index 5c06745c7927..2046c96669bf 100644
> >> --- a/qapi-schema.json
> >> +++ b/qapi-schema.json
> >> @@ -314,9 +314,12 @@
> >>  #
> >>  # @present: true if KVM acceleration is built into this executable
> >>  #
> >> +# @mem-encryption: true if Memory Encryption is active (since 2.12)
> >> +#
> >>  # Since: 0.14.0
> >>  ##
> >> -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
> >> +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool',
> >> +            'mem-encryption' : 'bool'} }
> >>  
> >>  ##
> >>  # @query-kvm:
> >> diff --git a/qmp.c b/qmp.c
> >> index 52cfd2d81c0f..3a527bc8c39c 100644
> >> --- a/qmp.c
> >> +++ b/qmp.c
> >> @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
> >>  
> >>      info->enabled = kvm_enabled();
> >>      info->present = kvm_available();
> >> +    info->mem_encryption = kvm_memcrypt_enabled();
> >>  
> >>      return info;
> >>  }
> >> -- 
> >> 2.9.5
> >>
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-02-01 20:04         ` [Qemu-devel] " Dr. David Alan Gilbert
@ 2018-02-02 13:08           ` Daniel P. Berrangé
  -1 siblings, 0 replies; 118+ messages in thread
From: Daniel P. Berrangé @ 2018-02-02 13:08 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: Brijesh Singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Markus Armbruster

On Thu, Feb 01, 2018 at 08:04:43PM +0000, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > 
> > 
> > On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > >> update 'info kvm' to display the memory encryption support.
> > >>
> > >> (qemu) info kvm
> > >> kvm support: enabled
> > >> memory encryption: disabled
> > > As Markus said, this should be split qmp/hmp; but something else to
> > > think about is whether this is a boolean or needs to be an enum;  do
> > > you have one version of encryption or are we going to need to flag up
> > > versions or the features of the encryption?
> > 
> > In future I could see us providing encrypted state status when we
> > implement SEV-ES support, something like
> > 
> > (qemu) info kvm
> > kvm support: enabled
> > memory encryption: enabled
> > cpu register state: encrypted
> > 
> > but so far I do not see need to provide the version string. If user
> > wants to know the SEV version then it can open /dev/sev device to get
> > platform status and more.
> 
> Yes, I was worried a bit more about how general that was going to be
> or whether we're collecting a lot of architecture specific fields here.
> So I wondered, if it was an enum, whether that would be come:
> 
> memory encryption: none
> 
> memory encryption: SEV
> 
> memory encryption: SEV-ES
> 
> (I'm not too sure whether that's better or not, just a suggestion)

I wonder if it is is even appropriate to have under 'info kvm', since
'info kvm' is architecture independant and SEV is specific to AMD x86_64
only. It might suggest an 'info sev' command is better ?

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
@ 2018-02-02 13:08           ` Daniel P. Berrangé
  0 siblings, 0 replies; 118+ messages in thread
From: Daniel P. Berrangé @ 2018-02-02 13:08 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: Brijesh Singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Markus Armbruster

On Thu, Feb 01, 2018 at 08:04:43PM +0000, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > 
> > 
> > On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > >> update 'info kvm' to display the memory encryption support.
> > >>
> > >> (qemu) info kvm
> > >> kvm support: enabled
> > >> memory encryption: disabled
> > > As Markus said, this should be split qmp/hmp; but something else to
> > > think about is whether this is a boolean or needs to be an enum;  do
> > > you have one version of encryption or are we going to need to flag up
> > > versions or the features of the encryption?
> > 
> > In future I could see us providing encrypted state status when we
> > implement SEV-ES support, something like
> > 
> > (qemu) info kvm
> > kvm support: enabled
> > memory encryption: enabled
> > cpu register state: encrypted
> > 
> > but so far I do not see need to provide the version string. If user
> > wants to know the SEV version then it can open /dev/sev device to get
> > platform status and more.
> 
> Yes, I was worried a bit more about how general that was going to be
> or whether we're collecting a lot of architecture specific fields here.
> So I wondered, if it was an enum, whether that would be come:
> 
> memory encryption: none
> 
> memory encryption: SEV
> 
> memory encryption: SEV-ES
> 
> (I'm not too sure whether that's better or not, just a suggestion)

I wonder if it is is even appropriate to have under 'info kvm', since
'info kvm' is architecture independant and SEV is specific to AMD x86_64
only. It might suggest an 'info sev' command is better ?

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

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

* Re: [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-02-02 13:08           ` [Qemu-devel] " Daniel P. Berrangé
@ 2018-02-02 13:46             ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-02 13:46 UTC (permalink / raw)
  To: Daniel P. Berrangé, Dr. David Alan Gilbert
  Cc: Edgar E. Iglesias, Peter Maydell, brijesh.singh, Eduardo Habkost,
	kvm, Tom Lendacky, Stefan Hajnoczi, Michael S. Tsirkin,
	Richard Henderson, qemu-devel, Markus Armbruster, Paolo Bonzini



On 2/2/18 7:08 AM, Daniel P. Berrangé wrote:
> On Thu, Feb 01, 2018 at 08:04:43PM +0000, Dr. David Alan Gilbert wrote:
>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>
>>> On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
>>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>>> update 'info kvm' to display the memory encryption support.
>>>>>
>>>>> (qemu) info kvm
>>>>> kvm support: enabled
>>>>> memory encryption: disabled
>>>> As Markus said, this should be split qmp/hmp; but something else to
>>>> think about is whether this is a boolean or needs to be an enum;  do
>>>> you have one version of encryption or are we going to need to flag up
>>>> versions or the features of the encryption?
>>> In future I could see us providing encrypted state status when we
>>> implement SEV-ES support, something like
>>>
>>> (qemu) info kvm
>>> kvm support: enabled
>>> memory encryption: enabled
>>> cpu register state: encrypted
>>>
>>> but so far I do not see need to provide the version string. If user
>>> wants to know the SEV version then it can open /dev/sev device to get
>>> platform status and more.
>> Yes, I was worried a bit more about how general that was going to be
>> or whether we're collecting a lot of architecture specific fields here.
>> So I wondered, if it was an enum, whether that would be come:
>>
>> memory encryption: none
>>
>> memory encryption: SEV
>>
>> memory encryption: SEV-ES
>>
>> (I'm not too sure whether that's better or not, just a suggestion)
> I wonder if it is is even appropriate to have under 'info kvm', since
> 'info kvm' is architecture independant and SEV is specific to AMD x86_64
> only. It might suggest an 'info sev' command is better ?

The reason I kept under 'info kvm' is because now KVM has a ioctl for
memory encryption operation, I like your suggestion for  introducing
'info sev' -- the command can be used to provide additional SEV specific
details (e.g SEV FW state, SEV FW version, SEV active policy etc).

>
> Regards,
> Daniel

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
@ 2018-02-02 13:46             ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-02 13:46 UTC (permalink / raw)
  To: Daniel P. Berrangé, Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Markus Armbruster



On 2/2/18 7:08 AM, Daniel P. Berrangé wrote:
> On Thu, Feb 01, 2018 at 08:04:43PM +0000, Dr. David Alan Gilbert wrote:
>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>
>>> On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
>>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>>> update 'info kvm' to display the memory encryption support.
>>>>>
>>>>> (qemu) info kvm
>>>>> kvm support: enabled
>>>>> memory encryption: disabled
>>>> As Markus said, this should be split qmp/hmp; but something else to
>>>> think about is whether this is a boolean or needs to be an enum;  do
>>>> you have one version of encryption or are we going to need to flag up
>>>> versions or the features of the encryption?
>>> In future I could see us providing encrypted state status when we
>>> implement SEV-ES support, something like
>>>
>>> (qemu) info kvm
>>> kvm support: enabled
>>> memory encryption: enabled
>>> cpu register state: encrypted
>>>
>>> but so far I do not see need to provide the version string. If user
>>> wants to know the SEV version then it can open /dev/sev device to get
>>> platform status and more.
>> Yes, I was worried a bit more about how general that was going to be
>> or whether we're collecting a lot of architecture specific fields here.
>> So I wondered, if it was an enum, whether that would be come:
>>
>> memory encryption: none
>>
>> memory encryption: SEV
>>
>> memory encryption: SEV-ES
>>
>> (I'm not too sure whether that's better or not, just a suggestion)
> I wonder if it is is even appropriate to have under 'info kvm', since
> 'info kvm' is architecture independant and SEV is specific to AMD x86_64
> only. It might suggest an 'info sev' command is better ?

The reason I kept under 'info kvm' is because now KVM has a ioctl for
memory encryption operation, I like your suggestion for  introducing
'info sev' -- the command can be used to provide additional SEV specific
details (e.g SEV FW state, SEV FW version, SEV active policy etc).

>
> Regards,
> Daniel

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

* Re: [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-02-01 17:27         ` [Qemu-devel] " Dr. David Alan Gilbert
@ 2018-02-02 15:11           ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-02 15:11 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Chen, Xiaogang



On 02/01/2018 11:27 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>
>>
>> On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>> During machine creation we encrypted the guest bios image, the
>>>> LAUNCH_MEASURE command can be used to retrieve the measurement of
>>>> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
>>>> libvirt can grab the measurement value as soon as we are done with
>>>> creating the encrypted machine.
>>> Can you ust clarify what happens if the libvirt has disconnected and
>>> reconnected to qemu and so didn't see the event?  Can the reconnecting
>>> libvirt query it and find out it's ready/not ready yet?
>>
>> Dave,
>>
>> I have not looked into details between libvirt and qemu interaction to
>> comment how and when the events will be delivered. Recently, one of my
>> colleague was implementing libvirt interface for the SEV guest and ran
>> into somewhat a similar challenge and posted question on libvirt mailing
>> list [1].
>>
>> In previous discussion on qemu mailing list, we agreed to implement SEV
>> MEASUREMENT event which can be seen by libvirt. That's what this patch
>> is doing.
>>
>> But during the libvirt implementation it seems that qemu monitor
>> silently drops all the events before it get the first qmp_capabilities
>> command. At a quick glance it seems on reconnect, libvirt issues
>> qmp_capabilities command and any event issued before the
>> qmp_capabilities command will never to delivered to libvirt. we are
>> looking for  help from libvirt/qemu monitor experts on how we solve this
>> problem. Our goal is to provide the measurement to libvirt before
>> libvirt issues "continue" command. Since event can't be seen by libvirt
>> before it resumes the guest hence I was wondering if we should we should
>> drop the SEV measurement event and consider adding a new QMP command to
>> query the SEV measurement.
> 
> Yep, I'll leave it to the libvirt contacts for the best way they'd like
> to see that, as Eric says there's nothing wrong with having both the
> command and event if useful.  Also keep in mind coping with a guest that
> crashes early or that measurement never arrives.
> 

Yep, lets see what libvirt experts say about it.

Hi Daniel,

Do you have any recommendation on whether we should consider adding a 
new QMP to retrieve the measurement or we do event or both? Please note 
that the launch measurement is generate only once for the lifetime of 
the guest. The measurement will be available after qmeu encrypts the 
guest bios during the machine initialization time.

-Brijesh

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

* Re: [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
@ 2018-02-02 15:11           ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-02 15:11 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: brijesh.singh, qemu-devel, kvm, Paolo Bonzini, Tom Lendacky,
	Peter Maydell, Richard Henderson, Edgar E. Iglesias,
	Eduardo Habkost, Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Daniel P . Berrange, Chen, Xiaogang



On 02/01/2018 11:27 AM, Dr. David Alan Gilbert wrote:
> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>
>>
>> On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
>>>> During machine creation we encrypted the guest bios image, the
>>>> LAUNCH_MEASURE command can be used to retrieve the measurement of
>>>> the encrypted memory region. Emit the SEV_MEASUREMENT event so that
>>>> libvirt can grab the measurement value as soon as we are done with
>>>> creating the encrypted machine.
>>> Can you ust clarify what happens if the libvirt has disconnected and
>>> reconnected to qemu and so didn't see the event?  Can the reconnecting
>>> libvirt query it and find out it's ready/not ready yet?
>>
>> Dave,
>>
>> I have not looked into details between libvirt and qemu interaction to
>> comment how and when the events will be delivered. Recently, one of my
>> colleague was implementing libvirt interface for the SEV guest and ran
>> into somewhat a similar challenge and posted question on libvirt mailing
>> list [1].
>>
>> In previous discussion on qemu mailing list, we agreed to implement SEV
>> MEASUREMENT event which can be seen by libvirt. That's what this patch
>> is doing.
>>
>> But during the libvirt implementation it seems that qemu monitor
>> silently drops all the events before it get the first qmp_capabilities
>> command. At a quick glance it seems on reconnect, libvirt issues
>> qmp_capabilities command and any event issued before the
>> qmp_capabilities command will never to delivered to libvirt. we are
>> looking for  help from libvirt/qemu monitor experts on how we solve this
>> problem. Our goal is to provide the measurement to libvirt before
>> libvirt issues "continue" command. Since event can't be seen by libvirt
>> before it resumes the guest hence I was wondering if we should we should
>> drop the SEV measurement event and consider adding a new QMP command to
>> query the SEV measurement.
> 
> Yep, I'll leave it to the libvirt contacts for the best way they'd like
> to see that, as Eric says there's nothing wrong with having both the
> command and event if useful.  Also keep in mind coping with a guest that
> crashes early or that measurement never arrives.
> 

Yep, lets see what libvirt experts say about it.

Hi Daniel,

Do you have any recommendation on whether we should consider adding a 
new QMP to retrieve the measurement or we do event or both? Please note 
that the launch measurement is generate only once for the lifetime of 
the guest. The measurement will be available after qmeu encrypts the 
guest bios during the machine initialization time.

-Brijesh

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

* Re: [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-02-02 15:11           ` [Qemu-devel] " Brijesh Singh
@ 2018-02-02 15:16             ` Daniel P. Berrangé
  -1 siblings, 0 replies; 118+ messages in thread
From: Daniel P. Berrangé @ 2018-02-02 15:16 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: Dr. David Alan Gilbert, qemu-devel, kvm, Paolo Bonzini,
	Tom Lendacky, Peter Maydell, Richard Henderson,
	Edgar E. Iglesias, Eduardo Habkost, Stefan Hajnoczi, Eric Blake,
	Michael S. Tsirkin, Chen, Xiaogang

On Fri, Feb 02, 2018 at 09:11:41AM -0600, Brijesh Singh wrote:
> 
> 
> On 02/01/2018 11:27 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > 
> > > 
> > > On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> > > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > > > During machine creation we encrypted the guest bios image, the
> > > > > LAUNCH_MEASURE command can be used to retrieve the measurement of
> > > > > the encrypted memory region. Emit the SEV_MEASUREMENT event so that
> > > > > libvirt can grab the measurement value as soon as we are done with
> > > > > creating the encrypted machine.
> > > > Can you ust clarify what happens if the libvirt has disconnected and
> > > > reconnected to qemu and so didn't see the event?  Can the reconnecting
> > > > libvirt query it and find out it's ready/not ready yet?
> > > 
> > > Dave,
> > > 
> > > I have not looked into details between libvirt and qemu interaction to
> > > comment how and when the events will be delivered. Recently, one of my
> > > colleague was implementing libvirt interface for the SEV guest and ran
> > > into somewhat a similar challenge and posted question on libvirt mailing
> > > list [1].
> > > 
> > > In previous discussion on qemu mailing list, we agreed to implement SEV
> > > MEASUREMENT event which can be seen by libvirt. That's what this patch
> > > is doing.
> > > 
> > > But during the libvirt implementation it seems that qemu monitor
> > > silently drops all the events before it get the first qmp_capabilities
> > > command. At a quick glance it seems on reconnect, libvirt issues
> > > qmp_capabilities command and any event issued before the
> > > qmp_capabilities command will never to delivered to libvirt. we are
> > > looking for  help from libvirt/qemu monitor experts on how we solve this
> > > problem. Our goal is to provide the measurement to libvirt before
> > > libvirt issues "continue" command. Since event can't be seen by libvirt
> > > before it resumes the guest hence I was wondering if we should we should
> > > drop the SEV measurement event and consider adding a new QMP command to
> > > query the SEV measurement.
> > 
> > Yep, I'll leave it to the libvirt contacts for the best way they'd like
> > to see that, as Eric says there's nothing wrong with having both the
> > command and event if useful.  Also keep in mind coping with a guest that
> > crashes early or that measurement never arrives.
> > 
> 
> Yep, lets see what libvirt experts say about it.
> 
> Hi Daniel,
> 
> Do you have any recommendation on whether we should consider adding a new
> QMP to retrieve the measurement or we do event or both? Please note that the
> launch measurement is generate only once for the lifetime of the guest. The
> measurement will be available after qmeu encrypts the guest bios during the
> machine initialization time.

IIUC, the measurement event is only required during the initial QEMU
startup sequence. Once the guest CPUs are running this info is not needed
any more.

If libvirtd crashes/restarts in the middle of QEMU startup sequence it is
game over from libvirt's POV. Libvirtd won't try to carry on starting that
guest when it restarts. So I don't think there's a compelling need for a
command to query the measurement from libvirt's POV, the event is fine.

That all said, I think it might be useful to have a command to query the
SEV measurement purely as a debugging aid, if some admin / support person
wants to get hold of this info for some reason...

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

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

* Re: [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
@ 2018-02-02 15:16             ` Daniel P. Berrangé
  0 siblings, 0 replies; 118+ messages in thread
From: Daniel P. Berrangé @ 2018-02-02 15:16 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: Dr. David Alan Gilbert, qemu-devel, kvm, Paolo Bonzini,
	Tom Lendacky, Peter Maydell, Richard Henderson,
	Edgar E. Iglesias, Eduardo Habkost, Stefan Hajnoczi, Eric Blake,
	Michael S. Tsirkin, Chen, Xiaogang

On Fri, Feb 02, 2018 at 09:11:41AM -0600, Brijesh Singh wrote:
> 
> 
> On 02/01/2018 11:27 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > 
> > > 
> > > On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> > > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > > > During machine creation we encrypted the guest bios image, the
> > > > > LAUNCH_MEASURE command can be used to retrieve the measurement of
> > > > > the encrypted memory region. Emit the SEV_MEASUREMENT event so that
> > > > > libvirt can grab the measurement value as soon as we are done with
> > > > > creating the encrypted machine.
> > > > Can you ust clarify what happens if the libvirt has disconnected and
> > > > reconnected to qemu and so didn't see the event?  Can the reconnecting
> > > > libvirt query it and find out it's ready/not ready yet?
> > > 
> > > Dave,
> > > 
> > > I have not looked into details between libvirt and qemu interaction to
> > > comment how and when the events will be delivered. Recently, one of my
> > > colleague was implementing libvirt interface for the SEV guest and ran
> > > into somewhat a similar challenge and posted question on libvirt mailing
> > > list [1].
> > > 
> > > In previous discussion on qemu mailing list, we agreed to implement SEV
> > > MEASUREMENT event which can be seen by libvirt. That's what this patch
> > > is doing.
> > > 
> > > But during the libvirt implementation it seems that qemu monitor
> > > silently drops all the events before it get the first qmp_capabilities
> > > command. At a quick glance it seems on reconnect, libvirt issues
> > > qmp_capabilities command and any event issued before the
> > > qmp_capabilities command will never to delivered to libvirt. we are
> > > looking for  help from libvirt/qemu monitor experts on how we solve this
> > > problem. Our goal is to provide the measurement to libvirt before
> > > libvirt issues "continue" command. Since event can't be seen by libvirt
> > > before it resumes the guest hence I was wondering if we should we should
> > > drop the SEV measurement event and consider adding a new QMP command to
> > > query the SEV measurement.
> > 
> > Yep, I'll leave it to the libvirt contacts for the best way they'd like
> > to see that, as Eric says there's nothing wrong with having both the
> > command and event if useful.  Also keep in mind coping with a guest that
> > crashes early or that measurement never arrives.
> > 
> 
> Yep, lets see what libvirt experts say about it.
> 
> Hi Daniel,
> 
> Do you have any recommendation on whether we should consider adding a new
> QMP to retrieve the measurement or we do event or both? Please note that the
> launch measurement is generate only once for the lifetime of the guest. The
> measurement will be available after qmeu encrypts the guest bios during the
> machine initialization time.

IIUC, the measurement event is only required during the initial QEMU
startup sequence. Once the guest CPUs are running this info is not needed
any more.

If libvirtd crashes/restarts in the middle of QEMU startup sequence it is
game over from libvirt's POV. Libvirtd won't try to carry on starting that
guest when it restarts. So I don't think there's a compelling need for a
command to query the measurement from libvirt's POV, the event is fine.

That all said, I think it might be useful to have a command to query the
SEV measurement purely as a debugging aid, if some admin / support person
wants to get hold of this info for some reason...

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

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

* Re: [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
  2018-02-02 13:46             ` [Qemu-devel] " Brijesh Singh
@ 2018-02-02 15:24               ` Dr. David Alan Gilbert
  -1 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-02 15:24 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: Daniel P. Berrangé,
	qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Markus Armbruster

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 2/2/18 7:08 AM, Daniel P. Berrangé wrote:
> > On Thu, Feb 01, 2018 at 08:04:43PM +0000, Dr. David Alan Gilbert wrote:
> >> * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >>>
> >>> On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> >>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >>>>> update 'info kvm' to display the memory encryption support.
> >>>>>
> >>>>> (qemu) info kvm
> >>>>> kvm support: enabled
> >>>>> memory encryption: disabled
> >>>> As Markus said, this should be split qmp/hmp; but something else to
> >>>> think about is whether this is a boolean or needs to be an enum;  do
> >>>> you have one version of encryption or are we going to need to flag up
> >>>> versions or the features of the encryption?
> >>> In future I could see us providing encrypted state status when we
> >>> implement SEV-ES support, something like
> >>>
> >>> (qemu) info kvm
> >>> kvm support: enabled
> >>> memory encryption: enabled
> >>> cpu register state: encrypted
> >>>
> >>> but so far I do not see need to provide the version string. If user
> >>> wants to know the SEV version then it can open /dev/sev device to get
> >>> platform status and more.
> >> Yes, I was worried a bit more about how general that was going to be
> >> or whether we're collecting a lot of architecture specific fields here.
> >> So I wondered, if it was an enum, whether that would be come:
> >>
> >> memory encryption: none
> >>
> >> memory encryption: SEV
> >>
> >> memory encryption: SEV-ES
> >>
> >> (I'm not too sure whether that's better or not, just a suggestion)
> > I wonder if it is is even appropriate to have under 'info kvm', since
> > 'info kvm' is architecture independant and SEV is specific to AMD x86_64
> > only. It might suggest an 'info sev' command is better ?
> 
> The reason I kept under 'info kvm' is because now KVM has a ioctl for
> memory encryption operation, I like your suggestion for  introducing
> 'info sev' -- the command can be used to provide additional SEV specific
> details (e.g SEV FW state, SEV FW version, SEV active policy etc).

Yes, that would be useful - I'm sure there's lots of information that
will be useful to display for understanding the state of SEV, e.g. the
policies etc.

Dave

> >
> > Regards,
> > Daniel
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm'
@ 2018-02-02 15:24               ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 118+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-02 15:24 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: Daniel P. Berrangé,
	qemu-devel, kvm, Paolo Bonzini, Tom Lendacky, Peter Maydell,
	Richard Henderson, Edgar E. Iglesias, Eduardo Habkost,
	Stefan Hajnoczi, Eric Blake, Michael S. Tsirkin,
	Markus Armbruster

* Brijesh Singh (brijesh.singh@amd.com) wrote:
> 
> 
> On 2/2/18 7:08 AM, Daniel P. Berrangé wrote:
> > On Thu, Feb 01, 2018 at 08:04:43PM +0000, Dr. David Alan Gilbert wrote:
> >> * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >>>
> >>> On 2/1/18 11:58 AM, Dr. David Alan Gilbert wrote:
> >>>> * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >>>>> update 'info kvm' to display the memory encryption support.
> >>>>>
> >>>>> (qemu) info kvm
> >>>>> kvm support: enabled
> >>>>> memory encryption: disabled
> >>>> As Markus said, this should be split qmp/hmp; but something else to
> >>>> think about is whether this is a boolean or needs to be an enum;  do
> >>>> you have one version of encryption or are we going to need to flag up
> >>>> versions or the features of the encryption?
> >>> In future I could see us providing encrypted state status when we
> >>> implement SEV-ES support, something like
> >>>
> >>> (qemu) info kvm
> >>> kvm support: enabled
> >>> memory encryption: enabled
> >>> cpu register state: encrypted
> >>>
> >>> but so far I do not see need to provide the version string. If user
> >>> wants to know the SEV version then it can open /dev/sev device to get
> >>> platform status and more.
> >> Yes, I was worried a bit more about how general that was going to be
> >> or whether we're collecting a lot of architecture specific fields here.
> >> So I wondered, if it was an enum, whether that would be come:
> >>
> >> memory encryption: none
> >>
> >> memory encryption: SEV
> >>
> >> memory encryption: SEV-ES
> >>
> >> (I'm not too sure whether that's better or not, just a suggestion)
> > I wonder if it is is even appropriate to have under 'info kvm', since
> > 'info kvm' is architecture independant and SEV is specific to AMD x86_64
> > only. It might suggest an 'info sev' command is better ?
> 
> The reason I kept under 'info kvm' is because now KVM has a ioctl for
> memory encryption operation, I like your suggestion for  introducing
> 'info sev' -- the command can be used to provide additional SEV specific
> details (e.g SEV FW state, SEV FW version, SEV active policy etc).

Yes, that would be useful - I'm sure there's lots of information that
will be useful to display for understanding the state of SEV, e.g. the
policies etc.

Dave

> >
> > Regards,
> > Daniel
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
  2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
@ 2018-02-06 15:51   ` Bruce Rogers
  -1 siblings, 0 replies; 118+ messages in thread
From: Bruce Rogers @ 2018-02-06 15:51 UTC (permalink / raw)
  To: brijesh.singh, qemu-devel
  Cc: Thomas.Lendacky, Stefan Hajnoczi, peter.maydell,
	richard.henderson, Dr. David Alan Gilbert, ehabkost,
	Michael S. Tsirkin, Paolo Bonzini, kvm, edgar.iglesias

>>> On 1/29/2018 at 10:41 AM, <brijesh.singh@amd.com> wrote:
> This patch series provides support for AMD's new Secure Encrypted 
> Virtualization (SEV) feature.
> 
> SEV is an extension to the AMD‑V architecture which supports running
> multiple VMs under the control of a hypervisor. The SEV feature allows
> the memory contents of a virtual machine (VM) to be transparently encrypted
> with a key unique to the guest VM. The memory controller contains a
> high performance encryption engine which can be programmed with multiple
> keys for use by a different VMs in the system. The programming and
> management of these keys is handled by the AMD Secure Processor firmware
> which exposes a commands for these tasks.
> 
> The KVM SEV patch series introduced a new ioctl (KVM_MEMORY_ENCRYPTION_OP)
> which is used by qemu to issue the SEV commands to assist performing
> common hypervisor activities such as a launching, running, snapshooting,
> migration and debugging guests.
> 

As for the reported failure to build on non-x86 hosts, eg:
...
  LINK    i386-softmmu/qemu-system-i386
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'

... I've looked at that a bit and find that in target/i386/kvm-stub.c, if we get rid of
the #ifndef __OPTIMIZE__ it then builds ok. I'm not sure if the guarding done there
with the check for  __OPTIMIZE__ is a relic that no longer applies given how qemu
currently builds, but at least it's something to look at.

Bruce

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
@ 2018-02-06 15:51   ` Bruce Rogers
  0 siblings, 0 replies; 118+ messages in thread
From: Bruce Rogers @ 2018-02-06 15:51 UTC (permalink / raw)
  To: brijesh.singh, qemu-devel
  Cc: Thomas.Lendacky, Stefan Hajnoczi, peter.maydell,
	richard.henderson, Dr. David Alan Gilbert, ehabkost,
	Michael S. Tsirkin, Paolo Bonzini, kvm, edgar.iglesias

>>> On 1/29/2018 at 10:41 AM, <brijesh.singh@amd.com> wrote:
> This patch series provides support for AMD's new Secure Encrypted 
> Virtualization (SEV) feature.
> 
> SEV is an extension to the AMD‑V architecture which supports running
> multiple VMs under the control of a hypervisor. The SEV feature allows
> the memory contents of a virtual machine (VM) to be transparently encrypted
> with a key unique to the guest VM. The memory controller contains a
> high performance encryption engine which can be programmed with multiple
> keys for use by a different VMs in the system. The programming and
> management of these keys is handled by the AMD Secure Processor firmware
> which exposes a commands for these tasks.
> 
> The KVM SEV patch series introduced a new ioctl (KVM_MEMORY_ENCRYPTION_OP)
> which is used by qemu to issue the SEV commands to assist performing
> common hypervisor activities such as a launching, running, snapshooting,
> migration and debugging guests.
> 

As for the reported failure to build on non-x86 hosts, eg:
...
  LINK    i386-softmmu/qemu-system-i386
target/i386/helper.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
target/i386/monitor.o: In function `get_me_mask':
/var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'

... I've looked at that a bit and find that in target/i386/kvm-stub.c, if we get rid of
the #ifndef __OPTIMIZE__ it then builds ok. I'm not sure if the guarding done there
with the check for  __OPTIMIZE__ is a relic that no longer applies given how qemu
currently builds, but at least it's something to look at.

Bruce

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

* Re: [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD)
  2018-02-06 15:51   ` Bruce Rogers
  (?)
@ 2018-02-07  1:07   ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-07  1:07 UTC (permalink / raw)
  To: Bruce Rogers, qemu-devel
  Cc: brijesh.singh, Thomas.Lendacky, Stefan Hajnoczi, peter.maydell,
	richard.henderson, Dr. David Alan Gilbert, ehabkost,
	Michael S. Tsirkin, Paolo Bonzini, kvm, edgar.iglesias



On 2/6/18 9:51 AM, Bruce Rogers wrote:
>>>> On 1/29/2018 at 10:41 AM, <brijesh.singh@amd.com> wrote:
>> This patch series provides support for AMD's new Secure Encrypted 
>> Virtualization (SEV) feature.
>>
>> SEV is an extension to the AMD‑V architecture which supports running
>> multiple VMs under the control of a hypervisor. The SEV feature allows
>> the memory contents of a virtual machine (VM) to be transparently encrypted
>> with a key unique to the guest VM. The memory controller contains a
>> high performance encryption engine which can be programmed with multiple
>> keys for use by a different VMs in the system. The programming and
>> management of these keys is handled by the AMD Secure Processor firmware
>> which exposes a commands for these tasks.
>>
>> The KVM SEV patch series introduced a new ioctl (KVM_MEMORY_ENCRYPTION_OP)
>> which is used by qemu to issue the SEV commands to assist performing
>> common hypervisor activities such as a launching, running, snapshooting,
>> migration and debugging guests.
>>
> As for the reported failure to build on non-x86 hosts, eg:
> ...
>   LINK    i386-softmmu/qemu-system-i386
> target/i386/helper.o: In function `get_me_mask':
> /var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/helper.c:735: undefined reference to `kvm_arch_get_supported_cpuid'
> target/i386/monitor.o: In function `get_me_mask':
> /var/tmp/patchew-tester-tmp-hek3vjny/src/target/i386/monitor.c:71: undefined reference to `kvm_arch_get_supported_cpuid'
>
> ... I've looked at that a bit and find that in target/i386/kvm-stub.c, if we get rid of
> the #ifndef __OPTIMIZE__ it then builds ok. I'm not sure if the guarding done there
> with the check for  __OPTIMIZE__ is a relic that no longer applies given how qemu
> currently builds, but at least it's something to look at.

Thanks for looking Bruce.

I have reworked code a bit and that should fix this build error. I will
be posting patches soon for review.

> Bruce
>

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

* Re: [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-02-02 15:16             ` [Qemu-devel] " Daniel P. Berrangé
@ 2018-02-08 16:17               ` Brijesh Singh
  -1 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-08 16:17 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Edgar E. Iglesias, Peter Maydell, Brijesh Singh, Eduardo Habkost,
	kvm, Tom Lendacky, Chen, Xiaogang, Stefan Hajnoczi,
	Michael S. Tsirkin, Richard Henderson, Dr. David Alan Gilbert,
	qemu-devel, Paolo Bonzini

On Fri, Feb 2, 2018 at 9:16 AM, Daniel P. Berrangé <berrange@redhat.com>
wrote:

> On Fri, Feb 02, 2018 at 09:11:41AM -0600, Brijesh Singh wrote:
> >
> >
> > On 02/01/2018 11:27 AM, Dr. David Alan Gilbert wrote:
> > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > >
> > > >
> > > > On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> > > > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > > > > During machine creation we encrypted the guest bios image, the
> > > > > > LAUNCH_MEASURE command can be used to retrieve the measurement of
> > > > > > the encrypted memory region. Emit the SEV_MEASUREMENT event so
> that
> > > > > > libvirt can grab the measurement value as soon as we are done
> with
> > > > > > creating the encrypted machine.
> > > > > Can you ust clarify what happens if the libvirt has disconnected
> and
> > > > > reconnected to qemu and so didn't see the event?  Can the
> reconnecting
> > > > > libvirt query it and find out it's ready/not ready yet?
> > > >
> > > > Dave,
> > > >
> > > > I have not looked into details between libvirt and qemu interaction
> to
> > > > comment how and when the events will be delivered. Recently, one of
> my
> > > > colleague was implementing libvirt interface for the SEV guest and
> ran
> > > > into somewhat a similar challenge and posted question on libvirt
> mailing
> > > > list [1].
> > > >
> > > > In previous discussion on qemu mailing list, we agreed to implement
> SEV
> > > > MEASUREMENT event which can be seen by libvirt. That's what this
> patch
> > > > is doing.
> > > >
> > > > But during the libvirt implementation it seems that qemu monitor
> > > > silently drops all the events before it get the first
> qmp_capabilities
> > > > command. At a quick glance it seems on reconnect, libvirt issues
> > > > qmp_capabilities command and any event issued before the
> > > > qmp_capabilities command will never to delivered to libvirt. we are
> > > > looking for  help from libvirt/qemu monitor experts on how we solve
> this
> > > > problem. Our goal is to provide the measurement to libvirt before
> > > > libvirt issues "continue" command. Since event can't be seen by
> libvirt
> > > > before it resumes the guest hence I was wondering if we should we
> should
> > > > drop the SEV measurement event and consider adding a new QMP command
> to
> > > > query the SEV measurement.
> > >
> > > Yep, I'll leave it to the libvirt contacts for the best way they'd like
> > > to see that, as Eric says there's nothing wrong with having both the
> > > command and event if useful.  Also keep in mind coping with a guest
> that
> > > crashes early or that measurement never arrives.
> > >
> >
> > Yep, lets see what libvirt experts say about it.
> >
> > Hi Daniel,
> >
> > Do you have any recommendation on whether we should consider adding a new
> > QMP to retrieve the measurement or we do event or both? Please note that
> the
> > launch measurement is generate only once for the lifetime of the guest.
> The
> > measurement will be available after qmeu encrypts the guest bios during
> the
> > machine initialization time.
>
> IIUC, the measurement event is only required during the initial QEMU
> startup sequence. Once the guest CPUs are running this info is not needed
> any more.
>

That is correct.



>
> If libvirtd crashes/restarts in the middle of QEMU startup sequence it is
> game over from libvirt's POV. Libvirtd won't try to carry on starting that
> guest when it restarts. So I don't think there's a compelling need for a
> command to query the measurement from libvirt's POV, the event is fine.
>
>

Sorry for the late response, somehow this email was never delievered to my
AMD account hence I was not able to see the response on-time.

Anyway, the main issue is event emitted before "qmp_capabilities" are
dropped silently , see [1] . In our case, the measurement event is emitted
during the machine creation time, libvirt was still waiting to reconnect
the monitor when event was emitted hence libvirt never gets the event.
Because of this, I am not able to see any strong reason to emit the event.
Do you see any issue with libvirt issuing a  'query-sev-launch-measure' to
get the measurement on reconnect ?

[1] https://github.com/qemu/qemu/blob/master/monitor.c#L418



That all said, I think it might be useful to have a command to query the
> SEV measurement purely as a debugging aid, if some admin / support person
> wants to get hold of this info for some reason...
>
> Regards,
> Daniel
> --
> |: https://berrange.com      -o-    https://www.flickr.com/photos/
> dberrange :|
> |: https://libvirt.org         -o-
> https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/
> dberrange :|
>
>

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

* Re: [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
@ 2018-02-08 16:17               ` Brijesh Singh
  0 siblings, 0 replies; 118+ messages in thread
From: Brijesh Singh @ 2018-02-08 16:17 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Brijesh Singh, Edgar E. Iglesias, Peter Maydell, Eduardo Habkost,
	kvm, Tom Lendacky, Chen, Xiaogang, Stefan Hajnoczi,
	Michael S. Tsirkin, Richard Henderson, Dr. David Alan Gilbert,
	qemu-devel, Paolo Bonzini

On Fri, Feb 2, 2018 at 9:16 AM, Daniel P. Berrangé <berrange@redhat.com>
wrote:

> On Fri, Feb 02, 2018 at 09:11:41AM -0600, Brijesh Singh wrote:
> >
> >
> > On 02/01/2018 11:27 AM, Dr. David Alan Gilbert wrote:
> > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > >
> > > >
> > > > On 1/30/18 2:08 PM, Dr. David Alan Gilbert wrote:
> > > > > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> > > > > > During machine creation we encrypted the guest bios image, the
> > > > > > LAUNCH_MEASURE command can be used to retrieve the measurement of
> > > > > > the encrypted memory region. Emit the SEV_MEASUREMENT event so
> that
> > > > > > libvirt can grab the measurement value as soon as we are done
> with
> > > > > > creating the encrypted machine.
> > > > > Can you ust clarify what happens if the libvirt has disconnected
> and
> > > > > reconnected to qemu and so didn't see the event?  Can the
> reconnecting
> > > > > libvirt query it and find out it's ready/not ready yet?
> > > >
> > > > Dave,
> > > >
> > > > I have not looked into details between libvirt and qemu interaction
> to
> > > > comment how and when the events will be delivered. Recently, one of
> my
> > > > colleague was implementing libvirt interface for the SEV guest and
> ran
> > > > into somewhat a similar challenge and posted question on libvirt
> mailing
> > > > list [1].
> > > >
> > > > In previous discussion on qemu mailing list, we agreed to implement
> SEV
> > > > MEASUREMENT event which can be seen by libvirt. That's what this
> patch
> > > > is doing.
> > > >
> > > > But during the libvirt implementation it seems that qemu monitor
> > > > silently drops all the events before it get the first
> qmp_capabilities
> > > > command. At a quick glance it seems on reconnect, libvirt issues
> > > > qmp_capabilities command and any event issued before the
> > > > qmp_capabilities command will never to delivered to libvirt. we are
> > > > looking for  help from libvirt/qemu monitor experts on how we solve
> this
> > > > problem. Our goal is to provide the measurement to libvirt before
> > > > libvirt issues "continue" command. Since event can't be seen by
> libvirt
> > > > before it resumes the guest hence I was wondering if we should we
> should
> > > > drop the SEV measurement event and consider adding a new QMP command
> to
> > > > query the SEV measurement.
> > >
> > > Yep, I'll leave it to the libvirt contacts for the best way they'd like
> > > to see that, as Eric says there's nothing wrong with having both the
> > > command and event if useful.  Also keep in mind coping with a guest
> that
> > > crashes early or that measurement never arrives.
> > >
> >
> > Yep, lets see what libvirt experts say about it.
> >
> > Hi Daniel,
> >
> > Do you have any recommendation on whether we should consider adding a new
> > QMP to retrieve the measurement or we do event or both? Please note that
> the
> > launch measurement is generate only once for the lifetime of the guest.
> The
> > measurement will be available after qmeu encrypts the guest bios during
> the
> > machine initialization time.
>
> IIUC, the measurement event is only required during the initial QEMU
> startup sequence. Once the guest CPUs are running this info is not needed
> any more.
>

That is correct.



>
> If libvirtd crashes/restarts in the middle of QEMU startup sequence it is
> game over from libvirt's POV. Libvirtd won't try to carry on starting that
> guest when it restarts. So I don't think there's a compelling need for a
> command to query the measurement from libvirt's POV, the event is fine.
>
>

Sorry for the late response, somehow this email was never delievered to my
AMD account hence I was not able to see the response on-time.

Anyway, the main issue is event emitted before "qmp_capabilities" are
dropped silently , see [1] . In our case, the measurement event is emitted
during the machine creation time, libvirt was still waiting to reconnect
the monitor when event was emitted hence libvirt never gets the event.
Because of this, I am not able to see any strong reason to emit the event.
Do you see any issue with libvirt issuing a  'query-sev-launch-measure' to
get the measurement on reconnect ?

[1] https://github.com/qemu/qemu/blob/master/monitor.c#L418



That all said, I think it might be useful to have a command to query the
> SEV measurement purely as a debugging aid, if some admin / support person
> wants to get hold of this info for some reason...
>
> Regards,
> Daniel
> --
> |: https://berrange.com      -o-    https://www.flickr.com/photos/
> dberrange :|
> |: https://libvirt.org         -o-
> https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/
> dberrange :|
>
>

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

* Re: [Qemu-devel] [PATCH v6 18/23] sev: emit the SEV_MEASUREMENT event
  2018-02-08 16:17               ` [Qemu-devel] " Brijesh Singh
  (?)
@ 2018-02-08 16:22               ` Daniel P. Berrangé
  -1 siblings, 0 replies; 118+ messages in thread
From: Daniel P. Berrangé @ 2018-02-08 16:22 UTC (permalink / raw)
  To: Brijesh Singh
  Cc: Brijesh Singh, Edgar E. Iglesias, Peter Maydell, Eduardo Habkost,
	kvm, Tom Lendacky, Chen, Xiaogang, Stefan Hajnoczi,
	Michael S. Tsirkin, Richard Henderson, Dr. David Alan Gilbert,
	qemu-devel, Paolo Bonzini

On Thu, Feb 08, 2018 at 10:17:28AM -0600, Brijesh Singh wrote:
> 
> Anyway, the main issue is event emitted before "qmp_capabilities" are
> dropped silently , see [1] . In our case, the measurement event is emitted
> during the machine creation time, libvirt was still waiting to reconnect
> the monitor when event was emitted hence libvirt never gets the event.
> Because of this, I am not able to see any strong reason to emit the event.
> Do you see any issue with libvirt issuing a  'query-sev-launch-measure' to
> get the measurement on reconnect ?

Hmm, yes, I see so there can be a race between SEV emitting the event and
libvirtd making the initial monitor connection. In that case, we definitely
to have a QMP command to let libvirt explicitly query it. 


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

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

end of thread, other threads:[~2018-02-08 16:22 UTC | newest]

Thread overview: 118+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-29 17:41 [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD) Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 01/23] memattrs: add debug attribute Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-30 21:59   ` Edgar E. Iglesias
2018-01-30 21:59     ` [Qemu-devel] " Edgar E. Iglesias
2018-01-29 17:41 ` [PATCH v6 02/23] exec: add ram_debug_ops support Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-30 21:59   ` Edgar E. Iglesias
2018-01-30 21:59     ` [Qemu-devel] " Edgar E. Iglesias
2018-01-30 22:34     ` Brijesh Singh
2018-01-30 22:34       ` [Qemu-devel] " Brijesh Singh
2018-01-30 22:37       ` Edgar E. Iglesias
2018-01-30 22:37         ` [Qemu-devel] " Edgar E. Iglesias
2018-01-30 23:26         ` Brijesh Singh
2018-01-30 23:26           ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 03/23] exec: add debug version of physical memory read and write API Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 04/23] monitor/i386: use debug APIs when accessing guest memory Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-30 17:49   ` Dr. David Alan Gilbert
2018-01-30 17:49     ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-30 21:46     ` Brijesh Singh
2018-01-30 21:46       ` [Qemu-devel] " Brijesh Singh
2018-01-30 22:15       ` Brijesh Singh
2018-01-30 22:15         ` [Qemu-devel] " Brijesh Singh
2018-01-31  9:57       ` Dr. David Alan Gilbert
2018-01-31  9:57         ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-31 13:41       ` Eduardo Habkost
2018-01-31 13:41         ` [Qemu-devel] " Eduardo Habkost
2018-01-31 16:05         ` Brijesh Singh
2018-01-31 16:05           ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 06/23] machine: add -memory-encryption property Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 07/23] kvm: update kvm.h to include memory encryption ioctls Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 08/23] docs: add AMD Secure Encrypted Virtualization (SEV) Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 09/23] accel: add Secure Encrypted Virtulization (SEV) object Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 10/23] sev: add command to initialize the memory encryption context Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-02-01 12:13   ` Dr. David Alan Gilbert
2018-02-01 12:13     ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-01 15:33     ` Brijesh Singh
2018-02-01 15:33       ` [Qemu-devel] " Brijesh Singh
2018-02-01 15:46       ` Dr. David Alan Gilbert
2018-02-01 15:46         ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-29 17:41 ` [PATCH v6 11/23] sev: register the guest memory range which may contain encrypted data Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 12/23] kvm: introduce memory encryption APIs Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm' Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-31 17:43   ` Markus Armbruster
2018-02-01 15:21     ` Brijesh Singh
2018-02-01 17:58   ` Dr. David Alan Gilbert
2018-02-01 17:58     ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-01 19:55     ` Brijesh Singh
2018-02-01 19:55       ` [Qemu-devel] " Brijesh Singh
2018-02-01 20:04       ` Dr. David Alan Gilbert
2018-02-01 20:04         ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-02 13:08         ` Daniel P. Berrangé
2018-02-02 13:08           ` [Qemu-devel] " Daniel P. Berrangé
2018-02-02 13:46           ` Brijesh Singh
2018-02-02 13:46             ` [Qemu-devel] " Brijesh Singh
2018-02-02 15:24             ` Dr. David Alan Gilbert
2018-02-02 15:24               ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-29 17:41 ` [PATCH v6 14/23] sev: add command to create launch memory encryption context Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 15/23] sev: add command to encrypt guest memory region Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 16/23] target/i386: encrypt bios rom Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-31 17:45   ` Markus Armbruster
2018-02-01 15:25     ` Brijesh Singh
2018-02-01 15:28       ` Eric Blake
2018-02-01 15:28         ` Eric Blake
2018-01-29 17:41 ` [PATCH v6 18/23] sev: emit the " Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-30 20:08   ` Dr. David Alan Gilbert
2018-01-30 20:08     ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-30 22:13     ` Brijesh Singh
2018-01-30 22:13       ` [Qemu-devel] " Brijesh Singh
2018-02-01 17:27       ` Dr. David Alan Gilbert
2018-02-01 17:27         ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-02 15:11         ` Brijesh Singh
2018-02-02 15:11           ` [Qemu-devel] " Brijesh Singh
2018-02-02 15:16           ` Daniel P. Berrangé
2018-02-02 15:16             ` [Qemu-devel] " Daniel P. Berrangé
2018-02-08 16:17             ` Brijesh Singh
2018-02-08 16:17               ` [Qemu-devel] " Brijesh Singh
2018-02-08 16:22               ` Daniel P. Berrangé
2018-01-29 17:41 ` [PATCH v6 19/23] sev: Finalize the SEV guest launch flow Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 20/23] hw: i386: set ram_debug_ops when memory encryption is enabled Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 21/23] sev: add debug encrypt and decrypt commands Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 22/23] target/i386: clear C-bit when walking SEV guest page table Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 23/23] sev: add migration blocker Brijesh Singh
2018-01-29 17:41   ` [Qemu-devel] " Brijesh Singh
2018-01-29 18:13 ` [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD) no-reply
2018-01-29 18:13   ` no-reply
2018-01-29 18:17 ` no-reply
2018-01-29 18:17   ` [Qemu-devel] " no-reply
2018-01-29 18:19 ` no-reply
2018-01-29 18:19   ` no-reply
2018-01-29 18:31 ` no-reply
2018-01-29 18:31   ` [Qemu-devel] " no-reply
2018-02-06 15:51 ` Bruce Rogers
2018-02-06 15:51   ` Bruce Rogers
2018-02-07  1:07   ` Brijesh Singh

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.