)]}'
{
  "log": [
    {
      "commit": "57b47a53ec4a67691ba32cff5768e8d78fa6c67f",
      "tree": "d735ae4734f7b386eefa508a0629715f45808d1d",
      "parents": [
        "6613f82dd293b23f582a649b287fadbf8d23e6cf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 20 22:35:41 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 22:35:41 2006 -0800"
      },
      "message": "[NET]: sem2mutex part 2\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "64bf69ddff7637b7ed7acf9b2a823cc0ee519439",
      "tree": "fb3a746e36bcfa307979bef2a20ce5f1d32ec537",
      "parents": [
        "aaaaaadbe7a663d110814db50fcbe7d320eb4c32"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "stf_xl@wp.pl",
        "time": "Tue Nov 29 16:16:41 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:16:41 2005 -0800"
      },
      "message": "[ATM]: deregistration removes device from atm_devs list immediately\n\natm_dev_deregister() removes device from atm_dev list immediately to\nprevent operations on a phantom device.  Decision to free device based\nonly on -\u003erefcnt  now. Remove shutdown_atm_dev() use atm_dev_deregister()\ninstead.  atm_dev_deregister() also asynchronously releases all vccs\nrelated to device.\n\nSigned-off-by: Stanislaw Gruszka \u003cstf_xl@wp.pl\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aaaaaadbe7a663d110814db50fcbe7d320eb4c32",
      "tree": "316bdbd49e3a6ac7a78cad8797d148f79a343d45",
      "parents": [
        "49693280262a149e5430d3401e263e464c88334a"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "stf_xl@wp.pl",
        "time": "Tue Nov 29 16:16:21 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:16:21 2005 -0800"
      },
      "message": "[ATM]: avoid race conditions related to atm_devs list\n\nUse semaphore to protect atm_devs list, as no one need access to it from\ninterrupt context.  Avoid race conditions between atm_dev_register(),\natm_dev_lookup() and atm_dev_deregister().  Fix double spin_unlock() bug.\n\nSigned-off-by: Stanislaw Gruszka \u003cstf_xl@wp.pl\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "50accc9c428273501dd2a6295c84a533dd1fe645",
      "tree": "54a94b2c84b3a7af78887383b4c828e0a4953fe1",
      "parents": [
        "e91a73568b19b4a8145fc6e05314d522ee35a0b1"
      ],
      "author": {
        "name": "Mitchell Blank Jr",
        "email": "mitch@sfgoth.com",
        "time": "Tue Nov 29 16:15:18 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:15:18 2005 -0800"
      },
      "message": "[ATM]: attempt to autoload atm drivers\n\nFrom: Mitchell Blank Jr \u003cmitch@sfgoth.com\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c9933d0856d6d0ede6b4b30e5e7330614f5203af",
      "tree": "5f31d09df861fd83fc327a7eb5b5ac12bfc4188e",
      "parents": [
        "18955cfcb2a5d75a08e0cb297f13ccfb6904de48"
      ],
      "author": {
        "name": "Mitchell Blank Jr",
        "email": "mitch@sfgoth.com",
        "time": "Tue Nov 29 16:13:32 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:13:32 2005 -0800"
      },
      "message": "[ATM]: always return the first interface for ATM_ITF_ANY\n\nFrom: Mitchell Blank Jr \u003cmitch@sfgoth.com\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "81c3d5470ecc70564eb9209946730fe2be93ad06",
      "tree": "1efa553c305a6453769dacfaf580bc6ccf146d82",
      "parents": [
        "399de50bbbb2501a6db43daaa8a2dafbc9bcfe0c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Oct 03 14:13:38 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 03 14:13:38 2005 -0700"
      },
      "message": "[INET]: speedup inet (tcp/dccp) lookups\n\nArnaldo and I agreed it could be applied now, because I have other\npending patches depending on this one (Thank you Arnaldo)\n\n(The other important patch moves skc_refcnt in a separate cache line,\nso that the SMP/NUMA performance doesnt suffer from cache line ping pongs)\n\n1) First some performance data :\n--------------------------------\n\ntcp_v4_rcv() wastes a *lot* of time in __inet_lookup_established()\n\nThe most time critical code is :\n\nsk_for_each(sk, node, \u0026head-\u003echain) {\n     if (INET_MATCH(sk, acookie, saddr, daddr, ports, dif))\n         goto hit; /* You sunk my battleship! */\n}\n\nThe sk_for_each() does use prefetch() hints but only the begining of\n\"struct sock\" is prefetched.\n\nAs INET_MATCH first comparison uses inet_sk(__sk)-\u003edaddr, wich is far\naway from the begining of \"struct sock\", it has to bring into CPU\ncache cold cache line. Each iteration has to use at least 2 cache\nlines.\n\nThis can be problematic if some chains are very long.\n\n2) The goal\n-----------\n\nThe idea I had is to change things so that INET_MATCH() may return\nFALSE in 99% of cases only using the data already in the CPU cache,\nusing one cache line per iteration.\n\n3) Description of the patch\n---------------------------\n\nAdds a new \u0027unsigned int skc_hash\u0027 field in \u0027struct sock_common\u0027,\nfilling a 32 bits hole on 64 bits platform.\n\nstruct sock_common {\n\tunsigned short\t\tskc_family;\n\tvolatile unsigned char\tskc_state;\n\tunsigned char\t\tskc_reuse;\n\tint\t\t\tskc_bound_dev_if;\n\tstruct hlist_node\tskc_node;\n\tstruct hlist_node\tskc_bind_node;\n\tatomic_t\t\tskc_refcnt;\n+\tunsigned int\t\tskc_hash;\n\tstruct proto\t\t*skc_prot;\n};\n\nStore in this 32 bits field the full hash, not masked by (ehash_size -\n1) Using this full hash as the first comparison done in INET_MATCH\npermits us immediatly skip the element without touching a second cache\nline in case of a miss.\n\nSuppress the sk_hashent/tw_hashent fields since skc_hash (aliased to\nsk_hash and tw_hash) already contains the slot number if we mask with\n(ehash_size - 1)\n\nFile include/net/inet_hashtables.h\n\n64 bits platforms :\n#define INET_MATCH(__sk, __hash, __cookie, __saddr, __daddr, __ports, __dif)\\\n     (((__sk)-\u003esk_hash \u003d\u003d (__hash))\n     ((*((__u64 *)\u0026(inet_sk(__sk)-\u003edaddr)))\u003d\u003d (__cookie))   \u0026\u0026  \\\n     ((*((__u32 *)\u0026(inet_sk(__sk)-\u003edport))) \u003d\u003d (__ports))   \u0026\u0026  \\\n     (!((__sk)-\u003esk_bound_dev_if) || ((__sk)-\u003esk_bound_dev_if \u003d\u003d (__dif))))\n\n32bits platforms:\n#define TCP_IPV4_MATCH(__sk, __hash, __cookie, __saddr, __daddr, __ports, __dif)\\\n     (((__sk)-\u003esk_hash \u003d\u003d (__hash))                 \u0026\u0026  \\\n     (inet_sk(__sk)-\u003edaddr          \u003d\u003d (__saddr))   \u0026\u0026  \\\n     (inet_sk(__sk)-\u003ercv_saddr      \u003d\u003d (__daddr))   \u0026\u0026  \\\n     (!((__sk)-\u003esk_bound_dev_if) || ((__sk)-\u003esk_bound_dev_if \u003d\u003d (__dif))))\n\n\n- Adds a prefetch(head-\u003echain.first) in \n__inet_lookup_established()/__tcp_v4_check_established() and \n__inet6_lookup_established()/__tcp_v6_check_established() and \n__dccp_v4_check_established() to bring into cache the first element of the \nlist, before the {read|write}_lock(\u0026head-\u003elock);\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9301e320e98ff19a0e48881b038d0c24ca76e6c0",
      "tree": "b625aa1cb6dab99f343cdf85e0f32e7838a7ad93",
      "parents": [
        "e2c4b72158a9f1286df41dee478e774f1b94e93a"
      ],
      "author": {
        "name": "Chas Williams",
        "email": "chas@cmf.nrl.navy.mil",
        "time": "Wed Sep 28 16:35:01 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 28 16:35:01 2005 -0700"
      },
      "message": "[ATM]: track and close listen sockets when sigd exits\n\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\n"
    },
    {
      "commit": "e49332bd12e92da2df6d002f857ec62675ba2648",
      "tree": "f975cc5e4d93fc33e80f7213d2013e035bfc3ae7",
      "parents": [
        "a71c1ab50a2a0f4dd9834bf5a917a2f064535c6b"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "juhl-lkml@dif.dk",
        "time": "Sun May 01 08:59:08 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:08 2005 -0700"
      },
      "message": "[PATCH] misc verify_area cleanups\n\nThere were still a few comments left refering to verify_area, and two\nfunctions, verify_area_skas \u0026 verify_area_tt that just wrap corresponding\naccess_ok_skas \u0026 access_ok_tt functions, just like verify_area does for\naccess_ok - deprecate those.\n\nThere was also a few places that still used verify_area in commented-out\ncode, fix those up to use access_ok.\n\nAfter applying this one there should not be anything left but finally\nremoving verify_area completely, which will happen after a kernel release\nor two.\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": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
