)]}'
{
  "log": [
    {
      "commit": "8d899e70c1b3afff04104eebc09a629ac8dd4b32",
      "tree": "65091f65021d685a64a7ed846811dbd0f0301668",
      "parents": [
        "cd006086fa5d91414d8ff9ff2b78fbb593878e3c"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "kernel@teksavvy.com",
        "time": "Wed May 02 15:22:52 2012 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 07 15:40:34 2012 -0400"
      },
      "message": "libata-eh don\u0027t waste time retrying media errors (v3)\n\nATA and SATA drives have had built-in retries for media errors\nfor as long as they\u0027ve been commonplace in computers (early 1990s).\n\nWhen libata stumbles across a bad sector, it can waste minutes\nsitting there doing retry after retry before finally giving up\nand letting the higher layers deal with it.\n\nThis patch removes retries for media errors only.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6868225e3e92399068be9a5f1635752d91012ad5",
      "tree": "c912d32e6e59f6db11b7c0d14cd5542432d0edc9",
      "parents": [
        "69964ea4c7b68c9399f7977aa5b9aa6539a6a98a"
      ],
      "author": {
        "name": "Lin Ming",
        "email": "ming.m.lin@intel.com",
        "time": "Thu May 03 22:15:07 2012 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu May 03 14:05:58 2012 -0400"
      },
      "message": "libata: skip old error history when counting probe trials\n\nCommit d902747(\"[libata] Add ATA transport class\") introduced\nATA_EFLAG_OLD_ER to mark entries in the error ring as cleared.\n\nBut ata_count_probe_trials_cb() didn\u0027t check this flag and it still\ncounts the old error history. So wrong probe trials count is returned\nand it causes problem, for example, SATA link speed is slowed down from\n3.0Gbps to 1.5Gbps.\n\nFix it by checking ATA_EFLAG_OLD_ER in ata_count_probe_trials_cb().\n\nCc: stable \u003cstable@vger.kernel.org\u003e # 2.6.37+\nSigned-off-by: Lin Ming \u003cming.m.lin@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "81c757bc696284f39f07766f0c2ca67af64ce9bd",
      "tree": "a01a13219199520c7a992f90d54cc83513a5cdb0",
      "parents": [
        "0b3e09da1350397f3f8b6fd839ab455b0b587451"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Dec 02 16:07:01 2011 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "JBottomley@Parallels.com",
        "time": "Sun Feb 19 14:13:51 2012 -0600"
      },
      "message": "[SCSI] libsas: execute transport link resets with libata-eh via host workqueue\n\nLink resets leave ata affiliations intact, so arrange for libsas to make\nan effort to avoid dropping the device due to a slow-to-recover link.\nTowards this end carry out reset in the host workqueue so that it can\ncheck for ata devices and kick the reset request to libata.  Hard\nresets, in contrast, bypass libata since they are meant for associating\nan ata device with another initiator in the domain (tears down\naffiliations).\n\nNeed to add a new transport_sas_phy_reset() since the current\nsas_phy_reset() is a utility function to libsas lldds.  They are not\nprepared for it to loop back into eh.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\n"
    },
    {
      "commit": "7a46c0780babea7d0b3f277a33ea243be38eb942",
      "tree": "75d599d93a0f9faeadb421e0c83d8533e293630a",
      "parents": [
        "142924cf402f9c0568004f0e2a27988fe3556c61"
      ],
      "author": {
        "name": "Gwendal Grignou",
        "email": "gwendal@google.com",
        "time": "Wed Oct 19 17:17:02 2011 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Nov 09 01:38:00 2011 -0500"
      },
      "message": "[libata] Issue SRST to Sil3726 PMP\n\nReenable sending SRST to devices connected behind a Sil3726 PMP.\nThis allow staggered spinups and handles drives that spins up slowly.\n\nWhile the drives spin up, the PMP will not accept SRST.\nMost controller reissues the reset until the drive is ready, while\nsome [Sil3124] returns an error.\nIn ata_eh_error, wait 10s before reset the ATA port and try again.\n\nSigned-off-by: Gwendal Grignou \u003cgwendal@google.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "38789fda295689689d064c0157bc363b1837b5e6",
      "tree": "ff03cfacc7dcc05faecc18fd5b1b213a1eef9c3c",
      "parents": [
        "fec14d2fcebe824377ef0305babc365d039f6b39"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 17 15:33:58 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:37 2011 -0400"
      },
      "message": "ide/ata: Add export.h for EXPORT_SYMBOL/THIS_MODULE where needed\n\nThey were getting this implicitly by an include of module.h\nfrom device.h -- but we are going to clean that up and break\nthat include chain, so include export.h explicitly now.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "e8411fbad67a6fe3f989cf6391df7c72bf4a1f9e",
      "tree": "7c412654e5918193e4fb3fbd409ed2f77270786d",
      "parents": [
        "fc8cc1d5b192b829b39ca534e6273a05f10cee79"
      ],
      "author": {
        "name": "Sergei Shtylyov",
        "email": "sshtylyov@ru.mvista.com",
        "time": "Tue Aug 09 23:25:50 2011 +0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sat Oct 08 00:07:15 2011 -0400"
      },
      "message": "libata-eh: ata_eh_followup_srst_needed() does not need \u0027classes\u0027 parameter\n\n... since it does not use it.\n\nSigned-off-by: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "8ea7645c5a949f9d0ea86edc0778713b5e63ab74",
      "tree": "997f2828b26aa532284ce2cf96c03e951f1fb599",
      "parents": [
        "5b933e6340ac652fb1800480744ea8c9fa591bbf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed May 25 12:23:56 2011 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@pobox.com",
        "time": "Sat Jul 23 17:57:36 2011 -0400"
      },
      "message": "libata: leave port thawed after reset failure\n\nlibata EH intentionally left a port frozen if it failed\nata_eh_reset().  The intention was avoiding continuous loop of resets\nwhen the controller or attached device is flaky and reporting spurious\nhotplug events.  Once port enters this state, it can be recovered with\nmanual rescan, which seemed reasonable.\n\nHowever, outside of my convoluted test setup, there have been very few\nreports justifying this choice while there have been more cases where\nthe automatic freezing of the port after hotplug attempt of a faulty\ndevice caused confusion and led to unnecessary resets.\n\nThis patch changes the behavior so that the port is thawed after reset\nfailure.  This change doesn\u0027t necessarily solve but makes it easier\nand more intuitive to work around hotplug related problems\n(ie. re-pluggin or power cycling the device) as reported in the\nfollowings.\n\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d34712\n  http://thread.gmane.org/gmane.linux.kernel/1123265/focus\u003d49548\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Reartes Guillermo \u003crtguille@gmail.com\u003e\nReported-by: Bruce Stenning \u003cb.stenning@indigovision.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "a9a79dfec239568bdbf778242f8fcd10bcc5b9e2",
      "tree": "620648585f89cdb589d1625431f8c21ef70a9258",
      "parents": [
        "a44fec1fce5d5d14cc3ac4545b8da346394de666"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Apr 15 15:51:59 2011 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@pobox.com",
        "time": "Sat Jul 23 17:57:36 2011 -0400"
      },
      "message": "ata: Convert ata_\u003cfoo\u003e_printk(KERN_\u003cLEVEL\u003e to ata_\u003cfoo\u003e_\u003clevel\u003e\n\nSaves text by removing nearly duplicated text format strings by\ncreating ata_\u003cfoo\u003e_printk functions and printf extension %pV.\n\nata defconfig size shrinks ~5% (~8KB), allyesconfig ~2.5% (~13KB)\n\nFormat string duplication comes from:\n\n #define ata_link_printk(link, lv, fmt, args...) do { \\\n       if (sata_pmp_attached((link)-\u003eap) || (link)-\u003eap-\u003eslave_link)    \\\n               printk(\"%sata%u.%02u: \"fmt, lv, (link)-\u003eap-\u003eprint_id,   \\\n                      (link)-\u003epmp , ##args); \\\n       else \\\n               printk(\"%sata%u: \"fmt, lv, (link)-\u003eap-\u003eprint_id , ##args); \\\n       } while(0)\n\nCoalesce long formats.\n\n$ size drivers/ata/built-in.*\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n 544969\t  73893\t 116584\t 735446\t  b38d6\tdrivers/ata/built-in.allyesconfig.ata.o\n 558429\t  73893\t 117864\t 750186\t  b726a\tdrivers/ata/built-in.allyesconfig.dev_level.o\n 141328\t  14689\t   4220\t 160237\t  271ed\tdrivers/ata/built-in.defconfig.ata.o\n 149567\t  14689\t   4220\t 168476\t  2921c\tdrivers/ata/built-in.defconfig.dev_level.o\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "8c56cacc724c7650b893d43068fa66044aa29a61",
      "tree": "57bffa9525cd9403ef0a288508e774acf2e2920f",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed May 25 13:19:39 2011 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@pobox.com",
        "time": "Tue Jun 07 15:55:55 2011 -0400"
      },
      "message": "libata: fix unexpectedly frozen port after ata_eh_reset()\n\nTo work around controllers which can\u0027t properly plug events while\nreset, ata_eh_reset() clears error states and ATA_PFLAG_EH_PENDING\nafter reset but before RESET is marked done.  As reset is the final\nrecovery action and full verification of devices including onlineness\nand classfication match is done afterwards, this shouldn\u0027t lead to\nlost devices or missed hotplug events.\n\nUnfortunately, it forgot to thaw the port when clearing EH_PENDING, so\nif the condition happens after resetting an empty port, the port could\nbe left frozen and EH will end without thawing it, making the port\nunresponsive to further hotplug events.\n\nThaw if the port is frozen after clearing EH_PENDING.  This problem is\nreported by Bruce Stenning in the following thread.\n\n http://thread.gmane.org/gmane.linux.kernel/1123265\n\nstable: I think we should weather this patch a bit longer in -rcX\n\tbefore sending it to -stable.  Please wait at least a month\n\tafter this patch makes upstream.  Thanks.\n\n-v2: Fixed spelling in the comment per Dave Howorth.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Bruce Stenning \u003cb.stenning@indigovision.com\u003e\nCc: stable@kernel.org\nCc: Dave Howorth \u003cdhoworth@mrc-lmb.cam.ac.uk\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "8a745f1f39b7a20047a362b67ce9151c07d14440",
      "tree": "f8f08be7a284d195f30a8b2e6fc63b714e4f7f21",
      "parents": [
        "0afc6f5ba95419fd505e60637f7645425f16e407"
      ],
      "author": {
        "name": "Kristen Carlson Accardi",
        "email": "kristen@linux.intel.com",
        "time": "Fri Mar 04 10:24:11 2011 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@pobox.com",
        "time": "Thu May 19 20:50:53 2011 -0400"
      },
      "message": "libata: Power off empty ports\n\nGive users the option of completely powering off unoccupied\nSATA ports using the existing min_power link_power_management_policy\noption.  When the use selects this option on an empty port, we\nwill power the port off by setting DET to off.  For occupied ports,\nbehavior is unchanged.\n\nSigned-off-by: Kristen Carlson Accardi \u003ckristen@linux.intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "5f6f12ccf3aa42cfc0c5bde9228df0c843dd63f7",
      "tree": "0fd92494ecaa6caf7f4d7f12524d49b149d7d304",
      "parents": [
        "ddb503b42960792f3be580f98959add669241a04"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon May 09 16:04:11 2011 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@pobox.com",
        "time": "Sat May 14 14:51:40 2011 -0400"
      },
      "message": "libata: fix oops when LPM is used with PMP\n\nae01b2493c (libata: Implement ATA_FLAG_NO_DIPM and apply it to mcp65)\nadded ATA_FLAG_NO_DIPM and made ata_eh_set_lpm() check the flag.\nHowever, @ap is NULL if @link points to a PMP link and thus the\nunconditional @ap-\u003eflags dereference leads to the following oops.\n\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000018\n  IP: [\u003cffffffff813f98e1\u003e] ata_eh_recover+0x9a1/0x1510\n  ...\n  Pid: 295, comm: scsi_eh_4 Tainted: P            2.6.38.5-core2 #1 System76, Inc. Serval Professional/Serval Professional\n  RIP: 0010:[\u003cffffffff813f98e1\u003e]  [\u003cffffffff813f98e1\u003e] ata_eh_recover+0x9a1/0x1510\n  RSP: 0018:ffff880132defbf0  EFLAGS: 00010246\n  RAX: 0000000000000000 RBX: ffff880132f40000 RCX: 0000000000000000\n  RDX: ffff88013377c000 RSI: ffff880132f40000 RDI: 0000000000000000\n  RBP: ffff880132defce0 R08: ffff88013377dc58 R09: ffff880132defd98\n  R10: 0000000000000000 R11: 00000000ffffffff R12: 0000000000000000\n  R13: 0000000000000000 R14: ffff88013377c000 R15: 0000000000000000\n  FS:  0000000000000000(0000) GS:ffff8800bf700000(0000) knlGS:0000000000000000\n  CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n  CR2: 0000000000000018 CR3: 0000000001a03000 CR4: 00000000000406e0\n  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n  DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n  Process scsi_eh_4 (pid: 295, threadinfo ffff880132dee000, task ffff880133b416c0)\n  Stack:\n   0000000000000000 ffff880132defcc0 0000000000000000 ffff880132f42738\n   ffffffff813ee8f0 ffffffff813eefe0 ffff880132defd98 ffff88013377f190\n   ffffffffa00b3e30 ffffffff813ef030 0000000032defc60 ffff880100000000\n  Call Trace:\n   [\u003cffffffff81400867\u003e] sata_pmp_error_handler+0x607/0xc30\n   [\u003cffffffffa00b273f\u003e] ahci_error_handler+0x1f/0x70 [libahci]\n   [\u003cffffffff813faade\u003e] ata_scsi_error+0x5be/0x900\n   [\u003cffffffff813cf724\u003e] scsi_error_handler+0x124/0x650\n   [\u003cffffffff810834b6\u003e] kthread+0x96/0xa0\n   [\u003cffffffff8100cd64\u003e] kernel_thread_helper+0x4/0x10\n  Code: 8b 95 70 ff ff ff b8 00 00 00 00 48 3b 9a 10 2e 00 00 48 0f 44 c2 48 89 85 70 ff ff ff 48 8b 8d 70 ff ff ff f6 83 69 02 00 00 01 \u003c48\u003e 8b 41 18 0f 85 48 01 00 00 48 85 c9 74 12 48 8b 51 08 48 83\n  RIP  [\u003cffffffff813f98e1\u003e] ata_eh_recover+0x9a1/0x1510\n   RSP \u003cffff880132defbf0\u003e\n  CR2: 0000000000000018\n\nFix it by testing @link-\u003eap-\u003eflags instead.\n\nstable: ATA_FLAG_NO_DIPM was added during 2.6.39 cycle but was\n        backported to 2.6.37 and 38.  This is a fix for that and thus\n        also applicable to 2.6.37 and 38.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: \"Nathan A. Mourey II\" \u003cnmoureyii@ne.rr.com\u003e\nLKML-Reference: \u003c1304555277.2059.2.camel@localhost.localdomain\u003e\nCc: Connor H \u003ccmdkhh@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "ae01b2493c3bf03c504c32ac4ebb01d528508db3",
      "tree": "e2f10e9054ca9c883f59aab7fec776ed2aece281",
      "parents": [
        "3f7ac1d6671ebca7a955853f7127c937f7befbd3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 16 11:14:55 2011 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@pobox.com",
        "time": "Sun Apr 24 11:32:16 2011 -0400"
      },
      "message": "libata: Implement ATA_FLAG_NO_DIPM and apply it to mcp65\n\nNVIDIA mcp65 familiy of controllers cause command timeouts when DIPM\nis used.  Implement ATA_FLAG_NO_DIPM and apply it.\n\nThis problem was reported by Stefan Bader in the following thread.\n\n http://thread.gmane.org/gmane.linux.ide/48841\n\nstable: applicable to 2.6.37 and 38.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Stefan Bader \u003cstefan.bader@canonical.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "0e0b494ca8c54a7297d0cc549405091019b3b77e",
      "tree": "7d675c0ccae0763402585e91c38f1aa42818031c",
      "parents": [
        "c34aeebc06e8bdde93e8c8f40d9903b1aaab63c6"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Sun Jan 23 09:42:50 2011 -0600"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Mar 02 02:36:45 2011 -0500"
      },
      "message": "libata: separate error handler into usable components\n\nRight at the moment, the libata error handler is incredibly\nmonolithic.  This makes it impossible to use from composite drivers\nlike libsas and ipr which have to handle error themselves in the first\ninstance.\n\nThe essence of the change is to split the monolithic error handler\ninto two components: one which handles a queue of ata commands for\nprocessing and the other which handles the back end of readying a\nport.  This allows the upper error handler fine grained control in\ncalling libsas functions (and making sure they only get called for ATA\ncommands whose lower errors have been fixed up).\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c34aeebc06e8bdde93e8c8f40d9903b1aaab63c6",
      "tree": "852e437afe7d0e03d2cfc97986dace7228309114",
      "parents": [
        "a29b5dad46ee4168c8fc18e47dabbde49790527b"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Sun Jan 23 08:31:14 2011 -0600"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Mar 02 02:36:45 2011 -0500"
      },
      "message": "libata: fix eh locking\n\nThe SCSI host eh_cmd_q should be protected by the host lock (not the\nport lock).  This probably doesn\u0027t matter that much at the moment,\nsince we try to serialise the add and eh pieces, but it might matter\nin future for more convenient error handling.  Plus this switches\nlibata to the standard eh pattern where you lock, remove from the cmd\nqueue to a local list and unlock and then operate on the local list.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "eb0e85e36b971ec31610eda7e3ff5c11c1c44785",
      "tree": "264924c95c0a12e952008c3658a93c096883b3e6",
      "parents": [
        "3e1f2356ce231488dc1fa844e5ce91bcb59fc2a1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 24 19:30:37 2011 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Mar 02 02:34:20 2011 -0500"
      },
      "message": "libata: fix hotplug for drivers which don\u0027t implement LPM\n\nata_eh_analyze_serror() suppresses hotplug notifications if LPM is\nbeing used because LPM generates spurious hotplug events.  It compared\nwhether link-\u003elpm_policy was different from ATA_LPM_MAX_POWER to\ndetermine whether LPM is enabled; however, this is incorrect as for\ndrivers which don\u0027t implement LPM, lpm_policy is always\nATA_LPM_UNKNOWN.  This disabled hotplug detection for all drivers\nwhich don\u0027t implement LPM.\n\nFix it by comparing whether lpm_policy is greater than\nATA_LPM_MAX_POWER.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e5005b15c91f3362036067bde5210d5c78af2f0d",
      "tree": "cbddea07bc4b27921f40a7cc0c0a687d7239041e",
      "parents": [
        "f08dc1ac6b15c681f4643d8da1700e06c3855608"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 09 16:13:15 2010 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Dec 24 13:34:34 2010 -0500"
      },
      "message": "libata: issue DIPM enable commands with LPM state updated\n\nLow level drivers may behave differently depending on the current\nlink-\u003elpm_policy.  During ata_eh_set_lpm(), DIPM enable commands are\nissued after the successful completion of ap-\u003eops-\u003eset_lpm(), which\nmeans that the controller is already in the target state.  This causes\nDIPM enable commands to be processed with mismatching controller power\nstate and link-\u003elpm_policy value.\n\nIn ahci, link-\u003elpm_policy is used to ignore certain PHY events if LPM\nis enabled; however, as DIPM commands are issued with stale\nlink-\u003elpm_policy, they sometimes end up triggering these conditions\nand get aborted leading to LPM configuration failure.\n\nFix it by updating link-\u003elpm_policy before issuing DIPM enable\ncommands.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c0c362b60e259e3480a36ef70280d545818844f0",
      "tree": "d9871b719cd76f9f683278f938662e080a6ad9d7",
      "parents": [
        "97750cebb3000a9cc08f8ce8dc8c7143be7d7201"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Sep 06 17:57:14 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Oct 21 20:21:05 2010 -0400"
      },
      "message": "libata: implement cross-port EH exclusion\n\nIn libata, the non-EH code paths should always take and release\nap-\u003elock explicitly when accessing hardware or shared data structures.\nHowever, once EH is active, it\u0027s assumed that the port is owned by EH\nand EH methods don\u0027t explicitly take ap-\u003elock unless race from irq\nhandler or other code paths are expected.  However, libata EH didn\u0027t\nguarantee exclusion among EHs for ports of the same host.  IOW,\nmultiple EHs may execute in parallel on multiple ports of the same\ncontroller.\n\nIn many cases, especially in SATA, the ports are completely\nindependent of each other and this doesn\u0027t cause problems; however,\nthere are cases where different ports share the same resource, which\nlead to obscure timing related bugs such as the one fixed by commit\n213373cf (ata_piix: fix locking around SIDPR access).\n\nThis patch implements exclusion among EHs of the same host.  When EH\nbegins, it acquires per-host EH ownership by calling ata_eh_acquire().\nWhen EH finishes, the ownership is released by calling\nata_eh_release().  EH ownership is also released whenever the EH\nthread goes to sleep from ata_msleep() or explicitly and reacquired\nafter waking up.\n\nThis ensures that while EH is actively accessing the hardware, it has\nexclusive access to it while allowing EHs to interleave and progress\nin parallel as they hit waiting stages, which dominate the time spent\nin EH.  This achieves cross-port EH exclusion without pervasive and\nfragile changes while still allowing parallel EH for the most part.\n\nThis was first reported by yuanding02@gmail.com more than three years\nago in the following bugzilla.  :-)\n\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d8223\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nReported-by: yuanding02@gmail.com\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "97750cebb3000a9cc08f8ce8dc8c7143be7d7201",
      "tree": "04220b8a8ed3f353e3e0023805b32e7d746dc6f3",
      "parents": [
        "a97c40068fab5d85c4241451fc312cb9025d7e6c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Sep 06 17:56:29 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Oct 21 20:21:05 2010 -0400"
      },
      "message": "libata: add @ap to ata_wait_register() and introduce ata_msleep()\n\nAdd optional @ap argument to ata_wait_register() and replace msleep()\ncalls with ata_msleep() which take optional @ap in addition to the\nduration.  These will be used to implement EH exclusion.\n\nThis patch doesn\u0027t cause any behavior difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6c8ea89cecd780faa4f4c8ed8b3b6ab88f9fa841",
      "tree": "a38ecca3c52cd4ca021137086b39d7dcd8b042cc",
      "parents": [
        "6b7ae9545ad9875a289f4191c0216b473e313cb9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 01 17:50:07 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Oct 21 20:21:04 2010 -0400"
      },
      "message": "libata: implement LPM support for port multipliers\n\nPort multipliers can do DIPM on fan-out links fine.  Implement support\nfor it.  Tested w/ SIMG 57xx and marvell PMPs.  Both the host and\nfan-out links enter power save modes nicely.\n\nSIMG 37xx and 47xx report link offline on SStatus causing EH to detach\nthe devices.  Blacklisted.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6b7ae9545ad9875a289f4191c0216b473e313cb9",
      "tree": "216b4db276202d727ba134d256144a6670497180",
      "parents": [
        "1152b2617a6e1943b6b82e07c962950e56f1000c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 01 17:50:06 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Oct 21 20:21:04 2010 -0400"
      },
      "message": "libata: reimplement link power management\n\nThe current LPM implementation has the following issues.\n\n* Operation order isn\u0027t well thought-out.  e.g. HIPM should be\n  configured after IPM in SControl is properly configured.  Not the\n  other way around.\n\n* Suspend/resume paths call ata_lpm_enable/disable() which must only\n  be called from EH context directly.  Also, ata_lpm_enable/disable()\n  were called whether LPM was in use or not.\n\n* Implementation is per-port when it should be per-link.  As a result,\n  it can\u0027t be used for controllers with slave links or PMP.\n\n* LPM state isn\u0027t managed consistently.  After a link reset for\n  whatever reason including suspend/resume the actual LPM state would\n  be reset leaving ap-\u003elpm_policy inconsistent.\n\n* Generic/driver-specific logic boundary isn\u0027t clear.  Currently,\n  libahci has to mangle stuff which libata EH proper should be\n  handling.  This makes the implementation unnecessarily complex and\n  fragile.\n\n* Tied to ALPM.  Doesn\u0027t consider DIPM only cases and doesn\u0027t check\n  whether the device allows HIPM.\n\n* Error handling isn\u0027t implemented.\n\nGiven the extent of mismatch with the rest of libata, I don\u0027t think\ntrying to fix it piecewise makes much sense.  This patch reimplements\nLPM support.\n\n* The new implementation is per-link.  The target policy is still\n  port-wide (ap-\u003etarget_lpm_policy) but all the mechanisms and states\n  are per-link and integrate well with the rest of link abstraction\n  and can work with slave and PMP links.\n\n* Core EH has proper control of LPM state.  LPM state is reconfigured\n  when and only when reconfiguration is necessary.  It makes sure that\n  LPM state is reset when probing for new device on the link.\n  Controller agnostic logic is now implemented in libata EH proper and\n  driver implementation only has to deal with controller specifics.\n\n* Proper error handling.  LPM config failure is attributed to the\n  device on the link and LPM is disabled for the link if it fails\n  repeatedly.\n\n* ops-\u003eenable/disable_pm() are replaced with single ops-\u003eset_lpm()\n  which takes @policy and @hints.  This simplifies driver specific\n  implementation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c93b263e0d4fa8ce5fec0142a98196d1a127e845",
      "tree": "6495053b65f7a79d1e5c11aaea77dd25e4082a84",
      "parents": [
        "c43d559f0423816bb2918d892131d21c51816c3d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 01 17:50:04 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Oct 21 20:21:04 2010 -0400"
      },
      "message": "libata: clean up lpm related symbols and sysfs show/store functions\n\nLink power management related symbols are in confusing state w/ mixed\nusages of lpm, ipm and pm.  This patch cleans up lpm related symbols\nand sysfs show/store functions as follows.\n\n* lpm states - NOT_AVAILABLE, MIN_POWER, MAX_PERFORMANCE and\n  MEDIUM_POWER are renamed to ATA_LPM_UNKNOWN and\n  ATA_LPM_{MIN|MAX|MED}_POWER.\n\n* Pre/postfixes are unified to lpm.\n\n* sysfs show/store functions for link_power_management_policy were\n  curiously named get/put and unnecessarily complex.  Renamed to\n  show/store and simplified.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d9027470b88631d0956ac37cdadfdeb9cdcf2c99",
      "tree": "b15273e88431ba734a24965dfc81132ac13bc8bd",
      "parents": [
        "f6f94e2ab1b33f0082ac22d71f66385a60d8157f"
      ],
      "author": {
        "name": "Gwendal Grignou",
        "email": "gwendal@google.com",
        "time": "Tue May 25 12:31:38 2010 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Oct 21 20:21:03 2010 -0400"
      },
      "message": "[libata] Add ATA transport class\n\nThis is a scheleton for libata transport class.\nAll information is read only, exporting information from libata:\n- ata_port class: one per ATA port\n- ata_link class: one per ATA port or 15 for SATA Port Multiplier\n- ata_device class: up to 2 for PATA link, usually one for SATA.\n\nSigned-off-by: Gwendal Grignou \u003cgwendal@google.com\u003e\nReviewed-by: Grant Grundler \u003cgrundler@google.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e2f3d75fc0e4a0d03c61872bad39ffa2e74a04ff",
      "tree": "b98d70dadfe9143453494bd145a53c06910df4f7",
      "parents": [
        "992b3fb9b5391bc4de5b42bb810dc6dd583a6c4a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Sep 07 14:05:31 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Sep 09 22:27:59 2010 -0400"
      },
      "message": "libata: skip EH autopsy and recovery during suspend\n\nFor some mysterious reason, certain hardware reacts badly to usual EH\nactions while the system is going for suspend.  As the devices won\u0027t\nbe needed until the system is resumed, ask EH to skip usual autopsy\nand recovery and proceed directly to suspend.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: Stephan Diestelhorst \u003cstephan.diestelhorst@amd.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3b7433b8a8a83c87972065b1852b7dcae691e464",
      "tree": "93fa2c003f8baef5ab0733b53bac77961ed5240c",
      "parents": [
        "4a386c3e177ca2fbc70c9283d0b46537844763a0",
        "6ee0578b4daaea01c96b172c6aacca43fd9807a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:42:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:42:58 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (55 commits)\n  workqueue: mark init_workqueues() as early_initcall()\n  workqueue: explain for_each_*cwq_cpu() iterators\n  fscache: fix build on !CONFIG_SYSCTL\n  slow-work: kill it\n  gfs2: use workqueue instead of slow-work\n  drm: use workqueue instead of slow-work\n  cifs: use workqueue instead of slow-work\n  fscache: drop references to slow-work\n  fscache: convert operation to use workqueue instead of slow-work\n  fscache: convert object to use workqueue instead of slow-work\n  workqueue: fix how cpu number is stored in work-\u003edata\n  workqueue: fix mayday_mask handling on UP\n  workqueue: fix build problem on !CONFIG_SMP\n  workqueue: fix locking in retry path of maybe_create_worker()\n  async: use workqueue for worker pool\n  workqueue: remove WQ_SINGLE_CPU and use WQ_UNBOUND instead\n  workqueue: implement unbound workqueue\n  workqueue: prepare for WQ_UNBOUND implementation\n  libata: take advantage of cmwq and remove concurrency limitations\n  workqueue: fix worker management invocation without pending works\n  ...\n\nFixed up conflicts in fs/cifs/* as per Tejun. Other trivial conflicts in\ninclude/linux/workqueue.h, kernel/trace/Kconfig and kernel/workqueue.c\n"
    },
    {
      "commit": "acad76272c6df8ea1900da334764c05a528598c3",
      "tree": "424215aa5b224ee51bb07e3df27fb22d86b62224",
      "parents": [
        "155bf48f10fc3c8e0e3125e221981328cd925cf4"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Mon Jul 05 15:45:20 2010 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Aug 01 19:36:03 2010 -0400"
      },
      "message": "[libata] add ATA_CMD_DSM to ata_get_cmd_descript\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ad72cf9885c536e3adae03f8337557ac9dd1e4bb",
      "tree": "e93af7f241987ffe365792c0130d182b0ac890d1",
      "parents": [
        "d313dd85ad846bc768d58e9ceb28588f917f4c9a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:03:52 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:59:24 2010 +0200"
      },
      "message": "libata: take advantage of cmwq and remove concurrency limitations\n\nlibata has two concurrency related limitations.\n\na. ata_wq which is used for polling PIO has single thread per CPU.  If\n   there are multiple devices doing polling PIO on the same CPU, they\n   can\u0027t be executed simultaneously.\n\nb. ata_aux_wq which is used for SCSI probing has single thread.  In\n   cases where SCSI probing is stalled for extended period of time\n   which is possible for ATAPI devices, this will stall all probing.\n\n#a is solved by increasing maximum concurrency of ata_wq.  Please note\nthat polling PIO might be used under allocation path and thus needs to\nbe served by a separate wq with a rescuer.\n\n#b is solved by using the default wq instead and achieving exclusion\nvia per-port mutex.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "fe06e5f9b7c61dc567edace3f4909672067f7d7e",
      "tree": "b2242169e8e3b32c63925ed9901fff9d49c26192",
      "parents": [
        "c429137a67b82788d24682153bb9c96501a9ef34"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon May 10 21:41:39 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed May 19 13:36:46 2010 -0400"
      },
      "message": "libata-sff: separate out BMDMA EH\n\nSome of error handling logic in ata_sff_error_handler() and all of\nata_sff_post_internal_cmd() are for BMDMA.  Create\nata_bmdma_error_handler() and ata_bmdma_post_internal_cmd() and move\nBMDMA part into those.\n\nWhile at it, change DMA protocol check to ata_is_dma(), fix\npost_internal_cmd to call ap-\u003eops-\u003ebmdma_stop instead of directly\ncalling ata_bmdma_stop() and open code hardreset selection so that\nata_std_error_handler() doesn\u0027t have to know about sff hardreset.\n\nAs these two functions are BMDMA specific, there\u0027s no reason to check\nfor bmdma_addr before calling bmdma methods if the protocol of the\nfailed command is DMA.  sata_mv and pata_mpc52xx now don\u0027t need to set\n.post_internal_cmd to ATA_OP_NULL and pata_icside and sata_qstor don\u0027t\nneed to set it to their bmdma_stop routines.\n\nata_sff_post_internal_cmd() becomes noop and is removed.\n\nThis fixes p3 described in clean-up-BMDMA-initialization patch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c429137a67b82788d24682153bb9c96501a9ef34",
      "tree": "b24ed75908f08cc9cddb19efc74fcb46be75de8f",
      "parents": [
        "5fe7454aa9c6ef5fcf506b0f2dfc20f696891f1a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon May 10 21:41:38 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed May 19 13:35:49 2010 -0400"
      },
      "message": "libata-sff: port_task is SFF specific\n\nport_task is tightly bound to the standard SFF PIO HSM implementation.\nUsing it for any other purpose would be error-prone and there\u0027s no\nsuch user and if some drivers need such feature, it would be much\nbetter off using its own.  Move it inside CONFIG_ATA_SFF and rename it\nto sff_pio_task.\n\nThe only function which is exposed to the core layer is\nata_sff_flush_pio_task() which is renamed from ata_port_flush_task()\nand now also takes care of resetting hsm_task_state to HSM_ST_IDLE,\nwhich is possible as it\u0027s now specific to PIO HSM.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a09bf4cd53b8ab000197ef81f15d50f29ecf973c",
      "tree": "541b102b5145690addaa72d76f83b8f79a337ee1",
      "parents": [
        "4c44f309cd396c18b096d31f03126824c685dbe2"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Apr 22 21:59:13 2010 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 22 21:59:13 2010 -0400"
      },
      "message": "libata: ensure NCQ error result taskfile is fully initialized\nbefore returning it via qc-\u003eresult_tf.\n\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "fa41efdae7de61191a7bda3a00e88ef69afb5bb9",
      "tree": "6bd4a8d48bbf0e8be01304e0914a575916e2b9fc",
      "parents": [
        "c81eddb0e3728661d1585fbc564449c94165cc36"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 15 08:57:37 2010 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 22 21:47:52 2010 -0400"
      },
      "message": "libata: fix locking around blk_abort_request()\n\nblk_abort_request() expectes queue lock to be held by the caller.\nGrab it before calling the function.\n\nLack of this synchronization led to infinite loop on corrupt\nq-\u003etimeout_list.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "534ead709235b967b659947c55d9130873a432c4",
      "tree": "8631f9b96e6e2d9e846012a62e165ce35e681290",
      "parents": [
        "24bc7347da73a9ed3383056c3d0f28c0e361621e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 14 16:18:09 2010 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Jan 20 14:25:11 2010 -0500"
      },
      "message": "libata: retry FS IOs even if it has failed with AC_ERR_INVALID\n\nlibata currently doesn\u0027t retry if a command fails with AC_ERR_INVALID\nassuming that retrying won\u0027t get it any further even if retried.\nHowever, a failure may be classified as invalid through hardware\nglitch (incorrect reading of the error register or firmware bug) and\nthere isn\u0027t whole lot to gain by not retrying as actually invalid\ncommands will be failed immediately.  Also, commands serving FS IOs\nare extremely unlikely to be invalid.  Retry FS IOs even if it\u0027s\nmarked invalid.\n\nTransient and incorrect invalid failure was seen while debugging\nfirmware related issue on Samsung n130 on bko#14314.\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d14314\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Johannes Stezenbach \u003cjs@sig21.net\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6013efd8860bf15c1f86f365332642cfe557152f",
      "tree": "9d7fe6d92ed9e067cda3b2e62d69f50175450e97",
      "parents": [
        "fd6c29e3dec9e44ecbcba3c57efa08af70a10f1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Nov 19 15:36:45 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Dec 03 02:46:35 2009 -0500"
      },
      "message": "libata: retry failed FLUSH if device didn\u0027t fail it\n\nIf ATA device failed FLUSH, it means that the device failed to write\nout some amount of data and the error needs to be reported to upper\nlayers. As retries can\u0027t recover the lost data, FLUSH failures need to\nbe reported immediately in general.\n\nHowever, if FLUSH fails due to transmission errors, the FLUSH needs to\nbe retried; otherwise, filesystems may switch to RO mode and/or raid\narray may drop a drive for a random transmission glitch.\n\nThis condition can be rather easily reproduced on certain ahci\ncontrollers which go through a PHY event after powersave mode switch +\next4 combination.  Powersave mode switch is often closely followed by\nflush from the filesystem failing the FLUSH with ATA bus error which\nmakes the filesystem code believe that data is lost and drop to RO\nmode.  This was reported in the following bugzilla bug.\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d14543\n\nThis patch makes libata EH retry FLUSH if it wasn\u0027t failed by the\ndevice.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Andrey Vihrov \u003candrey.vihrov@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4f7c2874995ac48a4622755b8bd159eb2fb6d8f4",
      "tree": "ab355d2b7392a8db4807bb7b31eb61190afa01e0",
      "parents": [
        "6489e3262e6b188a1a009b65e8a94b7aa17645b7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 15 23:37:32 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Oct 16 06:21:54 2009 -0400"
      },
      "message": "libata: fix PMP initialization\n\nCommit 842faa6c1a1d6faddf3377948e5cf214812c6c90 fixed error handling\nduring attach by not committing detected device class to dev-\u003eclass\nwhile attaching a new device.  However, this change missed the PMP\nclass check in the configuration loop causing a new PMP device to go\nthrough ata_dev_configure() as if it were an ATA or ATAPI device.\n\nAs PMP device doesn\u0027t have a regular IDENTIFY data, this makes\nata_dev_configure() tries to configure a PMP device using an invalid\ndata.  For the most part, it wasn\u0027t too harmful and went unnoticed but\nthis ends up clearing dev-\u003eflags which may have ATA_DFLAG_AN set by\nsata_pmp_attach().  This means that SATA_PMP_FEAT_NOTIFY ends up being\ndisabled on PMPs and on PMPs which honor the flag breaks hotplug\nsupport.\n\nThis problem was discovered and reported by Ethan Hsiao.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ethan Hsiao \u003cethanhsiao@jmicron.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3b761d3d437cffcaf160a5d37eb6b3b186e491d5",
      "tree": "c1f501cb350776f60eb1d4deaf206b10ed852c4e",
      "parents": [
        "f80ae7e45a0e03da188494c6e947a5c8b0cdfb4a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 06 17:08:40 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Oct 06 20:58:18 2009 -0400"
      },
      "message": "libata: fix incorrect link online check during probe\n\nWhile trying to work around spurious detection retries for\nnon-existent devices on slave links, commit\n816ab89782ac139a8b65147cca990822bb7e8675 incorrectly added link\noffline check logic before ata_eh_thaw() was called.  This means that\nif an occupied link goes down briefly at the time that offline check\nwas performed, device class will be cleared to ATA_DEV_NONE and libata\nwouldn\u0027t retry thus failing detection of the device.\n\nThe offline check should be done after the port is thawed together\nwith online check so that such link glitches can be detected by the\ninterrupt handler and handled properly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Tim Blechmann \u003ctim@klingt.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6521148c6449724c3b707820b9c535c7e8b8afcd",
      "tree": "b976cb33b4e7f09bdc765a09702659c14474c540",
      "parents": [
        "1e641060c4b564e820abdb6a4c7a603a0d386250"
      ],
      "author": {
        "name": "Robert Hancock",
        "email": "hancockrwd@gmail.com",
        "time": "Tue Jul 14 20:43:39 2009 -0600"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:20 2009 -0400"
      },
      "message": "libata: add command name parsing for error output\n\nThis patch improve libata\u0027s output for error/notification messages\nto allow easier comprehension and debugging:\n\nWhen ATAPI commands issued through the SCSI layer fail, use SCSI\nfunctions to print the CDB in human-readable form instead of just\ndumping out the CDB in hex.\n\nPrint out the name of the failed command (as defined by the ATA\nspecification) in error handling output along with the raw register\ncontents.\n\nWhen reporting status of ACPI taskfile commands executed on resume,\nalso output the names of the commands being executed (or not) in\nreadable form.\n\nSince the extra data for printing command names increases kernel\nsize slightly, a config option has been added to allow disabling\ncommand name output (as well as some of the error register parsing)\nfor those highly sensitive to kernel text size.\n\nSigned-off-by: Robert Hancock \u003chancockrwd@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1e641060c4b564e820abdb6a4c7a603a0d386250",
      "tree": "6ec27e9a33f0b64972a040deaca9eb3a25b19229",
      "parents": [
        "388539f3ff0cf1de926b03f94e1eec112358f74d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 17 11:58:33 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:19 2009 -0400"
      },
      "message": "libata: clear eh_info on reset completion\n\nResets are done with port frozen but some controllers still issue\ninterrupts during reset and they may end up recording error conditions\nin ehi leading to unnecessary EH retrials.\n\nThis patch makes ata_eh_reset() clear ehi on reset completion.  As\nreset is the most severe recovery action, there\u0027s nothing to lose by\nclearing ehi on its completion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Zdenek Kaspar \u003czkaspar82@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "54c38444fad6a99b4b19512f8f0055d69115e69e",
      "tree": "47d9271855d66676f1a70bac0f9e25d1781ce3e9",
      "parents": [
        "37d0892c5a94e208cf863e3b7bac014edee4346d"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 07 19:13:15 2009 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:19 2009 -0400"
      },
      "message": "[libata] EH: freeze port before aborting commands\n\nCall the -\u003efreeze() hook before aborting qc\u0027s, because some hardware\nrequires special handling prior to accessing the taskfile registers\n(for diagnosis/analysis/reset).  Most notably, hardware may wish to\ndisable the DMA engine or interrupts in the -\u003efreeze() hook.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "705d201414382b0966d7c903d738dfdb9380e4af",
      "tree": "8b5b6c19e6ea3837e4775cd3b00aa17c4442a1d4",
      "parents": [
        "044dcc824a167e3d39ba69a49e2b723dd10678f6"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Sun Jul 26 16:21:01 2009 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jul 28 21:05:41 2009 -0400"
      },
      "message": "libata: add missing NULL pointer check to ata_eh_reset()\n\ndrivers/ata/libata-eh.c +2403 ata_eh_reset(80) warning: variable derefenced before check \u0027slave\u0027\n\nPlease note that this is _not_ a real bug at the moment since ata_eh_context\nstructure is embedded into ata_list structure and the code alwas checks for\n\u0027slave\u0027 before accessing \u0027sehc\u0027.\n\nAnyway lets add missing check and always have a valid \u0027sehc\u0027 pointer (which\nmakes code easier to understand and prevents introducing some possible bugs\nin the future).\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: corbet@lwn.net\nCc: eteo@redhat.com\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "fe2c4d018fc6127610fef677e020b3bb41cfaaaf",
      "tree": "ce6bfcc0a34066c246667a31bf9f1d5f9538f651",
      "parents": [
        "6847e154e3cd74fca6084124c097980a7634285a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 08 12:16:37 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jul 14 22:41:28 2009 -0400"
      },
      "message": "libata: fix follow-up SRST failure path\n\nata_eh_reset() was missing error return handling after follow-up SRST\nallowing EH to continue the normal probing path after reset failure.\nThis was discovered while testing new WD 2TB drives which take longer\nthan 10 secs to spin up and cause the first follow-up SRST to time\nout.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "98a1708de1bfa5fe1c490febba850d6043d3c7fa",
      "tree": "823104983ff8cd44fc8f3dbfbcc583dc69ee30b2",
      "parents": [
        "ab2274af0569a43c6da390e969759d1138799839"
      ],
      "author": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Wed Apr 22 18:21:29 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Jun 12 18:01:46 2009 +0200"
      },
      "message": "trivial: fix typos s/paramter/parameter/ and s/excute/execute/ in documentation and source comments.\n\nSigned-off-by: Martin Olsson \u003cmartin@minimum.se\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "6f9c1ea2c1cea2de3e5670a7cd98d9f7316b0952",
      "tree": "cd0059f189700e0762c55bb4488f15a5d4f61734",
      "parents": [
        "6ad58b245a543461bd55d51b8303f555419687b2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 09:55:28 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 11 14:30:59 2009 -0400"
      },
      "message": "libata: clear ering on resume\n\nError timestamps are in jiffies which doesn\u0027t run while suspended and\nPHY events during resume isn\u0027t too uncommon.  When the two are\ncombined, it can lead to unnecessary speed downs if the machine is\nsuspended and resumed repeatedly.  Clear error history on resume.\n\nThis was reported and verified in bnc#486803 by Vladimir Botka.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Vladimir Botka \u003cvbotka@novell.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "842faa6c1a1d6faddf3377948e5cf214812c6c90",
      "tree": "345341d280d5ada012ab775f94f8cc1e92d6bad3",
      "parents": [
        "a4d7749be5de4a7261bcbe3c7d96c748792ec455"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun May 10 01:06:54 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 11 14:26:01 2009 -0400"
      },
      "message": "libata: fix attach error handling\n\nNew device attach path in ata_eh_revalidate_and_attach() is divided\ninto two separate loops because ATA requires IDENTIFY to be issued to\nslave first while the user expects to see device probe messages from\nthe master device.  new_mask is used to track which devices are the\nnew ones between the first loop and the second.\n\nThis usually works well but if an error occurs during configuration\nstage, ata_dev_revalidate_and_attach() returns with error code and\nforgets new_mask.  On the retry run, dev-\u003eclass is set and new_mask\nfor the device is clear, so the device just gets revalidated and thus\nends up skipping post-configuration procedure including scheduling of\nSCSI_HOTPLUG for the device.  When this occurs, ATA part of probing\nworks fine but SCSI probing usually doesn\u0027t happen and makes the\ndevice unreachable.\n\nThe behavior has been around for a very long time but it has been\nuncovered with the recent addition of 1_5_GBPS horkage which uses\n-EAGAIN return value from ata_dev_configure() to restart the probing\nsequence after forcing cable speed.\n\nThis can be fixed by making sure dev-\u003eclass is permanently set only\nafter all configurations are successfully complete.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Tim Connors \u003ctconnors+linuxkml@astro.swin.edu.au\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c96f1732e25362d10ee7bcac1df8412a2e6b7d23",
      "tree": "66e24eddb174d6751579ec5952f72cbbac0fb038",
      "parents": [
        "3d47aa8e7e7b2aa09256590388aa8dddc79280f9"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Tue Mar 24 10:23:46 2009 +0000"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Mar 24 22:52:39 2009 -0400"
      },
      "message": "[libata] Improve timeout handling\n\nOn a timeout call a device specific handler early in the recovery so that\nwe can complete and process successful commands which timed out due to IRQ\nloss or the like rather more elegantly.\n\n[Revised to exclude the timeout handling on a few devices that inherit from\n SFF but are not SFF enough to use the default timeout handler]\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d6515e6ff4ad3db4bd5ef2dd4e1026a7aca2482e",
      "tree": "0c9e899b0c120483661964283807205048071ec8",
      "parents": [
        "55f784c826af2506e417bcc484d7e0e4d27f1977"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 04 15:59:30 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Mar 05 07:25:43 2009 -0500"
      },
      "message": "libata: make sure port is thawed when skipping resets\n\nWhen SCR access is available and the link is offline, softreset is\nskipped as it only wastes time and some controllers don\u0027t respond very\nwell.  However, the skip path forgot to thaw the port, which not only\nblocks further event notification from the port but also causes\nrepeated EH invocations on the same event on drivers which rely on\n-\u003ethaw() to clear events if the IRQ is shared with another device or\nport.\n\nThis problem has always been there but is uncovered by recent sata_nv\nnf2/3 change which dropped hardreset support while maintaining SCR\naccess.  nf2/3 doesn\u0027t clear hotplug event mask from the interrupt\nhandler but relies on -\u003ethaw() to clear them.  When the hardreset was\nthere, the reset action was never skipped and the port was always\nthawed but, with the hardreset gone, -\u003eprereset() determines that\nthere\u0027s no need for softreset and both -\u003esoftreset() and -\u003ethaw() are\nskipped.  This leads to stuck hotplug event in the IRQ status register\ntriggering hotplug event whenever IRQ is delieverd on the same IRQ.\nAs the controller shares the same IRQ for both ports, this happens on\nevery IO if one port is occpupied and the other isn\u0027t.\n\nThis patch fixes the problem by making sure that the port is thawed on\nreset-skip path.\n\nbko#11615 reports this problem.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Robert Hancock \u003chancockrwd@gmail.com\u003e\nReported-by: Dan Andresan \u003cdanyer@gmail.com\u003e\nReported-by: Arne Woerner \u003carne_woerner@yahoo.com\u003e\nReported-by: Stefan Lippers-Hollmann \u003cs.L-H@gmx.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "b53570814692db79c3525523b6e9ec9874416c04",
      "tree": "854cfbcb231bb0914be2b0de9ea73dbf5cc07e6b",
      "parents": [
        "84bda12af31f930e4200c5244aa111de2485d7b0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 02 18:55:16 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Mar 05 07:25:10 2009 -0500"
      },
      "message": "libata: don\u0027t use on-stack sense buffer\n\nsense_buffer is used as DMA target and shouldn\u0027t be allocated on\nstack.  Use ap-\u003esector_buf instead.  This problem is spotted by Chuck\nEbbert.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "cf9a590a9eae3b99ca77d8db17afd2d7dbdd0986",
      "tree": "793d23cfe978d8048243baddd57b4ec8979c5e14",
      "parents": [
        "c2c7a89c5eabaea8c0c2aa0c1069e510144513ab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:35 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:04:19 2009 -0500"
      },
      "message": "libata: add no penalty retry request for EH device handling routines\n\nLet -EAGAIN from EH device handling routines trigger EH retry without\nconsuming its tries count.  This will be used to implement link SPD\nhorkage which requires hardreset to adjust SPD without affecting other\nEH decisions.  As it bypasses the forward progress guarantee provided\nby the tries count, the requester is responsible for ensuring forward\nprogress.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c2c7a89c5eabaea8c0c2aa0c1069e510144513ab",
      "tree": "4cec432ebd36a103e366d56d2d62221674df5a99",
      "parents": [
        "a07d499b4759881db1359dd8812eecd00b0e0a28"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:34 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:34 2009 -0500"
      },
      "message": "libata: improve probe failure handling\n\nWhen link is flaky at high speed, it isn\u0027t uncommon for a device to\nrepeatedly fail probing sequence early after successfully negotiating\nhigh link speed.  This often leads to consecutive hotplug events\nwithout successful probing.\n\nThis patch improves libata EH such that it remembers probing trials\nand if there have been more than two unsuccessful trials in the past\n60 seconds, slows down link speed to 1.5Gbps.\n\nAs link speed negotiation is the duty of the PHY layer proper, the\ngoal of this fallback mechanism is to provide the last resort when\neverything else fails, which unfortunately happens not too\ninfrequently, so no fancy 6-\u003e3-\u003e1.5 speeding down or highest\nsuccessful transmission speed seen kind of logics (yet).\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a07d499b4759881db1359dd8812eecd00b0e0a28",
      "tree": "aaa5a5c95b64ab121ca89a71899abfe8837890f6",
      "parents": [
        "99cf610aa4840d822cdc67d194b23b55010ca9bd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:33 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:22 2009 -0500"
      },
      "message": "libata: add @spd_limit to sata_down_spd_limit()\n\nAdd @spd_limit to sata_down_spd_limit() so that the caller can specify\nthe SPD limit it wants.  This parameter doesn\u0027t get in the way even\nwhen it\u0027s too low.  The closest possible limit is applied.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "99cf610aa4840d822cdc67d194b23b55010ca9bd",
      "tree": "68bc3d6c1f13849731bb7b4b11414b4b0e5fbffb",
      "parents": [
        "9913ff8abf1c70a8d52560dc931e1901d025ad27"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:32 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:17 2009 -0500"
      },
      "message": "libata: clear dev-\u003eering in smarter way\n\ndev-\u003eering used to be cleared together with the rest of ata_device in\nata_dev_init() which is called whenever a probing event occurs.\ndev-\u003eering is about to be used to track probing failures so it needs\nto remain persistent over multiple porbing events.  This patch\nachieves this by doing the following.\n\n* Instead of CLEAR_OFFSET, define CLEAR_BEGIN and CLEAR_END and only\n  clear between BEGIN and END.  ering is moved after END.  The split\n  of persistent area is to allow hotter items remain at the head.\n\n* ering is explicitly cleared on ata_dev_disable() and when device\n  attach succeeds.  So, ering is persistent throug a device\u0027s life\n  time (unless explicitly cleared of course) and also through periods\n  inbetween disablement of an attached device and successful detection\n  of the next one.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "678afac678061ee41bc3007885003c125912a8e2",
      "tree": "134b4227b0826d14810f0d617090d5b7fe5e4369",
      "parents": [
        "d89293abd95bfd7dd9229087d6c30c1464c5ac83"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:30 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:00 2009 -0500"
      },
      "message": "libata: move ata_dev_disable() to libata-eh.c\n\nata_dev_disable() is about to be more tightly integrated into EH\nlogic.  Move it to libata-eh.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d89293abd95bfd7dd9229087d6c30c1464c5ac83",
      "tree": "70cc96e6ad14bf6ddbddc5d824e2e104a7387f66",
      "parents": [
        "8d993eaa9c3c61b8a5929a7f695078a1fcfb4869"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:29 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:02:57 2009 -0500"
      },
      "message": "libata: fix EH device failure handling\n\nThe dev-\u003epio_mode \u003e XFER_PIO_0 test is there to avoid unnecessary\nspeed down warning messages but it accidentally disabled SATA link spd\ndown during configuration phase after reset where PIO mode is always\nzero.\n\nThis patch fixes the problem by moving the test where it belongs.\nThis makes libata probing sequence behave better when the connection\nis flaky at higher link speeds which isn\u0027t too uncommon for eSATA\ndevices.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ece180d1cfe5fa751eaa85bf796cf28b2150af15",
      "tree": "aca9d485036858ed3f1859e679473cebd3476845",
      "parents": [
        "ad74e4c18d0962397314460d0da312e72c8bd02d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 20:04:37 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Dec 28 22:43:21 2008 -0500"
      },
      "message": "libata: perform port detach in EH\n\nata_port_detach() first made sure EH saw ATA_PFLAG_UNLOADING and then\nassumed EH context belongs to it and performed detach operation\nitself.  However, UNLOADING doesn\u0027t disable all of EH and this could\nlead to problems including triggering WARN_ON()\u0027s in EH path.\n\nThis patch makes port detach behave more like other EH actions such\nthat ata_port_detach() requests EH to detach and waits for completion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1eca4365be25c540650693e941bc06a66cf38f94",
      "tree": "e3ed82850da00308180bf166118f9f9e69d92898",
      "parents": [
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 20:03:17 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Dec 28 22:43:20 2008 -0500"
      },
      "message": "libata: beef up iterators\n\nThere currently are the following looping constructs.\n\n* __ata_port_for_each_link() for all available links\n* ata_port_for_each_link() for edge links\n* ata_link_for_each_dev() for all devices\n* ata_link_for_each_dev_reverse() for all devices in reverse order\n\nNow there\u0027s a need for looping construct which is similar to\n__ata_port_for_each_link() but iterates over PMP links before the host\nlink.  Instead of adding another one with long name, do the following\ncleanup.\n\n* Implement and export ata_link_next() and ata_dev_next() which take\n  @mode parameter and can be used to build custom loop.\n* Implement ata_for_each_link() and ata_for_each_dev() which take\n  looping mode explicitly.\n\nThe following iteration modes are implemented.\n\n* ATA_LITER_EDGE\t\t: loop over edge links\n* ATA_LITER_HOST_FIRST\t\t: loop over all links, host link first\n* ATA_LITER_PMP_FIRST\t\t: loop over all links, PMP links first\n\n* ATA_DITER_ENABLED\t\t: loop over enabled devices\n* ATA_DITER_ENABLED_REVERSE\t: loop over enabled devices in reverse order\n* ATA_DITER_ALL\t\t\t: loop over all devices\n* ATA_DITER_ALL_REVERSE\t\t: loop over all devices in reverse order\n\nThis change removes exlicit device enabledness checks from many loops\nand makes it clear which ones are iterated over in which direction.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "19b723218bde79c60a394a3caee9eb156ac2d356",
      "tree": "5ea111eb99068ae04ec5bc5ab2089a288362b5c1",
      "parents": [
        "44901a96847b9967c057832b185e2f34ee6a14e5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Nov 04 17:08:40 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Nov 11 03:01:21 2008 -0500"
      },
      "message": "libata: fix last_reset timestamp handling\n\nehc-\u003elast_reset is used to ensure that resets are not issued too\nclose to each other.  It\u0027s initialized to jiffies minus one minute\non EH entry.  However, when new links are initialized after PMP is\nprobed, new links have zero for this timestamp resulting in long wait\ndepending on the current jiffies.\n\nThis patch makes last_set considered iff ATA_EHI_DID_RESET is set, in\nwhich case last_reset is always initialized.  As an added precaution,\nWARN_ON() is added so that warning is printed if last_reset is\nin future.\n\nThis problem is spotted and debugged by Shane Huang.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Shane Huang \u003cShane.Huang@amd.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "90484ebfc96c5dc5c498ed72cf2d370575db9b76",
      "tree": "46ada261a4d318296bcbe08ac724fd32eb014a6d",
      "parents": [
        "e8b3b5e9f54512bfdb7c154da07ec0408cbd6c56"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Oct 26 15:43:03 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Oct 27 23:55:40 2008 -0400"
      },
      "message": "libata: clear saved xfer_mode and ncq_enabled on device detach\n\nlibata EH saves xfer_mode and ncq_enabled at start to later set\nDUBIOUS_XFER flag if it has changed.  These values need to be cleared\non device detach such that hot device swap doesn\u0027t accidentally miss\nDUBIOUS_XFER.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4a9c7b3359889399aacb94019bbdfc9f38d4cff7",
      "tree": "a791790f02f2a0a5b3ea66c1526ae79f1711dca8",
      "parents": [
        "c77a036beceabbfd85b366193685cb49f38292bd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 27 19:59:23 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Oct 27 23:55:12 2008 -0400"
      },
      "message": "libata: fix device iteration bugs\n\nThere were several places where only enabled devices should be\niterated over but device enabledness wasn\u0027t checked.\n\n* IDENTIFY data 40 wire check in cable_is_40wire()\n* xfer_mode/ncq_enabled saving in ata_scsi_error()\n* DUBIOUS_XFER handling in ata_set_mode()\n\nWhile at it, reformat comments in cable_is_40wire().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "816ab89782ac139a8b65147cca990822bb7e8675",
      "tree": "066f5e76a52f2cc5b6ad23c2606911dbe3af4921",
      "parents": [
        "a568d1d2e2aff4f114b087c06bfd350e945ad6cf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 22 00:31:34 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Oct 22 20:42:43 2008 -0400"
      },
      "message": "libata: set device class to NONE if phys_offline\n\nReset methods don\u0027t have access to phys link status for slave links\nand may incorrectly indicate device presence causing unnecessary probe\nfailures for unoccupied links.  This patch clears device class to NONE\nduring post-reset processing if phys link is offline.\n\nAs on/offlineness semantics is strictly defined and used in multiple\nplaces by the core layer, this won\u0027t change behavior for drivers which\ndon\u0027t use slave links.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a568d1d2e2aff4f114b087c06bfd350e945ad6cf",
      "tree": "1eafb8cd7ba2326811a1f33dd785135efdcd8dbf",
      "parents": [
        "848e4c68c4695beae563f9a3d59fce596b466a74"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 21 20:37:21 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Oct 22 20:40:21 2008 -0400"
      },
      "message": "libata-eh: fix slave link EH action mask handling\n\nSlave link action mask is transferred to master link and all the EH\nactions are taken by the master link.  ata_eh_about_to_do() and\nata_eh_done() are called with ATA_EH_ALL_ACTIONS to clear the slave\nlink actions during transfer.  This always sets ATA_PFLAG_RECOVERED\nflag causing spurious \"EH complete\" messages.\n\nDon\u0027t set ATA_PFLAG_RECOVERED for slave link actions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "848e4c68c4695beae563f9a3d59fce596b466a74",
      "tree": "90c5ea1ff1b016f72888641f96f014336e969434",
      "parents": [
        "570106df6bdb4907ad7f70793079c762f34d561a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 21 14:26:39 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Oct 22 20:40:19 2008 -0400"
      },
      "message": "libata: transfer EHI control flags to slave ehc.i\n\nATA_EHI_NO_AUTOPSY and ATA_EHI_QUIET are used to control the behavior\nof EH.  As only the master link is visible outside EH, these flags are\nset only for the master link although they should also apply to the\nslave link, which causes spurious EH messages during probe and\nsuspend/resume.\n\nThis patch transfers those two flags to slave ehc.i before performing\nslave autopsy and reporting.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e26feff647ef34423b048b940540a0059001ddb0",
      "tree": "acafe68602ee2f6f1a438c113073ffcc0040e949",
      "parents": [
        "d403a6484f0341bf0624d17ece46f24f741b6a92",
        "b911e473d24633c19414b54b82b9ff0b1a2419d7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 10 10:52:45 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 10 10:52:45 2008 -0700"
      },
      "message": "Merge branch \u0027for-2.6.28\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.28\u0027 of git://git.kernel.dk/linux-2.6-block: (132 commits)\n  doc/cdrom: Trvial documentation error, file not present\n  block_dev: fix kernel-doc in new functions\n  block: add some comments around the bio read-write flags\n  block: mark bio_split_pool static\n  block: Find bio sector offset given idx and offset\n  block: gendisk integrity wrapper\n  block: Switch blk_integrity_compare from bdev to gendisk\n  block: Fix double put in blk_integrity_unregister\n  block: Introduce integrity data ownership flag\n  block: revert part of d7533ad0e132f92e75c1b2eb7c26387b25a583c1\n  bio.h: Remove unused conditional code\n  block: remove end_{queued|dequeued}_request()\n  block: change elevator to use __blk_end_request()\n  gdrom: change to use __blk_end_request()\n  memstick: change to use __blk_end_request()\n  virtio_blk: change to use __blk_end_request()\n  blktrace: use BLKTRACE_BDEV_SIZE as the name size for setup structure\n  block: add lld busy state exporting interface\n  block: Fix blk_start_queueing() to not kick a stopped queue\n  include blktrace_api.h in headers_install\n  ...\n"
    },
    {
      "commit": "242f9dcb8ba6f68fcd217a119a7648a4f69290e9",
      "tree": "1bfe245ffbc50d204d76665cd8f90d85100f86a1",
      "parents": [
        "608aeef17a91747d6303de4df5e2c2e6899a95e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Sep 14 05:55:09 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:13 2008 +0200"
      },
      "message": "block: unify request timeout handling\n\nRight now SCSI and others do their own command timeout handling.\nMove those bits to the block layer.\n\nInstead of having a timer per command, we try to be a bit more clever\nand simply have one per-queue. This avoids the overhead of having to\ntear down and setup a timer for each command, so it will result in a lot\nless timer fiddling.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "11fc33da8d8413d6bfa5143f454dfcb998c27617",
      "tree": "fb43a4954244cbbd84cb560dd1376d35ad90df84",
      "parents": [
        "d09addf65cb5b3b19a536aa3329efeedbc6bb56c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Aug 30 14:20:01 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:29:06 2008 -0400"
      },
      "message": "libata-eh: clear UNIT ATTENTION after reset\n\nResets make ATAPI devices raise UNIT ATTENTION which fails the next\ncommand.  As resets can happen asynchronously for unrelated reasons,\nthis sometimes disrupts innocent users.  For example, reading DVD\nfails after the system wakes up from suspend or the other device\nsharing the channel went through bus error.\n\nClearing UA has some problems as it might clear UA which the userland\nneeds to know about.  However, UA after resets can only be about the\nreset itself and benefits of clearing it overweights cons.  Missing UA\ncan only delay failure to one of the following commands anyway.  For\nexample, timeout while burning is in progress will trigger reset and\nreset the device state and probably corrupt the burning run.  Although\nthe userland application won\u0027t get the UA, its pending writes will\nfail.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "45fabbb77bd95adff7a80bde1c7a0ace1075fde6",
      "tree": "0e98efc190b25a11f84b8ae7d1ee0a17c41d3da8",
      "parents": [
        "ea6ce53cd5d005455ec0a3cc1d45d3af0cb90919"
      ],
      "author": {
        "name": "Elias Oltmanns",
        "email": "eo@nebensachen.de",
        "time": "Sun Sep 21 11:54:08 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:27:54 2008 -0400"
      },
      "message": "libata: Implement disk shock protection support\n\nOn user request (through sysfs), the IDLE IMMEDIATE command with UNLOAD\nFEATURE as specified in ATA-7 is issued to the device and processing of\nthe request queue is stopped thereafter until the specified timeout\nexpires or user space asks to resume normal operation. This is supposed\nto prevent the heads of a hard drive from accidentally crashing onto the\nplatter when a heavy shock is anticipated (like a falling laptop\nexpected to hit the floor). In fact, the whole port stops processing\ncommands until the timeout has expired in order to avoid any resets due\nto failed commands on another device.\n\nSigned-off-by: Elias Oltmanns \u003ceo@nebensachen.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "b1c72916abbdd0a55015c87358536ca0ebaf6735",
      "tree": "1064fe92f2c3600dd6587c880d907020896b3348",
      "parents": [
        "b5b3fa386b8f96c7fa92e507e5deddc2637924b4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 17:02:43 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:25:28 2008 -0400"
      },
      "message": "libata: implement slave_link\n\nExplanation taken from the comment of ata_slave_link_init().\n\n In libata, a port contains links and a link contains devices.  There\n is single host link but if a PMP is attached to it, there can be\n multiple fan-out links.  On SATA, there\u0027s usually a single device\n connected to a link but PATA and SATA controllers emulating TF based\n interface can have two - master and slave.\n\n However, there are a few controllers which don\u0027t fit into this\n abstraction too well - SATA controllers which emulate TF interface\n with both master and slave devices but also have separate SCR\n register sets for each device.  These controllers need separate links\n for physical link handling (e.g. onlineness, link speed) but should\n be treated like a traditional M/S controller for everything else\n (e.g. command issue, softreset).\n\n slave_link is libata\u0027s way of handling this class of controllers\n without impacting core layer too much.  For anything other than\n physical link handling, the default host link is used for both master\n and slave.  For physical link handling, separate @ap-\u003eslave_link is\n used.  All dirty details are implemented inside libata core layer.\n From LLD\u0027s POV, the only difference is that prereset, hardreset and\n postreset are called once more for the slave link, so the reset\n sequence looks like the following.\n\n prereset(M) -\u003e prereset(S) -\u003e hardreset(M) -\u003e hardreset(S) -\u003e\n softreset(M) -\u003e postreset(M) -\u003e postreset(S)\n\n Note that softreset is called only for the master.  Softreset resets\n both M/S by definition, so SRST on master should handle both (the\n standard method will work just fine).\n\nAs slave_link excludes PMP support and only code paths which deal with\nthe attributes of physical link are affected, all the changes are\nlocalized to libata.h, libata-core.c and libata-eh.c.\n\n * ata_is_host_link() updated so that slave_link is considered as host\n   link too.\n\n * iterator extended to iterate over the slave_link when using the\n   underbarred version.\n\n * force param handling updated such that devno 16 is mapped to the\n   slave link/device.\n\n * ata_link_on/offline() updated to return the combined result from\n   master and slave link.  ata_phys_link_on/offline() are the direct\n   versions.\n\n * EH autopsy and report are performed separately for master slave\n   links.  Reset is udpated to implement the above described reset\n   sequence.\n\nExcept for reset update, most changes are minor, many of them just\nmodifying dev-\u003elink to ata_dev_phys_link(dev) or using phys online\ntest instead.\n\nAfter this update, LLDs can take full advantage of per-dev SCR\nregisters by simply turning on slave link.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "da0e21d3fa2340114fe24821718a1b57123e4664",
      "tree": "f0f1bde3d90cf149dd644800f63f74de61257a12",
      "parents": [
        "5dbfc9cb59d4ad75199949d7dd8a8c6d7bc518df"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 16:08:38 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:44 2008 -0400"
      },
      "message": "libata: use ata_link_printk() when printing SError\n\nSError belongs to link not port.  Use ata_link_printk() to print it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "5dbfc9cb59d4ad75199949d7dd8a8c6d7bc518df",
      "tree": "b0574dea3b5bfcf9418abb1a08bfe24a77fbcd37",
      "parents": [
        "a674050e068a2919908730279f0b731ae6d2e005"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 16:08:02 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:41 2008 -0400"
      },
      "message": "libata: always do follow-up SRST if hardreset returned -EAGAIN\n\nAs an optimization, follow-up SRST used to be skipped if\nclassification wasn\u0027t requested even when hardreset requested it via\n-EAGAIN.  However, some hardresets can\u0027t wait for device readiness and\nskipping SRST can cause timeout or other failures during revalidation.\nAlways perform follow-up SRST if hardreset returns -EAGAIN.  This\nmakes reset paths more predictable and thus less error-prone.\n\nWhile at it, move hardreset error checking such that it\u0027s done right\nafter hardreset is finished.  This simplifies followup SRST condition\ncheck a bit and makes the reset path easier to modify.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a674050e068a2919908730279f0b731ae6d2e005",
      "tree": "aa0fe8d065233fc32e458a861a50b20271f99555",
      "parents": [
        "eb3a55a9f43f0f8e770c2abf70e65bdda2d5ff1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 16:07:04 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:39 2008 -0400"
      },
      "message": "libata: fix EH action overwriting in ata_eh_reset()\n\nehc-\u003ei.action got accidentally overwritten to ATA_EH_HARD/SOFTRESET in\nata_eh_reset().  The original intention was to clear reset action\nwhich wasn\u0027t selected.  This can cause unexpected behavior when other\nEH actions are scheduled together with reset.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "05944bdf6fadb5394710269df6770dde447b23ca",
      "tree": "7dd0435f44518b01e5d3a229167e7122425e2255",
      "parents": [
        "6a55617ed5d1aa62b850de2cf66f5ede2eef4825"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Aug 13 20:19:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:07:43 2008 -0400"
      },
      "message": "libata: implement no[hs]rst force params\n\nImplement force params nohrst, nosrst and norst.  This is to work\naround reset related problems and ease debugging.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3eabddb8ed4f488664ff5d67968392bb424836a3",
      "tree": "54f86b3900246f91c0ff87943ef12e19c3fc7c15",
      "parents": [
        "ec6add99307d5149e17f6e358f19f0205b622407"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Jun 10 18:28:05 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:33 2008 -0400"
      },
      "message": "libata-eh: update atapi_eh_request_sense() to take @dev instead of @qc\n\nUpdate atapi_eh_request_sense() to take @dev, @sense_buf and\n@dfl_sense_key instead of taking @qc and extracting information from\nit.  This change is to make the function more generic and allow it to\nbe called from other places.\n\nWhile at it, make cdb initialization use initializer.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "87fbc5a060faf2394bee88a93519f9b9d434727c",
      "tree": "6f90cacb1471e64051473c4e1e664b2dea8603e0",
      "parents": [
        "d8af0eb6046c56e7238171ca420622541db24926"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:54 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: improve EH internal command timeout handling\n\nATA_TMOUT_INTERNAL which was 30secs were used for all internal\ncommands which is way too long when something goes wrong.  This patch\nimplements command type based stepped timeouts.  Different command\ntypes can use different timeouts and each command type can use\ndifferent timeout values after timeouts.\n\nie. the initial timeout is set to a value which should cover most of\nthe cases but not too long so that run away cases don\u0027t delay things\ntoo much.  After the first try times out, the second try can use\nlonger timeout and if that one times out too, it can go for full 30sec\ntimeout.\n\nIDENTIFYs use 5s - 10s - 30s timeout and all other commands use 5s -\n10s timeouts.\n\nThis patch significantly cuts down the needed time to handle failure\ncases while still allowing libata to work with nut job devices through\nretries.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d8af0eb6046c56e7238171ca420622541db24926",
      "tree": "64f5c8b15f1d9549f4a7130ae7cf09699507e514",
      "parents": [
        "0a2c0f56159999e20015241d3b8fa89b1ab14309"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:53 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: use ULONG_MAX to terminate reset timeout table\n\nThis doesn\u0027t introduce any functional changes.  This is to make reset\ntimeout table consistent with to-be-added command timeout tables.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "0a2c0f56159999e20015241d3b8fa89b1ab14309",
      "tree": "2c516452d3b3f85e9a4092b6092160e123d5f5d4",
      "parents": [
        "341c2c958ec7bdd9f54733a8b0b432fe76842a82"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:52 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: improve EH retry delay handling\n\nEH retries were delayed by 5 seconds to ensure that resets don\u0027t occur\nback-to-back.  However, this 5 second delay is superflous or excessive\nin many cases.  For example, after IDENTIFY times out, there\u0027s no\nreason to wait five more seconds before retrying.\n\nThis patch adds ehc-\u003elast_reset timestamp and record the timestamp for\nthe last reset trial or success and uses it to space resets by\nATA_EH_RESET_COOL_DOWN which is 5 secs and removes unconditional 5 sec\nsleeps.\n\nAs this change makes inter-try waits often shorter and they\u0027re\nredundant in nature, this patch also removes the \"retrying...\"\nmessages.\n\nWhile at it, convert explicit rounding up division to DIV_ROUND_UP().\n\nThis change speeds up EH in many cases w/o sacrificing robustness.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "341c2c958ec7bdd9f54733a8b0b432fe76842a82",
      "tree": "1af1983fe82ad032de6142229fe6c70f04466918",
      "parents": [
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:51 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: consistently use msecs for time durations\n\nlibata has been using mix of jiffies and msecs for time druations.\nThis is getting confusing.  As writing sub HZ values in jiffies is\nPITA and msecs_to_jiffies() can\u0027t be used as initializer, unify unit\nfor all time durations to msecs.  So, durations are in msecs and\ndeadlines are in jiffies.  ata_deadline() is added to compute deadline\nfrom a start time and duration in msecs.\n\nWhile at it, drop now superflous _msec suffix from arguments and\nrename @timeout to @deadline if it represents a fixed point in time\nrather than duration.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e0614db2a398d4d0dc5fb47fe2c2783141262a3e",
      "tree": "57723d4765f04821c47e3e0859d90fc5d9ab51bc",
      "parents": [
        "f046519fc85a8fdf6a058b4ac9d897cdee6f3e52"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: ignore recovered PHY errors\n\nNo reason to get overzealous about recovered comm and data errors.\nSome PHYs habitually sets them w/o no good reason and being draconian\nabout these soft error conditions doesn\u0027t seem to help anybody.\n\nIf need ever rises, we might need to add soft PHY error condition, say\nAC_ERR_MAYBE_ATA_BUS and use it only to determine whether speed down\nis necessary but I don\u0027t think that\u0027s very likely to happen.  It\u0027s far\nmore likely we\u0027ll get timeouts or fatal transmission errors if\nrecovered errors are so prominent that they hamper operation.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "f046519fc85a8fdf6a058b4ac9d897cdee6f3e52",
      "tree": "f4ee1fc8edaeaa2fb0245b82925ef40243a9f26f",
      "parents": [
        "dc98c32cbe80750ae2d9d9fbdae305d38f005de7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:08 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: kill hotplug related race condition\n\nOriginally, whole reset processing was done while the port is frozen\nand SError was cleared during @postreset().  This had two race\nconditions.  1: hotplug could occur after reset but before SError is\ncleared and libata won\u0027t know about it.  2: hotplug could occur after\nall the reset is complete but before the port is thawed.  As all\nevents are cleared on thaw, the hotplug event would be lost.\n\nCommit ac371987a81c61c2efbd6931245cdcaf43baad89 kills the first race\nby clearing SError during link resume but before link onlineness test.\nHowever, this doesn\u0027t fix race #2 and in some cases clearing SError\nafter SRST is a good idea.\n\nThis patch solves this problem by cross checking link onlineness with\nclassification result after SError is cleared and port is thawed.\nReset is retried if link is online but all devices attached to the\nlink are unknown.  As all devices will be revalidated, this one-way\ncheck is enough to ensure that all devices are detected and\nrevalidated reliably.\n\nThis, luckily, also fixes the cases where host controller returns\nbogus status while harddrive is spinning up after hotplug making\nclassification run before the device sends the first FIS and thus\ncauses misdetection.\n\nLow level drivers can bypass the logic by setting class explicitly to\nATA_DEV_NONE if ever necessary (currently none requires this).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "dc98c32cbe80750ae2d9d9fbdae305d38f005de7",
      "tree": "52bff671e5ed5b39056bb4a5c531476c83e9f708",
      "parents": [
        "932648b007de76badc61c1b13d7282288dbe887e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:07 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: move reset freeze/thaw handling into ata_eh_reset()\n\nPreviously reset freeze/thaw handling lived outside of ata_eh_reset()\nmainly because the original PMP reset code needed the port frozen\nwhile resetting all the fan-out ports, which is no longer the case.\n\nThis patch moves freeze/thaw handling into ata_eh_reset().\n@prereset() and @postreset() are now called w/o freezing the port\nalthough @prereset() an be called frozen if the port is frozen prior\nto entering ata_eh_reset().\n\nThis makes code simpler and will help removing hotplug event related\nraces.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "932648b007de76badc61c1b13d7282288dbe887e",
      "tree": "3a3c00f6068f530632012ee3a6aaccedbe1158ba",
      "parents": [
        "0cbf0711a1ebcc4d3aea8e11def684afc2c07ef8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:06 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: reorganize ata_eh_reset() no reset method path\n\nReorganize ata_eh_reset() such that @prereset() is called even when no\nreset method is available and if block is used instead of goto to skip\nactual reset.  This makes no reset case behave better (readiness wait)\nand future changes easier.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "10acf3b0d3b46c6ef5d6f0722f72ad9b743ea848",
      "tree": "08aec05645770a3c0b90fb083c2e67e6aab4d572",
      "parents": [
        "a90103298fd5ccd9a9df6d47bde9a3f371707037"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "liml@rtr.ca",
        "time": "Fri May 02 02:14:53 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue May 06 11:37:58 2008 -0400"
      },
      "message": "libata: export ata_eh_analyze_ncq_error\n\nExport ata_eh_analyze_ncq_error() for subsequent use by sata_mv,\nas suggested by Tejun.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a6116c9e60978a6deaa20691c67ffed727e50df1",
      "tree": "39d51e37b3d953ae9573e7418293ba8696efa133",
      "parents": [
        "1dc55e876182a13dcc5991c3aab893f38455d8a7"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "liml@rtr.ca",
        "time": "Wed Apr 23 22:36:25 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Apr 25 01:11:37 2008 -0400"
      },
      "message": "libata-eh set tf flags in NCQ EH result_tf\n\nFix mis-reporting of NCQ errors by ensuring that result_tf-\u003eflags\nis properly initialized in libata-eh.  This allows ata_gen_ata_sense()\nto report the failed block number correctly to SCSI after a media error\nduring NCQ.\n\nThis patch may also be a candidate for backporting to earlier kernels.\nWithout this fix, SCSI will fail I/O on the entire request rather\nthan just the bad sector.  That can be bad for a request that was\nmerged from many independent read reads from different tasks.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4f7faa3f2b99f8fb246c8cdeef971e55ceda4e52",
      "tree": "54602fe9e13d6ee571efe41174dd6ba1c63aec4c",
      "parents": [
        "b93fda12357b3f1aa55cf69d8e088372788ea9ea"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Jan 30 18:18:26 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:26 2008 -0400"
      },
      "message": "libata: make EH fail gracefully if no reset method is available\n\nWhen no reset method is available, libata currently oopses.  Although\nthe condition can\u0027t happen unless there\u0027s a bug in a low level driver,\noopsing isn\u0027t the best way to report the error condition.  Complain,\ndump stack and fail reset instead.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "45db2f6c95eee7c6622ea1b3edb9abafba58e3ab",
      "tree": "1c57efcf3e118b177dd7c9c1070b8af70694aff3",
      "parents": [
        "2a0c15ca39f5881aa1b472ca856bb7a2e584ece7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Apr 08 01:46:56 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: move link onlineness check out of softreset methods\n\nCurrently, SATA softresets should do link onlineness check before\nactually performing SRST protocol but it doesn\u0027t really belong to\nsoftreset.\n\nThis patch moves onlineness check in softreset to ata_eh_reset() and\nata_eh_followup_srst_needed() to clean up code and help future sata_mv\nchanges which need clear separation between SCR and TF accesses.\n\nsata_fsl is peculiar in that its softreset really isn\u0027t softreset but\ncombination of hardreset and softreset.  This patch adds dummy private\n-\u003eprereset to keep the current behavior but the driver really should\nimplement separate hard and soft resets and return -EAGAIN from\nhardreset if it should be follwed by softreset.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "2a0c15ca39f5881aa1b472ca856bb7a2e584ece7",
      "tree": "28fe9136db8016720c272ba39df3a3b43a9715e2",
      "parents": [
        "e50e3ce5e70e36e6069a8cc8292df76058fa9e23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Apr 08 01:25:35 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: kill dead code paths in reset path\n\nSome code paths which had been made obsolete by recent reset\nsimplification were still around.  Kill them.\n\n* ata_eh_reset() checked for ATA_DEV_UNKNOWN to determine\n  classification failure.  This is no longer applicable.\n\n* ata_do_reset() should convert ATA_DEV_UNKNOWN to ATA_DEV_NONE\n  regardless of reset result (e.g. -EAGAIN).\n\n* LLDs don\u0027t need to convert ATA_DEV_UNKNOWN to ATA_DEV_NONE.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "071f44b1d2c051641b62a3571223314737ccbe59",
      "tree": "a07794c8109e5d82a78223ae0159eadbf862c463",
      "parents": [
        "48515f6c006c2a9d7b624ee8ad068018c2d3fe0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:22 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: implement PMP helpers\n\nImplement helpers to test whether PMP is supported, attached and\ndetermine pmp number to use when issuing SRST to a link.  While at it,\nmove ata_is_host_link() so that it\u0027s together with the two new PMP\nhelpers.\n\nThis change simplifies LLDs and helps making PMP support optional.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "305d2a1ab137d11d573319c315748a87060fe82d",
      "tree": "8dcf81b1742db21c6a745688de96a18944c83617",
      "parents": [
        "5958e3025fd9d97429163e074d9cfa3848f51f28"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: unify mechanism to request follow-up SRST\n\nPreviously, there were two ways to trigger follow-up SRST from\nhardreset method - returning -EAGAIN and leaving all device classes\nunmodified.  Drivers never used the latter mechanism and the only use\ncase for the former was when hardreset couldn\u0027t classify.\n\nDrop the latter mechanism and let -EAGAIN mean \"perform follow-up SRST\nif classification is required\".  This change removes unnecessary\nfollow-up SRSTs and simplifies reset implementations.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "5958e3025fd9d97429163e074d9cfa3848f51f28",
      "tree": "f20492dc35fc2651452c871fbc812bd4f8379b40",
      "parents": [
        "ac371987a81c61c2efbd6931245cdcaf43baad89"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: move PMP SCR access failure during reset to ata_eh_reset()\n\nIf PMP fan-out reset fails and SCR isn\u0027t accessible, PMP should be\nreset.  This used to be tested by sata_pmp_std_hardreset() and\ncommunicated to EH by -ERESTART.  However, this logic is generic and\ndoesn\u0027t really have much to do with specific hardreset implementation.\n\nThis patch moves SCR access failure detection logic to ata_eh_reset()\nwhere it belongs.  As this makes sata_pmp_std_hardreset() identical to\nsata_std_hardreset(), the function is killed and replaced with the\nstandard method.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "57c9efdfb3cee5d4564fcb5f70555e2edb1bc52a",
      "tree": "c2289500f093736853a94d2d9577036658676498",
      "parents": [
        "9dadd45b24145d6aee2fabb28d7aef972301892b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: implement and use sata_std_hardreset()\n\nImplement sata_std_hardreset(), which simply wraps around\nsata_link_hardreset().  sata_std_hardreset() becomes new standard\nhardreset method for sata_port_ops and sata_sff_hardreset() moves from\nata_base_port_ops to ata_sff_port_ops, which is where it really\nbelongs.\n\nata_is_builtin_hardreset() is added so that both\nata_std_error_handler() and ata_sff_error_handler() skip both builtin\nhardresets if SCR isn\u0027t accessible.\n\npiix_sidpr_hardreset() in ata_piix.c is identical to\nsata_std_hardreset() in functionality and got replaced with the\nstandard function.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "9363c3825ea9ad76561eb48a395349dd29211ed6",
      "tree": "abe89a0f7c82b805d84b1a211c97b317f6628d5f",
      "parents": [
        "b67a1064cb1c1d3b43e01e8b43a6a8dcdefed733"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:16 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:21 2008 -0400"
      },
      "message": "libata: rename SFF functions\n\nSFF functions have confusing names.  Some have sff prefix, some have\nbmdma, some std, some pci and some none.  Unify the naming by...\n\n* SFF functions which are common to both BMDMA and non-BMDMA are\n  prefixed with ata_sff_.\n\n* SFF functions which are specific to BMDMA are prefixed with\n  ata_bmdma_.\n\n* SFF functions which are specific to PCI but apply to both BMDMA and\n  non-BMDMA are prefixed with ata_pci_sff_.\n\n* SFF functions which are specific to PCI and BMDMA are prefixed with\n  ata_pci_bmdma_.\n\n* Drop generic prefixes from LLD specific routines.  For example,\n  bfin_std_dev_select -\u003e bfin_dev_select.\n\nThe following renames are noteworthy.\n\n  ata_qc_issue_prot() -\u003e ata_sff_qc_issue()\n  ata_pci_default_filter() -\u003e ata_bmdma_mode_filter()\n  ata_dev_try_classify() -\u003e ata_sff_dev_classify()\n\nThis rename is in preparation of separating SFF support out of libata\ncore layer.  This patch strictly renames functions and doesn\u0027t\nintroduce any behavior difference.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "03faab7827e4e45823fd27c47b84c133e20a0cd0",
      "tree": "046b04c7e650f5318beb330d70e855a889750154",
      "parents": [
        "a5987e0a1b569146ed9cfa0a8c275a21b344fcaa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 27 19:14:24 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:20 2008 -0400"
      },
      "message": "libata: implement ATA_QCFLAG_RETRY\n\nCurrently whether a command should be retried after failure is\ndetermined inside ata_eh_finish().  Add ATA_QCFLAG_RETRY and move the\nlogic into ata_eh_autopsy().  This makes things clearer and helps\nextending retry determination logic.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a1efdaba2dbd6fb89e23a87b66d3f4dd92c9f5af",
      "tree": "6197c537892e0d887b2a90e369b74abf0500b9ac",
      "parents": [
        "959471936241bd83da7d0a76411cef6772140fe6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:50 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:18 2008 -0400"
      },
      "message": "libata: make reset related methods proper port operations\n\nCurrently reset methods are not specified directly in the\nata_port_operations table.  If a LLD wants to use custom reset\nmethods, it should construct and use a error_handler which uses those\nreset methods.  It\u0027s done this way for two reasons.\n\nFirst, the ops table already contained too many methods and adding\nfour more of them would noticeably increase the amount of necessary\nboilerplate code all over low level drivers.\n\nSecond, as -\u003eerror_handler uses those reset methods, it can get\nconfusing.  ie. By overriding -\u003eerror_handler, those reset ops can be\nmade useless making layering a bit hazy.\n\nNow that ops table uses inheritance, the first problem doesn\u0027t exist\nanymore.  The second isn\u0027t completely solved but is relieved by\nproviding default values - most drivers can just override what it has\nimplemented and don\u0027t have to concern itself about higher level\ncallbacks.  In fact, there currently is no driver which actually\nmodifies error handling behavior.  Drivers which override\n-\u003eerror_handler just wraps the standard error handler only to prepare\nthe controller for EH.  I don\u0027t think making ops layering strict has\nany noticeable benefit.\n\nThis patch makes -\u003eprereset, -\u003esoftreset, -\u003ehardreset, -\u003epostreset and\ntheir PMP counterparts propoer ops.  Default ops are provided in the\nbase ops tables and drivers are converted to override individual reset\nmethods instead of creating custom error_handler.\n\n* ata_std_error_handler() doesn\u0027t use sata_std_hardreset() if SCRs\n  aren\u0027t accessible.  sata_promise doesn\u0027t need to use separate\n  error_handlers for PATA and SATA anymore.\n\n* softreset is broken for sata_inic162x and sata_sx4.  As libata now\n  always prefers hardreset, this doesn\u0027t really matter but the ops are\n  forced to NULL using ATA_OP_NULL for documentation purpose.\n\n* pata_hpt374 needs to use different prereset for the first and second\n  PCI functions.  This used to be done by branching from\n  hpt374_error_handler().  The proper way to do this is to use\n  separate ops and port_info tables for each function.  Converted.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "b558edddb1c42c70a30cfe494984d4be409f7b2b",
      "tree": "b03275d15675a519de7d4edde709892f885a5fa0",
      "parents": [
        "8cebf274dd1c955a6e03385a85fd6569ce445946"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: kill ata_ehi_schedule_probe()\n\nata_ehi_schedule_probe() was created to hide details of link-resuming\nreset magic.  Now that all the softreset workarounds are gone,\nscheduling probe is very simple - set probe_mask and request RESET.\nKill ata_ehi_schedule_probe() and open code it.  This also increases\nconsistency as ata_ehi_schedule_probe() couldn\u0027t cover individual\ndevice probings so they were open-coded even when the helper existed.\n\nWhile at it, define ATA_ALL_DEVICES as mask of all possible devices on\na link and always use it when requesting probe on link level for\nsimplicity and consistency.  Setting extra bits in the probe_mask\ndoesn\u0027t hurt anybody.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "672b2d65ba83a6f3f801fd3d58851aa9c0725a54",
      "tree": "ed3a2fe8013bf8322df637838deccf9f2bc9c92c",
      "parents": [
        "d692abd92f22a81b38d52c39601871003262841c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: kill ATA_EHI_RESUME_LINK\n\nATA_EHI_RESUME_LINK has two functions - promote reset to hardreset if\nATA_LFLAG_HRST_TO_RESUME is set and preventing EH from shortcutting\nreset action when probing is requested.  The former is gone now and\nthe latter can easily be achieved by making EH to perform at least one\nreset if reset is requested, which also makes more sense than\ndepending on RESUME_LINK flag.\n\nAs ATA_EHI_RESUME_LINK was the only EHI reset modifier, this also\nkills reset modifier handling.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "cf48062658e7ab3bc55e10c65676c3c73c16f8bf",
      "tree": "9a50a016ceb6051d8a30a43ea39f2a4d3d25570e",
      "parents": [
        "4b119e21d0c66c22e8ca03df05d9de623d0eb50f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:15 2008 -0400"
      },
      "message": "libata: prefer hardreset\n\nWhen both soft and hard resets are available, libata preferred\nsoftreset till now.  The logic behind it was to be softer to devices;\nhowever, this doesn\u0027t really help much.  Rationales for the change:\n\n* BIOS may freeze lock certain things during boot and softreset can\u0027t\n  unlock those.  This by itself is okay but during operation PHY event\n  or other error conditions can trigger hardreset and the device may\n  end up with different configuration.\n\n  For example, after a hardreset, previously unlockable HPA can be\n  unlocked resulting in different device size and thus revalidation\n  failure.  Similar condition can occur during or after resume.\n\n* Certain ATAPI devices require hardreset to recover after certain\n  error conditions.  On PATA, this is done by issuing the DEVICE RESET\n  command.  On SATA, COMRESET has equivalent effect.  The problem is\n  that DEVICE RESET needs its own execution protocol.\n\n  For SFF controllers with bare TF access, it can be easily\n  implemented but more advanced controllers (e.g. ahci and sata_sil24)\n  require specialized implementations.  Simply using hardreset solves\n  the problem nicely.\n\n* COMRESET initialization sequence is the norm in SATA land and many\n  SATA devices don\u0027t work properly if only SRST is used.  For example,\n  some PMPs behave this way and libata works around by always issuing\n  hardreset if the host supports PMP.\n\n  Like the above example, libata has developed a number of mechanisms\n  aiming to promote softreset to hardreset if softreset is not going\n  to work.  This approach is time consuming and error prone.\n\n  Also, note that, dependingon how you read the specs, it could be\n  argued that PMP fan-out ports require COMRESET to start operation.\n  In fact, all the PMPs on the market except one don\u0027t work properly\n  if COMRESET is not issued to fan-out ports after PMP reset.\n\n* COMRESET is an integral part of SATA connection and any working\n  device should be able to handle COMRESET properly.  After all, it\u0027s\n  the way to signal hardreset during reboot.  This is the most used\n  and recommended (at least by the ahci spec) method of resetting\n  devices.\n\nSo, this patch makes libata prefer hardreset over softreset by making\nthe following changes.\n\n* Rename ATA_EH_RESET_MASK to ATA_EH_RESET and use it whereever\n  ATA_EH_{SOFT|HARD}RESET used to be used.  ATA_EH_{SOFT|HARD}RESET is\n  now only used to tell prereset whether soft or hard reset will be\n  issued.\n\n* Strip out now unneeded promote-to-hardreset logics from\n  ata_eh_reset(), ata_std_prereset(), sata_pmp_std_prereset() and\n  other places.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "3ec25ebd69dc120d0590e64caaf1477aa88c8a93",
      "tree": "e0ea13a1f1e1fb5b2fa158fdd2f5122d09ae1d7f",
      "parents": [
        "0f436eff54f90419ac1b8accfb3e6e17c4b49a4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 27 18:37:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Mar 29 12:21:31 2008 -0400"
      },
      "message": "libata: ATA_EHI_LPM should be ATA_EH_LPM\n\nEH actions are ATA_EH_* not ATA_EHI_*.  Rename ATA_EHI_LPM to\nATA_EH_LPM.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "eec59f76e9010e22d5736cf1907af4a92067522e",
      "tree": "d7b4aeae7ee26618f33001c0bbb1a68f28bdc26f",
      "parents": [
        "7f5e4e8d94b6013f93716bc42a1296f95d1059dc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 06 13:09:34 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 10 20:50:34 2008 -0400"
      },
      "message": "libata: allow LLDs w/o any reset method\n\nSome old SFF controllers don\u0027t have any way to reset the channel.\nCurrently, this isn\u0027t supported and libata EH causes an oops.  Allow\nLLDs w/o any reset method and just assume ATA class in such cases.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "332673257056d8be8a69d759eda90a799af5472d",
      "tree": "b2ff47054b6424f70a6c10bcffd47f2bdd70e4c8",
      "parents": [
        "0fca0d6f2ce3336022a22bc7fc2e009e599e63a4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Feb 13 09:15:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 20 12:12:28 2008 -0500"
      },
      "message": "libata: implement libata.force module parameter\n\nThis patch implements libata.force module parameter which can\nselectively override ATA port, link and device configurations\nincluding cable type, SATA PHY SPD limit, transfer mode and NCQ.\n\nFor example, you can say \"use 1.5Gbps for all fan-out ports attached\nto the second port but allow 3.0Gbps for the PMP device itself, oh,\nthe device attached to the third fan-out port chokes on NCQ and\nshouldn\u0027t go over UDMA4\" by the following.\n\n libata.force\u003d2:1.5g,2.15:3.0g,2.03:noncq,udma4\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "75f9cafc2d24a1cf44d7c3f3e5b4f7a393afcf71",
      "tree": "a98170f1fae07fbb169f21b5391cc2edadbb697d",
      "parents": [
        "b710a1f4b34438b624e9c6c2dc8bcf54b0b0ba27"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 03 01:21:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:17 2008 -0500"
      },
      "message": "libata: fix off-by-one in error categorization\n\nATA_ECAT_DUBIOUS_BASE was too high by one and thus all DUBIOUS error\ncategorizations were wrong.  This passed test because only ATA_BUS and\nUNK_DEV were used during testing and the ones after them - ATA_BUS and\nan overflowed entry - behaved similarly.\n\nThis patch fixes the problem by adding DUBIOUS_NONE category and use\nit as base.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0dc36888d4422140f9eaf50f24953ec109f750a3",
      "tree": "80253b1831849e4063b73c31c15011c5e4c48404",
      "parents": [
        "537b53c1692960b8b3b0324e886fbe48cb9e5c00"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Dec 18 16:34:43 2007 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:14 2008 -0500"
      },
      "message": "libata: rename ATA_PROT_ATAPI_* to ATAPI_PROT_*\n\nATA_PROT_ATAPI_* are ugly and naming schemes between ATA_PROT_* and\nATA_PROT_ATAPI_* are inconsistent causing confusion.  Rename them to\nATAPI_PROT_* and make them consistent with ATA counterpart.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e6a73ab1c8e814ac7b0d69f44fde63299b639489",
      "tree": "0011b853ac6c61446f81639485baefd565db29e6",
      "parents": [
        "ce54d1616302117fa98513ae916bb3333e1c02ea"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Dec 13 16:01:37 2007 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:13 2008 -0500"
      },
      "message": "drivers/ata/libata-eh.c: fix printk warning\n\ndrivers/ata/libata-eh.c: In function `ata_port_pbar_desc\u0027:\ndrivers/ata/libata-eh.c:215: warning: long long unsigned int format, long unsigned int arg (arg 4)\n\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "e39eec13ff8c58520d77b5f977b1e0fa067fbd2c",
      "tree": "ab5cf19a2145dc4c8a90168751525ab3b8b69a9a",
      "parents": [
        "76326ac1ac1f524014ef36986fed97796b28ec6b"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Dec 01 18:05:39 2007 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "[libata] Build fix WRT ata_is_xxx() new API introduction\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    }
  ],
  "next": "76326ac1ac1f524014ef36986fed97796b28ec6b"
}
