)]}'
{
  "log": [
    {
      "commit": "110f66d25c33c2259b1125255fa7063ab07b8340",
      "tree": "2d524b3f27aa168eb01cbb007c2bfa195bea42f4",
      "parents": [
        "fa5b561c4ea170caf9759109acc2e961a7e83bea"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 16 04:17:28 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Oct 06 00:26:27 2009 -0400"
      },
      "message": "libata: make gtf_filter per-dev\n\nAdd -\u003egtf_filter to ata_device and set it to ata_acpi_gtf_filter when\ninitializing ata_link.  This is to allow quirks which apply different\ngtf filters.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "fa5b561c4ea170caf9759109acc2e961a7e83bea",
      "tree": "55d872dc6bba8bce920f95d1a19bf441784c94ac",
      "parents": [
        "f1bce7f80e3b400cf29787b0afa9c3042b959017"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 16 04:17:02 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Oct 06 00:26:26 2009 -0400"
      },
      "message": "libata: implement more acpi filtering options\n\nCurrently libata-acpi can only filter DIPM among SATA feature enables\nvia _GTF.  This patch adds the capability to filter out FPDMA non-zero\noffset, in-order guarantee and auto-activation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "f1bce7f80e3b400cf29787b0afa9c3042b959017",
      "tree": "fa0cec132984e3cd36890c2dfedb52dd0e64df24",
      "parents": [
        "4c521c8ef0e802f88f1d80352dd1b3d6a6aa1cc8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 16 04:16:04 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Oct 06 00:25:03 2009 -0400"
      },
      "message": "libata: cosmetic updates\n\nWe\u0027re about to add more SATA_* and ATA_ACPI_FILTER_* constants.\nReformat them in preparation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "051d9fbdd1d1ec85ea18ba20581234cf23f1c217",
      "tree": "7ad5adda0326170be068578782129ce59c41f491",
      "parents": [
        "6521148c6449724c3b707820b9c535c7e8b8afcd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 03 11:46:12 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:20 2009 -0400"
      },
      "message": "libata: remove spindown skipping and warning\n\nThis was a hack to give userland shutdown tools time to drop manual\nspindown.  All popular distros updated quite some time ago and the due\nis well passed.  Drop it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jaswinder Singh Rajput \u003cjaswinder@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "388539f3ff0cf1de926b03f94e1eec112358f74d",
      "tree": "6840b76ede7e27e27eb9aaf516f827beba16c5ad",
      "parents": [
        "2fc37adba0fb05760b8635c6706773af828ccf3c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Jul 27 09:24:35 2009 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:19 2009 -0400"
      },
      "message": "[libata] add DMA setup FIS auto-activate feature\n\nHopefully results in fewer on-the-wire FIS\u0027s and no breakage.  We\u0027ll see!\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "5920dadfb4aec6c1372c5570e71bcd3b4837e63c",
      "tree": "4d4e1c5a47d23b1578bfde9ab223b07206a77c64",
      "parents": [
        "7d084d96fdf1d791cb171da57efc1ca89d68dd6c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 15 17:11:41 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jul 28 21:07:09 2009 -0400"
      },
      "message": "libata: accept late unlocking of HPA\n\nOn certain configurations, HPA isn\u0027t or can\u0027t be unlocked during\nprobing but it somehow ends up unlocked afterwards.  In the following\nthread, the problem can be reliably reproduced after resuming from\nSTR.  The BIOS turns on HPA during boot but forgets to do it during\nresume.\n\n  http://thread.gmane.org/gmane.linux.kernel/858310\n\nThis patch updates libata revalidation such that it considers native\nn_sectors.  If the device size has increased to match native\nn_sectors, it\u0027s assumed that HPA has been unlocked involuntarily and\nthe device is recognized as the same one.  This should be fairly safe\nwhile nicely working around the problem.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Christof Warlich \u003cchristof@warlich.name\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d0cb43b35d64877b2944bd37719708be5d7bbf99",
      "tree": "7b282b1070613c552143d143f74e407c2ccb4b6e",
      "parents": [
        "fe2c4d018fc6127610fef677e020b3bb41cfaaaf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 09 09:27:50 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jul 14 22:41:46 2009 -0400"
      },
      "message": "libata: implement and use HORKAGE_NOSETXFER, take#2\n\nPIONEER DVD-RW DVRTD08 times out SETXFER if no media is present.  The\ndevice is SATA and simply skipping SETXFER works around the problem.\nImplement ATA_HORKAGE_NOSETXFER and apply it to the device.\n\nReported by Moritz Rigler in the following thread.\n\n  http://thread.gmane.org/gmane.linux.ide/36790\n\nand by Lars in bko#9540.\n\nUpdated to whine and ignore NOSETXFER if PATA component is detected as\nsuggested by Alan Cox.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Moritz Rigler \u003clinux-ide@momail.e4ward.com\u003e\nReported-by: Lars \u003clars21ce@gmx.de\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e3cf95dd6d352954b663d2934110d6e30af2406d",
      "tree": "f3245e91c30e0c1e12a169af637373a8b5ff670a",
      "parents": [
        "62afe5d744047df8ff15a369f4c1ebad71c937d4"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Thu Apr 09 17:31:17 2009 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 16 15:28:23 2009 -0400"
      },
      "message": "ata: Report 16/32bit PIO as best we can\n\nThe legacy old IDE ioctl API for this is a bit primitive so we try\nand map stuff sensibly onto it.\n\n- Set PIO over DMA devices to report 32bit\n- Add ability to change the PIO32 settings if the controller permits it\n- Add that functionality into the sff drivers\n- Add that functionality into the VLB legacy driver\n- Turn on the 32bit PIO on the ninja32 and add support there\n\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "877d03105d04b2c13e241130277fa69c8d2564f0",
      "tree": "79234721145f9dab3e0970027ed0b9b9f8929725",
      "parents": [
        "caa790ba6cb88dccfab356960d93e2f4e0bd8704"
      ],
      "author": {
        "name": "Nick Andrew",
        "email": "nick@nick-andrew.net",
        "time": "Mon Jan 26 11:06:57 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 30 15:21:59 2009 +0200"
      },
      "message": "trivial: Fix misspelling of firmware\n\nFix misspelling of firmware.\n\nSigned-off-by: Nick Andrew \u003cnick@nick-andrew.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "c96f1732e25362d10ee7bcac1df8412a2e6b7d23",
      "tree": "66e24eddb174d6751579ec5952f72cbbac0fb038",
      "parents": [
        "3d47aa8e7e7b2aa09256590388aa8dddc79280f9"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Tue Mar 24 10:23:46 2009 +0000"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Mar 24 22:52:39 2009 -0400"
      },
      "message": "[libata] Improve timeout handling\n\nOn a timeout call a device specific handler early in the recovery so that\nwe can complete and process successful commands which timed out due to IRQ\nloss or the like rather more elegantly.\n\n[Revised to exclude the timeout handling on a few devices that inherit from\n SFF but are not SFF enough to use the default timeout handler]\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3d47aa8e7e7b2aa09256590388aa8dddc79280f9",
      "tree": "82f4c85842e5e02489eb0533609dabb865e55198",
      "parents": [
        "c0f2ee34a5a0b79fd98d965ad8ae765d4639bfa5"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Tue Mar 24 10:23:19 2009 +0000"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Mar 24 22:48:26 2009 -0400"
      },
      "message": "[libata] Drain data on errors\n\nIf the device is signalling that there is data to drain after an error we\nshould read the bytes out and throw them away. Without this some devices\nand controllers get wedged and don\u0027t recover.\n\nBased on earlier work by Mark Lord\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1a660164c291f41b2aa853a7269b310933574ef9",
      "tree": "ba113e3cb6579c45d4e11aede7d8714e9dde2b05",
      "parents": [
        "d16ab3f633b75aac1cf42b00355cd9aa65033dcc"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "mlord@pobox.com",
        "time": "Wed Feb 25 15:18:32 2009 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Mar 24 22:02:41 2009 -0400"
      },
      "message": "[libata] Export ata_pio_queue_task() so that it can be used from sata_mv.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "84bda12af31f930e4200c5244aa111de2485d7b0",
      "tree": "08d214bf7a1ce56e8c994e7970513bfb4b215e3d",
      "parents": [
        "5825627c9463581fd9e70f8285685889ae5bb9bb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 02 18:53:26 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Mar 05 07:25:02 2009 -0500"
      },
      "message": "libata: align ap-\u003esector_buf\n\nap-\u003esector_buf is used as DMA target and should at least be aligned on\ncacheline.  This caused problems on some embedded machines.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "5825627c9463581fd9e70f8285685889ae5bb9bb",
      "tree": "321a20a0e25aee8f32254b13730f423f6b434486",
      "parents": [
        "e7d3ef13d52a126438f687a1a32da65ff926ed57"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Feb 27 17:35:43 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Mar 05 07:24:57 2009 -0500"
      },
      "message": "libata: fix dma_unmap_sg misuse\n\nlibata passes the returned value of dma_map_sg() to\ndma_unmap_sg(),which is the misuse of dma_unmap_sg().\n\nDMA-mapping.txt says:\n\nTo unmap a scatterlist, just call:\n\n\tpci_unmap_sg(pdev, sglist, nents, direction);\n\nAgain, make sure DMA activity has already finished.\n\nPLEASE NOTE:  The \u0027nents\u0027 argument to the pci_unmap_sg call must be\n              the _same_ one you passed into the pci_map_sg call,\n\t      it should _NOT_ be the \u0027count\u0027 value _returned_ from the\n              pci_map_sg call.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e7d3ef13d52a126438f687a1a32da65ff926ed57",
      "tree": "b4eb90e422f33fe6bb8756fcaadbd19863eae649",
      "parents": [
        "559595a985e106d2fa9f0c79b7f5805453fed593"
      ],
      "author": {
        "name": "Stuart Hayes",
        "email": "stuart_hayes@dell.com",
        "time": "Wed Mar 04 11:59:46 2009 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Mar 05 07:24:42 2009 -0500"
      },
      "message": "libata: change drive ready wait after hard reset to 5s\n\nThis fixes problems during resume with drives that take longer than 1s to\nbe ready.  The ATA-6 spec appears to allow 5 seconds for a drive to be\nready.\n\nOn one affected system, this patch changes \"PM: resume devices took...\"\nmessage from 17 seconds to 4 seconds, and gets rid of a lot of ugly\ntimeout/error messages.\n\nWithout this patch, the libata code moves on after 1s, tries to send a\nsoft reset (which the drive doesn\u0027t see because it isn\u0027t ready) which also\ntimes out, then an IDENTIFY command is sent to the drive which times out,\nand finally the error handler will try to send another hard reset which\nwill finally get things working.\n\nSigned-off-by: Stuart Hayes \u003cstuart_hayes@dell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "9062712fa9ed13b531dfc2228086650b8bd6a255",
      "tree": "d1bde6caeb53936859943bb1866ac65794cae5cb",
      "parents": [
        "cf9a590a9eae3b99ca77d8db17afd2d7dbdd0986"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:36 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:04:31 2009 -0500"
      },
      "message": "libata: implement HORKAGE_1_5_GBPS and apply it to WD My Book\n\n3Gbps is often much more prone to transmission failures.  It\u0027s usually\nokay to let EH handle speed down after transmission failures but some\nWD My Book drives completely shutdown after certain transmission\nfailures and after it only power cycling can revive them.  Combined\nwith the fact that external drives often end up with cable assembly\nwhich is longer than usual and more likely to have intervening gender,\nthis makes these drives very likely to shutdown under certain\nconfigurations virtually rendering them unusable.\n\nThis patch implements HOARKGE_1_5_GBPS and applies it to WD My Book\nsuch that 1.5Gbps is forced once the device is identified.\n\nPlease take a look at the following bz for related reports.\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d9913\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "99cf610aa4840d822cdc67d194b23b55010ca9bd",
      "tree": "68bc3d6c1f13849731bb7b4b11414b4b0e5fbffb",
      "parents": [
        "9913ff8abf1c70a8d52560dc931e1901d025ad27"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:32 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:17 2009 -0500"
      },
      "message": "libata: clear dev-\u003eering in smarter way\n\ndev-\u003eering used to be cleared together with the rest of ata_device in\nata_dev_init() which is called whenever a probing event occurs.\ndev-\u003eering is about to be used to track probing failures so it needs\nto remain persistent over multiple porbing events.  This patch\nachieves this by doing the following.\n\n* Instead of CLEAR_OFFSET, define CLEAR_BEGIN and CLEAR_END and only\n  clear between BEGIN and END.  ering is moved after END.  The split\n  of persistent area is to allow hotter items remain at the head.\n\n* ering is explicitly cleared on ata_dev_disable() and when device\n  attach succeeds.  So, ering is persistent throug a device\u0027s life\n  time (unless explicitly cleared of course) and also through periods\n  inbetween disablement of an attached device and successful detection\n  of the next one.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "2a6e58d2731dcc05dafa7f976d935e0f0627fcd7",
      "tree": "836d0ec85dccde709aeaaedb3b7686ac51805ad1",
      "parents": [
        "d7b1956fed33d30c4815e848fd7a143722916868"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Jan 19 20:56:43 2009 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jan 27 02:15:49 2009 -0500"
      },
      "message": "SATA: Blacklisting of systems that spin off disks during ACPI power off\n\nIntroduce new libata flags ATA_FLAG_NO_POWEROFF_SPINDOWN and\nATA_FLAG_NO_HIBERNATE_SPINDOWN that, if set, will prevent disks from\nbeing spun off during system power off and hibernation, respectively\n(to handle the hibernation case we need the new system state\nSYSTEM_HIBERNATE_ENTER that can be checked against by libata, in\nanalogy with SYSTEM_POWER_OFF).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3ada9c126499dd4700dcdbd5b9fe8110ad17f578",
      "tree": "aec4fc6d574589eec606cf234eb7f5df529b05f3",
      "parents": [
        "6813952021a7820a505002de260bda36978671f7"
      ],
      "author": {
        "name": "David Daney",
        "email": "ddaney@caviumnetworks.com",
        "time": "Thu Jan 15 17:45:31 2009 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Jan 16 10:23:37 2009 -0500"
      },
      "message": "libata: Add another column to the ata_timing table.\n\nThe forthcoming OCTEON SOC Compact Flash driver needs an additional\ntiming value that was not available in the ata_timing table.  I add a\nnew column for dmack_hold time.  The values were obtained from the\nCompact Flash specification Rev 4.1.\n\nSigned-off-by: David Daney \u003cddaney@caviumnetworks.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "94be9a58d7e683ac3c1df1858a17f09ebade8da0",
      "tree": "2f346bb4d179caf1cf0f61012f35c8277504c55a",
      "parents": [
        "5393f780277165f282a37ed82dd878159ec9dad5"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Jan 16 10:17:09 2009 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Jan 16 10:17:09 2009 -0500"
      },
      "message": "[libata] get-identity ioctl: Fix use of invalid memory pointer\nfor SAS drivers.\n\nCaught by Ke Wei (and team?) at Marvell.\n\nAlso, move the ata_scsi_ioctl export to libata-scsi.c, as that seems to be the\ngeneral trend.\n\nAcked-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\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": "871af1210f13966ab911ed2166e4ab2ce775b99d",
      "tree": "f17f0016f6e966d54a379a3de6e6bbde3b9359fe",
      "parents": [
        "e427fe042cf90c0652eed9a85e57a8fd8af89890"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Mon Jan 05 14:16:39 2009 +0000"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Jan 08 16:34:27 2009 -0500"
      },
      "message": "libata: Add 32bit PIO support\n\nThis matters for some controllers and in one or two cases almost doubles\nPIO performance. Add a bmdma32 operations set we can inherit and activate\nit for some controllers\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ece180d1cfe5fa751eaa85bf796cf28b2150af15",
      "tree": "aca9d485036858ed3f1859e679473cebd3476845",
      "parents": [
        "ad74e4c18d0962397314460d0da312e72c8bd02d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 20:04:37 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Dec 28 22:43:21 2008 -0500"
      },
      "message": "libata: perform port detach in EH\n\nata_port_detach() first made sure EH saw ATA_PFLAG_UNLOADING and then\nassumed EH context belongs to it and performed detach operation\nitself.  However, UNLOADING doesn\u0027t disable all of EH and this could\nlead to problems including triggering WARN_ON()\u0027s in EH path.\n\nThis patch makes port detach behave more like other EH actions such\nthat ata_port_detach() requests EH to detach and waits for completion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1eca4365be25c540650693e941bc06a66cf38f94",
      "tree": "e3ed82850da00308180bf166118f9f9e69d92898",
      "parents": [
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 20:03:17 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Dec 28 22:43:20 2008 -0500"
      },
      "message": "libata: beef up iterators\n\nThere currently are the following looping constructs.\n\n* __ata_port_for_each_link() for all available links\n* ata_port_for_each_link() for edge links\n* ata_link_for_each_dev() for all devices\n* ata_link_for_each_dev_reverse() for all devices in reverse order\n\nNow there\u0027s a need for looping construct which is similar to\n__ata_port_for_each_link() but iterates over PMP links before the host\nlink.  Instead of adding another one with long name, do the following\ncleanup.\n\n* Implement and export ata_link_next() and ata_dev_next() which take\n  @mode parameter and can be used to build custom loop.\n* Implement ata_for_each_link() and ata_for_each_dev() which take\n  looping mode explicitly.\n\nThe following iteration modes are implemented.\n\n* ATA_LITER_EDGE\t\t: loop over edge links\n* ATA_LITER_HOST_FIRST\t\t: loop over all links, host link first\n* ATA_LITER_PMP_FIRST\t\t: loop over all links, PMP links first\n\n* ATA_DITER_ENABLED\t\t: loop over enabled devices\n* ATA_DITER_ENABLED_REVERSE\t: loop over enabled devices in reverse order\n* ATA_DITER_ALL\t\t\t: loop over all devices\n* ATA_DITER_ALL_REVERSE\t\t: loop over all devices in reverse order\n\nThis change removes exlicit device enabledness checks from many loops\nand makes it clear which ones are iterated over in which direction.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ac70a964b0e22a95af3628c344815857a01461b7",
      "tree": "c5711139bd95053b9b5c8897e3f7cd50b8331141",
      "parents": [
        "03f60840fa462e92220b093f778b2426ceab23af"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Nov 27 13:36:48 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Dec 01 13:49:27 2008 -0500"
      },
      "message": "libata: blacklist Seagate drives which time out FLUSH_CACHE when used with NCQ\n\nSome recent Seagate harddrives have firmware bug which causes FLUSH\nCACHE to timeout under certain circumstances if NCQ is being used.\nThis can be worked around by disabling NCQ and fixed by updating the\nfirmware.  Implement ATA_HORKAGE_FIRMWARE_UPDATE and blacklist these\ndevices.\n\nThe wiki page has been updated to contain information on this issue.\n\n  http://ata.wiki.kernel.org/index.php/Known_issues\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "8a8bc22332ee6ea49137508467a76aa7f4367719",
      "tree": "f41c62dc99c4249d592935b4659569081d4a190a",
      "parents": [
        "f7160c7573615ec82c691e294cf80d920b5d588d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 10 14:48:21 2008 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 10 08:04:47 2008 -0800"
      },
      "message": "libata: revert convert-to-block-tagging patches\n\nThis patch reverts the following three commits which convert libata to\nuse block layer tagging.\n\n 43a49cbdf31e812c0d8f553d433b09b421f5d52c\n e013e13bf605b9e6b702adffbe2853cfc60e7806\n 2fca5ccf97d2c28bcfce44f5b07d85e74e3cd18e\n\nAlthough using block layer tagging is the right direction, due to the\ntight coupling among tag number, data structure allocation and\nhardware command slot allocation, libata doesn\u0027t work correctly with\nthe current conversion.\n\nThe biggest problem is guaranteeing that tag 0 is always used for\nnon-NCQ commands.  Due to the way blk-tag is implemented and how SCSI\nstarts and finishes requests, such guarantee can\u0027t be made.  I\u0027m not\nsure whether this would actually break any low level driver but it\ndoesn\u0027t look like a good idea to break such assumption given the\nfrailty of ATA controllers.\n\nSo, for the time being, keep using the old dumb in-libata qc\nallocation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axobe \u003cjens.axboe@oracle.com\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a87e42e955ff27e07a77f65f8f077dc7c4171e1",
      "tree": "e5d50b2b91c17c6719b75bbd88ea5cbed4130304",
      "parents": [
        "a464189de350b050aa8f334bd4cc53ed406e56dd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 19:01:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Nov 04 01:08:27 2008 -0500"
      },
      "message": "libata: implement ATA_HORKAGE_ATAPI_MOD16_DMA and apply it\n\nlibata always uses PIO for ATAPI commands when the number of bytes to\ntransfer isn\u0027t multiple of 16 but quantum DAT72 chokes on odd bytes\nPIO transfers.  Implement a horkage to skip the mod16 check and apply\nit to the quantum device.\n\nThis is reported by John Clark in the following thread.\n\n  http://thread.gmane.org/gmane.linux.ide/34748\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: John Clark \u003cclarkjc@runbox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "9ce8e3073d9cfd6f859c22a25441db41b85cbf6e",
      "tree": "81ddeb3d7203677b541b132b4ed8a909137d7ccf",
      "parents": [
        "b9d5b89b487517cbd4cb4702da829e07ef9e4432"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Aug 27 15:23:18 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Oct 31 01:45:06 2008 -0400"
      },
      "message": "libata: add whitelist for devices with known good pata-sata bridges\n\nlibata currently imposes a UDMA5 max transfer rate and 200 sector max\ntransfer size for SATA devices that sit behind a pata-sata bridge. Lots\nof devices have known good bridges that don\u0027t need this limit applied.\nThe MTRON SSD disks are such devices. Transfer rates are increased by\n20-30% with the restriction removed.\n\nSo add a \"blacklist\" entry for the MTRON devices, with a flag indicating\nthat the bridge is known good.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "2fca5ccf97d2c28bcfce44f5b07d85e74e3cd18e",
      "tree": "483dedd08d6ccbb56959eeb127e82ab8f84edf2e",
      "parents": [
        "332edc2f7fa58b818dfed1cede60272eecc27c0a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Oct 22 09:34:49 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 16:05:26 2008 -0700"
      },
      "message": "libata: switch to using block layer tagging support\n\nlibata currently has a pretty dumb ATA_MAX_QUEUE loop for finding\na free tag to use. Instead of fixing that up, convert libata to\nusing block layer tagging - gets rid of code in libata, and is also\nmuch faster.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "848e4c68c4695beae563f9a3d59fce596b466a74",
      "tree": "90c5ea1ff1b016f72888641f96f014336e969434",
      "parents": [
        "570106df6bdb4907ad7f70793079c762f34d561a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 21 14:26:39 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Oct 22 20:40:19 2008 -0400"
      },
      "message": "libata: transfer EHI control flags to slave ehc.i\n\nATA_EHI_NO_AUTOPSY and ATA_EHI_QUIET are used to control the behavior\nof EH.  As only the master link is visible outside EH, these flags are\nset only for the master link although they should also apply to the\nslave link, which causes spurious EH messages during probe and\nsuspend/resume.\n\nThis patch transfers those two flags to slave ehc.i before performing\nslave autopsy and reporting.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6866e7bc83f13a1bc6de59099930e9db1ab0042f",
      "tree": "aa028533eb6a019d8c1bc7f57ddf945454453f6d",
      "parents": [
        "67e3e221d61c0e70b2f244fd921e5e601d6c7339"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Mon Sep 22 14:47:13 2008 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:28:36 2008 -0400"
      },
      "message": "libata: reorder ata_device to remove 8 bytes of padding on 64 bits\n\nreduce size by 8 bytes from 1160 to 1152 allowing it to fit in 1 fewer\ncachelines.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "45fabbb77bd95adff7a80bde1c7a0ace1075fde6",
      "tree": "0e98efc190b25a11f84b8ae7d1ee0a17c41d3da8",
      "parents": [
        "ea6ce53cd5d005455ec0a3cc1d45d3af0cb90919"
      ],
      "author": {
        "name": "Elias Oltmanns",
        "email": "eo@nebensachen.de",
        "time": "Sun Sep 21 11:54:08 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:27:54 2008 -0400"
      },
      "message": "libata: Implement disk shock protection support\n\nOn user request (through sysfs), the IDLE IMMEDIATE command with UNLOAD\nFEATURE as specified in ATA-7 is issued to the device and processing of\nthe request queue is stopped thereafter until the specified timeout\nexpires or user space asks to resume normal operation. This is supposed\nto prevent the heads of a hard drive from accidentally crashing onto the\nplatter when a heavy shock is anticipated (like a falling laptop\nexpected to hit the floor). In fact, the whole port stops processing\ncommands until the timeout has expired in order to avoid any resets due\nto failed commands on another device.\n\nSigned-off-by: Elias Oltmanns \u003ceo@nebensachen.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "b1c72916abbdd0a55015c87358536ca0ebaf6735",
      "tree": "1064fe92f2c3600dd6587c880d907020896b3348",
      "parents": [
        "b5b3fa386b8f96c7fa92e507e5deddc2637924b4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 17:02:43 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:25:28 2008 -0400"
      },
      "message": "libata: implement slave_link\n\nExplanation taken from the comment of ata_slave_link_init().\n\n In libata, a port contains links and a link contains devices.  There\n is single host link but if a PMP is attached to it, there can be\n multiple fan-out links.  On SATA, there\u0027s usually a single device\n connected to a link but PATA and SATA controllers emulating TF based\n interface can have two - master and slave.\n\n However, there are a few controllers which don\u0027t fit into this\n abstraction too well - SATA controllers which emulate TF interface\n with both master and slave devices but also have separate SCR\n register sets for each device.  These controllers need separate links\n for physical link handling (e.g. onlineness, link speed) but should\n be treated like a traditional M/S controller for everything else\n (e.g. command issue, softreset).\n\n slave_link is libata\u0027s way of handling this class of controllers\n without impacting core layer too much.  For anything other than\n physical link handling, the default host link is used for both master\n and slave.  For physical link handling, separate @ap-\u003eslave_link is\n used.  All dirty details are implemented inside libata core layer.\n From LLD\u0027s POV, the only difference is that prereset, hardreset and\n postreset are called once more for the slave link, so the reset\n sequence looks like the following.\n\n prereset(M) -\u003e prereset(S) -\u003e hardreset(M) -\u003e hardreset(S) -\u003e\n softreset(M) -\u003e postreset(M) -\u003e postreset(S)\n\n Note that softreset is called only for the master.  Softreset resets\n both M/S by definition, so SRST on master should handle both (the\n standard method will work just fine).\n\nAs slave_link excludes PMP support and only code paths which deal with\nthe attributes of physical link are affected, all the changes are\nlocalized to libata.h, libata-core.c and libata-eh.c.\n\n * ata_is_host_link() updated so that slave_link is considered as host\n   link too.\n\n * iterator extended to iterate over the slave_link when using the\n   underbarred version.\n\n * force param handling updated such that devno 16 is mapped to the\n   slave link/device.\n\n * ata_link_on/offline() updated to return the combined result from\n   master and slave link.  ata_phys_link_on/offline() are the direct\n   versions.\n\n * EH autopsy and report are performed separately for master slave\n   links.  Reset is udpated to implement the above described reset\n   sequence.\n\nExcept for reset update, most changes are minor, many of them just\nmodifying dev-\u003elink to ata_dev_phys_link(dev) or using phys online\ntest instead.\n\nAfter this update, LLDs can take full advantage of per-dev SCR\nregisters by simply turning on slave link.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "b5b3fa386b8f96c7fa92e507e5deddc2637924b4",
      "tree": "2d203860958d43b430974bcf365f4d8d3aa36b24",
      "parents": [
        "aadffb682cc5572f48cc24883681db65530bd284"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 17:02:42 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:22:32 2008 -0400"
      },
      "message": "libata: misc updates to prepare for slave link\n\n* Add ATA_EH_ALL_ACTIONS.\n\n* Make sata_link_{on|off}_line() return bool instead of int.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "aadffb682cc5572f48cc24883681db65530bd284",
      "tree": "24ab92ec9b0cdd9e6f4c0bf7a8a4c04635be03db",
      "parents": [
        "82ef04fb4c82542b3eda81cca461f0594ce9cd0b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 17:02:41 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:22:30 2008 -0400"
      },
      "message": "libata: reimplement link iterator\n\nImplement __ata_port_next_link() and reimplement\n__ata_port_for_each_link() and ata_port_for_each_link() using it.\nThis removes relatively large inlined code and makes iteration easier\nto extend.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\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": "b15b3ebae102f89c25ccbcae0b2099af312f2e82",
      "tree": "73f64d0e578d1c6bc6a3dc43f940a31f24daad8f",
      "parents": [
        "20e2de4a505aa02131a95665e8920eb053fce686"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Fri Aug 01 09:18:34 2008 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:27:49 2008 -0400"
      },
      "message": "libata: Fix a large collection of DMA mode mismatches\n\nDave Müller sent a diff for the pata_oldpiix that highlighted a problem\nwhere a lot of the ATA drivers assume dma_mode \u003d\u003d 0 means \"no DMA\" while\nthe core code uses 0xFF.\n\nThis turns out to have other consequences such as code doing \u003e\u003d XFER_UDMA_0\nalso catching 0xFF as UDMAlots. Fortunately it doesn\u0027t generally affect\nset_dma_mode, although some drivers call back into their own set mode code\nfrom other points.\n\nHaving been through the drivers I\u0027ve added helpers for using_udma/using_mwdma\ndma_enabled so that people don\u0027t open code ranges that may change (eg if UDMA8\nappears somewhere)\n\nThanks to David for the initial bits\n[and added fix for pata_oldpiix from and signed-off-by Dave Mueller\n \u003cdave.mueller@gmx.ch\u003e  -jg]\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d127ea7b8643a93d14d1f3c542974407f14d3663",
      "tree": "2edbaf46167c86faad6b7645f3d3d2ef52bba84a",
      "parents": [
        "da0e21d3fa2340114fe24821718a1b57123e4664"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 16:09:34 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:46 2008 -0400"
      },
      "message": "libata: restore SControl on detach\n\nSave SControl during probing and restore it on detach.  This prevents\nadjustments made by libata drivers to seep into the next driver which\ngets attached (be it a libata one or not).\n\nIt\u0027s not clear whether SControl also needs to be restored on suspend.\nThe next system to have control (ACPI or kexec\u0027d kernel) would\nprobably like to see the original SControl value but there\u0027s no\nguarantee that a link is gonna keep working after SControl is adjusted\nwithout a reset and adding a reset and modified recovery cycle soley\nfor this is an overkill.  For now, do it only for detach.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "05944bdf6fadb5394710269df6770dde447b23ca",
      "tree": "7dd0435f44518b01e5d3a229167e7122425e2255",
      "parents": [
        "6a55617ed5d1aa62b850de2cf66f5ede2eef4825"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Aug 13 20:19:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:07:43 2008 -0400"
      },
      "message": "libata: implement no[hs]rst force params\n\nImplement force params nohrst, nosrst and norst.  This is to work\naround reset related problems and ease debugging.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "963e4975c6f93c148ca809d986d412201df9af89",
      "tree": "41cb6ec55e48a2186dbe4c13531fd05439efbade",
      "parents": [
        "1f938d060a7bc01b5f82d46db3e38cd501b445a6"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Thu Jul 24 17:16:06 2008 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Jul 31 02:04:50 2008 -0400"
      },
      "message": "pata_it821x: Driver updates and reworking\n\n- Add support for the RDC 1010 variant\n- Rework the core library to have a read_id method. This allows the hacky\n  bits of it821x to go and prepares us for pata_hd\n- Switch from WARN to BUG in ata_id_string as it will reboot if you get\n  it wrong so WARN won\u0027t be seen\n- Allow the issue of command 0xFC on the 821x. This is needed to query\n  rebuild status.\n- Tidy up printk formatting\n- Do more ident rewriting on RAID volumes to handle firmware provided\n  ident data which is rather wonky\n- Report the firmware revision and device layout in RAID mode\n- Don\u0027t try and disable raid on the 8211 or RDC - they don\u0027t have the\n  relevant bits\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1f938d060a7bc01b5f82d46db3e38cd501b445a6",
      "tree": "f88f748671ac616742b41f202b4f56da1e577423",
      "parents": [
        "487eff68e42287fd45cf178063f1ce1bad23c612"
      ],
      "author": {
        "name": "Alexander Beregalov",
        "email": "a.beregalov@gmail.com",
        "time": "Mon Jul 21 00:06:19 2008 +0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Jul 31 01:48:16 2008 -0400"
      },
      "message": "libata.h: replace __FUNCTION__ with __func__\n\nSigned-off-by: Alexander Beregalov \u003ca.beregalov@gmail.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": "87fbc5a060faf2394bee88a93519f9b9d434727c",
      "tree": "6f90cacb1471e64051473c4e1e664b2dea8603e0",
      "parents": [
        "d8af0eb6046c56e7238171ca420622541db24926"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:54 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: improve EH internal command timeout handling\n\nATA_TMOUT_INTERNAL which was 30secs were used for all internal\ncommands which is way too long when something goes wrong.  This patch\nimplements command type based stepped timeouts.  Different command\ntypes can use different timeouts and each command type can use\ndifferent timeout values after timeouts.\n\nie. the initial timeout is set to a value which should cover most of\nthe cases but not too long so that run away cases don\u0027t delay things\ntoo much.  After the first try times out, the second try can use\nlonger timeout and if that one times out too, it can go for full 30sec\ntimeout.\n\nIDENTIFYs use 5s - 10s - 30s timeout and all other commands use 5s -\n10s timeouts.\n\nThis patch significantly cuts down the needed time to handle failure\ncases while still allowing libata to work with nut job devices through\nretries.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "0a2c0f56159999e20015241d3b8fa89b1ab14309",
      "tree": "2c516452d3b3f85e9a4092b6092160e123d5f5d4",
      "parents": [
        "341c2c958ec7bdd9f54733a8b0b432fe76842a82"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:52 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: improve EH retry delay handling\n\nEH retries were delayed by 5 seconds to ensure that resets don\u0027t occur\nback-to-back.  However, this 5 second delay is superflous or excessive\nin many cases.  For example, after IDENTIFY times out, there\u0027s no\nreason to wait five more seconds before retrying.\n\nThis patch adds ehc-\u003elast_reset timestamp and record the timestamp for\nthe last reset trial or success and uses it to space resets by\nATA_EH_RESET_COOL_DOWN which is 5 secs and removes unconditional 5 sec\nsleeps.\n\nAs this change makes inter-try waits often shorter and they\u0027re\nredundant in nature, this patch also removes the \"retrying...\"\nmessages.\n\nWhile at it, convert explicit rounding up division to DIV_ROUND_UP().\n\nThis change speeds up EH in many cases w/o sacrificing robustness.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "341c2c958ec7bdd9f54733a8b0b432fe76842a82",
      "tree": "1af1983fe82ad032de6142229fe6c70f04466918",
      "parents": [
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:51 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: consistently use msecs for time durations\n\nlibata has been using mix of jiffies and msecs for time druations.\nThis is getting confusing.  As writing sub HZ values in jiffies is\nPITA and msecs_to_jiffies() can\u0027t be used as initializer, unify unit\nfor all time durations to msecs.  So, durations are in msecs and\ndeadlines are in jiffies.  ata_deadline() is added to compute deadline\nfrom a start time and duration in msecs.\n\nWhile at it, drop now superflous _msec suffix from arguments and\nrename @timeout to @deadline if it represents a fixed point in time\nrather than duration.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a57c1bade5a0ee5cd8b74502db9cbebb7f5780b2",
      "tree": "7919f7e4d85d512442698819db2ef98ed9121574",
      "parents": [
        "4f0ebe3cc57f18ba26317b56b80b108c2848b1de"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Thu May 29 22:10:58 2008 +0100"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Jun 04 06:40:41 2008 -0400"
      },
      "message": "libata-sff: Fix oops reported in kerneloops.org for pnp devices with no ctl\n\n- Make ata_sff_altstatus private so nobody uses it by mistake\n- Drop the 400nS delay from it\n\nAdd\n\nata_sff_irq_status\t-\tencapsulates the IRQ check logic\n\nThis function keeps the existing behaviour for altstatus using devices. I\nactually suspect the logic was wrong before the changes but -rc isn\u0027t the\ntime to play with that\n\nata_sff_sync\t\t-\tensure writes hit the device\n\nReally we want an io* operation for \u0027is posted\u0027 eg ioisposted(ioaddr) so\nthat we can fix the nasty delay this causes on most systems.\n\n- ata_sff_pause\t\t-\t400nS delay\n\nEnsure the command hit the device and delay 400nS\n\n- ata_sff_dma_pause\n\nEnsure the I/O hit the device and enforce an HDMA1:0 transition delay.\nRequires altstatus register exists, BUG if not so we don\u0027t risk\ncorruption in MWDMA modes. (UDMA the checksum will save your backside in\ntheory)\n\nThe only other complication then is devices with their own handlers.\nrb532 can use dma_pause but scc needs to access its own altstatus\nregister for internal errata workarounds so directly call the drivers own\naltstatus function.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4f0ebe3cc57f18ba26317b56b80b108c2848b1de",
      "tree": "5e4e028b968c86dad23f17f636637eb73034819d",
      "parents": [
        "ba069e376cc0801cd28352ca5986ce20413acb21"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:50 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Jun 04 06:29:14 2008 -0400"
      },
      "message": "libata: kill unused constants\n\nKill a few unused constants.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "50af2fa1e18d0ab411d06bf727ecadb7e01721e9",
      "tree": "16f2b3b74c51a02ee182f29e9de5752088aaadbe",
      "parents": [
        "906c1ff44a81aaad96a9feb40ea13d73bbf3662a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:48 2008 -0400"
      },
      "message": "libata: ignore SIMG4726 config pseudo device\n\nI was hoping ATA_HORKAGE_NODMA | ATA_HORKAGE_SKIP_PM could keep it\nhappy but no even this doesn\u0027t work under certain configurations and\nit\u0027s not like we can do anything useful with the cofig device anyway.\nReplace ATA_HORKAGE_SKIP_PM with ATA_HORKAGE_DISABLE and use it for\nthe config device.  This makes the device completely ignored by\nlibata.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "bf1bff6fa9fdd4e92e57d80a5434fd5201c051fc",
      "tree": "0ebd09fbf4e7f9f5e81e479685930c180eaece76",
      "parents": [
        "e0614db2a398d4d0dc5fb47fe2c2783141262a3e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:10 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: increase PMP register access timeout to 3s\n\nThis timeout was set low because previously PMP register access was\ndone via polling and register access timeouts could stack up.  This is\nno longer the case.  One timeout will make all following accesses fail\nimmediately.\n\nIn rare cases both marvell and SIMG PMPs need almost a second.  Bump\nit to 3s.\n\nWhile at it, rename it to SATA_PMP_RW_TIMEOUT.  It\u0027s not specific to\nSCR access.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "07633b5d0723ce2ec31262e1096dcf61311bf078",
      "tree": "d7df0c597f64b23d684e9cc492c8ee803acf21a2",
      "parents": [
        "06aaca3f6301d04463b1ee0eb75c0352147159f2"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed May 14 16:17:00 2008 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:30:32 2008 -0400"
      },
      "message": "ata: remove FIT() macro\n\nUse the kernel-provided clamp_val() macro.\n\nFIT was always applied to a member of struct ata_timing (unsigned short)\nand two constants.  clamp_val will not cast to short anymore.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "005b1f7495e812b99b73de5adbc73afd7a1cbcaf",
      "tree": "d0ee13a35bbda1f53577db2a79eb288c71f3e6c2",
      "parents": [
        "28a4acb48586dc21d2d14a75a7aab7be78b7c83b"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri May 09 15:00:55 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri May 09 15:00:55 2008 -0400"
      },
      "message": "[libata] revert new check-ready Status register logic\n\nThis behavior differs across multiple controllers, so we cannot use\ncommon logic for all controllers.\n\nRevert back to the basic common behavior, and specific drivers will\nbe updated from here to take into account the unusual Status return\nvalues.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "10acf3b0d3b46c6ef5d6f0722f72ad9b743ea848",
      "tree": "08aec05645770a3c0b90fb083c2e67e6aab4d572",
      "parents": [
        "a90103298fd5ccd9a9df6d47bde9a3f371707037"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "liml@rtr.ca",
        "time": "Fri May 02 02:14:53 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue May 06 11:37:58 2008 -0400"
      },
      "message": "libata: export ata_eh_analyze_ncq_error\n\nExport ata_eh_analyze_ncq_error() for subsequent use by sata_mv,\nas suggested by Tejun.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "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": "f7e989301b6c232dec5489e94ee7741c85cb11ba",
      "tree": "c92a575b14714ae2f57edb6b5f5e0df5b409b453",
      "parents": [
        "22b5e7a74280deae560c20ee1a9b502b35181327"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 29 17:47:34 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Apr 29 17:47:34 2008 -0400"
      },
      "message": "[libata] linux/libata.h: reorganize ata_device struct members a bit\n\nPut the big stuff at the end, to prepare for upcoming changes (and\nalso hopefully achieve nicer packing of remaining members).\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6bdb4fc9f9e5307012f6f2afb8642b52dad9c186",
      "tree": "32de6cd571b74e74374c42c30c1fc241c42eb2e3",
      "parents": [
        "66a9099e02e3fca5198ab52b4bb7088f03dee42e"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Apr 21 11:51:11 2008 +0300"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Apr 25 00:46:09 2008 -0400"
      },
      "message": "make sata_print_link_status() static\n\nsata_print_link_status() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\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": "88fcd5627563722483427a55113c0a83f56e8080",
      "tree": "6a596e33d6497fbed58147e8fdb59b611d956c12",
      "parents": [
        "071f44b1d2c051641b62a3571223314737ccbe59"
      ],
      "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: make PMP support optional\n\nMake PMP support optional by adding CONFIG_SATA_PMP and leaving out\nlibata-pmp.c if it isn\u0027t set.  PMP helpers return constant values if\nPMP support is not enabled and PMP declarations alias non-PMP\ncounterparts.  This makes the compiler to leave out PMP related part\nout and LLDs to use non-PMP counterparts automatically.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.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": "48515f6c006c2a9d7b624ee8ad068018c2d3fe0e",
      "tree": "0ade033552ccb297ac7736a6b2d77dd249be4eb8",
      "parents": [
        "127102aea2ea9ec4e9ca233e2b1a75c8d3b058c4"
      ],
      "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:25 2008 -0400"
      },
      "message": "libata: separate PMP support code from core code\n\nMost of PMP support code is already in libata-pmp.c.  All that are in\nlibata-core.c are sata_pmp_port_ops and EXPORTs.  Move them to\nlibata-pmp.c.  Also, collect PMP related prototypes and declarations\nin header files and move them right above of SFF stuff.\n\nThis change is to make PMP support optional.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "127102aea2ea9ec4e9ca233e2b1a75c8d3b058c4",
      "tree": "92fb528eac658adbc7307a009bd8a7558db2658a",
      "parents": [
        "350756f6dab6d37ef9ed3f18dec520e88969ddac"
      ],
      "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: make SFF support optional\n\nNow that SFF support is completely separated out from the core layer,\nit can be made optional.  Add CONFIG_ATA_SFF and let SFF drivers\ndepend on it.  If CONFIG_ATA_SFF isn\u0027t set, all codes in libata-sff.c\nand data structures for SFF support are disabled.  This saves good\nnumber of bytes for small systems.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "c9f75b04ed5ed65a058d18a8a8dda50632a96de8",
      "tree": "e0100eae3b10006a8618ddb32bdf971e20db0dd8",
      "parents": [
        "520d06f92b32d7abe5127d7cc46a819db0f384e6"
      ],
      "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: kill ata_noop_dev_select()\n\nNow that SFF assumptions are separated out from non-SFF reset\nsequence, port_ops-\u003esff_dev_select() is no longer necessary for\nnon-SFF controllers.  Kill ata_noop_dev_select() and -\u003esff_dev_select\ninitialization from base and other non-SFF port_ops.\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": "22183bf569c8600ff414ac25f23134044e0ef453",
      "tree": "1dea79cdbe439637477e1c4214b600b6823cb866",
      "parents": [
        "305d2a1ab137d11d573319c315748a87060fe82d"
      ],
      "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: add qc_fill_rtf port operation\n\nOn command completion, ata_qc_complete() directly called ops-\u003etf_read\nto fill qc-\u003eresult_tf.  This patch adds ops-\u003eqc_fill_rtf to replace\nhardcoded ops-\u003etf_read usage.\n\nata_sff_qc_fill_rtf() which uses ops-\u003etf_read to fill result_tf is\nimplemented and set in ata_base_port_ops and other ops tables which\ndon\u0027t inherit from ata_base_port_ops, so this patch doesn\u0027t introduce\nany behavior change.\n\nops-\u003eqc_fill_rtf() is similar to ops-\u003esff_tf_read() but can only be\ncalled when a command finishes.  As some non-SFF controllers don\u0027t\nhave TF registers defined unless they\u0027re associated with in-flight\ncommands, this limited operation makes life easier for those drivers\nand help lifting SFF assumptions from libata core layer.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "5958e3025fd9d97429163e074d9cfa3848f51f28",
      "tree": "f20492dc35fc2651452c871fbc812bd4f8379b40",
      "parents": [
        "ac371987a81c61c2efbd6931245cdcaf43baad89"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: move PMP SCR access failure during reset to ata_eh_reset()\n\nIf PMP fan-out reset fails and SCR isn\u0027t accessible, PMP should be\nreset.  This used to be tested by sata_pmp_std_hardreset() and\ncommunicated to EH by -ERESTART.  However, this logic is generic and\ndoesn\u0027t really have much to do with specific hardreset implementation.\n\nThis patch moves SCR access failure detection logic to ata_eh_reset()\nwhere it belongs.  As this makes sata_pmp_std_hardreset() identical to\nsata_std_hardreset(), the function is killed and replaced with the\nstandard method.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "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": "57c9efdfb3cee5d4564fcb5f70555e2edb1bc52a",
      "tree": "c2289500f093736853a94d2d9577036658676498",
      "parents": [
        "9dadd45b24145d6aee2fabb28d7aef972301892b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: implement and use sata_std_hardreset()\n\nImplement sata_std_hardreset(), which simply wraps around\nsata_link_hardreset().  sata_std_hardreset() becomes new standard\nhardreset method for sata_port_ops and sata_sff_hardreset() moves from\nata_base_port_ops to ata_sff_port_ops, which is where it really\nbelongs.\n\nata_is_builtin_hardreset() is added so that both\nata_std_error_handler() and ata_sff_error_handler() skip both builtin\nhardresets if SCR isn\u0027t accessible.\n\npiix_sidpr_hardreset() in ata_piix.c is identical to\nsata_std_hardreset() in functionality and got replaced with the\nstandard function.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "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": "aa2731ad9ad80ac3fca48bd1c4cf0eceede4810e",
      "tree": "db6d3327017b9b84355aba49a5ccd5c322d3f248",
      "parents": [
        "705e76beb90b97421e1f61e857c4246799781bb5"
      ],
      "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: separate out ata_wait_ready() and implement ata_wait_after_reset()\n\nFactor out waiting logic (which is common to all ATA controllers) from\nata_sff_wait_ready() into ata_wait_ready().  ata_wait_ready() takes\n@check_ready function pointer and uses it to poll for readiness.  This\nallows non-SFF controllers to use ata_wait_ready() to wait for link\nreadiness.\n\nThis patch also implements ata_wait_after_reset() - generic version of\nata_sff_wait_after_reset() - using ata_wait_ready().\n\nata_sff_wait_ready() is reimplemented using ata_wait_ready() and\nata_sff_check_ready().  Functionality remains the same.\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": "0aa1113d544226bc2c4a20d6ac1d71170512a361",
      "tree": "503b33b0805424d312abddd3535c941bb85c03bc",
      "parents": [
        "288623a06c652239d2f57d271af12bb024cf7218"
      ],
      "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_prereset() from ata_sff_prereset()\n\nSeparate out generic ATA portion from ata_sff_prereset() into\nata_std_prereset() and implement ata_sff_prereset() using the std\nversion.  Waiting for device readiness is the only SFF specific part.\n\nata_base_port_ops now has ata_std_prereset() for its prereset and\nata_sff_port_ops overrides it to ata_sff_prereset().  This change can\naffect pdc_adma, ahci, sata_fsl and sata_sil24.  pdc_adma implements\nits own prereset using ata_sff_prereset() and the rest has hardreset\nand thus are unaffected by this change.\n\nThis change reflects real world situation.  There is no generic way to\nwait for device readiness for non-SFF controllers and some of them\ndon\u0027t have any mechanism for that.  Non-sff drivers which don\u0027t have\nhardreset should wrap ata_std_prereset() and wait for device readiness\nitself but there\u0027s no such driver now and isn\u0027t likely to be popular\nin the future either.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "288623a06c652239d2f57d271af12bb024cf7218",
      "tree": "e693ca8a46cbedc522cb6f5ca3395d3dc692cfb3",
      "parents": [
        "5682ed33aae05d10a25c95633ef9d9c062825888"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:17 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:22 2008 -0400"
      },
      "message": "libata: clean up port_ops-\u003esff_irq_clear()\n\n-\u003esff_irq_clear() is called only from SFF interrupt handler, so there\nis no reason to initialize it for non-SFF controllers.  Also,\nata_sff_irq_clear() can handle both BMDMA and non-BMDMA SFF\ncontrollers.\n\nThis patch kills ata_noop_irq_clear() and removes it from base\nport_ops and sets -\u003esff_irq_clear to ata_sff_irq_clear() in sff\nport_ops instead of bmdma port_ops.\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": "83c063dd730cb56bf3fc89b70250ff9a398fec1e",
      "tree": "4447914e4957f678a3085d45824c132dfc5c8b8b",
      "parents": [
        "c30484d775eb0b899f2b6a8f5508a99ecaba59fc"
      ],
      "author": {
        "name": "Yoichi Yuasa",
        "email": "yoichi_yuasa@tripeaks.co.jp",
        "time": "Thu Feb 28 21:43:13 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:21 2008 -0400"
      },
      "message": "use ATA_TAG_INTERNAL in ata_tag_internal()\n\nIt should be ATA_TAG_INTERNAL.\n\nSigned-off-by: Yoichi Yuasa \u003cyoichi_yuasa@tripeaks.co.jp\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "03faab7827e4e45823fd27c47b84c133e20a0cd0",
      "tree": "046b04c7e650f5318beb330d70e855a889750154",
      "parents": [
        "a5987e0a1b569146ed9cfa0a8c275a21b344fcaa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 27 19:14:24 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:20 2008 -0400"
      },
      "message": "libata: implement ATA_QCFLAG_RETRY\n\nCurrently whether a command should be retried after failure is\ndetermined inside ata_eh_finish().  Add ATA_QCFLAG_RETRY and move the\nlogic into ata_eh_autopsy().  This makes things clearer and helps\nextending retry determination logic.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6fd36390117f7844ad147377878ddb52088f583a",
      "tree": "c25d9a8357ff173ce46eb057cc50370b87b9cca8",
      "parents": [
        "3d5a3d67a578d95ac3a11a862d16a054e2d4d9cd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 22:16:44 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:18 2008 -0400"
      },
      "message": "libata: kill ata_chk_status()\n\nata_chk_status() just calls ops-\u003echeck_status and it only adds\nconfusion with other status functions.  Kill it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "071ce34d57924edb76b76f7de460eb4991463959",
      "tree": "10400b05bd2649fe25a8c3aa4d41c08bd29c6347",
      "parents": [
        "624d5c514eed18d5a93062e9d86d67065175f30a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 22:16:42 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:18 2008 -0400"
      },
      "message": "libata: move ata_pci_default_filter() out of CONFIG_PCI\n\nata_pci_default_filter() doesn\u0027t really have anything to do with PCI.\nIt\u0027s generally applicable to BMDMA controllers.  Move it out of\nCONFIG_PCI.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "624d5c514eed18d5a93062e9d86d67065175f30a",
      "tree": "61f89b05b70e9b443cf09083b4ae3d102dd357b7",
      "parents": [
        "272f7884e8c0effe594e5537092b9c0ccc0140b0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 22:16:41 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:18 2008 -0400"
      },
      "message": "libata: reorganize SFF related stuff\n\n* Move SFF related functions from libata-core.c to libata-sff.c.\n\n  ata_[bmdma_]sff_port_ops, ata_devchk(), ata_dev_try_classify(),\n  ata_std_dev_select(), ata_tf_to_host(), ata_busy_sleep(),\n  ata_wait_after_reset(), ata_wait_ready(), ata_bus_post_reset(),\n  ata_bus_softreset(), ata_bus_reset(), ata_std_softreset(),\n  sata_std_hardreset(), ata_fill_sg(), ata_fill_sg_dumb(),\n  ata_qc_prep(), ata_dump_qc_prep(), ata_data_xfer(),\n  ata_data_xfer_noirq(), ata_pio_sector(), ata_pio_sectors(),\n  atapi_send_cdb(), __atapi_pio_bytes(), atapi_pio_bytes(),\n  ata_hsm_ok_in_wq(), ata_hsm_qc_complete(), ata_hsm_move(),\n  ata_pio_task(), ata_qc_issue_prot(), ata_host_intr(),\n  ata_interrupt(), ata_std_ports()\n\n* Make ata_pio_queue_task() global as it\u0027s now called from\n  libata-sff.c.\n\n* Move SFF related stuff in include/linux/libata.h and\n  drivers/ata/libata.h into one place.  While at it, move timing\n  constants into the global enum definition and fortify comments a\n  bit.\n\nThis patch strictly moves stuff around and as such doesn\u0027t cause any\nfunctional difference.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a1efdaba2dbd6fb89e23a87b66d3f4dd92c9f5af",
      "tree": "6197c537892e0d887b2a90e369b74abf0500b9ac",
      "parents": [
        "959471936241bd83da7d0a76411cef6772140fe6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:50 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:18 2008 -0400"
      },
      "message": "libata: make reset related methods proper port operations\n\nCurrently reset methods are not specified directly in the\nata_port_operations table.  If a LLD wants to use custom reset\nmethods, it should construct and use a error_handler which uses those\nreset methods.  It\u0027s done this way for two reasons.\n\nFirst, the ops table already contained too many methods and adding\nfour more of them would noticeably increase the amount of necessary\nboilerplate code all over low level drivers.\n\nSecond, as -\u003eerror_handler uses those reset methods, it can get\nconfusing.  ie. By overriding -\u003eerror_handler, those reset ops can be\nmade useless making layering a bit hazy.\n\nNow that ops table uses inheritance, the first problem doesn\u0027t exist\nanymore.  The second isn\u0027t completely solved but is relieved by\nproviding default values - most drivers can just override what it has\nimplemented and don\u0027t have to concern itself about higher level\ncallbacks.  In fact, there currently is no driver which actually\nmodifies error handling behavior.  Drivers which override\n-\u003eerror_handler just wraps the standard error handler only to prepare\nthe controller for EH.  I don\u0027t think making ops layering strict has\nany noticeable benefit.\n\nThis patch makes -\u003eprereset, -\u003esoftreset, -\u003ehardreset, -\u003epostreset and\ntheir PMP counterparts propoer ops.  Default ops are provided in the\nbase ops tables and drivers are converted to override individual reset\nmethods instead of creating custom error_handler.\n\n* ata_std_error_handler() doesn\u0027t use sata_std_hardreset() if SCRs\n  aren\u0027t accessible.  sata_promise doesn\u0027t need to use separate\n  error_handlers for PATA and SATA anymore.\n\n* softreset is broken for sata_inic162x and sata_sx4.  As libata now\n  always prefers hardreset, this doesn\u0027t really matter but the ops are\n  forced to NULL using ATA_OP_NULL for documentation purpose.\n\n* pata_hpt374 needs to use different prereset for the first and second\n  PCI functions.  This used to be done by branching from\n  hpt374_error_handler().  The proper way to do this is to use\n  separate ops and port_info tables for each function.  Converted.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "959471936241bd83da7d0a76411cef6772140fe6",
      "tree": "abccf1d3931c17b581ee2c85cda05a603adcfb0f",
      "parents": [
        "887125e3740283be25564bfc6fb5d24974b651ab"
      ],
      "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: kill port_info-\u003esht and -\u003eirq_handler\n\nlibata core layer doesn\u0027t care about sht or -\u003eirq_handler.  Those are\nonly of interest to the LLD during initialization.  This is confusing\nand has caused several drivers to have duplicate unused initializers\nfor these fields.\n\nCurrently only sata_nv uses these fields.  Make sata_nv use\n-\u003eprivate_data, which is supposed to carry LLD-specific information,\ninstead and kill -\u003esht and -\u003eirq_handler.  nv_pi_priv structure is\ndefined and struct literals are used to initialize private_data.\nNotational overhead is negligible.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "887125e3740283be25564bfc6fb5d24974b651ab",
      "tree": "bd037e1c17a468fabe1834e707b70b4b43513e4a",
      "parents": [
        "1bd5b715a305f6f13455e89becbd839010dd14b5"
      ],
      "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: stop overloading port_info-\u003eprivate_data\n\nport_info-\u003eprivate_data is currently used for two purposes - to record\nprivate data about the port_info or to specify host-\u003eprivate_data to\nuse when allocating ata_host.\n\nThis overloading is confusing and counter-intuitive in that\nport_info-\u003eprivate_data becomes host-\u003eprivate_data instead of\nport-\u003eprivate_data.  In addition, port_info and host don\u0027t correspond\nto each other 1-to-1.  Currently, the first non-NULL\nport_info-\u003eprivate_data is used.\n\nThis patch makes port_info-\u003eprivate_data just be what it is -\nprivate_data for the port_info where LLD can jot down extra info.\nlibata no longer sets host-\u003eprivate_data to the first non-NULL\nport_info-\u003eprivate_data, @host_priv argument is added to\nata_pci_init_one() instead.  LLDs which use ata_pci_init_one() can use\nthis argument to pass in pointer to host private data.  LLDs which\ndon\u0027t should use init-register model anyway and can initialize\nhost-\u003eprivate_data directly.\n\nAdding @host_priv instead of using init-register model for LLDs which\nuse ata_pci_init_one() is suggested by Alan Cox.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\n"
    },
    {
      "commit": "1bd5b715a305f6f13455e89becbd839010dd14b5",
      "tree": "22e74b38495c51cda92145b7ae31f504f80d9fd3",
      "parents": [
        "029cfd6b74fc5c517865fad78cf4a3ea8d9b664a"
      ],
      "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: make ata_pci_init_one() not use ops-\u003eirq_handler and pi-\u003esht\n\nata_pci_init_one() is the only function which uses ops-\u003eirq_handler\nand pi-\u003esht.  Other initialization functions take the same information\nas arguments.  This causes confusion and duplicate unused entries in\nstructures.\n\nMake ata_pci_init_one() take sht as an argument and use ata_interrupt\nimplicitly.  All current users use ata_interrupt and if different irq\nhandler is necessary open coding ata_pci_init_one() using\nata_prepare_sff_host() and ata_activate_sff_host can be done under ten\nlines including error handling and driver which requires custom\ninterrupt handler is likely to require custom initialization anyway.\n\nAs ata_pci_init_one() was the last user of ops-\u003eirq_handler, this\npatch also kills the field.\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": "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": "c1bc899f5805771926c9198e2ab4d77122c356a1",
      "tree": "008dc8c45d55477ba3fc7a9c9abe474ecb5027af",
      "parents": [
        "f08048e94564d009b19038cfbdd800aa83e79c7f"
      ],
      "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: reorganize ata_port_operations\n\nOver the time, ops in ata_port_operations has become a bit confusing.\nReorganize.  SFF/BMDMA ops are separated into separate a group as they\nwill be taken out of ata_port_operations later.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "b558edddb1c42c70a30cfe494984d4be409f7b2b",
      "tree": "b03275d15675a519de7d4edde709892f885a5fa0",
      "parents": [
        "8cebf274dd1c955a6e03385a85fd6569ce445946"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: kill ata_ehi_schedule_probe()\n\nata_ehi_schedule_probe() was created to hide details of link-resuming\nreset magic.  Now that all the softreset workarounds are gone,\nscheduling probe is very simple - set probe_mask and request RESET.\nKill ata_ehi_schedule_probe() and open code it.  This also increases\nconsistency as ata_ehi_schedule_probe() couldn\u0027t cover individual\ndevice probings so they were open-coded even when the helper existed.\n\nWhile at it, define ATA_ALL_DEVICES as mask of all possible devices on\na link and always use it when requesting probe on link level for\nsimplicity and consistency.  Setting extra bits in the probe_mask\ndoesn\u0027t hurt anybody.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "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": "672b2d65ba83a6f3f801fd3d58851aa9c0725a54",
      "tree": "ed3a2fe8013bf8322df637838deccf9f2bc9c92c",
      "parents": [
        "d692abd92f22a81b38d52c39601871003262841c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: kill ATA_EHI_RESUME_LINK\n\nATA_EHI_RESUME_LINK has two functions - promote reset to hardreset if\nATA_LFLAG_HRST_TO_RESUME is set and preventing EH from shortcutting\nreset action when probing is requested.  The former is gone now and\nthe latter can easily be achieved by making EH to perform at least one\nreset if reset is requested, which also makes more sense than\ndepending on RESUME_LINK flag.\n\nAs ATA_EHI_RESUME_LINK was the only EHI reset modifier, this also\nkills reset modifier handling.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "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": "e52dcc4899cf1b7601379c31542bd91cd2997a64",
      "tree": "40bce50f8f912bbd2d988526f3f5c5763f67af62",
      "parents": [
        "436d34b36202ef724778ded1e9cb10f8c37b32bc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Apr 02 17:35:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Apr 04 02:43:36 2008 -0400"
      },
      "message": "libata: ATA_12/16 doesn\u0027t fall into ATAPI_MISC\n\nSAT passthrus don\u0027t really fit into ATAPI_MISC class.  SAT passthru\ncommands always transfer multiple of 512 bytes and variable length\nresponse is not allowed.  This patch creates a separate category -\nATAPI_PASS_THRU - for these.\n\nThis fixes HSM violation on \"hdparm -I\".\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "436d34b36202ef724778ded1e9cb10f8c37b32bc",
      "tree": "45671994cf049263a25e7f540ae488b97bb7d01f",
      "parents": [
        "a4ba7fe2a6c2b61419b290035bff398ab2591c54"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Apr 02 17:28:46 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Apr 04 02:43:35 2008 -0400"
      },
      "message": "libata: uninline atapi_cmd_type()\n\nUninline atapi_cmd_type().  It doesn\u0027t really have to be inline and\nmore case will be added which need to access unexported libata\nvariable.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3ec25ebd69dc120d0590e64caaf1477aa88c8a93",
      "tree": "e0ea13a1f1e1fb5b2fa158fdd2f5122d09ae1d7f",
      "parents": [
        "0f436eff54f90419ac1b8accfb3e6e17c4b49a4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 27 18:37:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Mar 29 12:21:31 2008 -0400"
      },
      "message": "libata: ATA_EHI_LPM should be ATA_EH_LPM\n\nEH actions are ATA_EH_* not ATA_EHI_*.  Rename ATA_EHI_LPM to\nATA_EH_LPM.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "aacda37538e7f9cf2148eedf3766239829e51ba4",
      "tree": "0206d2db8ce636aadabf8e3effd1ee3114ccff2a",
      "parents": [
        "cc7feea39bed2951cc29af3ad642f39a99dfe8d3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 18 17:47:43 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 24 22:09:12 2008 -0400"
      },
      "message": "libata: implement ata_qc_raw_nbytes()\n\nImplement ata_qc_raw_nbytes() which determines the raw user-requested\nsize of a PC command.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "9116300634c5c76cfcd0d2af689846e04d172256",
      "tree": "dfc527d28af35f19dcb9c4092757d6eabb8afb1d",
      "parents": [
        "559bbe6cbd0d8c68d40076a5f7dc98e3bf5864b2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Feb 21 13:25:50 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Feb 24 00:27:33 2008 -0500"
      },
      "message": "libata: automatically use DMADIR if drive/bridge requires it\n\nBack in 2.6.17-rc2, a libata module parameter was added for atapi_dmadir.\n\nThat\u0027s nice, but most SATA devices which need it will tell us about it\nin their IDENTIFY PACKET response, as bit-15 of word-62 of the\nreturned data (as per ATA7, ATA8 specifications).\n\nSo for those which specify it, we should automatically use the DMADIR bit.\nOtherwise, disc writing will fail by default on many SATA-ATAPI drives.\n\nThis patch adds ATA_DFLAG_DMADIR and make ata_dev_configure() set it\nif atapi_dmadir is set or identify data indicates DMADIR is necessary.\natapi_xlat() is converted to check ATA_DFLAG_DMADIR before setting\nDMADIR.\n\nOriginal patch is from Mark Lord.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "5d44b414daa8c1d8551aed6130d86d54175db43f",
      "tree": "8d43b2f5fcdd228ecbf5c7e3fc550d49649ba84d",
      "parents": [
        "332673257056d8be8a69d759eda90a799af5472d"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Feb 15 13:41:32 2008 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 20 12:12:47 2008 -0500"
      },
      "message": "ata: fix sparse warning in libata.h\n\nAvoids lots of these, also is more readable.\ninclude/linux/libata.h:1210:13: warning: potentially expensive pointer subtraction\n\nChange the subtraction to addition on the other side of the comparison.\n\nThanks to Christer Weinigel for the suggestion.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nAcked-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.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": "37198e3051b63d3184886e9bb8235e7578e82628",
      "tree": "3ecd4e8b6b7c710b808909adbd2bf643a10e85b0",
      "parents": [
        "837f5f8fb98d4357d49e9631c9ee2815f3c328ca"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Tue Feb 05 14:06:27 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 06 06:59:32 2008 -0500"
      },
      "message": "libata: kill now unused n_iter and fix sata_fsl\n\nqc-\u003en_iter was used for libata\u0027s own sg walking before sg chaining\nreplaced it.  During conversion, the field and its usage in sata_fsl\nwere left behind.  Kill the filed and update sata_fsl.\n\ntj: This was part of James\u0027s libata-use-block-layer-padding patch.\n    Separated out by me.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Li Yang \u003cleoli@freescale.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    }
  ],
  "next": "4e6b79fa61091a0ed9b0af0f573cc257772cd88d"
}
