)]}'
{
  "log": [
    {
      "commit": "3b6259432dee81f928c22c48c080d5f6325ed92e",
      "tree": "4b22a1a9a547a6e3da9d1a45cd83d210d9398fcd",
      "parents": [
        "8f43f84f13a49fe5f0f7d1595082b6d7ec6daa85"
      ],
      "author": {
        "name": "Corey Minyard",
        "email": "minyard@acm.org",
        "time": "Thu Jun 23 22:01:42 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:23 2005 -0700"
      },
      "message": "[PATCH] ipmi: add power cycle capability\n\nThis patch to adds \"power cycle\" functionality to the IPMI power off module\nipmi_poweroff.  It also contains changes to support procfs control of the\nfeature.\n\nThe power cycle action is considered an optional chassis control in the IPMI\nspecification.  However, it is definitely useful when the hardware supports\nit.  A power cycle is usually required in order to reset a firmware in a bad\nstate.  This action is critical to allow remote management of servers.\n\nThe implementation adds power cycle as optional to the ipmi_poweroff module.\nIt can be modified dynamically through the proc entry mentioned above.  During\na power down and enabled, the power cycle command is sent to the BMC firmware.\n If it fails either due to non-support or some error, it will retry to send\nthe command as power off.\n\nSigned-off-by: Christopher A. Poblete \u003cChris_Poblete@dell.com\u003e\nSigned-off-by: Corey Minyard \u003cminyard@acm.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7282bee78798294bb1f0211a842cdb9f4872db3d",
      "tree": "7a659275aaa7f4c741bd24eeb9f827b2f0a926d5",
      "parents": [
        "e344b63eeec7850b5e900e10c8a6c61d083fd3a4"
      ],
      "author": {
        "name": "Chris Zankel",
        "email": "czankel@tensilica.com",
        "time": "Thu Jun 23 22:01:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:22 2005 -0700"
      },
      "message": "[PATCH] xtensa: Architecture support for Tensilica Xtensa Part 8\n\nThe attached patches provides part 8 of an architecture implementation\nfor the Tensilica Xtensa CPU series.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e344b63eeec7850b5e900e10c8a6c61d083fd3a4",
      "tree": "4871ace0c16423ce4697e4065841c3a0f55563c6",
      "parents": [
        "9a8fd5589902153a134111ed7a40f9cca1f83254"
      ],
      "author": {
        "name": "Chris Zankel",
        "email": "czankel@tensilica.com",
        "time": "Thu Jun 23 22:01:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:22 2005 -0700"
      },
      "message": "[PATCH] xtensa: Architecture support for Tensilica Xtensa Part 7\n\nThe attached patches provides part 7 of an architecture implementation for the\nTensilica Xtensa CPU series.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9a8fd5589902153a134111ed7a40f9cca1f83254",
      "tree": "6f7a06de25bdf0b2d94623794c2cbbc66b5a77f6",
      "parents": [
        "3f65ce4d141e435e54c20ed2379d983d362a2cb5"
      ],
      "author": {
        "name": "Chris Zankel",
        "email": "czankel@tensilica.com",
        "time": "Thu Jun 23 22:01:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:22 2005 -0700"
      },
      "message": "[PATCH] xtensa: Architecture support for Tensilica Xtensa Part 6\n\nThe attached patches provides part 6 of an architecture implementation for the\nTensilica Xtensa CPU series.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "556a2a45bce1740f035befaa7201e4ad836c7257",
      "tree": "d4a85b6f2bd02ab5c7c194e351508b80035f07c5",
      "parents": [
        "1f54587bea84a35125c95e19b98c2f464c50871b"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jun 23 22:01:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:20 2005 -0700"
      },
      "message": "[PATCH] quota: reiserfs: improve quota credit estimates\n\nUse improved credits estimates for quota operations.  Also reserve space\nfor a quota operation in a transaction only if filesystem was mounted with\nsome quota option.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1f54587bea84a35125c95e19b98c2f464c50871b",
      "tree": "42f2467d6892be821271a2257e1259922bdafd45",
      "parents": [
        "4e5117ba0af4582b6ec9164874f719d7f3f1eb2b"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jun 23 22:01:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:20 2005 -0700"
      },
      "message": "[PATCH] quota: ext3: Improve quota credit estimates\n\nUse improved credits estimates for quota operations.  Also reserve a space\nfor a quota operation in a transaction only if filesystem was mounted with\nsome quota options.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4e5117ba0af4582b6ec9164874f719d7f3f1eb2b",
      "tree": "d667e418571366ecea1188cb113e786a4a1d7f5c",
      "parents": [
        "bd6a1f16fffdfe010fdc2979fd01f12357816762"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jun 23 22:01:03 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:19 2005 -0700"
      },
      "message": "[PATCH] quota: improve credits estimates\n\nImprove estimates on the number of needed credits for quota transaction.\nNow we distinguish blocks that might need to be allocated and blocks that\nonly need to be rewritten.  Also we distinguish deleting of a quota\nstructure and creating of a new one.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "92198f7eaa5df3479341dd8fa20c2c81aa3b1e25",
      "tree": "b2b7f8c73b94b4179d5002eaaa30f683b6dc5132",
      "parents": [
        "16c29b67fb3bbacfc2a71f9e5f7d85728ef45efa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 23 22:00:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:19 2005 -0700"
      },
      "message": "[PATCH] pass iocb to dio_iodone_t\n\nXFS will have to look at iocb-\u003eprivate to fix aio+dio.  No other filesystem\nis using the blockdev_direct_IO* end_io callback.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e30148c3d524a9c1c63ca28261bc24c457eb07a",
      "tree": "a2fcc46cc11fe871ad976c07476d934a07313576",
      "parents": [
        "8589b4e00e352f983259140f25a262d973be6bc5"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Jun 23 22:00:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:19 2005 -0700"
      },
      "message": "[PATCH] Keys: Make request-key create an authorisation key\n\nThe attached patch makes the following changes:\n\n (1) There\u0027s a new special key type called \".request_key_auth\".\n\n     This is an authorisation key for when one process requests a key and\n     another process is started to construct it. This type of key cannot be\n     created by the user; nor can it be requested by kernel services.\n\n     Authorisation keys hold two references:\n\n     (a) Each refers to a key being constructed. When the key being\n     \t constructed is instantiated the authorisation key is revoked,\n     \t rendering it of no further use.\n\n     (b) The \"authorising process\". This is either:\n\n     \t (i) the process that called request_key(), or:\n\n     \t (ii) if the process that called request_key() itself had an\n     \t      authorisation key in its session keyring, then the authorising\n     \t      process referred to by that authorisation key will also be\n     \t      referred to by the new authorisation key.\n\n\t This means that the process that initiated a chain of key requests\n\t will authorise the lot of them, and will, by default, wind up with\n\t the keys obtained from them in its keyrings.\n\n (2) request_key() creates an authorisation key which is then passed to\n     /sbin/request-key in as part of a new session keyring.\n\n (3) When request_key() is searching for a key to hand back to the caller, if\n     it comes across an authorisation key in the session keyring of the\n     calling process, it will also search the keyrings of the process\n     specified therein and it will use the specified process\u0027s credentials\n     (fsuid, fsgid, groups) to do that rather than the calling process\u0027s\n     credentials.\n\n     This allows a process started by /sbin/request-key to find keys belonging\n     to the authorising process.\n\n (4) A key can be read, even if the process executing KEYCTL_READ doesn\u0027t have\n     direct read or search permission if that key is contained within the\n     keyrings of a process specified by an authorisation key found within the\n     calling process\u0027s session keyring, and is searchable using the\n     credentials of the authorising process.\n\n     This allows a process started by /sbin/request-key to read keys belonging\n     to the authorising process.\n\n (5) The magic KEY_SPEC_*_KEYRING key IDs when passed to KEYCTL_INSTANTIATE or\n     KEYCTL_NEGATE will specify a keyring of the authorising process, rather\n     than the process doing the instantiation.\n\n (6) One of the process keyrings can be nominated as the default to which\n     request_key() should attach new keys if not otherwise specified. This is\n     done with KEYCTL_SET_REQKEY_KEYRING and one of the KEY_REQKEY_DEFL_*\n     constants. The current setting can also be read using this call.\n\n (7) request_key() is partially interruptible. If it is waiting for another\n     process to finish constructing a key, it can be interrupted. This permits\n     a request-key cycle to be broken without recourse to rebooting.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-Off-By: Benoit Boissinot \u003cbenoit.boissinot@ens-lyon.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7888e7ff4ee579442128d7d12a9c9dbf2cf7de6a",
      "tree": "abe428ecb966e1dae07fce17f38e3e0c0ab4f134",
      "parents": [
        "76d8aeabfeb1c42641a81c44280177b9a08670d8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Jun 23 22:00:51 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:18 2005 -0700"
      },
      "message": "[PATCH] Keys: Pass session keyring to call_usermodehelper()\n\nThe attached patch makes it possible to pass a session keyring through to the\nprocess spawned by call_usermodehelper().  This allows patch 3/3 to pass an\nauthorisation key through to /sbin/request-key, thus permitting better access\ncontrols when doing just-in-time key creation.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "76d8aeabfeb1c42641a81c44280177b9a08670d8",
      "tree": "0a584439bb44e440717aa77a1398ba9eea24a137",
      "parents": [
        "7286aa9b9ab35f20b1ff16d867f4535701df99b5"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Jun 23 22:00:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:18 2005 -0700"
      },
      "message": "[PATCH] keys: Discard key spinlock and use RCU for key payload\n\nThe attached patch changes the key implementation in a number of ways:\n\n (1) It removes the spinlock from the key structure.\n\n (2) The key flags are now accessed using atomic bitops instead of\n     write-locking the key spinlock and using C bitwise operators.\n\n     The three instantiation flags are dealt with with the construction\n     semaphore held during the request_key/instantiate/negate sequence, thus\n     rendering the spinlock superfluous.\n\n     The key flags are also now bit numbers not bit masks.\n\n (3) The key payload is now accessed using RCU. This permits the recursive\n     keyring search algorithm to be simplified greatly since no locks need be\n     taken other than the usual RCU preemption disablement. Searching now does\n     not require any locks or semaphores to be held; merely that the starting\n     keyring be pinned.\n\n (4) The keyring payload now includes an RCU head so that it can be disposed\n     of by call_rcu(). This requires that the payload be copied on unlink to\n     prevent introducing races in copy-down vs search-up.\n\n (5) The user key payload is now a structure with the data following it. It\n     includes an RCU head like the keyring payload and for the same reason. It\n     also contains a data length because the data length in the key may be\n     changed on another CPU whilst an RCU protected read is in progress on the\n     payload. This would then see the supposed RCU payload and the on-key data\n     length getting out of sync.\n\n     I\u0027m tempted to drop the key\u0027s datalen entirely, except that it\u0027s used in\n     conjunction with quota management and so is a little tricky to get rid\n     of.\n\n (6) Update the keys documentation.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "16822e62053e73fa7def9decc38a7e287d27d980",
      "tree": "fc736377c5c7e23ee78569392ed31a6030289e44",
      "parents": [
        "a39451c17f53bbae053555670c7b678d46bcebba",
        "e608a8072b10258aa18c2e33324def225199ba1d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 17:27:24 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 17:27:24 2005 -0700"
      },
      "message": "Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6\n"
    },
    {
      "commit": "e608a8072b10258aa18c2e33324def225199ba1d",
      "tree": "4b29a7e50c52a009ea7d38eb3935b57945edc88d",
      "parents": [
        "a8ad86f2dc46356f87be1327dabc18bdbda32f50"
      ],
      "author": {
        "name": "David Mosberger-Tang",
        "email": "davidm@hpl.hp.com",
        "time": "Wed Jun 22 22:24:00 2005 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Jun 23 14:52:51 2005 -0700"
      },
      "message": "[IA64] Fix pfn_to_nid() so the kernel compiles again for !CONFIG_DISCONTIGMEM.\n\nSigned-off-by: David Mosberger-Tang \u003cdavidm@hpl.hp.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "056ede6cface66b400cd3b8e60ed077cc5b85c18",
      "tree": "cb9ac506ae90158a804f8998d3e3907bc7d487ce",
      "parents": [
        "7c99c909fa69a183c1b80bd64fb9f0d11459aff3"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@osdl.org",
        "time": "Thu Jun 23 12:21:28 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 23 12:21:28 2005 -0700"
      },
      "message": "[TCP]: Report congestion control algorithm in tcp_diag.\n\nEnhancement to the tcp_diag interface used by the iproute2 ss command\nto report the tcp congestion control being used by a socket.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "317a76f9a44b437d6301718f4e5d08bd93f98da7",
      "tree": "caeba9839dee264f59b035b81c3d13d6c61b638e",
      "parents": [
        "a8ad86f2dc46356f87be1327dabc18bdbda32f50"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@osdl.org",
        "time": "Thu Jun 23 12:19:55 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 23 12:19:55 2005 -0700"
      },
      "message": "[TCP]: Add pluggable congestion control algorithm infrastructure.\n\nAllow TCP to have multiple pluggable congestion control algorithms.\nAlgorithms are defined by a set of operations and can be built in\nor modules.  The legacy \"new RENO\" algorithm is used as a starting\npoint and fallback.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4749f32da939d4e4160541b2cadc22492bb507ec",
      "tree": "a04b8d1d711f5f7c7dcc4dd43f6bfe17c54c306f",
      "parents": [
        "24665cd00dd06c741ef6268515ca9e6d3cda5c57"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Jun 23 11:36:56 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 10:04:15 2005 -0700"
      },
      "message": "[PATCH] better USB_MON dependencies\n\nThis makes the USB_MON less confusing.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "24665cd00dd06c741ef6268515ca9e6d3cda5c57",
      "tree": "d55e925db2b78bc6529965fa6b1df07a76b56610",
      "parents": [
        "fed2fc18a4567d613cd35115322257c6c6c710e9",
        "d7152fe14cad075d6dd4ee4194acd131aed0244e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:49:55 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:49:55 2005 -0700"
      },
      "message": "Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/paulus/ppc64-2.6\n"
    },
    {
      "commit": "bfb07599da289881d3bcbb601a110e997fc7444b",
      "tree": "601c5e683c87e103de37bd68f014ec1f57d09bc7",
      "parents": [
        "790a19cd5711133f40daad7c55bf148de2b1d12c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jun 23 00:10:32 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:35 2005 -0700"
      },
      "message": "[PATCH] Introduce tty_unregister_ldisc()\n\nIt\u0027s a bit strange to see tty_register_ldisc call in modules\u0027 exit\nfunctions.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c43dc2fd885b5658cfd7cedb7bcca20910c517a4",
      "tree": "98b723badf4a71c9dbf04cfd0babcb02ac577982",
      "parents": [
        "63e6880918e75dcb92d60aff218a76e063a471ef"
      ],
      "author": {
        "name": "Benjamin LaHaise",
        "email": "bcrl@kvack.org",
        "time": "Thu Jun 23 00:10:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:34 2005 -0700"
      },
      "message": "[PATCH] aio: make wait_queue -\u003etask -\u003eprivate\n\nIn the upcoming aio_down patch, it is useful to store a private data\npointer in the kiocb\u0027s wait_queue.  Since we provide our own wake up\nfunction and do not require the task_struct pointer, it makes sense to\nconvert the task pointer into a generic private pointer.\n\nSigned-off-by: Benjamin LaHaise \u003cbenjamin.c.lahaise@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9a59f452abe11f569e13ec16c51e6d61c54b9838",
      "tree": "0fc242afbf51aac7214e3a9b7620e83d0d4016f2",
      "parents": [
        "f9fd27a253d5e0b23531d12ce7ad15b6535d4486"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 23 00:10:19 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:33 2005 -0700"
      },
      "message": "[PATCH] remove \u003clinux/xattr_acl.h\u003e\n\nThis file duplicates \u003clinux/posix_acl_xattr.h\u003e, using slightly different\nnames.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f9fd27a253d5e0b23531d12ce7ad15b6535d4486",
      "tree": "1ff92c3b1ec8c707f71154313ce98e73423b6d54",
      "parents": [
        "30aaa80885df5d1518d498a450e73282cea8d8b1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 23 00:10:19 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:33 2005 -0700"
      },
      "message": "[PATCH] acl endianess annotations\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "45778ca819accab1a4a3378b3566cab0f189164f",
      "tree": "9214491346c8d2d91eb1a11cb6c2e6a9387e4290",
      "parents": [
        "280dedb8d64ccfe1166ae03d3b254fc3b65de6a5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@graphe.net",
        "time": "Thu Jun 23 00:10:17 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:33 2005 -0700"
      },
      "message": "[PATCH] Remove f_error field from struct file\n\nThe following patch removes the f_error field and all checks of f_error.\n\nTrond said:\n\n  f_error was introduced for NFS, and made sense when we were guaranteed\n  always to have a file pointer around when write errors occurred.  Since\n  then, we have (for various reasons) had to introduce the nfs_open_context in\n  order to track the file read/write state, and it made sense to move our\n  f_error tracking there too.\n\nSigned-off-by: Christoph Lameter \u003cchristoph@lameter.com\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bb93e3a52f8db7210258a1a2134cced0b78a46e1",
      "tree": "b6def4c3fe5624769de64e242bb2007fffea55c8",
      "parents": [
        "0d77e5a2c23da734f5a7925f64afa1c2ed92e0f9"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Jun 23 00:10:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:32 2005 -0700"
      },
      "message": "[PATCH] block: add unlocked_ioctl support for block devices\n\nThis patch allows block device drivers to convert their ioctl functions to\nunlocked_ioctl() like character devices and other subsystems.  All\nfunctions that were called with the BKL held before are still used that\nway, but I would not be surprised if it could be removed from the ioctl\nfunctions in drivers/block/ioctl.c themselves.\n\nAs a side note, I found that compat_blkdev_ioctl() acquires the BKL as\nwell, which looks like a bug.  I have checked that every user of\ndisk-\u003efops-\u003ecompat_ioctl() in the current git tree gets the BKL itself, so\nit could easily be removed from compat_blkdev_ioctl().\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0d77e5a2c23da734f5a7925f64afa1c2ed92e0f9",
      "tree": "1696bd7881e36381b9cdaafe713c413202727228",
      "parents": [
        "fa912bcb06d5dc9525d8912a145db2bf4b7668c5"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Thu Jun 23 00:10:14 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:32 2005 -0700"
      },
      "message": "[PATCH] compat: introduce compat_time_t\n\nThis patch is based on work by Carlos O\u0027Donell and Matthew Wilcox.  It\nintroduces/updates the compat_time_t type and uses it for compat siginfo\nstructures.  I have built this on ppc64 and x86_64.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa912bcb06d5dc9525d8912a145db2bf4b7668c5",
      "tree": "5c62d9a1ef416c83d3e149ca94c4e646eb29daf2",
      "parents": [
        "7007cab53176dc906e67b4efa62f20ff1432805a"
      ],
      "author": {
        "name": "Daniel Ritz",
        "email": "daniel.ritz@gmx.ch",
        "time": "Thu Jun 23 00:10:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:31 2005 -0700"
      },
      "message": "[PATCH] yenta TI: turn off interrupts during card power-on #2\n\n- make boot-up card recognition more reliable (ie.  redo interrogation\n  always if there is no valid \u0027card inserted\u0027 state) (and yes, i saw it\n  happening on an o2micro controller that both CB_CBARD and CB_16BITCARD\n  bits were set at the same time)\n\n- also redo interrogation before probing the ISA interrupts.  it\u0027s safer\n  to do the probing with the socket in a clean state.\n\n- make card insert detect more reliable.  yenta_get_status() now returns\n  SS_PENDING as long as the card is not completley inserted and one of the\n  voltage bits is set.  also !CB_CBARD doesn\u0027t mean CB_16BITCARD.  there is\n  CB_NOTACARD as well, so make an explicit check for CB_16BITCARD.\n\n- for TI bridges: disable IRQs during power-on.  in all-serial and tied\n  interrupt mode the interrupts are always disabled for single-slot\n  controllers.  for two-slot contollers the disabling is only done when the\n  other slot is empty.  to force disabling there is a new module parameter\n  now: pwr_irqs_off\u003dY (which is a regression for working setups.  that\u0027s\n  why it\u0027s an option, only use when required)\n\n- modparm to disable ISA interrupt probing (isa_probe, defaults to on)\n\n- remove unneeded code/cleanups (ie.  merge yenta_events() into\n  yenta_interrupts())\n\nSigned-off-by: Daniel Ritz \u003cdaniel.ritz@gmx.ch\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "46c271bedd2c8444b1d05bc44928beec0c07debc",
      "tree": "2e28cad2355b62b01815d1acc10d35a806f10ea0",
      "parents": [
        "dfb388bf8a328f206bba33933dd97230f412238b"
      ],
      "author": {
        "name": "Peter Osterlund",
        "email": "petero2@telia.com",
        "time": "Thu Jun 23 00:10:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:30 2005 -0700"
      },
      "message": "[PATCH] Improve CD/DVD packet driver write performance\n\nThis patch improves write performance for the CD/DVD packet writing driver.\n The logic for switching between reading and writing has been changed so\nthat streaming writes are no longer interrupted by read requests.\n\nSigned-off-by: Peter Osterlund \u003cpetero2@telia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "11c80c8367db0a9d342529ed74464670cd86a1f6",
      "tree": "d4625a9565866dc6565972b069c57cdedb7e0f27",
      "parents": [
        "c7ea4b31fd962b4baadb42c0b8d7c6851c584102"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Thu Jun 23 00:09:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:28 2005 -0700"
      },
      "message": "[PATCH] adjust per_cpu definition in non-SMP case\n\nFix (in the architectures I\u0027m actually building for) the UP definition of\nper_cpu so that the cpu specified may be any expression, not just an\nidentifier or a suffix expression.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ef3daeda7b58f046f94b26637d500354038d39f4",
      "tree": "acce3fb6a4ef5fa5c4e6962490d6f0db434fbad3",
      "parents": [
        "44e58a6a0bd604f46be9d808408a1cd880cc9b19"
      ],
      "author": {
        "name": "Yoav Zach",
        "email": "yoav_zach@yahoo.com",
        "time": "Thu Jun 23 00:09:58 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:28 2005 -0700"
      },
      "message": "[PATCH] Don\u0027t force O_LARGEFILE for 32 bit processes on ia64\n\nIn ia64 kernel, the O_LARGEFILE flag is forced when opening a file.  This\nis problematic for execution of 32 bit processes, which are not largefile\naware, either by SW emulation or by HW execution.\n\nFor such processes, the problem is two-fold:\n\n1) When trying to open a file that is larger than 4G\n   the operation should fail, but it\u0027s not\n2) Writing to offset larger than 4G should fail, but\n   it\u0027s not\n\nThe proposed patch takes advantage of the way 32 bit processes are\nidentified in ia64 systems.  Such processes have PER_LINUX32 for their\npersonality.  With the patch, the ia64 kernel will not enforce the\nO_LARGEFILE flag if the current process has PER_LINUX32 set.  The behavior\nfor all other architectures remains unchanged.\n\nSigned-off-by: Yoav Zach \u003cyoav.zach@intel.com\u003e\nAcked-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d6e711448137ca3301512cec41a2c2ce852b3d0a",
      "tree": "f0765ebd90fdbdf270c05fcd7f3d32b24ba56681",
      "parents": [
        "8b0914ea7475615c7c8965c1ac8fe4069270f25c"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Thu Jun 23 00:09:43 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:26 2005 -0700"
      },
      "message": "[PATCH] setuid core dump\n\nAdd a new `suid_dumpable\u0027 sysctl:\n\nThis value can be used to query and set the core dump mode for setuid\nor otherwise protected/tainted binaries. The modes are\n\n0 - (default) - traditional behaviour.  Any process which has changed\n    privilege levels or is execute only will not be dumped\n\n1 - (debug) - all processes dump core when possible.  The core dump is\n    owned by the current user and no security is applied.  This is intended\n    for system debugging situations only.  Ptrace is unchecked.\n\n2 - (suidsafe) - any binary which normally would not be dumped is dumped\n    readable by root only.  This allows the end user to remove such a dump but\n    not access it directly.  For security reasons core dumps in this mode will\n    not overwrite one another or other files.  This mode is appropriate when\n    adminstrators are attempting to debug problems in a normal environment.\n\n(akpm:\n\n\u003e \u003e +EXPORT_SYMBOL(suid_dumpable);\n\u003e\n\u003e EXPORT_SYMBOL_GPL?\n\nNo problem to me.\n\n\u003e \u003e  \tif (current-\u003eeuid \u003d\u003d current-\u003euid \u0026\u0026 current-\u003eegid \u003d\u003d current-\u003egid)\n\u003e \u003e  \t\tcurrent-\u003emm-\u003edumpable \u003d 1;\n\u003e\n\u003e Should this be SUID_DUMP_USER?\n\nActually the feedback I had from last time was that the SUID_ defines\nshould go because its clearer to follow the numbers. They can go\neverywhere (and there are lots of places where dumpable is tested/used\nas a bool in untouched code)\n\n\u003e Maybe this should be renamed to `dump_policy\u0027 or something.  Doing that\n\u003e would help us catch any code which isn\u0027t using the #defines, too.\n\nFair comment. The patch was designed to be easy to maintain for Red Hat\nrather than for merging. Changing that field would create a gigantic\ndiff because it is used all over the place.\n\n)\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ea32c65cc2d2294c04e9f81d0578a6f51febfdbf",
      "tree": "b301766bcc903f982b0ae85b5edffe9477a65408",
      "parents": [
        "89cb14c0dd0e4a7d0315d19f449389c4d49237ee"
      ],
      "author": {
        "name": "Prasanna S Panchamukhi",
        "email": "prasanna@in.ibm.com",
        "time": "Thu Jun 23 00:09:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:24 2005 -0700"
      },
      "message": "[PATCH] kprobes: Temporary disarming of reentrant probe\n\nIn situations where a kprobes handler calls a routine which has a probe on it,\nthen kprobes_handler() disarms the new probe forever.  This patch removes the\nabove limitation by temporarily disarming the new probe.  When the another\nprobe hits while handling the old probe, the kprobes_handler() saves previous\nkprobes state and handles the new probe without calling the new kprobes\nregistered handlers.  kprobe_post_handler() restores back the previous kprobes\nstate and the normal execution continues.\n\nHowever on x86_64 architecture, re-rentrancy is provided only through\npre_handler().  If a routine having probe is referenced through\npost_handler(), then the probes on that routine are disarmed forever, since\nthe exception stack is gets changed after the processor single steps the\ninstruction of the new probe.\n\nThis patch includes generic changes to support temporary disarming on\nreentrancy of probes.\n\nSigned-of-by: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1674eafcbd3e3c68556cf19fbf4a2c30f7add729",
      "tree": "d57a4698902a4bc2c2e6a08d24c42ec2a5c67706",
      "parents": [
        "a5403183d84d419651672f1aee5ff2273d185efa"
      ],
      "author": {
        "name": "Anil S Keshavamurthy",
        "email": "anil.s.keshavamurthy@intel.com",
        "time": "Thu Jun 23 00:09:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:23 2005 -0700"
      },
      "message": "[PATCH] Kprobes IA64: cmp ctype unc support\n\nThe current Kprobes when patching the original instruction with the break\ninstruction tries to retain the original qualifying predicate(qp), however\nfor cmp.crel.ctype where ctype \u003d\u003d unc, which is a special instruction\nalways needs to be executed irrespective of qp.  Hence, if the instruction\nwe are patching is of this type, then we should not copy the original qp to\nthe break instruction, this is because we always want the break fault to\nhappen so that we can emulate the instruction.\n\nThis patch is based on the feedback given by David Mosberger\n\nSigned-off-by: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8bc76772ad653bcaad1b0af72aafb6072ef0fa87",
      "tree": "d778f0cc2640e078338d84cdc67cda403cc47d7b",
      "parents": [
        "cd2675bf65455a45b54228b7acc0c6a26a164cb6"
      ],
      "author": {
        "name": "Rusty Lynch",
        "email": "rusty.lynch@intel.com",
        "time": "Thu Jun 23 00:09:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:23 2005 -0700"
      },
      "message": "[PATCH] Kprobes ia64 cleanup\n\nA cleanup of the ia64 kprobes implementation such that all of the bundle\nmanipulation logic is concentrated in arch_prepare_kprobe().\n\nWith the current design for kprobes, the arch specific code only has a\nchance to return failure inside the arch_prepare_kprobe() function.\n\nThis patch moves all of the work that was happening in arch_copy_kprobe()\nand most of the work that was happening in arch_arm_kprobe() into\narch_prepare_kprobe().  By doing this we can add further robustness checks\nin arch_arm_kprobe() and refuse to insert kprobes that will cause problems.\n\nSigned-off-by: Rusty Lynch \u003cRusty.lynch@intel.com\u003e\nSigned-off-by: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cd2675bf65455a45b54228b7acc0c6a26a164cb6",
      "tree": "102dd9bdf79ce8a5728dd098fb2b3a574c113186",
      "parents": [
        "b2761dc262b428475890fffd979687051beb12ba"
      ],
      "author": {
        "name": "Anil S Keshavamurthy",
        "email": "anil.s.keshavamurthy@intel.com",
        "time": "Thu Jun 23 00:09:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:23 2005 -0700"
      },
      "message": "[PATCH] Kprobes/IA64: support kprobe on branch/call instructions\n\nThis patch is required to support kprobe on branch/call instructions.\n\nSigned-off-by: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b2761dc262b428475890fffd979687051beb12ba",
      "tree": "088fcb3fb1a5e3fc73614dcbfcde9aa2ff7bc1ce",
      "parents": [
        "fd7b231ff98578308d8f5fb76a25a369ce1074ae"
      ],
      "author": {
        "name": "Anil S Keshavamurthy",
        "email": "anil.s.keshavamurthy@intel.com",
        "time": "Thu Jun 23 00:09:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:22 2005 -0700"
      },
      "message": "[PATCH] Kprobes/IA64: architecture specific JProbes support\n\nThis patch adds IA64 architecture specific JProbes support on top of Kprobes\n\nSigned-off-by: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Rusty Lynch \u003cRusty.lynch@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd7b231ff98578308d8f5fb76a25a369ce1074ae",
      "tree": "529490442b281ce08015376fa6247647ca232e69",
      "parents": [
        "7213b2521889eb087eed8abaa48d1a692575da3e"
      ],
      "author": {
        "name": "Anil S Keshavamurthy",
        "email": "anil.s.keshavamurthy@intel.com",
        "time": "Thu Jun 23 00:09:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:22 2005 -0700"
      },
      "message": "[PATCH] Kprobes/IA64: arch specific handling\n\nThis is an IA64 arch specific handling of Kprobes\n\nSigned-off-by: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Rusty Lynch \u003cRusty.lynch@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7213b2521889eb087eed8abaa48d1a692575da3e",
      "tree": "8a9a0b5cfaa9824de97d9dae45b20d2a7309db5b",
      "parents": [
        "0aa55e4d7db822059fe8132fe9f2b7773c48216c"
      ],
      "author": {
        "name": "Anil S Keshavamurthy",
        "email": "anil.s.keshavamurthy@intel.com",
        "time": "Thu Jun 23 00:09:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:22 2005 -0700"
      },
      "message": "[PATCH] Kprobes/IA64: kdebug die notification mechanism\n\nAs many of you know that kprobes exist in the main line kernel for various\narchitecture including i386, x86_64, ppc64 and sparc64.  Attached patches\nfollowing this mail are a port of Kprobes and Jprobes for IA64.\n\nI have tesed this patches for kprobes and Jprobes and this seems to work fine.\n I have tested this patch by inserting kprobes on various slots and various\ntemplates including various types of branch instructions.\n\nI have also tested this patch using the tool\nhttp://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d111657358022586\u0026w\u003d2 and the\nkprobes for IA64 works great.\n\nHere is list of TODO things and pathes for the same will appear soon.\n\n1) Support kprobes on \"mov r1\u003dip\" type of instruction\n2) Support Kprobes and Jprobes to exist on the same address\n3) Support Return probes\n3) Architecture independent cleanup of kprobes\n\nThis patch adds the kdebug die notification mechanism needed by Kprobes.\n\nFor break instruction on Branch type slot, imm21 is ignored and value\nzero is placed in IIM register, hence we need to handle kprobes\nfor switch case zero.\n\nSigned-off-by: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Rusty Lynch \u003cRusty.lynch@intel.com\u003e\n\nFrom: Rusty Lynch \u003crusty.lynch@intel.com\u003e\n\nAt the point in traps.c where we recieve a break with a zero value, we can\nnot say if the break was a result of a kprobe or some other debug facility.\n\nThis simple patch changes the informational string to a more correct \"break\n0\" value, and applies to the 2.6.12-rc2-mm2 tree with all the kprobes\npatches that were just recently included for the next mm cut.\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0aa55e4d7db822059fe8132fe9f2b7773c48216c",
      "tree": "84075ac377f29f393aff802f00def309a98bcf40",
      "parents": [
        "7e1048b11c5afe79aac46a42e3ccec86b8365c6d"
      ],
      "author": {
        "name": "Hien Nguyen",
        "email": "hien@us.ibm.com",
        "time": "Thu Jun 23 00:09:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:21 2005 -0700"
      },
      "message": "[PATCH] kprobes: moves lock-unlock to non-arch kprobe_flush_task\n\nThis patch moves the lock/unlock of the arch specific kprobe_flush_task()\nto the non-arch specific kprobe_flusk_task().\n\nSigned-off-by: Hien Nguyen \u003chien@us.ibm.com\u003e\nAcked-by: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7e1048b11c5afe79aac46a42e3ccec86b8365c6d",
      "tree": "4f9caee0153e688f22d7e7b6fdc62e35be4fc3fe",
      "parents": [
        "73649dab0fd524cb8545a8cb83c6eaf77b107105"
      ],
      "author": {
        "name": "Rusty Lynch",
        "email": "rusty.lynch@intel.com",
        "time": "Thu Jun 23 00:09:25 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:21 2005 -0700"
      },
      "message": "[PATCH] Move kprobe [dis]arming into arch specific code\n\nThe architecture independent code of the current kprobes implementation is\narming and disarming kprobes at registration time.  The problem is that the\ncode is assuming that arming and disarming is a just done by a simple write\nof some magic value to an address.  This is problematic for ia64 where our\ninstructions look more like structures, and we can not insert break points\nby just doing something like:\n\n*p-\u003eaddr \u003d BREAKPOINT_INSTRUCTION;\n\nThe following patch to 2.6.12-rc4-mm2 adds two new architecture dependent\nfunctions:\n\n     * void arch_arm_kprobe(struct kprobe *p)\n     * void arch_disarm_kprobe(struct kprobe *p)\n\nand then adds the new functions for each of the architectures that already\nimplement kprobes (spar64/ppc64/i386/x86_64).\n\nI thought arch_[dis]arm_kprobe was the most descriptive of what was really\nhappening, but each of the architectures already had a disarm_kprobe()\nfunction that was really a \"disarm and do some other clean-up items as\nneeded when you stumble across a recursive kprobe.\" So...  I took the\nliberty of changing the code that was calling disarm_kprobe() to call\narch_disarm_kprobe(), and then do the cleanup in the block of code dealing\nwith the recursive kprobe case.\n\nSo far this patch as been tested on i386, x86_64, and ppc64, but still\nneeds to be tested in sparc64.\n\nSigned-off-by: Rusty Lynch \u003crusty.lynch@intel.com\u003e\nSigned-off-by: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "73649dab0fd524cb8545a8cb83c6eaf77b107105",
      "tree": "70f43b37ba915de148c28008e275dacec200e33f",
      "parents": [
        "b94cce926b2b902b79380ccba370d6f9f2980de0"
      ],
      "author": {
        "name": "Rusty Lynch",
        "email": "rusty.lynch@intel.com",
        "time": "Thu Jun 23 00:09:23 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:21 2005 -0700"
      },
      "message": "[PATCH] x86_64 specific function return probes\n\nThe following patch adds the x86_64 architecture specific implementation\nfor function return probes.\n\nFunction return probes is a mechanism built on top of kprobes that allows\na caller to register a handler to be called when a given function exits.\nFor example, to instrument the return path of sys_mkdir:\n\nstatic int sys_mkdir_exit(struct kretprobe_instance *i, struct pt_regs *regs)\n{\n\tprintk(\"sys_mkdir exited\\n\");\n\treturn 0;\n}\nstatic struct kretprobe return_probe \u003d {\n\t.handler \u003d sys_mkdir_exit,\n};\n\n\u003cinside setup function\u003e\n\nreturn_probe.kp.addr \u003d (kprobe_opcode_t *) kallsyms_lookup_name(\"sys_mkdir\");\nif (register_kretprobe(\u0026return_probe)) {\n\tprintk(KERN_DEBUG \"Unable to register return probe!\\n\");\n\t/* do error path */\n}\n\n\u003cinside cleanup function\u003e\nunregister_kretprobe(\u0026return_probe);\n\nThe way this works is that:\n\n* At system initialization time, kernel/kprobes.c installs a kprobe\n  on a function called kretprobe_trampoline() that is implemented in\n  the arch/x86_64/kernel/kprobes.c  (More on this later)\n\n* When a return probe is registered using register_kretprobe(),\n  kernel/kprobes.c will install a kprobe on the first instruction of the\n  targeted function with the pre handler set to arch_prepare_kretprobe()\n  which is implemented in arch/x86_64/kernel/kprobes.c.\n\n* arch_prepare_kretprobe() will prepare a kretprobe instance that stores:\n  - nodes for hanging this instance in an empty or free list\n  - a pointer to the return probe\n  - the original return address\n  - a pointer to the stack address\n\n  With all this stowed away, arch_prepare_kretprobe() then sets the return\n  address for the targeted function to a special trampoline function called\n  kretprobe_trampoline() implemented in arch/x86_64/kernel/kprobes.c\n\n* The kprobe completes as normal, with control passing back to the target\n  function that executes as normal, and eventually returns to our trampoline\n  function.\n\n* Since a kprobe was installed on kretprobe_trampoline() during system\n  initialization, control passes back to kprobes via the architecture\n  specific function trampoline_probe_handler() which will lookup the\n  instance in an hlist maintained by kernel/kprobes.c, and then call\n  the handler function.\n\n* When trampoline_probe_handler() is done, the kprobes infrastructure\n  single steps the original instruction (in this case just a top), and\n  then calls trampoline_post_handler().  trampoline_post_handler() then\n  looks up the instance again, puts the instance back on the free list,\n  and then makes a long jump back to the original return instruction.\n\nSo to recap, to instrument the exit path of a function this implementation\nwill cause four interruptions:\n\n  - A breakpoint at the very beginning of the function allowing us to\n    switch out the return address\n  - A single step interruption to execute the original instruction that\n    we replaced with the break instruction (normal kprobe flow)\n  - A breakpoint in the trampoline function where our instrumented function\n    returned to\n  - A single step interruption to execute the original instruction that\n    we replaced with the break instruction (normal kprobe flow)\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b94cce926b2b902b79380ccba370d6f9f2980de0",
      "tree": "da2680b1ec36eae6423ba446d09284d2642ae82b",
      "parents": [
        "2fa389c5eb8c97d621653184d2adf5fdbd4a3167"
      ],
      "author": {
        "name": "Hien Nguyen",
        "email": "hien@us.ibm.com",
        "time": "Thu Jun 23 00:09:19 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:21 2005 -0700"
      },
      "message": "[PATCH] kprobes: function-return probes\n\nThis patch adds function-return probes to kprobes for the i386\narchitecture.  This enables you to establish a handler to be run when a\nfunction returns.\n\n1. API\n\nTwo new functions are added to kprobes:\n\n\tint register_kretprobe(struct kretprobe *rp);\n\tvoid unregister_kretprobe(struct kretprobe *rp);\n\n2. Registration and unregistration\n\n2.1 Register\n\n  To register a function-return probe, the user populates the following\n  fields in a kretprobe object and calls register_kretprobe() with the\n  kretprobe address as an argument:\n\n  kp.addr - the function\u0027s address\n\n  handler - this function is run after the ret instruction executes, but\n  before control returns to the return address in the caller.\n\n  maxactive - The maximum number of instances of the probed function that\n  can be active concurrently.  For example, if the function is non-\n  recursive and is called with a spinlock or mutex held, maxactive \u003d 1\n  should be enough.  If the function is non-recursive and can never\n  relinquish the CPU (e.g., via a semaphore or preemption), NR_CPUS should\n  be enough.  maxactive is used to determine how many kretprobe_instance\n  objects to allocate for this particular probed function.  If maxactive \u003c\u003d\n  0, it is set to a default value (if CONFIG_PREEMPT maxactive\u003dmax(10, 2 *\n  NR_CPUS) else maxactive\u003dNR_CPUS)\n\n  For example:\n\n    struct kretprobe rp;\n    rp.kp.addr \u003d /* entrypoint address */\n    rp.handler \u003d /*return probe handler */\n    rp.maxactive \u003d /* e.g., 1 or NR_CPUS or 0, see the above explanation */\n    register_kretprobe(\u0026rp);\n\n  The following field may also be of interest:\n\n  nmissed - Initialized to zero when the function-return probe is\n  registered, and incremented every time the probed function is entered but\n  there is no kretprobe_instance object available for establishing the\n  function-return probe (i.e., because maxactive was set too low).\n\n2.2 Unregister\n\n  To unregiter a function-return probe, the user calls\n  unregister_kretprobe() with the same kretprobe object as registered\n  previously.  If a probed function is running when the return probe is\n  unregistered, the function will return as expected, but the handler won\u0027t\n  be run.\n\n3. Limitations\n\n3.1 This patch supports only the i386 architecture, but patches for\n    x86_64 and ppc64 are anticipated soon.\n\n3.2 Return probes operates by replacing the return address in the stack\n    (or in a known register, such as the lr register for ppc).  This may\n    cause __builtin_return_address(0), when invoked from the return-probed\n    function, to return the address of the return-probes trampoline.\n\n3.3 This implementation uses the \"Multiprobes at an address\" feature in\n    2.6.12-rc3-mm3.\n\n3.4 Due to a limitation in multi-probes, you cannot currently establish\n    a return probe and a jprobe on the same function.  A patch to remove\n    this limitation is being tested.\n\nThis feature is required by SystemTap (http://sourceware.org/systemtap),\nand reflects ideas contributed by several SystemTap developers, including\nWill Cohen and Ananth Mavinakayanahalli.\n\nSigned-off-by: Hien Nguyen \u003chien@us.ibm.com\u003e\nSigned-off-by: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\nSigned-off-by: Frederik Deweerdt \u003cfrederik.deweerdt@laposte.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "84de856ed30c568c2bb7b9ac0679772bd2737d9b",
      "tree": "532e4f6bcc0db2d1baf0455484ec7f64a2a51e71",
      "parents": [
        "df164db5fd16888ddbe2a63a47b2f6dda9a428b5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 23 00:09:16 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:20 2005 -0700"
      },
      "message": "[PATCH] quota: consolidate code surrounding vfs_quota_on_mount\n\nMove some code duplicated in both callers into vfs_quota_on_mount\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ac20427ef6aa63da663bdc88b71d16f7394f5e23",
      "tree": "49ba4f88c5cea42d59b386c508174f585efc8a01",
      "parents": [
        "3bc1ee3e8f1c05c0f64a479c6d56eb34a6190599"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@redhat.com",
        "time": "Thu Jun 23 00:09:11 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:19 2005 -0700"
      },
      "message": "[PATCH] add check to /proc/devices read routines\n\nPatch to add check to get_chrdev_list and get_blkdev_list to prevent reads\nof /proc/devices from spilling over the provided page if more than 4096\nbytes of string data are generated from all the registered character and\nblock devices in a system\n\nSigned-off-by: Neil Horman \u003cnhorman@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dcd497f99a1ef29a7c5e76142965be77e9dacabd",
      "tree": "684d64753c6cd71917cf3c360023dd273be376b4",
      "parents": [
        "35a82d1a53e1a9ad54efafcc940f9335beaed5c3"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "juhl-lkml@dif.dk",
        "time": "Thu Jun 23 00:09:07 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:19 2005 -0700"
      },
      "message": "[PATCH] streamline preempt_count type across archs\n\nThe preempt_count member of struct thread_info is currently either defined\nas int, unsigned int or __s32 depending on arch.  This patch makes the type\nof preempt_count an int on all archs.\n\nHaving preempt_count be an unsigned type prevents the catching of\npreempt_count \u003c 0 bugs, and using int on some archs and __s32 on others is\nnot exactely \"neat\" - much nicer when it\u0027s just int all over.\n\nA previous version of this patch was already ACK\u0027ed by Robert Love, and the\nonly change in this version of the patch compared to the one he ACK\u0027ed is\nthat this one also makes sure the preempt_count member is consistently\ncommented.\n\nSigned-off-by: Jesper Juhl \u003cjuhl-lkml@dif.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "35a82d1a53e1a9ad54efafcc940f9335beaed5c3",
      "tree": "776d5b01970c5ce3e2c9fd4a2c4cf2168a0afa3c",
      "parents": [
        "ab4af03a4054bd78bcabfb2214c9597201beae35"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Thu Jun 23 00:09:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:18 2005 -0700"
      },
      "message": "[PATCH] optimise loop driver a bit\n\nLooks like locking can be optimised quite a lot.  Increase lock widths\nslightly so lo_lock is taken fewer times per request.  Also it was quite\ntrivial to cover lo_pending with that lock, and remove the atomic\nrequirement.  This also makes memory ordering explicitly correct, which is\nnice (not that I particularly saw any mem ordering bugs).\n\nTest was reading 4 250MB files in parallel on ext2-on-tmpfs filesystem (1K\nblock size, 4K page size).  System is 2 socket Xeon with HT (4 thread).\n\nintel:/home/npiggin# umount /dev/loop0 ; mount /dev/loop0 /mnt/loop ; /usr/bin/time ./mtloop.sh\n\nBefore:\n0.24user 5.51system 0:02.84elapsed 202%CPU (0avgtext+0avgdata 0maxresident)k\n0.19user 5.52system 0:02.88elapsed 198%CPU (0avgtext+0avgdata 0maxresident)k\n0.19user 5.57system 0:02.89elapsed 198%CPU (0avgtext+0avgdata 0maxresident)k\n0.22user 5.51system 0:02.90elapsed 197%CPU (0avgtext+0avgdata 0maxresident)k\n0.19user 5.44system 0:02.91elapsed 193%CPU (0avgtext+0avgdata 0maxresident)k\n\nAfter:\n0.07user 2.34system 0:01.68elapsed 143%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.37system 0:01.68elapsed 144%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.39system 0:01.68elapsed 145%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.36system 0:01.68elapsed 144%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.42system 0:01.68elapsed 147%CPU (0avgtext+0avgdata 0maxresident)k\n\nSigned-off-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "543537bd922692bc978e2e356fcd8bfc9c2ee7d5",
      "tree": "0089e3907e7d6c17c01cffc6ea4a8962ed053079",
      "parents": [
        "991114c6fa6a21d1fa4d544abe78592352860c82"
      ],
      "author": {
        "name": "Paulo Marques",
        "email": "pmarques@grupopie.com",
        "time": "Thu Jun 23 00:09:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:18 2005 -0700"
      },
      "message": "[PATCH] create a kstrdup library function\n\nThis patch creates a new kstrdup library function and changes the \"local\"\nimplementations in several places to use this function.\n\nMost of the changes come from the sound and net subsystems.  The sound part\nhad already been acknowledged by Takashi Iwai and the net part by David S.\nMiller.\n\nI left UML alone for now because I would need more time to read the code\ncarefully before making changes there.\n\nSigned-off-by: Paulo Marques \u003cpmarques@grupopie.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "991114c6fa6a21d1fa4d544abe78592352860c82",
      "tree": "cc81f871756a70a3312552409ee5cacd6625aa1d",
      "parents": [
        "f972be33ce6a08b5f096ba013c7459a3a82f5f39"
      ],
      "author": {
        "name": "Alexander Viro",
        "email": "aviro@redhat.com",
        "time": "Thu Jun 23 00:09:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:17 2005 -0700"
      },
      "message": "[PATCH] fix for prune_icache()/forced final iput() races\n\nBased on analysis and a patch from Russ Weight \u003crweight@us.ibm.com\u003e\n\nThere is a race condition that can occur if an inode is allocated and then\nreleased (using iput) during the -\u003efill_super functions.  The race\ncondition is between kswapd and mount.\n\nFor most filesystems this can only happen in an error path when kswapd is\nrunning concurrently.  For isofs, however, the error can occur in a more\ncommon code path (which is how the bug was found).\n\nThe logic here is \"we want final iput() to free inode *now* instead of\nletting it sit in cache if fs is going down or had not quite come up\".  The\nproblem is with kswapd seeing such inodes in the middle of being killed and\nhappily taking over.\n\nThe clean solution would be to tell kswapd to leave those inodes alone and\nlet our final iput deal with them.  I.e.  add a new flag\n(I_FORCED_FREEING), set it before write_inode_now() there and make\nprune_icache() leave those alone.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd450b7318b75343fd76b3d95416853e34e72c95",
      "tree": "e747348f7d3c9f1615963dde4f2c8baaf842415f",
      "parents": [
        "55c888d6d09a0df236adfaf8ccf06ff5d0646775"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Thu Jun 23 00:08:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:16 2005 -0700"
      },
      "message": "[PATCH] timers: introduce try_to_del_timer_sync()\n\nThis patch splits del_timer_sync() into 2 functions.  The new one,\ntry_to_del_timer_sync(), returns -1 when it hits executing timer.\n\nIt can be used in interrupt context, or when the caller hold locks which\ncan prevent completion of the timer\u0027s handler.\n\nNOTE.  Currently it can\u0027t be used in interrupt context in UP case, because\n-\u003erunning_timer is used only with CONFIG_SMP.\n\nShould the need arise, it is possible to kill #ifdef CONFIG_SMP in\nset_running_timer(), it is cheap.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "55c888d6d09a0df236adfaf8ccf06ff5d0646775",
      "tree": "deb9434abe3cf7c9b714ccb267ef5d943a847dfe",
      "parents": [
        "bdd646a44672115c986593956aa4ef105485a184"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Thu Jun 23 00:08:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:16 2005 -0700"
      },
      "message": "[PATCH] timers fixes/improvements\n\nThis patch tries to solve following problems:\n\n1. del_timer_sync() is racy. The timer can be fired again after\n   del_timer_sync have checked all cpus and before it will recheck\n   timer_pending().\n\n2. It has scalability problems. All cpus are scanned to determine\n   if the timer is running on that cpu.\n\n   With this patch del_timer_sync is O(1) and no slower than plain\n   del_timer(pending_timer), unless it has to actually wait for\n   completion of the currently running timer.\n\n   The only restriction is that the recurring timer should not use\n   add_timer_on().\n\n3. The timers are not serialized wrt to itself.\n\n   If CPU_0 does mod_timer(jiffies+1) while the timer is currently\n   running on CPU 1, it is quite possible that local interrupt on\n   CPU_0 will start that timer before it finished on CPU_1.\n\n4. The timers locking is suboptimal. __mod_timer() takes 3 locks\n   at once and still requires wmb() in del_timer/run_timers.\n\n   The new implementation takes 2 locks sequentially and does not\n   need memory barriers.\n\nCurrently -\u003ebase !\u003d NULL means that the timer is pending. In that case\n-\u003ebase.lock is used to lock the timer. __mod_timer also takes timer-\u003elock\nbecause -\u003ebase can be \u003d\u003d NULL.\n\nThis patch uses timer-\u003eentry.next !\u003d NULL as indication that the timer is\npending. So it does __list_del(), entry-\u003enext \u003d NULL instead of list_del()\nwhen the timer is deleted.\n\nThe -\u003ebase field is used for hashed locking only, it is initialized\nin init_timer() which sets -\u003ebase \u003d per_cpu(tvec_bases). When the\ntvec_bases.lock is locked, it means that all timers which are tied\nto this base via timer-\u003ebase are locked, and the base itself is locked\ntoo.\n\nSo __run_timers/migrate_timers can safely modify all timers which could\nbe found on -\u003etvX lists (pending timers).\n\nWhen the timer\u0027s base is locked, and the timer removed from -\u003eentry list\n(which means that _run_timers/migrate_timers can\u0027t see this timer), it is\npossible to set timer-\u003ebase \u003d NULL and drop the lock: the timer remains\nlocked.\n\nThis patch adds lock_timer_base() helper, which waits for -\u003ebase !\u003d NULL,\nlocks the -\u003ebase, and checks it is still the same.\n\n__mod_timer() schedules the timer on the local CPU and changes it\u0027s base.\nHowever, it does not lock both old and new bases at once. It locks the\ntimer via lock_timer_base(), deletes the timer, sets -\u003ebase \u003d NULL, and\nunlocks old base. Then __mod_timer() locks new_base, sets -\u003ebase \u003d new_base,\nand adds this timer. This simplifies the code, because AB-BA deadlock is not\npossible. __mod_timer() also ensures that the timer\u0027s base is not changed\nwhile the timer\u0027s handler is running on the old base.\n\n__run_timers(), del_timer() do not change -\u003ebase anymore, they only clear\npending flag.\n\nSo del_timer_sync() can test timer-\u003ebase-\u003erunning_timer \u003d\u003d timer to detect\nwhether it is running or not.\n\nWe don\u0027t need timer_list-\u003elock anymore, this patch kills it.\n\nWe also don\u0027t need barriers. del_timer() and __run_timers() used smp_wmb()\nbefore clearing timer\u0027s pending flag. It was needed because __mod_timer()\ndid not lock old_base if the timer is not pending, so __mod_timer()-\u003elist_add()\ncould race with del_timer()-\u003elist_del(). With this patch these functions are\nserialized through base-\u003elock.\n\nOne problem. TIMER_INITIALIZER can\u0027t use per_cpu(tvec_bases). So this patch\nadds global\n\n        struct timer_base_s {\n                spinlock_t lock;\n                struct timer_list *running_timer;\n        } __init_timer_base;\n\nwhich is used by TIMER_INITIALIZER. The corresponding fields in tvec_t_base_s\nstruct are replaced by struct timer_base_s t_base.\n\nIt is indeed ugly. But this can\u0027t have scalability problems. The global\n__init_timer_base.lock is used only when __mod_timer() is called for the first\ntime AND the timer was compile time initialized. After that the timer migrates\nto the local CPU.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Renaud Lienhart \u003crenaud.lienhart@free.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f7d37d028dfba90b1b747f8ac685bf0959aeda8b",
      "tree": "38627ec042c05f42feddff2ada95290ebe73679e",
      "parents": [
        "fa72b903f75e4f0f0b2c2feed093005167da4023"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 23 00:08:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:15 2005 -0700"
      },
      "message": "[PATCH] blk: remove BLK_TAGS_{PER_LONG|MASK}\n\nReplace BLK_TAGS_PER_LONG with BITS_PER_LONG and remove unused BLK_TAGS_MASK.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa72b903f75e4f0f0b2c2feed093005167da4023",
      "tree": "12087e87fb8d41d10013946e5b2c91e57265c29e",
      "parents": [
        "2bf0fdad51c6710bf15d0bf4b9b30b8498fe4ddd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 23 00:08:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:15 2005 -0700"
      },
      "message": "[PATCH] blk: remove blk_queue_tag-\u003ereal_max_depth optimization\n\nblk_queue_tag-\u003ereal_max_depth was used to optimize out unnecessary\nallocations/frees on tag resize.  However, the whole thing was very broken -\ntag_map was never allocated to real_max_depth resulting in access beyond the\nend of the map, bits in [max_depth..real_max_depth] were set when initializing\na map and copied when resizing resulting in pre-occupied tags.\n\nAs the gain of the optimization is very small, well, almost nill, remove the\nwhole thing.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e9129e56e9ec50c0689eb4cf7a3ca132f1e776db",
      "tree": "46ef37651b1d25afbe002e00d8c80c85df27d5fd",
      "parents": [
        "717b594a415bfaf2dbd5e8266636488f2564c689"
      ],
      "author": {
        "name": "Vincent Hanquez",
        "email": "vincent.hanquez@cl.cam.ac.uk",
        "time": "Thu Jun 23 00:08:46 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:14 2005 -0700"
      },
      "message": "[PATCH] xen: x86_64: Add macro for debugreg\n\nAdd 2 macros to set and get debugreg on x86_64.  This is useful for Xen\nbecause it will need only to redefine each macro to a hypervisor call.\n\nSigned-off-by: Vincent Hanquez \u003cvincent.hanquez@cl.cam.ac.uk\u003e\nCc: Ian Pratt \u003cm+Ian.Pratt@cl.cam.ac.uk\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa1e1bdf78d405f9905b8290ee9211e7a7bbc99b",
      "tree": "92b63c9965beb9718cfe426f2c2a81f397eb87c4",
      "parents": [
        "1cc6f12e03ebc064b74161c684f987284ce9d0cc"
      ],
      "author": {
        "name": "Vincent Hanquez",
        "email": "vincent.hanquez@cl.cam.ac.uk",
        "time": "Thu Jun 23 00:08:44 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:14 2005 -0700"
      },
      "message": "[PATCH] xen: x86: Rename usermode macro\n\nRename user_mode to user_mode_vm and add a user_mode macro similar to the\nx86-64 one.\n\nThis is useful for Xen because the linux xen kernel does not runs on the same\npriviledge that a vanilla linux kernel, and with this we just need to redefine\nuser_mode().\n\nSigned-off-by: Vincent Hanquez \u003cvincent.hanquez@cl.cam.ac.uk\u003e\nCc: Ian Pratt \u003cm+Ian.Pratt@cl.cam.ac.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f5012310e35bd62fd39fce338ee44422c975ff3c",
      "tree": "c50cb94b050947c41f285f5b40896ad0a977777b",
      "parents": [
        "701067c4661ebcdc155cc8f696acb24c016c058b"
      ],
      "author": {
        "name": "Vincent Hanquez",
        "email": "vincent.hanquez@cl.cam.ac.uk",
        "time": "Thu Jun 23 00:08:42 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:13 2005 -0700"
      },
      "message": "[PATCH] xen: x86: add macro for debugreg\n\nAdd 2 macros to set and get debugreg on x86.  This is useful for Xen because\nit will need only to redefine each macro to a hypervisor call.\n\nSigned-off-by: Vincent Hanquez \u003cvincent.hanquez@cl.cam.ac.uk\u003e\nCc: Ian Pratt \u003cm+Ian.Pratt@cl.cam.ac.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "32ecd42b6f94d3ee320a22827b46bd19ccf924e5",
      "tree": "ea74d38338f800940e630d075ca157149871f37d",
      "parents": [
        "0928d6ef7f204979749fb241a90a04a35dae133a"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Thu Jun 23 00:08:38 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:13 2005 -0700"
      },
      "message": "[PATCH] eliminate duplicate rdpmc definition\n\nEliminate duplicate definition of rdpmc in x86-64\u0027s mtrr.h.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a3a255e744dfa672e741dc24306491139d0de2d8",
      "tree": "c19348966183d3ed79f6e9593a40d95c736e0665",
      "parents": [
        "129f69465b411592247c408f93d7106939223be1"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Jun 23 00:08:34 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:11 2005 -0700"
      },
      "message": "[PATCH] x86: cpu_khz type fix\n\nx86_64\u0027s cpu_khz is unsigned int and there is no reason why x86 needs to use\nunsigned long.\n\nSo make cpu_khz unsigned int on x86 as well.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a9ed8817966dd723754a990f1003264a21b5747e",
      "tree": "8fe7560aaa06288c18a098db21591e51bbff925a",
      "parents": [
        "80bb82afea9eeb94ae3bfed418d079930da5d3b3"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jun 23 00:08:32 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:11 2005 -0700"
      },
      "message": "[PATCH] x86: #include asm/uaccess.h in asm/checksum.h\n\ncsum_and_copy_to_user is static inline and uses VERIFY_WRITE.  Patch allows\nto remove asm/uaccess.h from i386_ksyms.c without dependency surprises.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b5d23e5b8c7ecd97d32f6ad7680d9909977580a7",
      "tree": "3155d7c690af52862991f25fbfaa0d467d0c5249",
      "parents": [
        "59121003721a8fad11ee72e646fd9d3076b5679c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Thu Jun 23 00:08:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:10 2005 -0700"
      },
      "message": "[PATCH] ia64: Selectable Timer Interrupt Frequency\n\nIt allows a selectable timer interrupt frequency of 100, 250 and 1000 HZ.\nReducing the timer frequency may have important performance benefits on\nlarge systems.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "59121003721a8fad11ee72e646fd9d3076b5679c",
      "tree": "c9279c1b74cce81a9dbaf1e7fd038cd55caf26f2",
      "parents": [
        "799d19f6ec5ca2102c61122f5219a17f1c4e961a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@lameter.com",
        "time": "Thu Jun 23 00:08:25 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:10 2005 -0700"
      },
      "message": "[PATCH] i386: Selectable Frequency of the Timer Interrupt\n\nMake the timer frequency selectable. The timer interrupt may cause bus\nand memory contention in large NUMA systems since the interrupt occurs\non each processor HZ times per second.\n\nSigned-off-by: Christoph Lameter \u003cchristoph@lameter.com\u003e\nSigned-off-by: Shai Fultheim \u003cshai@scalex86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ca05fea6db5259c6d62e517c41d448a4249175f4",
      "tree": "fae2369b5a38a7b01be366129b5dc3105acfacf6",
      "parents": [
        "7c1def1652c6c1a95eafca2991baace34afaed0f"
      ],
      "author": {
        "name": "Natalie Protasevich",
        "email": "Natalie.Protasevich@unisys.com",
        "time": "Thu Jun 23 00:08:22 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:09 2005 -0700"
      },
      "message": "[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)\n\nThis patch is per Andi\u0027s request to remove NO_IOAPIC_CHECK from genapic and\nuse heuristics to prevent unique I/O APIC ID check for systems that don\u0027t\nneed it.  The patch disables unique I/O APIC ID check for Xeon-based and\nother platforms that don\u0027t use serial APIC bus for interrupt delivery.\nAndi stated that AMD systems don\u0027t need unique IO_APIC_IDs either.\n\nSigned-off-by: Natalie Protasevich \u003cNatalie.Protasevich@unisys.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1946089a109251655c5438d92c539bd2930e71ea",
      "tree": "819a492d5a7c4e6e695b150a86abeb99d5ac46eb",
      "parents": [
        "8c5a09082f4e61a176382e96a831a0636b918602"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@lameter.com",
        "time": "Thu Jun 23 00:08:19 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:09 2005 -0700"
      },
      "message": "[PATCH] NUMA aware block device control structure allocation\n\nPatch to allocate the control structures for for ide devices on the node of\nthe device itself (for NUMA systems).  The patch depends on the Slab API\nchange patch by Manfred and me (in mm) and the pcidev_to_node patch that I\nposted today.\n\nDoes some realignment too.\n\nSigned-off-by: Justin M. Forbes \u003cjmforbes@linuxtx.org\u003e\nSigned-off-by: Christoph Lameter \u003cchristoph@lameter.com\u003e\nSigned-off-by: Pravin Shelar \u003cpravin@calsoftinc.com\u003e\nSigned-off-by: Shobhit Dayal \u003cshobhit@calsoftinc.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8c5a09082f4e61a176382e96a831a0636b918602",
      "tree": "89a7086ebbec9d94dc7b7b3483d3750220ba979c",
      "parents": [
        "e164f5573bef0e6caf53519719cf0228c9c15ce3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@lameter.com",
        "time": "Thu Jun 23 00:08:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:08 2005 -0700"
      },
      "message": "[PATCH] x86/x86_64: pcibus_to_node\n\nDefine pcibus_to_node to be able to figure out which NUMA node contains a\ngiven PCI device.  This defines pcibus_to_node(bus) in\ninclude/linux/topology.h and adjusts the macros for i386 and x86_64 that\nalready provided a way to determine the cpumask of a pci device.\n\nx86_64 was changed to not build an array of cpumasks anymore.  Instead an\narray of nodes is build which can be used to generate the cpumask via\nnode_to_cpumask.\n\nSigned-off-by: Christoph Lameter \u003cchristoph@lameter.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e164f5573bef0e6caf53519719cf0228c9c15ce3",
      "tree": "beb6820d42219d34fb83b008de774cebd5e7bac8",
      "parents": [
        "4a35293667f8691b45fdb72770f087c086fb9702"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@lameter.com",
        "time": "Thu Jun 23 00:08:17 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:08 2005 -0700"
      },
      "message": "[PATCH] ppc64: pcibus_to_node fix\n\nasm-generic/topology.h must also be included if CONFIG_NUMA is set in order to\nprovide the fall back pcibus_to_node function.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4a35293667f8691b45fdb72770f087c086fb9702",
      "tree": "d128481d011dab5c030ddea816ba518446fbc4dd",
      "parents": [
        "8a9e1b0f564615bd92ba50162623e25c2904e564"
      ],
      "author": {
        "name": "Hirokazu Takata",
        "email": "takata@linux-m32r.org",
        "time": "Thu Jun 23 00:08:14 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:08 2005 -0700"
      },
      "message": "[PATCH] m32r: build fix for asm-m32r/topology.h\n\nUse asm-generic/topology.h to fix yet another pcibus_to_node() build error.\n\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8a9e1b0f564615bd92ba50162623e25c2904e564",
      "tree": "ff8fe9b280cc539e4a57826e2dee072d247d284a",
      "parents": [
        "0f8e2d62fa04441cd12c08ce521e84e5bd3f8a46"
      ],
      "author": {
        "name": "Venkatesh Pallipadi",
        "email": "venkatesh.pallipadi@intel.com",
        "time": "Thu Jun 23 00:08:13 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:08 2005 -0700"
      },
      "message": "[PATCH] Platform SMIs and their interferance with tsc based delay calibration\n\nIssue:\nCurrent tsc based delay_calibration can result in significant errors in\nloops_per_jiffy count when the platform events like SMIs\n(System Management Interrupts that are non-maskable) are present. This could\nlead to potential kernel panic(). This issue is becoming more visible with 2.6\nkernel (as default HZ is 1000) and on platforms with higher SMI handling\nlatencies. During the boot time, SMIs are mostly used by BIOS (for things\nlike legacy keyboard emulation).\n\nDescription:\nThe psuedocode for current delay calibration with tsc based delay looks like\n(0) Estimate a value for loops_per_jiffy\n(1) While (loops_per_jiffy estimate is accurate enough)\n(2)   wait for jiffy transition (jiffy1)\n(3)   Note down current tsc (tsc1)\n(4)   loop until tsc becomes tsc1 + loops_per_jiffy\n(5)   check whether jiffy changed since jiffy1 or not and refine\nloops_per_jiffy estimate\n\nConsider the following cases\nCase 1:\nIf SMIs happen between (2) and (3) above, we can end up with a\nloops_per_jiffy value that is too low. This results in shorted delays and\nkernel can panic () during boot (Mostly at IOAPIC timer initialization\ntimer_irq_works() as we don\u0027t have enough timer interrupts in a specified\ninterval).\n\nCase 2:\nIf SMIs happen between (3) and (4) above, then we can end up with a\nloops_per_jiffy value that is too high. And with current i386 code, too\nhigh lpj value (greater than 17M) can result in a overflow in\ndelay.c:__const_udelay() again resulting in shorter delay and panic().\n\nSolution:\nThe patch below makes the calibration routine aware of asynchronous events\nlike SMIs. We increase the delay calibration time and also identify any\nsignificant errors (greater than 12.5%) in the calibration and notify it to\nuser.\n\nPatch below changes both i386 and x86-64 architectures to use this\nnew and improved calibrate_delay_direct() routine.\n\nSigned-off-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bbfceef47fb9467424113a004070bf37a806a97c",
      "tree": "3c12cef85abaaa0ca42088fc7600ed687b74fb5e",
      "parents": [
        "2b97690f4cd960779fb351b7cd9974390afabb36"
      ],
      "author": {
        "name": "Matt Tolentino",
        "email": "metolent@snoqualmie.dp.intel.com",
        "time": "Thu Jun 23 00:08:07 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:07 2005 -0700"
      },
      "message": "[PATCH] add x86-64 specific support for sparsemem\n\nThis patch adds in the necessary support for sparsemem such that x86-64\nkernels may use sparsemem as an alternative to discontigmem for NUMA\nkernels.  Note that this does no preclude one from continuing to build NUMA\nkernels using discontigmem, but merely allows the option to build NUMA\nkernels with sparsemem.\n\nInterestingly, the use of sparsemem in lieu of discontigmem in NUMA kernels\nresults in reduced text size for otherwise equivalent kernels as shown in\nthe example builds below:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n2371036\t 765884\t1237108\t4374028\t 42be0c\tvmlinux.discontig\n2366549\t 776484\t1302772\t4445805\t 43d66d\tvmlinux.sparse\n\nSigned-off-by: Matt Tolentino \u003cmatthew.e.tolentino@intel.com\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2b97690f4cd960779fb351b7cd9974390afabb36",
      "tree": "26a94d00bc67f3036cea966ba7435f8e1efd3779",
      "parents": [
        "1035faf1b19efb83d5626985240f52cd149dd39b"
      ],
      "author": {
        "name": "Matt Tolentino",
        "email": "metolent@snoqualmie.dp.intel.com",
        "time": "Thu Jun 23 00:08:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:06 2005 -0700"
      },
      "message": "[PATCH] reorganize x86-64 NUMA and DISCONTIGMEM config options\n\nIn order to use the alternative sparsemem implmentation for NUMA kernels,\nwe need to reorganize the config options.  This patch effectively abstracts\nout the CONFIG_DISCONTIGMEM options to CONFIG_NUMA in most cases.  Thus,\nthe discontigmem implementation may be employed as always, but the\nsparsemem implementation may be used alternatively.\n\nSigned-off-by: Matt Tolentino \u003cmatthew.e.tolentino@intel.com\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "145e664231648121026d470094c200851a446a73",
      "tree": "c9362f4ec3e3114afb9b7134ae89152cbbc73cd4",
      "parents": [
        "74b30be2e183bd9a12d0350698996e3d1969f290"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:08:03 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:06 2005 -0700"
      },
      "message": "[PATCH] ppc64: sparsemem memory model\n\nProvide the architecture specific implementation for SPARSEMEM for PPC64\nsystems.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Mike Kravetz \u003ckravetz@us.ibm.com\u003e (in part)\nSigned-off-by: Martin Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "510f8fa7ba18320d408dd3093663e58f5664f2f0",
      "tree": "e355a1268cc9f42fac7e4b904d67e450775fb91f",
      "parents": [
        "29751f6991e845f7d002a6ae520bf996b38c8dcd"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:08:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:05 2005 -0700"
      },
      "message": "[PATCH] ppc64: add early_pfn_to_nid\n\nProvide an implementation of early_pfn_to_nid for PPC64.  This is used by\nmemory models to determine the node from which to take allocations before the\nmemory allocators are fully initialised.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Martin Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "29751f6991e845f7d002a6ae520bf996b38c8dcd",
      "tree": "f76c4c660ac4d204436f68851979343d2a9ba224",
      "parents": [
        "641c767389b19859a45e6de46d8e18cd935bdb60"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:08:00 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:05 2005 -0700"
      },
      "message": "[PATCH] sparsemem hotplug base\n\nMake sparse\u0027s initalization be accessible at runtime.  This allows sparse\nmappings to be created after boot in a hotplug situation.\n\nThis patch is separated from the previous one just to give an indication how\nmuch of the sparse infrastructure is *just* for hotplug memory.\n\nThe section_mem_map doesn\u0027t really store a pointer.  It stores something that\nis convenient to do some math against to get a pointer.  It isn\u0027t valid to\njust do *section_mem_map, so I don\u0027t think it should be stored as a pointer.\n\nThere are a couple of things I\u0027d like to store about a section.  First of all,\nthe fact that it is !NULL does not mean that it is present.  There could be\nsuch a combination where section_mem_map *is* NULL, but the math gets you\nproperly to a real mem_map.  So, I don\u0027t think that check is safe.\n\nSince we\u0027re storing 32-bit-aligned structures, we have a few bits in the\nbottom of the pointer to play with.  Use one bit to encode whether there\u0027s\nreally a mem_map there, and the other one to tell whether there\u0027s a valid\nsection there.  We need to distinguish between the two because sometimes\nthere\u0027s a gap between when a section is discovered to be present and when we\ncan get the mem_map for it.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "641c767389b19859a45e6de46d8e18cd935bdb60",
      "tree": "b3ac95aaea213823c226b181b8a301e4ae95bd9d",
      "parents": [
        "05b79bdcb48c18cd9b580c39e3efb9a1ab078151"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:07:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:05 2005 -0700"
      },
      "message": "[PATCH] sparsemem swiss cheese numa layouts\n\nThe part of the sparsemem patch which modifies memmap_init_zone() has recently\nbecome a problem.  It changes behavior so that there is a call to\npfn_to_page() for each individual page inside of a node\u0027s range:\nnode_start_pfn through node_end_pfn.  It used to simply do this once, at the\nbeginning of the node, but having sparsemem\u0027s non-contiguous mem_map[]s inside\nof a node made it necessary to change.\n\nMike Kravetz recently wrote a patch which made the NUMA code accept some new\nkinds of layouts.  The system\u0027s memory was laid out like this, with node 0\u0027s\nmemory in two pieces: one before and one after node 1\u0027s memory:\n\n\tNode 0: +++++     +++++\n\tNode 1:      +++++\n\nPrevious behavior before Mike\u0027s patch was to assign nodes like this:\n\n\tNode 0: 00000     XXXXX\n\tNode 1:      11111\n\nWhere the \u0027X\u0027 areas were simply thrown away.  The new behavior was to make the\npg_data_t span node 0 across all of its areas, including areas that are really\nnode 1\u0027s: Node 0: 000000000000000 Node 1: 11111\n\nThis wastes a little bit of mem_map space, but ends up being OK, and more\nfully utilizes the system\u0027s memory.  memmap_init_zone() initializes all of the\n\"struct page\"s for node 0, even for the \"hole\", but those never get used,\nbecause there is no pfn_to_page() that resolves to those pages.  However, only\ncalling pfn_to_page() once, memmap_init_zone() always uses the pages that were\nallocated for node0-\u003enode_mem_map because:\n\n\tstruct page *start \u003d pfn_to_page(start_pfn);\n\t// effectively start \u003d \u0026node-\u003enode_mem_map[0]\n\tfor (page \u003d start; page \u003c (start + size); page++) {\n\t\tinit_page_here();...\n\t\tpage++;\n\t}\n\nSlow, and wasteful, but generally harmless.\n\nBut, modify that to call pfn_to_page() for each loop iteration (like sparsemem\ndoes):\n\n\tfor (pfn \u003d start_pfn; pfn \u003c \u003c (start_pfn + size); pfn++++) {\n\t\tpage \u003d pfn_to_page(pfn);\n\t}\n\nAnd you end up trying to initialize node 1\u0027s pages too early, along with bogus\ndata from node 0.  This patch checks for those weird layouts and declines to\ntouch the pages, making the more frequent pfn_to_page() calls OK to do.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "05b79bdcb48c18cd9b580c39e3efb9a1ab078151",
      "tree": "1767aaa7a4621ff4cf1a85c2078229de54272f30",
      "parents": [
        "d41dee369bff3b9dcb6328d4d822926c28cc2594"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:07:57 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:05 2005 -0700"
      },
      "message": "[PATCH] sparsemem memory model for i386\n\nProvide the architecture specific implementation for SPARSEMEM for i386 SMP\nand NUMA systems.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Martin Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d41dee369bff3b9dcb6328d4d822926c28cc2594",
      "tree": "a0405f3b7af3ebca21838a7d427bd75a067bf850",
      "parents": [
        "af705362ab6018071310c5fcd436a6b457517d5f"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:07:54 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:04 2005 -0700"
      },
      "message": "[PATCH] sparsemem memory model\n\nSparsemem abstracts the use of discontiguous mem_maps[].  This kind of\nmem_map[] is needed by discontiguous memory machines (like in the old\nCONFIG_DISCONTIGMEM case) as well as memory hotplug systems.  Sparsemem\nreplaces DISCONTIGMEM when enabled, and it is hoped that it can eventually\nbecome a complete replacement.\n\nA significant advantage over DISCONTIGMEM is that it\u0027s completely separated\nfrom CONFIG_NUMA.  When producing this patch, it became apparent in that NUMA\nand DISCONTIG are often confused.\n\nAnother advantage is that sparse doesn\u0027t require each NUMA node\u0027s ranges to be\ncontiguous.  It can handle overlapping ranges between nodes with no problems,\nwhere DISCONTIGMEM currently throws away that memory.\n\nSparsemem uses an array to provide different pfn_to_page() translations for\neach SECTION_SIZE area of physical memory.  This is what allows the mem_map[]\nto be chopped up.\n\nIn order to do quick pfn_to_page() operations, the section number of the page\nis encoded in page-\u003eflags.  Part of the sparsemem infrastructure enables\nsharing of these bits more dynamically (at compile-time) between the\npage_zone() and sparsemem operations.  However, on 32-bit architectures, the\nnumber of bits is quite limited, and may require growing the size of the\npage-\u003eflags type in certain conditions.  Several things might force this to\noccur: a decrease in the SECTION_SIZE (if you want to hotplug smaller areas of\nmemory), an increase in the physical address space, or an increase in the\nnumber of used page-\u003eflags.\n\nOne thing to note is that, once sparsemem is present, the NUMA node\ninformation no longer needs to be stored in the page-\u003eflags.  It might provide\nspeed increases on certain platforms and will be stored there if there is\nroom.  But, if out of room, an alternate (theoretically slower) mechanism is\nused.\n\nThis patch introduces CONFIG_FLATMEM.  It is used in almost all cases where\nthere used to be an #ifndef DISCONTIG, because SPARSEMEM and DISCONTIGMEM\noften have to compile out the same areas of code.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Martin Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b159d43fbf7eaaac6ecc647f51cf4257332db47b",
      "tree": "968d856c1bd80b47c76d27da272d95bcaf97aa78",
      "parents": [
        "368a0a3afad08069b2679ecaff80fc18c10a6e2a"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:07:52 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:04 2005 -0700"
      },
      "message": "[PATCH] generify early_pfn_to_nid\n\nProvide a default implementation for early_pfn_to_nid returning node 0.  Allow\narchitectures to override this with their own implementation out of\nasm/mmzone.h.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Martin Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "93b7504e3e6c1d98586854806e51bea329ea3aa9",
      "tree": "7b0d6f3a6214960daf3136f8c418178405521c07",
      "parents": [
        "0e19243e9a19ef8e5994852671bd06bb51630811"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Thu Jun 23 00:07:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:03 2005 -0700"
      },
      "message": "[PATCH] Introduce new Kconfig option for NUMA or DISCONTIG\n\nThere is some confusion that arose when working on SPARSEMEM patch between\nwhat is needed for DISCONTIG vs. NUMA.\n\nMultiple pg_data_t\u0027s are needed for DISCONTIGMEM or NUMA, independently.\nAll of the current NUMA implementations require an implementation of\nDISCONTIG.  Because of this, quite a lot of code which is really needed for\nNUMA is actually under DISCONTIG #ifdefs.  For SPARSEMEM, we changed some\nof these #ifdefs to CONFIG_NUMA, but that broke the DISCONTIG\u003dy and NUMA\u003dn\ncase.\n\nIntroducing this new NEED_MULTIPLE_NODES config option allows code that is\nneeded for both NUMA or DISCONTIG to be separated out from code that is\nspecific to DISCONTIG.\n\nOne great advantage of this approach is that it doesn\u0027t require every\narchitecture to be converted over.  All of the current implementations\nshould \"just work\", only the ones implementing SPARSEMEM will have to be\nfixed up.\n\nThe change to free_area_init() makes it work inside, or out of the new\nconfig option.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5b505b90b2d54e526cc8d123bdef3b98c9f0bbc6",
      "tree": "c56ce2547e654eb0a2166171ba8ca19eaa8cd65f",
      "parents": [
        "348f8b6c4837a07304d2f72b11ce8d96588065e0"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Thu Jun 23 00:07:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:01 2005 -0700"
      },
      "message": "[PATCH] sparsemem base: teach discontig about sparse ranges\n\ndiscontig.c has some assumptions that mem_map[]s inside of a node are\ncontiguous.  Teach it to make sure that each region that it\u0027s bringing online\nis actually made up of valid ranges of ram.\n\nWritten-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "348f8b6c4837a07304d2f72b11ce8d96588065e0",
      "tree": "f4c6c332b2c327630b284598325dff2f44e6c9cf",
      "parents": [
        "6f167ec721108c9282d54424516a12c805e3c306"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Thu Jun 23 00:07:40 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:01 2005 -0700"
      },
      "message": "[PATCH] sparsemem base: reorganize page-\u003eflags bit operations\n\nGenerify the value fields in the page_flags.  The aim is to allow the location\nand size of these fields to be varied.  Additionally we want to move away from\nfixed allocations per field whilst still enforcing the overall bit utilisation\nlimits.  We rely on the compiler to spot and optimise the accessor functions.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6f167ec721108c9282d54424516a12c805e3c306",
      "tree": "f7094a2524611ede76b32e4cc3c07987b7b0e275",
      "parents": [
        "c2ebaa425e6630adcbf757b004d257dd4204925b"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Thu Jun 23 00:07:39 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:01 2005 -0700"
      },
      "message": "[PATCH] sparsemem base: simple NUMA remap space allocator\n\nIntroduce a simple allocator for the NUMA remap space.  This space is very\nscarce, used for structures which are best allocated node local.\n\nThis mechanism is also used on non-NUMA ia64 systems with a vmem_map to keep\nthe pgdat-\u003enode_mem_map initialized in a consistent place for all\narchitectures.\n\nIssues:\no alloc_remap takes a node_id where we might expect a pgdat which was intended\n  to allow us to allocate the pgdat\u0027s using this mechanism; which we do not yet\n  do.  Could have alloc_remap_node() and alloc_remap_nid() for this purpose.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "408fde81c1bff15c875a3618481e93a01dcc79ea",
      "tree": "89b173c5cccd69a17aa64bff8916c54bdcb2d6fe",
      "parents": [
        "29c31a3bf257e0723423f1f0f9afd1b840434c75"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Thu Jun 23 00:07:37 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:00 2005 -0700"
      },
      "message": "[PATCH] remove non-DISCONTIG use of pgdat-\u003enode_mem_map\n\nThis patch effectively eliminates direct use of pgdat-\u003enode_mem_map outside\nof the DISCONTIG code.  On a flat memory system, these fields aren\u0027t\ncurrently used, neither are they on a sparsemem system.\n\nThere was also a node_mem_map(nid) macro on many architectures.  Its use\nalong with the use of -\u003enode_mem_map itself was not consistent.  It has\nbeen removed in favor of two new, more explicit, arch-independent macros:\n\n\tpgdat_page_nr(pgdat, pagenr)\n\tnid_page_nr(nid, pagenr)\n\nI called them \"pgdat\" and \"nid\" because we overload the term \"node\" to mean\n\"NUMA node\", \"DISCONTIG node\" or \"pg_data_t\" in very confusing ways.  I\nbelieve the newer names are much clearer.\n\nThese macros can be overridden in the sparsemem case with a theoretically\nslower operation using node_start_pfn and pfn_to_page(), instead.  We could\nmake this the only behavior if people want, but I don\u0027t want to change too\nmuch at once.  One thing at a time.\n\nThis patch removes more code than it adds.\n\nCompile tested on alpha, alpha discontig, arm, arm-discontig, i386, i386\ngeneric, NUMAQ, Summit, ppc64, ppc64 discontig, and x86_64.  Full list\nhere: http://sr71.net/patches/2.6.12/2.6.12-rc1-mhp2/configs/\n\nBoot tested on NUMAQ, x86 SMP and ppc64 power4/5 LPARs.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Martin J. Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dad32bbf43b496bcd32a83f73a1e7fd0a02cfd3e",
      "tree": "4be484d37e792c95815c74dda3b6d4968a979cfe",
      "parents": [
        "8f586b2243198194240626fd9695da5564ffa7ee"
      ],
      "author": {
        "name": "John Rose",
        "email": "johnrose@austin.ibm.com",
        "time": "Thu Jun 23 17:09:54 2005 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Jun 23 17:09:54 2005 +1000"
      },
      "message": "[PATCH] pSeries - read irqs dynamically\n\nFor I/O DLPAR to work properly, the kernel needs to allow for dynamic\nassignment of the irq field of the pci_dev structure upon dynamic bus\naddition.  This patch moves the assignment of that field from\npSeries_final_fixup() to pcibios_fixup_bus(), which enables dynamic\nassignment for the children of a newly added bus.\n\nCurrently, pci_devs receive their irq numbers in one of two ways.  The\nirq line is either read at boot for all pci_devs, or read by the rpaphp\nmodule at slot enable time.  The latter is no longer sufficient for\nDLPAR addition of slots that don\u0027t qualify as PCI-hotplug capable.\nThis solution handles the cases of boot and dynamic add.\n\nSigned-off-by: John Rose \u003cjohnrose@austin.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "060de20e82195d404f7dc6a914685730376fdc80",
      "tree": "f7b8499beaae104016b46e7583b2dbc1d6d7f901",
      "parents": [
        "b7c84c6ada2be942eca6722edb2cfaad412cd5de",
        "2c4ee8f907fc4a3c69273a958f853bf4b358eb49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Wed Jun 22 23:11:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Wed Jun 22 23:11:50 2005 -0700"
      },
      "message": "Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "ebc3f64b864fc16a594c2e63bf55a55c7d42084b",
      "tree": "95040f32ad5902051527b91966118e565d48865b",
      "parents": [
        "cb65d506c34c86df5bcef939ce5a8666a451bd8b"
      ],
      "author": {
        "name": "Shaun Pereira",
        "email": "spereira@tusc.com.au",
        "time": "Wed Jun 22 22:16:17 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 22 22:16:17 2005 -0700"
      },
      "message": "[X25]: Fast select with no restriction on response\n\nThis patch is a follow up to patch 1 regarding \"Selective Sub Address\nmatching with call user data\".  It allows use of the Fast-Select-Acceptance\noptional user facility for X.25.\n\nThis patch just implements fast select with no restriction on response\n(NRR).  What this means (according to ITU-T Recomendation 10/96 section\n6.16) is that if in an incoming call packet, the relevant facility bits are\nset for fast-select-NRR, then the called DTE can issue a direct response to\nthe incoming packet using a call-accepted packet that contains\ncall-user-data.  This patch allows such a response.  \n\nThe called DTE can also respond with a clear-request packet that contains\ncall-user-data.  However, this feature is currently not implemented by the\npatch.\n\nHow is Fast Select Acceptance used?\nBy default, the system does not allow fast select acceptance (as before).\nTo enable a response to fast select acceptance,  \nAfter a listen socket in created and bound as follows\n\tsocket(AF_X25, SOCK_SEQPACKET, 0);\n\tbind(call_soc, (struct sockaddr *)\u0026locl_addr, sizeof(locl_addr));\nbut before a listen system call is made, the following ioctl should be used.\n\tioctl(call_soc,SIOCX25CALLACCPTAPPRV);\nNow the listen system call can be made\n\tlisten(call_soc, 4);\nAfter this, an incoming-call packet will be accepted, but no call-accepted \npacket will be sent back until the following system call is made on the socket\nthat accepts the call\n\tioctl(vc_soc,SIOCX25SENDCALLACCPT);\nThe network (or cisco xot router used for testing here) will allow the \napplication server\u0027s call-user-data in the call-accepted packet, \nprovided the call-request was made with Fast-select NRR.\n\nSigned-off-by: Shaun Pereira \u003cspereira@tusc.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cb65d506c34c86df5bcef939ce5a8666a451bd8b",
      "tree": "4cf281ba2e90c9c20d28a80d1efc8292aaba699a",
      "parents": [
        "68d318720052154bc6b2513b0f15d0d947cc53c9"
      ],
      "author": {
        "name": "Shaun Pereira",
        "email": "spereira@tusc.com.au",
        "time": "Wed Jun 22 22:15:01 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 22 22:15:01 2005 -0700"
      },
      "message": "[X25]: Selective sub-address matching with call user data.\n\nFrom: Shaun Pereira \u003cspereira@tusc.com.au\u003e\n\nThis is the first (independent of the second) patch of two that I am\nworking on with x25 on linux (tested with xot on a cisco router).  Details\nare as follows.\n\nCurrent state of module:\n\nA server using the current implementation (2.6.11.7) of the x25 module will\naccept a call request/ incoming call packet at the listening x.25 address,\nfrom all callers to that address, as long as NO call user data is present\nin the packet header.\n\nIf the server needs to choose to accept a particular call request/ incoming\ncall packet arriving at its listening x25 address, then the kernel has to\nallow a match of call user data present in the call request packet with its\nown.  This is required when multiple servers listen at the same x25 address\nand device interface.  The kernel currently matches ALL call user data, if\npresent.\n\nCurrent Changes:\n\nThis patch is a follow up to the patch submitted previously by Andrew\nHendry, and allows the user to selectively control the number of octets of\ncall user data in the call request packet, that the kernel will match.  By\ndefault no call user data is matched, even if call user data is present. \nTo allow call user data matching, a cudmatchlength \u003e 0 has to be passed\ninto the kernel after which the passed number of octets will be matched. \nOtherwise the kernel behavior is exactly as the original implementation.\n\nThis patch also ensures that as is normally the case, no call user data\nwill be present in the Call accepted / call connected packet sent back to\nthe caller \n\nFuture Changes on next patch:\n\nThere are cases however when call user data may be present in the call\naccepted packet.  According to the X.25 recommendation (ITU-T 10/96)\nsection 5.2.3.2 call user data may be present in the call accepted packet\nprovided the fast select facility is used.  My next patch will include this\nfast select utility and the ability to send up to 128 octets call user data\nin the call accepted packet provided the fast select facility is used.  I\nam currently testing this, again with xot on linux and cisco.  \n\nSigned-off-by: Shaun Pereira \u003cspereira@tusc.com.au\u003e\n\n(With a fix from Alexey Dobriyan \u003cadobriyan@gmail.com\u003e)\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fbeec2e1552949002065435c9829dc244ad85407",
      "tree": "d97dc663bbef4bf59a1858b23a327f14043c33d1",
      "parents": [
        "115c1d6e61b70851d9a363328c3b8d4c2559a1d3"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed Jun 22 22:05:59 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 22 22:05:59 2005 -0700"
      },
      "message": "[NETPOLL]: allow multiple netpoll_clients to register against one interface\n\nThis patch provides support for registering multiple netpoll clients to the\nsame network device.  Only one of these clients may register an rx_hook,\nhowever.  In practice, this restriction has not been problematic.  It is\nworth mentioning, though, that the current design can be easily extended to\nallow for the registration of multiple rx_hooks.\n\nThe basic idea of the patch is that the rx_np pointer in the netpoll_info\nstructure points to the struct netpoll that has rx_hook filled in.  Aside\nfrom this one case, there is no need for a pointer from the struct\nnet_device to an individual struct netpoll.\n\nA lock is introduced to protect the setting and clearing of the np_rx\npointer.  The pointer will only be cleared upon netpoll client module\nremoval, and the lock should be uncontested.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "115c1d6e61b70851d9a363328c3b8d4c2559a1d3",
      "tree": "3bc37b036fd3ef72d188ff73da94472b40c05a44",
      "parents": [
        "6ca4f65e6b390d09e1de7280cf9fd4f5d8e4b48b"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed Jun 22 22:05:31 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 22 22:05:31 2005 -0700"
      },
      "message": "[NETPOLL]: Introduce a netpoll_info struct\n\nThis patch introduces a netpoll_info structure, which the struct net_device\nwill now point to instead of pointing to a struct netpoll.  The reason for\nthis is two-fold: 1) fields such as the rx_flags, poll_owner, and poll_lock\nshould be maintained per net_device, not per netpoll;  and 2) this is a first\nstep in providing support for multiple netpoll clients to register against the\nsame net_device.\n\nThe struct netpoll is now pointed to by the netpoll_info structure.  As\nsuch, the previous behaviour of the code is preserved.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ca4f65e6b390d09e1de7280cf9fd4f5d8e4b48b",
      "tree": "1ca8b0d0126c5ce1cd7ffc0fe0ccd80235f3307b",
      "parents": [
        "f31f5f051269746179b01017fc5e3dcf6b37c67e"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed Jun 22 22:04:55 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 22 22:04:55 2005 -0700"
      },
      "message": "[NETPOLL]: Set poll_owner to -1 before unlocking in netpoll_poll_unlock()\n\nThis trivial patch moves the assignment of poll_owner to -1 inside of\nthe lock.  This fixes a potential SMP race in the code.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fef1c772fa154c16e0a54577e9ecb5480f7b937e",
      "tree": "7c1483966f984c822b58f761b9be873dce94999c",
      "parents": [
        "031f7edecf46d731673a5dd19ecb0de38f1a2219"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Jun 23 09:43:37 2005 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Jun 23 09:43:37 2005 +1000"
      },
      "message": "[PATCH] ppc64: add BPA platform type\n\nThis adds the basic support for running on BPA machines.\nSo far, this is only the IBM workstation, and it will\nnot run on others without a little more generalization.\n\nIt should be possible to configure a kernel for any\ncombination of CONFIG_PPC_BPA with any of the other\nmultiplatform targets.\n\nSigned-off-by: Arnd Bergmann \u003carndb@de.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "5f5b4e669a59be1cf8fc9d6d04ff1ccad8ab6de0",
      "tree": "a0737b3295891def01228d11fec8e9cbb7b765b9",
      "parents": [
        "6566c6f1f18d42affe73ccdd403e290b64d10473"
      ],
      "author": {
        "name": "Utz Bacher",
        "email": "utz.bacher@de.ibm.com",
        "time": "Thu Jun 23 09:43:31 2005 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Jun 23 09:43:31 2005 +1000"
      },
      "message": "[PATCH] ppc64: add a minimal nvram driver\n\nThe firmware provides the location and size of the nvram\nin the device tree, so it does not really contain any\nhardware specific bits and could be used on other\nmachines as well.\n \nSigned-off-by: Arnd Bergmann \u003carndb@de.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "6566c6f1f18d42affe73ccdd403e290b64d10473",
      "tree": "9c9cdea21d05e52a60044abf339e9750c6760f0a",
      "parents": [
        "c5a3c2e52af1bcb118022ffac9a0fd1d42d43bd3"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Jun 23 09:43:28 2005 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Jun 23 09:43:28 2005 +1000"
      },
      "message": "[PATCH] ppc64: pSeries_progress -\u003e rtas_progress\n\nThe pSeries_progress function is called from some places in the rtas code,\nwhich may also be used by non-pSeries platforms.\nThough pSeries is currently the only platform type that implements\ndisplay-character, the code is actually generic enough to be part of\nthe rtas subsystem.\n\nI hit a bug here because the generic rtas code tried calling ppc_md.progress,\nwhich points to an __init function on most platforms.\n\nWe could also clear the ppc_md.progress pointer when freeing the init memory\nto make it more explicit that ppc_md.progress must not be called after\nbootup.\n\nSigned-off-by: Arnd Bergmann \u003carndb@de.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "773bf9c469c01f01280c9bd45ec2462dd94d08a0",
      "tree": "3a7969b96d7fcbf11d3ebbb9ef10fb081a448979",
      "parents": [
        "10f7e7c15e6ce41799c5dba6925ae4bf8048c870"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Jun 23 09:43:18 2005 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Jun 23 09:43:18 2005 +1000"
      },
      "message": "[PATCH] ppc64: rename pSeries rtc functions into rtas_*\n\nThe rtc rtas functions are not pSeries specific but can\nalso be used by BPA and other SLOF based platforms\n\nSigned-off-by: Arnd Bergmann \u003carndb@de.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "10f7e7c15e6ce41799c5dba6925ae4bf8048c870",
      "tree": "505c9834749cd59bd8a075db7577c3b26a002f92",
      "parents": [
        "a4936044001694f033fe4ea94d6034d51a6b465c"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Jun 23 09:43:07 2005 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Jun 23 09:43:07 2005 +1000"
      },
      "message": "[PATCH] ppc64: consolidate calibrate_decr implementations\n\npSeries and maple have almost the same code for calibrate_decr,\nand BPA would need yet another copy. Instead, I\u0027m moving the\ncode to arch/ppc64/kernel/time.c.\n\nSome of the related declarations were missing from header\nfiles, so I\u0027m moving those as well.\n\nIt makes sense to merge this with the pmac function of the\nsame name, so we end up having just one implemetation for\niSeries and one for Open Firmware based machines.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "a4936044001694f033fe4ea94d6034d51a6b465c",
      "tree": "4f1caf9899c1859277082422b1fc37901c6097ac",
      "parents": [
        "9092131f7ea2f9e92a510ae13ac4d20165aa921c",
        "92a8cbed29eb9bf6e8eec16ca29d54015bc0e8a2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Wed Jun 22 14:51:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Wed Jun 22 14:51:06 2005 -0700"
      },
      "message": "Merge master.kernel.org:/home/rmk/linux-2.6-arm\n"
    },
    {
      "commit": "9092131f7ea2f9e92a510ae13ac4d20165aa921c",
      "tree": "4bcac80a227d320b69454057cdcef41ef43c6c85",
      "parents": [
        "f1b04770b0d073a9d70e5b3b873d274c1c19e1f6",
        "eadf4598e7ec37a234e70e965bd335860e58bda4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Wed Jun 22 14:32:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Wed Jun 22 14:32:15 2005 -0700"
      },
      "message": "Merge rsync://client.linux-nfs.org/pub/linux/nfs-2.6\n"
    },
    {
      "commit": "8d0a8a9d0ec790086c64d210af413ac351d89e35",
      "tree": "003a1481e4a8d8487956a6bf04db80dd93264b8b",
      "parents": [
        "ecdbf769b2cb8903e07cd482334c714d89fd1146"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:32 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:42 2005 -0400"
      },
      "message": "[PATCH] NFSv4: Clean up nfs4 lock state accounting\n\n Ensure that lock owner structures are not released prematurely.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ecdbf769b2cb8903e07cd482334c714d89fd1146",
      "tree": "9d02ce4daee662c2711762564662cebc521e3da3",
      "parents": [
        "4f15e2b1f4f3a56e46201714b39436c32218d547"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:31 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:42 2005 -0400"
      },
      "message": "[PATCH] NLM: fix a client-side race on blocking locks.\n\n If the lock blocks, the server may send us a GRANTED message that\n races with the reply to our LOCK request. Make sure that we catch\n the GRANTED by queueing up our request on the nlm_blocked list\n before we send off the first LOCK rpc call.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3da28eb1c6545fe73263a24eba0996217490e1eb",
      "tree": "944ccf9418c75a5c0b121f2c554c92dc93de1efa",
      "parents": [
        "c6a556b88adfacd2af90be84357c8165d716c27d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:31 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:39 2005 -0400"
      },
      "message": "[PATCH] NFS: Replace nfs_page insertion sort with a radix sort\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c6a556b88adfacd2af90be84357c8165d716c27d",
      "tree": "b63d477180052d3d1edabffb51f3fdfe4f699866",
      "parents": [
        "ab0a3dbedc51037f3d2e22ef67717a987b3d15e2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:39 2005 -0400"
      },
      "message": "[PATCH] NFS: Make searching and waiting on busy writeback requests more efficient.\n\n Basically copies the VFS\u0027s method for tracking writebacks and applies\n it to the struct nfs_page.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fe51beecc55d0b0dce289e4758e7c529a642f63e",
      "tree": "9790d77fafbb52b9237ecd65c57002e87f914e12",
      "parents": [
        "7d52e86274e09fce8ac8f963e3605a84d0a305a7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:37 2005 -0400"
      },
      "message": "[PATCH] NFS: Ensure that fstat() always returns the correct mtime\n\n Even if the file is open for writes.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7d52e86274e09fce8ac8f963e3605a84d0a305a7",
      "tree": "b9ecc05bbdff94aa344f39b53756bfddbd9db123",
      "parents": [
        "951a143b3fcf15cfa9d38250b7462f821db241db"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:37 2005 -0400"
      },
      "message": "[PATCH] NFS: Cleanup of caching code, and slight optimization of writes.\n\n Unless we\u0027re doing O_APPEND writes, we really don\u0027t care about revalidating\n the file length. Just make sure that we catch any page cache invalidations.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "951a143b3fcf15cfa9d38250b7462f821db241db",
      "tree": "6e4ea13c5f48cc3e1ac1c8649dd0f9f20c502e20",
      "parents": [
        "08e9eac42edab63bce14b5c8419771f3c92aa3f4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:36 2005 -0400"
      },
      "message": "[PATCH] NFS: Fix the file size revalidation\n\n Instead of looking at whether or not the file is open for writes before\n we accept to update the length using the server value, we should rather\n be looking at whether or not we are currently caching any writes.\n\n Failure to do so means in particular that we\u0027re not updating the file\n length correctly after obtaining a POSIX or BSD lock.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f0dd2136da6d2070e12bfa6d199b136318e666c7",
      "tree": "a261d4b4d9e29dbce104cf9515a0a209cff387cf",
      "parents": [
        "00a926422765064cb28e218d4837411c88bf6a3e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:29 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:34 2005 -0400"
      },
      "message": "[PATCH] NFS: Clean up readdir changes.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "00a926422765064cb28e218d4837411c88bf6a3e"
}
