[Patch] qemu-clock: add an alarm timer based on timerfd

    timerfd is a new(ish) mechanism provided in the 2.6.25+ Linux kernels that
    allows for a high resolution event timer signaled through a file descriptor.
    This patch adds an alarm timer implementation using timerfd.

    timerfd has a couple advantages over dynticks.  Namely, it's fd based instead
    of signal based which reduces the likelihood of receiving EINTR failure codes.

    Because we can't process timers in a signal handler, we write to a pipe() and
    read that in the main loop.  timerfd allows us to avoid the extra write to a
    pipe.

    Finally, since timerfd is just a file descriptor, it could conceivably used to
    implement per-thread alarm timers.  It also would integrate very easily in a
    glib main loop.

    Unfortunately, there's a lot of Windows code in qemu-timer.c and main-loop.c
    right now otherwise the refactoring would be trivial.  I'll leave that for
    another day.

    Verified this fix on qemu 1.4 with Win7 guest, which will save about 3% CPU load!
[Patch] Optimize CPU load while playing sound with spice.
[Patch] virtio-pci: pass real with_irqfd to virtio_pci_set_guest_notifier()

virtio_pci_set_guest_notifiers() checks whether irqfd can be used and
whether MSI-X is enabled for the PCI adapter.  But then it calls
virtio_pci_set_guest_notifier() and passes kvm_msi_via_irqfd_enabled()
instead of with_irqfd.

When MSI-X is disabled but irqfd is allowed this means that
guest_notifier has neither irqfd nor a
virtio_queue_guest_notifier_read() handler.  Therefore the guest cannot
receive notifications.

This issue is triggered by a Windows 7 Professional 64-bit guest with
-device virtio-blk-pci,x-data-plane=on.  The guest driver does not
enable MSI-X and the guest gets stuck at the Windows boot screen since
it does not receive notifications.