)]}'
{
  "log": [
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "b4028437876866aba4747a655ede00f892089e14",
      "tree": "f6c34315c3e6d2899a894f028bd6f9899e80cd01",
      "parents": [
        "2023c610dc54a4f4130b0494309a9bd668ca3df8"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon May 11 14:16:57 2009 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Sep 15 09:50:47 2009 -0700"
      },
      "message": "Driver core: move dev_get/set_drvdata to drivers/base/dd.c\n\nNo one should directly access the driver_data field, so remove the field\nand make it private.  We dynamically create the private field now if it\nis needed, to handle drivers that call get/set before they are\nregistered with the driver core.\n\nAlso update the copyright notices on these files while we are there.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "5e928f77a09a07f9dd595bb8a489965d69a83458",
      "tree": "ef53ec90fa3214fd22e36b07c11c06b09e373d8d",
      "parents": [
        "8400146d0dc03590bba051399e4bb7e1cbf1c010"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Aug 18 23:38:32 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Aug 23 00:04:44 2009 +0200"
      },
      "message": "PM: Introduce core framework for run-time PM of I/O devices (rev. 17)\n\nIntroduce a core framework for run-time power management of I/O\ndevices.  Add device run-time PM fields to \u0027struct dev_pm_info\u0027\nand device run-time PM callbacks to \u0027struct dev_pm_ops\u0027.  Introduce\na run-time PM workqueue and define some device run-time PM helper\nfunctions at the core level.  Document all these things.\n\nSpecial thanks to Alan Stern for his help with the design and\nmultiple detailed reviews of the pereceding versions of this patch\nand to Magnus Damm for testing feedback.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\n"
    },
    {
      "commit": "59a3cd7f9da60ac4ba8ae5a4cddc48fe4a450129",
      "tree": "9e3e5ae3439c119452862aee8a7c35887a3625d1",
      "parents": [
        "56a83cc92991ed5bf76e224dd2ad53b5e9c00681"
      ],
      "author": {
        "name": "Dmitry Torokhov",
        "email": "dmitry.torokhov@gmail.com",
        "time": "Tue May 05 20:38:28 2009 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 15 21:30:24 2009 -0700"
      },
      "message": "Driver core: fix comment for device_attach()\n\nWe are looking for matching drivers, not devices.\n\nSigned-off-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "309b7d60a345f402bec3cf9caadb53de4028e2aa",
      "tree": "1e3a493c6c042155af67e062ac3f722b2cc4c6bd",
      "parents": [
        "6acf70f078ca42a63397b8b84bf6383b01303009"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Fri Apr 24 14:57:00 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 15 21:30:24 2009 -0700"
      },
      "message": "driver core: add BUS_NOTIFY_UNBOUND_DRIVER event\n\nThis patch adds a new bus notifier event which is emitted _after_ a\ndevice is removed from its driver. This event will be used by the\ndma-api debug code to check if a driver has released all dma allocations\nfor that device.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "d4d5291c8cd499b1b590336059d5cc3e24c1ced6",
      "tree": "bb4c2ea559001e066bf3355c1e4d82b36cb916d6",
      "parents": [
        "5dd559f020c98a2a4b3e063f09c0e4bc771ed838"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Tue Apr 21 13:32:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 21 19:40:00 2009 -0700"
      },
      "message": "driver synchronization: make scsi_wait_scan more advanced\n\nThere is currently only one way for userspace to say \"wait for my storage\ndevice to get ready for the modules I just loaded\": to load the\nscsi_wait_scan module. Expectations of userspace are that once this\nmodule is loaded, all the (storage) devices for which the drivers\nwere loaded before the module load are present.\n\nNow, there are some issues with the implementation, and the async\nstuff got caught in the middle of this: The existing code only\nwaits for the scsy async probing to finish, but it did not take\ninto account at all that probing might not have begun yet.\n(Russell ran into this problem on his computer and the fix works for him)\n\nThis patch fixes this more thoroughly than the previous \"fix\", which\nhad some bad side effects (namely, for kernel code that wanted to wait for\nthe scsi scan it would also do an async sync, which would deadlock if you did\nit from async context already.. there\u0027s a report about that on lkml):\nThe patch makes the module first wait for all device driver probes, and then it\nwill wait for the scsi parallel scan to finish.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nTested-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8940b4f312dced51b45004819b776ec3aa7fcd5d",
      "tree": "f994df6952a12ad5a3b46762e8a53eaa99f215b6",
      "parents": [
        "f791b8c836307b58cbf62133a6a772ed1a92fb33"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Dec 16 12:25:49 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:25 2009 -0700"
      },
      "message": "driver core: move knode_driver into private structure\n\nNothing outside of the driver core should ever touch knode_driver, so\nmove it out of the public eye.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b23530ebc339c4092ae2c9f37341a5398fea8b89",
      "tree": "c8f45452c649273271ac292715d4a76baa5e9148",
      "parents": [
        "04256b4a8fc73f54cd14f20867882c299728a446"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Sat Feb 21 16:45:07 2009 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:25 2009 -0700"
      },
      "message": "driver core: remove polling for driver_probe_done(v5)\n\nThis patch removes 100ms polling for driver_probe_done in\nwait_for_device_probe(), and uses wait_event() instead.\nRemoving polling in fs initialization may lead to\na faster boot.\n\nThis patch also changes the return type of wait_for_device_done()\nfrom int to void.\n\nThis patch is against Arjan\u0027s patch in linux-next tree.\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nAcked-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nReviewed-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "49b420a13ff95b449947181190b08367348e3e1b",
      "tree": "5feec1d1eac071e46c9aacec4255d891fa4f7ed2",
      "parents": [
        "4a67a1bc0b3a0db017b560cee27370d141c58e25"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Wed Jan 21 23:27:47 2009 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:24 2009 -0700"
      },
      "message": "driver core: check bus-\u003ematch without holding device lock\n\nThis patch moves bus-\u003ematch out from driver_probe_device and\ndoes not hold device lock to check the match between a device\nand a driver.\n\nThe idea has been verified by the commit 6cd495860901,\nwhich leads to a faster boot. But the commit 6cd495860901 has\nthe following drawbacks: 1),only does the quick check in\nthe path of __driver_attach-\u003edriver_probe_device, not in other\npaths; 2),for a matched device and driver, check the same match\ntwice. It is a waste of cpu ,especially for some drivers with long\ndevice id table (eg. usb-storage driver).\n\nThis patch adds a helper of driver_match_device to check the match\nin all paths, and testes the match only once.\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nAcked-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "216773a787c3c46ef26bf1742c1fdba37d26be45",
      "tree": "aac387553fd53cb0c06b5cc2ee86329ce793bed6",
      "parents": [
        "d2f8d7ee1a9b4650b4e43325b321801264f7c37a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sat Feb 14 01:59:06 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 21 14:17:17 2009 -0800"
      },
      "message": "Consolidate driver_probe_done() loops into one place\n\nthere\u0027s a few places that currently loop over driver_probe_done(), and\nI\u0027m about to add another one. This patch abstracts it into a helper\nto reduce duplication.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nAcked-by: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cda5e83fdea476dce9c0a9b1152cd6ca46832cc4",
      "tree": "38095e8b88c8c163cb8b61e8f071d444752fad6b",
      "parents": [
        "4db8e282f2d1dfa43d51ce2a4817901312c9134d"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 09 14:44:18 2009 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 09 14:44:18 2009 -0800"
      },
      "message": "Revert \"driver core: move knode_driver into private structure\"\n\nThis reverts commit 93e746db183b3bdbbda67900f79b5835f9cb388f.\n\nTurns out that device_initialize shouldn\u0027t fail silently.\nThis series needs to be reworked in order to get into proper\nshape.\n\nReported-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "7232800ba8aca1c070d43a81cc49991f230b5da1",
      "tree": "131859d01c113a4ca2fe116b935c4cf351413d82",
      "parents": [
        "ec0676ee28528dc8dda13a93ee4b1f215a0c2f9d"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Wed Dec 17 23:15:35 2008 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 06 10:44:33 2009 -0800"
      },
      "message": "driver core:fix duplicate removing driver link in __device_release_driver\n\nIn __device_release_driver(),driver_sysfs_remove() has removed the\ndriver link under device dir in sysfs, but sysfs_remove_link() is\ncalled again to do such thing. Remove the duplicate call to\nsys_remove_link().\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "93e746db183b3bdbbda67900f79b5835f9cb388f",
      "tree": "658cb2c8cac313b7e2cc94f914dac52996432c93",
      "parents": [
        "11c3b5c3e08f4d855cbef52883c266b9ab9df879"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Dec 16 12:25:49 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 06 10:44:32 2009 -0800"
      },
      "message": "driver core: move knode_driver into private structure\n\nNothing outside of the driver core should ever touch knode_driver, so\nmove it out of the public eye.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "1e0b2cf933ebf32494eba3f668859ba57f06a951",
      "tree": "b8d9a3b41a452fb922cd3425e67ea8278c128c70",
      "parents": [
        "210272a28465a7a31bcd580d2f9529f924965aa5"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu Oct 30 01:36:48 2008 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 06 10:44:31 2009 -0800"
      },
      "message": "driver core: struct device - replace bus_id with dev_name(), dev_set_name()\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "6cd49586090187a2a145bb6570fb2392f121aa22",
      "tree": "67373f2686b61e6a30f402190bf5ac3ec34a0f13",
      "parents": [
        "286661b3777897220ecfcd774bccc68a34667f39"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Sep 14 08:32:06 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Oct 16 09:24:50 2008 -0700"
      },
      "message": "device model: Do a quickcheck for driver binding before doing an expensive check\n\nThis patch adds a quick check for the driver\u003c-\u003edevice match before\ntaking the locks and doin gthe expensive checks. Taking the lock hurts\nin asynchronous boot context where the device lock gets hit; one of the\ninit functions takes the lock and goes to do an expensive hardware init;\nthe other init functions walk the same PCI list and get stuck on the\nlock as a result.\n\nFor the common case, we can know there\u0027s no chance whatsoever of a match\nif the device isn\u0027t in the drivers ID table... so this patch does that\ncheck as a best-effort-avoid-the-lock approach.\n\nBootcharts for before and after can be seen at\nhttp://www.fenrus.org/before.svg\nhttp://www.fenrus.org/after.svg\n\nNote the long time \"agp_ali_init\" takes in the first graph; my laptop\ndoesn\u0027t even have an ALI chip in it!  (the bootgraphs look a bit\ndissimilar, but that\u0027s the point, the first one has a bunch of arbitrary\ndelays in it that cause it to look very different)\n\nThis reduces my kernel boot time by about 20%\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "2b3a302a09735276e13421db56c20045a48eb06d",
      "tree": "77af4f2f378d92d7b61727a38501feed3365e57f",
      "parents": [
        "2424b5dd062cbe3e0578ae7b11a1b360ad22f451"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Mar 04 16:41:05 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sat Apr 19 19:10:29 2008 -0700"
      },
      "message": "driver core: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "4a3ad20ccd8f4d2a0535cf98fa83f7b561ba59a9",
      "tree": "8d0d147716466801b859a777472246ee5563f64b",
      "parents": [
        "e374a2bfebf359f846216336de91670be40499da"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 22:50:12 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 22:50:12 2008 -0800"
      },
      "message": "Driver core: coding style fixes\n\nFix up a number of coding style issues in the drivers/base/ directory\nthat have annoyed me over the years.  checkpatch.pl is now very happy.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "ef2c51746dc89c2326ce522f8fb8a57695780e75",
      "tree": "80aacaea0a3124713f4cff5b14e5c98c97dd6b9b",
      "parents": [
        "c8e90d822bff3e0502d004facedb05859f98055f"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Fri Nov 16 11:57:28 2007 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:35 2008 -0800"
      },
      "message": "Driver core: fix race in __device_release_driver\n\nThis patch (as1013) was suggested by David Woodhouse; it fixes a race\nin the driver core.  If a device is unregistered at the same time as\nits driver is unloaded, the driver\u0027s code pages may be unmapped while\nthe remove method is still running.  The calls to get_driver() and\nput_driver() were intended to prevent this, but they don\u0027t work if the\ndriver\u0027s module count has already dropped to 0.\n\nInstead, the patch keeps the device on the driver\u0027s list until after\nthe remove method has returned.  This forces the necessary\nsynchronization to occur.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7dc72b2842381684b864750af31a5fb168dec764",
      "tree": "16746ac3f9836049705e1613480debb288c0068d",
      "parents": [
        "e5dd12784617f0f1fae5f96a7fac1ec4c49fadbe"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Nov 28 23:49:41 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:35 2008 -0800"
      },
      "message": "Driver core: clean up debugging messages\n\nThe driver core debugging messages are a mess.  This provides a unified\nmessage that makes them actually useful.\n\nThe format for new kobject debug messages should be:\n\tdriver/bus/class: \u0027OBJECT_NAME\u0027: FUNCTION_NAME: message.\\n\n\nNote, the class code is not changed in this patch due to pending patches\nin my queue that this would conflict with.  A later patch will clean\nthem up.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "e5dd12784617f0f1fae5f96a7fac1ec4c49fadbe",
      "tree": "c81e2a2f3aa1c60b92951d398774f1391bdc6a1c",
      "parents": [
        "c63469a3985a9771c18a916b8d42845d044ea0b1"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Nov 28 15:59:15 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:35 2008 -0800"
      },
      "message": "Driver core: move the static kobject out of struct driver\n\nThis patch removes the kobject, and a few other driver-core-only fields\nout of struct driver and into the driver core only.  Now drivers can be\nsafely create on the stack or statically (like they currently are.)\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "c6f7e72a3f4641095ade9ded287d910c980c6148",
      "tree": "d2d7d946b978ce9f5586a02c3520aa76e928a551",
      "parents": [
        "b249072ee6897fe4f8d461c7bb4b926223263c28"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Nov 01 19:41:16 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:33 2008 -0800"
      },
      "message": "driver core: remove fields from struct bus_type\n\nstruct bus_type is static everywhere in the kernel.  This moves the\nkobject in the structure out of it, and a bunch of other private only to\nthe driver core fields are now moved to a private structure.  This lets\nus dynamically create the backing kobject properly and gives us the\nchance to be able to document to users exactly how to use the struct\nbus_type as there are no fields they can improperly access.\n\nThanks to Kay for the build fixes on this patch.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ab71c6f0767bcbc618f3db51f668d5b951c00b60",
      "tree": "4912d293452bdeb1ee158ff4c8bd545e4bc9a4ae",
      "parents": [
        "1f5681aae8feadd113644c9e077152416c12b75c"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Sun Jun 17 11:02:12 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:02 2007 -0700"
      },
      "message": "driver core: fix kernel doc of device_release_driver\n\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "1f5681aae8feadd113644c9e077152416c12b75c",
      "tree": "d813eeece4c101ce53b2bcb53078fbbe87fa4583",
      "parents": [
        "f8916c11a4dc4cb2367e9bee1788f4e0f1b4eabc"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Sun Jun 17 11:01:18 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:01 2007 -0700"
      },
      "message": "driver core: properly get driver in device_release_driver\n\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "475c5a1518477f0301fc50dc59e690032fad1fef",
      "tree": "32751f1c41436005bb2f09b4cfc88eac2f981d27",
      "parents": [
        "2c7afd125cc482dbdf6b0a169c42337e7e76cda5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Tue May 08 13:41:49 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jun 08 12:41:07 2007 -0700"
      },
      "message": "Driver core: kill unused code\n\n  CC      drivers/base/dd.o\ndrivers/base/dd.c:211: warning: \u003dE2\u003d80\u003d98device_probe_drivers\u003dE2\u003d80\u003d99 defi\u003d\nned but not used\n\nLooks like the following is dead.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n\n"
    },
    {
      "commit": "5adc55da4a7758021bcc374904b0f8b076508a11",
      "tree": "41f113f25532c3ffc1e3194114fbc68d67ce2001",
      "parents": [
        "032de8e2fe3c0eec5fb0ffe4d38aa602dad397dc"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Mar 27 03:02:51 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed May 02 19:02:38 2007 -0700"
      },
      "message": "PCI: remove the broken PCI_MULTITHREAD_PROBE option\n\nThis patch removes the PCI_MULTITHREAD_PROBE option that had already \nbeen marked as broken.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n\n"
    },
    {
      "commit": "c6a46696f97ff260a4ecce5e287f8de4b9d7fe14",
      "tree": "335de50c9868cd575f535677e430677d33cbaaa1",
      "parents": [
        "eed40d3ad2ba652c08422d62a5ff6f62ac0be16d"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Mon Feb 05 16:15:26 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 27 10:57:29 2007 -0700"
      },
      "message": "driver core: don\u0027t fail attaching the device if it cannot be bound\n\nDon\u0027t fail bus_attach_device() if the device cannot be bound.\n\nIf dev-\u003edriver has been specified, reset it to NULL if device_bind_driver()\nfailed and add the device as an unbound device.  As a result,\nbus_attach_device() now cannot fail, and we can remove some checking from\ndevice_add().\n\nAlso remove an unneeded check in bus_rescan_devices_helper().\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "21c7f30b1d3f8a3de3128478daca3ce203fc8733",
      "tree": "ff84247ba68f82906182a214273dd330c6d1970f",
      "parents": [
        "460f7e9a1bde2c74f060f7ce0a308dab4be6a56b"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Mon Feb 05 16:15:25 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 27 10:57:28 2007 -0700"
      },
      "message": "driver core: per-subsystem multithreaded probing\n\nMake multithreaded probing work per subsystem instead of per driver.\n\nIt doesn\u0027t make much sense to probe the same device for multiple drivers in\nparallel (after all, only one driver can bind to the device).  Instead, create\na probing thread for each device that probes the drivers one after another. \nAlso make the decision to use multi-threaded probe per bus instead of per\ndevice and adapt the pci code.\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "9ac7849e35f705830f7b016ff272b0ff1f7ff759",
      "tree": "7f17cdff87e154937a15cc2ec8da9b4e6018ce8e",
      "parents": [
        "77a527eadb425b60db3f5f0aae6a4c51c38e35e5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Jan 20 16:00:26 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Feb 09 17:39:36 2007 -0500"
      },
      "message": "devres: device resource management\n\nImplement device resource management, in short, devres.  A device\ndriver can allocate arbirary size of devres data which is associated\nwith a release function.  On driver detach, release function is\ninvoked on the devres data, then, devres data is freed.\n\ndevreses are typed by associated release functions.  Some devreses are\nbetter represented by single instance of the type while others need\nmultiple instances sharing the same release function.  Both usages are\nsupported.\n\ndevreses can be grouped using devres group such that a device driver\ncan easily release acquired resources halfway through initialization\nor selectively release resources (e.g. resources for port 1 out of 4\nports).\n\nThis patch adds devres core including documentation and the following\nmanaged interfaces.\n\n* alloc/free\t: devm_kzalloc(), devm_kzfree()\n* IO region\t: devm_request_region(), devm_release_region()\n* IRQ\t\t: devm_request_irq(), devm_free_irq()\n* DMA\t\t: dmam_alloc_coherent(), dmam_free_coherent(),\n\t\t  dmam_declare_coherent_memory(), dmam_pool_create(),\n\t\t  dmam_pool_destroy()\n* PCI\t\t: pcim_enable_device(), pcim_pin_device(), pci_is_managed()\n* iomap\t\t: devm_ioport_map(), devm_ioport_unmap(), devm_ioremap(),\n\t\t  devm_ioremap_nocache(), devm_iounmap(), pcim_iomap_table(),\n\t\t  pcim_iomap(), pcim_iounmap()\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cb986b749c7178422bfbc982cd30e04d5db54bbc",
      "tree": "c41118ed78a7c43868a57c045769dc90b8604b8d",
      "parents": [
        "c578abbc20762aa58e390e55252959853eeea17e"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Mon Nov 27 10:35:12 2006 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Feb 07 10:37:13 2007 -0800"
      },
      "message": "driver core: Change function call order in device_bind_driver().\n\nChange function call order in device_bind_driver().\n\nIf we create symlinks (which might fail) before adding the device to the list\nwe don\u0027t have to clean up afterwards (which we didn\u0027t).\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "c578abbc20762aa58e390e55252959853eeea17e",
      "tree": "e8870796fae1541b7c7978d85d0ac486cd9842db",
      "parents": [
        "fbfb14455391b89edcf37327526988dea7849532"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Mon Nov 27 10:35:10 2006 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Feb 07 10:37:12 2007 -0800"
      },
      "message": "driver core: Don\u0027t stop probing on -\u003eprobe errors.\n\nDon\u0027t stop on the first -\u003eprobe error that is not -ENODEV/-ENXIO.\n\nThere might be a driver registered returning an unresonable return code, and\nthis stops probing completely even though it may make sense to try the next\npossible driver. At worst, we may end up with an unbound device.\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "1901fb2604fbcd53201f38725182ea807581159e",
      "tree": "f75e83294a9b4b4ba405e7ed39e941095f8729cf",
      "parents": [
        "116af378201ef793424cd10508ccf18b06d8a021"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@novell.com",
        "time": "Sat Oct 07 21:55:55 2006 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Dec 01 14:51:58 2006 -0800"
      },
      "message": "Driver core: fix \"driver\" symlink timing\n\nCreate the \"driver\" link before the child device may be created by\nthe probing logic. This makes it possible for userspace (udev), to\ndetermine the driver property of the parent device, at the time the\nchild device is created.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@novell.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "116af378201ef793424cd10508ccf18b06d8a021",
      "tree": "2de792e7b9d8a122d88241d1ecfbe7bc92b9b8fe",
      "parents": [
        "0215ffb08ce99e2bb59eca114a99499a4d06e704"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Wed Oct 25 13:44:59 2006 +1000"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Dec 01 14:51:58 2006 -0800"
      },
      "message": "Driver core: add notification of bus events\n\nI finally did as you suggested and added the notifier to the struct\nbus_type itself. There are still problems to be expected is something\nattaches to a bus type where the code can hook in different struct\ndevice sub-classes (which is imho a big bogosity but I won\u0027t even try to\nargue that case now) but it will solve nicely a number of issues I\u0027ve\nhad so far.\n\nThat also means that clients interested in registering for such\nnotifications have to do it before devices are added and after bus types\nare registered. Fortunately, most bus types that matter for the various\nusage scenarios I have in mind are registerd at postcore_initcall time,\nwhich means I have a really nice spot at arch_initcall time to add my\nnotifiers.\n\nThere are 4 notifications provided. Device being added (before hooked to\nthe bus) and removed (failure of previous case or after being unhooked\nfrom the bus), along with driver being bound to a device and about to be\nunbound.\n\nThe usage I have for these are:\n\n - The 2 first ones are used to maintain a struct device_ext that is\nhooked to struct device.firmware_data. This structure contains for now a\npointer to the Open Firmware node related to the device (if any), the\nNUMA node ID (for quick access to it) and the DMA operations pointers \u0026\niommu table instance for DMA to/from this device. For bus types I own\n(like IBM VIO or EBUS), I just maintain that structure directly from the\nbus code when creating the devices. But for bus types managed by generic\ncode like PCI or platform (actually, of_platform which is a variation of\nplatform linked to Open Firmware device-tree), I need this notifier.\n\n - The other two ones have a completely different usage scenario. I have\ncases where multiple devices and their drivers depend on each other. For\nexample, the IBM EMAC network driver needs to attach to a MAL DMA engine\nwhich is a separate device, and a PHY interface which is also a separate\ndevice. They are all of_platform_device\u0027s (well, about to be with my\nupcoming patches) but there is no say in what precise order the core\nwill \"probe\" them and instanciate the various modules. The solution I\nfound for that is to have the drivers for emac to use multithread_probe,\nand wait for a driver to be bound to the target MAL and PHY control\ndevices (the device-tree contains reference to the MAL and PHY interface\nnodes, which I can then match to of_platform_devices). Right now, I\u0027ve\nbeen polling, but with that notifier, I can more cleanly wait (with a\ntimeout of course).\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "735a7ffb739b6efeaeb1e720306ba308eaaeb20e",
      "tree": "6156c96aeae04e1fd789f07bdd839dca7eca611a",
      "parents": [
        "61ce1efe6e40233663d27ab8ac9ba9710eebcaad"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Oct 27 11:42:37 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 27 15:34:51 2006 -0700"
      },
      "message": "[PATCH] drivers: wait for threaded probes between initcall levels\n\nThe multithreaded-probing code has a problem: after one initcall level (eg,\ncore_initcall) has been processed, we will then start processing the next\nlevel (postcore_initcall) while the kernel threads which are handling\ncore_initcall are still executing.  This breaks the guarantees which the\nlayered initcalls previously gave us.\n\nIOW, we want to be multithreaded _within_ an initcall level, but not between\ndifferent levels.\n\nFix that up by causing the probing code to wait for all outstanding probes at\none level to complete before we start processing the next level.\n\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4d664238207a82c4018757e2d87cf2a780462dcd",
      "tree": "99825365d41f5e7c52878ed8a8c3a22404ffc3db",
      "parents": [
        "d9fd4d3b317a231e47f31d64d66c8cc7765d458f"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Oct 09 18:04:30 2006 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Oct 18 12:49:56 2006 -0700"
      },
      "message": "driver core: kmalloc() failure check in driver_probe_device\n\ndriver_probe_device() is missing kmalloc() failure check.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "0fbf116d120a2dc5d808204c7d86ad35f7d7846f",
      "tree": "a9e39a6232243d80f38032b28f5fecc12a13e128",
      "parents": [
        "acbd39fbc5d8757aa920c6045399374df7a6dd68"
      ],
      "author": {
        "name": "Duncan Sands",
        "email": "duncan.sands@free.fr",
        "time": "Wed Sep 27 23:38:08 2006 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Oct 18 12:49:54 2006 -0700"
      },
      "message": "Driver core: plug device probe memory leak\n\nMake sure data is freed if the kthread fails to start.\n\nSigned-off-by: Duncan Sands \u003cbaldrick@free.fr\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f2eaae197f4590c4d96f31b09b0ee9067421a95c",
      "tree": "5ccb072851da5d1bfdae458c52b57e76eb7dd168",
      "parents": [
        "0f397f865076e3471ec884ee73ad5e34165fac2a"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Mon Sep 18 16:22:34 2006 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Sep 25 21:08:40 2006 -0700"
      },
      "message": "Driver core: Fix potential deadlock in driver core\n\nThere is a potential deadlock in the driver core.  It boils down to\nthe fact that bus_remove_device() calls klist_remove() instead of\nklist_del(), thereby waiting until the reference count of the\nklist_node in the bus\u0027s klist of devices drops to 0.  The refcount\ncan\u0027t reach 0 so long as a modprobe process is trying to bind a new\ndriver to the device being removed, by calling __driver_attach().  The\nproblem is that __driver_attach() tries to acquire the device\u0027s\nparent\u0027s semaphore, but the caller of bus_remove_device() is quite\nlikely to own that semaphore already.\n\nIt isn\u0027t sufficient just to replace klist_remove() with klist_del().\nDoing so runs the risk that the device would remain on the bus\u0027s klist\nof devices for some time, and so could be bound to another driver even\nafter it was unregistered.  What\u0027s needed is a new way to distinguish\nwhether or not a device is registered, based on a criterion other than\nwhether its klist_node is linked into the bus\u0027s klist of devices.  That\nway driver binding can fail when the device is unregistered, even if\nit is still linked into the klist.\n\nThis patch (as782) implements the solution, by adding a new bitflag to\nindiate when a struct device is registered, by testing the flag before\nallowing a driver to bind a device, and by changing the definition of\nthe device_is_registered() inline.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "d779249ed4cb3b50690de6de8448829d65a1cd08",
      "tree": "0494df3b68a28ce0b23a1577758b583409621a7d",
      "parents": [
        "f20a9ead0d005fbeeae3fc21a96f9bf197ac1c1c"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jul 18 10:59:59 2006 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Sep 25 21:08:40 2006 -0700"
      },
      "message": "Driver Core: add ability for drivers to do a threaded probe\n\nThis adds the infrastructure for drivers to do a threaded probe, and\nwaits at init time for all currently outstanding probes to complete.\n\nA new kernel thread will be created when the probe() function for the\ndriver is called, if the multithread_probe bit is set in the driver\nsaying it can support this kind of operation.\n\nI have tested this with USB and PCI, and it works, and shaves off a lot\nof time in the boot process, but there are issues with finding root boot\ndisks, and some USB drivers assume that this can never happen, so it is\ncurrently not enabled for any bus type.  Individual drivers can enable\nthis right now if they wish, and bus authors can selectivly turn it on\nas well, once they determine that their subsystem will work properly\nwith it.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f86db396ff455ed586751d21816a1ebd431264e5",
      "tree": "dfbeb27206b673ed46482b18ee6d779786be7ed1",
      "parents": [
        "370226449ced358e52d198081120826ef52c166b"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Aug 14 22:43:20 2006 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Sep 25 21:08:39 2006 -0700"
      },
      "message": "drivers/base: check errors\n\nAdd lots of return-value checking.\n\n\u003cpcornelia.huck@de.ibm.com\u003e: fix bus_rescan_devices()]\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "0f836ca4c122f4ef096110d652a6326fe34e6961",
      "tree": "5b249f2f255a7260d1a8926eb0a9e6d7e45ac524",
      "parents": [
        "4508a7a734b111b8b7e39986237d84acb1168dd0"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Fri Mar 31 11:52:25 2006 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 14 11:41:24 2006 -0700"
      },
      "message": "[PATCH] driver core: safely unbind drivers for devices not on a bus\n\nThis patch (as667) changes the __device_release_driver() routine to\nprevent it from crashing when it runs across a device not on any bus.\nThis seems logical, inasmuch as the corresponding bus_add_device()\nroutine has an explicit check allowing it to accept such devices.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "594c8281f90560faf9632d91bb9d402cbe560e63",
      "tree": "abeb32df086cfd204accad33b11040381c31689d",
      "parents": [
        "bd37e5a951ad2123d3f51f59c407b5242946b6ba"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@arm.linux.org.uk",
        "time": "Thu Jan 05 14:29:51 2006 +0000"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 13 11:26:04 2006 -0800"
      },
      "message": "[PATCH] Add bus_type probe, remove, shutdown methods.\n\nAdd bus_type probe, remove and shutdown methods to replace the\ncorresponding methods in struct device_driver.  This matches\nthe way we handle the suspend/resume methods.\n\nSince the bus methods override the device_driver methods, warn\nif a device driver is registered whose methods will not be\ncalled.\n\nThe long-term idea is to remove the device_driver methods entirely.\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "bf74ad5bc41727d5f2f1c6bedb2c1fac394de731",
      "tree": "1e46f41550a9fe6df40fedeace23f5aff656b478",
      "parents": [
        "6d20b035dee4300e9786c6e1cb77a765c7f9460a"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Thu Nov 17 16:54:12 2005 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 04 16:18:08 2006 -0800"
      },
      "message": "[PATCH] Hold the device\u0027s parent\u0027s lock during probe and remove\n\nThis patch (as604) makes the driver core hold a device\u0027s parent\u0027s lock\nas well as the device\u0027s lock during calls to the probe and remove\nmethods in a driver.  This facility is needed by USB device drivers,\nowing to the peculiar way USB devices work:\n\n\tA device provides multiple interfaces, and drivers are bound\n\tto interfaces rather than to devices;\n\n\tNevertheless a reset, reset-configuration, suspend, or resume\n\taffects the entire device and requires the caller to hold the\n\tlock for the device, not just a lock for one of the interfaces.\n\nSince a USB driver\u0027s probe method is always called with the interface\nlock held, the locking order rules (always lock parent before child)\nprevent these methods from acquiring the device lock.  The solution\nprovided here is to call all probe and remove methods, for all devices\n(not just USB), with the parent lock already acquired.\n\nAlthough currently only the USB subsystem requires these changes, people\nhave mentioned in prior discussion that the overhead of acquiring an\nextra semaphore in all the prove/remove sequences is not overly large.\n\nUp to now, the USB core has been using its own set of private\nsemaphores.  A followup patch will remove them, relying entirely on the\ndevice semaphores provided by the driver core.\n\nThe code paths affected by this patch are:\n\n\tdevice_add and device_del: The USB core already holds the parent\n\tlock, so no actual change is needed.\n\n\tdriver_register and driver_unregister: The driver core will now\n\tlock both the parent and the device before probing or removing.\n\n\tdriver_bind and driver_unbind (in sysfs): These routines will\n\tnow lock both the parent and the device before binding or\n\tunbinding.\n\n\tbus_rescan_devices: The helper routine will lock the parent\n\tbefore probing a device.\n\nI have not tested this patch for conflicts with other subsystems.  As\nfar as I can see, the only possibility of conflict would lie in the\nbus_rescan_devices pathway, and it seems pretty remote.  Nevertheless,\nit would be good for this to get a lot of testing in -mm.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "2b08c8d0468866f86da97f836c6ac14338cb81a9",
      "tree": "eca60a3b6811a825cd3642a666aa523a18fe484b",
      "parents": [
        "133747e8d1e912863edfb3869e36b97b9939d4fc"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Wed Nov 23 15:43:50 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 23 23:03:06 2005 -0800"
      },
      "message": "[PATCH] Small fixes to driver core\n\nThis patch (as603) makes a few small fixes to the driver core:\n\nChange spin_lock_irq for a klist lock to spin_lock;\n\nFix reference count leaks;\n\nMinor spelling and formatting changes.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c898c7f2f286b204fefc5dddb568f755d195d0c",
      "tree": "026fead9aef220a5fd994e2eaa269ed598651d39",
      "parents": [
        "0b50f81d5a63428f131ff20596f4e3d473e5b94f"
      ],
      "author": {
        "name": "Daniel Ritz",
        "email": "daniel.ritz@gmx.ch",
        "time": "Thu Sep 22 00:47:11 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Sep 22 07:58:24 2005 -0700"
      },
      "message": "[PATCH] Driver Core: fis bus rescan devices race\n\nbus_rescan_devices_helper() does not hold the dev-\u003esem when it checks for\n!dev-\u003edriver().  device_attach() holds the sem, but calls again\ndevice_bind_driver() even when dev-\u003edriver is set.\n\nWhat happens is that a first device_attach() call (module insertion time)\nis on the way binding the device to a driver.  Another thread calls\nbus_rescan_devices().  Now when bus_rescan_devices_helper() checks for\ndev-\u003edriver it is still NULL \u0027cos the the prior device_attach() is not yet\nfinished.  But as soon as the first one releases the dev-\u003esem the second\ndevice_attach() tries to rebind the already bound device again.\ndevice_bind_driver() does this blindly which leads to a corrupt\ndriver-\u003eklist_devices list (the device links itself, the head points to the\ndevice).  Later a call to device_release_driver() sets dev-\u003edriver to NULL\nand breaks the link it has to itself on knode_driver.  Rmmoding the driver\nlater calls driver_detach() which leads to an endless loop \u0027cos the list\nhead in klist_devices still points to the device.  And since dev-\u003edriver is\nNULL it\u0027s stuck with the same device forever.  Boom.  And rmmod hangs.\n\nVery easy to reproduce with new-style pcmcia and a 16bit card.  Just loop\nmodprobe \u003cpcmcia-modules\u003e ;cardctl eject; rmmod \u003ccard driver, pcmcia\nmodules\u003e.\n\nEasiest fix is to check if the device is already bound to a driver in\ndevice_bind_driver().  This avoids the double binding.\n\nSigned-off-by: Daniel Ritz \u003cdaniel.ritz@gmx.ch\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d856f1e337782326c638c70c0b4df2b909350dec",
      "tree": "15c070e3909cbd260b2616001f0a6dde4a0c24fa",
      "parents": [
        "fef6ec8dd96205fb22e3cfe2e4abd69d89413631"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@SteelEye.com",
        "time": "Fri Aug 19 09:14:01 2005 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Sep 05 16:03:13 2005 -0700"
      },
      "message": "[PATCH] klist: fix klist to have the same klist_add semantics as list_head\n\nat the moment, the list_head semantics are\n\nlist_add(node, head)\n\nwhereas current klist semantics are\n\nklist_add(head, node)\n\nThis is bound to cause confusion, and since klist is the newcomer, it\nshould follow the list_head semantics.\n\nI also added missing include guards to klist.h\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "afdce75f1eaebcf358b7594ba7969aade105c3b0",
      "tree": "5374a0e85e03c8706a1dd95478b9d0a3312917e0",
      "parents": [
        "151ef38f7c0ec1b0420f04438b0316e3a30bf2e4"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jun 22 16:09:05 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jun 29 22:48:04 2005 -0700"
      },
      "message": "[PATCH] driver core: Add the ability to bind drivers to devices from userspace\n\nThis adds a single file, \"bind\", to the sysfs directory of every driver\nregistered with the driver core.  To bind a device to a driver, write\nthe bus id of the device you wish to bind to that specific driver to the\n\"bind\" file (remember to not add a trailing \\n).  If that bus id matches\na device on that bus, and it does not currently have a driver bound to\nit, the probe sequence will be initiated with that driver and device.\n\nNote, this requires that the driver itself be willing and able to accept\nthat device (usually through a device id type table).  This patch does\nnot make it possible to override the driver\u0027s id table.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "ca2b94ba12f3c36fd3d6ed9d38b3798d4dad0d8b",
      "tree": "d9b85e0f423d1cd0a9ad1c72cec7464bcf50c126",
      "parents": [
        "acaefc25d21f850e47ecc5098d1e0bc442c526be"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed May 18 10:42:23 2005 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:31 2005 -0700"
      },
      "message": "[PATCH] driver core: fix error handling in bus_add_device\n\nThe error handling in bus_add_device() and device_attach() is simply\nnon-existing. This patch propagates any error from device_attach to\nthe upper layers to allow for a proper recovery.\n\nFrom: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "c95a6b057b108c2b7add35cba1354f9af921349e",
      "tree": "5a312f634b0aec295201a93020ba025d840e5f21",
      "parents": [
        "6623415687eaffef49429292ab062bb046ee3311"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Fri May 06 15:38:33 2005 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:28 2005 -0700"
      },
      "message": "[PATCH] driver core: Fix races in driver_detach()\n\nThis patch is intended for your \"driver\" tree.  It fixes several subtle\nraces in driver_detach() and device_release_driver() in the driver-model\ncore.\n\nThe major change is to use klist_remove() rather than klist_del() when\ntaking a device off its driver\u0027s list.  There\u0027s no other way to guarantee\nthat the list pointers will be updated before some other driver binds to\nthe device.  For this to work driver_detach() can\u0027t use a klist iterator,\nso the loop over the devices must be written out in full.  In addition the\npatch protects against the possibility that, when a driver and a device\nare unregistered at the same time, one may be unloaded from memory before\nthe other is finished using it.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "0d3e5a2e39b6ba2974e9e7c2a429018c45de8e76",
      "tree": "30e584b73c356adce49dcc9df75332abaef95470",
      "parents": [
        "b86c1df1f98d16c999423a3907eb40a9423f481e"
      ],
      "author": {
        "name": "Patrick Mochel",
        "email": "mochel@digitalimplant.org",
        "time": "Tue Apr 05 23:46:33 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:27 2005 -0700"
      },
      "message": "[PATCH] Driver Core: fix bk-driver-core kills ppc64\n\nThere\u0027s no check to see if the device is already bound to a driver, which\ncould do bad things.  The first thing to go wrong is that it will try to match\na driver with a device already bound to one.  In some cases (it appears with\nUSB with drivers/usb/core/usb.c::usb_match_id()), some drivers will match a\ndevice based on the class type, so it would be common (especially for HID\ndevices) to match a device that is already bound.\n\nThe fun comes when -\u003eprobe() is called, it fails, then\ndriver_probe_device() does this:\n\n\tdev-\u003edriver \u003d NULL;\n\nLater on, that pointer could be be dereferenced without checking and cause\nhell to break loose.\n\nThis problem could be nasty. It\u0027s very hardware dependent, since some\ndevices could have a different set of matching qualifiers than others.\n\nNow, I don\u0027t quite see exactly where/how you were getting that crash.\nYou\u0027re dereferencing bad memory, but I\u0027m not sure which pointer was bad\nand where it came from, but it could have come from a couple of different\nplaces.\n\nThe patch below will hopefully fix it all up for you. It\u0027s against\n2.6.12-rc2-mm1, and does the following:\n\n- Move logic to driver_probe_device() and comments uncommon returns:\n  1 - If device is bound\n  0 - If device not bound, and no error\n  error - If there was an error.\n\n- Move locking to caller of that function, since we want to lock a\n  device for the entire time we\u0027re trying to bind it to a driver (to\n  prevent against a driver being loaded at the same time).\n\n- Update __device_attach() and __driver_attach() to do that locking.\n\n- Check if device is already bound in __driver_attach()\n\n- Update the converse device_release_driver() so it locks the device\n  around all of the operations.\n\n- Mark driver_probe_device() as static and remove export. It\u0027s an\n  internal function, it should stay that way, and there are no other\n  callers. If there is ever a need to export it, we can audit it as\n  necessary.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\n"
    },
    {
      "commit": "b86c1df1f98d16c999423a3907eb40a9423f481e",
      "tree": "02cf0b54f3c1d9b987268f2d4737af1a67dd4056",
      "parents": [
        "d0e2b4a0a9dd3eed71b56c47268bf4e40cff6d0f"
      ],
      "author": {
        "name": "gregkh@suse.de",
        "email": "gregkh@suse.de",
        "time": "Thu Mar 31 12:53:00 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:27 2005 -0700"
      },
      "message": "[PATCH] Driver core: Fix up the driver and device iterators to be quieter\n\nAlso stops looping over the lists when a match is found.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\n"
    },
    {
      "commit": "0956af53afea290c5676c75249fc2c180d831375",
      "tree": "43ba929157462d22b6320a8924823a56cb292569",
      "parents": [
        "63c4f204ffc8219696bda88eb20c9873d007a2fc"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Thu Mar 24 18:58:45 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:19 2005 -0700"
      },
      "message": "[PATCH] Call klist_del() instead of klist_remove().\n\n- Can\u0027t wait on removing the current item in the list (the positive refcount *because*\n  we are using it causes it to deadlock).\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "2287c322b61fced7e0c326a1a9606aa73147e3df",
      "tree": "8241c7cab4172969f38d8b55852aca2e071a494f",
      "parents": [
        "cb85b6f1cc811ecb9ed4b950206d8941ba710e68"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Thu Mar 24 10:50:24 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:17 2005 -0700"
      },
      "message": "[PATCH] Use bus_for_each_{dev,drv} for driver binding.\n\n- Now possible, since the lists are locked using the klist lock and not the\n  global rwsem.\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "94e7b1c5ff2055571703e38b059afffe17658432",
      "tree": "469dbd920087ec62acd88b4985437a78c6786c0e",
      "parents": [
        "38fdac3cdce276554b4484a41f8ec2daf81cb2ff"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Mon Mar 21 12:25:36 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:16 2005 -0700"
      },
      "message": "[PATCH] Add a klist to struct device_driver for the devices bound to it.\n\n- Use it in driver_for_each_device() instead of the regular list_head and stop using\n  the bus\u0027s rwsem for protection.\n- Use driver_for_each_device() in driver_detach() so we don\u0027t deadlock on the\n  bus\u0027s rwsem.\n- Remove -\u003edevices.\n- Move klist access and sysfs link access out from under device\u0027s semaphore, since\n  they\u0027re synchronized through other means.\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "07e4a3e27fe414980ddc85a358e5a56abc48b363",
      "tree": "eb32858e7facf8b24a2f0fc2d4e829d6ee715c09",
      "parents": [
        "af70316af182f4716cc5eec7e0d27fc731d164bd"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Mon Mar 21 10:52:54 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:13 2005 -0700"
      },
      "message": "[PATCH] Move device/driver code to drivers/base/dd.c\n\nThis relocates the driver binding/unbinding code to drivers/base/dd.c. This is done\nfor two reasons: One, it\u0027s not code related to the bus_type itself; it uses some from\nthat, some from devices, and some from drivers. And Two, it will make it easier to do\nsome of the upcoming lock removal on that code..\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    }
  ]
}
