)]}'
{
  "log": [
    {
      "commit": "53078ca84b1c01f36c306d1f52e2f88c7bb2f9e4",
      "tree": "667449ab1b21a36f7123df55d40b17d72e2b8543",
      "parents": [
        "1c52152b3008b7bdcc3b94d0be4d0b814dce1530"
      ],
      "author": {
        "name": "Douglas Thompson",
        "email": "dougthompson@xmission.com",
        "time": "Thu Jul 19 01:50:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:55 2007 -0700"
      },
      "message": "include/linux/pci_id.h: add amd northbridge defines\n\npci_ids.h needs two of the AMD NB device-ids namely, Addressmap and the Memory\nController devices\n\nThis patch adds those to the pci_id.h include file\n\nSigned-off-by:\tDouglas Thompson \u003cdougthompson@xmission.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66ee2f940ac8ab25f0c43a1e717d25dc46bfe74d",
      "tree": "929e24aefc27c95e13641a8f4052d9093a1ef34a",
      "parents": [
        "91b99041c1d577ded1da599ddc28cec2e07253cf"
      ],
      "author": {
        "name": "Dave Jiang",
        "email": "djiang@mvista.com",
        "time": "Thu Jul 19 01:49:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:54 2007 -0700"
      },
      "message": "drivers/edac: mod assert_error check\n\nChange error check and clear variable from an atomic to an int\n\nSigned-off-by: Dave Jiang \u003cdjiang@mvista.com\u003e\nSigned-off-by: Douglas Thompson \u003cdougthompson@xmission.com\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "535c6a53035d8911f6b90455550c5fde0da7b866",
      "tree": "adea5611dd32f312438b2447f70a7cf2e98b508c",
      "parents": [
        "c4192705fec85219086231a1c0fa61e8776e2c3b"
      ],
      "author": {
        "name": "Jason Uhlenkott",
        "email": "juhlenko@akamai.com",
        "time": "Thu Jul 19 01:49:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:54 2007 -0700"
      },
      "message": "drivers/edac: new inte 30x0 MC driver\n\nHere\u0027s a driver for the Intel 3000 and 3010 memory controllers,\nrelative to today\u0027s Sourceforge code drop.  This has only had light\ntesting (I\u0027ve yet to actually see it handle a memory error) but it\ndetects my hardware correctly.\n\nSigned-off-by: Jason Uhlenkott \u003cjuhlenko@akamai.com\u003e\nSigned-off-by: Douglas Thompson \u003cdougthompson@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0d121720220584bba2876b032e58a076b843fa1",
      "tree": "13ba24c6d875ded1494e1560f336b8551c663ef1",
      "parents": [
        "28f96eeafc89643d411d54c258788a8573576127"
      ],
      "author": {
        "name": "Dave Jiang",
        "email": "djiang@mvista.com",
        "time": "Thu Jul 19 01:49:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:53 2007 -0700"
      },
      "message": "drivers/edac: add new nmi rescan\n\nProvides a way for NMI reported errors on x86 to notify the EDAC\nsubsystem pending ECC errors by writing to a software state variable.\n\nHere\u0027s the reworked patch. I added an EDAC stub to the kernel so we can\nhave variables that are in the kernel even if EDAC is a module. I also\nimplemented the idea of using the chip driver to select error detection\nmode via module parameter and eliminate the kernel compile option.\nPlease review/test. Thx!\n\nAlso, I only made changes to some of the chipset drivers since I am\nunfamiliar with the other ones. We can add similar changes as we go.\n\nSigned-off-by: Dave Jiang \u003cdjiang@mvista.com\u003e\nSigned-off-by: Douglas Thompson \u003cdougthompson@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d7e28ffe6c74416b54345d6004fd0964c115b12c",
      "tree": "844beb4f400d5400098538e0c1e5f12d20a9504a",
      "parents": [
        "07ad157f6e5d228be78acd5cea0291e5d0360398"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 19 01:49:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "lguest: the host code\n\nThis is the code for the \"lg.ko\" module, which allows lguest guests to\nbe launched.\n\n[akpm@linux-foundation.org: update for futex-new-private-futexes]\n[akpm@linux-foundation.org: build fix]\n[jmorris@namei.org: lguest: use hrtimers]\n[akpm@linux-foundation.org: x86_64 build fix]\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "07ad157f6e5d228be78acd5cea0291e5d0360398",
      "tree": "87180c2d1aa53857f46d1dc293e08c0fbea0608a",
      "parents": [
        "5992b6dac0d23a2b51a1ccbaf8f1a2e62097b12b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 19 01:49:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "lguest: the guest code\n\nlguest is a simple hypervisor for Linux on Linux.  Unlike kvm it doesn\u0027t need\nVT/SVM hardware.  Unlike Xen it\u0027s simply \"modprobe and go\".  Unlike both, it\u0027s\n5000 lines and self-contained.\n\nPerformance is ok, but not great (-30% on kernel compile).  But given its\nhackability, I expect this to improve, along with the paravirt_ops code which\nit supplies a complete example for.  There\u0027s also a 64-bit version being\nworked on and other craziness.\n\nBut most of all, lguest is awesome fun!  Too much of the kernel is a big ball\nof hair.  lguest is simple enough to dive into and hack, plus has some warts\nwhich scream \"fork me!\".\n\nThis patch:\n\nThis is the code and headers required to make an i386 kernel an lguest guest.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c7d51402d2a64c5b96531f9900bb368020ebbbbb",
      "tree": "b870f7352ceb21799df933a31662b748edcad1e6",
      "parents": [
        "e22841c637dc8b308b40f59d64a5b6683d458ab7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Jul 19 01:49:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "knfsd: clean up EX_RDONLY\n\nShare a little common code, reverse the arguments for consistency, drop the\nunnecessary \"inline\", and lowercase the name.\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e22841c637dc8b308b40f59d64a5b6683d458ab7",
      "tree": "4a5d32f430c8123a71a1731eb6b94f807bb435f4",
      "parents": [
        "5d3dbbeaf56d0365ac6b5c0a0da0bd31cc4781e1"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Jul 19 01:49:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "knfsd: move EX_RDONLY out of header\n\nEX_RDONLY is only called in one place; just put it there.\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d688abf50bd5a30d2c44dea2a72dd59052cd3cce",
      "tree": "2f572d18af05969b2c882970cda4860be345bdfc",
      "parents": [
        "6819457d2cb7fe4fdb0fc3655b6b6dc71a86bee9"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Jul 19 01:49:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "move page writeback acounting out of macros\n\npage-writeback accounting is presently performed in the page-flags macros.\nThis is inconsistent and a bit ugly and makes it awkward to implement\nper-backing_dev under-writeback page accounting.\n\nSo move this accounting down to the callsite(s).\n\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10146801e8b960d7473e350b60458d9d5a2be1cf",
      "tree": "98b42daabeda36e89202265dd2e83c9d4703602a",
      "parents": [
        "a4c8b9159000018b0c641b844795a4de4e954582"
      ],
      "author": {
        "name": "Greg Ungerer",
        "email": "gerg@snapgear.com",
        "time": "Thu Jul 19 01:49:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:51 2007 -0700"
      },
      "message": "m68knommu: remove is_in_rom() function\n\nRemove is_in_rom() function.  It doesn\u0027t actually serve the purpose it was\nintended to.  If you look at the use of it _access_ok() (which is the only use\nof it) then it is obvious that most of memory is marked as access_ok.  No\npoint having is_in_rom() then, so remove it.\n\nSigned-off-by: Greg Ungerer \u003cgerg@uclinux.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2502b667ea835ee16685c74b2a0d89ba8afe117a",
      "tree": "31d492fb934df6d83819b679f3aa8d7f6952396d",
      "parents": [
        "f8af0bb890d6cdcb09ec042c128e217a7c500355"
      ],
      "author": {
        "name": "Greg Ungerer",
        "email": "gerg@snapgear.com",
        "time": "Thu Jul 19 01:49:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:50 2007 -0700"
      },
      "message": "m68knommu: generic irq handling\n\nChange the m68knommu irq handling to use the generic irq framework.\n\nSigned-off-by: Greg Ungerer \u003cgerg@uclinux.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b5ad0797c0e4049001f961a8b58f1d0ce532072",
      "tree": "9e56f01f6bd108bcf0631c254d5deb4eb60b322b",
      "parents": [
        "c71063c9c9dc232d0d51f936f237f7dc5681e8e3"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Jul 19 01:49:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "stacktrace: fix header file for !CONFIG_STACKTRACE\n\nThe print_stack_trace macro in stacktrace.h has a wrong number of\narguments, fix it.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96645678cd726e87ce42a0664de71e047e32bca4",
      "tree": "116f568a090414777b481e8e5d9db55f420e4335",
      "parents": [
        "443aef0eddfa44c158d1b94ebb431a70638fcab4"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:49:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockstat: measure lock bouncing\n\n    __acquire\n        |\n       lock _____\n        |        \\\n        |    __contended\n        |         |\n        |        wait\n        | _______/\n        |/\n        |\n   __acquired\n        |\n   __release\n        |\n     unlock\n\nWe measure acquisition and contention bouncing.\n\nThis is done by recording a cpu stamp in each lock instance.\n\nContention bouncing requires the cpu stamp to be set on acquisition. Hence we\nmove __acquired into the generic path.\n\n__acquired is then used to measure acquisition bouncing by comparing the\ncurrent cpu with the old stamp before replacing it.\n\n__contended is used to measure contention bouncing (only useful for preemptable\nlocks)\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b32d0a4e9ec07808a5c406a416c6576c986b047",
      "tree": "9157e27e485723b6806fbab8926e9e5fcd5397e6",
      "parents": [
        "4fe87745a6722d42ff27a60768c77958fa1fc498"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockdep: various fixes\n\n - update the copyright notices\n - use the default hash function\n - fix a thinko in a BUILD_BUG_ON\n - add a WARN_ON to spot inconsitent naming\n - fix a termination issue in /proc/lock_stat\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f20786ff4da51e56b1956acf30be2552be266746",
      "tree": "f6d0a9ed84ca476ca19fe7131d842699881756c4",
      "parents": [
        "8e18257d29238311e82085152741f0c3aa18b74d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockstat: core infrastructure\n\nIntroduce the core lock statistics code.\n\nLock statistics provides lock wait-time and hold-time (as well as the count\nof corresponding contention and acquisitions events). Also, the first few\ncall-sites that encounter contention are tracked.\n\nLock wait-time is the time spent waiting on the lock. This provides insight\ninto the locking scheme, that is, a heavily contended lock is indicative of\na too coarse locking scheme.\n\nLock hold-time is the duration the lock was held, this provides a reference for\nthe wait-time numbers, so they can be put into perspective.\n\n  1)\n    lock\n  2)\n    ... do stuff ..\n    unlock\n  3)\n\nThe time between 1 and 2 is the wait-time. The time between 2 and 3 is the\nhold-time.\n\nThe lockdep held-lock tracking code is reused, because it already collects locks\ninto meaningful groups (classes), and because it is an existing infrastructure\nfor lock instrumentation.\n\nCurrently lockdep tracks lock acquisition with two hooks:\n\n  lock()\n    lock_acquire()\n    _lock()\n\n ... code protected by lock ...\n\n  unlock()\n    lock_release()\n    _unlock()\n\nWe need to extend this with two more hooks, in order to measure contention.\n\n  lock_contended() - used to measure contention events\n  lock_acquired()  - completion of the contention\n\nThese are then placed the following way:\n\n  lock()\n    lock_acquire()\n    if (!_try_lock())\n      lock_contended()\n      _lock()\n      lock_acquired()\n\n ... do locked stuff ...\n\n  unlock()\n    lock_release()\n    _unlock()\n\n(Note: the try_lock() \u0027trick\u0027 is used to avoid instrumenting all platform\n       dependent lock primitive implementations.)\n\nIt is also possible to toggle the two lockdep features at runtime using:\n\n  /proc/sys/kernel/prove_locking\n  /proc/sys/kernel/lock_stat\n\n(esp. turning off the O(n^2) prove_locking functionaliy can help)\n\n[akpm@linux-foundation.org: build fixes]\n[akpm@linux-foundation.org: nuke unneeded ifdefs]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jason Baron \u003cjbaron@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": "21f8ca3bf6198bd21e3c4cc820af2ccf753a6ec8",
      "tree": "858f5cf78cb849ad135a6867428c2088e41d10e5",
      "parents": [
        "5b7f13bd26a0c1d394a1a1f2bb6de5130c3a3843"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "fix raw_spinlock_t vs lockdep\n\nUse the lockdep infrastructure to track lock contention and other lock\nstatistics.\n\nIt tracks lock contention events, and the first four unique call-sites that\nencountered contention.\n\nIt also measures lock wait-time and hold-time in nanoseconds. The minimum and\nmaximum times are tracked, as well as a total (which together with the number\nof event can give the avg).\n\nAll statistics are done per lock class, per write (exclusive state) and per read\n(shared state).\n\nThe statistics are collected per-cpu, so that the collection overhead is\nminimized via having no global cachemisses.\n\nThis new lock statistics feature is independent of the lock dependency checking\ntraditionally done by lockdep; it just shares the lock tracking code. It is\nalso possible to enable both and runtime disabled either component - thereby\navoiding the O(n^2) lock chain walks for instance.\n\nThis patch:\n\nraw_spinlock_t should not use lockdep (and doesn\u0027t) since lockdep itself\nrelies on it.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cf01f28c303be34f18cb4f6204cf1bdfe12ba7c",
      "tree": "140dae900c998f568ddac7bf74e390fda4d5e8ce",
      "parents": [
        "a1b0aa87647493c0201821ab884e86298d5da7d6"
      ],
      "author": {
        "name": "Jan Harkes",
        "email": "jaharkes@cs.cmu.edu",
        "time": "Thu Jul 19 01:48:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:48 2007 -0700"
      },
      "message": "coda: remove statistics counters from /proc/fs/coda\n\nSimilar information can easily be obtained with strace -c.\n\nSigned-off-by: Jan Harkes \u003cjaharkes@cs.cmu.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1b0aa87647493c0201821ab884e86298d5da7d6",
      "tree": "df7c97e4ae6469b238f0f507eed86d906a5539b3",
      "parents": [
        "5fd31e9a67dd6c80e49240514cf854c1f054aca2"
      ],
      "author": {
        "name": "Jan Harkes",
        "email": "jaharkes@cs.cmu.edu",
        "time": "Thu Jul 19 01:48:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:48 2007 -0700"
      },
      "message": "coda: remove struct coda_sb_info\n\nThe sb_info structure only contains a single pointer to the character device,\nthere is no need for the added indirection.\n\nSigned-off-by: Jan Harkes \u003cjaharkes@cs.cmu.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9664c95afe5baa92ea56eff6a1c18e7b7a2cbe7",
      "tree": "642019723c5ec027aabca8ce872468babc9cfacd",
      "parents": [
        "fe71b5f3871af2c281a08acd4bedd2da25e46bc3"
      ],
      "author": {
        "name": "Jan Harkes",
        "email": "jaharkes@cs.cmu.edu",
        "time": "Thu Jul 19 01:48:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:48 2007 -0700"
      },
      "message": "coda: block signals during upcall processing\n\nWe ignore signals for about 30 seconds to give userspace a chance to see the\nupcall.  As we did not block signals we ended up in a busy loop for the\nremainder of the period when a signal is received.\n\nSigned-off-by: Jan Harkes \u003cjaharkes@cs.cmu.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cbe87121f1545bb3e98ae114519bf0c4db27d6ab",
      "tree": "5654badf0076dad480ae5832be943930d1cfe6a6",
      "parents": [
        "b38bd33a6bf5095736620ca8e85fe61820c2d312"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Thu Jul 19 01:48:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:47 2007 -0700"
      },
      "message": "i386: Put allocated ELF notes in read-only data segment\n\nThis changes the i386 linker script and the asm-generic macro it uses so that\nELF note sections with SHF_ALLOC set are linked into the kernel image along\nwith other read-only data.  The PT_NOTE also points to their location.\n\nThis paves the way for putting useful build-time information into ELF notes\nthat can be found easily later in a kernel memory dump.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cb4a0bb1e773e3c41800b33a3f7dab32bd06c64",
      "tree": "d363522865706f0674b7b104a8fc7b151f336764",
      "parents": [
        "6c5d523826dc639df709ed0f88c5d2ce25379652"
      ],
      "author": {
        "name": "Kawai, Hidehiro",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Thu Jul 19 01:48:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:47 2007 -0700"
      },
      "message": "coredump masking: add an interface for core dump filter\n\nThis patch adds an interface to set/reset flags which determines each memory\nsegment should be dumped or not when a core file is generated.\n\n/proc/\u003cpid\u003e/coredump_filter file is provided to access the flags.  You can\nchange the flag status for a particular process by writing to or reading from\nthe file.\n\nThe flag status is inherited to the child process when it is created.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c5d523826dc639df709ed0f88c5d2ce25379652",
      "tree": "ef2fa8cb30266b3a9b047902794e78c583b099da",
      "parents": [
        "76fdbb25f963de5dc1e308325f0578a2f92b1c2d"
      ],
      "author": {
        "name": "Kawai, Hidehiro",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Thu Jul 19 01:48:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:46 2007 -0700"
      },
      "message": "coredump masking: reimplementation of dumpable using two flags\n\nThis patch changes mm_struct.dumpable to a pair of bit flags.\n\nset_dumpable() converts three-value dumpable to two flags and stores it into\nlower two bits of mm_struct.flags instead of mm_struct.dumpable.\nget_dumpable() behaves in the opposite way.\n\n[akpm@linux-foundation.org: export set_dumpable]\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f79c20f52532d38fd0aee7ef64e138cc1613c484",
      "tree": "889b946d5eff0c66293d3b5d56062bf0d85f73bf",
      "parents": [
        "c4a7808fc3d7a346d5d12e0d69d76d66d821488b"
      ],
      "author": {
        "name": "Josef \u0027Jeff\u0027 Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Thu Jul 19 01:48:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "fs: remove path_walk export\n\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjsipek@cs.sunysb.edu\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4a7808fc3d7a346d5d12e0d69d76d66d821488b",
      "tree": "e301f6e97ebc3800baafc53161631ec3e01d83c2",
      "parents": [
        "16b6287a5286e872abece4f42a6eb5899157a836"
      ],
      "author": {
        "name": "Josef \u0027Jeff\u0027 Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Thu Jul 19 01:48:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "fs: mark link_path_walk static\n\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjsipek@cs.sunysb.edu\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "16f1820028d660d9da9c03b2ae7e98253c11795b",
      "tree": "08939a5d7fcc02c76739a9dce38052da598d74d5",
      "parents": [
        "b6a2fea39318e43fee84fa7b0b90d68bed92d2ba"
      ],
      "author": {
        "name": "Josef \u0027Jeff\u0027 Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Thu Jul 19 01:48:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "fs: introduce vfs_path_lookup\n\nStackable file systems, among others, frequently need to lookup paths or\npath components starting from an arbitrary point in the namespace\n(identified by a dentry and a vfsmount).  Currently, such file systems use\nlookup_one_len, which is frowned upon [1] as it does not pass the lookup\nintent along; not passing a lookup intent, for example, can trigger BUG_ON\u0027s\nwhen stacking on top of NFSv4.\n\nThe first patch introduces a new lookup function to allow lookup starting\nfrom an arbitrary point in the namespace.  This approach has been suggested\nby Christoph Hellwig [2].\n\nThe second patch changes sunrpc to use vfs_path_lookup.\n\nThe third patch changes nfsctl.c to use vfs_path_lookup.\n\nThe fourth patch marks link_path_walk static.\n\nThe fifth, and last patch, unexports path_walk because it is no longer\nunnecessary to call it directly, and using the new vfs_path_lookup is\ncleaner.\n\nFor example, the following snippet of code, looks up \"some/path/component\"\nin a directory pointed to by parent_{dentry,vfsmnt}:\n\nerr \u003d vfs_path_lookup(parent_dentry, parent_vfsmnt,\n\t\t      \"some/path/component\", 0, \u0026nd);\nif (!err) {\n\t/* exits */\n\n\t...\n\n\t/* once done, release the references */\n\tpath_release(\u0026nd);\n} else if (err \u003d\u003d -ENOENT) {\n\t/* doesn\u0027t exist */\n} else {\n\t/* other error */\n}\n\nVFS functions such as lookup_create can be used on the nameidata structure\nto pass the create intent to the file system.\n\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjsipek@cs.sunysb.edu\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6a2fea39318e43fee84fa7b0b90d68bed92d2ba",
      "tree": "c9c3619cb2730b5c10c7427b837146bce3d69156",
      "parents": [
        "bdf4c48af20a3b0f01671799ace345e3d49576da"
      ],
      "author": {
        "name": "Ollie Wild",
        "email": "aaw@google.com",
        "time": "Thu Jul 19 01:48:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "mm: variable length argument support\n\nRemove the arg+env limit of MAX_ARG_PAGES by copying the strings directly from\nthe old mm into the new mm.\n\nWe create the new mm before the binfmt code runs, and place the new stack at\nthe very top of the address space.  Once the binfmt code runs and figures out\nwhere the stack should be, we move it downwards.\n\nIt is a bit peculiar in that we have one task with two mm\u0027s, one of which is\ninactive.\n\n[a.p.zijlstra@chello.nl: limit stack size]\nSigned-off-by: Ollie Wild \u003caaw@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\n[bunk@stusta.de: unexport bprm_mm_init]\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bdf4c48af20a3b0f01671799ace345e3d49576da",
      "tree": "7c3b903d2de1cba6e212ad6f347bc8742b08035a",
      "parents": [
        "b111757c50ee30dad162192df6168e270a90c252"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "audit: rework execve audit\n\nThe purpose of audit_bprm() is to log the argv array to a userspace daemon at\nthe end of the execve system call.  Since user-space hasn\u0027t had time to run,\nthis array is still in pristine state on the process\u0027 stack; so no need to\ncopy it, we can just grab it from there.\n\nIn order to minimize the damage to audit_log_*() copy each string into a\ntemporary kernel buffer first.\n\nCurrently the audit code requires that the full argument vector fits in a\nsingle packet.  So currently it does clip the argv size to a (sysctl) limit,\nbut only when execve auditing is enabled.\n\nIf the audit protocol gets extended to allow for multiple packets this check\ncan be removed.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ollie Wild \u003caaw@google.com\u003e\nCc: \u003clinux-audit@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": "b111757c50ee30dad162192df6168e270a90c252",
      "tree": "49a38ddb2fd5f53ceb4f76c802c2185c1be9a6c6",
      "parents": [
        "f34e3b61f2be9628bd41244f3ecc42009c5eced5"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "arch: personality independent stack top\n\nNew arch macro STACK_TOP_MAX it gives the larges valid stack address for the\narchitecture in question.\n\nIt differs from STACK_TOP in that it will not distinguish between\npersonalities but will always return the largest possible address.\n\nThis is used to create the initial stack on execve, which we will move down to\nthe proper location once the binfmt code has figured out where that is.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ollie Wild \u003caaw@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5fb7dc37dc16fbc8b80d81318a582201ef7e280d",
      "tree": "4d6bb4441ece64380e7186ebadd35ad2f5486f9f",
      "parents": [
        "3d7e33825d8799115dd2495c9944badd3272a623"
      ],
      "author": {
        "name": "Fenghua Yu",
        "email": "fenghua.yu@intel.com",
        "time": "Thu Jul 19 01:48:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "define new percpu interface for shared data\n\nper cpu data section contains two types of data.  One set which is\nexclusively accessed by the local cpu and the other set which is per cpu,\nbut also shared by remote cpus.  In the current kernel, these two sets are\nnot clearely separated out.  This can potentially cause the same data\ncacheline shared between the two sets of data, which will result in\nunnecessary bouncing of the cacheline between cpus.\n\nOne way to fix the problem is to cacheline align the remotely accessed per\ncpu data, both at the beginning and at the end.  Because of the padding at\nboth ends, this will likely cause some memory wastage and also the\ninterface to achieve this is not clean.\n\nThis patch:\n\nMoves the remotely accessed per cpu data (which is currently marked\nas ____cacheline_aligned_in_smp) into a different section, where all the data\nelements are cacheline aligned. And as such, this differentiates the local\nonly data and remotely accessed data cleanly.\n\nSigned-off-by: Fenghua Yu \u003cfenghua.yu@intel.com\u003e\nAcked-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d7e33825d8799115dd2495c9944badd3272a623",
      "tree": "869eeefa9dd88c622db199f636cd1785c6099947",
      "parents": [
        "9e367d859297b9377d65574f538cf52730e9eda8"
      ],
      "author": {
        "name": "Michael Ellerman",
        "email": "michael@ellerman.id.au",
        "time": "Thu Jul 19 01:48:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "jprobes: make jprobes a little safer for users\n\nI realise jprobes are a razor-blades-included type of interface, but that\ndoesn\u0027t mean we can\u0027t try and make them safer to use.  This guy I know once\nwrote code like this:\n\nstruct jprobe jp \u003d { .kp.symbol_name \u003d \"foo\", .entry \u003d \"jprobe_foo\" };\n\nAnd then his kernel exploded. Oops.\n\nThis patch adds an arch hook, arch_deref_entry_point() (I don\u0027t like it\neither) which takes the void * in a struct jprobe, and gives back the text\naddress that it represents.\n\nWe can then use that in register_jprobe() to check that the entry point we\u0027re\npassed is actually in the kernel text, rather than just some random value.\n\nSigned-off-by: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nCc: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\nAcked-by: 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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e367d859297b9377d65574f538cf52730e9eda8",
      "tree": "c7d4e7c3d1521810981d1623c5100a44600c603f",
      "parents": [
        "81eae375eceba481ca4c605d42913871f093f6d5"
      ],
      "author": {
        "name": "Michael Ellerman",
        "email": "michael@ellerman.id.au",
        "time": "Thu Jul 19 01:48:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "jprobes: remove JPROBE_ENTRY()\n\nAFAICT now that jprobe.entry is a void *, JPROBE_ENTRY doesn\u0027t do anything\nuseful - so remove it ..\n\nI\u0027ve left a do-nothing version so that out-of-tree jprobes code will still\ncompile without modifications.\n\nSigned-off-by: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nCc: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\nAcked-by: 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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81eae375eceba481ca4c605d42913871f093f6d5",
      "tree": "c3f1b345b4a42674ea4087aef336f0bf5be1df5e",
      "parents": [
        "f9acc8c7b35a100f3a9e0e6977f7807b0169f9a5"
      ],
      "author": {
        "name": "Michael Ellerman",
        "email": "michael@ellerman.id.au",
        "time": "Thu Jul 19 01:48:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "jprobes: make struct jprobe.entry a void *\n\nCurrently jprobe.entry is a kprobe_opcode_t *, but that\u0027s a lie.  On some\nplatforms it doesn\u0027t point to an opcode at all, it points to a function\ndescriptor.\n\nIt\u0027s really a pointer to something that the arch code can turn into a function\nentry point.  And that\u0027s what actually happens, none of the generic code ever\nlooks at jprobe.entry, it\u0027s only ever dereferenced by arch code.\n\nSo just make it a void *.\n\nSigned-off-by: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nCc: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\nAcked-by: 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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9acc8c7b35a100f3a9e0e6977f7807b0169f9a5",
      "tree": "6a4dcd227bb698a217a1d42d37e3f0135a444ea4",
      "parents": [
        "cf914a7d656e62b9dd3e0dffe4f62b953ae6048d"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: sanify file_ra_state names\n\nRename some file_ra_state variables and remove some accessors.\n\nIt results in much simpler code.\nKudos to Rusty!\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf914a7d656e62b9dd3e0dffe4f62b953ae6048d",
      "tree": "baf7e79de006ca80eac426d2d1be4c52f5f19624",
      "parents": [
        "fe3cba17c49471e99d3421e675fc8b3deaaf0b70"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 19 01:48:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: split ondemand readahead interface into two functions\n\nSplit ondemand readahead interface into two functions.  I think this makes it\na little clearer for non-readahead experts (like Rusty).\n\nInternally they both call ondemand_readahead(), but the page argument is\nchanged to an obvious boolean flag.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe3cba17c49471e99d3421e675fc8b3deaaf0b70",
      "tree": "df696c4584c6db2e439f068d2474fcb946ca587d",
      "parents": [
        "d8983910a4045fa21022cfccf76ed13eb40fd7f5"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "mm: share PG_readahead and PG_reclaim\n\nShare the same page flag bit for PG_readahead and PG_reclaim.\n\nOne is used only on file reads, another is only for emergency writes.  One\nis used mostly for fresh/young pages, another is for old pages.\n\nCombinations of possible interactions are:\n\na) clear PG_reclaim \u003d\u003e implicit clear of PG_readahead\n\tit will delay an asynchronous readahead into a synchronous one\n\tit actually does _good_ for readahead:\n\t\tthe pages will be reclaimed soon, it\u0027s readahead thrashing!\n\t\tin this case, synchronous readahead makes more sense.\n\nb) clear PG_readahead \u003d\u003e implicit clear of PG_reclaim\n\tone(and only one) page will not be reclaimed in time\n\tit can be avoided by checking PageWriteback(page) in readahead first\n\nc) set PG_reclaim \u003d\u003e implicit set of PG_readahead\n\twill confuse readahead and make it restart the size rampup process\n\tit\u0027s a trivial problem, and can mostly be avoided by checking\n\tPageWriteback(page) first in readahead\n\nd) set PG_readahead \u003d\u003e implicit set of PG_reclaim\n\tPG_readahead will never be set on already cached pages.\n\tPG_reclaim will always be cleared on dirtying a page.\n\tso not a problem.\n\nIn summary,\n\ta)   we get better behavior\n\tb,d) possible interactions can be avoided\n\tc)   racy condition exists that might affect readahead, but the chance\n\t     is _really_ low, and the hurt on readahead is trivial.\n\nCompound pages also use PG_reclaim, but for now they do not interact with\nreclaim/readahead code.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c743d96b6d2ff55a94df7b5ac7c74987bb9c343b",
      "tree": "391e5dad21e62590e343c63e5ba05322d0fc76ad",
      "parents": [
        "dc7868fcb9a73990e6f30371c1be465c436a7a7f"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: remove the old algorithm\n\nRemove the old readahead algorithm.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Steven Pratt \u003cslpratt@austin.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "122a21d11cbfda6d1e33cbc8ae9e4c4ee2f1886e",
      "tree": "e13f4e2dd0f838f5f922ed047e5ee56bf3546f21",
      "parents": [
        "5ce1110b92b31d079aa443e967f43a2294e01194"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: on-demand readahead logic\n\nThis is a minimal readahead algorithm that aims to replace the current one.\nIt is more flexible and reliable, while maintaining almost the same behavior\nand performance.  Also it is full integrated with adaptive readahead.\n\nIt is designed to be called on demand:\n\t- on a missing page, to do synchronous readahead\n\t- on a lookahead page, to do asynchronous readahead\n\nIn this way it eliminated the awkward workarounds for cache hit/miss,\nreadahead thrashing, retried read, and unaligned read.  It also adopts the\ndata structure introduced by adaptive readahead, parameterizes readahead\npipelining with `lookahead_index\u0027, and reduces the current/ahead windows to\none single window.\n\nHEURISTICS\n\nThe logic deals with four cases:\n\n\t- sequential-next\n\t\tfound a consistent readahead window, so push it forward\n\n\t- random\n\t\tstandalone small read, so read as is\n\n\t- sequential-first\n\t\tcreate a new readahead window for a sequential/oversize request\n\n\t- lookahead-clueless\n\t\thit a lookahead page not associated with the readahead window,\n\t\tso create a new readahead window and ramp it up\n\nIn each case, three parameters are determined:\n\n\t- readahead index: where the next readahead begins\n\t- readahead size:  how much to readahead\n\t- lookahead size:  when to do the next readahead (for pipelining)\n\nBEHAVIORS\n\nThe old behaviors are maximally preserved for trivial sequential/random reads.\nNotable changes are:\n\n\t- It no longer imposes strict sequential checks.\n\t  It might help some interleaved cases, and clustered random reads.\n\t  It does introduce risks of a random lookahead hit triggering an\n\t  unexpected readahead. But in general it is more likely to do good\n\t  than to do evil.\n\n\t- Interleaved reads are supported in a minimal way.\n\t  Their chances of being detected and proper handled are still low.\n\n\t- Readahead thrashings are better handled.\n\t  The current readahead leads to tiny average I/O sizes, because it\n\t  never turn back for the thrashed pages.  They have to be fault in\n\t  by do_generic_mapping_read() one by one.  Whereas the on-demand\n\t  readahead will redo readahead for them.\n\nOVERHEADS\n\nThe new code reduced the overheads of\n\n\t- excessively calling the readahead routine on small sized reads\n\t  (the current readahead code insists on seeing all requests)\n\n\t- doing a lot of pointless page-cache lookups for small cached files\n\t  (the current readahead only turns itself off after 256 cache hits,\n\t  unfortunately most files are \u003c 1MB, so never see that chance)\n\nThat accounts for speedup of\n\t- 0.3% on 1-page sequential reads on sparse file\n\t- 1.2% on 1-page cache hot sequential reads\n\t- 3.2% on 256-page cache hot sequential reads\n\t- 1.3% on cache hot `tar /lib`\n\nHowever, it does introduce one extra page-cache lookup per cache miss, which\nimpacts random reads slightly. That\u0027s 1% overheads for 1-page random reads on\nsparse file.\n\nPERFORMANCE\n\nThe basic benchmark setup is\n\t- 2.6.20 kernel with on-demand readahead\n\t- 1MB max readahead size\n\t- 2.9GHz Intel Core 2 CPU\n\t- 2GB memory\n\t- 160G/8M Hitachi SATA II 7200 RPM disk\n\nThe benchmarks show that\n\t- it maintains the same performance for trivial sequential/random reads\n\t- sysbench/OLTP performance on MySQL gains up to 8%\n\t- performance on readahead thrashing gains up to 3 times\n\niozone throughput (KB/s): roughly the same\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\niozone -c -t1 -s 4096m -r 64k\n\n\t\t\t       2.6.20          on-demand      gain\nfirst run\n\t  \"  Initial write \"   61437.27        64521.53      +5.0%\n\t  \"        Rewrite \"   47893.02        48335.20      +0.9%\n\t  \"           Read \"   62111.84        62141.49      +0.0%\n\t  \"        Re-read \"   62242.66        62193.17      -0.1%\n\t  \"   Reverse Read \"   50031.46        49989.79      -0.1%\n\t  \"    Stride read \"    8657.61         8652.81      -0.1%\n\t  \"    Random read \"   13914.28        13898.23      -0.1%\n\t  \" Mixed workload \"   19069.27        19033.32      -0.2%\n\t  \"   Random write \"   14849.80        14104.38      -5.0%\n\t  \"         Pwrite \"   62955.30        65701.57      +4.4%\n\t  \"          Pread \"   62209.99        62256.26      +0.1%\n\nsecond run\n\t  \"  Initial write \"   60810.31        66258.69      +9.0%\n\t  \"        Rewrite \"   49373.89        57833.66     +17.1%\n\t  \"           Read \"   62059.39        62251.28      +0.3%\n\t  \"        Re-read \"   62264.32        62256.82      -0.0%\n\t  \"   Reverse Read \"   49970.96        50565.72      +1.2%\n\t  \"    Stride read \"    8654.81         8638.45      -0.2%\n\t  \"    Random read \"   13901.44        13949.91      +0.3%\n\t  \" Mixed workload \"   19041.32        19092.04      +0.3%\n\t  \"   Random write \"   14019.99        14161.72      +1.0%\n\t  \"         Pwrite \"   64121.67        68224.17      +6.4%\n\t  \"          Pread \"   62225.08        62274.28      +0.1%\n\nIn summary, writes are unstable, reads are pretty close on average:\n\n\t\t\t  access pattern  2.6.20  on-demand   gain\n\t\t\t\t   Read  62085.61  62196.38  +0.2%\n\t\t\t\tRe-read  62253.49  62224.99  -0.0%\n\t\t\t   Reverse Read  50001.21  50277.75  +0.6%\n\t\t\t    Stride read   8656.21   8645.63  -0.1%\n\t\t\t    Random read  13907.86  13924.07  +0.1%\n\t \t\t Mixed workload  19055.29  19062.68  +0.0%\n\t\t\t\t  Pread  62217.53  62265.27  +0.1%\n\naio-stress: roughly the same\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\naio-stress -l -s4096 -r128 -t1 -o1 knoppix511-dvd-cn.iso\naio-stress -l -s4096 -r128 -t1 -o3 knoppix511-dvd-cn.iso\n\n\t\t\t\t\t2.6.20      on-demand  delta\n\t\t\tsequential\t 92.57s      92.54s    -0.0%\n\t\t\trandom\t\t311.87s     312.15s    +0.1%\n\nsysbench fileio: roughly the same\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nsysbench --test\u003dfileio --file-io-mode\u003dasync --file-test-mode\u003drndrw \\\n\t --file-total-size\u003d4G --file-block-size\u003d64K \\\n\t --num-threads\u003d001 --max-requests\u003d10000 --max-time\u003d900 run\n\n\t\t\t\tthreads    2.6.20   on-demand    delta\n\t\tfirst run\n\t\t\t\t      1   59.1974s    59.2262s  +0.0%\n\t\t\t\t      2   58.0575s    58.2269s  +0.3%\n\t\t\t\t      4   48.0545s    47.1164s  -2.0%\n\t\t\t\t      8   41.0684s    41.2229s  +0.4%\n\t\t\t\t     16   35.8817s    36.4448s  +1.6%\n\t\t\t\t     32   32.6614s    32.8240s  +0.5%\n\t\t\t\t     64   23.7601s    24.1481s  +1.6%\n\t\t\t\t    128   24.3719s    23.8225s  -2.3%\n\t\t\t\t    256   23.2366s    22.0488s  -5.1%\n\n\t\tsecond run\n\t\t\t\t      1   59.6720s    59.5671s  -0.2%\n\t\t\t\t      8   41.5158s    41.9541s  +1.1%\n\t\t\t\t     64   25.0200s    23.9634s  -4.2%\n\t\t\t\t    256   22.5491s    20.9486s  -7.1%\n\nNote that the numbers are not very stable because of the writes.\nThe overall performance is close when we sum all seconds up:\n\n                sum all up               495.046s    491.514s   -0.7%\n\nsysbench oltp (trans/sec): up to 8% gain\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nsysbench --test\u003doltp --oltp-table-size\u003d10000000 --oltp-read-only \\\n\t --mysql-socket\u003d/var/run/mysqld/mysqld.sock \\\n\t --mysql-user\u003droot --mysql-password\u003dreadahead \\\n\t --num-threads\u003d064 --max-requests\u003d10000 --max-time\u003d900 run\n\n\t10000-transactions run\n\t\t\t\tthreads    2.6.20   on-demand    gain\n\t\t\t\t      1     62.81       64.56   +2.8%\n\t\t\t\t      2     67.97       70.93   +4.4%\n\t\t\t\t      4     81.81       85.87   +5.0%\n\t\t\t\t      8     94.60       97.89   +3.5%\n\t\t\t\t     16     99.07      104.68   +5.7%\n\t\t\t\t     32     95.93      104.28   +8.7%\n\t\t\t\t     64     96.48      103.68   +7.5%\n\t5000-transactions run\n\t\t\t\t      1     48.21       48.65   +0.9%\n\t\t\t\t      8     68.60       70.19   +2.3%\n\t\t\t\t     64     70.57       74.72   +5.9%\n\t2000-transactions run\n\t\t\t\t      1     37.57       38.04   +1.3%\n\t\t\t\t      2     38.43       38.99   +1.5%\n\t\t\t\t      4     45.39       46.45   +2.3%\n\t\t\t\t      8     51.64       52.36   +1.4%\n\t\t\t\t     16     54.39       55.18   +1.5%\n\t\t\t\t     32     52.13       54.49   +4.5%\n\t\t\t\t     64     54.13       54.61   +0.9%\n\nThat\u0027s interesting results. Some investigations show that\n\t- MySQL is accessing the db file non-uniformly: some parts are\n\t  more hot than others\n\t- It is mostly doing 4-page random reads, and sometimes doing two\n\t  reads in a row, the latter one triggers a 16-page readahead.\n\t- The on-demand readahead leaves many lookahead pages (flagged\n\t  PG_readahead) there. Many of them will be hit, and trigger\n\t  more readahead pages. Which might save more seeks.\n\t- Naturally, the readahead windows tend to lie in hot areas,\n\t  and the lookahead pages in hot areas is more likely to be hit.\n\t- The more overall read density, the more possible gain.\n\nThat also explains the adaptive readahead tricks for clustered random reads.\n\nreadahead thrashing: 3 times better\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nWe boot kernel with \"mem\u003d128m single\", and start a 100KB/s stream on every\nsecond, until reaching 200 streams.\n\n\t\t\t      max throughput     min avg I/O size\n\t\t2.6.20:            5MB/s               16KB\n\t\ton-demand:        15MB/s              140KB\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Steven Pratt \u003cslpratt@austin.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ce1110b92b31d079aa443e967f43a2294e01194",
      "tree": "eff95b4c8ede07d0777ca68a30d686d1acbb5c73",
      "parents": [
        "f615bfca468c9b80ed2d09be5fdbaf470a32c045"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:47:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: data structure and routines\n\nExtend struct file_ra_state to support the on-demand readahead logic.  Also\ndefine some helpers for it.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Steven Pratt \u003cslpratt@austin.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d77c2d7cc5126639a47d73300b40d461f2811a0f",
      "tree": "d02b32ca92fde9a04be9bee0f0b7c8961479448c",
      "parents": [
        "2ba2d00363975242dee9bb22cf798b487e3cd61e"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:47:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:43 2007 -0700"
      },
      "message": "readahead: introduce PG_readahead\n\nIntroduce a new page flag: PG_readahead.\n\nIt acts as a look-ahead mark, which tells the page reader: Hey, it\u0027s time to\ninvoke the read-ahead logic.  For the sake of I/O pipelining, don\u0027t wait until\nit runs out of cached pages!\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Steven Pratt \u003cslpratt@austin.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ba2d00363975242dee9bb22cf798b487e3cd61e",
      "tree": "26bc53fb314ec9d585f07a5866c275ff1bfbc1aa",
      "parents": [
        "64ee4808a786caade50362d5057f65314fdf2f36"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Thu Jul 19 01:47:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:43 2007 -0700"
      },
      "message": "AIO sparse fix (type of ki_flags)\n\nFix type issue reported by latest \u0027sparse\u0027: kiocb.ki_flags should be\n\"unsigned long\" (not \"long\"), to match bitop type signature.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e53252d97e670a38b1d2e9723b48077bba11ddda",
      "tree": "a9909f22d7f0424214e2576912c0a3300dde3df0",
      "parents": [
        "68fc4fabca897a09f75f53bac14cdc7a98f52210"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Thu Jul 19 01:47:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:43 2007 -0700"
      },
      "message": "unregister_chrdev() return void\n\nunregister_chrdev() does not return meaningful value.  This patch makes it\nreturn void like most unregister_* functions.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77afcf78a2ded9a91838734234949c0ead5feb12",
      "tree": "76922017855c70d550b40241f8a144f6c098cd04",
      "parents": [
        "5a60d6235c8352ade8f2699e72fcdfe853730456"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@suse.cz",
        "time": "Thu Jul 19 01:47:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:43 2007 -0700"
      },
      "message": "PM: Integrate beeping flag with existing acpi_sleep flags\n\nMove \"debug during resume from s2ram\" into the variable we already use\nfor real-mode flags to simplify code. It also closes nasty trap for\nthe user in acpi_sleep_setup; order of parameters actually mattered there,\nacpi_sleep\u003ds3_bios,s3_mode doing something different from\nacpi_sleep\u003ds3_mode,s3_bios.\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a60d6235c8352ade8f2699e72fcdfe853730456",
      "tree": "cafab638df562b912e9e2a653e5c7238816d9706",
      "parents": [
        "bd804eba1c8597cbb7cd5a5f9fe886aae16a079a"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "nigel@nigel.suspend2.net",
        "time": "Thu Jul 19 01:47:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:43 2007 -0700"
      },
      "message": "PM: Optional beeping during resume from suspend to RAM\n\nAdd a feature allowing the user to make the system beep during a resume from\nsuspend to RAM, on x86_64 and i386.\n\nThis is useful for the users with broken resume from RAM, so that they can\nverify if the control reaches the kernel after a wake-up event.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd804eba1c8597cbb7cd5a5f9fe886aae16a079a",
      "tree": "082f289809f92db6d23a13cd8fbbb82da125fcda",
      "parents": [
        "d7372cdf6938ccea23ec9fc68970702fed9ec3c8"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 19 01:47:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:42 2007 -0700"
      },
      "message": "PM: Introduce pm_power_off_prepare\n\nIntroduce the pm_power_off_prepare() callback that can be registered by the\ninterested platforms in analogy with pm_idle() and pm_power_off(), used for\npreparing the system to power off (needed by ACPI).\n\nThis allows us to drop acpi_sysclass and device_acpi that are only defined in\norder to register the ACPI power off preparation callback, which is needed by\npm_power_off() registered in a much different way.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b10d911749d37dccfa5873d2088aea3f074b9e45",
      "tree": "56bd0ccb2861d7ae562d4e48a737727628358b42",
      "parents": [
        "c2cf7d87d804c66e063829d5ca739053e901dc15"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 19 01:47:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:42 2007 -0700"
      },
      "message": "PM: introduce hibernation and suspend notifiers\n\nMake it possible to register hibernation and suspend notifiers, so that\nsubsystems can perform hibernation-related or suspend-related operations that\nshould not be carried out by device drivers\u0027 .suspend() and .resume()\nroutines.\n\n[akpm@linux-foundation.org: build fixes]\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c1eecfb345401629aa57c9d3b077273e56c45a7",
      "tree": "522d7090966c6e70f3147c30e3308781e0309938",
      "parents": [
        "b1457bcc3a00a0446c7f6e2f22fd24b6d8d0a309"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 19 01:47:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:42 2007 -0700"
      },
      "message": "Freezer: avoid freezing kernel threads prematurely\n\nKernel threads should not have TIF_FREEZE set when user space processes are\nbeing frozen, since otherwise some of them might be frozen prematurely.\nTo prevent this from happening we can (1) make exit_mm() unset TIF_FREEZE\nunconditionally just after clearing tsk-\u003emm and (2) make try_to_freeze_tasks()\ncheck if p-\u003emm is different from zero and PF_BORROWED_MM is unset in p-\u003eflags\nwhen user space processes are to be frozen.\n\nNamely, when user space processes are being frozen, we only should set\nTIF_FREEZE for tasks that have p-\u003emm different from NULL and don\u0027t have\nPF_BORROWED_MM set in p-\u003eflags.  For this reason task_lock() must be used to\nprevent try_to_freeze_tasks() from racing with use_mm()/unuse_mm(), in which\np-\u003emm and p-\u003eflags.PF_BORROWED_MM are changed under task_lock(p).  Also, we\nneed to prevent the following scenario from happening:\n\n* daemonize() is called by a task spawned from a user space code path\n* freezer checks if the task has p-\u003emm set and the result is positive\n* task enters exit_mm() and clears its TIF_FREEZE\n* freezer sets TIF_FREEZE for the task\n* task calls try_to_freeze() and goes to the refrigerator, which is wrong at\n  that point\n\nThis requires us to acquire task_lock(p) before p-\u003eflags.PF_BORROWED_MM and\np-\u003emm are examined and release it after TIF_FREEZE is set for p (or it turns\nout that TIF_FREEZE should not be set).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a634cc10164d1c229fbeca33923e6a0ed939e894",
      "tree": "a2cdc5403127ca71b2cf378feb86d46745022ac1",
      "parents": [
        "7777fab989b5d006903188c966058ebcd2d6342a"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 19 01:47:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:42 2007 -0700"
      },
      "message": "swsusp: introduce restore platform operations\n\nAt least on some machines it is necessary to prepare the ACPI firmware for the\nrestoration of the system memory state from the hibernation image if the\n\"platform\" mode of hibernation has been used.  Namely, in that cases we need\nto disable the GPEs before replacing the \"boot\" kernel with the \"frozen\"\nkernel (cf.  http://bugzilla.kernel.org/show_bug.cgi?id\u003d7887).  After the\nrestore they will be re-enabled by hibernation_ops-\u003efinish(), but if the\nrestore fails, they have to be re-enabled by the restore code explicitly.\n\nFor this purpose we can introduce two additional hibernation operations,\ncalled pre_restore() and restore_cleanup() and call them from the restore code\npath.  Still, they should be called if the \"platform\" mode of hibernation has\nbeen used, so we need to pass the information about the hibernation mode from\nthe \"frozen\" kernel to the \"boot\" kernel in the image header.\n\nApparently, we can\u0027t drop the disabling of GPEs before the restore because of\nBug #7887 .   We also can\u0027t do it unconditionally, because the GPEs wouldn\u0027t\nhave been enabled after a successful restore if the suspend had been done in\nthe \u0027shutdown\u0027 or \u0027reboot\u0027 mode.\n\nIn principle we could (and probably should) unconditionally disable the GPEs\nbefore each snapshot creation *and* before the restore, but then we\u0027d have to\nunconditionally enable them after the snapshot creation as well as after the\nrestore (or restore failure)   Still, for this purpose we\u0027d need to modify\nacpi_enter_sleep_state_prep() and acpi_leave_sleep_state() and we\u0027d have to\nintroduce some mechanism synchronizing the disablind/enabling of the GPEs with\nthe device drivers\u0027 .suspend()/.resume() routines and with\ndisable_/enable_nonboot_cpus().   However, this would have affected the\nsuspend (ie.  s2ram) code as well as the hibernation, which I\u0027d like to avoid\nin this patch series.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb2d5ce16409efcdf94017a6b6fecd468226e29c",
      "tree": "12ce94a51c3aa8bffb22e1aa22f122268013fec4",
      "parents": [
        "79352894b28550ee0eee919149f57626ec1b3572"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jul 19 01:47:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "Remove alloc_zeroed_user_highpage()\n\nalloc_zeroed_user_highpage() has no in-tree users and it is not exported.\nAs it is not exported, it can simply be removed.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83c54070ee1a2d05c89793884bea1a03f2851ed4",
      "tree": "dc732f5a9b93fb7004ed23f551bd98b77cc580e0",
      "parents": [
        "d0217ac04ca6591841e5665f518e38064f4e65bd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fault feedback #2\n\nThis patch completes Linus\u0027s wish that the fault return codes be made into\nbit flags, which I agree makes everything nicer.  This requires requires\nall handle_mm_fault callers to be modified (possibly the modifications\nshould go further and do things like fault accounting in handle_mm_fault --\nhowever that would be for another patch).\n\n[akpm@linux-foundation.org: fix alpha build]\n[akpm@linux-foundation.org: fix s390 build]\n[akpm@linux-foundation.org: fix sparc build]\n[akpm@linux-foundation.org: fix sparc64 build]\n[akpm@linux-foundation.org: fix ia64 build]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Bryan Wu \u003cbryan.wu@analog.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nAcked-by: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nAcked-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nAcked-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nAcked-by: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Still apparently needs some ARM and PPC loving - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0217ac04ca6591841e5665f518e38064f4e65bd",
      "tree": "d3309094bb734d34773f97d642593e298a5cfcfc",
      "parents": [
        "ed2f2f9b3ff8debdf512f7687b232c3c1d7d60d7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fault feedback #1\n\nChange -\u003efault prototype.  We now return an int, which contains\nVM_FAULT_xxx code in the low byte, and FAULT_RET_xxx code in the next byte.\n FAULT_RET_ code tells the VM whether a page was found, whether it has been\nlocked, and potentially other things.  This is not quite the way he wanted\nit yet, but that\u0027s changed in the next patch (which requires changes to\narch code).\n\nThis means we no longer set VM_CAN_INVALIDATE in the vma in order to say\nthat a page is locked which requires filemap_nopage to go away (because we\ncan no longer remain backward compatible without that flag), but we were\ngoing to do that anyway.\n\nstruct fault_data is renamed to struct vm_fault as Linus asked. address\nis now a void __user * that we should firmly encourage drivers not to use\nwithout really good reason.\n\nThe page is now returned via a page pointer in the vm_fault struct.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54cb8821de07f2ffcd28c380ce9b93d5784b40d7",
      "tree": "1de676534963d96af42863b20191bc9f80060dea",
      "parents": [
        "d00806b183152af6d24f46f0c33f14162ca1262a"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: merge populate and nopage into fault (fixes nonlinear)\n\nNonlinear mappings are (AFAIKS) simply a virtual memory concept that encodes\nthe virtual address -\u003e file offset differently from linear mappings.\n\n-\u003epopulate is a layering violation because the filesystem/pagecache code\nshould need to know anything about the virtual memory mapping.  The hitch here\nis that the -\u003enopage handler didn\u0027t pass down enough information (ie.  pgoff).\n But it is more logical to pass pgoff rather than have the -\u003enopage function\ncalculate it itself anyway (because that\u0027s a similar layering violation).\n\nHaving the populate handler install the pte itself is likewise a nasty thing\nto be doing.\n\nThis patch introduces a new fault handler that replaces -\u003enopage and\n-\u003epopulate and (later) -\u003enopfn.  Most of the old mechanism is still in place\nso there is a lot of duplication and nice cleanups that can be removed if\neveryone switches over.\n\nThe rationale for doing this in the first place is that nonlinear mappings are\nsubject to the pagefault vs invalidate/truncate race too, and it seemed stupid\nto duplicate the synchronisation logic rather than just consolidate the two.\n\nAfter this patch, MAP_NONBLOCK no longer sets up ptes for pages present in\npagecache.  Seems like a fringe functionality anyway.\n\nNOPAGE_REFAULT is removed.  This should be implemented with -\u003efault, and no\nusers have hit mainline yet.\n\n[akpm@linux-foundation.org: cleanup]\n[randy.dunlap@oracle.com: doc. fixes for readahead]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d00806b183152af6d24f46f0c33f14162ca1262a",
      "tree": "36f829cf13d5410374a3f00b56ec0b1f8dc3ce3c",
      "parents": [
        "589f1e81bde732dd0b1bc5d01b6bddd4bcb4527b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fix fault vs invalidate race for linear mappings\n\nFix the race between invalidate_inode_pages and do_no_page.\n\nAndrea Arcangeli identified a subtle race between invalidation of pages from\npagecache with userspace mappings, and do_no_page.\n\nThe issue is that invalidation has to shoot down all mappings to the page,\nbefore it can be discarded from the pagecache.  Between shooting down ptes to\na particular page, and actually dropping the struct page from the pagecache,\ndo_no_page from any process might fault on that page and establish a new\nmapping to the page just before it gets discarded from the pagecache.\n\nThe most common case where such invalidation is used is in file truncation.\nThis case was catered for by doing a sort of open-coded seqlock between the\nfile\u0027s i_size, and its truncate_count.\n\nTruncation will decrease i_size, then increment truncate_count before\nunmapping userspace pages; do_no_page will read truncate_count, then find the\npage if it is within i_size, and then check truncate_count under the page\ntable lock and back out and retry if it had subsequently been changed (ptl\nwill serialise against unmapping, and ensure a potentially updated\ntruncate_count is actually visible).\n\nComplexity and documentation issues aside, the locking protocol fails in the\ncase where we would like to invalidate pagecache inside i_size.  do_no_page\ncan come in anytime and filemap_nopage is not aware of the invalidation in\nprogress (as it is when it is outside i_size).  The end result is that\ndangling (-\u003emapping \u003d\u003d NULL) pages that appear to be from a particular file\nmay be mapped into userspace with nonsense data.  Valid mappings to the same\nplace will see a different page.\n\nAndrea implemented two working fixes, one using a real seqlock, another using\na page-\u003eflags bit.  He also proposed using the page lock in do_no_page, but\nthat was initially considered too heavyweight.  However, it is not a global or\nper-file lock, and the page cacheline is modified in do_no_page to increment\n_count and _mapcount anyway, so a further modification should not be a large\nperformance hit.  Scalability is not an issue.\n\nThis patch implements this latter approach.  -\u003enopage implementations return\nwith the page locked if it is possible for their underlying file to be\ninvalidated (in that case, they must set a special vm_flags bit to indicate\nso).  do_no_page only unlocks the page after setting up the mapping\ncompletely.  invalidation is excluded because it holds the page lock during\ninvalidation of each page (and ensures that the page is not mapped while\nholding the lock).\n\nThis also allows significant simplifications in do_no_page, because we have\nthe page locked in the right place in the pagecache from the start.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce524c8360d60cc6d3f77986bd58c4448d2b1e3a",
      "tree": "70ab63183f7952e66e4627ff5c655871b8a8c41c",
      "parents": [
        "789c56b7f73218141b8004cb4f775eed8c514212",
        "f9e29228e6f2058e7b086115ecb7008630ebd832"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:33:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:33:45 2007 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6\n\n* \u0027upstream-linus\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:\n  eHEA: Fix bonding support\n  Blackfin ethernet driver: on chip ethernet MAC controller driver\n  fix wrong argument of tc35815_read_plat_dev_addr()\n  ARM/ETHER3: Handle multicast frames.\n  SAA9730: Handle multicast frames.\n  NI5010: Handle multicast frames.\n  NS83820: Handle multicast frames.\n  Fix RGMII-ID handling in gianfar\n  Fix Vitesse RGMII-ID support\n  Add phy-connection-type to gianfar nodes\n  Fix Vitesse 824x PHY interrupt acking\n  [PATCH] zd1211rw: Add ID for Siemens Gigaset USB Stick 54\n  [PATCH] zd1211rw: Add ID for Planex GW-US54GXS\n  [PATCH] Update version ipw2200 stamp to 1.2.2\n  [PATCH] ipw2200: Fix ipw_isr() comments error on shared IRQ\n  [PATCH] Fix ipw2200 set wrong power parameter causing firmware error\n  [PATCH] ipw2100: Fix `iwpriv set_power` error\n  [PATCH] softmac: Channel is listed twice in scan output\n"
    },
    {
      "commit": "29e7ee378e2327c808ede66dec4d4d964f4d375f",
      "tree": "4f904bfc485acd2ba5f7abdf43f57eeb8ce1dbdb",
      "parents": [
        "fc15bc817eecd5c13581adab2a182c07edededa0",
        "967e35dcc9ac194b4a6fad69a5a51f93d69bb0d1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:28:08 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6\n\n* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6:\n  sysfs: cosmetic clean up on node creation failure paths\n  sysfs: kill an extra put in sysfs_create_link() failure path\n  Driver core: check return code of sysfs_create_link()\n  HOWTO: Add the knwon_regression URI to the documentation\n  dev_vdbg() documentation\n  dev_vdbg(), available with -DVERBOSE_DEBUG\n  sysfs: make sysfs_init_inode() static\n  sysfs: fix sysfs root inode nlink accounting\n  Documentation fix devres.txt: lib/iomap.c -\u003e lib/devres.c\n  sysfs: avoid kmem_cache_free(NULL)\n  PM: remove deprecated dpm_runtime_* routines\n  PM: Remove deprecated sysfs files\n  Driver core: accept all valid action-strings in uevent-trigger\n  debugfs: remove rmdir() non-empty complaint\n"
    },
    {
      "commit": "fc15bc817eecd5c13581adab2a182c07edededa0",
      "tree": "4495364581afd49596e88882f58a2f1196bc512f",
      "parents": [
        "a8dcf12f9e8ba113251c04d602f1695d537fb142",
        "bc4c4f45acbe1f1528d654b0b1793f25c175bf8f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:27:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:27:50 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/uio-2.6\n\n* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/uio-2.6:\n  UIO: Hilscher CIF card driver\n  UIO: Documentation\n  UIO: Add the User IO core code\n"
    },
    {
      "commit": "a8dcf12f9e8ba113251c04d602f1695d537fb142",
      "tree": "1b36a19e34a8471e847bfea88dc66ee6683b7b07",
      "parents": [
        "d796e641a3eea2109381d6b0af533454f44916fa",
        "6924c55492c904695f13c552c461c2211f4fdd6a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:27:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 18:27:00 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-linus\u0027 of git://linux-nfs.org/~bfields/linux:\n  locks: fix vfs_test_lock() comment\n  locks: make posix_test_lock() interface more consistent\n  nfs: disable leases over NFS\n  gfs2: stop giving out non-cluster-coherent leases\n  locks: export setlease to filesystems\n  locks: provide a file lease method enabling cluster-coherent leases\n  locks: rename lease functions to reflect locks.c conventions\n  locks: share more common lease code\n  locks: clean up lease_alloc()\n  locks: convert an -EINVAL return to a BUG\n  leases: minor break_lease() comment clarification\n"
    },
    {
      "commit": "6d34ac199a4af5c678a3a8f3275aeb2586b72da3",
      "tree": "4ab6cffcfe993baa0afb2ab361a8c94ebfc3a444",
      "parents": [
        "370f6599e8bc03fd9fc6d1a1be00ae0c6373ca59"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri May 11 16:09:32 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jul 18 19:17:19 2007 -0400"
      },
      "message": "locks: make posix_test_lock() interface more consistent\n\nSince posix_test_lock(), like fcntl() and -\u003elock(), indicates absence or\npresence of a conflict lock by setting fl_type to, respectively, F_UNLCK\nor something other than F_UNLCK, the return value is no longer needed.\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "4698afe8e3a725576366f86560a8a8242b21b9f7",
      "tree": "dfa312e0a6bce21a6f502b8b9cf0844281d094a2",
      "parents": [
        "f9ffed26d6f3e6ac9988947242821579d615fda7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jul 04 17:21:37 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jul 18 19:17:06 2007 -0400"
      },
      "message": "locks: export setlease to filesystems\n\nExport setlease so it can used by filesystems to implement their lease\nmethods.\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "f9ffed26d6f3e6ac9988947242821579d615fda7",
      "tree": "f7dc037b9b1a90511751532be5ebc47c820ed407",
      "parents": [
        "a9933cea7a1d80dd9efae9f1acd857f5dce742b9"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Tue Nov 14 15:51:40 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jul 18 19:14:47 2007 -0400"
      },
      "message": "locks: provide a file lease method enabling cluster-coherent leases\n\nCurrently leases are only kept locally, so there\u0027s no way for a distributed\nfilesystem to enforce them against multiple clients.  We\u0027re particularly\ninterested in the case of nfsd exporting a cluster filesystem, in which\ncase nfsd needs cluster-coherent leases in order to implement delegations\ncorrectly.\n\nAlso add some documentation.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a9933cea7a1d80dd9efae9f1acd857f5dce742b9",
      "tree": "d931351589579ce141110350de9ff11154328399",
      "parents": [
        "6d5e8b05caf074ae5676ad9aaf92e381226a14a7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Jun 07 17:09:49 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jul 18 19:14:12 2007 -0400"
      },
      "message": "locks: rename lease functions to reflect locks.c conventions\n\nWe\u0027ve been using the convention that vfs_foo is the function that calls\na filesystem-specific foo method if it exists, or falls back on a\ngeneric method if it doesn\u0027t; thus vfs_foo is what is called when some\nother part of the kernel (normally lockd or nfsd) wants to get a lock,\nwhereas foo is what filesystems call to use the underlying local\nfunctionality as part of their lock implementation.\n\nSo rename setlease to vfs_setlease (which will call a\nfilesystem-specific setlease after a later patch) and __setlease to\nsetlease.\n\nAlso, vfs_setlease need only be GPL-exported as long as it\u0027s only needed\nby lockd and nfsd.\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "beafc54c4e2fba24e1ca45cdb7f79d9aa83e3db1",
      "tree": "9f2d4060e4ab29b1483124fa398be30f72696b34",
      "parents": [
        "5bae7ac9feba925fd0099057f6b23d7be80b7b41"
      ],
      "author": {
        "name": "Hans J. Koch",
        "email": "hjk@linutronix.de",
        "time": "Thu Dec 07 10:58:29 2006 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 18 15:57:15 2007 -0700"
      },
      "message": "UIO: Add the User IO core code\n\nThis interface allows the ability to write the majority of a driver in\nuserspace with only a very small shell of a driver in the kernel itself.\nIt uses a char device and sysfs to interact with a userspace process to\nprocess interrupts and control memory accesses.\n\nSee the docbook documentation for more details on how to use this\ninterface.\n\nFrom: Hans J. Koch \u003chjk@linutronix.de\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Benedikt Spranger \u003cb.spranger@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "aebdc3b450a3febf7d7d00cd2235509055ec7082",
      "tree": "3e9d53857d610d2b7eab3e2cce3cae2220202f52",
      "parents": [
        "bc37e2830339cbfa42ac8579a7bf62fc4cdd360d"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Thu Jul 12 22:08:22 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 18 15:49:50 2007 -0700"
      },
      "message": "dev_vdbg(), available with -DVERBOSE_DEBUG\n\nThis defines a dev_vdbg() call, which is enabled with -DVERBOSE_DEBUG.\nWhen enabled, dev_vdbg() acts just like dev_dbg().  When disabled, it is a\nNOP ...  just like dev_dbg() without -DDEBUG.  The specific code was moved\nout of a USB patch, but lots of drivers have similar support.\n\nThat is, code can now be written to use an additional level of debug\noutput, selected at compile time.  Many driver authors have found this\nidiom to be very useful.  A typical usage model is for \"normal\" debug\nmessages to focus on fault paths and not be very \"chatty\", so that those\nmessages can be left on during normal operation without much of a\nperformance or syslog load.  On the other hand \"verbose\" messages would be\nnoisy enough that they wouldn\u0027t normally be enabled; they might even affect\ntimings enough to change system or driver behavior.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3f8df781fc5f9ee5253a54ba669e1c8872844b86",
      "tree": "fbca591c1538dfe4b812910dfaacfa8ed928307d",
      "parents": [
        "471d0558045fe35f8c5f291c1ee63815eb9c2dcd"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Thu Jul 12 16:57:22 2007 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 18 15:49:49 2007 -0700"
      },
      "message": "PM: remove deprecated dpm_runtime_* routines\n\nThis patch (as933) removes the deprecated dpm_runtime_suspend() and\ndpm_runtime_resume() routines from the PM core.  The only user of\nthose routines is the PCMCIA ds driver; local replacements are added.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCC: Dominik Brodowski \u003clinux@dominikbrodowski.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "60a96a59569bab85571d0089682109bd3324e896",
      "tree": "b70d0174ddae44224ae5c8cea90231e659beff30",
      "parents": [
        "a6bb340da32f0abf76656be1619fb85150eef61b"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sun Jul 08 22:29:26 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 18 15:49:49 2007 -0700"
      },
      "message": "Driver core: accept all valid action-strings in uevent-trigger\n\nThis allows the uevent file to handle any type of uevent action to be\ntriggered by userspace instead of just the \"add\" uevent.\n\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7132ab7f6e0309bb8e0424e395ba149aee0c750e",
      "tree": "b947434ef6edefdbe683b4a6c5740ccec977bc4e",
      "parents": [
        "af2d940df2b60b15c271033d381c2f3ead655562"
      ],
      "author": {
        "name": "Andy Fleming",
        "email": "afleming@freescale.com",
        "time": "Wed Jul 11 11:43:07 2007 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 18 18:29:37 2007 -0400"
      },
      "message": "Fix RGMII-ID handling in gianfar\n\nThe TSEC/eTSEC can detect the interface to the PHY automatically,\nbut it isn\u0027t able to detect whether the RGMII connection needs internal\ndelay.  So we need to detect that change in the device tree, propagate\nit to the platform data, and then check it if we\u0027re in RGMII.  This fixes\na bug on the 8641D HPCN board where the Vitesse PHY doesn\u0027t use the delay\nfor RGMII.\n\nSigned-off-by: Andy Fleming \u003cafleming@freescale.com\u003e\n"
    },
    {
      "commit": "5bae7ac9feba925fd0099057f6b23d7be80b7b41",
      "tree": "7ff78cda1d18a7b5eb5c6384815bb8f7b87cf5ce",
      "parents": [
        "97405fe26b2a4df7090884b086ee8224ace2a6d1",
        "587ca7619a150cef0ce0dd8fd08c367e502f0421"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 12:57:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 12:57:52 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:\n  [AVR32] Initialize phy_mask for both macb devices\n  [AVR32] Fix atomic_add_unless() and atomic_sub_unless()\n  [AVR32] Correct misspelled CONFIG_BLK_DEV_INITRD variable.\n  [AVR32] Fix build error in parse_tag_rdimg()\n  [AVR32] Don\u0027t wire up macb0 unless SW6 is in default position\n  [AVR32] Wire up SSC platform device 0 as TX on ATSTK1000 board\n  [AVR32] Add Atmel SSC driver platform device to AT32AP architecture\n  [AVR32] Remove optimization of unaligned word loads\n  [AVR32] Make STK1000 mux settings configurable\n  [AVR32] CPU frequency scaling for AT32AP\n  [AVR32] Split SM device into PM, RTC, WDT and EIC\n  [AVR32] faster avr32 unaligned access\n"
    },
    {
      "commit": "3da86ee4f1884c70edbf76f61bfbbe028d2d1685",
      "tree": "be4216a6846b45cde1418706b357fca678a9f966",
      "parents": [
        "f3e26984f1794f3472a50f330c5561766faa477b"
      ],
      "author": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed Jul 18 20:06:04 2007 +0200"
      },
      "committer": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed Jul 18 20:47:04 2007 +0200"
      },
      "message": "[AVR32] Fix atomic_add_unless() and atomic_sub_unless()\n\nThese functions depend on \"result\" being initalized to 0, but \"result\"\nis not included as an input constraint to the inline assembly block\nfollowing its initialization, only as an output constraint. Thus gcc\nthinks it doesn\u0027t need to initialize it, so result ends up undefined\nif the \"unless\" condition is true.\n\nThis fixes an oops in sunrpc where the faulty atomics caused\nrpciod_up() to not start the workqueue as it should.\n\nSigned-off-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\n"
    },
    {
      "commit": "9cf6cf58d06527fc5bc8e2965ddccdeca59ccee3",
      "tree": "f0f8b3eb7cd431cb8a3240981c1f54c8a04f736b",
      "parents": [
        "e122eaf69422e5d9ce93fc9786099098e3b9e1c4"
      ],
      "author": {
        "name": "Hans-Christian Egtvedt",
        "email": "hcegtvedt@atmel.com",
        "time": "Fri Jul 06 14:31:55 2007 +0200"
      },
      "committer": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed Jul 18 20:45:52 2007 +0200"
      },
      "message": "[AVR32] Add Atmel SSC driver platform device to AT32AP architecture\n\nThis patch adds register definitions, clocks and IRQs to the platform devices.\n\nSigned-off-by: Hans-Christian Egtvedt \u003chcegtvedt@atmel.com\u003e\nSigned-off-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\n"
    },
    {
      "commit": "e122eaf69422e5d9ce93fc9786099098e3b9e1c4",
      "tree": "2300448ae2e0ea454619de01c3ca59715d861fe8",
      "parents": [
        "a8e93ed8cb3d9aa22d192033009357526548c825"
      ],
      "author": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed Jun 20 15:29:15 2007 +0200"
      },
      "committer": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed Jul 18 20:45:51 2007 +0200"
      },
      "message": "[AVR32] Remove optimization of unaligned word loads\n\nIf we let unaligned word loads bypass the generic unaligned handling,\ngcc may combine it with a swap.b instruction and turn it into a ldwsp\ninstruction, which does not work with unaligned addresses.\n\nRevert the optimization to prevent the RNDIS driver from crashing.\nHopefully we\u0027ll figure something out later (it may be better to do the\noptimization in gcc.)\n\nSigned-off-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\n"
    },
    {
      "commit": "7a5b80590772c29bba1d54d3685622177d6fe39f",
      "tree": "d643198d28f6578febc2bcc0317a0681f951e62b",
      "parents": [
        "c6083cd61b5a64a1c73d1634744382f54cb99595"
      ],
      "author": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Mon Jun 04 12:58:30 2007 +0200"
      },
      "committer": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed Jul 18 20:45:51 2007 +0200"
      },
      "message": "[AVR32] Split SM device into PM, RTC, WDT and EIC\n\nSplit the SM platform device into separate platform devices for PM,\nRTC, WDT and EIC. This is more correct according to the documentation\nand allows us to simplify the code a little.\n\nAlso turn the EIC driver into a real platform driver.\n\nSigned-off-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nAcked-by: Hans-Christian Egtvedt \u003chcegtvedt@atmel.com\u003e\n"
    },
    {
      "commit": "c6083cd61b5a64a1c73d1634744382f54cb99595",
      "tree": "4ad4409a074a9de87a03bc2162d27e326f2c0498",
      "parents": [
        "8b4a40809e5330c9da5d20107d693d92d73b31dc"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Fri May 25 18:47:47 2007 -0700"
      },
      "committer": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed Jul 18 20:45:50 2007 +0200"
      },
      "message": "[AVR32] faster avr32 unaligned access\n\nUse a more conventional implementation for unaligned access, and include\nan AT32AP-specific optimization:  the CPU will handle unaligned words.\n\nThe result is always faster and smaller for 8, 16, and 32 bit values.\nFor 64 bit quantities, it\u0027s presumably larger.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\n"
    },
    {
      "commit": "a267c0a887064720dfab5775a4f09b20b4f8ec37",
      "tree": "25de1f109ff6ef7f0967c22755604cc667944afd",
      "parents": [
        "d756d10e246a01515d07f8161181b8a14afba7cc",
        "97989ada7628da262eafb4bebce0a319c7cb0f5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 11:25:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 11:25:58 2007 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of ssh://master.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb\n\n* \u0027master\u0027 of ssh://master.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (126 commits)\n  V4L/DVB (5847): Clean up schedule_timeout calls in cpia2 and ivtv code\n  V4L/DVB (5846): Clean up setting state and scheduling timeouts\n  V4L/DVB (5844): ivtv: add high volume debugging flag\n  V4L/DVB (5843): ivtv: fix missing signal_pending check.\n  V4L/DVB (5842): ivtv: Add locking to ensure stream setup is atomic.\n  V4L/DVB (5841): tveeprom: add support for Philips FQ1216LME MK3 tuner.\n  V4L/DVB (5840): fix dst and cx24123: tune() callback changed signess for delay\n  V4L/DVB (5838): dvb-core: Fix signedness warnings (gcc 4.1.1, kernel 2.6.22)\n  V4L/DVB (5837): stv0299: Fix signedness warning (gcc 4.1.1, kernel 2.6.22)\n  V4L/DVB (5836): dvb-ttpci: re-initialize aspect ratio and pan scan after arm crash\n  V4L/DVB (5835): saa7146/dvb-ttpci: Fix signedness warnings (gcc 4.1.1, kernel 2.6.22)\n  V4L/DVB (5834): dvb-core: fix signedness warnings and const stripping\n  V4L/DVB (5832): ir-common: optimize bit extract function\n  V4L/DVB (5831): stradis: use ARRAY_SIZE\n  V4L/DVB (5829): Firmware extract and loading for opera dvb-usb update\n  V4L/DVB (5828): Kconfig: Added GemTek USB radio and removed experimental dependency.\n  V4L/DVB (5826): Usbvision: video mux cleanup\n  V4L/DVB (5825): Alter the tuner type for the WinTV USB UK PAL model.\n  V4L/DVB (5824): Usbvision: Hauppauge WinTV USB SECAM_L fix\n  V4L/DVB (5821): Saa7134: add remote control support for LifeView FlyDVB-S LR300\n  ...\n"
    },
    {
      "commit": "d756d10e246a01515d07f8161181b8a14afba7cc",
      "tree": "de7336f2b4b596881468bf65cb2f2f88cedcde86",
      "parents": [
        "cdf4a6482dd4c739f8c1132c5a9356912911fec5",
        "e9f410b1c035b6e63f0b4c3d6cfe4298d6a04492"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:32:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:32:00 2007 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: extent macros cleanup\n  Fix compilation with EXT_DEBUG, also fix leXX_to_cpu conversions.\n  ext4: remove extra IS_RDONLY() check\n  ext4: Use is_power_of_2()\n  Use zero_user_page() in ext4 where possible\n  ext4: Remove 65000 subdirectory limit\n  ext4: Expand extra_inodes space per the s_{want,min}_extra_isize fields \n  ext4: Add nanosecond timestamps\n  jbd2: Move jbd2-debug file to debugfs\n  jbd2: Fix CONFIG_JBD_DEBUG ifdef to be CONFIG_JBD2_DEBUG\n  ext4: Set the journal JBD2_FEATURE_INCOMPAT_64BIT on large devices\n  ext4: Make extents code sanely handle on-disk corruption\n  ext4: copy i_flags to inode flags on write\n  ext4: Enable extents by default\n  Change on-disk format to support 2^15 uninitialized extents\n  write support for preallocated blocks\n  fallocate support in ext4\n  sys_fallocate() implementation on i386, x86_64 and powerpc\n"
    },
    {
      "commit": "cdf4a6482dd4c739f8c1132c5a9356912911fec5",
      "tree": "fa7b67c8ef5723d88cdc400f90a9b6e927e159a5",
      "parents": [
        "485cf925d8b7a6b3c62fe5f1e167f2d0d4edf32a",
        "add0b43ca67bf281ef7ac8ab47e9ee7b2d97a69f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:27:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:27:24 2007 -0700"
      },
      "message": "Merge branch \u0027upstream\u0027 of git://git.infradead.org/~dedekind/ubi-2.6\n\n* \u0027upstream\u0027 of git://git.infradead.org/~dedekind/ubi-2.6: (28 commits)\n  UBI: fix compile warning\n  UBI: fix error handling in erase worker\n  UBI: fix comments\n  UBI: remove unneeded error checks\n  UBI: cleanup usage of try_module_get\n  UBI: fix overflow bug\n  UBI: bugfix in max_sqnum calculation\n  UBI: bugfix in sqnum calculation\n  UBI: fix signed-unsigned multiplication\n  UBI: fix bug in atomic_leb_change()\n  UBI: fix message\n  UBI: fix debugging stuff\n  UBI: bugfix in error path\n  UBI: use is_power_of_2()\n  UBI: fix freeing ubi-\u003evtbl while unloading\n  UBI: fix MAINTAINERS\n  UBI: bugfix in ubi_leb_change()\n  UBI: kill homegrown endian macros\n  UBI: cleanup ioctl handling\n  UBI: error path bugfix\n  ...\n"
    },
    {
      "commit": "804b4458943f14bf144d3c3ba50097ced9b27b29",
      "tree": "4c8b32cd168c3ded1215218b84545ec2361ca764",
      "parents": [
        "372280d2a3593e90d8849a5dc5676d2e9799e3a3"
      ],
      "author": {
        "name": "Oliver Endriss",
        "email": "o.endriss@gmx.de",
        "time": "Thu Jul 12 20:37:50 2007 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@infradead.org",
        "time": "Wed Jul 18 14:24:44 2007 -0300"
      },
      "message": "V4L/DVB (5835): saa7146/dvb-ttpci: Fix signedness warnings (gcc 4.1.1, kernel 2.6.22)\n\nFix signedness warnings (gcc 4.1.1, kernel 2.6.22).\n\nSigned-off-by: Oliver Endriss \u003co.endriss@gmx.de\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\n"
    },
    {
      "commit": "485cf925d8b7a6b3c62fe5f1e167f2d0d4edf32a",
      "tree": "57798f48123a62dd1801f039b676b06913e34e72",
      "parents": [
        "31bdc5dc7666aa2fe04c626cea30fe3c20cf481c",
        "3fd8f9e4b6c184d03d340bc86630f700de967fa8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:24:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:24:36 2007 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\n* \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (24 commits)\n  [NETFILTER]: xt_connlimit needs to depend on nf_conntrack\n  [NETFILTER]: ipt_iprange.h must #include \u003clinux/types.h\u003e\n  [IrDA]: Fix IrDA build failure\n  [ATM]: nicstar needs virt_to_bus\n  [NET]: move __dev_addr_discard adjacent to dev_addr_discard for readability\n  [NET]: merge dev_unicast_discard and dev_mc_discard into one\n  [NET]: move dev_mc_discard from dev_mcast.c to dev.c\n  [NETLINK]: negative groups in netlink_setsockopt\n  [PPPOL2TP]: Reset meta-data in xmit function\n  [PPPOL2TP]: Fix use-after-free\n  [PKT_SCHED]: Some typo fixes in net/sched/Kconfig\n  [XFRM]: Fix crash introduced by struct dst_entry reordering\n  [TCP]: remove unused argument to cong_avoid op\n  [ATM]: [idt77252] Rename CONFIG_ATM_IDT77252_SEND_IDLE to not resemble a Kconfig variable\n  [ATM]: [drivers] ioremap balanced with iounmap\n  [ATM]: [lanai] sram_test_word() must be __devinit\n  [ATM]: [nicstar] Replace C code with call to ARRAY_SIZE() macro.\n  [ATM]: Eliminate dead config variable CONFIG_BR2684_FAST_TRANS.\n  [ATM]: Replacing kmalloc/memset combination with kzalloc.\n  [NET]: gen_estimator deadlock fix\n  ...\n"
    },
    {
      "commit": "8218b0b2caecf4af55742e12e9986c15605bb197",
      "tree": "99285845e50f4b0f0a05466743a721955e26fc74",
      "parents": [
        "bebeaea0a54869b59b45ea22a93f325ce0369d61"
      ],
      "author": {
        "name": "Michael Krufky",
        "email": "mkrufky@linuxtv.org",
        "time": "Tue Jun 26 13:12:08 2007 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@infradead.org",
        "time": "Wed Jul 18 14:24:23 2007 -0300"
      },
      "message": "V4L/DVB (5793): Tuner: remove hardware-specific info from public header\n\nMove internal structures and debug macros to drivers/media/video/tuner-driver.h\n\nSigned-off-by: Michael Krufky \u003cmkrufky@linuxtv.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\n"
    },
    {
      "commit": "7a91a80a0d1a0a83a94e773ec6245b31b7c4ceed",
      "tree": "d524d57405944826d4a6c375af1a77bab22546a2",
      "parents": [
        "018ec5440b4994f560cdde78be6fb10d7ab370d7"
      ],
      "author": {
        "name": "Michael Krufky",
        "email": "mkrufky@linuxtv.org",
        "time": "Wed Jun 06 16:10:39 2007 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@infradead.org",
        "time": "Wed Jul 18 14:24:02 2007 -0300"
      },
      "message": "V4L/DVB (5753): Tuner: create struct tuner_operations\n\nMove tuner callback function pointers out of struct tuner, into\nstruct tuner_operations.\n\nSigned-off-by: Michael Krufky \u003cmkrufky@linuxtv.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\n"
    },
    {
      "commit": "be2b85a13543bbaf1a141b3a54f84c1e3b059e69",
      "tree": "9f44d2aa513237b5baab578a51f66a4d2e731b6c",
      "parents": [
        "9ee476a56c3ee119a02b6823659f5698b1241f04"
      ],
      "author": {
        "name": "Michael Krufky",
        "email": "mkrufky@linuxtv.org",
        "time": "Mon Jun 04 14:40:27 2007 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@infradead.org",
        "time": "Wed Jul 18 14:23:54 2007 -0300"
      },
      "message": "V4L/DVB (5741): Tuner: add release callback\n\nIndividual tuner drivers are now allocating memory themselves for\ntheir own private data structures.  This changeset adds a release\ncallback to the tuner operations, so that newer drivers that may\nrequire more complex data structures may release this private data\nthemselves.\n\nSigned-off-by: Michael Krufky \u003cmkrufky@linuxtv.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\n"
    },
    {
      "commit": "b208319993ceff7ebfcc6bb914fe94d29e48a891",
      "tree": "0a0697806b221c7711914dbdfe2bd3972c206b23",
      "parents": [
        "56584c9ea9a6dcd672f97ebfeebc4903e8b903bc"
      ],
      "author": {
        "name": "Michael Krufky",
        "email": "mkrufky@linuxtv.org",
        "time": "Tue May 29 22:54:06 2007 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@infradead.org",
        "time": "Wed Jul 18 14:23:48 2007 -0300"
      },
      "message": "V4L/DVB (5719): Tuner: Move device-specific private data out of tuner struct\n\nCreate private data struct for device specific private data.\n\nSigned-off-by: Michael Krufky \u003cmkrufky@linuxtv.org\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\n"
    },
    {
      "commit": "31bdc5dc7666aa2fe04c626cea30fe3c20cf481c",
      "tree": "a1a78a39379e081e9982c3273a71b4e93e8c1fd0",
      "parents": [
        "5cc97bf2d8eaa6cab60727c3eba3e85e29062669",
        "a5f8967e171a6fa27da8e6d06d3ef85f7fed43c1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:23:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 18 10:23:37 2007 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6\n\n* \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:\n  [SPARC64]: Set vio-\u003edesc_buf to NULL after freeing.\n  [SPARC]: Mark sparc and sparc64 as not having virt_to_bus\n  [SPARC64]: Fix reset handling in VNET driver.\n  [SPARC64]: Handle reset events in vio_link_state_change().\n  [SPARC64]: Handle LDC resets properly in domain-services driver.\n  [SPARC64]: Massively simplify VIO device layer and support hot add/remove.\n  [SPARC64]: Simplify VNET probing.\n  [SPARC64]: Simplify VDC device probing.\n  [SPARC64]: Add basic infrastructure for MD add/remove notification.\n"
    },
    {
      "commit": "8573a9e6a8ed724b7e3074dc8762d4117ed0b3aa",
      "tree": "c84aa587103700a3db61f271dfb7c0b99aa37492",
      "parents": [
        "8b4a40809e5330c9da5d20107d693d92d73b31dc"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@infradead.org",
        "time": "Sun Apr 08 01:09:11 2007 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@infradead.org",
        "time": "Wed Jul 18 14:23:11 2007 -0300"
      },
      "message": "V4L/DVB (5563a): Add experimental support for tea5761 tuner\n\nThis driver were made based on tea5761 specs.\n\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\n"
    },
    {
      "commit": "60223a326fc8fa6e90e2c3fd28ae6de4a311d731",
      "tree": "cf4e667a56402b846488373bfaf5bf840395e219",
      "parents": [
        "3e2b8fbeec8f005672f2a2e862fb9c26a0bafedc"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:07 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:45 2007 -0700"
      },
      "message": "xen: Place vcpu_info structure into per-cpu memory\n\nAn experimental patch for Xen allows guests to place their vcpu_info\nstructs anywhere.  We try to use this to place the vcpu_info into the\nPDA, which allows direct access.\n\nIf this works, then switch to using direct access operations for\nirq_enable, disable, save_fl and restore_fl.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Keir Fraser \u003ckeir@xensource.com\u003e\n"
    },
    {
      "commit": "9f27ee595038653ddf8bca871200d39247d6f4fc",
      "tree": "602b4fe83ccfd6cb65b146ed80e84baec0fb6cb7",
      "parents": [
        "4bac07c993d03434ea902d3d4290d9e45944b66c"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:06 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:45 2007 -0700"
      },
      "message": "xen: add virtual block device driver.\n\nThe block device frontend driver allows the kernel to access block\ndevices exported exported by a virtual machine containing a physical\nblock device driver.\n\nSigned-off-by: Ian Pratt \u003cian.pratt@xensource.com\u003e\nSigned-off-by: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "4bac07c993d03434ea902d3d4290d9e45944b66c",
      "tree": "1930a1d8c23d3968d4644edda50791ff390bfe93",
      "parents": [
        "ad9a86121f5a374b48ce2924f8a9d7e94a04db27"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:06 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:45 2007 -0700"
      },
      "message": "xen: add the Xenbus sysfs and virtual device hotplug driver\n\nThis communicates with the machine control software via a registry\nresiding in a controlling virtual machine. This allows dynamic\ncreation, destruction and modification of virtual device\nconfigurations (network devices, block devices and CPUS, to name some\nexamples).\n\n[ Greg, would you mind giving this a review?  Thanks -J ]\n\nSigned-off-by: Ian Pratt \u003cian.pratt@xensource.com\u003e\nSigned-off-by: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\n"
    },
    {
      "commit": "ad9a86121f5a374b48ce2924f8a9d7e94a04db27",
      "tree": "c14af462957ce9ee6de3e4537e15879c25a679aa",
      "parents": [
        "b536b4b9623084d86f2b1f19cb44a2d6d74f00bf"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:06 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:44 2007 -0700"
      },
      "message": "xen: Add grant table support\n\nAdd Xen \u0027grant table\u0027 driver which allows granting of access to\nselected local memory pages by other virtual machines and,\nsymmetrically, the mapping of remote memory pages which other virtual\nmachines have granted access to.\n\nThis driver is a prerequisite for many of the Xen virtual device\ndrivers, which grant the \u0027device driver domain\u0027 restricted and\ntemporary access to only those memory pages that are currently\ninvolved in I/O operations.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Ian Pratt \u003cian.pratt@xensource.com\u003e\nSigned-off-by: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\n"
    },
    {
      "commit": "b536b4b9623084d86f2b1f19cb44a2d6d74f00bf",
      "tree": "86c1981309dbd8b9bf120d4ddba50abd105af89a",
      "parents": [
        "8b84ad942b534f8faeb34b68f0f7277ea375fed0"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:06 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:44 2007 -0700"
      },
      "message": "xen: use the hvc console infrastructure for Xen console\n\nImplement a Xen back-end for hvc console.\n\n* * *\nAdd early printk support via hvc console, enable using\n\"earlyprintk\u003dxen\" on the kernel command line.\n\nFrom: Gerd Hoffmann \u003ckraxel@suse.de\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Olof Johansson \u003colof@lixom.net\u003e\n"
    },
    {
      "commit": "f87e4cac4f4e940b328d3deb5b53e642e3881f43",
      "tree": "7409f86561e5f97459378abd2ae21e9a5c82bfea",
      "parents": [
        "ab55028886dd1dd54585f22bf19a00eb23869340"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:06 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:44 2007 -0700"
      },
      "message": "xen: SMP guest support\n\nThis is a fairly straightforward Xen implementation of smp_ops.\n\nXen has its own IPI mechanisms, and has no dependency on any\nAPIC-based IPI.  The smp_ops hooks and the flush_tlb_others pv_op\nallow a Xen guest to avoid all APIC code in arch/i386 (the only apic\noperation is a single apic_read for the apic version number).\n\nOne subtle point which needs to be addressed is unpinning pagetables\nwhen another cpu may have a lazy tlb reference to the pagetable. Xen\nwill not allow an in-use pagetable to be unpinned, so we must find any\nother cpus with a reference to the pagetable and get them to shoot\ndown their references.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "c85b04c3749507546f6d5868976e4793e35c2ec0",
      "tree": "77ad99f3850d11dab3df2b8b7e1998754d72d8bd",
      "parents": [
        "e738fca8d7dffec30eeee231c38f128eed56c8c8"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:05 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:43 2007 -0700"
      },
      "message": "xen: add pinned page flag\n\nAdd a new definition for PG_owner_priv_1 to define PG_pinned on Xen\npagetable pages.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\n"
    },
    {
      "commit": "e46cdb66c8fc1c8d61cfae0f219ff47ac4b9d531",
      "tree": "7d9cdfef91e69fcfcba762a5a70cd58900308a5b",
      "parents": [
        "3b827c1b3aadf3adb4c602d19863f2d24e7cbc18"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:05 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:42 2007 -0700"
      },
      "message": "xen: event channels\n\nXen implements interrupts in terms of event channels.  Each guest\ndomain gets 1024 event channels which can be used for a variety of\npurposes, such as Xen timer events, inter-domain events,\ninter-processor events (IPI) or for real hardware IRQs.\n\nWithin the kernel, we map the event channels to IRQs, and implement\nthe whole interrupt handling using a Xen irq_chip.\n\nRather than setting NR_IRQ to 1024 under PARAVIRT in order to\naccomodate Xen, we create a dynamic mapping between event channels and\nIRQs.  Ideally, Linux will eventually move towards dynamically\nallocating per-irq structures, and we can use a 1:1 mapping between\nevent channels and irqs.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "5ead97c84fa7d63a6a7a2f4e9f18f452bd109045",
      "tree": "26f6bc55dce0f119f7d3c8d6b40d2f287601db36",
      "parents": [
        "a42089dd358a7673a0a23126589a9029e57c2049"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:04 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:42 2007 -0700"
      },
      "message": "xen: Core Xen implementation\n\nThis patch is a rollup of all the core pieces of the Xen\nimplementation, including:\n - booting and setup\n - pagetable setup\n - privileged instructions\n - segmentation\n - interrupt flags\n - upcalls\n - multicall batching\n\nBOOTING AND SETUP\n\nThe vmlinux image is decorated with ELF notes which tell the Xen\ndomain builder what the kernel\u0027s requirements are; the domain builder\nthen constructs the address space accordingly and starts the kernel.\n\nXen has its own entrypoint for the kernel (contained in an ELF note).\nThe ELF notes are set up by xen-head.S, which is included into head.S.\nIn principle it could be linked separately, but it seems to provoke\nlots of binutils bugs.\n\nBecause the domain builder starts the kernel in a fairly sane state\n(32-bit protected mode, paging enabled, flat segments set up), there\u0027s\nnot a lot of setup needed before starting the kernel proper.  The main\nsteps are:\n  1. Install the Xen paravirt_ops, which is simply a matter of a\n     structure assignment.\n  2. Set init_mm to use the Xen-supplied pagetables (analogous to the\n     head.S generated pagetables in a native boot).\n  3. Reserve address space for Xen, since it takes a chunk at the top\n     of the address space for its own use.\n  4. Call start_kernel()\n\nPAGETABLE SETUP\n\nOnce we hit the main kernel boot sequence, it will end up calling back\nvia paravirt_ops to set up various pieces of Xen specific state.  One\nof the critical things which requires a bit of extra care is the\nconstruction of the initial init_mm pagetable.  Because Xen places\ntight constraints on pagetables (an active pagetable must always be\nvalid, and must always be mapped read-only to the guest domain), we\nneed to be careful when constructing the new pagetable to keep these\nconstraints in mind.  It turns out that the easiest way to do this is\nuse the initial Xen-provided pagetable as a template, and then just\ninsert new mappings for memory where a mapping doesn\u0027t already exist.\n\nThis means that during pagetable setup, it uses a special version of\nxen_set_pte which ignores any attempt to remap a read-only page as\nread-write (since Xen will map its own initial pagetable as RO), but\nlets other changes to the ptes happen, so that things like NX are set\nproperly.\n\nPRIVILEGED INSTRUCTIONS AND SEGMENTATION\n\nWhen the kernel runs under Xen, it runs in ring 1 rather than ring 0.\nThis means that it is more privileged than user-mode in ring 3, but it\nstill can\u0027t run privileged instructions directly.  Non-performance\ncritical instructions are dealt with by taking a privilege exception\nand trapping into the hypervisor and emulating the instruction, but\nmore performance-critical instructions have their own specific\nparavirt_ops.  In many cases we can avoid having to do any hypercalls\nfor these instructions, or the Xen implementation is quite different\nfrom the normal native version.\n\nThe privileged instructions fall into the broad classes of:\n  Segmentation: setting up the GDT and the GDT entries, LDT,\n     TLS and so on.  Xen doesn\u0027t allow the GDT to be directly\n     modified; all GDT updates are done via hypercalls where the new\n     entries can be validated.  This is important because Xen uses\n     segment limits to prevent the guest kernel from damaging the\n     hypervisor itself.\n  Traps and exceptions: Xen uses a special format for trap entrypoints,\n     so when the kernel wants to set an IDT entry, it needs to be\n     converted to the form Xen expects.  Xen sets int 0x80 up specially\n     so that the trap goes straight from userspace into the guest kernel\n     without going via the hypervisor.  sysenter isn\u0027t supported.\n  Kernel stack: The esp0 entry is extracted from the tss and provided to\n     Xen.\n  TLB operations: the various TLB calls are mapped into corresponding\n     Xen hypercalls.\n  Control registers: all the control registers are privileged.  The most\n     important is cr3, which points to the base of the current pagetable,\n     and we handle it specially.\n\nAnother instruction we treat specially is CPUID, even though its not\nprivileged.  We want to control what CPU features are visible to the\nrest of the kernel, and so CPUID ends up going into a paravirt_op.\nXen implements this mainly to disable the ACPI and APIC subsystems.\n\nINTERRUPT FLAGS\n\nXen maintains its own separate flag for masking events, which is\ncontained within the per-cpu vcpu_info structure.  Because the guest\nkernel runs in ring 1 and not 0, the IF flag in EFLAGS is completely\nignored (and must be, because even if a guest domain disables\ninterrupts for itself, it can\u0027t disable them overall).\n\n(A note on terminology: \"events\" and interrupts are effectively\nsynonymous.  However, rather than using an \"enable flag\", Xen uses a\n\"mask flag\", which blocks event delivery when it is non-zero.)\n\nThere are paravirt_ops for each of cli/sti/save_fl/restore_fl, which\nare implemented to manage the Xen event mask state.  The only thing\nworth noting is that when events are unmasked, we need to explicitly\nsee if there\u0027s a pending event and call into the hypervisor to make\nsure it gets delivered.\n\nUPCALLS\n\nXen needs a couple of upcall (or callback) functions to be implemented\nby each guest.  One is the event upcalls, which is how events\n(interrupts, effectively) are delivered to the guests.  The other is\nthe failsafe callback, which is used to report errors in either\nreloading a segment register, or caused by iret.  These are\nimplemented in i386/kernel/entry.S so they can jump into the normal\niret_exc path when necessary.\n\nMULTICALL BATCHING\n\nXen provides a multicall mechanism, which allows multiple hypercalls\nto be issued at once in order to mitigate the cost of trapping into\nthe hypervisor.  This is particularly useful for context switches,\nsince the 4-5 hypercalls they would normally need (reload cr3, update\nTLS, maybe update LDT) can be reduced to one.  This patch implements a\ngeneric batching mechanism for hypercalls, which gets used in many\nplaces in the Xen code.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Ian Pratt \u003cian.pratt@xensource.com\u003e\nCc: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "a42089dd358a7673a0a23126589a9029e57c2049",
      "tree": "aa076610832f5cdb0ee209c42ea7e40d54534ef4",
      "parents": [
        "24037a8b69dbf15bfed8fd42a2a2e442d7b0395b"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:04 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:42 2007 -0700"
      },
      "message": "xen: Add Xen interface header files\n\nAdd Xen interface header files. These are taken fairly directly from\nthe Xen tree, but somewhat rearranged to suit the kernel\u0027s conventions.\n\nDefine macros and inline functions for doing hypercalls into the\nhypervisor.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Ian Pratt \u003cian.pratt@xensource.com\u003e\nSigned-off-by: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\n"
    },
    {
      "commit": "688340ea34c61ad12473ccd837325b59aada9a93",
      "tree": "2862f4dca8d47fc4e6ecfaba2243d813344e3cd2",
      "parents": [
        "d572929cdd12a60732c3522f7cf011bfa29165cf"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:04 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:42 2007 -0700"
      },
      "message": "Add a sched_clock paravirt_op\n\nThe tsc-based get_scheduled_cycles interface is not a good match for\nXen\u0027s runstate accounting, which reports everything in nanoseconds.\n\nThis patch replaces this interface with a sched_clock interface, which\nmatches both Xen and VMI\u0027s requirements.\n\nIn order to do this, we:\n   1. replace get_scheduled_cycles with sched_clock\n   2. hoist cycles_2_ns into a common header\n   3. update vmi accordingly\n\nOne thing to note: because sched_clock is implemented as a weak\nfunction in kernel/sched.c, we must define a real function in order to\noverride this weak binding.  This means the usual paravirt_ops\ntechnique of using an inline function won\u0027t work in this case.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Dan Hecht \u003cdhecht@vmware.com\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\n"
    },
    {
      "commit": "d572929cdd12a60732c3522f7cf011bfa29165cf",
      "tree": "4b1c351d7574b679f2d250483cffcedf3fdfa9be",
      "parents": [
        "5f4352fbffd6c45123dbce9e195efd54df4e177e"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:04 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:42 2007 -0700"
      },
      "message": "paravirt: helper to disable all IO space\n\nIn a virtual environment, device drivers such as legacy IDE will waste\nquite a lot of time probing for their devices which will never appear.\nThis helper function allows a paravirt implementation to lay claim to\nthe whole iomem and ioport space, thereby disabling all device drivers\ntrying to claim IO resources.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5f4352fbffd6c45123dbce9e195efd54df4e177e",
      "tree": "e2a0316e2f2d22c266e7cae3015ddc0f2f77f64f",
      "parents": [
        "bdef40a6af64a0140a65df49bf504124d57094a9"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:04 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:41 2007 -0700"
      },
      "message": "Allocate and free vmalloc areas\n\nAllocate/release a chunk of vmalloc address space:\n alloc_vm_area reserves a chunk of address space, and makes sure all\n the pagetables are constructed for that address range - but no pages.\n\n free_vm_area releases the address space range.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Ian Pratt \u003cian.pratt@xensource.com\u003e\nSigned-off-by: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: \"Jan Beulich\" \u003cJBeulich@novell.com\u003e\nCc: \"Andi Kleen\" \u003cak@muc.de\u003e\n"
    },
    {
      "commit": "c70df74376c1e29a04e07e23dd3f4c384d6166dd",
      "tree": "e85b195f67547e9e8bc914ce9426b6969a1ec60a",
      "parents": [
        "724faa89ccd8fae65f3d41a47b0e1034cf07918b"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:03 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:41 2007 -0700"
      },
      "message": "paravirt: make siblingmap functions visible\n\nParavirt implementations need to set the sibling map on new cpus.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\n"
    },
    {
      "commit": "724faa89ccd8fae65f3d41a47b0e1034cf07918b",
      "tree": "6e720d0d35ac99eae1bc8f3e8bc304f4f144d6b5",
      "parents": [
        "53787013248f52af81d99f63454e5a5cf34d6f12"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:03 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:41 2007 -0700"
      },
      "message": "paravirt: unstatic smp_store_cpu_info\n\nParavirt implementations need to store cpu info when bringing up cpus.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\n"
    },
    {
      "commit": "53787013248f52af81d99f63454e5a5cf34d6f12",
      "tree": "3a56e7439d8ee407af34899501ab663ee8202054",
      "parents": [
        "03f0c2f950f813e3b26c56ed041ba170479d479c"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:03 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:41 2007 -0700"
      },
      "message": "paravirt: unstatic leave_mm\n\nMake globally leave_mm visible, specifically so that Xen can use it to\nshoot-down lazy uses of cr3.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\n"
    },
    {
      "commit": "03f0c2f950f813e3b26c56ed041ba170479d479c",
      "tree": "752961d777482f5c2b7b1f68e2cddc26dc259024",
      "parents": [
        "6996d3b63fd9a64341bc80dad1b556fd3eb81272"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:03 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:41 2007 -0700"
      },
      "message": "paravirt: increase IRQ limit\n\nWhen running with CONFIG_PARAVIRT, we may want lots of IRQs even if\nthere\u0027s no IO APIC.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "6996d3b63fd9a64341bc80dad1b556fd3eb81272",
      "tree": "74ddc02eeb33c5ce6a9670cd3fcd1613444e0711",
      "parents": [
        "fdb4c338c8d1d494e17c3422a3ea2129f6791596"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:03 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:41 2007 -0700"
      },
      "message": "paravirt: add a hook for once the allocator is ready\n\nAdd a hook so that the paravirt backend knows when the allocator is\nready.  This is useful for the obvious reason that the allocator is\navailable, but the other side-effect of having the bootmem allocator\navailable is that each page now has an associated \"struct page\".\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\n"
    }
  ],
  "next": "fdb4c338c8d1d494e17c3422a3ea2129f6791596"
}
