)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "c961922b73dab429a759f560952fd4c3f60bd6b3",
      "tree": "cbd6d6424d508fd208ae9992c1cf11b3b8a91fb1",
      "parents": [
        "4735ebedf37731160e3d3efc9fc9d4939c66fefa"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Tue Sep 26 17:53:38 2006 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Sep 26 13:34:27 2006 -0400"
      },
      "message": "[PATCH] libata-eh: Remove layering violation and duplication when handling absent ports\n\nThis removes the layering violation where drivers have to fiddle\ndirectly with EH flags. Instead we now recognize -ENOENT means \"no port\"\nand do the handling in the core code.\n\nThis also removes an instance of a call to disable the port, and an\nidentical printk from each driver doing this. Even better - future rule\nchanges will be in one place only.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "23930fa1cebfea6f79881c588ccd1b0781e49e3f",
      "tree": "36d29e3f83661c4f5f45b6f74ac0d5f9886867a8",
      "parents": [
        "36b35a5be0e4b406acd816e2122d153e875105be",
        "4f5537de7c1531398e84e18a24f667e49cc94208"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Sep 24 01:52:47 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Sep 24 01:52:47 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 into upstream\n"
    },
    {
      "commit": "cca3974e48607c3775dc73b544a5700b2e37c21a",
      "tree": "0777d6121ba199af0aad196eb5a693510ec8e62e",
      "parents": [
        "54a86bfc3d4601be9c36cd4e8a1bdc580c98fa6a"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Aug 24 03:19:22 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Aug 24 03:19:22 2006 -0400"
      },
      "message": "libata: Grand renaming.\n\nThe biggest change is that ata_host_set is renamed to ata_host.\n\n* ata_host_set\t\t\t\u003d\u003e ata_host\n* ata_probe_ent-\u003ehost_flags\t\u003d\u003e ata_probe_ent-\u003eport_flags\n* ata_probe_ent-\u003ehost_set_flags\t\u003d\u003e ata_probe_ent-\u003e_host_flags\n* ata_host_stats\t\t\u003d\u003e ata_port_stats\n* ata_port-\u003ehost\t\t\u003d\u003e ata_port-\u003escsi_host\n* ata_port-\u003ehost_set\t\t\u003d\u003e ata_port-\u003ehost\n* ata_port_info-\u003ehost_flags\t\u003d\u003e ata_port_info-\u003eflags\n* ata_(.*)host_set(.*)\\(\\)\t\u003d\u003e ata_\\1host\\2()\n\nThe leading underscore in ata_probe_ent-\u003e_host_flags is to avoid\nreusing -\u003ehost_flags for different purpose.  Currently, the only user\nof the field is libata-bmdma.c and probe_ent itself is scheduled to be\nremoved.\n\nata_port-\u003ehost is reused for different purpose but this field is used\ninside libata core proper and of different type.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "c6fd280766a050b13360d7c2d59a3d6bd3a27d9a",
      "tree": "fdbeab639bc3dec29267bbf4b32cff7c8dd03593",
      "parents": [
        "79ed35a9f139ad2b2653dfdd5f45a8f1453e2cbb"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Aug 10 07:31:37 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Aug 10 07:31:37 2006 -0400"
      },
      "message": "Move libata to drivers/ata.\n"
    },
    {
      "commit": "13abf50df209008b5d44075bafeeab42ace56aa6",
      "tree": "5e8ea48d61c7e58560b04d33609a4a2bc6cf0012",
      "parents": [
        "7c8c2cff81b2b7f6dd3f9fd7b77033c1be5d7920"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 10 23:18:46 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 19 14:06:53 2006 -0400"
      },
      "message": "[PATCH] libata: improve EH action and EHI flag handling\n\nUpdate ata_eh_about_to_do() and ata_eh_done() to improve EH action and\nEHI flag handling.\n\n* There are two types of EHI flags - one which expires on successful\n  EH and the other which expires on a successful reset.  Make this\n  distinction clear.\n\n* Unlike other EH actions, reset actions are represented by two EH\n  action masks and a EHI modifier.  Implement correct about_to_do/done\n  semantics for resets.  That is, prior to reset, related EH info is\n  sucked in from ehi and cleared, and after reset is complete, related\n  EH info in ehc is cleared.\n\nThese changes improve consistency and remove unnecessary EH actions\ncaused by stale EH action masks and EHI flags.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "7c8c2cff81b2b7f6dd3f9fd7b77033c1be5d7920",
      "tree": "ce03730193b08639e90f95d3419857053e3d283c",
      "parents": [
        "4528e4da79675b4995e085046b8ffbe0415c3261"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 10 23:18:23 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 19 14:06:53 2006 -0400"
      },
      "message": "[PATCH] libata: fix eh_skip_recovery condition\n\n* (ata_dev_absent() || ata_dev_ready()) test doesn\u0027t indicate\n  SUSPENDED state properly.  Fix it.\n\n* Link resuming resets shouldn\u0027t be skipped.  Don\u0027t skip recovery on\n  EHI_RESUME_LINK.  This doesn\u0027t matter for host ports as EHI_RESUME\n  always coincides with EHI_HOTPLUGGED which makes attached disabled\n  devices vacant.  However, PMP reset causes non-hotplug link-resuming\n  resets which shouldn\u0027t be skipped.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "4528e4da79675b4995e085046b8ffbe0415c3261",
      "tree": "9ddea7e2229a282879212ba9d4ba16f0e0a27955",
      "parents": [
        "f5beec49636bf8d5a34065c8ab030cd4ea84516f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Jul 08 20:17:26 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 19 14:06:53 2006 -0400"
      },
      "message": "[PATCH] libata: fix autopsy ehc-\u003ei.action and ehc-\u003ei.dev handling\n\nCommit 0662c58b3265f52f708a6d59476bc7862b01f9c0 updated\nata_eh_autopsy() to OR determined action to ehc-\u003ei.action to preserve\naction mask set directly into ehc-\u003ei.action by nested functions.  This\nbroke action mask clearing on SENSE_VALID case causing revalidation\nand EH complete message on successful ATAPI CC.\n\nThis patch removes two local variables - action and failed_dev - which\ncache ehc-\u003ei.action and ehc-\u003ei.dev respectively, and make the function\ndirectly modify ehc-\u003ei.* fields to remove aliasing issues.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "500530f652f9e5dabe7571b018dec47742ce0f16",
      "tree": "cb9653c45a7e37d9bfe8dcc3923ed6b33ca134ea",
      "parents": [
        "d6f26d1f1f1128a896f38a7f8426daed0a1205a2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 03 16:07:27 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 05 22:16:28 2006 -0400"
      },
      "message": "[PATCH] libata: reimplement controller-wide PM\n\nReimplement controller-wide PM.  ata_host_set_suspend/resume() are\ndefined to suspend and resume a host_set.  While suspended, EHs for\nall ports in the host_set are pegged using ATA_FLAG_SUSPENDED and\nfrozen.\n\nBecause SCSI device hotplug is done asynchronously against the rest of\nlibata EH and the same mutex is used when adding new device, suspend\ncannot wait for hotplug to complete.  So, if SCSI device hotplug is in\nprogress, suspend fails with -EBUSY.\n\nIn most cases, host_set resume is followed by device resume.  As each\nresume operation requires a reset, a single host_set-wide resume\noperation may result in multiple resets.  To avoid this, resume waits\nupto 1 second giving PM to request resume for devices.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "02670bf379267f55a43aa57f6895689697e90eb3",
      "tree": "830b74690371e39cf8e94de678768993be743437",
      "parents": [
        "c0b6c0377c32fe3f6a2cf1e018db6da8a3b78379"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 03 16:07:26 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 05 22:16:28 2006 -0400"
      },
      "message": "[PATCH] libata: implement PM EH actions\n\nImplement two PM per-dev EH actions - ATA_EH_SUSPEND and\nATA_EH_RESUME.  Each action puts the target device into suspended mode\nand resumes from it respectively.\n\nOnce a device is put to suspended mode, no EH operations other than\nRESUME is allowed on the device.  The device will stay suspended till\nit gets resumed and thus reset and revalidated.  To implement this, a\nnew device state helper - ata_dev_ready() - is implemented and used in\nEH action implementations to make them operate only on attached \u0026\nrunning devices.\n\nIf all possible devices on a port are suspended, reset is skipped too.\nThis prevents spurious events including hotplug events from disrupting\nsuspended devices.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "1cdaf534f829b8759ba30f97d5e8dceb2ab77ba4",
      "tree": "4cad6cd3a04d3c10ab42e7d2c76c8f6e2467e506",
      "parents": [
        "e9c839142d698086d3fe33a0daafde55ddd00c4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 03 16:07:26 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 05 22:16:27 2006 -0400"
      },
      "message": "[PATCH] libata: implement ATA_EHI_NO_AUTOPSY and QUIET\n\nImplement ATA_EHI_NO_AUTOPSY and QUIET.  These used to be implied by\nATA_PFLAG_LOADING, but new power management and PMP support need to\nuse these separately.  e.g. Suspend/resume operations shouldn\u0027t print\nfull EH messages and resume shouldn\u0027t be recorded as an error.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "e30349d27e093f32ef517b5416d9dce1998d4676",
      "tree": "4979a58ac85db319abfc295aa8c4534f65ecc676",
      "parents": [
        "0662c58b3265f52f708a6d59476bc7862b01f9c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 03 03:02:15 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 05 22:05:34 2006 -0400"
      },
      "message": "[PATCH] libata: replace ap_lock w/ ap-\u003elock in ata_scsi_error()\n\nap_lock was used because \u0026ap-\u003ehost_set-\u003elock was too long and used a\nlot.  Now that \u0026ap-\u003ehost_set-\u003elock is replaced with ap-\u003elock, there\u0027s\nno reason to keep ap_lock.\n\n[ed. note: that\u0027s not entirely true.  ap_lock is a local variable,\ncaching the results of a de-ref.  In theory, if the compiler is smart\nenough, this patch is cosmetic.  However, since this is not a fast\npath (it is the error path), this patch is nonetheless acceptable,\neven though it _may_ introduce a performance regression.]\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0662c58b3265f52f708a6d59476bc7862b01f9c0",
      "tree": "2be67b2206da998fe51b40946d351c99cc888f9c",
      "parents": [
        "b51e9e5db0e36239f786692f1cac6e435ed30c66"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jul 03 02:54:58 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 05 21:51:42 2006 -0400"
      },
      "message": "[PATCH] libata: fix ehc-\u003ei.action setting in ata_eh_autopsy()\n\nata_eh_autopsy() used to directly assign determined action mask to\nehc-\u003ei.action thus overriding actions set by some of nested analyze\nfunctions.  This patch makes ata_eh_autopsy() add action masks just as\nit\u0027s done in other places.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "b51e9e5db0e36239f786692f1cac6e435ed30c66",
      "tree": "396f2da741820f25174f0ef2d05af957a8dafc22",
      "parents": [
        "e6d902a3bfd53da375588e498251f4f4f6cd9650"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 29 01:29:30 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jul 05 21:51:42 2006 -0400"
      },
      "message": "[PATCH] libata: add ap-\u003epflags and move core dynamic flags to it\n\nap-\u003eflags is way too clamped.  Separate out core dynamic flags to\nap-\u003epflags.  ATA_FLAG_DISABLED is a dynamic flag but left alone as\nit\u0027s referenced by a lot of LLDs and it\u0027s gonna be removed once all\nLLDs are converted to new EH.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "beb07c1a56e2cff3842e22c473bd1aaaea08e532",
      "tree": "a78fc940254de778c96988876001504ab9c945c9",
      "parents": [
        "64f65ca6e7a5a42df22ff29dadfff389dc388f65"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Jun 24 20:30:19 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 26 20:59:27 2006 -0400"
      },
      "message": "[PATCH] libata: clear EH action on device detach\n\nClear related EH action on device detach such that new device doesn\u0027t\nreceive EH actions scheduled for the old one.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "64f65ca6e7a5a42df22ff29dadfff389dc388f65",
      "tree": "207c8f6957691c2da3ea54529a29b256b48dc6a9",
      "parents": [
        "af181c2d765ec9735356bc313ab9e844ec2c7a24"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Jun 24 20:30:18 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 26 20:59:27 2006 -0400"
      },
      "message": "[PATCH] libata: implement and use ata_deh_dev_action()\n\nImplement and use ata_eh_dev_action() which returns EH action mask for\na device.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "af181c2d765ec9735356bc313ab9e844ec2c7a24",
      "tree": "efc014ff6e83c895f477abb100a2c8f8c65d1c46",
      "parents": [
        "41542dbe12e34165e586de1e3fe0a245707aa39e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Jun 24 20:30:18 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 26 20:59:27 2006 -0400"
      },
      "message": "[PATCH] libata: move ata_eh_clear_action() upward\n\nMove ata_eh_clear_action() upward.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "ba6a13083c1b720a47c05bee7bedbb6ef06c4611",
      "tree": "26f9d8d37145fac426744f96ecf006ec0a481e31",
      "parents": [
        "47005f255ed126a4b48a1a2f63164fb1d83bcb0a"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jun 22 23:46:10 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jun 22 23:46:10 2006 -0400"
      },
      "message": "[libata] Add host lock to struct ata_port\n\nPrepare for changes required to support SATA devices\nattached to SAS HBAs. For these devices we don\u0027t want to\nuse host_set at all, since libata will not be the owner\nof struct scsi_host.\n\nSigned-off-by: Brian King \u003cbrking@us.ibm.com\u003e\n\n(with slight merge modifications made by...)\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "47005f255ed126a4b48a1a2f63164fb1d83bcb0a",
      "tree": "bac4a73716af3d9cdb201f1bd83d65952fa2c988",
      "parents": [
        "3a778275626c0eb97674e92875efeba01189ce0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 19 18:27:23 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jun 22 23:36:58 2006 -0400"
      },
      "message": "[PATCH] libata: implement per-dev EH action mask eh_info-\u003edev_action[]\n\nCurrently, the only per-dev EH action is REVALIDATE.  EH used to\nexploit ehi-\u003edev to do selective revalidation on a ATA bus.  However,\nthis is a bit hacky and makes it impossible to request selective\nrevalidation from outside of EH or add another per-dev EH action.\n\nThis patch adds per-dev EH action mask eh_info-\u003edev_action[] and\nupdate EH to use this field for REVALIDATE.  Note that per-dev actions\ncan still be specified at port-level and it has the same effect of\nspecifying the action for all devices on the port.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "aeb2ecd6096182cc080d37679080c0f088dcd4a4",
      "tree": "8e103a541f59c8a31656666352a4d5ea10c00088",
      "parents": [
        "f9be7113b56eb5d013a611d9c65e8d1d2d3f7c94"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 12 14:11:43 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 12 02:10:26 2006 -0400"
      },
      "message": "[PATCH] libata: fast exit from EH while unloading\n\nMake EH exit fast if the port is being unloaded.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f9be7113b56eb5d013a611d9c65e8d1d2d3f7c94",
      "tree": "e500b57b88989563a4b073f34a1ce8a9a1f48353",
      "parents": [
        "551e8889509c30cda31e464e5cbe7572c4e1febd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 12 14:11:01 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 12 02:10:26 2006 -0400"
      },
      "message": "[PATCH] libata: fix ATA_EH_REVALIDATE clearing\n\nATA_EH_REVALIDATE should be cleared after all devices on the target\nport have been revalidated.  Fix ata_eh_revalidate_and_attach()\naccordingly.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3057ac3c1a992ee135cbb7b7d1a12e58d81f0739",
      "tree": "38d83a88ee949b9db8f6655f90f98d88f8a5f2fd",
      "parents": [
        "39b07ce6d9f7cd4da8567baed844801e0aaa7b1a"
      ],
      "author": {
        "name": "zhao, forrest",
        "email": "forrest.zhao@intel.com",
        "time": "Mon Jun 12 12:01:34 2006 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 12 00:18:35 2006 -0400"
      },
      "message": "[PATCH] Snoop SET FEATURES - WRITE CACHE ENABLE/DISABLE command(v5)\n\nThis patch makes libata snoop \u0027SET FEATURES - WRITE CACHE\nENABLE/DISABLE\u0027 command, executing requisite revalidation processes\nto update cached data.\n\nSigned-off-by: Forrest Zhao \u003cforrest.zhao@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0a1b622ef495d8ebba9ad8982414c6661c16b604",
      "tree": "f5aeae33e8e0347635a9e309c46f90387156c42a",
      "parents": [
        "d87fa38e70853a9607dc34a02d15cf5f149f49f2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Jun 11 11:01:38 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Jun 11 11:01:38 2006 +0900"
      },
      "message": "[PATCH] libata: add missing finish_wait() call in ata_port_wait_eh()\n\nAdd missing finish_wait() call after wait loop in ata_port_wait_eh().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "d87fa38e70853a9607dc34a02d15cf5f149f49f2",
      "tree": "6afc6f8b9ff9c2c441efd61829d5d6fa6eb5698d",
      "parents": [
        "52783c5dcc8d317bc8c3e2692d366e8a305abada"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:24 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:24 2006 +0900"
      },
      "message": "[PATCH] libata-hp: move ata_do_reset() to libata-eh.c\n\nWith ops-\u003eprobe_init() gone, no user is left in libata-core.c.  Move\nata_do_reset() to libata-eh.c and make it static.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "720ba12620ee09dce269adf4ad50958adac7bb54",
      "tree": "f31a8b3da52195610bd244baf42a5fe2e26b0a36",
      "parents": [
        "3e706399b03bd237d087d731d4b1b029e546b33d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:13 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:13 2006 +0900"
      },
      "message": "[PATCH] libata-hp: update unload-unplug\n\nUpdate unload unplug - driver unloading / PCI removal.  This is done\nby ata_port_detach() which short-circuits EH, disables all devices and\nfreezes the port.  With this patch, EH and unloading/unplugging are\nproperly synchronized.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "3e706399b03bd237d087d731d4b1b029e546b33d",
      "tree": "51a5de83f8493d1b78cc16b0fa0abcac2b37cebc",
      "parents": [
        "ccf68c3405fca11386004674377d951b9b18e756"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:11 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:11 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement bootplug\n\nImplement bootplug - boot probing via hotplug path.  While loading,\nata_host_add() simply schedules probing and invokes EH.  After EH\ncompletes, ata_host_add() scans and assicates them with SCSI devices.\nEH path is slightly modified to handle this (e.g. no autopsy during\nbootplug).  The SCSI part is left in ata_host_add() because it\u0027s\nshared with legacy path and to keep probing order as before (ATA scan\nall ports in host_set then attach all).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "580b2102327ab8444af5bde4e70b50d268a1d558",
      "tree": "01389e898e09dbaddb06405b182116b9be0e6d59",
      "parents": [
        "084fe639b81c4d418a2cf714acb0475e3713cb73"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:05 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:05 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement SCSI part of hotplug\n\nImplement SCSI part of hotplug.\n\nThis must be done in a separate context as SCSI makes use of EH during\nprobing.  SCSI scan fails silently if EH is in progress.  In such\ncases, libata pauses briefly and retries until every device is\nattached.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "084fe639b81c4d418a2cf714acb0475e3713cb73",
      "tree": "55afc26dbb866488b69e49b1742863d1293f6612",
      "parents": [
        "0ea035a3d1ad948096e205f08f350c03d5cea453"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:03 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:03 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement hotplug\n\nImplement ATA part of hotplug.  To avoid probing broken devices over\nand over again, disabled devices are not automatically detached.  They\nare detached only if probing is requested for the device or the\nassociated port is offline.  Also, to avoid infinite probing loop,\nEach device is probed only once per EH run.\n\nAs SATA PHY status is fragile, devices are detached only after it has\nused up its recovery chances unless explicitly requested by LLDD or\nuser (LLDD may request direct detach if, for example, it supports cold\npresence detection).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "0ea035a3d1ad948096e205f08f350c03d5cea453",
      "tree": "fd003f929ab079f0852e3709436ca30a18265a39",
      "parents": [
        "e8e008e7b5ed8c65675cc9b3e778b8bb909f65ab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:01 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:01 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement ata_eh_detach_dev()\n\nImplement ata_eh_detach_dev().  This function is responsible for\ndetaching an ATA device and offlining the associated SCSI device\natomically so that the detached device is not accessed after ATA\ndetach is complete.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    }
  ],
  "next": "664faf09a05d74085c0b31e2c621d7647322325b"
}
