)]}'
{
  "log": [
    {
      "commit": "b6c96c0214138186f495e3ee73737c6fc5e4efa2",
      "tree": "991ed5cd8c219543fb32f2b919556d5634859c90",
      "parents": [
        "07fe9977b6234ede1bd29e10e0323e478860c871"
      ],
      "author": {
        "name": "Stratos Psomadakis",
        "email": "psomas@cslab.ece.ntua.gr",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "message": "lguest: Make sure interrupt is allocated ok by lguest_setup_irq\n\nMake sure the interrupt is allocated correctly by lguest_setup_irq (check the\nreturn value of irq_alloc_desc_at for -ENOMEM)\n\nSigned-off-by: Stratos Psomadakis \u003cpsomas@cslab.ece.ntua.gr\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (cleanups and commentry)\n"
    },
    {
      "commit": "07fe9977b6234ede1bd29e10e0323e478860c871",
      "tree": "802e48e78503b82953b9ff415f882fb6edb05dbc",
      "parents": [
        "39082f7e5912cdc70f9ab0767e7342711f34b9f8"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "dave@gnu.org",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "message": "lguest: move the lguest tool to the tools directory\n\nThis is a better location instead of having it in Documentation.\n\nSigned-off-by: Davidlohr Bueso \u003cdave@gnu.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (fixed compile)\n"
    },
    {
      "commit": "39082f7e5912cdc70f9ab0767e7342711f34b9f8",
      "tree": "e423ae99ef82b949e52ef4b600c2fc90994fec4d",
      "parents": [
        "e562966dbaf49e7804097cd991e5d3a8934fc148"
      ],
      "author": {
        "name": "Jacek Galowicz",
        "email": "jacek@galowicz.de",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "message": "lguest: switch segment-voodoo-numbers to readable symbols\n\nWhen studying lguest\u0027s x86 segment descriptor code, it is not longer\nnecessary to have the Intel x86 architecture manual open on the page\nwith the segment descriptor illustration to understand the crazy\nnumbers assigned to both descriptor structure halves a/b.\nNow the struct desc_struct\u0027s fields, like suggested by\nGlauber de Oliveira Costa in 2008, are used.\n\nSigned-off-by: Jacek Galowicz \u003cjacek@galowicz.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7b21e34fd1c272e3a8c3846168f2f6287a4cd72b",
      "tree": "0f94c9f834f5b7cd8ba87168df892ed17b09cb8f",
      "parents": [
        "e343a895a9f342f239c5e3c5ffc6c0b1707e6244"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 12 15:44:42 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 12 15:44:42 2012 +1030"
      },
      "message": "virtio: harsher barriers for rpmsg.\n\nWe were cheating with our barriers; using the smp ones rather than the\nreal device ones.  That was fine, until rpmsg came along, which is\nused to talk to a real device (a non-SMP CPU).\n\nUnfortunately, just putting back the real barriers (reverting\nd57ed95d) causes a performance regression on virtio-pci.  In\nparticular, Amos reports netbench\u0027s TCP_RR over virtio_net CPU\nutilization increased up to 35% while throughput went down by up to\n14%.\n\nBy comparison, this branch is in the noise.\n\nReference: https://lkml.org/lkml/2011/12/11/22\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9753dfe19a85e7e45a34a56f4cb2048bb4f50e27",
      "tree": "c017a1b4a70b8447c71b01d8b320e071546b5c9d",
      "parents": [
        "edf7c8148ec40c0fd27c0ef3f688defcc65e3913",
        "9f42f126154786e6e76df513004800c8c633f020"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 06 17:22:09 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 06 17:22:09 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1958 commits)\n  net: pack skb_shared_info more efficiently\n  net_sched: red: split red_parms into parms and vars\n  net_sched: sfq: extend limits\n  cnic: Improve error recovery on bnx2x devices\n  cnic: Re-init dev-\u003estats_addr after chip reset\n  net_sched: Bug in netem reordering\n  bna: fix sparse warnings/errors\n  bna: make ethtool_ops and strings const\n  xgmac: cleanups\n  net: make ethtool_ops const\n  vmxnet3\" make ethtool ops const\n  xen-netback: make ops structs const\n  virtio_net: Pass gfp flags when allocating rx buffers.\n  ixgbe: FCoE: Add support for ndo_get_fcoe_hbainfo() call\n  netdev: FCoE: Add new ndo_get_fcoe_hbainfo() call\n  igb: reset PHY after recovering from PHY power down\n  igb: add basic runtime PM support\n  igb: Add support for byte queue limits.\n  e1000: cleanup CE4100 MDIO registers access\n  e1000: unmap ce4100_gbe_mdio_base_virt in e1000_remove\n  ...\n"
    },
    {
      "commit": "1cf8343f55525c09c88da0a494a96e1b034f84e2",
      "tree": "5cb45ead7d10d3021fd2a9424c47d25eefa4201f",
      "parents": [
        "cc3a1bf52a9d2808c7cd6e8f413b02b650b6b84b"
      ],
      "author": {
        "name": "Seiichi Ikarashi",
        "email": "s.ikarashi@jp.fujitsu.com",
        "time": "Tue Dec 06 17:58:14 2011 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 06 10:02:38 2011 +0100"
      },
      "message": "x86: Fix rflags in FAKE_STACK_FRAME\n\nThe x86_64 kernel pushes the fake kernel stack in\narch/x86/kernel/entry_64.S:FAKE_STACK_FRAME, and\nrflags register in it does not conform to the specification.\n\nAlthough Intel\u0027s manual[1] says bit 1 of it shall be set to 1,\nthis bit is cleared to 0 on pushing the fake stack.\n\n[1] Intel(R) 64 and IA-32 Architectures Software Developer\u0027s Manual\n    Vol.1 3-21 Figure 3-8. EFLAGS Register\n\nIf it is not on purpose, it is better to be fixed, because\nit can lead some tools misunderstanding the stack frame. For example,\n\"crash\" utility[2] actually detects it and warns you like\nbelow:\n\n       RIP: ffffffff8005dfa2  RSP: ffff8104ce0c7f58  RFLAGS: 00000200\n       [...]\n\n       bt: WARNING: possibly bogus exception frame\n\nSigned-off-by: Seiichi Ikarashi \u003cs.ikarashi@jp.fujitsu.com\u003e\nTested-by: Masayoshi MIZUMA \u003cm.mizuma@jp.fujitsu.com\u003e\nCc: Jan Beulich \u003cJBeulich@suse.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "66846048f55c6c05a4c46c2daabb773173f8f28d",
      "tree": "21fdef9bb249056f7f334e67fbbc05a61b0cf9ce",
      "parents": [
        "64882709ef07f3eae29c7afc5aa8b84d12733a72"
      ],
      "author": {
        "name": "Rick Jones",
        "email": "rick.jones2@hp.com",
        "time": "Mon Nov 14 14:17:08 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 16 17:26:46 2011 -0500"
      },
      "message": "enable virtio_net to return bus_info in ethtool -i consistent with emulated NICs\n\nAdd a new .bus_name to virtio_config_ops then modify virtio_net to\ncall through to it in an ethtool .get_drvinfo routine to report\nbus_info in ethtool -i output which is consistent with other\nemulated NICs and the output of lspci.\n\nSigned-off-by: Rick Jones \u003crick.jones2@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "39a0e33da0189c99ed3cea6945cda1bc9f4b7b83",
      "tree": "3503a8213edf62c7b5b20c06a38ed5a8208cde7b",
      "parents": [
        "51441d434f621c5c74470b36579ae7c9fb5b7139"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Thu Jul 21 13:03:20 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:32:13 2011 -0400"
      },
      "message": "lguest: add export.h to lguest files for THIS_MODULE/EXPORT_SYMBOL\n\nWe need this in advance of the module.h cleanup, or we\u0027ll\nget compile errors like this:\n\n  CC      drivers/lguest/lguest_device.o\ndrivers/lguest/lguest_device.c: In function ‘lguest_devices_init’:\ndrivers/lguest/lguest_device.c:490: error: ‘THIS_MODULE’ undeclared (first use in this function)\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "0acf00014bcfd71090c3b0d43c98e970108064e4",
      "tree": "fcd5be7a9def49cd31cdd23c4ddafe4bd0e48ac9",
      "parents": [
        "89cfc99177c9270c5c6d429f6c5177ab3428ad57"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Sep 27 08:56:03 2011 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 27 10:56:18 2011 +1030"
      },
      "message": "lguest: move process freezing before pending signals check\n\nrun_guest tries to freeze the current process after it has handled\npending interrupts and before it calls lguest_arch_run_guest.\nThis doesn\u0027t work nicely if the task has been killed while being frozen\nand when we want to handle that signal as soon as possible.\nLet\u0027s move try_to_freeze before we check for pending signal so that we\ncan get out of the loop as soon as possible.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b56e3215d4331bff9b6d5e5f68bc1ec5cb01e650",
      "tree": "bbc5fefc680d81f6a5a1c491e832144c02cd3731",
      "parents": [
        "138c4ae9cfda8fdcf9e137457853b09ef8cf8f77"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 27 10:56:17 2011 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 27 10:56:17 2011 +1030"
      },
      "message": "lguest: Allow running under paravirt-enabled KVM.\n\nWe actually can run under KVM, as it doesn\u0027t paravirtualize anything we\nneed to use; reduce the check to checking we are the normal ringlevel.\n\nReported-by: Stefanos Geraggelos \u003csgerag@cslab.ece.ntua.gr\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e# HG changeset patch\n"
    },
    {
      "commit": "996ba96a97f7406052486682846d68935a60e986",
      "tree": "f02f603742129314a497d3406b02a7f929893d9c",
      "parents": [
        "8d431f41603acff8a20cf5df99bc8958c91879c1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:51 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:51 2011 +0930"
      },
      "message": "lguest: Fix in/out emulation\n\nWe were blatting too much of the register.  Linux didn\u0027t care, but in\ntheory it might.\n\nReported-by: Jonas Maebe \u003cjonas.maebe@elis.ugent.be\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9f54288def3f92b7805eb6d4b1ddcd73ecf6e889",
      "tree": "bb46242a92e47112c2967354b3be0c6daecae7a7",
      "parents": [
        "3c3ed482dc077a67903a58c9e1aedba1bb18c18a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:50 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:50 2011 +0930"
      },
      "message": "lguest: update comments\n\nAlso removes a long-unused #define and an extraneous semicolon.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3c3ed482dc077a67903a58c9e1aedba1bb18c18a",
      "tree": "ad3987515d68fcfa7155574e53ab47aabd41e593",
      "parents": [
        "6d7a5d1ea34495ecb1d608f0e40afba7776ee408"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:49 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:49 2011 +0930"
      },
      "message": "lguest: Simplify device initialization.\n\nWe used to notify the Host every time we updated a device\u0027s status.  However,\nit only really needs to know when we\u0027re resetting the device, or failed to\ninitialize it, or when we\u0027ve finished our feature negotiation.\n\nIn particular, we used to wait for VIRTIO_CONFIG_S_DRIVER_OK in the\nstatus byte before starting the device service threads.  But this\ncorresponds to the successful finish of device initialization, which\nmight (like virtio_blk\u0027s partition scanning) use the device.  So we\nhad a hack, if they used the device before we expected we started the\nthreads anyway.\n\nNow we hook into the finalize_features hook in the Guest: at that\npoint we tell the Launcher that it can rely on the features we have\nacked.  On the Launcher side, we look at the status at that point, and\nstart servicing the device.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6d7a5d1ea34495ecb1d608f0e40afba7776ee408",
      "tree": "23213877e952ad122888a502d07ed112263069d6",
      "parents": [
        "7e1941444f808d8001aa3b63588150c516321a3c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:49 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:49 2011 +0930"
      },
      "message": "lguest: don\u0027t rewrite vmcall instructions\n\nNow we no longer use vmcall, we don\u0027t need to rewrite it in the Guest.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5dea1c88ed11a1221581c4b202f053c4fc138704",
      "tree": "59e15d3c696712e26ffb229ff987f33bcc72affe",
      "parents": [
        "e0377e25206328998d036cafddcd00a7c3252e3e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:48 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:48 2011 +0930"
      },
      "message": "lguest: use a special 1:1 linear pagetable mode until first switch.\n\nThe Host used to create some page tables for the Guest to use at the\ntop of Guest memory; it would then tell the Guest where this was.  In\nparticular, it created linear mappings for 0 and 0xC0000000 addresses\nbecause lguest used to switch to its real page tables quite late in\nboot.\n\nHowever, since d50d8fe19 Linux initialized boot page tables in\nhead_32.S even before the \"are we lguest?\" boot jump.  So, now we can\nsimplify things: the Host pagetable code assumes 1:1 linear mapping\nuntil it first calls the LHCALL_NEW_PGTABLE hypercall, which we now do\nbefore we reach C code.\n\nThis also means that the Host doesn\u0027t need to know anything about the\nGuest\u0027s PAGE_OFFSET.  (Non-Linux guests might not even have such a\nthing).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "61516587513c84ac26e68e3ab008dc6e965d0378",
      "tree": "b901d64de6588e2a50b0ac6e6855805de62eb2c8",
      "parents": [
        "570aa13a5dbea9b905b4cd6315aa6e1b3a9fd2f8"
      ],
      "author": {
        "name": "Rob Landley",
        "email": "rob@landley.net",
        "time": "Fri May 06 09:27:36 2011 -0700"
      },
      "committer": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri May 06 09:27:55 2011 -0700"
      },
      "message": "Correct occurrences of\n- Documentation/kvm/ to Documentation/virtual/kvm\n- Documentation/uml/ to Documentation/virtual/uml\n- Documentation/lguest/ to Documentation/virtual/lguest\nthroughout the kernel source tree.\n\nSigned-off-by: Rob Landley \u003crob@landley.net\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.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": "ced05dd741779986861fe7369fe002f542d6fa34",
      "tree": "506151ac3d5bc7b1f3820892773571a071366278",
      "parents": [
        "c9f2954964df1490373065558f3156379c7a2454"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 20 21:37:29 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 20 21:37:29 2011 +1030"
      },
      "message": "lguest: compile fixes\n\narch/x86/lguest/boot.c: In function ‘lguest_init_IRQ’:\narch/x86/lguest/boot.c:824: error: macro \"__this_cpu_write\" requires 2 arguments, but only 1 given\narch/x86/lguest/boot.c:824: error: ‘__this_cpu_write’ undeclared (first use in this function)\narch/x86/lguest/boot.c:824: error: (Each undeclared identifier is reported only once\narch/x86/lguest/boot.c:824: error: for each function it appears in.)\n\ndrivers/lguest/x86/core.c: In function ‘copy_in_guest_info’:\ndrivers/lguest/x86/core.c:94: error: lvalue required as left operand of assignment\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c9f2954964df1490373065558f3156379c7a2454",
      "tree": "da06a2aae32108f4e699f687308299c01e322c2e",
      "parents": [
        "85c0647275b60380e19542d43420184e86418d86"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Nov 30 13:07:21 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 20 21:37:29 2011 +1030"
      },
      "message": "lguest: Use this_cpu_ops\n\nUse this_cpu_ops in a couple of places in lguest.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "091ebf07a2408f9a56634caa0f86d9360e9af23b",
      "tree": "62d3b3424cc1c0dc71b3b750bb1e8e063e658fd3",
      "parents": [
        "5094aeafbbd500509f648e3cd102b053bc7926b3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Apr 14 21:43:54 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Apr 14 21:43:56 2010 +0930"
      },
      "message": "lguest: stop using KVM hypercall mechanism\n\nThis is a partial revert of 4cd8b5e2a159 \"lguest: use KVM hypercalls\";\nwe revert to using (just as questionable but more reliable) int $15 for\nhypercalls.  I didn\u0027t revert the register mapping, so we still use the\nsame calling convention as kvm.\n\nKVM in more recent incarnations stopped injecting a fault when a guest\ntried to use the VMCALL instruction from ring 1, so lguest under kvm\nfails to make hypercalls.  It was nice to share code with our KVM\ncousins, but this was overreach.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "5094aeafbbd500509f648e3cd102b053bc7926b3",
      "tree": "8effa3dcde7c1b34ced9f09c7964acbcd8eb49f1",
      "parents": [
        "2ba3abd8186f24c7fb418927025b4e2120e3a362"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Apr 14 21:43:53 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Apr 14 21:43:54 2010 +0930"
      },
      "message": "lguest: workaround cmpxchg8b_emu by ignoring cli in the guest.\n\nIt\u0027s only used by cmpxchg8b_emu (see db677ffa5f5a for the gory\ndetails), and fixing that to be paravirt aware would be more work than\nsimply ignoring it (and AFAICT only help lguest).  This makes lguest\nwork on machines which have cmpxchg8b, for kernels compiled for older\nprocessors.\n\n(We can\u0027t emulate it properly: the popf which expects to restore interrupts\ndoes not trap).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: virtualization@lists.osdl.org\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": "3e27249c84beed1c79d767b350e52ad038db9053",
      "tree": "56fbbd5e952c4b01649c5b4f84dc7ce135cdc6ee",
      "parents": [
        "741f21e811752b440c505bf0149c4d16e9f3160d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 04 19:26:14 2010 +1030"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 04 12:33:33 2010 -0800"
      },
      "message": "lguest: fix bug in setting guest GDT entry\n\nWe kill the guest, but then we blatt random stuff.\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0316554d3586cbea60592a41391b5def2553d6f",
      "tree": "5e7418f0bacbc68cec5dfd1541e03eb56870aa02",
      "parents": [
        "fb0bbb92d42d5bd0ab224605444efdfed06d6934",
        "51e99be00ce2713cbb841cedc997cafa6e26c7f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (34 commits)\n  m68k: rename global variable vmalloc_end to m68k_vmalloc_end\n  percpu: add missing per_cpu_ptr_to_phys() definition for UP\n  percpu: Fix kdump failure if booted with percpu_alloc\u003dpage\n  percpu: make misc percpu symbols unique\n  percpu: make percpu symbols in ia64 unique\n  percpu: make percpu symbols in powerpc unique\n  percpu: make percpu symbols in x86 unique\n  percpu: make percpu symbols in xen unique\n  percpu: make percpu symbols in cpufreq unique\n  percpu: make percpu symbols in oprofile unique\n  percpu: make percpu symbols in tracer unique\n  percpu: make percpu symbols under kernel/ and mm/ unique\n  percpu: remove some sparse warnings\n  percpu: make alloc_percpu() handle array types\n  vmalloc: fix use of non-existent percpu variable in put_cpu_var()\n  this_cpu: Use this_cpu_xx in trace_functions_graph.c\n  this_cpu: Use this_cpu_xx for ftrace\n  this_cpu: Use this_cpu_xx in nmi handling\n  this_cpu: Use this_cpu operations in RCU\n  this_cpu: Use this_cpu ops for VM statistics\n  ...\n\nFix up trivial (famous last words) global per-cpu naming conflicts in\n\tarch/x86/kvm/svm.c\n\tmm/slab.c\n"
    },
    {
      "commit": "390dfd95c5df1ab3921dd388d11b2aee332c3f2c",
      "tree": "8d12e22961716a0137b9e41ed00e2521b88fecce",
      "parents": [
        "877105cc49f6e6ad32e3d63a214e8f537c0339ef"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:14 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:14 2009 +0900"
      },
      "message": "percpu: make misc percpu symbols unique\n\nThis patch updates misc percpu related symbols such that percpu\nsymbols are unique and don\u0027t clash with local symbols.  This serves\ntwo purposes of decreasing the possibility of global percpu symbol\ncollision and allowing dropping per_cpu__ prefix from percpu symbols.\n\n* drivers/crypto/padlock-aes.c: s/last_cword/paes_last_cword/\n\n* drivers/lguest/x86/core.c: s/last_cpu/lg_last_cpu/\n\n* drivers/s390/net/netiucv.c: rename the variable used in a macro to\n  avoid clashing with percpu symbol\n\n* arch/mn10300/kernel/kprobes.c: replace current_ prefix with cur_ for\n  static variables.  Please note that percpu symbol current_kprobe\n  can\u0027t be changed as it\u0027s used by generic code.\n\nPartly based on Rusty Russell\u0027s \"alloc_percpu: rename percpu vars\nwhich cause name clashes\" patch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCc: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Koichi Yasutake \u003cyasutake.koichi@jp.panasonic.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: linux390@de.ibm.com\n"
    },
    {
      "commit": "d43c36dc6b357fa1806800f18aa30123c747a6d1",
      "tree": "339ce510073ecbe9b3592008f7dece7b277035ef",
      "parents": [
        "69585dd69e663a40729492c7b52eb82477a2027a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 07 17:09:06 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:20:58 2009 -0700"
      },
      "message": "headers: remove sched.h from interrupt.h\n\nAfter m68k\u0027s task_thread_info() doesn\u0027t refer to current,\nit\u0027s possible to remove sched.h from interrupt.h and not break m68k!\nMany thanks to Heiko Carstens for allowing this.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f0918d03ff4b5c94540c71ce889672abdbc2f4a",
      "tree": "ecee710444fb3405da55933501e339e10e4ac880",
      "parents": [
        "4266c97a3ef4604561a22212eb0eab8a3c338971",
        "ca60a42c9be41c07ebcc2ec8c43dd1be53f147bf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:23:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:23:45 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  lguest: don\u0027t force VIRTIO_F_NOTIFY_ON_EMPTY\n  lguest: cleanup for map_switcher()\n  lguest: use PGDIR_SHIFT for PAE code to allow different PAGE_OFFSET\n  lguest: use set_pte/set_pmd uniformly for real page table entries\n  lguest: move panic notifier registration to its expected place.\n  virtio_blk: add support for cache flush\n  virtio: add virtio IDs file\n  virtio: get rid of redundant VIRTIO_ID_9P definition\n  virtio: make add_buf return capacity remaining\n  virtio_pci: minor MSI-X cleanups\n"
    },
    {
      "commit": "6c189d8312246af776c2587c233d6afcf3714438",
      "tree": "4d1667bf0129d412c9101c48719a9f272880b45b",
      "parents": [
        "fb100d78c04ff6053047625d0368d0d4b1d9912a"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Aug 05 17:42:37 2009 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:47 2009 +0930"
      },
      "message": "lguest: cleanup for map_switcher()\n\nWe can use alloc_page() instead of get_zeroed_page() and virt_to_page()\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "fb100d78c04ff6053047625d0368d0d4b1d9912a",
      "tree": "bd07302aed54c75cc5c64af2503b29a21014103c",
      "parents": [
        "4c1ea3dd718a1d93a726cb3e66665ac4170dcccd"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:46 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:46 2009 +0930"
      },
      "message": "lguest: use PGDIR_SHIFT for PAE code to allow different PAGE_OFFSET\n\nWe still assume the Guest and Host have the same PAGE_OFFSET settings,\nbut now we don\u0027t assume 0xC0000000.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\n"
    },
    {
      "commit": "4c1ea3dd718a1d93a726cb3e66665ac4170dcccd",
      "tree": "fc20b6da34016e03faa914743eeaafe489e38443",
      "parents": [
        "cdae0ad5e8ea630017d4cad3923f763c4e6c3127"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:45 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:46 2009 +0930"
      },
      "message": "lguest: use set_pte/set_pmd uniformly for real page table entries\n\nIf we\u0027re building a pte, we can use simple assigment; only use set_pte\netc. when we\u0027re actually going to use that destination as a PTE.  I\ndon\u0027t know that we\u0027ll ever run under Xen, but it\u0027s neater.\n\nAnd use set_pte/set_pmd rather than assuming native_ versions, even\nthough that\u0027s probably true for most people.\n\n(Includes compile fix by Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e)\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nCc: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "fd589a8f0a13f53a2dd580b1fe170633cf6b095f",
      "tree": "942c50188ca58041b0453189e710eafcfebaea57",
      "parents": [
        "4f37940d64a155c025968118849b596f6aaa8128"
      ],
      "author": {
        "name": "Anand Gadiyar",
        "email": "gadiyar@ti.com",
        "time": "Thu Jul 16 17:13:03 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Sep 21 15:14:55 2009 +0200"
      },
      "message": "trivial: fix typo \"to to\" in multiple files\n\nSigned-off-by: Anand Gadiyar \u003cgadiyar@ti.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "1842f23c05b6a866be831aa60bc8a8731c58ddd0",
      "tree": "8047f21d149b3958b5c4278c1a5601ddce9e0e4b",
      "parents": [
        "a91d74a3c4de8115295ee87350c13a329164aaaf"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:46 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:46 2009 +0930"
      },
      "message": "lguest and virtio: cleanup struct definitions to Linux style.\n\nI\u0027ve been doing this for years, and akpm picked me up on it about 12\nmonths ago.  lguest partly serves as example code, so let\u0027s do it Right.\n\nAlso, remove two unused fields in struct vblk_info in the example launcher.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "a91d74a3c4de8115295ee87350c13a329164aaaf",
      "tree": "02c862fccc9abedf7fc354061e69c4b5fbcce06d",
      "parents": [
        "2e04ef76916d1e29a077ea9d0f2003c8fd86724d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:45 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:46 2009 +0930"
      },
      "message": "lguest: update commentry\n\nEvery so often, after code shuffles, I need to go through and unbitrot\nthe Lguest Journey (see drivers/lguest/README).  Since we now use RCU in\na simple form in one place I took the opportunity to expand that explanation.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2e04ef76916d1e29a077ea9d0f2003c8fd86724d",
      "tree": "2ff8d625d6e467be9f9f1b67a3674cb6e125e970",
      "parents": [
        "e969fed542cae08cb11d666efac4f7c5d624d09f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:45 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:45 2009 +0930"
      },
      "message": "lguest: fix comment style\n\nI don\u0027t really notice it (except to begrudge the extra vertical\nspace), but Ingo does.  And he pointed out that one excuse of lguest\nis as a teaching tool, it should set a good example.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "f294526279cda8934b0313ebd02184a16ba888c9",
      "tree": "a89b108800b8f8cdcf6a6eae4f69bb10df3ac79c",
      "parents": [
        "658874f05d040ca96eb5ba9b1c30ce0ff287d762"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sun Jul 19 14:46:09 2009 +0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:43 2009 +0930"
      },
      "message": "lguest: dereferencing freed mem in add_eventfd()\n\n\"new\" was freed and then dereferenced.  Also the return value wasn\u0027t being\nused so I modified the caller as well.\n\nCompile tested only.  Found by smatch (http://repo.or.cz/w/smatch.git).\n\nregards,\ndan carpenter\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "27de22d03d6808a82bbe9bd7e3cc75d60132ba9e",
      "tree": "e38eee58015f1d7abb5f5e08c445be08748c266e",
      "parents": [
        "5780888bcac316508eb5f4dd23bbea8b5057647c"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Fri Jul 17 21:47:44 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 17 21:47:44 2009 +0930"
      },
      "message": "lguest: remove unnecessary forward struct declaration\n\nWhile fixing lg.h to drop the fwd declaration, I noticed\nthere\u0027s another one ;)\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "133890103b9de08904f909995973e4b5c08a780e",
      "tree": "0cda85a58dafafa0a197cf1a789124203f1e7a88",
      "parents": [
        "f7c2df9b55212d5ec94169a4de11e44c683e0af4"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Jun 30 11:41:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 30 18:55:58 2009 -0700"
      },
      "message": "eventfd: revised interface and cleanups\n\nChange the eventfd interface to de-couple the eventfd memory context, from\nthe file pointer instance.\n\nWithout such change, there is no clean way to racely free handle the\nPOLLHUP event sent when the last instance of the file* goes away.  Also,\nnow the internal eventfd APIs are using the eventfd context instead of the\nfile*.\n\nThis patch is required by KVM\u0027s IRQfd code, which is still under\ndevelopment.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Gregory Haskins \u003cghaskins@novell.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Avi Kivity \u003cavi@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": "7f3591cfacf2d79c4f42238e46c7d053da8e020d",
      "tree": "f2e9ed7b6b0bc176facaa49846734790023a6b16",
      "parents": [
        "16ffc3eeaa00d513b0076b7b2b96419f28acc912",
        "d1f0132e76a11b05167313c606a853953f416081"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:32:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:32:26 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest: (31 commits)\n  lguest: add support for indirect ring entries\n  lguest: suppress notifications in example Launcher\n  lguest: try to batch interrupts on network receive\n  lguest: avoid sending interrupts to Guest when no activity occurs.\n  lguest: implement deferred interrupts in example Launcher\n  lguest: remove obsolete LHREQ_BREAK call\n  lguest: have example Launcher service all devices in separate threads\n  lguest: use eventfds for device notification\n  eventfd: export eventfd_signal and eventfd_fget for lguest\n  lguest: allow any process to send interrupts\n  lguest: PAE fixes\n  lguest: PAE support\n  lguest: Add support for kvm_hypercall4()\n  lguest: replace hypercall name LHCALL_SET_PMD with LHCALL_SET_PGD\n  lguest: use native_set_* macros, which properly handle 64-bit entries when PAE is activated\n  lguest: map switcher with executable page table entries\n  lguest: fix writev returning short on console output\n  lguest: clean up length-used value in example launcher\n  lguest: Segment selectors are 16-bit long. Fix lg_cpu.ss1 definition.\n  lguest: beyond ARRAY_SIZE of cpu-\u003earch.gdt\n  ...\n"
    },
    {
      "commit": "5dac051bc6030963181b69faddd9e0ad04f85fa8",
      "tree": "4a0456e1d971bbe9f68f4ac13d31716c12fbb618",
      "parents": [
        "659a0e6633567246edcb7bd400c7e2bece9237d9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 +0930"
      },
      "message": "lguest: remove obsolete LHREQ_BREAK call\n\nWe no longer need an efficient mechanism to force the Guest back into\nhost userspace, as each device is serviced without bothering the main\nGuest process (aka. the Launcher).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "df60aeef4f4fe0645d9a195a7689005520422de5",
      "tree": "3cfa3c4a986436c8accd5f0a57d5a6f70f1b7965",
      "parents": [
        "5718607bb670c721f45f0dbb1cc7d6c64969aab1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:09 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 +0930"
      },
      "message": "lguest: use eventfds for device notification\n\nCurrently, when a Guest wants to perform I/O it calls LHCALL_NOTIFY with\nan address: the main Launcher process returns with this address, and figures\nout what device to run.\n\nA far nicer model is to let processes bind an eventfd to an address: if we\nfind one, we simply signal the eventfd.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\n"
    },
    {
      "commit": "9f155a9b3d5a5444bcc5e049ec2547bb5107150e",
      "tree": "ef8fe2d5a319abb3bb1c89374f9d2fef1b0881c3",
      "parents": [
        "92b4d8df8436cdd74d22a2a5b6b23b9abc737a3e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:09 2009 +0930"
      },
      "message": "lguest: allow any process to send interrupts\n\nWe currently only allow the Launcher process to send interrupts, but it\nas we already send interrupts from the hrtimer, it\u0027s a simple matter of\nextracting that code into a common set_interrupt routine.\n\nAs we switch to a thread per virtqueue, this avoids a bottleneck through the\nmain Launcher process.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "92b4d8df8436cdd74d22a2a5b6b23b9abc737a3e",
      "tree": "bba0dce08d1fde432f370b7ef2845e0ae195a34d",
      "parents": [
        "acdd0b6292b282c4511897ac2691a47befbf1c6a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 +0930"
      },
      "message": "lguest: PAE fixes\n\n1) j wasn\u0027t initialized in setup_pagetables, so they weren\u0027t set up for me\n   causing immediate guest crashes.\n\n2) gpte_addr should not re-read the pmd from the Guest.  Especially\n   not BUG_ON() based on the value.  If we ever supported SMP guests,\n   they could trigger that.  And the Launcher could also trigger it\n   (tho currently root-only).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "acdd0b6292b282c4511897ac2691a47befbf1c6a",
      "tree": "1bfcfc32b11d35e99fec5bbf52b19d6ee038f25e",
      "parents": [
        "cefcad1773197523e11e18b669f245e6a8d32058"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:07 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 +0930"
      },
      "message": "lguest: PAE support\n\nThis version requires that host and guest have the same PAE status.\nNX cap is not offered to the guest, yet.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ebe0ba84f55950a89cb7af94c7ffc35ee3992f9e",
      "tree": "df1c3373274846b4998ea75c56f347a264b2c8ad",
      "parents": [
        "90603d15fa95605d1d08235b73e220d766f04bb0"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Sat May 30 15:48:08 2009 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:07 2009 +0930"
      },
      "message": "lguest: replace hypercall name LHCALL_SET_PMD with LHCALL_SET_PGD\n\nreplace LHCALL_SET_PMD with LHCALL_SET_PGD hypercall name\n(That\u0027s really what it is, and the confusion gets worse with PAE support)\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nReported-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\n"
    },
    {
      "commit": "90603d15fa95605d1d08235b73e220d766f04bb0",
      "tree": "669b5a41ebdb368e578898409d8a48021074746a",
      "parents": [
        "ed1dc77810159a733240ba6751c1b31023bf8dd7"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:06 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:06 2009 +0930"
      },
      "message": "lguest: use native_set_* macros, which properly handle 64-bit entries when PAE is activated\n\nSome cleanups and replace direct assignment with native_set_* macros which properly handle 64-bit entries when PAE is activated\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ed1dc77810159a733240ba6751c1b31023bf8dd7",
      "tree": "d77ed52cd56e2cf3f5eac9d5db22ad1196e694d8",
      "parents": [
        "7b5c806c35f6ff76b2e36a8b5b1513c8a83fcff7"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Sat May 30 15:35:49 2009 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:06 2009 +0930"
      },
      "message": "lguest: map switcher with executable page table entries\n\nMap switcher with executable page table entries.\n(This bug didn\u0027t matter before PAE and hence NX support -- RR)\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "f086122bb6e885f926f935b1418fca3b293375f0",
      "tree": "21f14d50489380e609ecffb61cdc4f5b2f624694",
      "parents": [
        "81b79b01d057f8c5a378c38d2f738775b972934a"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:04 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:04 2009 +0930"
      },
      "message": "lguest: Segment selectors are 16-bit long. Fix lg_cpu.ss1 definition.\n\nIf GDT_ENTRIES were every \u003e 256, this could become a problem.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui at gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "81b79b01d057f8c5a378c38d2f738775b972934a",
      "tree": "0e2c295109568916e187a65e6d93a3319bbb51a9",
      "parents": [
        "2644f17d6c932929fd68cfec95691490947e0fd1"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Wed May 20 01:45:45 2009 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:04 2009 +0930"
      },
      "message": "lguest: beyond ARRAY_SIZE of cpu-\u003earch.gdt\n\nDo not go beyond ARRAY_SIZE of cpu-\u003earch.gdt\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a32a8813d0173163ba44d8f9556e0d89fdc4fb46",
      "tree": "fddb6742338047d0219e8c2536cd39b04e643b16",
      "parents": [
        "abd41f037e1a64543000ed73b42f616d04d92700"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 +0930"
      },
      "message": "lguest: improve interrupt handling, speed up stream networking\n\nlguest never checked for pending interrupts when enabling interrupts, and\nthings still worked.  However, it makes a significant difference to TCP\nperformance, so it\u0027s time we fixed it by introducing a pending_irq flag\nand checking it on irq_restore and irq_enable.\n\nThese two routines are now too big to patch into the 8/10 bytes\npatch space, so we drop that code.\n\nNote: The high latency on interrupt delivery had a very curious\neffect: once everything else was optimized, networking without GSO was\nfaster than networking with GSO, since more interrupts were sent and\nhence a greater chance of one getting through to the Guest!\n\nNote2: (Almost) Closing the same loophole for iret doesn\u0027t have any\nmeasurable effect, so I\u0027m leaving that patch for the moment.\n\nBefore:\n\t1GB tcpblast Guest-\u003eHost:\t\t30.7 seconds\n\t1GB tcpblast Guest-\u003eHost (no GSO):\t76.0 seconds\n\nAfter:\n\t1GB tcpblast Guest-\u003eHost:\t\t6.8 seconds\n\t1GB tcpblast Guest-\u003eHost (no GSO):\t27.8 seconds\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "abd41f037e1a64543000ed73b42f616d04d92700",
      "tree": "d9013e66f4d8fc66fc92ce0587f8d126e156b253",
      "parents": [
        "ebf9a5a99c1a464afe0b4dfa64416fc8b273bc5c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 +0930"
      },
      "message": "lguest: fix race in halt code\n\nWhen the Guest does the LHCALL_HALT hypercall, we go to sleep, expecting\nthat a timer or the Waker will wake_up_process() us.\n\nBut we do it in a stupid way, leaving a classic missing wakeup race.\n\nSo split maybe_do_interrupt() into interrupt_pending() and\ntry_deliver_interrupt(), and check maybe_do_interrupt() and the\n\"break_out\" flag before calling schedule.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a6c372de6e4b9a8188b66badcee3e3792eccdd26",
      "tree": "b6b67f4cc447cc0ee8ae617bb503ef7d7f6e4958",
      "parents": [
        "b43e352139f51216a8c56b0bd5fc3d4e05c65619"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:01 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:01 2009 +0930"
      },
      "message": "lguest: fix lguest wake on guest clock tick, or fd activity\n\nThe Launcher could be inside the Guest on another CPU; wake_up_process\nwill do nothing because it is \"running\".  kick_process will knock it\nback into our kernel in this case, otherwise we\u0027ll miss it until the\nnext guest exit.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d2a7ddda9ffb1c8961abff6714b0f1eb925c120f",
      "tree": "1090884fd260d042255255467367e4e6b6193e5d",
      "parents": [
        "9499f5e7ed5224c40706f0cec6542a9916bc7606"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Fri Jun 12 22:16:36 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:36 2009 +0930"
      },
      "message": "virtio: find_vqs/del_vqs virtio operations\n\nThis replaces find_vq/del_vq with find_vqs/del_vqs virtio operations,\nand updates all drivers. This is needed for MSI support, because MSI\nneeds to know the total number of vectors upfront.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (+ lguest/9p compile fixes)\n"
    },
    {
      "commit": "9499f5e7ed5224c40706f0cec6542a9916bc7606",
      "tree": "3e4e1b36d3d549ea356e88e6e44359a887c6ee01",
      "parents": [
        "ef688e151c00e5d529703be9a04fd506df8bc54e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:35 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:36 2009 +0930"
      },
      "message": "virtio: add names to virtqueue struct, mapping from devices to queues.\n\nAdd a linked list of all virtqueues for a virtio device: this helps for\ndebugging and is also needed for upcoming interface change.\n\nAlso, add a \"name\" field for clearer debug messages.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "564346224daaa8f7222d7a92cdbb7bafde59ae6e",
      "tree": "d91ddfa810c3d9aaf3b33f00d7ae80bd541b1f4b",
      "parents": [
        "ab2b7ebaad16226c9a5e85c5f384d19fa58a7459"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue May 26 20:54:41 2009 +0930"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 26 12:13:11 2009 -0700"
      },
      "message": "lguest: fix on Intel when KVM loaded (unhandled trap 13)\n\nWhen KVM is loaded, and hence VT set up, the vmcall instruction in an\nlguest guest causes a #GP, not #UD.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a489f0b555b753f9df8ddc24c7e74f657ef7ee7b",
      "tree": "560bd8c56524b658eb0b46e03ef42e262eb5f9b7",
      "parents": [
        "88df781afb788fa588dbf2e77f205214022a8893"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Apr 19 23:14:00 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Apr 19 23:14:01 2009 +0930"
      },
      "message": "lguest: fix guest crash on non-linear addresses in gdt pvops\n\nFixes guest crash \u0027lguest: bad read address 0x4800000 len 256\u0027\n\nThe new per-cpu allocator ends up handing a non-linear address to\nwrite_gdt_entry.  We do __pa() on it, and hand it to the host, which\nkills us.\n\nI\u0027ve long wanted to make the hypercall \"LOAD_GDT_ENTRY\" to match the IDT\ncode, but had no pressing reason until now.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: lguest@ozlabs.org\n"
    },
    {
      "commit": "88df781afb788fa588dbf2e77f205214022a8893",
      "tree": "b73e2b470a959e60fb5332737c1fca04bb629ba7",
      "parents": [
        "ff54250a0ebab7f90a5f848a0ba63f999830c872"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Wed Apr 08 17:58:39 2009 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Apr 19 23:14:00 2009 +0930"
      },
      "message": "lguest: fix crash on vmlinux images\n\nTypical message: \u0027lguest: unhandled trap 6 at 0x418726 (0x0)\u0027\n\nvmlinux guests were broken by 4cd8b5e2a159f18a1507f1187b44a1acbfa6341b\n\u0027lguest: use KVM hypercalls\u0027, which rewrites guest text from kvm hypercalls\nto trap 31.\n\nThe Launcher mmaps the kernel image.  The Guest executes and\nimmediately faults in the first text page (read-only).  Then it hits a\nhypercall, and we rewrite that hypercall, causing a copy-on-write.\nBut the Guest pagetables still refer to the old page: we fault again,\nbut as Host we see the hypercall already rewritten, and pass the fault\nback to the Guest.  The Guest hasn\u0027t set up an IDT yet, so we kill it.\n\nThis doesn\u0027t happen with bzImages: they unpack themselves and so the\ntext pages are already read-write.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nTested-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "df1693abc42e34bbc4351e179dbe66c28a94efb8",
      "tree": "b0cec44a3ace1fbc8377c73428daf64848b48907",
      "parents": [
        "4cd8b5e2a159f18a1507f1187b44a1acbfa6341b"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Wed Mar 18 13:38:35 2009 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 21:55:25 2009 +1030"
      },
      "message": "lguest: use bool instead of int\n\nImpact: clean up\n\nRusty told me, some time ago, that he had become a fan of \"bool\".\nSo, here are some replacements.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui at gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4cd8b5e2a159f18a1507f1187b44a1acbfa6341b",
      "tree": "8a774c377e2c798e119af4b3664453c6f0d1d94d",
      "parents": [
        "b7ff99ea53cd16de8f6166c0e98f19a7c6ca67ee"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Sat Mar 14 13:37:52 2009 -0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 21:55:24 2009 +1030"
      },
      "message": "lguest: use KVM hypercalls\n\nImpact: cleanup\n\nThis patch allow us to use KVM hypercalls\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui at gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6afbdd059c27330eccbd85943354f94c2b83a7fe",
      "tree": "5b3becb10a07e84c5fedda8c562f5637c091cc04",
      "parents": [
        "c5f841f1780dad7efb7eca092f60742d47f47d25"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 21:55:23 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 21:55:23 2009 +1030"
      },
      "message": "lguest: fix spurious BUG_ON() on invalid guest stack.\n\nImpact: fix crash on misbehaving guest\n\ngpte_addr() contains a BUG_ON(), insisting that the present flag is\nset.  We need to return before we call it if that isn\u0027t the case.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "6e15cf04860074ad032e88c306bea656bbdd0f22",
      "tree": "c346383bb7563e8d66b2f4a502f875b259c34870",
      "parents": [
        "be0ea69674ed95e1e98cb3687a241badc756d228",
        "60db56422043aaa455ac7f858ce23c273220f9d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 21:39:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 27 17:28:43 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into percpu-cpumask-x86-for-linus-2\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tarch/x86/include/asm/fixmap_64.h\n\tarch/x86/include/asm/setup.h\n\tkernel/irq/handle.c\n\nSemantic merge:\n        arch/x86/include/asm/fixmap.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6db6a5f3ae2ca6b874b0fd97ae16fdc9b5cdd6cc",
      "tree": "567ab7d3593f6ab63fecfb8c9797fb4efda67ea7",
      "parents": [
        "cbd88c8e6f5cdb8d4b9af01df825305200240382"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 09 10:06:28 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 09 10:06:29 2009 +1030"
      },
      "message": "lguest: fix for CONFIG_SPARSE_IRQ\u003dy\n\nImpact: remove lots of lguest boot WARN_ON() when CONFIG_SPARSE_IRQ\u003dy\n\nWe now need to call irq_to_desc_alloc_cpu() before\nset_irq_chip_and_handler_name(), but we can\u0027t do that from init_IRQ (no\nkmalloc available).\n\nSo do it as we use interrupts instead.  Also means we only alloc for\nirqs we use, which was the intent of CONFIG_SPARSE_IRQ anyway.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "965c7ecaf2e2b083d711a01ab33735a4bdeee1a4",
      "tree": "b83609b1b39195df4711114b520c3dde5c37ea2e",
      "parents": [
        "8425091ff8af2addae118fc510a523b84ce51115"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 22 23:19:12 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 23 00:54:01 2009 +0100"
      },
      "message": "x86: remove the Voyager 32-bit subarch\n\nImpact: remove unused/broken code\n\nThe Voyager subarch last built successfully on the v2.6.26 kernel\nand has been stale since then and does not build on the v2.6.27,\nv2.6.28 and v2.6.29-rc5 kernels.\n\nNo actual users beyond the maintainer reported this breakage.\nPatches were sent and most of the fixes were accepted but the\ndiscussion around how to do a few remaining issues cleanly\nfizzled out with no resolution and the code remained broken.\n\nIn the v2.6.30 x86 tree development cycle 32-bit subarch support\nhas been reworked and removed - and the Voyager code, beyond the\nbuild problems already known, needs serious and significant\nchanges and probably a rewrite to support it.\n\nCONFIG_X86_VOYAGER has been marked BROKEN then. The maintainer has\nbeen notified but no patches have been sent so far to fix it.\n\nWhile all other subarchs have been converted to the new scheme,\nvoyager is still broken. We\u0027d prefer to receive patches which\nclean up the current situation in a constructive way, but even in\ncase of removal there is no obstacle to add that support back\nafter the issues have been sorted out in a mutually acceptable\nfashion.\n\nSo remove this inactive code for now.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "05dfdbbd678ea2b642db73f48b75667a23d15484",
      "tree": "63d4cbf36a1fdf11e77008bd169d02446469cc8b",
      "parents": [
        "b44d49ab0954accefba4c71274ab58abe1c25c52"
      ],
      "author": {
        "name": "Mark Wallis",
        "email": "mwallis@serialmonkey.com",
        "time": "Mon Jan 26 17:32:35 2009 +1100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 30 11:34:11 2009 +1030"
      },
      "message": "lguest: Fix a memory leak with the lg object during launcher close\n\nFix a memory leak identified by Rusty Russell during LCA09 by\nkfree\u0027ing the lg object instead of just clearing it when the\nlauncher closes.\n\nSigned-off-by: Mark Wallis \u003cmwallis@serialmonkey.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "72410af921cbc9018da388ca1ddf75880a033ac1",
      "tree": "982abebfcf114149c9ba81bb468a0dd3adf0376b",
      "parents": [
        "18e352e4a73465349711a9324767e1b2453383e2"
      ],
      "author": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Fri Jan 16 20:39:14 2009 +0900"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 30 11:34:10 2009 +1030"
      },
      "message": "lguest: typos fix\n\n3 points\n\nlguest_asm.S \u003d\u003e i386_head.S\nLHCALL_BREAK \u003d\u003e LHREQ_BREAK\nperferred    \u003d\u003e preferred\n\nSigned-off-by: Atsushi SAKAI \u003csakaia@jp.fujitsu.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ff8561c4ad09ca38c866436c9d67df2309b7dd40",
      "tree": "7cc96a3fcaf43b1e34dfcffd4d936edf9b596a6a",
      "parents": [
        "63d12556703f17817a46e140704360b29b851bad"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Mon Dec 15 12:58:28 2008 +0000"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 06 10:44:34 2009 -0800"
      },
      "message": "lguest: do not statically allocate root device\n\nWe shouldn\u0027t be statically allocating the root device object,\nso dynamically allocate it using root_device_register()\ninstead.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b840d79631c882786925303c2b0f4fefc31845ed",
      "tree": "cda60a95d4507fe1321fc285af38982d7eb9693b",
      "parents": [
        "597b0d21626da4e6f09f132442caf0cc2b0eb47c",
        "c3d80000e3a812fe5a200d6bde755fbd7fa65481"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 02 11:44:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 02 11:44:09 2009 -0800"
      },
      "message": "Merge branch \u0027cpus4096-for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096-for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (66 commits)\n  x86: export vector_used_by_percpu_irq\n  x86: use logical apicid in x2apic_cluster\u0027s x2apic_cpu_mask_to_apicid_and()\n  sched: nominate preferred wakeup cpu, fix\n  x86: fix lguest used_vectors breakage, -v2\n  x86: fix warning in arch/x86/kernel/io_apic.c\n  sched: fix warning in kernel/sched.c\n  sched: move test_sd_parent() to an SMP section of sched.h\n  sched: add SD_BALANCE_NEWIDLE at MC and CPU level for sched_mc\u003e0\n  sched: activate active load balancing in new idle cpus\n  sched: bias task wakeups to preferred semi-idle packages\n  sched: nominate preferred wakeup cpu\n  sched: favour lower logical cpu number for sched_mc balance\n  sched: framework for sched_mc/smt_power_savings\u003dN\n  sched: convert BALANCE_FOR_xx_POWER to inline functions\n  x86: use possible_cpus\u003dNUM to extend the possible cpus allowed\n  x86: fix cpu_mask_to_apicid_and to include cpu_online_mask\n  x86: update io_apic.c to the new cpumask code\n  x86: Introduce topology_core_cpumask()/topology_thread_cpumask()\n  x86: xen: use smp_call_function_many()\n  x86: use work_on_cpu in x86/kernel/cpu/mcheck/mce_amd_64.c\n  ...\n\nFixed up trivial conflict in kernel/time/tick-sched.c manually\n"
    },
    {
      "commit": "bda53cd510b6777ced652ba279020bb7b414b744",
      "tree": "799b1ec6d9b8be1cdeb4f41789101c3944427e9c",
      "parents": [
        "58a24566449892dda409b9ad92c2e56c76c5670c"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Wed Dec 10 17:45:39 2008 +0000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:26:12 2008 +1030"
      },
      "message": "lguest: struct device - replace bus_id with dev_name()\n\nbus_id is gradually being removed, so use dev_name() instead.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "58a24566449892dda409b9ad92c2e56c76c5670c",
      "tree": "4dfe2305dfd078c71d949ea8cc6c9cc6e2679494",
      "parents": [
        "be3c5832d51174ef7f21cefd6ad612dabdcb62fd"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Mon Sep 29 01:40:07 2008 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:26:11 2008 +1030"
      },
      "message": "lguest: move the initial guest page table creation code to the host\n\nThis patch moves the initial guest page table creation code to the host,\nso the launcher keeps working with PAE enabled configs.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "87c7d57c17ade5024d95b6ca0da249da49b0672a",
      "tree": "2ffeaae5c2e5ed9a72efec6466678fb797c4cdfa",
      "parents": [
        "db40598863e8cbbd11053ad3c8bae89000f603f9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:26:03 2008 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:26:03 2008 +1030"
      },
      "message": "virtio: hand virtio ring alignment as argument to vring_new_virtqueue\n\nThis allows each virtio user to hand in the alignment appropriate to\ntheir virtio_ring structures.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\n"
    },
    {
      "commit": "2966af73e70dee461c256b5eb877b2ff757f8c82",
      "tree": "5cb8a81e80cb9b513fad015f0dc4d5e5db52fd14",
      "parents": [
        "498af14783935af487d17dbee4ac451783cbc2b7"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:25:58 2008 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:26:02 2008 +1030"
      },
      "message": "virtio: use LGUEST_VRING_ALIGN instead of relying on pagesize\n\nThis doesn\u0027t really matter, since lguest is i386 only at the moment,\nbut we could actually choose a different value.  (lguest doesn\u0027t have\na guarenteed ABI).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b77b881f21b29aa7efa668fde69ee3dc0372ae3f",
      "tree": "a4039161e9bcab3e9c2fd2e2aa70fee16103857b",
      "parents": [
        "a7883dece6ef82097e6bdf19c1d0a20351e06056"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Fri Dec 19 15:23:44 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 23 22:37:28 2008 +0100"
      },
      "message": "x86: fix lguest used_vectors breakage, -v2\n\nImpact: fix lguest, clean up\n\n32-bit lguest used used_vectors to record vectors, but that model of\nallocating vectors changed and got broken, after we changed vector\nallocation to a per_cpu array.\n\nTry enable that for 64bit, and the array is used for all vectors that\nare not managed by vector_irq per_cpu array.\n\nAlso kill system_vectors[], that is now a duplication of the\nused_vectors bitmap.\n\n[ merged in cpus4096 due to io_apic.c cpumask changes. ]\n[ -v2, fix build failure ]\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1dc3e3bcbfe335843ec938bfdddb34d10f4dd278",
      "tree": "8666189f7a285c8e4c6512784dff39971fefa30c",
      "parents": [
        "bf2002967775cbb233876d51ff94e8daa7e77858"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 26 00:19:27 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 26 00:19:28 2008 +1000"
      },
      "message": "lguest: update commentry\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "71a3f4edc11b9dd7af28d003acbbd33496003da1",
      "tree": "b727812682ca9f30169496a30a1e51620f53c7c9",
      "parents": [
        "912985dce45ef18fcdd9f5439fef054e0e22302a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:53 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:53 2008 +1000"
      },
      "message": "lguest: use get_user_pages_fast() instead of get_user_pages()\n\nUsing a simple page table thrashing program I measure a slight\nimprovement.  The program creates five processes.  Each touches 1000\npages then schedules the next process.  We repeat this 1000 times.  As\nlguest only caches 4 cr3 values, this rebuilds a lot of shadow page\ntables requiring virt-\u003ephys mappings.\n\n\tBefore: 5.93 seconds\n\tAfter: 5.40 seconds\n\n(Counts of slow vs fastpath in this usage are 6092 and 2852462 respectively.)\n\nAnd more importantly for lguest, the code is simpler.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "cf485e566bc4a8098680162e1cc2ac1dfbef8a3c",
      "tree": "89ce628400d628f779b0aedf16b7a033d63de6c5",
      "parents": [
        "28fd6d7f953711fbf67496701be05513052d967d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Jun 09 16:22:48 2008 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:34 2008 +1000"
      },
      "message": "lguest: use cpu capability accessors\n\nTo support my little make-x86-bitops-use-proper-typechecking projectlet.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "0a707210aa1b8ac40fe781b2a9d0b203b6ebb921",
      "tree": "66926aa4868bff6b78b13f3bdeb2a9e9a57bd20d",
      "parents": [
        "0c12091d82e48dc423fb1f51eb0062c557a084af"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Tue Jul 08 10:29:42 2008 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:32 2008 +1000"
      },
      "message": "lguest: fix switcher_page leak on unload\n\nmap_switcher allocates the array, unmap_switcher has to free it\naccordingly.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "0c12091d82e48dc423fb1f51eb0062c557a084af",
      "tree": "91579abdc22e7bf3784f9fcb59a0f018e7f5366d",
      "parents": [
        "5d006d8d09e82f086ca0baf79a2907f2c1e25af7"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:31 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:31 2008 +1000"
      },
      "message": "lguest: Guest int3 fix\n\nRon Minnich noticed that guest userspace gets a GPF when it tries to int3:\nwe need to copy the privilege level from the guest-supplied IDT to the real\nIDT.  int3 is the only common case where guest userspace expects to invoke\nan interrupt, so that\u0027s the symptom of failing to do this.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e34f87256794b87e7f4a8f1812538be7b7b5214c",
      "tree": "b91ffb6df4ac13ace269bef60ae16a1048b1fa73",
      "parents": [
        "c624896e488ba2bff5ae497782cfb265c8b00646"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 25 12:06:13 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 25 12:06:14 2008 +1000"
      },
      "message": "virtio: Add transport feature handling stub for virtio_ring.\n\nTo prepare for virtio_ring transport feature bits, hook in a call in\nall the users to manipulate them.  This currently just clears all the\nbits, since it doesn\u0027t understand any features.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c624896e488ba2bff5ae497782cfb265c8b00646",
      "tree": "714145903ff8c889e9544e8366b2ee2a62234c0c",
      "parents": [
        "dd7c7bc46211785a1aa7d70feb15830f62682b3c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 25 12:06:07 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 25 12:06:12 2008 +1000"
      },
      "message": "virtio: Rename set_features to finalize_features\n\nRather than explicitly handing the features to the lower-level, we just\nhand the virtio_device and have it set the features.  This make it clear\nthat it has the chance to manipulate the features of the device at this\npoint (and that all feature negotiation is already done).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "1a781a777b2f6ac46523fe92396215762ced624d",
      "tree": "4f34bb4aade85c0eb364b53d664ec7f6ab959006",
      "parents": [
        "b9d2252c1e44fa83a4e65fdc9eb93db6297c55af",
        "42a2f217a5e324ed5f2373ab1b7a0a15187c4d6c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "message": "Merge branch \u0027generic-ipi\u0027 into generic-ipi-for-linus\n\nConflicts:\n\n\tarch/powerpc/Kconfig\n\tarch/s390/kernel/time.c\n\tarch/x86/kernel/apic_32.c\n\tarch/x86/kernel/cpu/perfctr-watchdog.c\n\tarch/x86/kernel/i8259_64.c\n\tarch/x86/kernel/ldt.c\n\tarch/x86/kernel/nmi_64.c\n\tarch/x86/kernel/smpboot.c\n\tarch/x86/xen/smp.c\n\tinclude/asm-x86/hw_irq_32.h\n\tinclude/asm-x86/hw_irq_64.h\n\tinclude/asm-x86/mach-default/irq_vectors.h\n\tinclude/asm-x86/mach-voyager/irq_vectors.h\n\tinclude/asm-x86/smp.h\n\tkernel/Makefile\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "15e551d25e5a600c76cb92171357d4cbe2d1bf7a",
      "tree": "8a28438fbed1aba7f57e2527b40c98452258b827",
      "parents": [
        "62fa572f6933038b3d79558812de88702bda176f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 10 17:02:10 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 10 18:55:47 2008 +0200"
      },
      "message": "x86, VisWS: turn into generic arch, eliminate Kconfig specials\n\nremove leftover traces of various VISWS related Kconfig specials.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d",
      "tree": "3658f893c2f89ea0be4c6cc08aa11fa54476d0f4",
      "parents": [
        "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 09 09:39:44 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:38 2008 +0200"
      },
      "message": "on_each_cpu(): kill unused \u0027retry\u0027 parameter\n\nIt\u0027s not even passed on to smp_call_function() anymore, since that\nwas removed. So kill it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d02859ecb321c8c0f74cb9bbe3f51a59e58822b0",
      "tree": "05dd5bdc55081c0a90bf0afc35c07d0d6e25d015",
      "parents": [
        "a987b16cc6123af2c9414032701bab5f73c54c89",
        "543cf4cb3fe6f6cae3651ba918b9c56200b257d0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 25 12:16:51 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 25 12:16:51 2008 +0200"
      },
      "message": "Merge commit \u0027v2.6.26-rc8\u0027 into x86/xen\n\nConflicts:\n\n\tarch/x86/xen/enlighten.c\n\tarch/x86/xen/mmu.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "54481cf88bc59923ea30f2ca345a73c60155e901",
      "tree": "1965fad9a3a207a619b5506722208f93788210b8",
      "parents": [
        "ffe6e1da86d21d7855495b5a772c93f050258f6e"
      ],
      "author": {
        "name": "Suresh Siddha",
        "email": "suresh.b.siddha@intel.com",
        "time": "Thu Jun 19 09:41:22 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 13:26:18 2008 +0200"
      },
      "message": "x86: fix NULL pointer deref in __switch_to\n\nI am able to reproduce the oops reported by Simon in __switch_to() with\nlguest.\n\nMy debug showed that there is at least one lguest specific\nissue (which should be present in 2.6.25 and before aswell) and it got\nexposed with a kernel oops with the recent fpu dynamic allocation patches.\n\nIn addition to the previous possible scenario (with fpu_counter), in the\npresence of lguest, it is possible that the cpu\u0027s TS bit it still set and the\nlguest launcher task\u0027s thread_info has TS_USEDFPU still set.\n\nThis is because of the way the lguest launcher handling the guest\u0027s TS bit.\n(look at lguest_set_ts() in lguest_arch_run_guest()). This can result\nin a DNA fault while doing unlazy_fpu() in __switch_to(). This will\nend up causing a DNA fault in the context of new process thats\ngetting context switched in (as opossed to handling DNA fault in the context\nof lguest launcher/helper process).\n\nThis is wrong in both pre and post 2.6.25 kernels. In the recent\n2.6.26-rc series, this is showing up as NULL pointer dereferences or\nsleeping function called from atomic context(__switch_to()), as\nwe free and dynamically allocate the FPU context for the newly\ncreated threads. Older kernels might show some FPU corruption for processes\nrunning inside of lguest.\n\nWith the appended patch, my test system is running for more than 50 mins\nnow. So atleast some of your oops (hopefully all!) should get fixed.\nPlease give it a try. I will spend more time with this fix tomorrow.\n\nReported-by: Simon Holm Thøgersen \u003codie@cs.aau.dk\u003e\nReported-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "688d22e23ab1caacb2c36c615854294b58f2ea47",
      "tree": "95c8163c0b1f56902f5537bc256d7e5507f56cee",
      "parents": [
        "7e0edc1bc343231029084761ebf59e522902eb49",
        "066519068ad2fbe98c7f45552b1f592903a9c8c8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 16 11:21:27 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 16 11:21:27 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into x86/xen\n"
    },
    {
      "commit": "b769f579081943f14e0ff03b7b0bd3a11cf14625",
      "tree": "026d89b6d937af43af4a692bcf547e032f0c58cc",
      "parents": [
        "5610bd1524332fe7d651eb56cc780e32763a2ac3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 30 15:09:42 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 30 15:09:42 2008 +1000"
      },
      "message": "virtio: set device index in common code.\n\nAnthony Liguori points out that three different transports use the virtio code,\nbut each one keeps its own counter to set the virtio_device\u0027s index field.  In\ntheory (though not in current practice) this means that names could be\nduplicated, and that risk grows as more transports are created.\n\nSo we move the selection of the unique virtio_device.index into the common code\nin virtio.c, which has the side-benefit of removing duplicate code.\n\nThe only complexity is that lguest and S/390 use the index to uniquely identify\nthe device in case of catastrophic failure before register_virtio_device() is\ncalled: now we use the offset within the descriptor page as a unique identifier\nfor the printks.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Chris Lalancette \u003cclalance@redhat.com\u003e\nCc: Anthony Liguori \u003canthony@codemonkey.ws\u003e\n"
    },
    {
      "commit": "e27810f11340987df123a99eb9ae14c054a55639",
      "tree": "4605228957a1e02cde0d4fa753cc3cbe2f75656c",
      "parents": [
        "0a2ce2ffc358da96792d514c1024b72c52be9cc1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 30 15:09:40 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 30 15:09:41 2008 +1000"
      },
      "message": "lguest: use ioremap_cache, not ioremap\n\nThanks to Jon Corbet \u0026 LWN.  Only took me a day to join the dots.\n\nHost-\u003eGuest netcat before (with unnecessily large receive buffers):\n1073741824 bytes (1.1 GB) copied, 24.7528 seconds, 43.4 MB/s\n\nAfter:\n1073741824 bytes (1.1 GB) copied, 17.6369 seconds, 60.9 MB/s\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a15af1c9ea2750a9ff01e51615c45950bad8221b",
      "tree": "b4167c16c23365d016180b20248c724902e0c954",
      "parents": [
        "239d1fc04ed0b58d638096b12a7f6d50269d30c9"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Mon May 26 23:31:06 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 27 10:11:36 2008 +0200"
      },
      "message": "x86/paravirt: add pte_flags to just get pte flags\n\nAdd pte_flags() to extract the flags from a pte.  This is a special\ncase of pte_val() which is only guaranteed to return the pte\u0027s flags\ncorrectly; the page number may be corrupted or missing.\n\nThe intent is to allow paravirt implementations to return pte flags\nwithout having to do any translation of the page number (most notably,\nXen).\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a007a751d98fe97142e4724a83a4e31ec66b7532",
      "tree": "ab9d1d844688834875359c600982a3c8ae738014",
      "parents": [
        "9f3f746741d917fe3c6c544c7d319d533176d90b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:53 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:54 2008 +1000"
      },
      "message": "lguest: make Launcher see device status updates\n\nThis brings us closer to Real Life, where we\u0027d examine the device\nfeatures once it\u0027s set the DRIVER_OK status bit.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9f3f746741d917fe3c6c544c7d319d533176d90b",
      "tree": "cc962947595594115c3616960c3772e4175faffb",
      "parents": [
        "24adf12722b4f2800e5b5f0955d57033f0d0c9e5"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:51 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:52 2008 +1000"
      },
      "message": "lguest: remove bogus NULL cpu check\n\nIf lg isn\u0027t NULL, and cpu_id is sane, \u0026lg-\u003ecpus[cpu_id] can\u0027t be NULL.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "24adf12722b4f2800e5b5f0955d57033f0d0c9e5",
      "tree": "3f9aee46f5d5fab937c03732e668735dde7663da",
      "parents": [
        "48e4043d4529523cbc7fa8dd745bd8e2c45ce1d3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:51 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:51 2008 +1000"
      },
      "message": "lguest: avoid using NR_CPUS as a bounds check.\n\nNR_CPUS (being a host number) is an arbitrary limit for the Guest.\nUsing the array size directly (which currently happes to be NR_CPUS)\nis more futureproof.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c45a6816c19dee67b8f725e6646d428901a6dc24",
      "tree": "096e3263fd14e140685bcc3082394ff15f5aeddb",
      "parents": [
        "72e61eb40b55dd57031ec5971e810649f82b0259"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:50 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:50 2008 +1000"
      },
      "message": "virtio: explicit advertisement of driver features\n\nA recent proposed feature addition to the virtio block driver revealed\nsome flaws in the API: in particular, we assume that feature\nnegotiation is complete once a driver\u0027s probe function returns.\n\nThere is nothing in the API to require this, however, and even I\ndidn\u0027t notice when it was violated.\n\nSo instead, we require the driver to specify what features it supports\nin a table, we can then move the feature negotiation into the virtio\ncore.  The intersection of device and driver features are presented in\na new \u0027features\u0027 bitmap in the struct virtio_device.\n\nNote that this highlights the difference between Linux unsigned-long\nbitmaps where each unsigned long is in native endian, and a\nstraight-forward little-endian array of bytes.\n\nDrivers can still remove feature bits in their probe routine if they\nreally have to.\n\nAPI changes:\n- dev-\u003econfig-\u003efeature() no longer gets and acks a feature.\n- drivers should advertise their features in the \u0027feature_table\u0027 field\n- use virtio_has_feature() for extra sanity when checking feature bits\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d3135846f6c1858dbad6ccb780a42e6c98953e6d",
      "tree": "f1800b9b4b435f86c33385bb4a002239547e3879",
      "parents": [
        "5f090dcb4d4fff373ce7165bce4ba5e87534d50a"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Fri Apr 18 22:16:32 2008 -0400"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Fri Apr 18 22:16:32 2008 -0400"
      },
      "message": "drivers: Remove unnecessary inclusions of asm/semaphore.h\n\nNone of these files use any of the functionality promised by\nasm/semaphore.h.  It\u0027s possible that they rely on it dragging in some\nunrelated header file, but I can\u0027t build all these files, so we\u0027ll have\nfix any build failures as they come up.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "74dbf719ed3c49687dab507967ebab9189e91ab0",
      "tree": "01001802b94aa437a5891879fc09e30717a0c407",
      "parents": [
        "53a0c98e117272125183138aefc6b13b4a5f38a1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Mar 29 03:08:28 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 30 14:20:23 2008 -0700"
      },
      "message": "misc __user misannotations (pointless casts to long)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6bd8e13034dd7d60b6f14217096efa192d0adc1",
      "tree": "23890908b06eb8357e6ce633d35df1216f5e4213",
      "parents": [
        "e18b094f0faa4889b06a112da17230a10b88c815"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:53 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:54 2008 +1100"
      },
      "message": "lguest: comment documentation update.\n\nTook some cycles to re-read the Lguest Journey end-to-end, fix some\nrot and tighten some phrases.\n\nOnly comments change.  No new jokes, but a couple of recycled old jokes.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b488f22d70f1c2451618b9991b9665d2c6b31e2b",
      "tree": "f2d7d91408edced2ee31744c857ae4e7546f974f",
      "parents": [
        "bd6c26900bae19bd51abedfc9a8a281afbba3a06"
      ],
      "author": {
        "name": "Tim Ansell",
        "email": "mithro@mithis.com",
        "time": "Mon Feb 11 18:13:42 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:52 2008 +1100"
      },
      "message": "lguest: Add puppies which where previously missing.\n\nlguest doesn\u0027t have features, it has puppies!\n\nSigned-off-by: Timothy R Ansell \u003cmithro@mithis.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4357bd9453b81e0a41db1dec16e06d74256b7560",
      "tree": "4b23d512d6cbe26ac2b4a0dfaff7e415bd1dab7c",
      "parents": [
        "3fabc55f34b72720e8a10aa442bd3415a211edb3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 11 09:35:57 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 11 09:35:58 2008 +1100"
      },
      "message": "lguest: Revert 1ce70c4fac3c3954bd48c035f448793867592bc0, fix real problem.\n\nAhmed managed to crash the Host in release_pgd(), which cannot be a Guest\nbug, and indeed it wasn\u0027t.\n\nThe bug was that handing a 0 as the address of the toplevel page table\nbeing manipulated can cause the lookup code in find_pgdir() to return\nan uninitialized cache entry (we shadow up to 4 top level page tables\nfor each Guest).\n\nCommit 37cc8d7f963ba2deec29c9b68716944516a3244f introduced this\nbehaviour in the Guest, uncovering the bug.\n\nThe patch which he submitted (which removed the /4 from the index\ncalculation) simply ensured that these high-indexed entries hit the\nearly exit path of guest_set_pmd().  But you get lots of segfaults in\nguest userspace as the PMDs aren\u0027t being updated.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "f14ae652baa3d72ae378f0c06b89cc2c4ef15ff8",
      "tree": "65dfe2b310103bd6f2c981de2e1d0faecd05805c",
      "parents": [
        "f73d1e6ca6985b43a1871467463cba632fbc624d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 11 09:35:56 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 11 09:35:56 2008 +1100"
      },
      "message": "lguest: fix __get_vm_area usage.\n\nRobert Bragg\u0027s 5dc331852848a38ca00a2817e5b98a1d0561b116 tightened\n(ie. fixed) the checking in __get_vm_area, and it broke lguest.\n\nlguest should pass the exact \"end\" it wants, not some random constant\n(it was possible previously that it would actually get an address\ndifferent from SWITCHER_ADDR).\n\nAlso, Fabio Checconi pointed out that we should make sure we\u0027re not\nhitting the fixmap area.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Robert Bragg \u003crobert@sixbynine.org\u003e\n"
    },
    {
      "commit": "f73d1e6ca6985b43a1871467463cba632fbc624d",
      "tree": "84b01e87f41bf960c58b6934142da31f6d1638eb",
      "parents": [
        "cdeeeae056a429e729ae9e914fa8142ee45bee93"
      ],
      "author": {
        "name": "Eugene Teo",
        "email": "eugeneteo@kernel.sg",
        "time": "Sat Feb 09 23:53:17 2008 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 11 09:35:56 2008 +1100"
      },
      "message": "lguest: make sure cpu is initialized before accessing it\n\nIf req is LHREQ_INITIALIZE, and the guest has been initialized before\n(unlikely), it will attempt to access cpu-\u003etsk even though cpu is not yet\ninitialized.\n\nSigned-off-by: Eugene Teo \u003ceugeneteo@kernel.sg\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    }
  ],
  "next": "31f4b46ec6f889533c06537dea96bb0d20fa625b"
}
