summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* a9mpcore: Embed A9SCUStateAndreas Färber2013-11-053-23/+42
| | | | | | | Prepares for QOM realize. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andreas Färber <andreas.faerber@web.de>
* a9scu: QOM cleanupsAndreas Färber2013-11-051-6/+9
| | | | | | | | | Rename A9SCUState::busdev field to parent_obj and turn realizefn into an instance_init function to allow early MMIO mapping. Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andreas Färber <andreas.faerber@web.de>
* a9mpcore: Embed GICStateAndreas Färber2013-11-051-9/+16
| | | | | | | Prepares for conversion to QOM realize. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andreas Färber <andreas.faerber@web.de>
* arm_gic: Extract headers hw/intc/arm_gic{,_common}.hAndreas Färber2013-11-054-87/+145
| | | | | | | Rename NCPU to GIC_NCPU and move GICState away from gic_internal.h. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andreas Färber <afaerber@suse.de>
* a9mpcore: Split off instance_initAndreas Färber2013-11-051-3/+9
| | | | | | | Prepares for QOM realize. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andreas Färber <andreas.faerber@web.de>
* milkymist-uart: Use Device::realize instead of SysBusDevice::initAntony Pavlov2013-11-051-10/+14
| | | | | | | | | | Use of SysBusDevice::init is deprecated. Use Device::realize instead. Also introduce TypeInfo::instance_init milkymist_uart_init(). Reported-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
* qtest: Prepare QOM machine testsAndreas Färber2013-11-052-0/+279
| | | | | | | | | | | Instantiate all [*] machines per target, so that they get a bit of test coverage at all. This has proven helpful during QOM refactorings. [*] ppcemb target contains some non-working non-embedded machines, and ppc405 CPUs are not available there either. i386 and x86_64 do not cover pc*-x.y or xenfv. Signed-off-by: Andreas Färber <afaerber@suse.de>
* leon3: Don't enforce use of -bios with qtestAndreas Färber2013-11-051-1/+2
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* shix: Don't require firmware presence for qtestAndreas Färber2013-11-052-8/+11
| | | | | | | | Adopt error_report() while at it. Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Andreas Färber <afaerber@suse.de>
* shix: Drop debug outputAndreas Färber2013-11-051-7/+0Star
| | | | | Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Andreas Färber <afaerber@suse.de>
* milkymist: Suppress -kernel/-bios/-drive error for qtestAndreas Färber2013-11-051-1/+2
| | | | | Acked-by: Michael Walle <michael@walle.cc> Signed-off-by: Andreas Färber <afaerber@suse.de>
* an5206: Don't enforce use of kernel for qtestAndreas Färber2013-11-051-0/+4
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* mcf5208: Don't enforce use of kernel for qtestAndreas Färber2013-11-051-0/+4
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* axis_dev88: Don't enforce use of kernel for qtestAndreas Färber2013-11-051-5/+6
| | | | | Reviewed-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
* armv7m: Don't enforce use of kernel for qtestAndreas Färber2013-11-051-11/+14
| | | | | | Adopt error_report(). Signed-off-by: Andreas Färber <afaerber@suse.de>
* exynos4_boards: Silence lack of -smp 2 warning for qtestAndreas Färber2013-11-051-1/+2
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* omap_sx1: Don't enforce use of kernel or flash for qtestAndreas Färber2013-11-051-1/+2
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* palm: Don't enforce loading ROM or kernel for qtestAndreas Färber2013-11-051-1/+2
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* z2: Don't enforce use of -pflash for qtestAndreas Färber2013-11-051-2/+3
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* gumstix: Don't enforce use of -pflash for qtestAndreas Färber2013-11-051-4/+7
| | | | Signed-off-by: Andreas Färber <afaerber@suse.de>
* mainstone: Don't enforce use of -pflash for qtestAndreas Färber2013-11-051-1/+4
| | | | | | | | Simply skip flash setup for now. Also drop useless debug output. Signed-off-by: Andreas Färber <afaerber@suse.de>
* puv3: Turn puv3_load_kernel() into a no-op for qtest without -kernelAndreas Färber2013-11-051-0/+4
| | | | | | | Replacing the assert() with more user-friendly error handling is left for a follow-up. Signed-off-by: Andreas Färber <afaerber@suse.de>
* mips_mipssim: Silence BIOS loading warning for qtestAndreas Färber2013-11-051-1/+3
| | | | | Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Andreas Färber <afaerber@suse.de>
* Merge tag 'for_anthony' of git://git.kernel.org/pub/scm/virt/kvm/mst/qemuAndreas Färber2013-11-054-8/+10
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pci, pc, pvpanic bug fixes This fixes strange pvpanic behaviour: you had to pause to let VM continue (and potentially reboot on panic if enabled). This also fixes two bugs reported by Andreas. One is a long-standing bug exposed by recent pci changes, the other affects old piix machine types and was caused by recent acpi changes. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
| * vl: allow "cont" from panicked statePaolo Bonzini2013-11-042-7/+2Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After reporting the GUEST_PANICKED monitor event, QEMU stops the VM. The reason for this is that events are edge-triggered, and can be lost if management dies at the wrong time. Stopping a panicked VM lets management know of a panic even if it has crashed; management can learn about the panic when it restarts and queries running QEMU processes. The downside is of course that the VM will be paused while management is not running, but that is acceptable if it only happens with explicit "-device pvpanic". Upon learning of a panic, management (if configured to do so) can pick a variety of behaviors: leave the VM paused, reset it, destroy it. In addition to all of these behaviors, it is possible to dump the VM core from the host. However, right now, the panicked state is irreversible, and can only be exited by resetting the machine. This means that any policy decision is entirely in the hands of the host. In particular there is no way to use the "reboot on panic" option together with pvpanic. This patch makes the panicked state reversible (and removes various workarounds that were there because of the state being irreversible). With this change, management has a wider set of possible policies: it can just log the crash and leave policy to the guest, it can leave the VM paused. In particular, the "log the crash and continue" is implemented simply by sending a "cont" as soon as management learns about the panic. Management could also implement the "irreversible paused state" itself. And again, all such actions can be coupled with dumping the VM core. Unfortunately we cannot change the behavior of 1.6.0. Thus, even if it uses "-device pvpanic", management should check for "cont" failures. If "cont" fails, management can then log that the VM remained paused and urge the administrator to update QEMU. Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
| * exec: limit system memory sizeMichael S. Tsirkin2013-11-041-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The page table logic in exec.c assumes that memory addresses are at most TARGET_PHYS_ADDR_SPACE_BITS. But pci addresses are full 64 bit so if we try to render them ignoring the extra bits, we get strange effects with sections overlapping each other. To fix, simply limit the system memory size to 1 << TARGET_PHYS_ADDR_SPACE_BITS, pci addresses will be rendered within that. Cc: qemu-stable@nongnu.org Reported-by: Andreas Färber <afaerber@suse.de> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
| * pc: disable acpi info for isapc and old pc machineMichael S. Tsirkin2013-11-041-0/+2
|/ | | | | | | | | Disable acpi build for isapc and no_kvmclock machine types (used by xen), since acpi build currently expects pci. Reported-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
* Merge remote-tracking branch 'kwolf/tags/for-anthony' into stagingAnthony Liguori2013-10-3135-163/+1156
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Block patches for 1.7.0-rc0 (v2) # gpg: Signature made Thu 31 Oct 2013 04:44:39 PM CET using RSA key ID C88F2FD6 # gpg: Can't check signature: public key not found * kwolf/tags/for-anthony: (30 commits) vmdk: Implment bdrv_get_specific_info qapi: Add optional field 'compressed' to ImageInfo qemu-iotests: prefill some data to test image sheepdog: check simultaneous create in resend_aioreq sheepdog: cancel aio requests if possible sheepdog: make add_aio_request and send_aioreq void functions sheepdog: try to reconnect to sheepdog after network error coroutine: add co_aio_sleep_ns() to allow sleep in block drivers sheepdog: reload inode outside of resend_aioreq sheepdog: handle vdi objects in resend_aio_req sheepdog: check return values of qemu_co_recv/send correctly qemu-iotests: Test case for backing file deletion qemu-iotests: drop duplicated "create_image" qemu-iotests: Fix 051 reference output block: Avoid unecessary drv->bdrv_getlength() calls block: Disable BDRV_O_COPY_ON_READ for the backing file ahci: fix win7 hang on boot sheepdog: pass copy_policy in the request sheepdog: explicitly set copies as type uint8_t block: Don't copy backing file name on error ... Message-id: 1383064269-27720-1-git-send-email-kwolf@redhat.com Signed-off-by: Anthony Liguori <anthony@codemonkey.ws>
| * vmdk: Implment bdrv_get_specific_infoFam Zheng2013-10-314-6/+93
| | | | | | | | | | | | | | Implement .bdrv_get_specific_info to return the extent information. Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * qapi: Add optional field 'compressed' to ImageInfoFam Zheng2013-10-301-1/+3
| | | | | | | | | | | | Signed-off-by: Fam Zheng <famz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * qemu-iotests: prefill some data to test imageFam Zheng2013-10-301-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Case 030 occasionally fails because of block job compltes too fast to be captured by script, and 'unexpected qmp event' of job completion causes the test failure. Simply fill in some data to the test image to make this false alarm less likely to happen. (For other benefits to prefill data to test image, see also commit ab68cdfaa). Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: check simultaneous create in resend_aioreqMORITA Kazutaka2013-10-301-32/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After reconnection happens, all the inflight requests are moved to the failed request list. As a result, sd_co_rw_vector() can send another create request before resend_aioreq() resends a create request from the failed list. This patch adds a helper function check_simultaneous_create() and checks simultaneous create requests more strictly in resend_aioreq(). Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: cancel aio requests if possibleMORITA Kazutaka2013-10-301-11/+59
| | | | | | | | | | | | | | | | | | | | | | This patch tries to cancel aio requests in pending queue and failed queue. When the sheepdog driver cannot cancel the requests, it waits for them to be completed. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: make add_aio_request and send_aioreq void functionsMORITA Kazutaka2013-10-301-49/+17Star
| | | | | | | | | | | | | | | | | | | | These functions no longer return errors. We can make them void functions and simplify the codes. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: try to reconnect to sheepdog after network errorMORITA Kazutaka2013-10-301-14/+66
| | | | | | | | | | | | | | | | | | | | | | | | This introduces a failed request queue and links all the inflight requests to the list after network error happens. After QEMU reconnects to the sheepdog server successfully, the sheepdog block driver will retry all the requests in the failed queue. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * coroutine: add co_aio_sleep_ns() to allow sleep in block driversMORITA Kazutaka2013-10-302-0/+23
| | | | | | | | | | | | | | | | | | | | This helper function behaves similarly to co_sleep_ns(), but the sleeping coroutine will be resumed when using qemu_aio_wait(). Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: reload inode outside of resend_aioreqMORITA Kazutaka2013-10-301-14/+19
| | | | | | | | | | | | | | | | | | | | This prepares for using resend_aioreq() after reconnecting to the sheepdog server. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: handle vdi objects in resend_aio_reqMORITA Kazutaka2013-10-301-5/+16
| | | | | | | | | | | | | | | | | | | | The current resend_aio_req() doesn't work when the request is against vdi objects. This fixes the problem. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: check return values of qemu_co_recv/send correctlyMORITA Kazutaka2013-10-301-8/+8
| | | | | | | | | | | | | | | | | | | | If qemu_co_recv/send doesn't return the specified length, it means that an error happened. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Tested-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Liu Yuan <namei.unix@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * qemu-iotests: Test case for backing file deletionMax Reitz2013-10-303-0/+68
| | | | | | | | | | | | | | | | | | | | | | Add a test case for trying to open an image file where it is impossible to open its backing file (in this case, because it was deleted). When doing this, qemu (or qemu-io in this case) should not crash but rather print an appropriate error message. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * qemu-iotests: drop duplicated "create_image"Fam Zheng2013-10-301-12/+2Star
| | | | | | | | | | | | | | There's a same common function in iotests.py Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * qemu-iotests: Fix 051 reference outputKevin Wolf2013-10-291-1/+1
| | | | | | | | | | | | Commit 684b254 forgot to update it. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * block: Avoid unecessary drv->bdrv_getlength() callsKevin Wolf2013-10-295-7/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The block layer generally keeps the size of an image cached in bs->total_sectors so that it doesn't have to perform expensive operations to get the size whenever it needs it. This doesn't work however when using a backend that can change its size without qemu being aware of it, i.e. passthrough of removable media like CD-ROMs or floppy disks. For this reason, the caching is disabled when a removable device is used. It is obvious that checking whether the _guest_ device has removable media isn't the right thing to do when we want to know whether the size of the host backend can change. To make things worse, non-top-level BlockDriverStates never have any device attached, which makes qemu assume they are removable, so drv->bdrv_getlength() is always called on the protocol layer. In the case of raw-posix, this causes unnecessary lseek() system calls, which turned out to be rather expensive. This patch completely changes the logic and disables bs->total_sectors caching only for certain block driver types, for which a size change is expected: host_cdrom and host_floppy on POSIX, host_device on win32; also the raw format in case it sits on top of one of these protocols, but in the common case the nested bdrv_getlength() call on the protocol driver will use the cache again and avoid an expensive drv->bdrv_getlength() call. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
| * block: Disable BDRV_O_COPY_ON_READ for the backing fileThibaut LAURENT2013-10-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 0ebd24e0a203cf2852c310b59fbe050190dc6c8c, bdrv_open_common will throw an error when trying to open a file read-only with the BDRV_O_COPY_ON_READ flag set. Although BDRV_O_RDWR is unset for the backing files, BDRV_O_COPY_ON_READ is still passed on if copy-on-read was requested for the drive. Let's unset this flag too before opening the backing file, or bdrv_open_common will fail. Signed-off-by: Thibaut LAURENT <thibaut.laurent@gmail.com> Reviewed-by: Benoit Canet <benoit@irqsave.net> Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * ahci: fix win7 hang on bootAlexander Graf2013-10-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When AHCI executes an asynchronous IDE command, it checked DRDY without checking either DRQ or BSY. This sometimes caused interrupt to be sent before command is actually completed. This resulted in a race condition: if guest then managed to access the device before command has completed, it would hang waiting for an interrupt. This was observed with windows 7 guests. To fix, check for DRQ or BSY in additiona to DRDY, if set, the command is asynchronous so delay the interrupt until asynchronous done callback is invoked. Reported-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Tested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: pass copy_policy in the requestLiu Yuan2013-10-281-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently copy_policy isn't used. Recent sheepdog supports erasure coding, which make use of copy_policy internally, but require client explicitly passing copy_policy from base inode to newly creately inode for snapshot related operations. If connected sheep daemon doesn't utilize copy_policy, passing it to sheep daemon is just one extra null effect operation. So no compatibility problem. With this patch, sheepdog can provide erasure coded volume for QEMU VM. Cc: Kevin Wolf <kwolf@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Liu Yuan <namei.unix@gmail.com> Acked-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * sheepdog: explicitly set copies as type uint8_tLiu Yuan2013-10-281-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'copies' is actually uint8_t since day one, but request headers and some helper functions parameterize it as uint32_t for unknown reasons and effectively reserve 24 bytes for possible future use. This patch explicitly set the correct for copies and reserve the left bytes. This is a preparation patch that allow passing copy_policy in request header. Cc: Kevin Wolf <kwolf@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Liu Yuan <namei.unix@gmail.com> Acked-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * block: Don't copy backing file name on errorMax Reitz2013-10-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | bdrv_open_backing_file() tries to copy the backing file name using pstrcpy directly after calling bdrv_open() to open the backing file without checking whether that was actually successful. If it was not, ps->backing_hd->file will probably be NULL and qemu will crash. Fix this by moving pstrcpy after checking whether bdrv_open() succeeded. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Benoit Canet <benoit@irqsave.net> Reviewed-by: Amos Kong <kongjianjun@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * tests: Multiboot mmap test caseKevin Wolf2013-10-289-0/+584
| | | | | | | | | | | | | | | | | | | | | | | | This adds a test case for Multiboot memory map in the tests/multiboot directory, where future i386 test kernels can be dropped. Because this requires an x86 build host and an installed 32 bit libgcc, the test is not part of a regular 'make check'. The reference output for the test is verified against test runs of the same multiboot kernel booted by some GRUB 0.97. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| * ide-test: Check what happens with bus mastering disabledKevin Wolf2013-10-281-0/+26
| | | | | | | | | | | | The main goal is that qemu doesn't crash. Signed-off-by: Kevin Wolf <kwolf@redhat.com>