1. 13 2月, 2015 7 次提交
  2. 11 2月, 2015 7 次提交
    • P
      Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20150210.0' into staging · 449008f8
      Peter Maydell 提交于
      RCU fixes and cleanup (Paolo Bonzini)
      Switch to v2 IOMMU interface (Alex Williamson)
      DEBUG build fix (Alexey Kardashevskiy)
      
      # gpg: Signature made Tue 10 Feb 2015 17:37:06 GMT using RSA key ID 3BB08B22
      # gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>"
      # gpg:                 aka "Alex Williamson <alex@shazbot.org>"
      # gpg:                 aka "Alex Williamson <alwillia@redhat.com>"
      # gpg:                 aka "Alex Williamson <alex.l.williamson@gmail.com>"
      
      * remotes/awilliam/tags/vfio-update-20150210.0:
        vfio: Fix debug message compile error
        vfio: Use vfio type1 v2 IOMMU interface
        vfio: unmap and free BAR data in instance_finalize
        vfio: free dynamically-allocated data in instance_finalize
        vfio: cleanup vfio_get_device error path, remove vfio_populate_device callback
        memory: unregister AddressSpace MemoryListener within BQL
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      449008f8
    • A
      vfio: Fix debug message compile error · bc5baffa
      Alexey Kardashevskiy 提交于
      This fixes a compiler error which occurs if DEBUG_VFIO is defined.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      bc5baffa
    • A
      vfio: Use vfio type1 v2 IOMMU interface · 2e6e697e
      Alex Williamson 提交于
      The difference between v1 and v2 is fairly subtle, simply more
      deterministic behavior for unmaps.  The v1 interface allows the user
      to attempt to unmap sub-regions of previous mappings, returning
      success with zero size if unable to comply.  This was a reflection of
      the underlying IOMMU API.  The v2 interface requires that the user
      may only unmap fully contained mappings, ie. an unmap cannot intersect
      or bisect a previous mapping, but may cover multiple mappings.  QEMU
      never made use of the sub-region v1 support anyway, so we can support
      either v1 or v2.  We'll favor v2 since it's newer.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      2e6e697e
    • P
      vfio: unmap and free BAR data in instance_finalize · ba5e6bfa
      Paolo Bonzini 提交于
      In the case of VFIO, the unrealize callback is too early to munmap the
      BARs.  The munmap must be delayed until memory accesses are complete.
      To do this, split vfio_unmap_bars in two.  The removal step, now called
      vfio_unregister_bars, remains in vfio_exitfn.  The reclamation step
      is vfio_unmap_bars and is moved to the instance_finalize callback.
      
      Similarly, quirk MemoryRegions have to be removed during
      vfio_unregister_bars, but freeing the data structure must be delayed
      to vfio_unmap_bars.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      ba5e6bfa
    • P
      vfio: free dynamically-allocated data in instance_finalize · 77a10d04
      Paolo Bonzini 提交于
      In order to enable out-of-BQL address space lookup, destruction of
      devices needs to be split in two phases.
      
      Unrealize is the first phase; once it complete no new accesses will
      be started, but there may still be pending memory accesses can still
      be completed.
      
      The second part is freeing the device, which only happens once all memory
      accesses are complete.  At this point the reference count has dropped to
      zero, an RCU grace period must have completed (because the RCU-protected
      FlatViews hold a reference to the device via memory_region_ref).  This is
      when instance_finalize is called.
      
      Freeing data belongs in an instance_finalize callback, because the
      dynamically allocated memory can still be used after unrealize by the
      pending memory accesses.
      
      This starts the process by creating an instance_finalize callback and
      freeing most of the dynamically-allocated data in instance_finalize.
      Because instance_finalize is also called on error paths or also when
      the device is actually not realized, the common code needs some changes
      to be ready for this.  The error path in vfio_initfn can be simplified too.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      77a10d04
    • P
      vfio: cleanup vfio_get_device error path, remove vfio_populate_device callback · 217e9fdc
      Paolo Bonzini 提交于
      Now that vfio_put_base_device is called unconditionally at instance_finalize
      time, it can be called twice if vfio_populate_device fails.  This works
      but it is slightly harder to follow.
      
      Change vfio_get_device to not touch the vbasedev struct until it will
      definitely succeed, moving the vfio_populate_device call back to vfio-pci.
      This way, vfio_put_base_device will only be called once.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      217e9fdc
    • P
      memory: unregister AddressSpace MemoryListener within BQL · 6e48e8f9
      Paolo Bonzini 提交于
      address_space_destroy_dispatch is called from an RCU callback and hence
      outside the iothread mutex (BQL).  However, after address_space_destroy
      no new accesses can hit the destroyed AddressSpace so it is not necessary
      to observe changes to the memory map.  Move the memory_listener_unregister
      call earlier, to make it thread-safe again.
      Reported-by: NAlex Williamson <alex.williamson@redhat.com>
      Fixes: 374f2981Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      6e48e8f9
  3. 10 2月, 2015 26 次提交
    • P
      Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-02-10' into staging · 5c697ae7
      Peter Maydell 提交于
      trivial patches for 2015-02-10
      
      # gpg: Signature made Tue 10 Feb 2015 07:27:11 GMT using RSA key ID A4C3D7DB
      # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>"
      # gpg:                 aka "Michael Tokarev <mjt@corpit.ru>"
      # gpg:                 aka "Michael Tokarev <mjt@debian.org>"
      
      * remotes/mjt/tags/pull-trivial-patches-2015-02-10: (45 commits)
        virtio: Fix warning caused by missing 'static' attribute
        vga: Fix warning caused by missing 'static' attribute
        stubs: Fix warning caused by missing include statement
        spice: Add missing 'static' attribute
        serial: Fix warnings caused by missing 'static' attribute
        moxie: Fix warning caused by missing include statement
        migration: Fix warnings caused by missing 'static' attribute
        migration: Fix warning caused by missing declaration of vmstate_dummy
        disas/sh4: Fix warning caused by missing 'static' attribute
        translate-all: Use g_try_malloc() for dynamic translator buffer
        vnc: g_realloc() can't fail, bury dead error handling
        rdma: g_malloc0() can't fail, bury dead error handling
        kvm: g_malloc() can't fail, bury dead error handling
        rtl8139: g_malloc() can't fail, bury dead error handling
        onenand: g_malloc() can't fail, bury dead error handling
        Fix name error in migration stream analyzation script
        QJSON: fix typo in author's email address
        util/uri: URI member path can be null, compare more carfully
        util/uri: realloc2n() can't fail, drop dead error handling
        util/uri: uri_new() can't fail, drop dead error handling
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      5c697ae7
    • S
      virtio: Fix warning caused by missing 'static' attribute · 43d73554
      Stefan Weil 提交于
      Warning from the Sparse static analysis tool:
      
      hw/char/virtio-serial-bus.c:31:3:
       warning: symbol 'vserdevices' was not declared. Should it be static?
      
      Cc: Amit Shah <amit.shah@redhat.com>
      Cc: Anthony Liguori <aliguori@amazon.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      43d73554
    • S
      vga: Fix warning caused by missing 'static' attribute · 73d22caf
      Stefan Weil 提交于
      Warning from the Sparse static analysis tool:
      
      hw/display/vga.c:2012:26: warning:
       symbol 'vmstate_vga_endian' was not declared. Should it be static?
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      73d22caf
    • S
      stubs: Fix warning caused by missing include statement · 2822c1b6
      Stefan Weil 提交于
      Warning from the Sparse static analysis tool:
      
      stubs/qtest.c:14:6:
       warning: symbol 'qtest_allowed' was not declared. Should it be static?
      
      Add the missing include statement which declares qtest_allowed.
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      2822c1b6
    • S
      spice: Add missing 'static' attribute · 51575c3f
      Stefan Weil 提交于
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      51575c3f
    • S
      serial: Fix warnings caused by missing 'static' attribute · 92013cf8
      Stefan Weil 提交于
      Warnings from the Sparse static analysis tool:
      
      hw/char/serial.c:630:26: warning: symbol
       'vmstate_serial_thr_ipending' was not declared. Should it be static?
      hw/char/serial.c:646:26: warning: symbol
       'vmstate_serial_tsr' was not declared. Should it be static?
      hw/char/serial.c:665:26: warning: symbol
       'vmstate_serial_recv_fifo' was not declared. Should it be static?
      hw/char/serial.c:681:26: warning: symbol
       'vmstate_serial_xmit_fifo' was not declared. Should it be static?
      hw/char/serial.c:697:26: warning: symbol
       'vmstate_serial_fifo_timeout_timer' was not declared. Should it be static?
      hw/char/serial.c:713:26: warning: symbol
       'vmstate_serial_timeout_ipending' was not declared. Should it be static?
      hw/char/serial.c:729:26: warning: symbol
       'vmstate_serial_poll' was not declared. Should it be static?
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      92013cf8
    • S
      moxie: Fix warning caused by missing include statement · 302fe123
      Stefan Weil 提交于
      Warning from the Sparse static analysis tool:
      
      target-moxie/machine.c:4:26:
       warning: symbol 'vmstate_moxie_cpu' was not declared. Should it be static?
      
      machine.h includes the missing declaration.
      
      Cc: Anthony Green <green@moxielogic.com>
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      302fe123
    • S
      migration: Fix warnings caused by missing 'static' attribute · 2ae31aea
      Stefan Weil 提交于
      Warnings from the Sparse static analysis tool:
      
      migration-rdma.c:151:12: warning:
       symbol 'wrid_desc' was not declared. Should it be static?
      migration-rdma.c:190:12: warning:
       symbol 'control_desc' was not declared. Should it be static?
      migration-rdma.c:3301:19: warning:
       symbol 'rdma_read_ops' was not declared. Should it be static?
      migration-rdma.c:3308:19: warning:
       symbol 'rdma_write_ops' was not declared. Should it be static?
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Amit Shah <amit.shah@redhat.com>
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      2ae31aea
    • S
      migration: Fix warning caused by missing declaration of vmstate_dummy · 6afc14e9
      Stefan Weil 提交于
      Warning from the Sparse static analysis tool:
      
      stubs/vmstate.c:4:26: warning:
       symbol 'vmstate_dummy' was not declared. Should it be static?
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Amit Shah <amit.shah@redhat.com>
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      6afc14e9
    • S
      disas/sh4: Fix warning caused by missing 'static' attribute · 084cc839
      Stefan Weil 提交于
      Warning from the Sparse static analysis tool:
      
      disas/sh4.c:335:22: warning:
       symbol 'sh_table' was not declared. Should it be static?
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      084cc839
    • M
      translate-all: Use g_try_malloc() for dynamic translator buffer · 8b98ade3
      Markus Armbruster 提交于
      The USE_MMAP code can fail, and the caller handles the failure
      already.  Let the !USE_MMAP code fail as well, for consistency.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NGonglei <arei.gonglei@huawei.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      8b98ade3
    • M
    • M
    • M
    • M
    • M
    • G
      Fix name error in migration stream analyzation script · be7433ef
      Greg Kurz 提交于
      It fixes the following error:
      
      Traceback (most recent call last):
        File "./scripts/analyze-migration.py", line 584, in <module>
          dump.read(dump_memory = args.memory)
        File "./scripts/analyze-migration.py", line 528, in read
          self.sections[section_id].read()
        File "./scripts/analyze-migration.py", line 250, in read
          self.file.readvar(n_valid * HASH_PTE_SIZE_64)
      NameError: global name 'HASH_PTE_SIZE_64' is not defined
      Signed-off-by: NGreg Kurz <gkurz@linux.vnet.ibm.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      be7433ef
    • G
      QJSON: fix typo in author's email address · 559782cc
      Greg Kurz 提交于
      Signed-off-by: NGreg Kurz <gkurz@linux.vnet.ibm.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      559782cc
    • M
      util/uri: URI member path can be null, compare more carfully · afb30dde
      Markus Armbruster 提交于
      uri_resolve_relative() calls strcmp(bas->path, ref->path).  However,
      either argument could be null!  Evidence: the code checks for null
      after the comparison.  Spotted by Coverity.
      
      I suspect this was screwed up when we stole the code from libxml2.
      There the conditional reads
      
          xmlStrEqual((xmlChar *)bas->path, (xmlChar *)ref->path)
      
      with
      
          int
          xmlStrEqual(const xmlChar *str1, const xmlChar *str2) {
      	if (str1 == str2) return(1);
      	if (str1 == NULL) return(0);
      	if (str2 == NULL) return(0);
      	do {
      	    if (*str1++ != *str2) return(0);
      	} while (*str2++);
      	return(1);
          }
      
      Fix by replicating libxml2's logic faithfully.
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      afb30dde
    • M
    • M
    • M
      usb: Pair g_malloc() with g_free(), not free() · 0c6f807f
      Markus Armbruster 提交于
      Spotted by Coverity with preview checker ALLOC_FREE_MISMATCH enabled
      and my "coverity: Model g_free() isn't necessarily free()" model patch
      applied.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      0c6f807f
    • M
      spapr_vio: Pair g_malloc() with g_free(), not free() · 5f1d1fc5
      Markus Armbruster 提交于
      Spotted by Coverity with preview checker ALLOC_FREE_MISMATCH enabled
      and my "coverity: Model g_free() isn't necessarily free()" model patch
      applied.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NGonglei <arei.gonglei@huawei.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      5f1d1fc5
    • M
      qemu-option: Pair g_malloc() with g_free(), not free() · c0462f6d
      Markus Armbruster 提交于
      Spotted by Coverity with preview checker ALLOC_FREE_MISMATCH enabled
      and my "coverity: Model g_free() isn't necessarily free()" model patch
      applied.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NGonglei <arei.gonglei@huawei.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      c0462f6d
    • M
      qemu-option: Replace pointless use of g_malloc0() by g_malloc() · 96c044af
      Markus Armbruster 提交于
      get_opt_value() takes a write-only buffer, so zeroing it is pointless.
      We don't do it elsewhere, either.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NGonglei <arei.gonglei@huawei.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      96c044af
    • D
      libcacard: stop linking against every single 3rd party library · b41112c4
      Daniel P. Berrange 提交于
      Building QEMU results in a libcacard.so that links against
      practically the entire world
      
      	linux-vdso.so.1 =>  (0x00007fff71e99000)
      	libssl3.so => /usr/lib64/libssl3.so (0x00007f49f94b6000)
      	libsmime3.so => /usr/lib64/libsmime3.so (0x00007f49f928e000)
      	libnss3.so => /usr/lib64/libnss3.so (0x00007f49f8f67000)
      	libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007f49f8d3b000)
      	libplds4.so => /usr/lib64/libplds4.so (0x00007f49f8b36000)
      	libplc4.so => /usr/lib64/libplc4.so (0x00007f49f8931000)
      	libnspr4.so => /usr/lib64/libnspr4.so (0x00007f49f86f2000)
      	libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f49f84ed000)
      	libm.so.6 => /usr/lib64/libm.so.6 (0x00007f49f81e5000)
      	libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f49f7fe3000)
      	librt.so.1 => /usr/lib64/librt.so.1 (0x00007f49f7dda000)
      	libz.so.1 => /usr/lib64/libz.so.1 (0x00007f49f7bc4000)
      	libcap-ng.so.0 => /usr/lib64/libcap-ng.so.0 (0x00007f49f79be000)
      	libuuid.so.1 => /usr/lib64/libuuid.so.1 (0x00007f49f77b8000)
      	libgnutls.so.28 => /usr/lib64/libgnutls.so.28 (0x00007f49f749a000)
      	libSDL-1.2.so.0 => /usr/lib64/libSDL-1.2.so.0 (0x00007f49f71fd000)
      	libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f49f6fe0000)
      	libvte.so.9 => /usr/lib64/libvte.so.9 (0x00007f49f6d3f000)
      	libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f49f6b2d000)
      	libgtk-x11-2.0.so.0 => /usr/lib64/libgtk-x11-2.0.so.0 (0x00007f49f64a0000)
      	libgdk-x11-2.0.so.0 => /usr/lib64/libgdk-x11-2.0.so.0 (0x00007f49f61de000)
      	libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x00007f49f5fd1000)
      	libatk-1.0.so.0 => /usr/lib64/libatk-1.0.so.0 (0x00007f49f5daa000)
      	libcairo.so.2 => /usr/lib64/libcairo.so.2 (0x00007f49f5a9d000)
      	libgdk_pixbuf-2.0.so.0 => /usr/lib64/libgdk_pixbuf-2.0.so.0 (0x00007f49f5878000)
      	libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007f49f5500000)
      	libpangoft2-1.0.so.0 => /usr/lib64/libpangoft2-1.0.so.0 (0x00007f49f52eb000)
      	libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x00007f49f50a0000)
      	libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007f49f4e4e000)
      	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f49f4b15000)
      	libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f49f48d6000)
      	libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f49f462b000)
      	libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f49f42e8000)
      	libxenstore.so.3.0 => /usr/lib64/libxenstore.so.3.0 (0x00007f49f40de000)
      	libxenctrl.so.4.4 => /usr/lib64/libxenctrl.so.4.4 (0x00007f49f3eb6000)
      	libxenguest.so.4.4 => /usr/lib64/libxenguest.so.4.4 (0x00007f49f3c8b000)
      	libseccomp.so.2 => /usr/lib64/libseccomp.so.2 (0x00007f49f3a74000)
      	librdmacm.so.1 => /usr/lib64/librdmacm.so.1 (0x00007f49f385d000)
      	libibverbs.so.1 => /usr/lib64/libibverbs.so.1 (0x00007f49f364a000)
      	libutil.so.1 => /usr/lib64/libutil.so.1 (0x00007f49f3447000)
      	libc.so.6 => /usr/lib64/libc.so.6 (0x00007f49f3089000)
      	/lib64/ld-linux-x86-64.so.2 (0x00007f49f9902000)
      	libp11-kit.so.0 => /usr/lib64/libp11-kit.so.0 (0x00007f49f2e23000)
      	libtspi.so.1 => /usr/lib64/libtspi.so.1 (0x00007f49f2bb2000)
      	libtasn1.so.6 => /usr/lib64/libtasn1.so.6 (0x00007f49f299f000)
      	libnettle.so.4 => /usr/lib64/libnettle.so.4 (0x00007f49f276d000)
      	libhogweed.so.2 => /usr/lib64/libhogweed.so.2 (0x00007f49f2545000)
      	libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f49f22cd000)
      	libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x00007f49f20a5000)
      	libtinfo.so.5 => /usr/lib64/libtinfo.so.5 (0x00007f49f1e7a000)
      	libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007f49f1c76000)
      	libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f49f1a6f000)
      	libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f49f1865000)
      	libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007f49f1662000)
      	libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007f49f1452000)
      	libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007f49f1247000)
      	libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007f49f103c000)
      	libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007f49f0e39000)
      	libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007f49f0c35000)
      	libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007f49f09dd000)
      	libpixman-1.so.0 => /usr/lib64/libpixman-1.so.0 (0x00007f49f072f000)
      	libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007f49f0505000)
      	libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007f49f02d2000)
      	libxcb-shm.so.0 => /usr/lib64/libxcb-shm.so.0 (0x00007f49f00cd000)
      	libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x00007f49efec3000)
      	libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f49efca1000)
      	libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f49efa06000)
      	libffi.so.6 => /usr/lib64/libffi.so.6 (0x00007f49ef7fe000)
      	libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x00007f49ef5d8000)
      	libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x00007f49ef3be000)
      	libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f49ef193000)
      	libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00007f49eef83000)
      	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f49eed6c000)
      	liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x00007f49eeb46000)
      	libnl-route-3.so.200 => /usr/lib64/libnl-route-3.so.200 (0x00007f49ee8e2000)
      	libnl-3.so.200 => /usr/lib64/libnl-3.so.200 (0x00007f49ee6c4000)
      	libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f49ee2d6000)
      	libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f49ee067000)
      	libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007f49ede48000)
      	libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007f49edc46000)
      	libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0 (0x00007f49eda41000)
      	libxcb-xfixes.so.0 => /usr/lib64/libxcb-xfixes.so.0 (0x00007f49ed838000)
      	libxcb-shape.so.0 => /usr/lib64/libxcb-shape.so.0 (0x00007f49ed634000)
      	libgbm.so.1 => /usr/lib64/libgbm.so.1 (0x00007f49ed426000)
      	libwayland-client.so.0 => /usr/lib64/libwayland-client.so.0 (0x00007f49ed217000)
      	libwayland-server.so.0 => /usr/lib64/libwayland-server.so.0 (0x00007f49ed005000)
      	libglapi.so.0 => /usr/lib64/libglapi.so.0 (0x00007f49ecddb000)
      	libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007f49ecbce000)
      	libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f49ec9ca000)
      	libxcb-glx.so.0 => /usr/lib64/libxcb-glx.so.0 (0x00007f49ec7b0000)
      	libxcb-dri3.so.0 => /usr/lib64/libxcb-dri3.so.0 (0x00007f49ec5ad000)
      	libxcb-present.so.0 => /usr/lib64/libxcb-present.so.0 (0x00007f49ec3aa000)
      	libxcb-randr.so.0 => /usr/lib64/libxcb-randr.so.0 (0x00007f49ec19b000)
      	libxcb-sync.so.1 => /usr/lib64/libxcb-sync.so.1 (0x00007f49ebf94000)
      	libxshmfence.so.1 => /usr/lib64/libxshmfence.so.1 (0x00007f49ebd91000)
      	libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007f49ebb8a000)
      	libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f49eb91d000)
      	libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00007f49eb6cf000)
      	libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00007f49eb3ec000)
      	libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x00007f49eb1e8000)
      	libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00007f49eafb4000)
      	libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00007f49eada5000)
      	libkeyutils.so.1 => /usr/lib64/libkeyutils.so.1 (0x00007f49eaba0000)
      
      All libcacard actually needs are the NSS libs. Linking against the entire
      world is a regression caused by
      
        commit 9d171bd9
        Author: Michael Tokarev <mjt@tls.msk.ru>
        Date:   Thu May 8 16:48:27 2014 +0400
      
          libcacard: remove libcacard-specific CFLAGS and LIBS from global vars
      
      Which removed the setting of the LIBS variable in libcacard/Makefile.
      
      Adding it back as an empty assignment brings the linked libs back to a more
      reasonable set
      
      	linux-vdso.so.1 =>  (0x00007fff575c1000)
      	libssl3.so => /usr/lib64/libssl3.so (0x00007f7f753b1000)
      	libsmime3.so => /usr/lib64/libsmime3.so (0x00007f7f75189000)
      	libnss3.so => /usr/lib64/libnss3.so (0x00007f7f74e62000)
      	libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007f7f74c36000)
      	libplds4.so => /usr/lib64/libplds4.so (0x00007f7f74a31000)
      	libplc4.so => /usr/lib64/libplc4.so (0x00007f7f7482c000)
      	libnspr4.so => /usr/lib64/libnspr4.so (0x00007f7f745ed000)
      	libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f7f743d0000)
      	libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f7f741cc000)
      	libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f7f73fca000)
      	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f7f73c90000)
      	libc.so.6 => /usr/lib64/libc.so.6 (0x00007f7f738d3000)
      	libz.so.1 => /usr/lib64/libz.so.1 (0x00007f7f736bd000)
      	librt.so.1 => /usr/lib64/librt.so.1 (0x00007f7f734b4000)
      	/lib64/ld-linux-x86-64.so.2 (0x00007f7f757fd000)
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Cc: <qemu-stable@nongnu.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      b41112c4