)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "64578a3de723d502621860f9d4d28f34d001b066",
      "tree": "821e7ad8e8d6c3a0f3224b479ff000e00001a165",
      "parents": [
        "e5fa24dfdb522b642dbe9b8b1b692f68dce89835"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 15 03:28:16 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jul 09 12:17:32 2007 -0400"
      },
      "message": "libata-acpi: implement _GTM/_STM support\n\nImplement _GTM/_STM support.  acpi_gtm is added to ata_port which\nstores _GTM parameters over suspend/resume cycle.  A new hook\nata_acpi_on_suspend() is responsible for storing _GTM parameters\nduring suspend.  _STM is executed in ata_acpi_on_resume().  With this\nchange, invoking _GTF is safe on IDE hierarchy and acpi_sata check\nbefore _GTF is removed.\n\nata_acpi_gtm() and ata_acpi_stm() implementation is taken from Alan\nCox\u0027s pata_acpi implementation.  ata_acpi_gtm() is fixed such that the\nresult parameter is not shifted by sizeof(union acpi_object).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6746544c3b143ca7071d144f1882ccbe1f47b08d",
      "tree": "49106311ab2a748feda2fa91f977f700938d3d5c",
      "parents": [
        "69b16a5f4c4f1dab70d4d555c487c318c6878b3e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 15 03:28:16 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jul 09 12:17:31 2007 -0400"
      },
      "message": "libata: reimplement ACPI invocation\n\nThis patch reimplements ACPI invocation such that, instead of\nexporting ACPI details to the rest of libata, ACPI event handlers -\nata_acpi_on_resume() and ata_acpi_on_devcfg() - are used.  These two\nfunctions are responsible for determining whether specific ACPI method\nis used and when.\n\nOn resume, _GTF is scheduled by setting ATA_DFLAG_ACPI_PENDING device\nflag.  This is done this way to avoid performing the action on wrong\ndevice device (device swapping while suspended).\n\nOn every ata_dev_configure(), ata_acpi_on_devcfg() is called, which\nperforms _SDD and _GTF.  _GTF is performed only after resuming and, if\nSATA, hardreset as the ACPI spec specifies.  As _GTF may contain\narbitrary commands, IDENTIFY page is re-read after _GTF taskfiles are\nexecuted.\n\nIf one of ACPI methods fails, ata_acpi_on_devcfg() retries on the\nfirst failure.  If it fails again on the second try, ACPI is disabled\non the device.  Note that successful configuration clears ACPI failed\nstatus.\n\nWith all feature checks moved to the above two functions,\ndo_drive_set_taskfiles() is trivial and thus collapsed into\nata_acpi_exec_tfs(), which is now static and converted to return the\nnumber of executed taskfiles to be used by ata_acpi_on_resume().  As\nfailures are handled properly, ata_acpi_push_id() now returns -errno\non errors instead of unconditional zero.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "914616a3c2a54504f3b0eda0b67fcd32226b3e83",
      "tree": "25ed41a36178fbaba64745269e9fbe5bac4eecf0",
      "parents": [
        "09d7f9b0658072485a93247e1b6e15e661f860d2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 25 21:47:11 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jun 27 02:44:21 2007 -0400"
      },
      "message": "libata: fix infinite EH waiting bug\n\nWhen EH gives up after repeated exceptions, it doesn\u0027t\u0027t clear the\nPENDING bit on exit which leaves PENDING bit set without EH actually\nscheduled.  This makes ata_port_wait_eh() to wait forever makes rmmod\nhang on such port.  Fix it by clearing the flag.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "8b5bb2fa3d1c2a90ca921b6bfbb7e2de1e6dd273",
      "tree": "96bcf5f3e8ee14cc40df0e7b41e0d13dad1f110b",
      "parents": [
        "37301a559d87494614fb843b96b7528532236f82"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 25 21:43:04 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jun 27 02:44:20 2007 -0400"
      },
      "message": "libata: remove unused variable from ata_eh_reset()\n\nRemoved unused variable did_followup_srst from ata_eh_reset().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "8af500bc7f8f1a8822ff451596f818ecb6968f38",
      "tree": "249a033ea7921ab9f97aa7d1dc4931727eed403a",
      "parents": [
        "55f3952d45a439cecc36fd845a87026d04c82931"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 25 21:11:13 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jun 27 02:44:19 2007 -0400"
      },
      "message": "libata: kill non-sense warning message\n\nprereset() is now allowed to set flag for unsupported reset method.\nEH layer is responsible for selecting the fallback.  Remove non-sense\nwarning message.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a617c09f6d646b60f31efc8afd9f81b752bf21b7",
      "tree": "eed0f6bfc0b8e25caae0f36765efe48e640107a9",
      "parents": [
        "bc9a8a7eaa58d802a2b26c75edcc95cb92835db3"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon May 21 20:14:23 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon May 21 20:14:23 2007 -0400"
      },
      "message": "libata: Trim trailing whitespace\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "8575b814097af648dad284bd3087875a11b13d18",
      "tree": "33ee44f9bafab76229df2516c309f31fd6ef428d",
      "parents": [
        "54936f8b099325992f0f212a5e366fd5257c6c9c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri May 11 14:46:51 2007 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri May 11 18:09:18 2007 -0400"
      },
      "message": "libata: give devices one last chance even if recovery failed with -EINVAL\n\nAfter certain errors, some devices report complete garbage on\nIDENTIFY.  This can cause ata_dev_read_id() to fail with -EINVAL\nresulting in immediate disabling of the device.  Give the device one\nlast chance after -EINVAL to allow recovery from such situations.  As\n-EINVAL is triggered very rarely, this shouldn\u0027t cause any noticeable\naffect on more common error paths.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Harald Dunkel \u003charald.dunkel@t-online.de\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f4d6d00466ef4879e4289f18c2f59210a06a7ada",
      "tree": "60a0ec3c2872f1f21c2b546af3e04990b3bfa60b",
      "parents": [
        "1626aeb881236c8cb022b5e4ca594146a951d669"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 01 11:50:15 2007 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri May 11 18:09:18 2007 -0400"
      },
      "message": "libata: ignore EH scheduling during initialization\n\nlibata enables SCSI host during ATA host activation which happens\nafter IRQ handler is registered and IRQ is enabled.  All ATA ports are\nin frozen state when IRQ is enabled but frozen ports may raise limited\nnumber of IRQs after being frozen - IOW, -\u003efreeze() is not responsible\nfor clearing pending IRQs.  During normal operation, the IRQ handler\nis responsible for clearing spurious IRQs on frozen ports and it\nusually doesn\u0027t require any extra code.\n\nUnfortunately, during host initialization, the IRQ handler can end up\nscheduling EH for a port whose SCSI host isn\u0027t initialized yet.  This\nresults in OOPS in the SCSI midlayer.  This is relatively short window\nand scheduling EH for probing is the first thing libata does after\ninitialization, so ignoring EH scheduling until initialization is\ncomplete solves the problem nicely.\n\nThis problem was spotted by Berck E. Nash in the following thread.\n\n  http://thread.gmane.org/gmane.linux.kernel/519412\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Berck E. Nash \u003cflyboy@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "9666f4009c22f6520ac3fb8a19c9e32ab973e828",
      "tree": "eaac13cd5890af6298e5576a48c29891f0890bd1",
      "parents": [
        "0a3fd051c7036ef71b58863f8e5da7c3dabd9d3f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri May 04 21:27:47 2007 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri May 11 18:01:03 2007 -0400"
      },
      "message": "libata: reimplement suspend/resume support using sdev-\u003emanage_start_stop\n\nReimplement suspend/resume support using sdev-\u003emanage_start_stop.\n\n* Device suspend/resume is now SCSI layer\u0027s responsibility and the\n  code is simplified a lot.\n\n* DPM is dropped.  This also simplifies code a lot.  Suspend/resume\n  status is port-wide now.\n\n* ata_scsi_device_suspend/resume() and ata_dev_ready() removed.\n\n* Resume now has to wait for disk to spin up before proceeding.  I\n  couldn\u0027t find easy way out as libata is in EH waiting for the\n  disk to be ready and sd is waiting for EH to complete to issue\n  START_STOP.\n\n* sdev-\u003emanage_start_stop is set to 1 in ata_scsi_slave_config().\n  This fixes spindown on shutdown and suspend-to-disk.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "31daabda16063b64a99a526242add727601e43c3",
      "tree": "771e48219041e0a60f33f439c35324d0a3849224",
      "parents": [
        "b8cffc6ad8c000410186815b7bcc6b76ef1bbb13"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Feb 02 16:50:52 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue May 01 07:49:54 2007 -0400"
      },
      "message": "libata: reimplement reset sequencing\n\nlibata previously depended upon waits in prereset to get resets after\nhotplug right for both spin up and device ready wait.  This was\nnecessary both for reliablity and speed as reset was likely to fail if\ninitiated too early and each try usually took more than 30secs to\nfail.  Previous patches fixed the reliability part by fixing status\nand SCR handling in resets.  This patch remedies the speed part by\nimproving reset sequencing.\n\nPrereset waiting timeout is adjusted to 10s because spinup wait is\nreplaced by reset sequencing and !BSY wait is not as important as\nbefore.  During boot or module loading where the drive is already\nfully spun up, !BSY wait succeeds immediately, so 10s should be enough\nin most cases.  It matters after hotplugging or other error\nconditions, but in those cases, !BSY wait in prereset simply can\u0027t be\nrelied upon due to the varied and weird behaviors ATA controllers and\ndevices show.\n\nReset is now driven by ata_eh_reset_timeouts[] table which contains\ntimeouts for each reset try.  The first reset can be softreset but the\nfollowing ones are always hardreset if available.  Each timeout\ndefines deadline for the reset try.  If a reset try fails, reset is\nretried with the next timeout till the end of the timeout table is\nreached.  If a reset try fails before the timeout with error, libata\nwaits till the deadline of the failed try before retrying.\n\nIOW, the timeout table defines timetable of reset tries such that the\nn\u0027th try always begins at least after the sum of all previous timeouts\nhas passed.  The current timetable defines 4 tries and takes around 1\nminute.\n\n@0\t: First try.  This should succeed most of the time during boot.\n@10\t: 10s is enough to spin up most consumer harddrives.  Give it\n\t  another shot.\n@20\t: 20s should spin up \u003e 99% of working drives.  This has 30s\n\t  timeout for retarded devices needing long idleness post reset.\n@55\t: Final try with 5s timeout just in case.\n\nThe above timetable is trade off between not annoying the device too\nmuch with frequent resets and taking reasonable amount of time in most\ncases.  Some controllers may do better with shorter timeouts while\nothers may fare better with longer but we just can\u0027t rely upon LLD\nwriters to test each controller with wide variety of devices using\nvarious scenarios.  We need default behavior which reasonably fits\nmost cases.\n\nI\u0027ve tested the above timetable on a dozen SATA controllers and a few\nPATA controllers with about a dozen different drives from all major\nvendors and 4 different ODDs from three different vendors for both\nboot and hotplug (if available) cases.\n\nBoot probing is not affected unless the device is broken in which\ncases new code gives up on the port after a minute rather than five or\nnine minutes.  When hotplugging, most devices get detected on the\nfirst or second try.  Multi-platter drives with long spin up time\nwhich sometimes took \u003e 40 secs with the original code, now usually\ncomes up during the second try and at least right after the third try\n@20.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "d4b2bab4f26345ea1803feb23ea92fbe3f6b77bc",
      "tree": "30a9826351e597828de2b402f1c41b9fca94cf95",
      "parents": [
        "dc87c3985e9b442c60994308a96f887579addc39"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Feb 02 16:50:52 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue May 01 07:49:53 2007 -0400"
      },
      "message": "libata: add deadline support to prereset and reset methods\n\nAdd @deadline to prereset and reset methods and make them honor it.\nata_wait_ready() which directly takes @deadline is implemented to be\nused as the wait function.  This patch is in preparation for EH timing\nimprovements.\n\n* ata_wait_ready() never does busy sleep.  It\u0027s only used from EH and\n  no wait in EH is that urgent.  This function also prints \u0027be\n  patient\u0027 message automatically after 5 secs of waiting if more than\n  3 secs is remaining till deadline.\n\n* ata_bus_post_reset() now fails with error code if any of its wait\n  fails.  This is important because earlier reset tries will have\n  shorter timeout than the spec requires.  If a device fails to\n  respond before the short timeout, reset should be retried with\n  longer timeout rather than silently ignoring the device.\n\n  There are three behavior differences.\n\n  1. Timeout is applied to both devices at once, not separately.  This\n     is more consistent with what the spec says.\n\n  2. When a device passes devchk but fails to become ready before\n     deadline.  Previouly, post_reset would just succeed and let\n     device classification remove the device.  New code fails the\n     reset thus causing reset retry.  After a few times, EH will give\n     up disabling the port.\n\n  3. When slave device passes devchk but fails to become accessible\n     (TF-wise) after reset.  Original code disables dev1 after 30s\n     timeout and continues as if the device doesn\u0027t exist, while the\n     patched code fails reset.  When this happens, new code fails\n     reset on whole port rather than proceeding with only the primary\n     device.\n\n  If the failing device is suffering transient problems, new code\n  retries reset which is a better behavior.  If the failing device is\n  actually broken, the net effect is identical to it, but not to the\n  other device sharing the channel.  In the previous code, reset would\n  have succeeded after 30s thus detecting the working one.  In the new\n  code, reset fails and whole port gets disabled.  IMO, it\u0027s a\n  pathological case anyway (broken device sharing bus with working\n  one) and doesn\u0027t really matter.\n\n* ata_bus_softreset() is changed to return error code from\n  ata_bus_post_reset().  It used to return 0 unconditionally.\n\n* Spin up waiting is to be removed and not converted to honor\n  deadline.\n\n* To be on the safe side, deadline is set to 40s for the time being.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0d64a233fe6a8fd45a062fe125159854ffed60c7",
      "tree": "012d6288c549e2186555c280e7960cebf693415d",
      "parents": [
        "1188c0d83ca010c3799711e85e63dbde122e6a90"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 23 02:41:05 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Apr 28 14:51:33 2007 -0400"
      },
      "message": "libata: separate ATA_EHI_DID_RESET into DID_SOFTRESET and DID_HARDRESET\n\nSeparate ATA_EHI_DID_RESET into ATA_EHI_DID_SOFTRESET and\nATA_EHI_DID_HARDRESET.  ATA_EHI_DID_RESET is redefined as OR of the\ntwo flags.  This patch doesn\u0027t introduce any behavior change.  This\nwill be used later to determine whether _SDD is necessary or not.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "c1c4e8d55757f8aec5f95eb80860e340d717c217",
      "tree": "1ecd67225ea52427f701d56e57ae13f803f69a88",
      "parents": [
        "abcfa88bd47d433c796cf724a8a8b321a7190bdd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 23 02:05:53 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Apr 28 14:46:18 2007 -0400"
      },
      "message": "libata: add missing call to -\u003ecable_detect() in new EH path\n\n-\u003ecable_detect() used to be called on by the old ata_bus_probe() path.\nAdd invocation to ata_eh_revalidate_and_attach() right after IDENTIFYs\nare done.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a51d644af6eb0a93bc383e5f005faa445c87f335",
      "tree": "b1392796d9766e86e7a87d57dd0f7d62e0fa0dfa",
      "parents": [
        "55a6adeea4077521b4bba1dfe674f5835157a00b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 20 15:24:11 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Apr 28 14:16:02 2007 -0400"
      },
      "message": "libata: improve AC_ERR_DEV handling for -\u003epost_internal_cmd\n\n-\u003epost_internal_cmd is simplified EH for internal commands.  Its\nprimary mission is to stop the controller such that no rogue memory\naccess or other activities occur after the internal command is\nreleased.  It may provide error diagnostics by setting qc-\u003eerr_mask\nbut this hasn\u0027t been a requirement.\n\nTo ignore SETXFER failure for CFA devices, libata needs to know\nwhether a command was failed by the device or for any other reason.\nie. internal command needs to get AC_ERR_DEV right.\n\nThis patch makes the following changes to AC_ERR_DEV handling and\n-\u003epost_internal_cmd semantics to accomodate this need and simplify\ncallback implementation.\n\n1. As long as the correct bits in the result TF registers are set,\n   there is no need to set AC_ERR_DEV explicitly.  libata EH core\n   takes care of that for both normal and internal commands.\n\n2. The only requirement for -\u003epost_internal_cmd() is to put the\n   controller into quiescent state.  It needs not to set any err_mask.\n\n3. ata_exec_internal_sg() performs minimal error analysis such that\n   AC_ERR_DEV is automatically set as long as result_tf is filled\n   correctly.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "771b8dad9653d2659e0ffcc237184cb16c317788",
      "tree": "a901d1c2eddd4396bcc2df46b87f2abb271bf2fd",
      "parents": [
        "176efb054422bffe6b5a34194ffad134366c7f7e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Mar 14 01:20:51 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Apr 28 14:15:59 2007 -0400"
      },
      "message": "libata: hardreset on SERR_INTERNAL\n\nThere was a rare report where SB600 reported SERR_INTERNAL and SRST\ncouldn\u0027t get it out of the failure mode.  Hardreset on SERR_INTERNAL.\nAs the problem is intermittent, whether this fixes the problem or not\nhasn\u0027t been verified yet, but hardresetting the channel on internal\nerror is a good idea anyway.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "56287768e31268969abd94b38b931a29d1ced1ce",
      "tree": "1d43f1c19012dd75feb0028dacb22b9bd0d1e1eb",
      "parents": [
        "7152764700559b6a4041fdaba345df9a5cd962f0"
      ],
      "author": {
        "name": "Albert Lee",
        "email": "albertcc@tw.ibm.com",
        "time": "Mon Apr 02 11:30:46 2007 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Apr 04 02:12:27 2007 -0400"
      },
      "message": "libata: Clear tf before doing request sense (take 3)\n\npatch 2/4:\n  Clear tf before doing request sense.\n\nThis fixes the AOpen 56X/AKH timeout problem.\n(http://bugzilla.kernel.org/show_bug.cgi?id\u003d8244)\n\nSigned-off-by: Albert Lee \u003calbertcc@tw.ibm.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "8c3c52a8f00536ce55dafa055b4a211f878f3901",
      "tree": "c44fbfd5928ecd6329c3054fb88f04494d3508ef",
      "parents": [
        "55a61604cd1354e1783364e1c901034f2f474b7d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 22 22:24:19 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Mar 28 02:04:27 2007 -0400"
      },
      "message": "libata: IDENTIFY backwards for drive side cable detection\n\nFor drive side cable detection to work correctly, drives need to be\nidentified backwards such that the slave device releases PDIAG- before\nthe mater drive tries to detect cable type.  ata_bus_probe() was fixed\nby commit f31f0cc2f0b7527072d94d02da332d9bb8d7d94c but the new EH path\nwasn\u0027t fixed.  This patch makes new EH path do IDENTIFY backwards.\n\nata_dev_configure() for new devices are still performed master first.\nThis is to keep the detection messages in forward order.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "4aa9ab67fb9c0dfdb1692f4ec413120832a22ddc",
      "tree": "06b726e351b36e07434359a4d41d91de42891bcb",
      "parents": [
        "5851fadce8824d5d4b8fd02c22ae098401f6489e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Mar 12 17:24:08 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 19 11:55:43 2007 -0400"
      },
      "message": "libata: don\u0027t whine if -\u003eprereset() returns -ENOENT\n\n-\u003eprereset() returns -ENOENT to tell libata that the port is empty and\nreset sequencing should be stopped.  This is not an error condition.\nUpdate ata_eh_reset() such that it sets device classes to ATA_DEV_NONE\nand return success in on -ENOENT.  This makes spurious error message\ngo away.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6ffa01d88c9dd45e2ed917b5eeeb494d07efb1ab",
      "tree": "3fe262ccaa1c0f8c5e5d187216d8bfc70db34d95",
      "parents": [
        "438ac6d5e3f8106a6bd1a5682c508d660294a85d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Mar 02 17:32:47 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Mar 02 18:30:35 2007 -0500"
      },
      "message": "libata: add CONFIG_PM to libata core layer\n\nConditionalize all PM related stuff in libata core layer using\nCONFIG_PM.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "44877b4e22f391d39c6589412106a3668e81a05b",
      "tree": "10bf134c2c8c15e3504d67461b42f53c6de88523",
      "parents": [
        "5ce0cf6fafd02fb4c43fc1a1bee6069d6c0a36b1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Feb 21 01:06:51 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 21 04:58:20 2007 -0500"
      },
      "message": "libata: s/ap-\u003eid/ap-\u003eprint_id/g\n\nata_port has two different id fields - id and port_no.  id is\nsystem-wide 1-based unique id for the port while port_no is 0-based\nhost-wide port number.  The former is primarily used to identify the\nATA port to the user in printk messages while the latter is used in\nvarious places in libata core and LLDs to index the port inside the\nhost.\n\nThe two fields feel quite similar and sometimes ap-\u003eid is used in\nplace of ap-\u003eport_no, which is very difficult to spot.  This patch\nrenames ap-\u003eid to ap-\u003eprint_id to reduce the possibility of such bugs.\n\nSome printk messages are adjusted such that id string (ata%u[.%u])\nisn\u0027t printed twice and/or to use ata_*_printk() instead of hardcoded\nid format.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "7d47e8d4d4fb0c3d3bdc706759e70d5453b61ec3",
      "tree": "f197f58dde8fbc795a37c9645b02490749f16e7a",
      "parents": [
        "4ae72a1e469a3bcfd3c1f77dac62392c489bf9ca"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Feb 02 16:22:31 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 21 04:58:16 2007 -0500"
      },
      "message": "libata: put some intelligence into EH speed down sequence\n\nThe current EH speed down code is more of a proof that the EH\nframework is capable of adjusting transfer speed in response to error.\nThis patch puts some intelligence into EH speed down sequence.  The\nrules are..\n\n* If there have been more than three timeout, HSM violation or\n  unclassified DEV errors for known supported commands during last 10\n  mins, NCQ is turned off.\n\n* If there have been more than three timeout or HSM violation for known\n  supported command, transfer mode is slowed down.  If DMA is active,\n  it is first slowered by one grade (e.g. UDMA133-\u003e100).  If that\n  doesn\u0027t help, it\u0027s slowered to 40c limit (UDMA33).  If PIO is\n  active, it\u0027s slowered by one grade first.  If that doesn\u0027t help,\n  PIO0 is forced.  Note that this rule does not change transfer mode.\n  DMA is never degraded into PIO by this rule.\n\n* If there have been more than ten ATA bus, timeout, HSM violation or\n  unclassified device errors for known supported commands \u0026\u0026 speeding\n  down DMA mode didn\u0027t help, the device is forced into PIO mode.  Note\n  that this rule is considered only for PATA devices and is pretty\n  difficult to trigger.\n\nOne error can only trigger one rule at a time.  After a rule is\ntriggered, error history is cleared such that the next speed down\nhappens only after some number of errors are accumulated.  This makes\nsense because now speed down is done in bigger stride.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "4ae72a1e469a3bcfd3c1f77dac62392c489bf9ca",
      "tree": "8408499b85ddbe70077671117aa30da274f03363",
      "parents": [
        "458337dbb120d33f326e2b19d54eca8cf179b5c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Feb 02 16:22:30 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 21 04:58:16 2007 -0500"
      },
      "message": "libata: improve probe failure handling\n\n* Move forcing device to PIO0 on device disable into\n  ata_dev_disable().  This makes both old and new EHs act the same\n  way.\n\n* Speed down only PIO mode on probe failure.  All commands used during\n  probing are PIO commands.  There\u0027s no point in speeding down DMA.\n\n* Retry at least once after -ENODEV.  Some devices report garbled\n  IDENTIFY data after certain events.  This shouldn\u0027t cause device\n  detach and re-attach.\n\n* Rearrange EH failure path for simplicity.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "458337dbb120d33f326e2b19d54eca8cf179b5c0",
      "tree": "91bc5284430b5a8856ec1b2fd4c277c4eb3f8827",
      "parents": [
        "a619f981b477035027dd27dfbee6148b4cd4a83c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Feb 02 16:22:30 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 21 04:58:16 2007 -0500"
      },
      "message": "libata: improve ata_down_xfermask_limit()\n\nMake ata_down_xfermask_limit() accept @sel instead of @force_pio0.\n@sel selects how the xfermask limit will be adjusted.  The following\nselectors are defined.\n\n* ATA_DNXFER_PIO\t: only speed down PIO\n* ATA_DNXFER_DMA\t: only speed down DMA, don\u0027t cause transfer mode change\n* ATA_DNXFER_40C\t: apply 40c cable limit\n* ATA_DNXFER_FORCE_PIO\t: force PIO\n* ATA_DNXFER_FORCE_PIO0\t: force PIO0 (same as original with @force_pio0 \u003d\u003d 1)\n* ATA_DNXFER_ANY\t: same as original with @force_pio0 \u003d\u003d 0\n\nCurrently, only ANY and FORCE_PIO0 are used to maintain the original\nbehavior.  Other selectors will be used later to improve EH speed down\nsequence.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "726f0785b608d09bdd64bdbadc09217ebbf9920e",
      "tree": "cefc97e9d5fefb2735b1b7a5ca22d3b3cc742b13",
      "parents": [
        "16454445e1f0ca21ca2f29accb58478a7ff765a2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Jan 03 17:30:39 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Feb 09 17:39:31 2007 -0500"
      },
      "message": "libata: kill qc-\u003ensect and cursect\n\nlibata used two separate sets of variables to record request size and\ncurrent offset for ATA and ATAPI.  This is confusing and fragile.\nThis patch replaces qc-\u003ensect/cursect with qc-\u003enbytes/curbytes and\nkills them.  Also, ata_pio_sector() is updated to use bytes for\nqc-\u003ecursg_ofs instead of sectors.  The field used to be used in bytes\nfor ATAPI and in sectors for ATA.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "03ee5b1cdd09ed1ee2e75d0bc647fc5db66b9d07",
      "tree": "10ecde7e2c008406bdbc13bd0e1fd22246033b3b",
      "parents": [
        "a718728f9e40ec79c0879ec6509a54fee214f5b2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Jan 26 20:10:25 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Jan 27 03:21:26 2007 -0500"
      },
      "message": "libata: fix ata_eh_suspend() return value\n\nata_eh_suspend() was returning 0 regardless of failure.  This bug has\npotential to lose data on suspend.  Fix it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "79a55b72a1996f77e9d23c7a5282e5839d45beb3",
      "tree": "9b1a4633b6810b6e28f7dd409f9fd47444f053f8",
      "parents": [
        "501e0c500217e38276d61445ee0839b3f2c66d05"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 18 17:22:18 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jan 19 19:22:45 2007 -0500"
      },
      "message": "libata: fix handling of port actions in per-dev action mask\n\nlibata EH ignores port-wide actions in per-dev action mask.  However,\ndevice resume requests EH_SOFTRESET using per-dev action mask.  Under\ncertain circumstances, this results in not resetting frozen port after\nresuming which causes failure of all commands.\n\nThis patch allows port-wide actions to be requested in per-dev action\nmask.  Before EH recovery starts, port-wide actions will be collected.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "9db73724453a9350e1c22dbe732d427e2939a5c9",
      "tree": "15e3ead6413ae97398a54292acc199bee0864d42",
      "parents": [
        "4c1ac1b49122b805adfa4efc620592f68dccf5db",
        "e62438630ca37539c8cc1553710bbfaa3cf960a7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Dec 05 17:01:28 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@warthog.cambridge.redhat.com",
        "time": "Tue Dec 05 17:01:28 2006 +0000"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tdrivers/ata/libata-scsi.c\n\tinclude/linux/libata.h\n\nFuther merge of Linus\u0027s head and compilation fixups.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "800b399669ad495ad4361d134df87401ae36f44f",
      "tree": "19e29f655836cd4808c668d736a83df552b7d8dd",
      "parents": [
        "3ac551a6a63dcbc707348772a27bd7090b081524"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Dec 03 21:34:13 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Dec 03 07:58:10 2006 -0500"
      },
      "message": "[PATCH] libata: always use polling IDENTIFY\n\nlibata switched to IRQ-driven IDENTIFY when IRQ-driven PIO was\nintroduced.  This has caused a lot of problems including device\nmisdetection and phantom device.\n\nATA_FLAG_DETECT_POLLING was added recently to selectively use polling\nIDENTIFY on problemetic drivers but many controllers and devices are\naffected by this problem and trying to adding ATA_FLAG_DETECT_POLLING\nfor each such case is diffcult and not very rewarding.\n\nThis patch makes libata always use polling IDENTIFY.  This is\nconsistent with libata\u0027s original behavior and drivers/ide\u0027s behavior.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a569a30d301e4dbc0ad67a211292edece2da1146",
      "tree": "3c1fcb81485de3c5489c32251e9b671897517f6c",
      "parents": [
        "6a36261e63770ab61422550b774fe949ccca5fa9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 21 10:40:51 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Dec 03 17:56:23 2006 +0900"
      },
      "message": "[PATCH] libata: don\u0027t request sense if the port is frozen\n\nIf EH command is issued to a frozen port, it fails with AC_ERR_SYSTEM.\nlibata used to request sense even when the port is frozen needlessly\nadding AC_ERR_SYSTEM to err_mask.  Don\u0027t do it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "664e8503fee2f299d0f96eaab0f5f8fae8fad325",
      "tree": "253dbba43a95e58b168a3876269d2b32b624433d",
      "parents": [
        "2dec7555e6bf2772749113ea0ad454fcdb8cf861"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Nov 20 16:05:34 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 01 22:47:03 2006 -0500"
      },
      "message": "[PATCH] libata: print cdb[0] in failed qc report\n\nPrint cdb[0] in failed qc report.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "8a93758170a58b5afe3e45d7d5bebbdd401a24c2",
      "tree": "fcc4682ba6204b15daeaa6aa2d5bbc4cfafa7945",
      "parents": [
        "5e56a37c3706498b25049bb556928c461875250f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 14 22:36:12 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 01 22:45:55 2006 -0500"
      },
      "message": "[PATCH] libata: improve failed qc reporting\n\nImprove failed qc reporting.  The original message didn\u0027t include the\nactual command nor full error status and it was necessary to\ntemporarily patch the code to find out exactly which command is\ncausing problem.  This patch makes EH report full command and result\nTFs along with data direction and length.  This change will make bug\nreports more useful.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "55a8e2c83ce50548dfef74bb19dfe2b809cb3099",
      "tree": "1d5ed12c49a254364f9009e9cdbf4609b92f3afb",
      "parents": [
        "bff0464769f2a1bd348265de704471747378e247"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Nov 10 18:08:10 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 01 22:45:55 2006 -0500"
      },
      "message": "[PATCH] libata: implement presence detection via polling IDENTIFY\n\nOn some controllers (ICHs in piix mode), there is *NO* reliable way to\ndetermine device presence other than issuing IDENTIFY and see how the\ntransaction proceeds by watching the TF status register.\n\nlibata acted this way before irq-pio and phantom devices caused very\nlittle problem but now that IDENTIFY is performed using IRQ drive PIO,\nsuch phantom devices now result in multiple 30sec timeouts during\nboot.\n\nThis patch implements ATA_FLAG_DETECT_POLLING.  If a LLD sets this\nflag, libata core issues the initial IDENTIFY in polling mode and if\nthe initial data transfer fails w/ HSM violation, the port is\nconsidered to be empty thus replicating the old libata and IDE\nbehavior.\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "bff0464769f2a1bd348265de704471747378e247",
      "tree": "50b04bf291837cb99ca67ac557d577aaf84a75f8",
      "parents": [
        "b3362f88a8f938fb700fdedf074ec222cba7cf83"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Nov 10 18:08:10 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 01 22:45:55 2006 -0500"
      },
      "message": "[PATCH] libata: convert @post_reset to @flags in ata_dev_read_id()\n\nMake ata_dev_read_id() take @flags instead of @post_reset.  Currently\nthere is only one flag defined - ATA_READID_POSTRESET, which is\nequivalent to @post_reset.  This is preparation for polling presence\ndetection.\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "baa1e78a834c917984a4659fd282f712c17ee3bf",
      "tree": "6c8035d6d49752f7ea81696fa6e61c424b29589c",
      "parents": [
        "efdaedc443e935eda82e9e78a6e65d1f993d242f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Nov 01 18:39:27 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 01 22:41:31 2006 -0500"
      },
      "message": "[PATCH] libata: implement ATA_EHI_SETMODE and ATA_EHI_POST_SETMODE\n\nlibata EH used to perform ata_set_mode() iff the EH session performed\nreset as indicated by ATA_EHI_DID_RESET.  This is incorrect because\n-\u003edev_config() called by revalidation is allowed to modify transfer\nmode which ata_set_mode() should take care of.  This patch implements\nthe following two flags.\n\n* ATA_EHI_SETMODE: set during EH to schedule ata_set_mode().  Both new\n  device attachment and revalidation set this flag.\n\n* ATA_EHI_POST_SETMODE: set while the device is revalidated after\n  ata_set_mode().  Post-setmode revalidation is different from initial\n  configuaration and EH revalidation in that -\u003edev_config() is not\n  allowed tune transfer mode.  LLD can use this flag to determine\n  whether it\u0027s allowed to tune transfer mode.  Note that POST_SETMODE\n  -\u003edev_config() is guaranteed to be preceded by non-POST_SETMODE\n  -\u003edev_config().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "efdaedc443e935eda82e9e78a6e65d1f993d242f",
      "tree": "8bcdc05ec85f7a9e7b0a5b1e5014ec21cf4e8aac",
      "parents": [
        "ad616ffbda8caf3ce76d2b43027e789d732abf48"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Nov 01 18:38:52 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 01 22:41:31 2006 -0500"
      },
      "message": "[PATCH] libata: implement ATA_EHI_PRINTINFO\n\nImplement ehi flag ATA_EHI_PRINTINFO.  This flag is set when device\nconfiguration needs to print out device info.  This used to be handled\nby @print_info argument to ata_dev_configure() but LLDs also need to\nknow about it in -\u003edev_config() callback.\n\nThis patch replaces @print_info w/ ATA_EHI_PRINTINFO and make sata_sil\nprint workaround messages only on the initial configuration.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c",
      "tree": "5849b4e3c17daa70a7e81cfdeaddac9ac8a0e953",
      "parents": [
        "0f9005a6f7a82f4aacbd72f7b92322a8ca1c3f97"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:54:01 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:54:01 2006 +0000"
      },
      "message": "WorkStruct: Separate delayable and non-delayable events.\n\nSeparate delayable work items from non-delayable work items be splitting them\ninto a separate structure (delayed_work), which incorporates a work_struct and\nthe timer_list removed from work_struct.\n\nThe work_struct struct is huge, and this limits it\u0027s usefulness.  On a 64-bit\narchitecture it\u0027s nearly 100 bytes in size.  This reduces that by half for the\nnon-delayable type of event.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    }
  ],
  "next": "c961922b73dab429a759f560952fd4c3f60bd6b3"
}
