)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "76326ac1ac1f524014ef36986fed97796b28ec6b",
      "tree": "56c662db2f65303e256fedac9a26362b921d759c",
      "parents": [
        "00115e0f5bc3bfdf3f3855ad89c8895f10458f92"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:59 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "libata: implement fast speed down for unverified data transfer mode\n\nIt\u0027s very likely that the configured data transfer mode is the wrong\none if device fails data transfers right after initial data transfer\nmode configuration (including NCQ on/off and xfermode).  libata EH\nneeds to speed down fast before upper layers give up on probing.\n\nThis patch implement fast speed down rules to handle such cases\nbetter.  Error occured while data transfer hasn\u0027t been verified\ntrigger fast back-to-back speed down actions until data transfer\nworks.\n\nThis change will make cable mis-detection and other initial\nconfiguration problems corrected before partition scanning code gives\nup.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "00115e0f5bc3bfdf3f3855ad89c8895f10458f92",
      "tree": "5f174c1d68e1ec0770fefdb40b813f321a838095",
      "parents": [
        "663f99b86ac7d4c0eed8c239638da0ea8849288b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:58 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "libata: implement ATA_DFLAG_DUBIOUS_XFER\n\nATA_DFLAG_DUBIOUS_XFER is set whenever data transfer speed or method\nchanges and gets cleared when data transfer command succeeds in the\nnewly configured transfer mode.\n\nThis will be used to improve speed down logic.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003c\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "663f99b86ac7d4c0eed8c239638da0ea8849288b",
      "tree": "413952549c288d31f5dec168e3a83fa232457093",
      "parents": [
        "3884f7b0a8382b89d8ca5da23bd98e3e15fc805b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:57 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "libata: adjust speed down rules\n\nSpeed down rules were too conservative.  Adjust them a bit.\n\n* More than 10 timeouts can\u0027t happen in 5 minutes as command timeout\n  is 30secs.  Lower the limit for rule #1 to 6.\n\n* 10 timeouts is too high for rule #3 too.  Lower it to 6.\n\n* SATAPI can benefit from falling back to PIO too.  Allow SATAPI\n  devices to fall back to PIO.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3884f7b0a8382b89d8ca5da23bd98e3e15fc805b",
      "tree": "a62ec936db81b3018d072cb03a28dc1d4337dd4a",
      "parents": [
        "6f1d1e3a03fd04a9d9c82fd3cf414020097bb142"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:56 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "libata: clean up EH speed down implementation\n\nClean up EH speed down implementation.\n\n* is_io boolean variable is replaced eflags.  is_io is ATA_EFLAG_IS_IO.\n\n* Error categories now have names.\n\n* Better comments.\n\n* Reorder 5min and 10min rules in ata_eh_speed_down_verdict()\n\n* Use local variable @link to cache @dev-\u003elink in ata_eh_speed_down()\n\nThese changes are to improve readability and ease further changes.\nThis patch doesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6f1d1e3a03fd04a9d9c82fd3cf414020097bb142",
      "tree": "ceb7917e7ca056c2884ef9dd2a239945ad45724c",
      "parents": [
        "02c05a27e884c9655dae5b1c8bc0cd89c060c43d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:55 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "libata: move ata_set_mode() to libata-eh.c\n\nMove ata_set_mode() to libata-eh.c.  ata_set_mode() is surely an EH\naction and will be more tightly coupled with the rest of error\nhandling.  Move it to libata-eh.c.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "02c05a27e884c9655dae5b1c8bc0cd89c060c43d",
      "tree": "94fb174047e12e60706f3930e5af601b6544d76c",
      "parents": [
        "405e66b38797875e80669eaf72d313dbb76533c3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:54 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "libata: factor out ata_eh_schedule_probe()\n\nFactor out ata_eh_schedule_probe() from ata_eh_handle_dev_fail() and\nata_eh_recover().  This is to improve maintainability and make future\nchanges easier.\n\nIn the previous revision, ata_dev_enabled() test was accidentally\ndropped while factoring out.  This problem was spotted by Bartlomiej.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "bd3adca52bc43b72c75db3e4c7809d47923b154c",
      "tree": "ec42456926e50a4b0adf916ac1c5f39f76e057f8",
      "parents": [
        "ae8d4ee7ff429136c8b482c3b38ed994c021d3fc"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Nov 02 09:32:38 2007 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:09 2008 -0500"
      },
      "message": "libata-acpi: add ACPI _PSx method\n\nACPI spec (ver 3.0a, p289) requires IDE power on/off executes ACPI _PSx\nmethods. As recently most PATA drivers use libata, this patch adds _PSx\nmethod support in libata. ACPI spec doesn\u0027t mention if SATA requires the\nsame _PSx method.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Len Brown \u003clen.brown@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4ccd3329a2e51473a86547a55f9e5f98f8f65b33",
      "tree": "40ef0e858a162c29b8a56392365588333b6eeb1e",
      "parents": [
        "2695e36616c3ece5e8e30666868fc7c90dc3fc75"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Jan 08 20:26:12 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jan 10 16:53:22 2008 -0500"
      },
      "message": "libata: don\u0027t normalize UNKNOWN to NONE after reset\n\nAfter non-classifying reset, ehc-\u003eclasses[] could contain\nATA_DEV_UNKNOWN which used to be normalized to ATA_DEV_NONE for\nconsistency.  However, this causes unfortunate side effect for drivers\nwhich have non-classifying hardresets (e.g. sata_nv) by making\nhardreset report ATA_DEV_NONE for non-classifying resets and thus\nmakes EH believe that the port is unoccupied and recovery can be\nskipped.  The end result is that after a device is swapped with\nanother one, the new device isn\u0027t attached after the old one is\ndetached.\n\nThis patch makes ata_eh_reset() not normalize UNKNOWN to NONE after\nnon-classifying resets.  This fixes the above problem.  As UNKNOWN and\nNONE are handled differently by only EH hotplug logic, this doesn\u0027t\ncause other behavior changes.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Robert Hancock \u003chancockr@shaw.ca\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "2695e36616c3ece5e8e30666868fc7c90dc3fc75",
      "tree": "5e37a45c7dbcf70f7947e10180f10515d716b49f",
      "parents": [
        "8048307dbc3cfc30690b131e786fb57157fbdb11"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 10 13:41:23 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jan 10 16:53:16 2008 -0500"
      },
      "message": "libata-pmp: propagate timeout to host link\n\nTimeout on downstream command may indicate transmission problem on\nhost link.  Propagate timeouts to host link.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f2dfc1a12bb1a029df62b018a8e1882e91041025",
      "tree": "6e1909e2c96440df7543f38a0a5b1410961a4b67",
      "parents": [
        "3264a8d8f95348e05cc6ac1ce747a8339ed7ab08"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Dec 12 12:12:46 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Dec 17 20:33:15 2007 -0500"
      },
      "message": "libata: update atapi_eh_request_sense() such that lbam/lbah contains buffer size\n\nWhile updating lbam/h for ATAPI commands, atapi_eh_request_sense() was\nleft out.  Update it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "abb6a88974a8c92b049eddf37685899c4021cf0a",
      "tree": "2d7effa375b1494212a11019c9f21158459578be",
      "parents": [
        "1c20a493caa30c5d47a394f9dbd86e6282323db9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Nov 28 23:16:09 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Dec 01 17:35:58 2007 -0500"
      },
      "message": "libata: report protocol and full CDB on error\n\nProtocol and CDB allocation size field are important in determining\nwhat went wrong with ATAPI commands.  Report them on failure.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "21bef6dd2b419f28c8096a8e30ad86dcbff44c02",
      "tree": "704912dbb4c28fd1a49d9256193762c19255d7a4",
      "parents": [
        "de753e5e8678d9674de0a3bda9ead9e770fdbf53"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Thu Nov 15 10:35:45 2007 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Nov 19 12:28:09 2007 +0900"
      },
      "message": "libata: remove unused functions\n\nThis patch removes the following obsolete functions:\n- libata-core.c: __sata_phy_reset()\n- libata-core.c: sata_phy_reset()\n- libata-eh.c: ata_qc_timeout()\n- libata-eh.c: ata_eng_timeout()\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "dfcc173d71b029eb2b10cf99bb5b4e8749e09799",
      "tree": "f8b62dc076a082560ffcf94f6f330150766c7ee7",
      "parents": [
        "08cf69d005acda706bc014c61301993758ce9c5f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:05 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:47:26 2007 -0400"
      },
      "message": "libata: consider errors not associated with commands for speed down\n\nlibata EH used to ignore errors not associated with commands when\ndetermining whether speed down is necessary or not.  This leads to the\nfollowing problems.\n\n* Errors not associated with commands can occur indefinitely without\n  libata EH taking corrective actions.\n\n* Upstream link errors don\u0027t trigger speed down when PMP is attached\n  to it and commands issued to downstream device trigger errors on the\n  upstream link.\n\nThis patch makes ata_eh_link_autopsy() consider errors not associated\nwith command for speed down.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "08cf69d005acda706bc014c61301993758ce9c5f",
      "tree": "a7254a45b25ea52bc77a3340650a9b45386f1650",
      "parents": [
        "416dc9ed206bba09807300ee5f155a81cebbd4a1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:04 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:46:54 2007 -0400"
      },
      "message": "libata: more robust reset failure handling\n\nReset failure is a critical error.  It results in disabling the link\nrequiring user intervention to re-enable it.  Make reset failure\nhandling more robust such that libata EH doesn\u0027t give up too early.\n\n* Temporary glitches during hardreset may lead to classification\n  failure when there\u0027s no softreset available.  Retry instead of\n  giving up.\n\n* Initial softreset or follow up softreset may fail classification.\n  Move classification error handling block out of followup softreset\n  block such that both cases are handled and retry instead of giving\n  up.  Also, on the last try, give ATA class a blind shot.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "416dc9ed206bba09807300ee5f155a81cebbd4a1",
      "tree": "483a86db1dbcdb443962f9597531ea0541ef61e6",
      "parents": [
        "cd955463bb4e96cfec18a0e5b6887c6797fb821d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:03 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:46:54 2007 -0400"
      },
      "message": "libata: cosmetic clean up / reorganization of ata_eh_reset()\n\nClean up and reorganize ata_eh_reset() to ease further changes.\n\n* Cache ARRAY_SIZE(ata_eh_reset_timeouts) in @max_tries.\n* Cache link-\u003eflags in @lflags.\n* Move failure handling block to the end of the function and unnest\n  both success and failure handling blocks.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cd955463bb4e96cfec18a0e5b6887c6797fb821d",
      "tree": "c55ee46b45751e4cf1f4fe6595784add305d91d5",
      "parents": [
        "f8d8e5799b75cf7ad530d2bf2a42229bf7360526"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:02 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:46:54 2007 -0400"
      },
      "message": "libata: fix timing computation in ata_eh_reset()\n\nAs jiffies changes asynchronously, it needs to be cached if unchanging\ntimestamp is needed.  The code in ata_eh_reset() intended to do that\nwith @now but never actually did it.  Fix it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "e027bd36c146582cef382364e5c826db93d4427b",
      "tree": "45f3d3db848a5bd44bcb2191db17cbfd30f4911a",
      "parents": [
        "f90f0828e57e97cb1ff19520d252882cfc6fb3c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Oct 26 16:19:26 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Oct 30 09:59:43 2007 -0400"
      },
      "message": "libata: implement and use ATA_QCFLAG_QUIET\n\nImplement ATA_QCFLAG_QUIET which indicates that there\u0027s no need to\nreport if the command fails with AC_ERR_DEV and set it for passthrough\ncommands.\n\nCombined with previous changes, this now makes device errors for all\ndirect commands reported directly to the issuer without going through\nEH actions and reporting.\n\nNote that EH is still invoked after non-IO device errors to determine\nthe nature of the error and resume command execution (some controller\nrequires special care after error to continue).  It just performs\ndefault maintenance after error, examines what\u0027s going on, realizes\nthat it\u0027s none of its business and reports the command failure without\nlogging any error messages.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f90f0828e57e97cb1ff19520d252882cfc6fb3c0",
      "tree": "14e67383982020fa1eba40af22d202e5ec04a77b",
      "parents": [
        "b666da35d900c26cbea1caa465649e2e0afa406c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Oct 26 16:12:41 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Oct 30 09:59:42 2007 -0400"
      },
      "message": "libata: stop being overjealous about non-IO commands\n\nlibata EH always revalidated device and retried failed command after\nerror except for ATAPI CCs.  This is unnecessary and hinders with\nusers issuing direct commands.  This patch makes the following\nchanges.\n\n* Make sata_sil24 not request ATA_EH_REVALIDATE on device errors.\n  sil24 is the only driver which does this.  All others let libata EH\n  core code decide.\n\n* Don\u0027t request revalidation after device error of non-IO command.\n  Revalidation doesn\u0027t really help anybody.  As ATA_EH_REVALIDATE\n  isn\u0027t set by default, there\u0027s no reason to clear it after sense data\n  is read.  Kill ATA_EH_REVALIDATE clearing code while at it.\n\n* Don\u0027t retry non-IO command after device error.  Device has rejected\n  the command.  There\u0027s no point in retrying.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "ca77329fb713b7fea6a307068e0dd0248e7aa640",
      "tree": "6a1b987f489d7c3f0bbe81647b4ee2b0216afe8a",
      "parents": [
        "ab6fc95f609b372a19e18ea689986846ab1ba29c"
      ],
      "author": {
        "name": "Kristen Carlson Accardi",
        "email": "kristen.c.accardi@intel.com",
        "time": "Thu Oct 25 00:58:59 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 11:00:35 2007 -0400"
      },
      "message": "[libata] Link power management infrastructure\n\nDevice Initiated Power Management, which is defined\nin SATA 2.5 can be enabled for disks which support it.\nThis patch enables DIPM when the user sets the link\npower management policy to \"min_power\".\n\nAdditionally, libata drivers can define a function\n(enable_pm) that will perform hardware specific actions to\nenable whatever power management policy the user set up\nfor Host Initiated Power management (HIPM).\nThis power management policy will be activated after all\ndisks have been enumerated and intialized.  Drivers should\nalso define disable_pm, which will turn off link power\nmanagement, but not change link power management policy.\n\nDocumentation/scsi/link_power_management_policy.txt has additional\ninformation.\n\nSigned-off-by:  Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4fb4615bc9465e7098665fa9616b6ac1f495f895",
      "tree": "fdd760b7dd485cb21ca5f6547e3db2335589aed0",
      "parents": [
        "cdeab1140799f09c5f728a5ff85e0bdfa5679cd2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Oct 29 16:45:05 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 06:21:33 2007 -0400"
      },
      "message": "libata: no need to speed down if already at PIO0\n\nAfter reset, transfer mode is always PIO0 regardless of\ndev-\u003exfer_mask.  Check dev-\u003epio_mode before trying to slow down after\nconfiguration failure.  This prevents bogus speed down before device\nis actually configured.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cdeab1140799f09c5f728a5ff85e0bdfa5679cd2",
      "tree": "51e70854ce9a41e3d7e0363fe5748635671b6a6f",
      "parents": [
        "a9efacbad1a735ec410acb26c9de72be8efb33d5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Oct 29 16:41:09 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 06:21:33 2007 -0400"
      },
      "message": "libata: relocate forcing PIO0 on reset\n\nForcing PIO0 on reset was done inside ata_bus_softreset(), which is a\nbit out of place as it should be applied to all resets - hard, soft\nand implementation which don\u0027t use ata_bus_softreset().  Relocate it\nsuch that...\n\n* For new EH, it\u0027s done in ata_eh_reset() before calling prereset.\n\n* For old EH, it\u0027s done before calling ap-\u003eops-\u003ephy_reset() in\n  ata_bus_probe().\n\nThis makes PIO0 forced after all resets.  Another difference is that\nreset itself is done after PIO0 is forced.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "054a5fbaceb2eb3a31ea843c1cf0b8e10b91478c",
      "tree": "cbf21985f3894b11fe00666cef8ac33bae4f007d",
      "parents": [
        "4dbfa39b6c95eb9d0aedb5bd00bb552b91c31e3d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Oct 25 18:30:36 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 06:15:25 2007 -0400"
      },
      "message": "libata: track SLEEP state and issue SRST to wake it up\n\nATA devices in SLEEP mode don\u0027t respond to any commands.  SRST is\nnecessary to wake it up.  Till now, when a command is issued to a\ndevice in SLEEP mode, the command times out, which makes EH reset the\ndevice and retry the command after that, causing a long delay.\n\nThis patch makes libata track SLEEP state and issue SRST automatically\nif a command is about to be issued to a device in SLEEP.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Bruce Allen \u003cballen@gravity.phys.uwm.edu\u003e\nCc: Andrew Paprocki \u003candrew@ishiboo.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0e06d9ce7a49d2ef2858cf07b44a324fc3a4c192",
      "tree": "c5dba8cb1a58aa6f002f19bf56aca53db64320dc",
      "parents": [
        "741b776335c3e91b0b8bf765a97f9484a3cd5034"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 24 15:21:26 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Oct 25 02:02:02 2007 -0400"
      },
      "message": "libata: cosmetic clean up in ata_eh_reset()\n\nLocal variable @action usage in ata_eh_reset() is a bit confusing.\nIt\u0027s used only to cache ehc-\u003ei.action to test reset masks after\nclearing it; however, due to the generic name \"action\", it\u0027s easy to\nmisinterpret the local variable as containing the selected reset\nmethod later.  Also, the reason for caching the original value is easy\nto miss.\n\nThis patch renames @action to @tmp_action and make it buffer newly\nselected value instead to improve readability.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "2dcb407e61458ded17503d6bd12b8c064965368b",
      "tree": "6044e032197b84f9943a385b0c9dbb6656c3f97f",
      "parents": [
        "01e7ae8c13bb06a2ce622ebace33bb7e28ef596c"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 19 06:42:56 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Oct 23 20:59:42 2007 -0400"
      },
      "message": "[libata] checkpatch-inspired cleanups\n\nTackle the relatively sane complaints of checkpatch --file.\n\nThe vast majority is indentation and whitespace changes, the rest are\n\n* #include fixes\n* printk KERN_xxx prefix addition\n* BSS/initializer cleanups\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "2855568b1ee4f58ef2c0a13ddfceb4b0b216b7ed",
      "tree": "79262af301c2386c2c391942991742653bc7935e",
      "parents": [
        "b06ce3e51e3df4394a584c234f11240b1c6f8d5b"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Oct 11 17:12:35 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:47 2007 -0400"
      },
      "message": "[libata] struct pci_dev related cleanups\n\n* remove pointless pci_dev_to_dev() wrapper.  Just directly reference\n  the embedded struct device like everyone else does.\n\n* pata_cs5520: delete cs5520_remove_one(), it was a duplicate of\n  ata_pci_remove_one()\n\n* linux/libata.h: don\u0027t bother including linux/pci.h, we don\u0027t need it.\n  Simply declare \u0027struct pci_dev\u0027 and assume interested parties will\n  include the header, as they should be doing anyway.\n\n* linux/libata.h: consolidate all CONFIG_PCI declarations into a\n  single location in the header.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "b06ce3e51e3df4394a584c234f11240b1c6f8d5b",
      "tree": "6a6f5a1cccdc2972b236d376afeba4fd296d5400",
      "parents": [
        "afaa5c373d2c49ee4865847031b82f1377f609d0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 15:06:48 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:47 2007 -0400"
      },
      "message": "libata: use ata_exec_internal() for PMP register access\n\nPMP registers used to be accessed with dedicated accessors -\u003epmp_read\nand -\u003epmp_write.  During reset, those callbacks are called with the\nport frozen so they should be able to run without depending on\ninterrupt delivery.  To achieve this, they were implemented polling.\n\nHowever, as resetting the host port makes the PMP to isolate fan-out\nports until SError.X is cleared, resetting fan-out ports while port is\nfrozen doesn\u0027t buy much additional safety.\n\nThis patch updates libata PMP support such that PMP registers are\naccessed using regular ata_exec_internal() mechanism and kills\n-\u003epmp_read/write() callbacks.  The following changes are made.\n\n* PMP access helpers - sata_pmp_read_init_tf(), sata_pmp_read_val(),\n  sata_pmp_write_init_tf() are folded into sata_pmp_read/write() which\n  are now standalone PMP register access functions.\n\n* sata_pmp_read/write() returns err_mask instead of rc.  This is\n  consistent with other functions which issue internal commands and\n  allows more detailed error reporting.\n\n* ahci interrupt handler is modified to ignore BAD_PMP and\n  spurious/illegal completion IRQs while reset is in progress.  These\n  conditions are expected during reset.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "afaa5c373d2c49ee4865847031b82f1377f609d0",
      "tree": "785203bd4538d2e3c36622ebc2eac93652c7e19e",
      "parents": [
        "2b789108fc1dcba22050a7e6e29ae5ebaea427dd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 15:06:10 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:47 2007 -0400"
      },
      "message": "libata: implement ATA_PFLAG_RESETTING\n\nImplement ATA_PFLAG_RESETTING.  This flag is set while reset is in\nprogress.  It\u0027s set before prereset is called and cleared after reset\nfails or postreset is finished.\n\nThis flag itself doesn\u0027t have any function.  It will be used by LLDs\nto tell whether reset is in progress if it needs to behave differently\nduring reset.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "2b789108fc1dcba22050a7e6e29ae5ebaea427dd",
      "tree": "1c241e249c388d956ad9771efacfd827a24ec41e",
      "parents": [
        "5f226c6bf78edab023ed1ea679531731d9df92a6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 15:05:44 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:47 2007 -0400"
      },
      "message": "libata: add @timeout to ata_exec_internal[_sg]()\n\nAdd @timeout argument to ata_exec_internal[_sg]().  If 0, default\ntimeout ata_probe_timeout is used.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "9073868376ed5fa1f247327ccb2e6f766d5b7eed",
      "tree": "ad79d7da02173e99c300988dfefbdf8fc1081088",
      "parents": [
        "94ff3d54080975686a3c41e73b8926030ee0c31f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 14:58:33 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:46 2007 -0400"
      },
      "message": "libata: wrap schedule_timeout_uninterruptible() in loop\n\nTasks in uninterruptible sleep might be woken up by unrelated events\nand should check whether the condition it was waiting for has actually\ntriggered.  Wrap schedule_timeout_uninterruptible() in loop to achieve\nit.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "94ff3d54080975686a3c41e73b8926030ee0c31f",
      "tree": "07bc1b90166697c4783fbe5fbbc5f56b37448ddf",
      "parents": [
        "abf6e8ed07213bdd9734be2e42639b79310bd81c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 14:57:56 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:46 2007 -0400"
      },
      "message": "libata: skip suppress reporting if ATA_EHI_QUIET\n\nATA_EHI_NO_AUTOPSY and ATA_EHI_QUIET are used during initial probing\nto skip exception analysis and reporting.  Usually, there\u0027s nothing to\nreport but on some allowed but rare corner cases (e.g. phy status\nchanged interrupt when IRQ is enabled on frozen port - this happens if\nIRQ pending status isn\u0027t cleared in the IRQ router or controller)\nexception messages get printed.\n\nSkip reporting if ATA_EHI_QUIET is set.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "1333e19434da116bc832e1b8925359d1565fedc9",
      "tree": "581785c8864f55347e1de0eb10850cc374b79b6e",
      "parents": [
        "6949b9148d3656afc13a2ccc06d13c071ec71bdc"
      ],
      "author": {
        "name": "Robert Hancock",
        "email": "hancockr@shaw.ca",
        "time": "Tue Oct 02 11:22:02 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:45 2007 -0400"
      },
      "message": "libata: add human-readable error value decoding\n\nThis adds human-readable decoding of the ATA status and error registers\n(similar to what drivers/ide does) as well as the SATA Serror register\nto libata error handling output.  This prevents the need to pore\nthrough standards documents to figure out the meaning of the bits\nin these registers when looking at error reports.  Some bits that\ndrivers/ide decoded are not decoded here, since the bits are either\ncommand-dependent or obsolete, and properly parsing them would add\ntoo much complexity.\n\nSigned-off-by: Robert Hancock \u003chancockr@shaw.ca\u003e\n\n[edited slightly to make output a bit more symmetric]\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "633273a3ed1cf37ced90475b0f95cf81deab04f1",
      "tree": "5cd42191d1ea8d5ee84fb2f7c7660f124787d9e8",
      "parents": [
        "3af9a77af9e2b72366363864bfcd3d51465ff98a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:19:54 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:44 2007 -0400"
      },
      "message": "libata-pmp: hook PMP support and enable it\n\nHook PMP support into libata and enable it.  Connect SCR and probing\nfunctions, and update ata_dev_classify() to detect PMP.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3495de733633d24ee97852080b737b436c110d6e",
      "tree": "e4b521a1bc1563679185ae15f32a74c3e1ae3b88",
      "parents": [
        "93328e1145c1989d1a214d34ac4e968dea7f7ed7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:19:53 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:43 2007 -0400"
      },
      "message": "libata-pmp: update ata_eh_reset() for PMP\n\nPMP always requires SRST to be enabled.  Also, hardreset reports\nclassification code from the first device when PMP is attached, not\nfrom the PMP.  Update ata_eh_reset() such that followup softreset is\nperformed if the controller is PMP capable and the host link is being\nreset.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "7d77b247088fb360aa74bfdd9e19bce1e1987668",
      "tree": "add1b03309dd6fa82eb0f47e1a88766695f38f28",
      "parents": [
        "e31e8531d668c9c4dc7883054788f89805188003"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:13 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:42 2007 -0400"
      },
      "message": "libata-pmp-prep: implement sata_async_notification()\n\nAN serves multiple purposes.  For ATAPI, it\u0027s used for media change\nnotification.  For PMP, for downstream PHY status change notification.\nImplement sata_async_notification() which demultiplexes AN.\n\nTo avoid unnecessary port events, ATAPI AN is not enabled if PMP is\nattached but SNTF is not available.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Kriten Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "668108d73bbb1ae85f01db38d6be822fd28ece1f",
      "tree": "72362b9c55d4558d3d40db647589bcc5fa1b9a09",
      "parents": [
        "f9df58cb27dfd605eced643bb3aa599fe4feeee8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:13 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:41 2007 -0400"
      },
      "message": "libata-pmp-prep: implement EH fast-fail path\n\nIf PMP itself becomes inaccessible while trying to link a downstream\nlink, spending time to recover the downstream link doesn\u0027t make any\nsense.  Make EH skip retry and fail fast if -ERESTART is received.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f9df58cb27dfd605eced643bb3aa599fe4feeee8",
      "tree": "23b5151855d07f3b25c081e29d14f5d353367248",
      "parents": [
        "fd995f7039f1955ccc6b43e1e2d168060b31e4b2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:13 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:41 2007 -0400"
      },
      "message": "libata-pmp-prep: implement ATA_LFLAG_DISABLED\n\nImplement ATA_LFLAG_DISABLED.  The flag indicates the link is disabled\ndue to EH recovery failure.  While a link is disabled, no EH action is\ntaken on the link and suspend/resume become noop too.\n\nThis will be used by PMP links to manage failed links.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "fd995f7039f1955ccc6b43e1e2d168060b31e4b2",
      "tree": "1aac318f211493183508a97aa6c8b2b6cb41d0b6",
      "parents": [
        "ae791c05694d7391ee9261a0450a50f7e95aedfd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:12 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:41 2007 -0400"
      },
      "message": "libata-pmp-prep: implement ATA_LFLAG_NO_RETRY\n\nSome PMP links are connected to internal pseudo devices which may come\nand go depending on situation.  There\u0027s no reason to try hard to\nrecover them.  ATA_LFLAG_NO_RETRY tells EH to not retry if the device\nattached to the link fails.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "ae791c05694d7391ee9261a0450a50f7e95aedfd",
      "tree": "73e3fbcd6cdfe667b5dcc512daaec7fb5941a132",
      "parents": [
        "da917d69d0ea63f5390716cba6e77f490ce96df9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:12 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:41 2007 -0400"
      },
      "message": "libata-pmp-prep: implement ATA_LFLAG_NO_SRST, ASSUME_ATA and ASSUME_SEMB\n\nSome links on some PMPs locks up on SRST and/or report incorrect\ndevice signature.  Implement ATA_LFLAG_NO_SRST, ASSUME_ATA and\nASSUME_SEMB to handle these quirky links.  NO_SRST makes EH avoid\nSRST.  ASSUME_ATA and SEMB forces class code to ATA and SEMB_UNSUP\nrespectively.  Note that SEMB isn\u0027t currently supported yet so the\n_UNSUP variant is used.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "da917d69d0ea63f5390716cba6e77f490ce96df9",
      "tree": "214670f42be4c140bbd05226adc8f86db51ee725",
      "parents": [
        "31cc23b34913bc173680bdc87af79e551bf8cc0d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:12 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:41 2007 -0400"
      },
      "message": "libata-pmp-prep: implement qc_defer helpers\n\nImplement ap-\u003enr_active_links (the number of links with active qcs),\nap-\u003eexcl_link (pointer to link which can be used by -\u003eqc_defer and is\ncleared when a qc with ATA_QCFLAG_CLEAR_EXCL completes), and\nata_link_active().\n\nThese can be used by -\u003eqc_defer() to implement proper command\nexclusion.  This set of helpers seem enough for both sil24 (ATAPI\nexclusion needed) and cmd-switching PMP.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "fb7fd61454c8681cd2621051a710b78a00369203",
      "tree": "491cbdbca867f59b9f1cb1032a4f40a33385e471",
      "parents": [
        "422c9daa8b5bea09f3393b11a106afd68850b39b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:12 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:41 2007 -0400"
      },
      "message": "libata-pmp-prep: make a number of functions global to libata\n\nMake a number of functions from libata-core.c and libata-eh.c global\nto libata (drivers/ata/libata.h).  These will be used by PMP.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "422c9daa8b5bea09f3393b11a106afd68850b39b",
      "tree": "76a4d15d77a26c049ca80ae850473b83df47d332",
      "parents": [
        "e0a7175263db4a226558883a51a88a5d2bc5d9fe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:12 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:40 2007 -0400"
      },
      "message": "libata-pmp-prep: add @new_class to ata_dev_revalidate()\n\nConsider newly found class code while revalidating.  PMP resetting\nalways results in valid class code and issuing PMP commands to\nATA/ATAPI device isn\u0027t very attractive.  Add @new_class to\nata_dev_revalidate() and check class code for revalidation.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a1e10f7e68a544c80081fee4fa550dc28389f44a",
      "tree": "cf6673989f360e0b12b2a658a7042d30420c14eb",
      "parents": [
        "cbcdd87593a1d85c5c4b259945a3a09eee12814d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Aug 18 13:28:49 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:37 2007 -0400"
      },
      "message": "libata: move EH repeat reporting into ata_eh_report()\n\nEH is sometimes repeated without any error or action.  For example,\nthis happens when probing IDENTIFY fails because of a phantom device.\nIn these cases, all the repeated EH does is making sure there is no\nunhandled error or pending action and return.  This repeation is\nnecessary to avoid losing any event which occurred while EH was in\nprogress.\n\nUnfortunately, this dry run causes annonying \"EH pending after\ncompletion\" message.  This patch moves the repeat reporting into\nata_eh_report() such that it\u0027s more compact and skipped on dry runs.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Mikael Pettersson \u003cmikep@it.uu.se\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cbcdd87593a1d85c5c4b259945a3a09eee12814d",
      "tree": "ee03df963a12ec7f30f6c3a8742421daf2c34f50",
      "parents": [
        "e923090ddd9fef1d4e06dc6c5295e29baced19f3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Aug 18 13:14:55 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:37 2007 -0400"
      },
      "message": "libata: implement and use ata_port_desc() to report port configuration\n\nCurrently, port configuration reporting has the following problems.\n\n* iomapped address is reported instead of raw address\n* report contains irrelevant fields or lacks necessary fields for\n  non-SFF controllers.\n* host-\u003eirq/irq2 are there just for reporting and hacky.\n\nThis patch implements and uses ata_port_desc() and\nata_port_pbar_desc().  ata_port_desc() is almost identical to\nata_ehi_push_desc() except that it takes @ap instead of @ehi, has no\nlocking requirement, can only be used during host initialization and \"\n\" is used as separator instead of \", \".  ata_port_pbar_desc() is a\nhelper to ease reporting of a PCI BAR or an offsetted address into it.\n\nLLD pushes whatever description it wants using the above two\nfunctions.  The accumulated description is printed on host\nregistration after \"[S/P]ATA max MAX_XFERMODE \".\n\nSFF init helpers and ata_host_activate() automatically add\ndescriptions for addresses and irq respectively, so only LLDs which\nisn\u0027t standard SFF need to add custom descriptions.  In many cases,\nsuch controllers need to report different things anyway.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "9b1e2658faf3f3095a96558c333b333c0e29dbc0",
      "tree": "38553202d35e9a82b2e943df525d482892fef505",
      "parents": [
        "cf1b86c8ab41fe2b2a2eb59c9a2ea9a7e463653a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:24 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:32 2007 -0400"
      },
      "message": "libata-link: update EH to deal with PMP links\n\nUpdate ata_eh_autopsy(), ata_eh_report(),\nata_eh_revalidate_and_attach() and ata_eh_recover() to deal with PMP\nlinks.  ata_eh_autopsy() and ata_eh_report() updates are\nstraightforward.  They just repeat the same operation over all\nconfigured links.  The only change to ata_eh_revalidate_and_attach()\nis avoiding calling -\u003ecable_select() on non-host ports.\n\nata_eh_recover() update is more complex as it first processes all\nresets and then performs the rest.  This is necessary as thawing with\nsome links in unknown state can be dangerous.  ehi-\u003eaction is cleared\non successful recovery of a link to avoid repeating recovery due to\nfailures in other links.\n\nata_eh_recover() iterates over only PMP links if PMP is attached, and,\non failure, the failing link is returned in @failed_link instead of\ndisabling devices directly.  These are to integrate ata_eh_recover()\ninto PMP EH later.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cf1b86c8ab41fe2b2a2eb59c9a2ea9a7e463653a",
      "tree": "10ef03fb1cae89d7415a5788dc330b4088b4234b",
      "parents": [
        "8989805d6d176aa32c0e9a68a536aa4c8ef5231c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:32 2007 -0400"
      },
      "message": "libata-link: update ata_scsi_error() to handle PMP links\n\nUpdate ata_scsi_error() to handle PMP links.  As error conditions can\noccur on both host and PMP links, __ata_port_for_each_link() is used.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "dbd826168d6267a26cf20cd233f6730f8d8047d6",
      "tree": "961486fededf27561a2d790ecab6dc50f94617a9",
      "parents": [
        "4fb37a25b976e8d1b34461330b3f2c6d9b94c133"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:31 2007 -0400"
      },
      "message": "libata-link: implement ata_link_abort()\n\nImplement ata_link_abort().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0260731f0187840e272bfa10d3ba0f3e417976f5",
      "tree": "d39219275e89ce782f3151b5ac47726957a81e24",
      "parents": [
        "cc0680a580b5be81a1ca321b58f8e9b80b5c1052"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:31 2007 -0400"
      },
      "message": "libata-link: linkify config/EH related functions\n\nMake the following functions deal with ata_link instead of ata_port.\n\n* ata_set_mode()\n* ata_eh_autopsy() and related functions\n* ata_eh_report() and related functions\n* suspend/resume related functions\n* ata_eh_recover() and related functions\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cc0680a580b5be81a1ca321b58f8e9b80b5c1052",
      "tree": "57454cdfdc9890f4e8d9f532e9cd240c7361951f",
      "parents": [
        "955e57dfde4ff75e4d7329ac7a3d645b16015309"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:31 2007 -0400"
      },
      "message": "libata-link: linkify reset\n\nMake reset methods and related functions deal with ata_link instead of\nata_port.\n\n* ata_do_reset()\n* ata_eh_reset()\n* all prereset/reset/postreset methods and related functions\n\nThis patch introduces no behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "955e57dfde4ff75e4d7329ac7a3d645b16015309",
      "tree": "8d1527aa575535963709dbef5133c81a1e519eb2",
      "parents": [
        "936fd7328657884d5a69a55666c74a55aa83ca27"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:30 2007 -0400"
      },
      "message": "libata-link: linkify EH action helpers\n\nMake ata_eh_about_to_do() and ata_eh_done() deal with ata_link instead\nof ata_port.\n\nThis patch introduces no behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "936fd7328657884d5a69a55666c74a55aa83ca27",
      "tree": "83a78a02d2c65ce835fe33882dfe5043d3240bff",
      "parents": [
        "f58229f8060055b08b34008ea08f31de1e2f003c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:30 2007 -0400"
      },
      "message": "libata-link: linkify PHY-related functions\n\nMake the following PHY-related functions to deal with ata_link instead\nof ata_port.\n\n* sata_print_link_status()\n* sata_down_spd_limit()\n* ata_set_sata_spd_limit() and friends\n* sata_link_debounce/resume()\n* sata_scr_valid/read/write/write_flush()\n* ata_link_on/offline()\n\nThis patch introduces no behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f58229f8060055b08b34008ea08f31de1e2f003c",
      "tree": "6ca5ef546671cb975ef3632fb032c238eaf1bb4c",
      "parents": [
        "9af5c9c97dc9d599281778864c72b385f0c63341"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:30 2007 -0400"
      },
      "message": "libata-link: implement and use link/device iterators\n\nMultiple links and different number of devices per link should be\nconsidered to iterate over links and devices.  This patch implements\nand uses link and device iterators - ata_port_for_each_link() and\nata_link_for_each_dev() - and ata_link_max_devices().\n\nThis change makes a lot of functions iterate over only possible\ndevices instead of from dev 0 to dev ATA_MAX_DEVICES.  All such\nchanges have been examined and nothing should be broken.\n\nWhile at it, add a separating comment before device helpers to\ndistinguish them better from link helpers and others.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "9af5c9c97dc9d599281778864c72b385f0c63341",
      "tree": "8359986bd42c4a9a5b1993078aa9ee4c7971ac3d",
      "parents": [
        "640fdb504941fa2b9f6f274716fc9f97f2bf6bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Aug 06 18:36:22 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:30 2007 -0400"
      },
      "message": "libata-link: introduce ata_link\n\nIntroduce ata_link.  It abstracts PHY and sits between ata_port and\nata_device.  This new level of abstraction is necessary to support\nSATA Port Multiplier, which basically adds a bunch of links (PHYs) to\na ATA host port.  Fields related to command execution, spd_limit and\nEH are per-link and thus moved to ata_link.\n\nThis patch only defines the host link.  Multiple link handling will be\nadded later.  Also, a lot of ap-\u003elink derefences are added but many of\nthem will be removed as each part is converted to deal directly with\nata_link instead of ata_port.\n\nThis patch introduces no behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "5ddf24c5ea9d715dc4f5d5d5dd1c9337d90466dc",
      "tree": "6ba89094decfada468fba1f4670b9395c6f66e42",
      "parents": [
        "4e57c517b3cbaceb7438eeec879ca129fc17442c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 16 14:29:41 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jul 20 08:26:26 2007 -0400"
      },
      "message": "libata: implement EH fast drain\n\nIn most cases, when EH is scheduled, all in-flight commands are\naborted causing EH to kick in immediately.  However, in some cases\n(especially with PMP), it\u0027s unclear which commands are affected by the\nerror condition and although aborting all in-flight commands work, it\nisn\u0027t optimal and may cause unnecessary disruption.  On the other\nhand, waiting for in-flight commands to drain themselves can take up\nto 30seconds.\n\nThis patch implements EH fast drain to handle such situations.  It\ngives in-flight commands some time to finish up but doesn\u0027t wait for\ntoo long.  After EH is scheduled, fast drain timer is started and if\nno other completion occurs in ATA_EH_FASTDRAIN_INTERVAL all in-flight\ncommands are aborted.  If any completion occurred in the interval, the\nport is given another interval to finish up itself.\n\nCurrently ATA_EH_FASTDRAIN_INTERVAL is 3 secs which should be enough\nfor finishing up most commands.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "4e57c517b3cbaceb7438eeec879ca129fc17442c",
      "tree": "c77ee2e10ff0b9d83d454937e5890c38314cbabf",
      "parents": [
        "fccb6ea5c240b9f29baa55448488fd6aee49f5a5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 16 14:29:41 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jul 20 08:26:26 2007 -0400"
      },
      "message": "libata: schedule probing after SError access failure during autopsy\n\nIf SError isn\u0027t accessible, EH can\u0027t tell whether hotplug has happened\nor not.  Report SError read failure with AC_ERR_OTHER and schedule\nprobing with hardreset.  This will be mainly useful for PMPs.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "fccb6ea5c240b9f29baa55448488fd6aee49f5a5",
      "tree": "d1c76e551ed15b58c9e10645a25b609b6ba398ee",
      "parents": [
        "f8f1e1cc0cd4d75c73e9a55a0ede8958e4fa14f1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 16 14:29:41 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jul 20 08:26:25 2007 -0400"
      },
      "message": "libata: clear HOTPLUG flag after a reset\n\nATA_EHI_HOTPLUGGED is a hint for reset functions indicating the the\nport might have gone through hotplug/unplug just before entering EH.\nReset functions modify their behaviors a bit to handle the situation\nbetter - e.g. using longer debouncing delay.\n\nCurrently, once HOTPLUG is set, it isn\u0027t cleared till the end of EH.\nThis is unnecessary and makes EH take longer.  Clear the HOTPLUGGED\nflag after a reset try (successful or not).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f1545154a5c96590b1992aac8ee1e2c445e301ed",
      "tree": "edd95f465369d8597c40e7fdcc9513dea5fd2712",
      "parents": [
        "008a78961ec72990d09d7625ef9499d7317d040d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 16 14:29:40 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jul 20 08:19:06 2007 -0400"
      },
      "message": "libata: quickly trigger SATA SPD down after debouncing failed\n\nDebouncing failure is a good indicator of basic link problem.  Use\n-EPIPE to indicate debouncing failure and make ata_eh_reset() invoke\nsata_down_spd_limit() if the error occurs during reset.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "008a78961ec72990d09d7625ef9499d7317d040d",
      "tree": "aa356bbd961b7425017a3037fec509ffb761d332",
      "parents": [
        "badc2341579511a247f5993865aa68379e283c5c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 16 14:29:40 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jul 20 08:19:05 2007 -0400"
      },
      "message": "libata: improve SATA PHY speed down logic\n\nsata_down_spd_limit() first reads the current SPD from SStatus and\nlimit the speed to the lower one of one below the current limit or one\nbelow the current SPD in SStatus.  SPD may not be accessible or valid\nwhen SPD down is requested making sata_down_spd_limit() fail when it\u0027s\nmost needed.\n\nThis patch makes the current SPD cached after each successful reset\nand forces GEN I speed (1.5Gbps) if neither of SStatus or the cached\nvalue is valid, so sata_down_spd_limit() is now guaranteed to lower\nthe speed limit if lower speed is available.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "5335b729064e03319cd2d5219770451dbb1d7f67",
      "tree": "72bd078bd714d06d55c555edcf183f2bdf30c9e8",
      "parents": [
        "b64bbc39f2122a2276578e40144af69ef01decd4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 16 14:29:40 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jul 20 08:02:11 2007 -0400"
      },
      "message": "libata: implement AC_ERR_NCQ\n\nWhen an NCQ command fails, all commands in flight are aborted and the\noffending one is reported using log page 10h.  Depending on controller\ncharacteristics and LLD implementation, all commands may appear as\nhaving a device error due to shared TF status making it hard to\ndetermine what\u0027s actually going on.\n\nThis patch adds AC_ERR_NCQ, marks the command reported by log page 10h\nwith it and print extra \"\u003cF\u003e\" after the error report for the command\nto help distinguishing the offending command.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "b64bbc39f2122a2276578e40144af69ef01decd4",
      "tree": "bd760da68bc785490ecd31060d892eeb7123782d",
      "parents": [
        "975530e8a33fdeb1ad80d82fde11d56bf9ed2760"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 16 14:29:39 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jul 20 08:02:11 2007 -0400"
      },
      "message": "libata: improve EH report formatting\n\nRequiring LLDs to format multiple error description messages properly\ndoesn\u0027t work too well.  Help LLDs a bit by making ata_ehi_push_desc()\ninsert \", \" on each invocation.  __ata_ehi_push_desc() is the raw\nversion without the automatic separator.\n\nWhile at it, make ehi_desc interface proper functions instead of\nmacros.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "fee7ca72d3dae1078031b6fd272b9930f43bd3d1",
      "tree": "9746c1663527ecb9602c227355d32762cc0798d7",
      "parents": [
        "790956e7bbf0a7b73e72b04d3bd63d974c7e29bb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Jul 01 19:05:58 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Jul 10 21:46:03 2007 -0400"
      },
      "message": "libata-link: separate out ata_eh_handle_dev_fail()\n\nSeparate out ata_eh_handle_dev_fail() from ata_eh_recover().  This is\nin preparation of ata_link and PMP support.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    }
  ],
  "next": "64578a3de723d502621860f9d4d28f34d001b066"
}
