)]}'
{
  "log": [
    {
      "commit": "d4c045364d3107603187f21a56ec231e74d26441",
      "tree": "b182dcd46168c14f4a97f5c891b8ea1fe51008d1",
      "parents": [
        "6d02c42698f99eccb290ac53d4f10ca883b9f90c"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "ian.campbell@citrix.com",
        "time": "Fri Feb 06 19:20:31 2009 -0800"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy.fitzhardinge@citrix.com",
        "time": "Mon Mar 30 09:26:49 2009 -0700"
      },
      "message": "xen: add irq_from_evtchn\n\nGiven an evtchn, return the corresponding irq.\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\n"
    },
    {
      "commit": "168d2f464ab9860f0d1e66cf1f9684973222f1c6",
      "tree": "c3a4199cf2aa4c6322b7860c431fd5bfdc4220ef",
      "parents": [
        "7708ad64a24a674f7905aa7a5099a50f055debec"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Aug 20 17:02:18 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 21 13:52:57 2008 +0200"
      },
      "message": "xen: save previous spinlock when blocking\n\nA spinlock can be interrupted while spinning, so make sure we preserve\nthe previous lock of interest if we\u0027re taking a lock from within an\ninterrupt handler.\n\nWe also need to deal with the case where the blocking path gets\ninterrupted between testing to see if the lock is free and actually\nblocking.  If we get interrupted there and end up in the state where\nthe lock is free but the irq isn\u0027t pending, then we\u0027ll block\nindefinitely in the hypervisor.  This fix is to make sure that any\nnested lock-takers will always leave the irq pending if there\u0027s any\nchance the outer lock became free.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nAcked-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2d9e1e2f58b5612aa4eab0ab54c84308a29dbd79",
      "tree": "08e91f7f485a8fa8ec2515f8c706870c0d44044b",
      "parents": [
        "56397f8dadb40055479a8ffff23f21a890098a31"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Mon Jul 07 12:07:53 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 16 11:15:53 2008 +0200"
      },
      "message": "xen: implement Xen-specific spinlocks\n\nThe standard ticket spinlocks are very expensive in a virtual\nenvironment, because their performance depends on Xen\u0027s scheduler\ngiving vcpus time in the order that they\u0027re supposed to take the\nspinlock.\n\nThis implements a Xen-specific spinlock, which should be much more\nefficient.\n\nThe fast-path is essentially the old Linux-x86 locks, using a single\nlock byte.  The locker decrements the byte; if the result is 0, then\nthey have the lock.  If the lock is negative, then locker must spin\nuntil the lock is positive again.\n\nWhen there\u0027s contention, the locker spin for 2^16[*] iterations waiting\nto get the lock.  If it fails to get the lock in that time, it adds\nitself to the contention count in the lock and blocks on a per-cpu\nevent channel.\n\nWhen unlocking the spinlock, the locker looks to see if there\u0027s anyone\nblocked waiting for the lock by checking for a non-zero waiter count.\nIf there\u0027s a waiter, it traverses the per-cpu \"lock_spinners\"\nvariable, which contains which lock each CPU is waiting on.  It picks\none CPU waiting on the lock and sends it an event to wake it up.\n\nThis allows efficient fast-path spinlock operation, while allowing\nspinning vcpus to give up their processor time while waiting for a\ncontended lock.\n\n[*] 2^16 iterations is threshold at which 98% locks have been taken\naccording to Thomas Friebel\u0027s Xen Summit talk \"Preventing Guests from\nSpinning Around\".  Therefore, we\u0027d expect the lock and unlock slow\npaths will only be entered 2% of the time.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003cclameter@linux-foundation.org\u003e\nCc: Petr Tesarik \u003cptesarik@suse.cz\u003e\nCc: Virtualization \u003cvirtualization@lists.linux-foundation.org\u003e\nCc: Xen devel \u003cxen-devel@lists.xensource.com\u003e\nCc: Thomas Friebel \u003cthomas.friebel@amd.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0e91398f2a5d4eb6b07df8115917d0d1cf3e9b58",
      "tree": "c6a3b31b7bcbbfb55bb2304d8651abdd28cdad54",
      "parents": [
        "7d88d32a4670af583c896e5ecd3929b78538ca62"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Mon May 26 23:31:27 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 27 10:11:38 2008 +0200"
      },
      "message": "xen: implement save/restore\n\nThis patch implements Xen save/restore and migration.\n\nSaving is triggered via xenbus, which is polled in\ndrivers/xen/manage.c.  When a suspend request comes in, the kernel\nprepares itself for saving by:\n\n1 - Freeze all processes.  This is primarily to prevent any\n    partially-completed pagetable updates from confusing the suspend\n    process.  If CONFIG_PREEMPT isn\u0027t defined, then this isn\u0027t necessary.\n\n2 - Suspend xenbus and other devices\n\n3 - Stop_machine, to make sure all the other vcpus are quiescent.  The\n    Xen tools require the domain to run its save off vcpu0.\n\n4 - Within the stop_machine state, it pins any unpinned pgds (under\n    construction or destruction), performs canonicalizes various other\n    pieces of state (mostly converting mfns to pfns), and finally\n\n5 - Suspend the domain\n\nRestore reverses the steps used to save the domain, ending when all\nthe frozen processes are thawed.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "eb1e305f4ef201e549ffd475b7dcbcd4ec36d7dc",
      "tree": "078c5acb7d6ca6e3f24b45c5d4a660abcdc75202",
      "parents": [
        "d5edbc1f75420935b1ec7e65df10c8f81cea82de"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Mon May 26 23:31:23 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 27 10:11:37 2008 +0200"
      },
      "message": "xen: add rebind_evtchn_irq\n\nAdd rebind_evtchn_irq(), which will rebind an device driver\u0027s existing\nirq to a new event channel on restore.  Since the new event channel\nwill be masked and bound to vcpu0, we update the state accordingly and\nunmask the irq once everything is set up.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "642e0c882cd5369429c833d97e4804c8be473e8a",
      "tree": "c9032832801bd68379b30983ce61fd80f823adb0",
      "parents": [
        "e849c3e9e0b786619c451d89ef0c47ac9a28fbc1"
      ],
      "author": {
        "name": "Isaku Yamahata",
        "email": "yamahata@valinux.co.jp",
        "time": "Wed Apr 02 10:53:57 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 24 23:57:32 2008 +0200"
      },
      "message": "xen: add resend_irq_on_evtchn() definition into events.c\n\nDefine resend_irq_on_evtchn() which ia64/xen uses.\nAlthough it isn\u0027t used by current x86/xen code, it\u0027s arch generic\nso that put it into common code.\n\nSigned-off-by: Isaku Yamahata \u003cyamahata@valinux.co.jp\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e849c3e9e0b786619c451d89ef0c47ac9a28fbc1",
      "tree": "bc3500d40095c2f868e2efca4918b73a6b0a1090",
      "parents": [
        "e04d0d0767a9c272d3c7300fb7a5221c5e3a71eb"
      ],
      "author": {
        "name": "Isaku Yamahata",
        "email": "yamahata@valinux.co.jp",
        "time": "Wed Apr 02 10:53:56 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 24 23:57:32 2008 +0200"
      },
      "message": "Xen: make events.c portable for ia64/xen support\n\nRemove x86 dependency in drivers/xen/events.c for ia64/xen support\nintroducing include/asm/xen/events.h.\nIntroduce xen_irqs_disabled() to hide regs-\u003eflags\nIntroduce xen_do_IRQ() to hide regs-\u003eorig_ax.\nmake enum ipi_vector definition arch specific. ia64/xen needs four vectors.\nAdd one rmb() because on ia64 xchg() isn\u0027t barrier.\n\nSigned-off-by: Isaku Yamahata \u003cyamahata@valinux.co.jp\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b536b4b9623084d86f2b1f19cb44a2d6d74f00bf",
      "tree": "86c1981309dbd8b9bf120d4ddba50abd105af89a",
      "parents": [
        "8b84ad942b534f8faeb34b68f0f7277ea375fed0"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:06 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:44 2007 -0700"
      },
      "message": "xen: use the hvc console infrastructure for Xen console\n\nImplement a Xen back-end for hvc console.\n\n* * *\nAdd early printk support via hvc console, enable using\n\"earlyprintk\u003dxen\" on the kernel command line.\n\nFrom: Gerd Hoffmann \u003ckraxel@suse.de\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Olof Johansson \u003colof@lixom.net\u003e\n"
    },
    {
      "commit": "f87e4cac4f4e940b328d3deb5b53e642e3881f43",
      "tree": "7409f86561e5f97459378abd2ae21e9a5c82bfea",
      "parents": [
        "ab55028886dd1dd54585f22bf19a00eb23869340"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:06 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:44 2007 -0700"
      },
      "message": "xen: SMP guest support\n\nThis is a fairly straightforward Xen implementation of smp_ops.\n\nXen has its own IPI mechanisms, and has no dependency on any\nAPIC-based IPI.  The smp_ops hooks and the flush_tlb_others pv_op\nallow a Xen guest to avoid all APIC code in arch/i386 (the only apic\noperation is a single apic_read for the apic version number).\n\nOne subtle point which needs to be addressed is unpinning pagetables\nwhen another cpu may have a lazy tlb reference to the pagetable. Xen\nwill not allow an in-use pagetable to be unpinned, so we must find any\nother cpus with a reference to the pagetable and get them to shoot\ndown their references.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "e46cdb66c8fc1c8d61cfae0f219ff47ac4b9d531",
      "tree": "7d9cdfef91e69fcfcba762a5a70cd58900308a5b",
      "parents": [
        "3b827c1b3aadf3adb4c602d19863f2d24e7cbc18"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:05 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:42 2007 -0700"
      },
      "message": "xen: event channels\n\nXen implements interrupts in terms of event channels.  Each guest\ndomain gets 1024 event channels which can be used for a variety of\npurposes, such as Xen timer events, inter-domain events,\ninter-processor events (IPI) or for real hardware IRQs.\n\nWithin the kernel, we map the event channels to IRQs, and implement\nthe whole interrupt handling using a Xen irq_chip.\n\nRather than setting NR_IRQ to 1024 under PARAVIRT in order to\naccomodate Xen, we create a dynamic mapping between event channels and\nIRQs.  Ideally, Linux will eventually move towards dynamically\nallocating per-irq structures, and we can use a 1:1 mapping between\nevent channels and irqs.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    }
  ]
}
