)]}'
{
  "log": [
    {
      "commit": "aa2fbe6d44892070d78995f0df875ce930904e29",
      "tree": "bc2350a65c4e656df5597ebe4111bcfd98116bfe",
      "parents": [
        "f3bff6318fa0f54956b02ed451d9b120441006ea"
      ],
      "author": {
        "name": "Yang Zhang",
        "email": "yang.z.zhang@Intel.com",
        "time": "Thu Apr 11 19:21:40 2013 +0800"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Apr 15 23:20:34 2013 -0300"
      },
      "message": "KVM: Let ioapic know the irq line status\n\nUserspace may deliver RTC interrupt without query the status. So we\nwant to track RTC EOI for this case.\n\nSigned-off-by: Yang Zhang \u003cyang.z.zhang@Intel.com\u003e\nReviewed-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "05e07f9bdb0ea3c1c52029e6c4db77c9f7c92a5c",
      "tree": "d84ca956c581c7657c21d495062354d8fb1a349c",
      "parents": [
        "b8c07d55d010702eff61562cf9a77366833d9da2"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Apr 04 13:27:21 2013 +0300"
      },
      "committer": {
        "name": "Gleb Natapov",
        "email": "gleb@redhat.com",
        "time": "Sun Apr 07 14:53:47 2013 +0300"
      },
      "message": "kvm: fix MMIO/PIO collision misdetection\n\nPIO and MMIO are separate address spaces, but\nioeventfd registration code mistakenly detected\ntwo eventfds as duplicate if they use the same address,\neven if one is PIO and another one MMIO.\n\nReviewed-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\n"
    },
    {
      "commit": "2b83451b45d720ca38c03878ce42ff9139cad9e3",
      "tree": "374b4ab82ffc115dc8cb76f783f7735521b6c7bf",
      "parents": [
        "060f0ce6ff975decd1e0ee318c08e228bccbee1e"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Thu Feb 28 12:33:20 2013 +0100"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Tue Mar 05 19:12:17 2013 -0300"
      },
      "message": "KVM: ioeventfd for virtio-ccw devices.\n\nEnhance KVM_IOEVENTFD with a new flag that allows to attach to virtio-ccw\ndevices on s390 via the KVM_VIRTIO_CCW_NOTIFY_BUS.\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "a0f155e9646d5f1c263f6f9aae880151100243bb",
      "tree": "761de60204c9c0a5c2208775295c6baa9e5693fb",
      "parents": [
        "6a773cb825afb74a600a08fe87fab55ee98ec2ac"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Thu Feb 28 12:33:18 2013 +0100"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Tue Mar 05 19:12:16 2013 -0300"
      },
      "message": "KVM: Initialize irqfd from kvm_init().\n\nCurrently, eventfd introduces module_init/module_exit functions\nto initialize/cleanup the irqfd workqueue. This only works, however,\nif no other module_init/module_exit functions are built into the\nsame module.\n\nLet\u0027s just move the initialization and cleanup to kvm_init and kvm_exit.\nThis way, it is also clearer where kvm startup may fail.\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "b67bfe0d42cac56c512dd5da4b1b347a23f4b70a",
      "tree": "3d465aea12b97683f26ffa38eba8744469de9997",
      "parents": [
        "1e142b29e210b5dfb2deeb6ce2210b60af16d2a6"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "sasha.levin@oracle.com",
        "time": "Wed Feb 27 17:06:00 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:24 2013 -0800"
      },
      "message": "hlist: drop the node parameter from iterators\n\nI\u0027m not sure why, but the hlist for each entry iterators were conceived\n\n        list_for_each_entry(pos, head, member)\n\nThe hlist ones were greedy and wanted an extra parameter:\n\n        hlist_for_each_entry(tpos, pos, head, member)\n\nWhy did they need an extra pos parameter? I\u0027m not quite sure. Not only\nthey don\u0027t really need it, it also prevents the iterator from looking\nexactly like the list iterator, which is unfortunate.\n\nBesides the semantic patch, there was some manual work required:\n\n - Fix up the actual hlist iterators in linux/list.h\n - Fix up the declaration of other iterators based on the hlist ones.\n - A very small amount of places were using the \u0027node\u0027 parameter, this\n was modified to use \u0027obj-\u003emember\u0027 instead.\n - Coccinelle didn\u0027t handle the hlist_for_each_entry_safe iterator\n properly, so those had to be fixed up manually.\n\nThe semantic patch which is mostly the work of Peter Senna Tschudin is here:\n\n@@\niterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;\n\ntype T;\nexpression a,c,d,e;\nidentifier b;\nstatement S;\n@@\n\n-T b;\n    \u003c+... when !\u003d b\n(\nhlist_for_each_entry(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_continue(a,\n- b,\nc) S\n|\nhlist_for_each_entry_from(a,\n- b,\nc) S\n|\nhlist_for_each_entry_rcu(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_rcu_bh(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_continue_rcu_bh(a,\n- b,\nc) S\n|\nfor_each_busy_worker(a, c,\n- b,\nd) S\n|\nax25_uid_for_each(a,\n- b,\nc) S\n|\nax25_for_each(a,\n- b,\nc) S\n|\ninet_bind_bucket_for_each(a,\n- b,\nc) S\n|\nsctp_for_each_hentry(a,\n- b,\nc) S\n|\nsk_for_each(a,\n- b,\nc) S\n|\nsk_for_each_rcu(a,\n- b,\nc) S\n|\nsk_for_each_from\n-(a, b)\n+(a)\nS\n+ sk_for_each_from(a) S\n|\nsk_for_each_safe(a,\n- b,\nc, d) S\n|\nsk_for_each_bound(a,\n- b,\nc) S\n|\nhlist_for_each_entry_safe(a,\n- b,\nc, d, e) S\n|\nhlist_for_each_entry_continue_rcu(a,\n- b,\nc) S\n|\nnr_neigh_for_each(a,\n- b,\nc) S\n|\nnr_neigh_for_each_safe(a,\n- b,\nc, d) S\n|\nnr_node_for_each(a,\n- b,\nc) S\n|\nnr_node_for_each_safe(a,\n- b,\nc, d) S\n|\n- for_each_gfn_sp(a, c, d, b) S\n+ for_each_gfn_sp(a, c, d) S\n|\n- for_each_gfn_indirect_valid_sp(a, c, d, b) S\n+ for_each_gfn_indirect_valid_sp(a, c, d) S\n|\nfor_each_host(a,\n- b,\nc) S\n|\nfor_each_host_safe(a,\n- b,\nc, d) S\n|\nfor_each_mesh_entry(a,\n- b,\nc, d) S\n)\n    ...+\u003e\n\n[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]\n[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]\n[akpm@linux-foundation.org: checkpatch fixes]\n[akpm@linux-foundation.org: fix warnings]\n[akpm@linux-foudnation.org: redo intrusive kvm changes]\nTested-by: Peter Senna Tschudin \u003cpeter.senna@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49f8a1a5394d8baee5e56fb71e5cf993c228689a",
      "tree": "6fed581f19ce97283e73a970466d653b60bbe9f1",
      "parents": [
        "d2ff4fc557a4c5248b2d99b0d48e47a246d994b2"
      ],
      "author": {
        "name": "Alex Williamson",
        "email": "alex.williamson@redhat.com",
        "time": "Thu Dec 06 14:44:59 2012 -0700"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Dec 10 18:16:36 2012 -0200"
      },
      "message": "kvm: Fix irqfd resampler list walk\n\nTypo for the next pointer means we\u0027re walking random data here.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@redhat.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "914daba865cb5c38cd5fdee024ca38029315b38f",
      "tree": "5d0906d4fd82da801fb230256fc6bb1abb25bd0a",
      "parents": [
        "45e3cc7d9fe69844cd12d51c511e1e98d156bbe1"
      ],
      "author": {
        "name": "Alexander Graf",
        "email": "agraf@suse.de",
        "time": "Tue Oct 09 00:22:59 2012 +0200"
      },
      "committer": {
        "name": "Alexander Graf",
        "email": "agraf@suse.de",
        "time": "Thu Dec 06 01:33:49 2012 +0100"
      },
      "message": "KVM: Distangle eventfd code from irqchip\n\nThe current eventfd code assumes that when we have eventfd, we also have\nirqfd for in-kernel interrupt delivery. This is not necessarily true. On\nPPC we don\u0027t have an in-kernel irqchip yet, but we can still support easily\nsupport eventfd.\n\nSigned-off-by: Alexander Graf \u003cagraf@suse.de\u003e\n"
    },
    {
      "commit": "ecefbd94b834fa32559d854646d777c56749ef1c",
      "tree": "ca8958900ad9e208a8e5fb7704f1b66dc76131b4",
      "parents": [
        "ce57e981f2b996aaca2031003b3f866368307766",
        "3d11df7abbff013b811d5615320580cd5d9d7d31"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 04 09:30:33 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 04 09:30:33 2012 -0700"
      },
      "message": "Merge tag \u0027kvm-3.7-1\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\nPull KVM updates from Avi Kivity:\n \"Highlights of the changes for this release include support for vfio\n  level triggered interrupts, improved big real mode support on older\n  Intels, a streamlines guest page table walker, guest APIC speedups,\n  PIO optimizations, better overcommit handling, and read-only memory.\"\n\n* tag \u0027kvm-3.7-1\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm: (138 commits)\n  KVM: s390: Fix vcpu_load handling in interrupt code\n  KVM: x86: Fix guest debug across vcpu INIT reset\n  KVM: Add resampling irqfds for level triggered interrupts\n  KVM: optimize apic interrupt delivery\n  KVM: MMU: Eliminate pointless temporary \u0027ac\u0027\n  KVM: MMU: Avoid access/dirty update loop if all is well\n  KVM: MMU: Eliminate eperm temporary\n  KVM: MMU: Optimize is_last_gpte()\n  KVM: MMU: Simplify walk_addr_generic() loop\n  KVM: MMU: Optimize pte permission checks\n  KVM: MMU: Update accessed and dirty bits after guest pagetable walk\n  KVM: MMU: Move gpte_access() out of paging_tmpl.h\n  KVM: MMU: Optimize gpte_access() slightly\n  KVM: MMU: Push clean gpte write protection out of gpte_access()\n  KVM: clarify kvmclock documentation\n  KVM: make processes waiting on vcpu mutex killable\n  KVM: SVM: Make use of asm.h\n  KVM: VMX: Make use of asm.h\n  KVM: VMX: Make lto-friendly\n  KVM: x86: lapic: Clean up find_highest_vector() and count_vectors()\n  ...\n\nConflicts:\n\tarch/s390/include/asm/processor.h\n\tarch/x86/kvm/i8259.c\n"
    },
    {
      "commit": "7a84428af7ca6a847f058c9ff244a18a2664fd1b",
      "tree": "e6c573c701736a75d618b670d66e98398b62769f",
      "parents": [
        "1e08ec4a130e2745d96df169e67c58df98a07311"
      ],
      "author": {
        "name": "Alex Williamson",
        "email": "alex.williamson@redhat.com",
        "time": "Fri Sep 21 11:58:03 2012 -0600"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Sun Sep 23 13:50:15 2012 +0200"
      },
      "message": "KVM: Add resampling irqfds for level triggered interrupts\n\nTo emulate level triggered interrupts, add a resample option to\nKVM_IRQFD.  When specified, a new resamplefd is provided that notifies\nthe user when the irqchip has been resampled by the VM.  This may, for\ninstance, indicate an EOI.  Also in this mode, posting of an interrupt\nthrough an irqfd only asserts the interrupt.  On resampling, the\ninterrupt is automatically de-asserted prior to user notification.\nThis enables level triggered interrupts to be posted and re-enabled\nfrom vfio with no userspace intervention.\n\nAll resampling irqfds can make use of a single irq source ID, so we\nreserve a new one for this interface.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "43829731dd372d04d6706c51052b9dabab9ca356",
      "tree": "2cfa255dcec2f5cc867ab39cdcf4a25eae54845f",
      "parents": [
        "ae930e0f4e66fd540c6fbad9f1e2a7743d8b9afe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 20 14:51:24 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 20 14:51:24 2012 -0700"
      },
      "message": "workqueue: deprecate flush[_delayed]_work_sync()\n\nflush[_delayed]_work_sync() are now spurious.  Mark them deprecated\nand convert all users to flush[_delayed]_work().\n\nIf you\u0027re cc\u0027d and wondering what\u0027s going on: Now all workqueues are\nnon-reentrant and the regular flushes guarantee that the work item is\nnot pending or running on any CPU on return, so there\u0027s no reason to\nuse the sync flushes at all and they\u0027re going away.\n\nThis patch doesn\u0027t make any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Ian Campbell \u003cian.campbell@citrix.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Mattia Dongili \u003cmalattia@linux.it\u003e\nCc: Kent Yoder \u003ckey@linux.vnet.ibm.com\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Karsten Keil \u003cisdn@linux-pingi.de\u003e\nCc: Bryan Wu \u003cbryan.wu@canonical.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: Florian Tobias Schandinat \u003cFlorianSchandinat@gmx.de\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: linux-wireless@vger.kernel.org\nCc: Anton Vorontsov \u003ccbou@mail.ru\u003e\nCc: Sangbeom Kim \u003csbkim73@samsung.com\u003e\nCc: \"James E.J. Bottomley\" \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Petr Vandrovec \u003cpetr@vandrovec.name\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e \n"
    },
    {
      "commit": "326cf0334bacfdf43039cf75997a022b9e51535d",
      "tree": "568fc99ad9bdde8fa382ff6657568c2e2ec2e4fc",
      "parents": [
        "f36992e31284131a978d07bb14e582ce67b46b64"
      ],
      "author": {
        "name": "Alex Williamson",
        "email": "alex.williamson@redhat.com",
        "time": "Fri Jun 29 09:56:24 2012 -0600"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Jul 02 21:10:30 2012 -0300"
      },
      "message": "KVM: Sanitize KVM_IRQFD flags\n\nWe only know of one so far.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@redhat.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "d4db2935e4fffeba42540b0dc9d85e3036701221",
      "tree": "57b69cdc6e976f649e48f81570c8d912a7d44d7e",
      "parents": [
        "ca24a145573124732152daff105ba68cc9a2b545"
      ],
      "author": {
        "name": "Alex Williamson",
        "email": "alex.williamson@redhat.com",
        "time": "Fri Jun 29 09:56:08 2012 -0600"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Jul 02 21:10:30 2012 -0300"
      },
      "message": "KVM: Pass kvm_irqfd to functions\n\nPrune this down to just the struct kvm_irqfd so we can avoid\nchanging function definition for every flag or field we use.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@redhat.com\u003e\nAcked-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "743eeb0b01d2fbf4154bf87bff1ebb6fb18aeb7a",
      "tree": "5392464930f7e77131d65f32ba96ce4665307629",
      "parents": [
        "0d460ffc0956d2dbe12ca9f5f6aa0f8701ea9d73"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "levinsasha928@gmail.com",
        "time": "Wed Jul 27 16:00:48 2011 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Sun Sep 25 19:17:59 2011 +0300"
      },
      "message": "KVM: Intelligent device lookup on I/O bus\n\nCurrently the method of dealing with an IO operation on a bus (PIO/MMIO)\nis to call the read or write callback for each device registered\non the bus until we find a device which handles it.\n\nSince the number of devices on a bus can be significant due to ioeventfds\nand coalesced MMIO zones, this leads to a lot of overhead on each IO\noperation.\n\nInstead of registering devices, we now register ranges which points to\na device. Lookup is done using an efficient bsearch instead of a linear\nsearch.\n\nPerformance test was conducted by comparing exit count per second with\n200 ioeventfds created on one byte and the guest is trying to access a\ndifferent byte continuously (triggering usermode exits).\nBefore the patch the guest has achieved 259k exits per second, after the\npatch the guest does 274k exits per second.\n\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "7bc30c23c8ace3821a6732bfbe7e8f1b0995a63e",
      "tree": "3440c323f331fb2c0b5e84c206b3c73d70826ee6",
      "parents": [
        "ccfeef0ff76ebd632ae51bc56700f0072c4f1864",
        "bd22f5cfcfe8f68bf43b72daf4530cd7eedc9b7a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:33:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:33:04 2011 -0700"
      },
      "message": "Merge branch \u0027kvm-updates/2.6.39\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\n* \u0027kvm-updates/2.6.39\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm:\n  KVM: move and fix substitue search for missing CPUID entries\n  KVM: fix XSAVE bit scanning\n  KVM: Enable async page fault processing\n  KVM: fix crash on irqfd deassign\n"
    },
    {
      "commit": "9e02fb963352c5ad075d80dd3e852fbee9585575",
      "tree": "d88553e3c2bb6affac29b529ce618eed95b8e918",
      "parents": [
        "6221f222c0ebf1acdf7abcf927178f40e1a65e2a"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Mar 17 10:53:33 2011 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Wed Apr 06 13:15:55 2011 +0300"
      },
      "message": "KVM: fix crash on irqfd deassign\n\nirqfd in kvm used flush_work incorrectly: it assumed that work scheduled\npreviously can\u0027t run after flush_work, but since kvm uses a non-reentrant\nworkqueue (by means of schedule_work) we need flush_work_sync to get that\nguarantee.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nReported-by: Jean-Philippe Menil \u003cjean-philippe.menil@univ-nantes.fr\u003e\nTested-by: Jean-Philippe Menil \u003cjean-philippe.menil@univ-nantes.fr\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "c8ce057eafd49da6a7afe7791bd84163f65f6132",
      "tree": "a40cff496f6ee5e2857509af0a2c1ccd89f7db1e",
      "parents": [
        "676646ee4b0931a1ef54389786983a43eb913a6f"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Mar 06 13:03:26 2011 +0200"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Mar 17 13:08:33 2011 -0300"
      },
      "message": "KVM: improve comment on rcu use in irqfd_deassign\n\nThe RCU use in kvm_irqfd_deassign is tricky: we have rcu_assign_pointer\nbut no synchronize_rcu: synchronize_rcu is done by kvm_irq_routing_update\nwhich we share a spinlock with.\n\nFix up a comment in an attempt to make this clearer.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "bd2b53b20fcd0d6c4c815b54e6d464e34429d3a4",
      "tree": "1f225ea8b74368056bc144de14a1015fa4ebde29",
      "parents": [
        "104f226bfd0a607ca0e804ae4907555374f72cd9"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Nov 18 19:09:08 2010 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Wed Jan 12 11:29:38 2011 +0200"
      },
      "message": "KVM: fast-path msi injection with irqfd\n\nStore irq routing table pointer in the irqfd object,\nand use that to inject MSI directly without bouncing out to\na kernel thread.\n\nWhile we touch this structure, rearrange irqfd fields to make fastpath\nbetter packed for better cache utilization.\n\nThis also adds some comments about locking rules and rcu usage in code.\n\nSome notes on the design:\n- Use pointer into the rt instead of copying an entry,\n  to make it possible to use rcu, thus side-stepping\n  locking complexities.  We also save some memory this way.\n- Old workqueue code is still used for level irqs.\n  I don\u0027t think we DTRT with level anyway, however,\n  it seems easier to keep the code around as\n  it has been thought through and debugged, and fix level later than\n  rip out and re-instate it later.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nAcked-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nAcked-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "6bbfb2653177a00f70e57e53625502d43804fed0",
      "tree": "b0196884ead501481a3ae3a27d45b41b43ec117d",
      "parents": [
        "c79bd89282136a4516e842fa542d6abf902ddeac"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Sep 19 19:02:31 2010 +0200"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Sep 23 11:31:51 2010 -0300"
      },
      "message": "KVM: fix irqfd assign/deassign race\n\nI think I see the following (theoretical) race:\n\nDuring irqfd assign, we drop irqfds lock before we\nschedule inject work. Therefore, deassign running\non another CPU could cause shutdown and flush to run\nbefore inject, causing user after free in inject.\n\nA simple fix it to schedule inject under the lock.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nAcked-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "221d059d15f1c8bd070a63fd45cd8d2598af5f99",
      "tree": "d3f58d21aa9cd5a28a29f5187ae9f03bd4f9e089",
      "parents": [
        "9fb2d2b4ff292a01ae30da003d1dc097917b0988"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Sun May 23 18:37:00 2010 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Sun Aug 01 10:35:51 2010 +0300"
      },
      "message": "KVM: Update Red Hat copyrights\n\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "8b97fb0fcba0e119d539ef6126ddd1d7ba9c007f",
      "tree": "f87a86ce46b4b1e71d0b4de5032ba8dfbbb4820a",
      "parents": [
        "daf5e27109c8c16c987e955cc6abbbc0af050edd"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jan 13 19:12:39 2010 +0200"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Mar 01 12:36:10 2010 -0300"
      },
      "message": "KVM: do not store wqh in irqfd\n\nwqh is unused, so we do not need to store it in irqfd anymore\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "79fac95ecfa3969aab8119d37ccd7226165f933a",
      "tree": "4103169c7fd2b7fb1ba95dae2db6b3f365476b9d",
      "parents": [
        "f656ce0185cabbbb0cf96877306879661297c7ad"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed Dec 23 14:35:26 2009 -0200"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Mar 01 12:35:45 2010 -0300"
      },
      "message": "KVM: convert slots_lock to a mutex\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "e93f8a0f821e290ac5149830110a5f704db7a1fc",
      "tree": "f88a5e97286031a8105d63a069a4131b74dab113",
      "parents": [
        "a983fb238728e1123177e8058d4f644b949a7d05"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed Dec 23 14:35:24 2009 -0200"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Mar 01 12:35:45 2010 -0300"
      },
      "message": "KVM: convert io_bus to SRCU\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "b6a114d27273c37cd0107b0f49af208168498f05",
      "tree": "c481797faf77cb05944bea343831a2fb09060d92",
      "parents": [
        "cb289d6244a37cf932c571d6deb0daa8030f931b"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jan 13 19:12:30 2010 +0200"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Jan 25 12:26:39 2010 -0200"
      },
      "message": "KVM: fix spurious interrupt with irqfd\n\nkvm didn\u0027t clear irqfd counter on deassign, as a result we could get a\nspurious interrupt when irqfd is assigned back. this leads to poor\nperformance and, in theory, guest crash.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "f1d1c309f35e9b0fb961cffd70fbd04f450ec47c",
      "tree": "b616c8bcd1d453c8dc4fcc5b927cc4a4f8a7e207",
      "parents": [
        "82b7005f0e72d8d1a8226e4c192cbb0850d10b3f"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jan 13 18:58:09 2010 +0200"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Jan 25 12:26:37 2010 -0200"
      },
      "message": "KVM: only allow one gsi per fd\n\nLooks like repeatedly binding same fd to multiple gsi\u0027s with irqfd can\nuse up a ton of kernel memory for irqfd structures.\n\nA simple fix is to allow each fd to only trigger one gsi: triggering a\nstorm of interrupts in guest is likely useless anyway, and we can do it\nby binding a single gsi to many interrupts if we really want to.\n\nCc: stable@kernel.org\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nAcked-by: Acked-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "680b3648ba89c44ac8d0316f78a0d6e147b88809",
      "tree": "b2b40034c4c33affef8b89822673cca835874651",
      "parents": [
        "eba0226bdfffe262e72b8360e4d0d12070e9a0f0"
      ],
      "author": {
        "name": "Gleb Natapov",
        "email": "gleb@redhat.com",
        "time": "Mon Aug 24 11:54:26 2009 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Thu Dec 03 09:32:08 2009 +0200"
      },
      "message": "KVM: Drop kvm-\u003eirq_lock lock from irq injection path\n\nThe only thing it protects now is interrupt injection into lapic and\nthis can work lockless. Even now with kvm-\u003eirq_lock in place access\nto lapic is not entirely serialized since vcpu access doesn\u0027t take\nkvm-\u003eirq_lock.\n\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "6223011fb9f90fab92635f1f782196cbd2ccf24f",
      "tree": "61a7c3c2ef16c66187df99b7258eadf976a096c2",
      "parents": [
        "28bcb112183cb822a394b155a2e7d788fe4a109a"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue Jul 28 17:53:24 2009 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Thu Sep 10 18:11:12 2009 +0300"
      },
      "message": "KVM: correct error-handling code\n\nThis code is not executed before file has been initialized to the result of\ncalling eventfd_fget.  This function returns an ERR_PTR value in an error\ncase instead of NULL.  Thus the test that file is not NULL is always true.\n\nA simplified version of the semantic match that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@match exists@\nexpression x, E;\nstatement S1, S2;\n@@\n\nx \u003d eventfd_fget(...)\n... when !\u003d x \u003d E\n(\n*  if (x \u003d\u003d NULL || ...) S1 else S2\n|\n*  if (x \u003d\u003d NULL \u0026\u0026 ...) S1 else S2\n)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "d34e6b175e61821026893ec5298cc8e7558df43a",
      "tree": "8f2934bb0df05d18372509f9ac59aecee5884997",
      "parents": [
        "090b7aff27120cdae76a346a70db394844fea598"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Tue Jul 07 17:08:49 2009 -0400"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Thu Sep 10 08:33:12 2009 +0300"
      },
      "message": "KVM: add ioeventfd support\n\nioeventfd is a mechanism to register PIO/MMIO regions to trigger an eventfd\nsignal when written to by a guest.  Host userspace can register any\narbitrary IO address with a corresponding eventfd and then pass the eventfd\nto a specific end-point of interest for handling.\n\nNormal IO requires a blocking round-trip since the operation may cause\nside-effects in the emulated model or may return data to the caller.\nTherefore, an IO in KVM traps from the guest to the host, causes a VMX/SVM\n\"heavy-weight\" exit back to userspace, and is ultimately serviced by qemu\u0027s\ndevice model synchronously before returning control back to the vcpu.\n\nHowever, there is a subclass of IO which acts purely as a trigger for\nother IO (such as to kick off an out-of-band DMA request, etc).  For these\npatterns, the synchronous call is particularly expensive since we really\nonly want to simply get our notification transmitted asychronously and\nreturn as quickly as possible.  All the sychronous infrastructure to ensure\nproper data-dependencies are met in the normal IO case are just unecessary\noverhead for signalling.  This adds additional computational load on the\nsystem, as well as latency to the signalling path.\n\nTherefore, we provide a mechanism for registration of an in-kernel trigger\npoint that allows the VCPU to only require a very brief, lightweight\nexit just long enough to signal an eventfd.  This also means that any\nclients compatible with the eventfd interface (which includes userspace\nand kernelspace equally well) can now register to be notified. The end\nresult should be a more flexible and higher performance notification API\nfor the backend KVM hypervisor and perhipheral components.\n\nTo test this theory, we built a test-harness called \"doorbell\".  This\nmodule has a function called \"doorbell_ring()\" which simply increments a\ncounter for each time the doorbell is signaled.  It supports signalling\nfrom either an eventfd, or an ioctl().\n\nWe then wired up two paths to the doorbell: One via QEMU via a registered\nio region and through the doorbell ioctl().  The other is direct via\nioeventfd.\n\nYou can download this test harness here:\n\nftp://ftp.novell.com/dev/ghaskins/doorbell.tar.bz2\n\nThe measured results are as follows:\n\nqemu-mmio:       110000 iops, 9.09us rtt\nioeventfd-mmio: 200100 iops, 5.00us rtt\nioeventfd-pio:  367300 iops, 2.72us rtt\n\nI didn\u0027t measure qemu-pio, because I have to figure out how to register a\nPIO region with qemu\u0027s device model, and I got lazy.  However, for now we\ncan extrapolate based on the data from the NULLIO runs of +2.56us for MMIO,\nand -350ns for HC, we get:\n\nqemu-pio:      153139 iops, 6.53us rtt\nioeventfd-hc: 412585 iops, 2.37us rtt\n\nthese are just for fun, for now, until I can gather more data.\n\nHere is a graph for your convenience:\n\nhttp://developer.novell.com/wiki/images/7/76/Iofd-chart.png\n\nThe conclusion to draw is that we save about 4us by skipping the userspace\nhop.\n\n--------------------\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nAcked-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "fa40a8214bb9bcae8d49c234c19d8b4a6c1f37ff",
      "tree": "6449f27072f128a1c39faaaeef1787f754345aaf",
      "parents": [
        "60eead79ad8750f80384cbe48fc44edcc78a0305"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Jun 04 15:08:24 2009 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Thu Sep 10 08:32:49 2009 +0300"
      },
      "message": "KVM: switch irq injection/acking data structures to irq_lock\n\nProtect irq injection/acking data structures with a separate irq_lock\nmutex. This fixes the following deadlock:\n\nCPU A                               CPU B\nkvm_vm_ioctl_deassign_dev_irq()\n  mutex_lock(\u0026kvm-\u003elock);            worker_thread()\n  -\u003e kvm_deassign_irq()                -\u003e kvm_assigned_dev_interrupt_work_handler()\n    -\u003e deassign_host_irq()               mutex_lock(\u0026kvm-\u003elock);\n      -\u003e cancel_work_sync() [blocked]\n\n[gleb: fix ia64 path]\n\nReported-by: Alex Williamson \u003calex.williamson@hp.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "721eecbf4fe995ca94a9edec0c9843b1cc0eaaf3",
      "tree": "c759fe98a4ea5e2e2a7694e4b44a558407077290",
      "parents": [
        "0ba12d10817a8db1fd7d96d3283ec6c0b294aeab"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Wed May 20 10:30:49 2009 -0400"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Thu Sep 10 08:32:41 2009 +0300"
      },
      "message": "KVM: irqfd\n\nKVM provides a complete virtual system environment for guests, including\nsupport for injecting interrupts modeled after the real exception/interrupt\nfacilities present on the native platform (such as the IDT on x86).\nVirtual interrupts can come from a variety of sources (emulated devices,\npass-through devices, etc) but all must be injected to the guest via\nthe KVM infrastructure.  This patch adds a new mechanism to inject a specific\ninterrupt to a guest using a decoupled eventfd mechnanism:  Any legal signal\non the irqfd (using eventfd semantics from either userspace or kernel) will\ntranslate into an injected interrupt in the guest at the next available\ninterrupt window.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    }
  ]
}
