)]}'
{
  "log": [
    {
      "commit": "1fd684346d41f6be2487c161f60d03a7feb68911",
      "tree": "95d388b9965850cb5db8264603b6b1bba97ee37a",
      "parents": [
        "2a6e58d2731dcc05dafa7f976d935e0f0627fcd7"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Jan 19 20:57:36 2009 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jan 27 02:15:51 2009 -0500"
      },
      "message": "SATA AHCI: Blacklist system that spins off disks during ACPI power off\n\nSome notebooks from HP have the problem that their BIOSes attempt to\nspin down hard drives before entering ACPI system states S4 and S5.\nThis leads to a yo-yo effect during system power-off shutdown and the\nlast phase of hibernation when the disk is first spun down by the\nkernel and then almost immediately turned on and off by the BIOS.\nThis, in turn, may result in shortening the disk\u0027s life times.\n\nTo prevent this from happening we can blacklist the affected systems\nusing DMI information.\n\nBlacklist HP nx6310 that uses the AHCI driver.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "886ad09fc83342aa1c5a02a0b6d3298b78a8067f",
      "tree": "82a7818829b25db9c67f95c315521dac3da47fc6",
      "parents": [
        "3d14bdad40315b54470cb7812293d14c8af2bf7d"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jan 09 15:54:07 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 10 15:06:52 2009 -0800"
      },
      "message": "libata: Add a per-host flag to opt-in into parallel port probes\n\nThis patch adds a per host flag that allows drivers to opt in into\nhaving its busses scanned in parallel.\n\nDrivers that do not set this flag get their ports scanned in\nthe \"original\" sequence.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e427fe042cf90c0652eed9a85e57a8fd8af89890",
      "tree": "d62a7b7224f0781cada883b07ead72710865c0b3",
      "parents": [
        "6ecb6f25d3a52c0d032aa73bde1ff9bc454aa66c"
      ],
      "author": {
        "name": "Shane Huang",
        "email": "shane.huang@amd.com",
        "time": "Tue Dec 30 10:53:41 2008 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Jan 08 16:32:05 2009 -0500"
      },
      "message": "[libata] ahci: Withdraw IGN_SERR_INTERNAL for SB800 SATA\n\nThere is an issue in ATI SB600/SB700 SATA that PxSERR.E should not be\nset on some conditions, which will lead to many SATA ODD error messages.\ncommit 55a61604cd1354e1783364e1c901034f2f474b7d is the workaround.\nSince SB800 fixed this HW issue, IGN_SERR_INTERNAL should be withdrawn\nfor SB800.\n\nSigned-off-by: Shane Huang \u003cshane.huang@amd.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "8522ee25f3a645577d41e71328cd4fcf8610dfeb",
      "tree": "2fd32267c306167670cb100c1736110cbd60c20f",
      "parents": [
        "2852bcf7c12d3027c5d10f4f5ca5fada24ce8088"
      ],
      "author": {
        "name": "Shane Huang",
        "email": "shane.huang@amd.com",
        "time": "Tue Dec 30 11:00:37 2008 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Jan 08 16:09:57 2009 -0500"
      },
      "message": "[libata] ahci: Add SATA GEN3 related messages\n\nThe present AHCI driver seems to support SATA GEN 3 speed, but the related\nmessages should be modified.\n\nSigned-off-by: Shane Huang \u003cshane.huang@amd.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1eca4365be25c540650693e941bc06a66cf38f94",
      "tree": "e3ed82850da00308180bf166118f9f9e69d92898",
      "parents": [
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 20:03:17 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Dec 28 22:43:20 2008 -0500"
      },
      "message": "libata: beef up iterators\n\nThere currently are the following looping constructs.\n\n* __ata_port_for_each_link() for all available links\n* ata_port_for_each_link() for edge links\n* ata_link_for_each_dev() for all devices\n* ata_link_for_each_dev_reverse() for all devices in reverse order\n\nNow there\u0027s a need for looping construct which is similar to\n__ata_port_for_each_link() but iterates over PMP links before the host\nlink.  Instead of adding another one with long name, do the following\ncleanup.\n\n* Implement and export ata_link_next() and ata_dev_next() which take\n  @mode parameter and can be used to build custom loop.\n* Implement ata_for_each_link() and ata_for_each_dev() which take\n  looping mode explicitly.\n\nThe following iteration modes are implemented.\n\n* ATA_LITER_EDGE\t\t: loop over edge links\n* ATA_LITER_HOST_FIRST\t\t: loop over all links, host link first\n* ATA_LITER_PMP_FIRST\t\t: loop over all links, PMP links first\n\n* ATA_DITER_ENABLED\t\t: loop over enabled devices\n* ATA_DITER_ENABLED_REVERSE\t: loop over enabled devices in reverse order\n* ATA_DITER_ALL\t\t\t: loop over all devices\n* ATA_DITER_ALL_REVERSE\t\t: loop over all devices in reverse order\n\nThis change removes exlicit device enabledness checks from many loops\nand makes it clear which ones are iterated over in which direction.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "87943acf60898a3efb6b5ee85d4cc789898bf5e8",
      "tree": "4d2d57fd89b7aa2b37cf2798c816964664452c8a",
      "parents": [
        "eb40963c835c69681af516388a2a92b57e2f0fe7"
      ],
      "author": {
        "name": "David Milburn",
        "email": "dmilburn@redhat.com",
        "time": "Mon Oct 13 14:38:36 2008 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Oct 28 00:37:15 2008 -0400"
      },
      "message": "libata: ahci enclosure management bit mask\n\nEnclosure management bit mask definitions.\n\nSigned-off-by: David Milburn \u003cdmilburn@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "eb40963c835c69681af516388a2a92b57e2f0fe7",
      "tree": "06cf541df117f772d48d2e8ebe00bc6e561f008c",
      "parents": [
        "e7c0d217cdaa837d30bc265eddac4d176969fd68"
      ],
      "author": {
        "name": "David Milburn",
        "email": "dmilburn@redhat.com",
        "time": "Thu Oct 16 09:26:19 2008 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Oct 28 00:36:10 2008 -0400"
      },
      "message": "libata: ahci enclosure management led sync\n\nSynchronize ahci_sw_activity and ahci_sw_activity_blink with ata_port lock.\n\nSigned-off-by: David Milburn \u003cdmilburn@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c77a036beceabbfd85b366193685cb49f38292bd",
      "tree": "14bf603787f18349f3d29259aa22162852a091bd",
      "parents": [
        "ab77163008c596aad9624ceab190d840c0143fa8"
      ],
      "author": {
        "name": "Mark Nelson",
        "email": "mdnelson8@gmail.com",
        "time": "Thu Oct 23 14:08:16 2008 +1100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Oct 27 23:54:55 2008 -0400"
      },
      "message": "ahci: Add support for Promise PDC42819\n\nAdd an appropriate entry for the Promise PDC42819 controller. It has an\nAHCI mode and so far works correctly with board_ahci.\n\nThis chip is found on Promise\u0027s FastTrak TX2650 (2 port) and TX4650 (4 port)\nsoftware-based RAID cards (for which there is a binary driver, t3sas) and\ncan be found on some motherboards, for example the MSI K9A2 Platinum,\nwhich calls the chip a Promise T3 controller.\n\nAlthough this controller also supports SAS devices, its default bootup mode\nis AHCI and the binary driver has to do some magic to get the chip into the\nappropriate mode to drive SAS disks.\n\nSeeing as no documentation is provided by Promise, adding this entry to the\nahci driver allows the controller to be useful to people as a SATA\ncontroller (with no ill effects on the system if a SAS disk is connected -\nprobing of the port just times out with \"link online but device\nmisclassified\"), without having to resort to using the binary driver. Users\nwho require SAS or the proprietary software raid can get this functionality\nusing the binary driver.\n\nSigned-off-by: Mark Nelson \u003cmdnelson8@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "45fabbb77bd95adff7a80bde1c7a0ace1075fde6",
      "tree": "0e98efc190b25a11f84b8ae7d1ee0a17c41d3da8",
      "parents": [
        "ea6ce53cd5d005455ec0a3cc1d45d3af0cb90919"
      ],
      "author": {
        "name": "Elias Oltmanns",
        "email": "eo@nebensachen.de",
        "time": "Sun Sep 21 11:54:08 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:27:54 2008 -0400"
      },
      "message": "libata: Implement disk shock protection support\n\nOn user request (through sysfs), the IDLE IMMEDIATE command with UNLOAD\nFEATURE as specified in ATA-7 is issued to the device and processing of\nthe request queue is stopped thereafter until the specified timeout\nexpires or user space asks to resume normal operation. This is supposed\nto prevent the heads of a hard drive from accidentally crashing onto the\nplatter when a heavy shock is anticipated (like a falling laptop\nexpected to hit the floor). In fact, the whole port stops processing\ncommands until the timeout has expired in order to avoid any resets due\nto failed commands on another device.\n\nSigned-off-by: Elias Oltmanns \u003ceo@nebensachen.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "82ef04fb4c82542b3eda81cca461f0594ce9cd0b",
      "tree": "e513df5ad8dc9f7400830bfc8786afb6bec90fb6",
      "parents": [
        "6ef190cc92e33565accff6a320f0e7d90480bfe7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 17:02:40 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:22:28 2008 -0400"
      },
      "message": "libata: make SCR access ops per-link\n\nLogically, SCR access ops should take @link; however, there was no\ncompelling reason to convert all SCR access ops when adding @link\nabstraction as there\u0027s one-to-one mapping between a port and a non-PMP\nlink.  However, that assumption won\u0027t hold anymore with the scheduled\naddition of slave link.\n\nMake SCR access ops per-link.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "8e48b6b307085ce8a747cf94294742f7b7a11b18",
      "tree": "446b3b1ddf65b1a09ff917648da067ebcdfbe766",
      "parents": [
        "de058cdea65842ed4bf17da6b50d6fe6b120a6ef"
      ],
      "author": {
        "name": "Seth Heasley",
        "email": "seth.heasley@intel.com",
        "time": "Wed Aug 27 16:47:22 2008 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 08 12:15:54 2008 -0400"
      },
      "message": "ahci: RAID mode SATA patch for Intel Ibex Peak DeviceIDs\n\nAdd the Intel Ibex Peak (PCH) SATA RAID Controller DeviceIDs.\n\nSigned-off-by: Seth Heasley \u003cseth.heasley@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "17248461cb66103b87ff03bdee34aa61035cc93e",
      "tree": "4681c26567c36af9e640fb2022c4f6d36dafb922",
      "parents": [
        "46c5784c8fa736c2bb42fe681189b86e99abdc2e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 29 16:03:59 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 08 12:15:30 2008 -0400"
      },
      "message": "ahci: disable PMP for marvell ahcis\n\nMarvell ahcis don\u0027t play nicely with PMPs.  Disable it.\n\nReported by KueiHuan Chen in the following thread.\n\n  http://thread.gmane.org/gmane.linux.ide/33296\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: KueiHuan Chen \u003ckueihuan.chen@gmail.com\u003e\nCc: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "5b66c829bf5c65663b2f68ee6b42f6e834cd39cd",
      "tree": "a0fef6e883fbaf583960563bf7e284784a7c6b95",
      "parents": [
        "7686ad5606f08d9dfb33a2087a36c8366366015b"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Wed Sep 03 14:48:34 2008 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 08 12:11:36 2008 -0400"
      },
      "message": "ahci, pata_marvell: play nicely together\n\nI\u0027ve been chasing Jeff about this for months.  Jeff added the Marvell\ndevice identifiers to the ahci driver without making the AHCI driver\nhandle the PATA port. This means a lot of users can\u0027t use current\nkernels and in most distro cases can\u0027t even install.\n\nThis has been going on since March 2008 for the 6121 Marvell, and late 2007\nfor the 6145!!!\n\nThis was all pointed out at the time and repeatedly ignored. Bugs assigned\nto Jeff about this are ignored also.\n\nTo quote Jeff in email\n\n\u003e \"Just switch the order of \u0027ahci\u0027 and \u0027pata_marvell\u0027 in\n\u003e /etc/modprobe.conf, then use Fedora\u0027s tools regenerate the initrd.\n\n\u003e See?  It\u0027s not rocket science, and the current configuration can be\n\u003e easily made to work for Fedora users.\"\n\n(Which isn\u0027t trivial, isn\u0027t end user, shouldn\u0027t be needed, and as it usually\nbreaks at install time is in fact impossible)\n\nTo quote Jeff in August 2007\n\n\u003e \"   mv-ahci-pata\n\u003e Marvell 6121/6141 PATA support.  Needs fixing in the \u0027PATA controller\n\u003e command\u0027 area before it is usable, and can go upstream.\"\n\nOnly he add the ids anyway later and caused regressions, adding a further\nid in March causing more regresions.\n\nThe actual fix for the moment is very simple. If the user has included\nthe pata_marvell driver let it drive the ports. If they\u0027ve only selected\nfor SATA support give them the AHCI driver which will run the port a fraction\nfaster. Allow the user to control this decision via ahci.marvell_enable as\na module parameter so that distributions can ship \u0027it works\u0027 defaults and\nsmarter users (or config tools) can then flip it over it desired.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "20e2de4a505aa02131a95665e8920eb053fce686",
      "tree": "5711c549096723f0b6fede7bb8e4a0c7972b27b6",
      "parents": [
        "ff04715bd5171d6d5c4ddff40c7bdc8d2dc90f7d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 01 12:51:43 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:58 2008 -0400"
      },
      "message": "ahci: sis controllers actually can do PMP\n\nSIS controllers were blacklisted for PMP as enabling it made device\ndetection fail whether the device was PMP or not - the natural\nconclusion was the controller chokes on SRST w/ pmp\u003d\u003d15.  However, it\nturned out that the controller just didn\u0027t like issuing SRST after\nhardreset w/o clearing SError first.  Interestingly, the SRST itself\nsucceeds but the following commands fail.\n\nIf SError is cleared between hardreset and SRST, which is the default\nbehavior now, everything works fine and SIS controllers work with PMPs\nhappily.\n\nRemove PMP blacklisting for SIS AHCIs.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Piter PUNK \u003cpiterpunk@slackware.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "adcb5308dda3d2749342685f23953e13ba74ff68",
      "tree": "b29ee5f62f10aec77f4a80bc1eb0dada7efd9cd2",
      "parents": [
        "4bdee6c5103696a2729d3db2f235d202191788e4"
      ],
      "author": {
        "name": "Seth Heasley",
        "email": "seth.heasley@intel.com",
        "time": "Mon Aug 11 17:03:09 2008 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:07:56 2008 -0400"
      },
      "message": "ahci: RAID mode SATA patch for Intel Ibex Peak DeviceIDs\n\nResend with proper whitespace.\n\nThis patch adds the Intel Ibex Peak (PCH) SATA RAID Controller DeviceIDs.\n\nSigned-off-by: Seth Heasley \u003cseth.heasley@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "93082f0b15841b8926c38ef224d0e6f720000635",
      "tree": "57f3b9613cd32a9f987e1039a01b540e69114b7f",
      "parents": [
        "f87bd330edf06fd49b3fbc368d90fb180375f2a2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:56:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:56:36 2008 -0700"
      },
      "message": "Fix ahci driver \u0027flags\u0027 type\n\nThe new type checking of the flags arguments to irqsave and friends\n(commit 3f307891ce0e7b0438c432af1aacd656a092ff45) pointed out this thing\nwith a big nice warning.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2640d7c0b8d5d9d9ee303b8cd09f5124176f6239",
      "tree": "8a3e23cc8c248bd7ea06c2920729d5e82ce0e886",
      "parents": [
        "24920c8a6358bf5532f1336b990b1c0fe2b599ee"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Sun Jul 06 09:23:20 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:34 2008 -0400"
      },
      "message": "AHCI: Remove an unnecessary flush from ahci_qc_issue\n\nIn an I/O heavy workload (IOZone), ahci_qc_issue is the second-highest\nconsumer of CPU cycles.  Removing the flush gets us approximately 10%\nbandwidth improvement.  I believe this to be because the CPU can start\nqueueing the next request instead of waiting for the readl() to flush the\nwrites to the device.  The flush isn\u0027t necessary because we\u0027re using a\n\u0027queue\u0027 metaphor; we don\u0027t guarantee the command has got to the device,\nnor do we need to guarantee the command has got to the controller.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "24920c8a6358bf5532f1336b990b1c0fe2b599ee",
      "tree": "576c2dcbde9c76e13585ed37208640fbd3dba005",
      "parents": [
        "1e9dbc9291738149577cc488fd441f061815e02e"
      ],
      "author": {
        "name": "Zhang Rui",
        "email": "rui.zhang@intel.com",
        "time": "Fri Jul 04 13:32:17 2008 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:33 2008 -0400"
      },
      "message": "AHCI: speed up resume\n\nDuring resume, sleep 1 second to wait for the HBA reset\nto finish is a waste of time.\n\nAccording to the AHCI 1.2 spec,\nWe should poll the HOST_CTL register,\nand return error if the host reset is not\nfinished within 1 second.\n\nTest results show that the HBA reset can be done quickly(in usecs).\nAnd this patch may save nearly 1 second during resume.\n\nSigned-off-by: Zhang Rui \u003crui.zhang@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "18f7ba4c2f4be6b37d925931f04d6cc28d88d1ee",
      "tree": "4f127510c378cba33e79d5fb71bd9fc14a28e1cb",
      "parents": [
        "87fbc5a060faf2394bee88a93519f9b9d434727c"
      ],
      "author": {
        "name": "Kristen Carlson Accardi",
        "email": "kristen.c.accardi@intel.com",
        "time": "Tue Jun 03 10:33:55 2008 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:33 2008 -0400"
      },
      "message": "libata/ahci: enclosure management support\n\nAdd Enclosure Management support to libata and ahci.\n\nSigned-off-by:  Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d28f87aa87ce8b196349d7c306a7e6fe3abd7155",
      "tree": "c6bc6d198536772cd50d08c6772e291c5ba91f31",
      "parents": [
        "d79df630f622806c4d0e116fbaf6ebf6baf53461"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 05 13:10:50 2008 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 05 13:05:37 2008 -0700"
      },
      "message": "ahci: give another shot at clearing all bits in irq_stat\n\nCommit ea0c62f7cf70f13a67830471b613337bd0c9a62e tried to clear all\nbits in irq_stat but it didn\u0027t actually achieve that as irq_stat was\nanded with port_map right after read.  This patch makes ahci driver\nalways use the unmasked value to clear irq_status.\n\nWhile at it, add explanation on the peculiarities of ahci IRQ\nclearing.\n\nThis was spotted by Linus Torvalds.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ea0c62f7cf70f13a67830471b613337bd0c9a62e",
      "tree": "f57ec0dbe1f2ed1f8f038a0059ae4c72e98e602a",
      "parents": [
        "464b3286b4aa459059c6fda85ba55185fd21d9fc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jun 28 01:49:02 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Jul 04 09:05:59 2008 -0400"
      },
      "message": "ahci: always clear all bits in irq_stat\n\nSome AHCI controllers (ICH7 was reported) set pending bit in\nHOST_IRQ_STAT for non-existent ports and when it\u0027s not cleared falls\ninto IRQ storm.  Always clear full irq_stat instead of only the bits\nthat are handled.  As nothing changes for recognized ports, the risk\nof breaking things is pretty low.\n\nReported and verified by Philipp Thomas in the following suse\nbugzilla.\n\nhttps://bugzilla.novell.com/attachment.cgi?id\u003d215692\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Thomas \u003cpth@novell.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "9a3b103c27a7e3199b917bc3ca219530132afdfc",
      "tree": "16ae27606d646c8bf53996804359e27052298b02",
      "parents": [
        "040dee53a724f54d47876674d50184873364f207"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 18 20:56:58 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Jun 18 20:56:58 2008 -0400"
      },
      "message": "ahci: sis can\u0027t do PMP\n\nFrom: Piter PUNK \u003cpiterpunk@slackware.com\u003e\n\nSiS AHCIs say they can do PMP but can\u0027t and fail detection if SRST w/\npmp\u003d\u003d15 is used.  Turn off PMP support.\n\ntj: added patch description, adapted patch to #upstream-fixes and\n    renamed board_ahci_sis to board_ahci_nopmp.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d799e083a80b220f3681d7790f11e77d1704022b",
      "tree": "0ad0617602584cf31dbba04ea6d3ede8e992e310",
      "parents": [
        "f9d1c6ca2bb1bbfde4a95d9e55ab3b0126825295"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 17 12:46:30 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Jun 18 20:27:45 2008 -0400"
      },
      "message": "ahci: jmb361 has only one port\n\nJMB361 has only one port but reports it has two causing longish probe\nfailure on the second one.  Quirk it.\n\nReported by Gajo Petrovic in bz 10911.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Gajo Petrovic \u003cgajo01@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "bd17243a84632465f5403bc9eb8b4831bd67e582",
      "tree": "a98d7a5590c57a45659de395b8a510fc5df7ffeb",
      "parents": [
        "e297d99e103f951a71fcb1534f1ff3480dd3a851"
      ],
      "author": {
        "name": "Shane Huang",
        "email": "shane.huang@amd.com",
        "time": "Tue Jun 10 15:52:04 2008 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Jun 13 02:46:55 2008 -0400"
      },
      "message": "ahci: Workaround HW bug for SB600/700 SATA controller PMP support\n\nThere is one bug in ATI SATA PMP of SB600 and SB700 old revision, which leads\nto soft reset failure. This patch can fix the bug.\n\nSigned-off-by: Shane Huang \u003cshane.huang@amd.com\u003e\nAcked-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e297d99e103f951a71fcb1534f1ff3480dd3a851",
      "tree": "7e8b044efeb0f1ea048acba881a00e8326a4a0ab",
      "parents": [
        "5dd34572ad9a3be430632dd42e4af2ea370b397b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Jun 10 00:13:04 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Jun 13 02:46:17 2008 -0400"
      },
      "message": "ahci: workarounds for mcp65\n\nMCP65 ahci can do NCQ but doesn\u0027t set the CAP bit and rev A0 and A1\ncan\u0027t do MSI but have MSI capability.  Implement AHCI_HFLAG_YES_NCQ\nand apply appropriate workarounds.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Peer Chen \u003cpchen@nvidia.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3072c379bccfa2844e33103ed9ff530780e660ea",
      "tree": "9fb6f4e42371a4e5b99ac143b6127d2dd95a9d9d",
      "parents": [
        "034d8e8f273fcb02bebd6a62d8023ffa409fe92f"
      ],
      "author": {
        "name": "peerchen",
        "email": "peerchen@gmail.com",
        "time": "Mon May 19 14:44:57 2008 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri May 30 12:40:28 2008 -0400"
      },
      "message": "ahci: change the Device IDs of nvidia MCP7B AHCI controller in ahci.c\n\nChange the partial Device IDs of nvidia MCP7B AHCI controller in ahci.c,\nas the actual PCI IDs deployed in the field differed from the forecasted ones\npreemptively placed in the driver.\n\nSigned-off-by: Peer Chen \u003cpeerchen@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "78ab88f04f44bed566d51dce0c7cbfeff6449a06",
      "tree": "f60d9ebf37fca7af191cc16665c9025bc5cf56f4",
      "parents": [
        "a15306365a16380f3bafee9e181ba01231d4acd7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu May 01 23:41:41 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue May 06 11:32:02 2008 -0400"
      },
      "message": "libata: improve post-reset device ready test\n\nSome controllers (jmb and inic162x) use 0x77 and 0x7f to indicate that\nthe device isn\u0027t ready yet.  It looks like they use 0xff if device\npresence is detected but connection isn\u0027t established.  0x77 or 0x7f\nafter connection is established and use the value from signature FIS\nafter receiving it.\n\nThis patch implements ata_check_ready(), which takes TF status value\nand determines whether the port is ready or not considering the above\nand other conditions, and use it in @check_ready() functions.  This is\nsafe as both 0x77 and 0x7f aren\u0027t valid ready status value even though\nthey have BSY bit cleared.\n\nThis fixes hot plug detection failures which can be triggered with\ncertain drives if they aren\u0027t already spun up when the data connector\nis hot plugged.\n\nTested on sil, sil24, ahci (jmb/ich), piix and inic162x combined with\neight drives from all major vendors.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "22b5e7a74280deae560c20ee1a9b502b35181327",
      "tree": "8386b019edec04d92ebb89c66628b0ec69800930",
      "parents": [
        "a79067e513c71733223e13a52aacc8dbd71e9f46"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Apr 29 16:09:22 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Apr 29 17:42:04 2008 -0400"
      },
      "message": "ahci: SB600 ahci can\u0027t do MSI, blacklist that capability\n\nThis fixes bz#10507.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Shane Huang \u003cShane.Huang@amd.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "15fe982e429e0e6b7466719acb6cfd9dbfe47f0c",
      "tree": "de5ac9b692257050bf8dbdb6ebe02e780fddad46",
      "parents": [
        "411cb3869afd91ed40e8f12df64cd9e315356305"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Apr 23 20:52:58 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Apr 25 00:45:13 2008 -0400"
      },
      "message": "ahci: retry enabling AHCI a few times before spitting out WARN_ON()\n\nSome chips need AHCI_EN set more than once to actually set it.  Try a\nfew times before giving up and spitting out WARN_ON().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Peer Chen \u003cpchen@nvidia.com\u003e\nCc: Volker Armin Hemmann \u003cvolker.armin.hemmann@tu-clausthal.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ee959b00c335d7780136c5abda37809191fe52c3",
      "tree": "7775f3b274fd8caf5e7e5154fea89e96f2babd94",
      "parents": [
        "56d110e852b0b1c85ad6c9bfe1cb4473ceb16402"
      ],
      "author": {
        "name": "Tony Jones",
        "email": "tonyj@suse.de",
        "time": "Fri Feb 22 00:13:36 2008 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sat Apr 19 19:10:33 2008 -0700"
      },
      "message": "SCSI: convert struct class_device to struct device\n\nIt\u0027s big, but there doesn\u0027t seem to be a way to split it up smaller...\n\nSigned-off-by: Tony Jones \u003ctonyj@suse.de\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Sean Hefty \u003csean.hefty@intel.com\u003e\nCc: Hal Rosenstock \u003chal.rosenstock@gmail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "45db2f6c95eee7c6622ea1b3edb9abafba58e3ab",
      "tree": "1c57efcf3e118b177dd7c9c1070b8af70694aff3",
      "parents": [
        "2a0c15ca39f5881aa1b472ca856bb7a2e584ece7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Apr 08 01:46:56 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: move link onlineness check out of softreset methods\n\nCurrently, SATA softresets should do link onlineness check before\nactually performing SRST protocol but it doesn\u0027t really belong to\nsoftreset.\n\nThis patch moves onlineness check in softreset to ata_eh_reset() and\nata_eh_followup_srst_needed() to clean up code and help future sata_mv\nchanges which need clear separation between SCR and TF accesses.\n\nsata_fsl is peculiar in that its softreset really isn\u0027t softreset but\ncombination of hardreset and softreset.  This patch adds dummy private\n-\u003eprereset to keep the current behavior but the driver really should\nimplement separate hard and soft resets and return -EAGAIN from\nhardreset if it should be follwed by softreset.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "071f44b1d2c051641b62a3571223314737ccbe59",
      "tree": "a07794c8109e5d82a78223ae0159eadbf862c463",
      "parents": [
        "48515f6c006c2a9d7b624ee8ad068018c2d3fe0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:22 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: implement PMP helpers\n\nImplement helpers to test whether PMP is supported, attached and\ndetermine pmp number to use when issuing SRST to a link.  While at it,\nmove ata_is_host_link() so that it\u0027s together with the two new PMP\nhelpers.\n\nThis change simplifies LLDs and helps making PMP support optional.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "350756f6dab6d37ef9ed3f18dec520e88969ddac",
      "tree": "825bb133cf0059e21949d31dda127fd13847339e",
      "parents": [
        "182d7bbac322d6921ce81f8e6aa23d250816381d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:21 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:24 2008 -0400"
      },
      "message": "libata: don\u0027t use ap-\u003eioaddr in non-SFF drivers\n\nap-\u003eioaddr is to carry addresses for TF and BMDMA registers of a SFF\ncontroller, don\u0027t abuse it in non-SFF controllers.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "520d06f92b32d7abe5127d7cc46a819db0f384e6",
      "tree": "fd4f9ce7fdfa4296a1e71457906500736ca27fa0",
      "parents": [
        "4c9bf4e799ce06a7378f1196587084802a414c03"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:21 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:24 2008 -0400"
      },
      "message": "libata: remove check_status from non-SFF drivers\n\nNow that all SFF stuff is separated out of core layer, core layer\ndoesn\u0027t call ops-\u003e[alt_]check_status().  In fact, no one calls them\nfor non-SFF drivers anymore.  Kill them.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "4c9bf4e799ce06a7378f1196587084802a414c03",
      "tree": "70a7d3741e756b975468850537f222349143a0be",
      "parents": [
        "79f97dadfe9b4b561634d202225ba2fa910dc225"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: replace tf_read with qc_fill_rtf for non-SFF drivers\n\nNow that all SFF stuff is separated out of core layer, core layer\ndoesn\u0027t call ops-\u003etf_read directly.  It gets called only via\nops-\u003eqc_fill_rtf() for non-SFF drivers.  This patch directly\nimplements private ops-\u003eqc_fill_rtf() for non-SFF controllers and kill\nops-\u003etf_read().\n\nThis is much cleaner for non-SFF controllers as some of them have to\ncache SFF register values in private data structure and report the\ncached values via ops-\u003etf_read().  Also, ops-\u003etf_read() gets nasty for\ncontrollers which don\u0027t have clear notion of TF registers when\noperation is not in progress.\n\nAs this change makes default ops-\u003eqc_fill_rtf unnecessary, move\nata_sff_qc_fill_rtf() form ata_base_port_ops to ata_sff_port_ops where\nit belongs.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "79f97dadfe9b4b561634d202225ba2fa910dc225",
      "tree": "7bea39a135c7c87b7430d6c071288a05990b9309",
      "parents": [
        "22183bf569c8600ff414ac25f23134044e0ef453"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: drop @finish_qc from ata_qc_complete_multiple()\n\nata_qc_complete_multiple() took @finish_qc and called it on every qc\nbefore completing it.  This was to give opportunity to update TF cache\nbefore ata_qc_complete() tries to fill result_tf.  Now that result TF\nis a separate operation, this is no longer necessary.\n\nUpdate sata_sil24, which was the only user of this mechanism, such\nthat it implements its own ops-\u003eqc_fill_rtf() and drop @finish_qc from\nata_qc_complete_multiple().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "305d2a1ab137d11d573319c315748a87060fe82d",
      "tree": "8dcf81b1742db21c6a745688de96a18944c83617",
      "parents": [
        "5958e3025fd9d97429163e074d9cfa3848f51f28"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: unify mechanism to request follow-up SRST\n\nPreviously, there were two ways to trigger follow-up SRST from\nhardreset method - returning -EAGAIN and leaving all device classes\nunmodified.  Drivers never used the latter mechanism and the only use\ncase for the former was when hardreset couldn\u0027t classify.\n\nDrop the latter mechanism and let -EAGAIN mean \"perform follow-up SRST\nif classification is required\".  This change removes unnecessary\nfollow-up SRSTs and simplifies reset implementations.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "ac371987a81c61c2efbd6931245cdcaf43baad89",
      "tree": "f88970931b26d2ad344d7d67ddabc64d9b48181d",
      "parents": [
        "57c9efdfb3cee5d4564fcb5f70555e2edb1bc52a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: clear SError after link resume\n\nSError used to be cleared in -\u003epostreset.  This has small hotplug race\ncondition.  If a device is plugged in after reset is complete but\npostreset hasn\u0027t run yet, its hotplug event gets lost when SError is\ncleared.  This patch makes sata_link_resume() clear SError.  This\nkills the race condition and makes a lot of sense as some PMP and host\nPHYs don\u0027t work properly without SError cleared.\n\nThis change makes sata_pmp_std_{pre|post}_reset()\u0027s unnecessary as\nthey become identical to ata_std counterparts.  It also simplifies\nsata_pmp_hardreset() and ahci_vt8251_hardreset().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "9dadd45b24145d6aee2fabb28d7aef972301892b",
      "tree": "c97c323e2edd400bc94eaceddf20f84e9a6da005",
      "parents": [
        "a89611e8489ac24f371c9fd6fef6605b170b16ba"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:22 2008 -0400"
      },
      "message": "libata: move generic hardreset code from sata_sff_hardreset() to sata_link_hardreset()\n\nsata_sff_hardreset() contains link readiness wait logic which isn\u0027t\nSFF specific.  Move that part into sata_link_hardreset(), which now\ntakes two more parameters - @online and @check_ready.  Both are\noptional.  The former is out parameter for link onlineness after\nreset.  The latter is used to wait for link readiness after hardreset.\n\nUsers of sata_link_hardreset() is updated to use new funtionality and\nahci_hardreset() is updated to use sata_link_hardreset() instead of\nsata_sff_hardreset().  This doesn\u0027t really cause any behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "a89611e8489ac24f371c9fd6fef6605b170b16ba",
      "tree": "ffde56421ee093e92e8c0673eeaca7ecd6b4093a",
      "parents": [
        "aa2731ad9ad80ac3fca48bd1c4cf0eceede4810e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:22 2008 -0400"
      },
      "message": "ahci: use ata_wait_after_reset() instead of ata_sff_wait_ready()\n\nImplement ahci_check_ready() and replace ata_sff_wait_after_reset()\nwith ata_wait_after_reset().  As ahci was faking TF access, this\nchange doesn\u0027t result in any functional difference.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "705e76beb90b97421e1f61e857c4246799781bb5",
      "tree": "e571ad9229d469cd73d1388c76823922400823d5",
      "parents": [
        "203c75b8245c5386044721d9c5eda5c6b71b3d14"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:22 2008 -0400"
      },
      "message": "libata: restructure SFF post-reset readiness waits\n\nPreviously, post-softreset readiness is waited as follows.\n\n1. ata_sff_wait_after_reset() waits for 150ms and then for\n   ATA_TMOUT_FF_WAIT if status is 0xff and other conditions meet.\n\n2. ata_bus_softreset() finishes with -ENODEV if status is still 0xff.\n   If not, continue to #3.\n\n3. ata_bus_post_reset() waits readiness of dev0 and/or dev1 depending\n   on devmask using ata_sff_wait_ready().\n\nAnd for post-hardreset readiness,\n\n1. ata_sff_wait_after_reset() waits for 150ms and then for\n   ATA_TMOUT_FF_WAIT if status is 0xff and other conditions meet.\n\n2. sata_sff_hardreset waits for device readiness using\n   ata_sff_wait_ready().\n\nThis patch merges and unifies post-reset readiness waits into\nata_sff_wait_ready() and ata_sff_wait_after_reset().\n\nATA_TMOUT_FF_WAIT handling is merged into ata_sff_wait_ready().  If TF\nstatus is 0xff, link status is unknown and the port is SATA, it will\ncontinue polling till ATA_TMOUT_FF_WAIT.\n\nata_sff_wait_after_reset() is updated to perform the following steps.\n\n1. waits for 150ms.\n\n2. waits for dev0 readiness using ata_sff_wait_ready().  Note that\n   this is done regardless of devmask, as ata_sff_wait_ready() handles\n   0xff status correctly, this preserves the original behavior except\n   that it may wait longer after softreset if link is online but\n   status is 0xff.  This behavior change is very unlikely to cause any\n   actual difference and is intended.  It brings softreset behavior to\n   that of hardreset.\n\n3. waits for dev1 readiness just the same way ata_bus_post_reset() did.\n\nNow both soft and hard resets call ata_sff_wait_after_reset() after\nreset to wait for readiness after resets.  As\nata_sff_wait_after_reset() contains calls to -\u003esff_dev_select(),\nexplicit call near the end of sata_sff_hardreset() is removed.\n\nThis change makes reset implementation simpler and more consistent.\n\nWhile at it, make the magical 150ms wait post-reset wait duration a\nconstant and ata_sff_wait_ready() and ata_sff_wait_after_reset() take\n@link instead of @ap.  This is to make them consistent with other\nreset helpers and ease core changes.\n\npata_scc is updated accordingly.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "203c75b8245c5386044721d9c5eda5c6b71b3d14",
      "tree": "5a8c446c483a77dc86aca145b0b38c4a2b410dfa",
      "parents": [
        "0aa1113d544226bc2c4a20d6ac1d71170512a361"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:18 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:22 2008 -0400"
      },
      "message": "libata: separate out ata_std_postreset() from ata_sff_postreset()\n\nSeparate out generic ATA portion from ata_sff_postreset() into\nata_std_postreset() and implement ata_sff_postreset() using the std\nversion.\n\nata_base_port_ops now has ata_std_postreset() for its postreset and\nata_sff_port_ops overrides it to ata_sff_postreset().\n\nThis change affects pdc_adma, ahci, sata_fsl and sata_sil24.  pdc_adma\nnow specifies postreset to ata_sff_postreset() explicitly.  sata_fsl\nand sata_sil24 now use ata_std_postreset() which makes no difference\nto them.  ahci now calls ata_std_postreset() from its own postreset\nmethod, which causes no behavior difference.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "5682ed33aae05d10a25c95633ef9d9c062825888",
      "tree": "1632d4d70f4fd2dc25596a5cde1183f70f162ac3",
      "parents": [
        "9363c3825ea9ad76561eb48a395349dd29211ed6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:16 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:22 2008 -0400"
      },
      "message": "libata: rename SFF port ops\n\nAdd sff_ prefix to SFF specific port ops.\n\nThis rename is in preparation of separating SFF support out of libata\ncore layer.  This patch strictly renames ops and doesn\u0027t introduce any\nbehavior difference.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "9363c3825ea9ad76561eb48a395349dd29211ed6",
      "tree": "abe89a0f7c82b805d84b1a211c97b317f6628d5f",
      "parents": [
        "b67a1064cb1c1d3b43e01e8b43a6a8dcdefed733"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:16 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:21 2008 -0400"
      },
      "message": "libata: rename SFF functions\n\nSFF functions have confusing names.  Some have sff prefix, some have\nbmdma, some std, some pci and some none.  Unify the naming by...\n\n* SFF functions which are common to both BMDMA and non-BMDMA are\n  prefixed with ata_sff_.\n\n* SFF functions which are specific to BMDMA are prefixed with\n  ata_bmdma_.\n\n* SFF functions which are specific to PCI but apply to both BMDMA and\n  non-BMDMA are prefixed with ata_pci_sff_.\n\n* SFF functions which are specific to PCI and BMDMA are prefixed with\n  ata_pci_bmdma_.\n\n* Drop generic prefixes from LLD specific routines.  For example,\n  bfin_std_dev_select -\u003e bfin_dev_select.\n\nThe following renames are noteworthy.\n\n  ata_qc_issue_prot() -\u003e ata_sff_qc_issue()\n  ata_pci_default_filter() -\u003e ata_bmdma_mode_filter()\n  ata_dev_try_classify() -\u003e ata_sff_dev_classify()\n\nThis rename is in preparation of separating SFF support out of libata\ncore layer.  This patch strictly renames functions and doesn\u0027t\nintroduce any behavior difference.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "a1efdaba2dbd6fb89e23a87b66d3f4dd92c9f5af",
      "tree": "6197c537892e0d887b2a90e369b74abf0500b9ac",
      "parents": [
        "959471936241bd83da7d0a76411cef6772140fe6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:50 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:18 2008 -0400"
      },
      "message": "libata: make reset related methods proper port operations\n\nCurrently reset methods are not specified directly in the\nata_port_operations table.  If a LLD wants to use custom reset\nmethods, it should construct and use a error_handler which uses those\nreset methods.  It\u0027s done this way for two reasons.\n\nFirst, the ops table already contained too many methods and adding\nfour more of them would noticeably increase the amount of necessary\nboilerplate code all over low level drivers.\n\nSecond, as -\u003eerror_handler uses those reset methods, it can get\nconfusing.  ie. By overriding -\u003eerror_handler, those reset ops can be\nmade useless making layering a bit hazy.\n\nNow that ops table uses inheritance, the first problem doesn\u0027t exist\nanymore.  The second isn\u0027t completely solved but is relieved by\nproviding default values - most drivers can just override what it has\nimplemented and don\u0027t have to concern itself about higher level\ncallbacks.  In fact, there currently is no driver which actually\nmodifies error handling behavior.  Drivers which override\n-\u003eerror_handler just wraps the standard error handler only to prepare\nthe controller for EH.  I don\u0027t think making ops layering strict has\nany noticeable benefit.\n\nThis patch makes -\u003eprereset, -\u003esoftreset, -\u003ehardreset, -\u003epostreset and\ntheir PMP counterparts propoer ops.  Default ops are provided in the\nbase ops tables and drivers are converted to override individual reset\nmethods instead of creating custom error_handler.\n\n* ata_std_error_handler() doesn\u0027t use sata_std_hardreset() if SCRs\n  aren\u0027t accessible.  sata_promise doesn\u0027t need to use separate\n  error_handlers for PATA and SATA anymore.\n\n* softreset is broken for sata_inic162x and sata_sx4.  As libata now\n  always prefers hardreset, this doesn\u0027t really matter but the ops are\n  forced to NULL using ATA_OP_NULL for documentation purpose.\n\n* pata_hpt374 needs to use different prereset for the first and second\n  PCI functions.  This used to be done by branching from\n  hpt374_error_handler().  The proper way to do this is to use\n  separate ops and port_info tables for each function.  Converted.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "029cfd6b74fc5c517865fad78cf4a3ea8d9b664a",
      "tree": "4a40f44f29321e433497a51d2f6cfe1922ae1d58",
      "parents": [
        "68d1d07b510bb57a504588adc2bd2758adea0965"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:49 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:17 2008 -0400"
      },
      "message": "libata: implement and use ops inheritance\n\nlibata lets low level drivers build ata_port_operations table and\nregister it with libata core layer.  This allows low level drivers\nhigh level of flexibility but also burdens them with lots of\nboilerplate entries.\n\nThis becomes worse for drivers which support related similar\ncontrollers which differ slightly.  They share most of the operations\nexcept for a few.  However, the driver still needs to list all\noperations for each variant.  This results in large number of\nduplicate entries, which is not only inefficient but also error-prone\nas it becomes very difficult to tell what the actual differences are.\n\nThis duplicate boilerplates all over the low level drivers also make\nupdating the core layer exteremely difficult and error-prone.  When\ncompounded with multi-branched development model, it ends up\naccumulating inconsistencies over time.  Some of those inconsistencies\ncause immediate problems and fixed.  Others just remain there dormant\nmaking maintenance increasingly difficult.\n\nTo rectify the problem, this patch implements ata_port_operations\ninheritance.  To allow LLDs to easily re-use their own ops tables\noverriding only specific methods, this patch implements poor man\u0027s\nclass inheritance.  An ops table has -\u003einherits field which can be set\nto any ops table as long as it doesn\u0027t create a loop.  When the host\nis started, the inheritance chain is followed and any operation which\nisn\u0027t specified is taken from the nearest ancestor which has it\nspecified.  This operation is called finalization and done only once\nper an ops table and the LLD doesn\u0027t have to do anything special about\nit other than making the ops table non-const such that libata can\nupdate it.\n\nlibata provides four base ops tables lower drivers can inherit from -\nbase, sata, pmp, sff and bmdma.  To avoid overriding these ops\naccidentaly, these ops are declared const and LLDs should always\ninherit these instead of using them directly.\n\nAfter finalization, all the ops table are identical before and after\nthe patch except for setting .irq_handler to ata_interrupt in drivers\nwhich didn\u0027t use to.  The .irq_handler doesn\u0027t have any actual effect\nand the field will soon be removed by later patch.\n\n* sata_sx4 is still using old style EH and currently doesn\u0027t take\n  advantage of ops inheritance.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "68d1d07b510bb57a504588adc2bd2758adea0965",
      "tree": "94e8788a8ca40017b33044329f98bbe6552cc526",
      "parents": [
        "6bd99b4e0998571808fc1f09d5162348f21ff8c1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:49 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:17 2008 -0400"
      },
      "message": "libata: implement and use SHT initializers\n\nlibata lets low level drivers build scsi_host_template and register it\nto the SCSI layer.  This allows low level drivers high level of\nflexibility but also burdens them with lots of boilerplate entries.\n\nThis patch implements SHT initializers which can be used to initialize\nall the boilerplate entries in a sht.  Three variants of them are\nimplemented - BASE, BMDMA and NCQ - for different types of drivers.\nNote that entries can be overriden by putting individual initializers\nafter the helper macro.\n\nAll sht tables are identical before and after this patch.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "6bd99b4e0998571808fc1f09d5162348f21ff8c1",
      "tree": "e338bd445aaa5cda4bbf1f5598acf70f0d6b68de",
      "parents": [
        "358f9a77a668660729e705fde9c3cf69f013aa98"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:48 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:17 2008 -0400"
      },
      "message": "libata: normalize port_info, port_operations and sht tables\n\nOver the time, port info, ops and sht structures developed quite a bit\nof inconsistencies.  This patch updates drivers.\n\n* Enable/disable_pm callbacks added to all ahci ops tables.\n\n* Every driver for SFF controllers now uses ata_sff_port_start()\n  instead of ata_port_start() unless the driver has custom\n  implementation.\n\n* Every driver for SFF controllers now uses ata_pci_default_filter()\n  unless the driver has custom implementation.\n\n* Removed an odd port_info-\u003esht initialization from ata_piix.c.\n  Likely a merge byproduct.\n\n* A port which has ATA_FLAG_SATA set doesn\u0027t need to set cable_detect\n  to ata_cable_sata().  Remove it from via and mv port ops.\n\n* Some drivers had unnecessary .max_sectors initialization which is\n  ignored and was missing .slave_destroy callback.  Fixed.\n\n* Removed unnecessary sht initializations port_info\u0027s.\n\n* Removed onsolete scsi device suspend/resume callbacks from\n  pata_bf54x.\n\n* No reason to set ata_pci_default_filter() and bmdma functions for\n  PIO-only drivers.  Remove those callbacks and replace\n  ata_bmdma_irq_clear with ata_noop_irq_clear.\n\n* pata_platform sets port_start to ata_dummy_ret0.  port_start can\n  just be set to NULL.\n\n* sata_fsl supports NCQ but was missing qc_defer.  Fixed.\n\n* pata_rb600_cf implements dummy port_start.  Removed.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "358f9a77a668660729e705fde9c3cf69f013aa98",
      "tree": "a249660fdd9f252925eff9eaac3ed7836c839f91",
      "parents": [
        "c1bc899f5805771926c9198e2ab4d77122c356a1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:47 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: implement and use ata_noop_irq_clear()\n\n-\u003eirq_clear() is used to clear IRQ bit of a SFF controller and isn\u0027t\nuseful for drivers which don\u0027t use libata SFF HSM implementation.\nHowever, it\u0027s a required callback and many drivers implement their own\nnoop version as placeholder.  This patch implements ata_noop_irq_clear\nand use it to replace those custom placeholders.\n\nAlso, SFF drivers which don\u0027t support BMDMA don\u0027t need to use\nata_bmdma_irq_clear().  It becomes noop if BMDMA address isn\u0027t\ninitialized.  Convert them to use ata_noop_irq_clear().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "8cebf274dd1c955a6e03385a85fd6569ce445946",
      "tree": "c459cd20ef93413e063826bb99ca0bcaf67ec8d2",
      "parents": [
        "672b2d65ba83a6f3f801fd3d58851aa9c0725a54"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: kill ATA_LFLAG_SKIP_D2H_BSY\n\nSome controllers can\u0027t reliably record the initial D2H FIS after SATA\nlink is brought online for whatever reason.  Advanced controllers\nwhich don\u0027t have traditional TF register based interface often have\nthis problem as they don\u0027t really have the TF registers to update\nwhile the controller and link are being initialized.\n\nSKIP_D2H_BSY works around the problem by skipping the wait for device\nreadiness before issuing SRST, so for such controllers libata issues\nSRST blindly and hopes for the best.\n\nNow that libata defaults to hardreset, this workaround is no longer\nnecessary.  For controllers which have support for hardreset, SRST is\nnever issued by itself.  It is only issued as follow-up SRST for\ndevice classification and PMP initialization, so there\u0027s no need to\nwait for it from prereset.\n\nKill ATA_LFLAG_SKIP_D2H_BSY.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "d692abd92f22a81b38d52c39601871003262841c",
      "tree": "4ff3f35d88762a52fb4d48adda1f39e1966b9f26",
      "parents": [
        "cf48062658e7ab3bc55e10c65676c3c73c16f8bf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:15 2008 -0400"
      },
      "message": "libata: kill ATA_LFLAG_HRST_TO_RESUME\n\nNow that hardreset is the preferred method of resetting, there\u0027s no\nneed for ATA_LFLAG_HRST_TO_RESUME flag.  Kill it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "cf48062658e7ab3bc55e10c65676c3c73c16f8bf",
      "tree": "9a50a016ceb6051d8a30a43ea39f2a4d3d25570e",
      "parents": [
        "4b119e21d0c66c22e8ca03df05d9de623d0eb50f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:15 2008 -0400"
      },
      "message": "libata: prefer hardreset\n\nWhen both soft and hard resets are available, libata preferred\nsoftreset till now.  The logic behind it was to be softer to devices;\nhowever, this doesn\u0027t really help much.  Rationales for the change:\n\n* BIOS may freeze lock certain things during boot and softreset can\u0027t\n  unlock those.  This by itself is okay but during operation PHY event\n  or other error conditions can trigger hardreset and the device may\n  end up with different configuration.\n\n  For example, after a hardreset, previously unlockable HPA can be\n  unlocked resulting in different device size and thus revalidation\n  failure.  Similar condition can occur during or after resume.\n\n* Certain ATAPI devices require hardreset to recover after certain\n  error conditions.  On PATA, this is done by issuing the DEVICE RESET\n  command.  On SATA, COMRESET has equivalent effect.  The problem is\n  that DEVICE RESET needs its own execution protocol.\n\n  For SFF controllers with bare TF access, it can be easily\n  implemented but more advanced controllers (e.g. ahci and sata_sil24)\n  require specialized implementations.  Simply using hardreset solves\n  the problem nicely.\n\n* COMRESET initialization sequence is the norm in SATA land and many\n  SATA devices don\u0027t work properly if only SRST is used.  For example,\n  some PMPs behave this way and libata works around by always issuing\n  hardreset if the host supports PMP.\n\n  Like the above example, libata has developed a number of mechanisms\n  aiming to promote softreset to hardreset if softreset is not going\n  to work.  This approach is time consuming and error prone.\n\n  Also, note that, dependingon how you read the specs, it could be\n  argued that PMP fan-out ports require COMRESET to start operation.\n  In fact, all the PMPs on the market except one don\u0027t work properly\n  if COMRESET is not issued to fan-out ports after PMP reset.\n\n* COMRESET is an integral part of SATA connection and any working\n  device should be able to handle COMRESET properly.  After all, it\u0027s\n  the way to signal hardreset during reboot.  This is the most used\n  and recommended (at least by the ahci spec) method of resetting\n  devices.\n\nSo, this patch makes libata prefer hardreset over softreset by making\nthe following changes.\n\n* Rename ATA_EH_RESET_MASK to ATA_EH_RESET and use it whereever\n  ATA_EH_{SOFT|HARD}RESET used to be used.  ATA_EH_{SOFT|HARD}RESET is\n  now only used to tell prereset whether soft or hard reset will be\n  issued.\n\n* Strip out now unneeded promote-to-hardreset logics from\n  ata_eh_reset(), ata_std_prereset(), sata_pmp_std_prereset() and\n  other places.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "4cde32fc4b32e96a99063af3183acdfd54c563f0",
      "tree": "1aaf39e056f1f9470fae9e8e9bc84ee603afca64",
      "parents": [
        "c07a9c4995827a4f4bcdbd07cec40ec87467f308"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 24 22:40:40 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 24 22:40:40 2008 -0400"
      },
      "message": "[libata] ahci: SB600 workaround is suspect... play it safe for now\n\nAt least one report claims that a878539ef994787c447a98c2e3ba0fe3dad984ec\nfailed to solve lockups, whereas the old limit-to-32-bit trick worked.\n\nRestore the 32-bit limit, but also leave the 255-sector limit in place,\nbecause we know that\u0027s needed as well.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c40e7cb89f9d36924131ef708ff1f16a76611add",
      "tree": "d5a9348c45c037e1c9224a00c2937f5c718fd8ed",
      "parents": [
        "4a38e733a75d52e84772fc00d88e32032a235e75"
      ],
      "author": {
        "name": "Jose Alberto Reguero",
        "email": "jareguero@telefonica.net",
        "time": "Thu Mar 13 23:22:24 2008 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 17 08:30:32 2008 -0400"
      },
      "message": "ahci: Add Marvell 6121 SATA support\n\nSigned-off-by: Jose Alberto Reguero \u003cjareguero@telefonica.net\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a22e64443f0aa4aa4e3c56a49e5c060e90752c07",
      "tree": "cc9db844ba0099aced1ad1faf3859da84ab75a09",
      "parents": [
        "dea55137634226fd74d5187a15dee1244ec252cb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Mar 10 10:25:25 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 17 08:26:50 2008 -0400"
      },
      "message": "ahci: implement skip_host_reset parameter\n\nUnder certain circumstances (SSP turned off by the BIOS) and for\ndebugging purposes, skipping global controller reset is helpful.  Add\na kernel parameter for it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "dea55137634226fd74d5187a15dee1244ec252cb",
      "tree": "f7acf611f82a0af1194e0375fed462f536f13348",
      "parents": [
        "916fbfb7ae5f8c8f86399794d89e6d273df8826b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 11 19:52:31 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 17 08:26:47 2008 -0400"
      },
      "message": "ahci: request all PCI BARs\n\nahci is often implemented with accompanying SFF compatible interface\nand legacy IDE driver may attach to the legacy IO ports when the\ncontroller is already claimed by ahci and vice-versa.  This patch\nmakes ahci use pcim_iomap_regions_request_all() so that all IO regions\nare claimed on attach.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "258cd8464b618d5ec3b836f02cce05e3faf226b4",
      "tree": "cec1247e939f818d3d0ab13fe895df3c3d425e31",
      "parents": [
        "7afb42226a8eaa9ae3f6b9917ffb16902358e749"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "12o3l@tiscali.nl",
        "time": "Sun Mar 09 21:42:40 2008 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 10 20:51:16 2008 -0400"
      },
      "message": "ahci: logical-bitwise and confusion in ahci_save_initial_config()\n\nlogical-bitwise \u0026 confusion\n\nSigned-off-by: Roel Kluin \u003c12o3l@tiscali.nl\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "70d562cf7853ea1bb53c1007075c5df958f11c90",
      "tree": "66e342103b1579f90e31cf2e081af8d0e973c71b",
      "parents": [
        "f659f0e4480bb82e6dcf3db8ba1e8485444084e5"
      ],
      "author": {
        "name": "peerchen",
        "email": "peerchen@gmail.com",
        "time": "Thu Mar 06 21:22:41 2008 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 10 20:50:52 2008 -0400"
      },
      "message": "ahci: add the Device IDs for nvidia MCP7B AHCI\n\nSigned-off-by: Peer Chen \u003cpeerchen@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a878539ef994787c447a98c2e3ba0fe3dad984ec",
      "tree": "3c2b16121143c4dad805b048b2cee5d4c410384a",
      "parents": [
        "6ddd68615ae9b21096545d7d6ab0f04113ae8b42"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Feb 28 15:43:48 2008 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Mar 05 07:53:06 2008 -0500"
      },
      "message": "ahci: work around ATI SB600 h/w quirk\n\nThis addresses the recent ATI SB600 errata, where the hardware does\nnot like 256-length PRD entries during FPDMA (aka NCQ).\n\nIt hurts performance on SB600, but it is more important to get a\ncorrect patch eliminating the data corruption/lockups, and then later\non tune for performance.\n\nWe simply limit each command to a maximum of 255 sectors, on SB600.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e39fc8c9fd0bb6f4018186801e4a53a5eccaaf70",
      "tree": "a697763c7714bb8e44c841d03e074e9415919614",
      "parents": [
        "39f25e70ca37b8a719e8274e6f3ec2ce2ea8df04"
      ],
      "author": {
        "name": "Shane Huang",
        "email": "ati.shane@gmail.com",
        "time": "Fri Feb 22 05:00:31 2008 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Feb 24 00:28:44 2008 -0500"
      },
      "message": "[libata] ahci: AMD SB700/SB800 SATA support 64bit DMA\n\nSB700 SATA controller can support 64 bit DMA, the previous commit\nbadc2341579511a247f5993865aa68379e283c5c was added with\ncareless reference to SB600, which should be modified by this patch.\n\nSigned-off-by: Shane Huang \u003cshane.huang@amd.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3a2d5b700132f35401f1d9e22fe3c2cab02c2549",
      "tree": "ad991428c41aee92a5f78b06bf73430af0e6f7ae",
      "parents": [
        "39273b58a409cd6d65c9732bdca00bacd1626672"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Feb 23 19:13:25 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 10:40:04 2008 -0800"
      },
      "message": "PM: Introduce PM_EVENT_HIBERNATE callback state\n\nDuring the last step of hibernation in the \"platform\" mode (with the\nhelp of ACPI) we use the suspend code, including the devices\u0027\n-\u003esuspend() methods, to prepare the system for entering the ACPI S4\nsystem sleep state.\n\nBut at least for some devices the operations performed by the\n-\u003esuspend() callback in that case must be different from its operations\nduring regular suspend.\n\nFor this reason, introduce the new PM event type PM_EVENT_HIBERNATE and\npass it to the device drivers\u0027 -\u003esuspend() methods during the last phase\nof hibernation, so that they can distinguish this case and handle it as\nappropriate.  Modify the drivers that handle PM_EVENT_SUSPEND in a\nspecial way and need to handle PM_EVENT_HIBERNATE in the same way.\n\nThese changes are necessary to fix a hibernation regression related\nto the i915 driver (ref. http://lkml.org/lkml/2008/2/22/488).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nTested-by: Jeff Chua \u003cjeff.chua.linux@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dde2020754aeb14e17052d61784dcb37f252aac2",
      "tree": "1b6d57c6eff2024fd13e4b3b115d0a6770d8cb80",
      "parents": [
        "db0a2e0099be3a1cff55879225881465f16c67d3"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Tue Feb 19 11:36:56 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 19 11:36:56 2008 +0100"
      },
      "message": "libata: eliminate the home grown dma padding in favour of\n\nthat provided by the block layer\n\nATA requires that all DMA transfers begin and end on word boundaries.\nBecause of this, a large amount of machinery grew up in ide to adjust\nscatterlists on this basis.  However, as of 2.5, the block layer has a\ndma_alignment variable which ensures both the beginning and length of a\nDMA transfer are aligned on the dma_alignment boundary.  Although the\nblock layer does adjust the beginning of the transfer to ensure this\nhappens, it doesn\u0027t actually adjust the length, it merely makes sure\nthat space is allocated for transfers beyond the declared length.  The\nupshot of this is that scatterlists may be padded to any size between\nthe actual length and the length adjusted to the dma_alignment safely\nknowing that memory is allocated in this region.\n\nRight at the moment, SCSI takes the default dma_aligment which is on a\n512 byte boundary.  Note that this aligment only applies to transfers\ncoming in from user space.  However, since all kernel allocations are\nautomatically aligned on a minimum of 32 byte boundaries, it is safe to\nadjust them in this manner as well.\n\ntj: * Adjusting sg after padding is done in block layer.  Make libata\n      set queue alignment correctly for ATAPI devices and drop broken\n      sg mangling from ata_sg_setup().\n    * Use request-\u003eraw_data_len for ATAPI transfer chunk size.\n    * Killed qc-\u003eraw_nbytes.\n    * Separated out killing qc-\u003en_iter.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "837f5f8fb98d4357d49e9631c9ee2815f3c328ca",
      "tree": "25c24b611fd66b0599d8145716513339d42a7bb3",
      "parents": [
        "f351b2d638c3cb0b95adde3549b7bfaf3f991dfa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Feb 06 15:13:51 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 06 06:59:27 2008 -0500"
      },
      "message": "ahci: fix CAP.NP and PI handling\n\nAHCI uses CAP.NP to indicate the number of ports and PI to tell which\nports are enabled.  The only requirement is that the number of ports\nindicated by CAP.NP should equal or be higher than the number of\nenabled ports in PI.\n\nCAP.NP and PI carry duplicate information and there have been some\ninteresting cases.  Some early AHCI controllers didn\u0027t set PI at all\nand just implement from port 0 to CAP.NP.  An ICH8 board which wired\nfour out of six available ports had 3 (4 ports) for CAP.NP and 0x33\nfor PI.  While ESB2 has less bits set in PI than the value in CAP.NP.\n\nTill now, ahci driver assumed that PI is invalid if it doesn\u0027t match\nCAP.NP exactly.  This violates AHCI standard and the driver ends up\naccessing unmimplemented ports on ESB2.\n\nThis patch updates CAP.NP and PI handling such that PI can have less\nnumber of bits set than indicated in CAP.NP and the highest port is\ndetermined as the maximum port of what CAP.NP and PI indicate.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "16ad1ad9cbce153f4bfed22f9b9a6db4ae212fc7",
      "tree": "78dcdaa5f7effda33c6d93c8ef56fc5f0c8c0830",
      "parents": [
        "da2fa9baf06f33a8fa7aa3f56c9f2b4070ceca0e"
      ],
      "author": {
        "name": "Jason Gaston",
        "email": "jason.d.gaston@intel.com",
        "time": "Mon Jan 28 17:34:14 2008 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Feb 01 11:29:48 2008 -0500"
      },
      "message": "ahci: RAID mode SATA patch for Intel ICH10 DeviceID\u0027s\n\nThis patch adds the Intel ICH10 SATA RAID Controllers DeviceID\u0027s.\n\nSigned-off-by:  Jason Gaston \u003cjason.d.gaston@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "b710a1f4b34438b624e9c6c2dc8bcf54b0b0ba27",
      "tree": "f8bb87bd4cbc2591da8c0b9bdaf01b426902800b",
      "parents": [
        "c729072459446885c5c200137de1db32da5db4dc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Jan 05 23:11:57 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:16 2008 -0500"
      },
      "message": "ahci: factor out AHCI enabling and enable AHCI before reading CAP\n\nFactor out AHCI enabling into ahci_enable_ahci() and enabling AHCI\nbefore reading CAP in ahci_save_initial_config() as the spec requires\nenabling AHCI mode before accessing any other registers.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "4ca4e439640cd1d3659cbcf60e7a73c2ae0450b3",
      "tree": "659dceb7469341dca95d7a96774e787c3b510872",
      "parents": [
        "35a10a80daa04b7316d6bac1b1402cc347c35b1e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Sun Dec 30 09:32:22 2007 +0000"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:15 2008 -0500"
      },
      "message": "libata annotations and fixes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "ff2aeb1eb64c8a4770a6304f9addbae9f9828646",
      "tree": "c6febbec290ec6c40bf3abc7bcdb7188f5039443",
      "parents": [
        "f92a26365a72333f418abe82700c6030d4a1a807"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Dec 05 16:43:11 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:14 2008 -0500"
      },
      "message": "libata: convert to chained sg\n\nlibata used private sg iterator to handle padding sg.  Now that sg can\nbe chained, padding can be handled using standard sg ops.  Convert to\nchained sg.\n\n* s/qc-\u003e__sg/qc-\u003esg/\n\n* s/qc-\u003epad_sgent/qc-\u003eextra_sg[]/.  Because chaining consumes one sg\n  entry.  There need to be two extra sg entries.  The renaming is also\n  for future addition of other extra sg entries.\n\n* Padding setup is moved into ata_sg_setup_extra() which is organized\n  in a way that future addition of other extra sg entries is easy.\n\n* qc-\u003eorig_n_elem is unused and removed.\n\n* qc-\u003en_elem now contains the number of sg entries that LLDs should\n  map.  qc-\u003emapped_n_elem is added to carry the original number of\n  mapped sgs for unmapping.\n\n* The last sg of the original sg list is used to chain to extra sg\n  list.  The original last sg is pointed to by qc-\u003elast_sg and the\n  content is stored in qc-\u003esaved_last_sg.  It\u0027s restored during\n  ata_sg_clean().\n\n* All sg walking code has been updated.  Unnecessary assertions and\n  checks for conditions the core layer already guarantees are removed.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "405e66b38797875e80669eaf72d313dbb76533c3",
      "tree": "a069f0bb4ae1e81a58bc8f8965a2443d25186f0d",
      "parents": [
        "f20ded38aa54b92dd0af32578b8916d0aa2d9e05"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:53 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "libata: implement protocol tests\n\nImplement protocol tests - ata_is_atapi(), ata_is_nodata(),\nata_is_pio(), ata_is_dma(), ata_is_ncq() and ata_is_data() and use\nthem to replace is_atapi_taskfile() and hard coded protocol tests.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "49f290903935612aadab3899a4aca884c1140348",
      "tree": "93e98e81a7d359c679ce081295d939be948c1c80",
      "parents": [
        "51dbd490614e6228e9b2b198bd4f5f76ef961059"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Nov 19 16:03:44 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "ahci: update PCS programming\n\nFor intel ones, ahci unconditionally OR\u0027d 0xf to PCS.  This isn\u0027t\ncorrect for the following cases.\n\n* ich6/7m\u0027s which only implement P0 and P2 (0xf works fine tho)\n\n* ich8/9\u0027s which have six ports and needs 0x3f to enable all ports\n\nThis patch updates PCS programming such that...\n\n* port_map determined by ahci_save_initial_config() is OR\u0027d instead of 0xf\n\n* PCS is updated only if necessary (there are turned off enable bits)\n\nport_map is determined from PORTS_IMPL PCI register which is\nimplemented as write or write-once register.  If the register isn\u0027t\nprogrammed, ahci automatically generates it from number of ports,\nwhich is good enough for PCS programming.  ICH6/7M are probably the\nonly ones where non-contiguous enable bits are necessary \u0026\u0026 PORTS_IMPL\nisn\u0027t programmed properly but they\u0027re proven to work reliably with 0xf\nanyway.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "459ad68893a84fb0881e57919340b97edbbc3dc7",
      "tree": "04e7d419836214e3cb8a21f97a79697d0d9f0035",
      "parents": [
        "c4f7792c021cda9bbf65d0bc2253a593fd652b91"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Dec 07 12:46:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 07 15:27:54 2007 -0500"
      },
      "message": "libata: kill spurious NCQ completion detection\n\nSpurious NCQ completion detection implemented in ahci was incorrect.\nOn AHCI receving and processing FISes and raising interrupts are not\ninterlocked and spurious interrupts are expected.\n\nFor example, if an interrupt occurs while interrupt handler is running\nand the running interrupt handler handles the event the new IRQ\nindicated, after IRQ handler finishes, it will be executed again\nbecause IRQ pending bit is set by the new interrupt but there won\u0027t be\nanything to process.\n\nPlease read the following message for more information.\n\n  http://article.gmane.org/gmane.linux.ide/26012\n\nThis patch...\n\n* Removes all spurious IRQ whining from ahci.  Spurious NCQ completion\n  detection was completely wrong.  Spurious D2H Register FIS taught us\n  that some early drives send spurious D2H Register FIS with I bit set\n  while NCQ commands are in progress but none of recent drives does\n  that and even the ones which show such behavior can do NCQ fine.\n\n* Kills all NCQ blacklist entries which were added because of spurious\n  NCQ completions.  I tracked down each commit and verified all\n  removed ones are actually added because of spurious completions.\n\n  WD740ADFD-00NLR1 wasn\u0027t deleted but moved upward because the drive\n  not only had spurious NCQ completions but also is slow on sequential\n  data transfers if NCQ is enabled.\n\n  Maxtor 7V300F0 was added by 0e3dbc01d53940fe10e5a5cfec15ede3e929c918\n  from Alan Cox.  I can only find evidences that the drive only had\n  troubles with spuruious completions by searching the mailing list.\n  This entry needs to be verified and removed if it doesn\u0027t have other\n  NCQ related problems.\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": "c4f7792c021cda9bbf65d0bc2253a593fd652b91",
      "tree": "e0c727ba1bc934a8cbc58515c5b33e16eecde8a2",
      "parents": [
        "d1aa690a7d1afa673c3383bfcd6e96ddb350939a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Dec 06 15:09:43 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 07 15:27:54 2007 -0500"
      },
      "message": "ahci: don\u0027t attach if ICH6 is in combined mode\n\nICH6 R/Ms share PCI ID between piix and ahci modes and we\u0027ve been\nallowing ahci to attach regardless of how BIOS configured it.\nHowever, enabling AHCI mode when the controller is in combined mode\ncan result in unexpected behavior.  Don\u0027t attach if the controller is\nin combined mode.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Bill Nottingham \u003cnotting@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "994056d7aa884c742f58e2f2c17305bb01bf14e7",
      "tree": "41db117f56760ffb89dba6ae505799cf6ba27430",
      "parents": [
        "2c5ea0f2d8c7d4883dd0d8ec3c7e3f3640b4f814"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Dec 06 15:02:48 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Dec 07 15:27:53 2007 -0500"
      },
      "message": "ahci: fix engine reset failed message\n\nThere isn\u0027t much point in reporting -EOPNOTSUPP as failure.  Also the\nmessage was missing newline.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6ba8695870a5a2ebf6f3d1ee3ac1e4d96d667cf6",
      "tree": "f272a1a157b23036751314f0ce885080a8b17677",
      "parents": [
        "306b30f74d37f289033c696285e07ce0158a5d7b"
      ],
      "author": {
        "name": "peerchen",
        "email": "peerchen@gmail.com",
        "time": "Mon Dec 03 22:20:37 2007 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Dec 04 14:10:14 2007 -0500"
      },
      "message": "ahci: add the Device IDs of MCP79 AHCI controller to ahci.c\n\nAdd the device IDs of legacy mode of MCP79 AHCI controller to ahci.c\n\nSigned-off-by: Peer Chen \u003cpeerchen@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "31556594f913fa81d008cecfe46d7211c919a853",
      "tree": "424db37711a0805aef50f6e76b8686eb36ab5147",
      "parents": [
        "ca77329fb713b7fea6a307068e0dd0248e7aa640"
      ],
      "author": {
        "name": "Kristen Carlson Accardi",
        "email": "kristen.c.accardi@intel.com",
        "time": "Thu Oct 25 01:33:26 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 11:00:35 2007 -0400"
      },
      "message": "[libata] AHCI: add hw link power management support\n\nThis patch will set the correct bits to turn on Aggressive\nLink Power Management (ALPM) for the ahci driver.  This\nwill cause the controller and disk to negotiate a lower\npower state for the link when there is no activity (see\nthe AHCI 1.x spec for details).  This feature is mutually\nexclusive with Hot Plug, so when ALPM is enabled, Hot Plug\nis disabled.  ALPM will be enabled by default, but it is\nsettable via the scsi host syfs interface.  Possible\nsettings for this feature are:\n\nSetting         Effect\n----------------------------------------------------------\nmin_power       ALPM is enabled, and link set to enter\n                lowest power state (SLUMBER) when idle\n                Hot plug not allowed.\n\nmax_performance ALPM is disabled, Hot Plug is allowed\n\nmedium_power    ALPM is enabled, and link set to enter\n                second lowest power state (PARTIAL) when\n                idle.  Hot plug not allowed.\n\nSigned-off-by:  Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ab6fc95f609b372a19e18ea689986846ab1ba29c",
      "tree": "596c0139d5054bfe31b3c3ee36bcc8e6c50e8f9f",
      "parents": [
        "360737a982b1ae09e1659e0bb27085c03f02f404"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 10:43:55 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 10:43:55 2007 -0400"
      },
      "message": "[libata] AHCI: fix newly introduced host-reset bug\n\nThe recent fix to host reset introduced a problem, whereby AHCI-enable\nbit would be cleared upon reset, if it was not asserted prior to reset.\n\nUnconditionally enable AHCI-enable bit.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "88ff6eafbb2a1c55f0f0e2e16d72e7b10d8ae8a5",
      "tree": "ad6ab294a4f725540bfa24b7a451273b99fa71c1",
      "parents": [
        "054a5fbaceb2eb3a31ea843c1cf0b8e10b91478c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 16 14:21:24 2007 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 06:15:27 2007 -0400"
      },
      "message": "libata: implement ata_wait_after_reset()\n\nOn certain device/controller combination, 0xff status is asserted\nafter reset and doesn\u0027t get cleared during 150ms post-reset wait.  As\n0xff status is interpreted as no device (for good reasons), this can\nlead to misdetection on such cases.\n\nThis patch implements ata_wait_after_reset() which replaces the 150ms\nsleep and waits upto ATA_TMOUT_FF_WAIT if status is 0xff.\nATA_TMOUT_FF_WAIT is currently 800ms which is enough for\nHHD424020F7SV00 to get detected but not enough for Quantum GoVault\ndrive which is known to take upto 2s.\n\nWithout parallel probing, spending 2s on 0xff port would incur too\nmuch delay on ata_piix\u0027s which use 0xff to indicate empty port and\ndoesn\u0027t have SCR register, so GoVault needs to wait till parallel\nprobing.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "edc93052844c2032b2ec5910ace516da9078714d",
      "tree": "f99c1f1c529cdcbf93f12bf79583b287657abd49",
      "parents": [
        "c15fcafe1c42daff212d78d4ce9619a52a74379f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Oct 25 14:59:16 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Oct 25 02:06:59 2007 -0400"
      },
      "message": "ahci: ahci: implement workaround for ASUS P5W-DH Deluxe ahci_broken_hardreset(), take #2\n\nP5W-DH Deluxe has ICH9 which doesn\u0027t have PMP support but SIMG 4726\nhardwired to the second port of AHCI controller at PCI device 1f.2.\nThe 4726 doesn\u0027t work as PMP but as a storage processor which can do\nhardware RAID on downstream ports.\n\nWhen no device is attached to the downstream port of the 4726, pseudo\nATA device for configuration appears.  Unfortunately, ATA emulation on\nthe device is very lousy and causes long hang during boot.\n\nThis patch implements workaround for the board.  If the mainboard is\nP5W-DH Deluxe (matched using DMI), only hardreset is used on the\nsecond port of AHCI controller @ 1f.2 and the hardreset doesn\u0027t depend\non receiving the first FIS and just proceed to IDENTIFY.\n\nThis workaround fixes bugzilla #8923.\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d8923\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "2dcb407e61458ded17503d6bd12b8c064965368b",
      "tree": "6044e032197b84f9943a385b0c9dbb6656c3f97f",
      "parents": [
        "01e7ae8c13bb06a2ce622ebace33bb7e28ef596c"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 19 06:42:56 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Oct 23 20:59:42 2007 -0400"
      },
      "message": "[libata] checkpatch-inspired cleanups\n\nTackle the relatively sane complaints of checkpatch --file.\n\nThe vast majority is indentation and whitespace changes, the rest are\n\n* #include fixes\n* printk KERN_xxx prefix addition\n* BSS/initializer cleanups\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3a4fa0a25da81600ea0bcd75692ae8ca6050d165",
      "tree": "a4de1662e645c029cf3cf58f0646cbb1959861dc",
      "parents": [
        "18735dd8d2d37031b97f9e9e106acbaed01eb896"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Fri Oct 19 23:10:43 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Oct 19 23:10:43 2007 +0200"
      },
      "message": "Fix misspellings of \"system\", \"controller\", \"interrupt\" and \"necessary\".\n\nFix the various misspellings of \"system\", controller\", \"interrupt\" and\n\"[un]necessary\".\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\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": "5f226c6bf78edab023ed1ea679531731d9df92a6",
      "tree": "01e0dff1224476aa52c240ee958ec7948bb85cc6",
      "parents": [
        "1c954a4d9a9e351fa3509533fd8dd5f3821206cd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 15:02:23 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:47 2007 -0400"
      },
      "message": "ahci: fix notification handling\n\nAsynchronous notification on ICH9 didn\u0027t work because it didn\u0027t write\nAN FIS into the RX area - it only updates SNotification.  Also,\nsnooping SDB_FIS RX area is racy against further SDB FIS receptions.\nLet sata_async_notification() determine using SNTF if it\u0027s available\nand snoop RX area iff SNTF isn\u0027t available\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "1c954a4d9a9e351fa3509533fd8dd5f3821206cd",
      "tree": "edc1571ab692de818543b9c5ddbd80e6bbbfca29",
      "parents": [
        "75da6d2b8f518bec40546bc0b0696a2cebecf6cc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 15:01:37 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:47 2007 -0400"
      },
      "message": "ahci: clean up PORT_IRQ_BAD_PMP enabling\n\nNow that we have pp-\u003eintr_mask, move PORT_IRQ_BAD_PMP enabling to\nahci_pmp_attach/detach() where it belongs.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "75da6d2b8f518bec40546bc0b0696a2cebecf6cc",
      "tree": "2ee776da78cfc3dd9a42ebcfdc7864248982159f",
      "parents": [
        "9073868376ed5fa1f247327ccb2e6f766d5b7eed"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Oct 09 14:59:50 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:46 2007 -0400"
      },
      "message": "ahci: kill leftover from enabling NCQ over PMP\n\nahci had problems with NCQ over PMP and NCQ used to be disabled while\nPMP was attached.  After fixing the problem, the temporary NCQ\ndisabling code wasn\u0027t removed completely.  Kill the remaining piece.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "7100819f5f9b99eb7c7dd5597f293388a405bf7b",
      "tree": "3a386aab745c01976318ada8559db7f1cb5b76d4",
      "parents": [
        "1333e19434da116bc832e1b8925359d1565fedc9"
      ],
      "author": {
        "name": "Peer Chen",
        "email": "peerchen@gmail.com",
        "time": "Mon Sep 24 10:16:25 2007 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:45 2007 -0400"
      },
      "message": "ahci: Add MCP79 support to AHCI driver\n\nSigned-off-by: Peer Chen \u003cpeerchen@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6949b9148d3656afc13a2ccc06d13c071ec71bdc",
      "tree": "fc8021205536a67e7701ad413767a412449e51f7",
      "parents": [
        "417a1a6d3d7abad4c5288135f640e6e38e7a65c5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:19:55 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:44 2007 -0400"
      },
      "message": "ahci: implement AHCI_HFLAG_NO_PMP\n\nOf course some controllers lie about PMP support.  Black list them.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "417a1a6d3d7abad4c5288135f640e6e38e7a65c5",
      "tree": "87207680dbfb4b06f6267a49fbea68a880fba894",
      "parents": [
        "7d50b60b5e38f910ad69f0187af00f5d6a8970d4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:19:55 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:44 2007 -0400"
      },
      "message": "ahci: move host flags over to pi.private_data\n\nPrivate pi.flags area is full and we need more private flags.  Move\nhost private flags over to pi.private_data.  During initialization,\nthese flags are copied to hpriv-\u003eflags.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "7d50b60b5e38f910ad69f0187af00f5d6a8970d4",
      "tree": "627c57902e588ad6e7f51a2df9f2b8f091e014c0",
      "parents": [
        "238180343eff95697ed71eea137cf61ba3cea6ad"
      ],
      "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": "ahci: implement PMP support\n\nImplement AHCI PMP support.  ahci only supports command based\nswitching.  Also, for some reason, NCQ over PMP doesn\u0027t work now.\nOther than that, everything works.\n\nTested on ICH9R, JMB360/363 + SIMG3726, 4726 and 5744.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Forrest Zhao \u003cforrest.zhao@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3cc3eb1148e4b2dfabf7a1dcf36fd8be1331ca95",
      "tree": "5f987f613eb8dae6c170f97fe9acb47379902a32",
      "parents": [
        "b90fe23bd51c6b1c298159591c833bdd24f55002"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Sep 26 00:02:41 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:42 2007 -0400"
      },
      "message": "[libata] AHCI: enable AHCI mode, before using AHCI reset\n\nAHCI spec says host-reset bit may only be set when the ahci-enable bit\nis also set.\n\nNoticed by Peer Chen \u003cpeerchen@gmail.com\u003e\n\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": "31cc23b34913bc173680bdc87af79e551bf8cc0d",
      "tree": "ec64421ead9259174f0de8b22c36449ece6d69a4",
      "parents": [
        "fb7fd61454c8681cd2621051a710b78a00369203"
      ],
      "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 ops-\u003eqc_defer()\n\nControllers which support PMP have various restrictions on which\ncombinations of commands are allowed to what number of devices\nconcurrently.  This patch implements ops-\u003eqc_defer() which determines\nwhether a qc can be issued at the moment or should be deferred.\n\nIf the function returns ATA_DEFER_LINK, the qc will be deferred until\na qc completes on the link.  If ATA_DEFER_PORT, until a qc completes\non any link.  The defer conditions are advisory and in general\nATA_DEFER_LINK can be considered as lower priority deferring than\nATA_DEFER_PORT.\n\nops-\u003eqc_defer() replaces fixed ata_scmd_need_defer().  For standard\nNCQ/non-NCQ exclusion, ata_std_qc_defer() is implemented.  ahci and\nsata_sil24 are converted to use ata_std_qc_defer().\n\nops-\u003eqc_defer() is heavier than the original mechanism because full qc\nis prepped before determining to defer it, but various information is\nneeded to determine defer conditinos and fully translating a qc is the\nonly way to supply such information in generic manner.\n\nIMHO, this shouldn\u0027t cause any noticeable performance issues as\n\n* for most cases deferring occurs rarely (except for NCQ-aware\n  cmd-switching PMP)\n* translation itself isn\u0027t that expensive\n* once deferred the command won\u0027t be repeated until another command\n  completes which usually is a very long time cpu-wise.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "854c73a2f1c3bcc4aa88c25e208dc597e8efb795",
      "tree": "210569f3c4fa4f9413ceb0bc3fcf89648a9894b2",
      "parents": [
        "c78968bb0f7714ceba1cdfa23714454fc98cefdf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Sep 23 13:14:11 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:40 2007 -0400"
      },
      "message": "libata: misc updates for AN\n\nUpdate AN support in preparation of PMP support.\n\n* s/ata_id_has_AN/ata_id_has_atapi_AN/\n* add AN enabled reporting during configuration\n* add err_mask to AN configuration failure reporting\n* update LOCKING comment for ata_scsi_media_change_notify()\n* check whether ATA dev is attached to SCSI dev ata_scsi_media_change_notify()\n* set ATA_FLAG_AN in ahci and sata_sil24\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": "d4155e6f13e931048036976d9fb47b5db53ee7a3",
      "tree": "cdcdc7161c2230cbf09339fc0979760bf90a02a5",
      "parents": [
        "d7fbee050753e153622b5d41bc8bd1cb19cda9b9"
      ],
      "author": {
        "name": "Jason Gaston",
        "email": "jason.d.gaston@intel.com",
        "time": "Thu Sep 20 17:35:00 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:39 2007 -0400"
      },
      "message": "ahci: RAID mode SATA patch for Intel Tolapai\n\nSigned-off-by: Jason Gaston \u003cjason.d.gaston@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "7a234aff3d83728fd83cf19df32d3df52566d2ac",
      "tree": "d991844bf7a7882eacd72a57a1465b25dc55e95d",
      "parents": [
        "05027adccc09401a7e31d5ef51040dc75ab03c22"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Sep 03 12:44:57 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:39 2007 -0400"
      },
      "message": "ahci: reimplement port_map handling\n\nReimplement port_map handling such that\n\n1. Non-zero PORTS_IMPL value is always examined and used if consistent\n   with cap.n_ports.\n\n2. When PI and cat.n_ports are inconsistent, honor cap.n_ports and\n   force port_map to be ((1 \u003c\u003c cap.n_ports) - 1).\n\n3. There were two separate places dealing with port_map.  Unify them\n   to one.\n\nAs all newer ahci chips seem to get PI correct and older ones usually\nhave zero PI.  Controllers with holes in PI are very unlikely to screw\nup PI, so #2 makes more sense than following inconsistent PI.\n\nWithout this change, not setting ATA_FLAG_HONOR_PI when it\u0027s needed\nresults in weird detection failure.  This changed logic should be able\nto handle all known cases correctly automatically.\n\nVerified on ICH6 (reports 0 PI), ICH8 (with holes in port_map), ICH9,\nJMB360 and JMB363.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\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": "ac8869d56d95a8c74403e6f7a47d74fcfcc1b988",
      "tree": "2f812aff4c6e559f3c093f9933960d09631375c8",
      "parents": [
        "7d73a363dea186a864f6295bbe842da8044d42cd"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Aug 16 03:17:03 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:35 2007 -0400"
      },
      "message": "[libata] Remove -\u003eport_disable() hook\n\nIt was always set to ata_port_disable().  Removed the hook, and replaced\nthe very few ap-\u003eops-\u003eport_disable() callsites with direct calls to\nata_port_disable().\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6d32d30f55020d766388df7515f771f68c973033",
      "tree": "ec0efe48460b5b3f177fed2698ccd04b7964359b",
      "parents": [
        "cb94c1cf5a6beffbd8935eb91227df0dd1987644"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Aug 15 05:38:46 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:34 2007 -0400"
      },
      "message": "[libata] Remove -\u003eirq_ack() hook, and ata_dummy_irq_on()\n\n* -\u003eirq_ack() is redundant to what the irq handler already\n  performs... chk-status + irq-clear.  Furthermore, it is only\n  called in one place, when screaming-irq-debugging is enabled,\n  so we don\u0027t want to bother with a hook just for that.\n\n* ata_dummy_irq_on() is only ever used in drivers that have\n  no callpath reaching -\u003eirq_on().  Remove .irq_on hook from\n  those drivers, and the now-unused ata_dummy_irq_on()\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a738492501eaf6e266acc53a064552b3fcc706b2",
      "tree": "8d24a2504530bf175279c294cfcac669ade575c8",
      "parents": [
        "2f2949680ad89d606db838340b17c30216c0bb0f"
      ],
      "author": {
        "name": "Kristen Carlson Accardi",
        "email": "kristen.c.accardi@intel.com",
        "time": "Thu Aug 09 14:23:41 2007 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:33 2007 -0400"
      },
      "message": "ahci: Store interrupt value\n\nUse a stored value for which interrupts to enable.  Changing this allows\nus to selectively turn off certain interrupts later and have them\nstay off.\n\nSigned-off-by:  Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "2f2949680ad89d606db838340b17c30216c0bb0f",
      "tree": "25d7918c7b846d151776bbdf6a111a1d241d6b05",
      "parents": [
        "9f45cbd3f0fc597530aaf85cad7fe52cd63f1fd8"
      ],
      "author": {
        "name": "Kristen Carlson Accardi",
        "email": "kristen.c.accardi@intel.com",
        "time": "Wed Aug 15 04:11:25 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 12 14:55:33 2007 -0400"
      },
      "message": "[libata] ahci: send event when AN received\n\nWhen we get an SDB FIS with the \u0027N\u0027 bit set, we should send\nan event to user space to indicate that there has been a\nmedia change.  This will be done via the scsi device.\n\nSigned-off-by: Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0c88758b5a6325428aaadab619886242db20ceae",
      "tree": "bf84abbce984fa45c4ce927b65695f30a8ea3a43",
      "parents": [
        "0260731f0187840e272bfa10d3ba0f3e417976f5"
      ],
      "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: make two port flags HRST_TO_RESUME and SKIP_D2H_BSY link flags\n\nHRST_TO_RESUME and SKIP_D2H_BSY are link attributes.  Move them to\nata_link-\u003eflags.  This will allow host and PMP links to have different\nattributes.  ata_port_info-\u003elink_flags is added and used by LLDs to\nspecify these flags during initialization.\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"
    }
  ],
  "next": "936fd7328657884d5a69a55666c74a55aa83ca27"
}
