1. 09 9月, 2009 6 次提交
    • T
      ahci: Gigabyte GA-MA69VM-S2 can't do 64bit DMA · 1b549dcb
      Tejun Heo 提交于
      Gigabyte GA-MA69VM-S2 can't do 64bit DMA either.  It's yet unknown
      whether recent BIOS fixes the problem.  Blacklist regardless of BIOS
      revisions for now.
      
      Sandor Bodo-Merle reported and provided the initial patch for this
      issue.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NSandor Bodo-Merle <sbodomerle@gmail.com>
      Cc: Shane Huang <shane.huang@amd.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      1b549dcb
    • T
      ahci: make ahci_asus_m2a_vm_32bit_only() quirk more generic · 03d783bf
      Tejun Heo 提交于
      It turns out ASUS M2A-VM isn't the only one with the 32bit DMA
      problem.  Make ahci_asus_m2a_vm_32bit_only() more generic using the
      new dmi_get_date() and rename it to ahci_sb600_32bit_only().  Cut off
      date is now pointed to by dmi_system_id->driver_data in "yyyymmdd"
      format and it's now also allowed to be omitted.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Sandor Bodo-Merle <sbodomerle@gmail.com>
      Cc: Shane Huang <shane.huang@amd.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      03d783bf
    • T
      dmi: extend dmi_get_year() to dmi_get_date() · 3e5cd1f2
      Tejun Heo 提交于
      There are cases where full date information is required instead of
      just the year.  Add month and day parsing to dmi_get_year() and rename
      it to dmi_get_date().
      
      As the original function only required '/' followed by any number of
      parseable characters at the end of the string, keep that behavior to
      avoid upsetting existing users.
      
      The new function takes dates of format [mm[/dd]]/yy[yy].  Year, month
      and date are checked to be in the ranges of [1-9999], [1-12] and
      [1-31] respectively and any invalid or out-of-range component is
      returned as zero.
      
      The dummy implementation is updated accordingly but the return value
      is updated to indicate field not found which is consistent with how
      other dummy functions behave.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      3e5cd1f2
    • T
      dmi: fix date handling in dmi_get_year() · 02c24fa8
      Tejun Heo 提交于
      Year parsing in dmi_get_year() had the following two bugs.
      
      * "00" is treated as invalid instead of 2000 because zero return from
        simple_strtoul() is treated as error.
      
      * "0N" where N >= 8 is treated as invalid of 200N because the leading
        0 is considered to specify octal.
      
      Fix the above two bugs by using endptr to detect invalid number and
      forcing decimal.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      02c24fa8
    • T
      libata: unbreak TPM filtering by reorganizing ata_scsi_pass_thru() · bd30add8
      Tejun Heo 提交于
      ata_scsi_pass_thru() was checking for input sanity and disallowed
      commands while initializaing qc from scmd.  TPM filtering was added
      right after protocol check at which point tf wasn't initialized
      properly.  This means that TPM filtering has never really worked.
      
      This patch fixes the bug by reorganizing ata_scsi_pass_thru() such
      that qc is fully initialized before checking for invalid conditions
      which is way less error prone.
      
      Discovered while Thilo-Alexander Ginkel was trying debug patches for
      bko#13416.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Thilo-Alexander Ginkel <thilo@ginkel.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      bd30add8
    • T
      sata_sis: convert to slave_link · 72fee382
      Tejun Heo 提交于
      During introduction of slave_link, sata_sis slipped through the crack
      and left with ad-hoc merged SCR access.  As SCR status was shared for
      both the master and slave devices, when only one of the device is
      online, libata EH would think both are online but would only get valid
      device signature for the actually present one, which in turn trigger
      the probing safety net mechanism and make EH retry causing large delay
      during boot.  This patch converts sata_sis to slave_link mechanism.
      
      This bug was reported by TAXI in bko#14075.
      
       http://bugzilla.kernel.org/show_bug.cgi?id=14075Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NTAXI <taxi@a-city.de>
      Cc: Uwe Koziolek <uwe.koziolek@gmx.net>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      72fee382
  2. 02 9月, 2009 11 次提交
  3. 01 9月, 2009 1 次提交
    • B
      ata_piix: parallel scanning on PATA needs an extra locking · 60c3be38
      Bartlomiej Zolnierkiewicz 提交于
      Commit log for commit 517d3cc1
      ("[libata] ata_piix: Enable parallel scan") says:
      
          This patch turns on parallel scanning for the ata_piix driver.
          This driver is used on most netbooks (no AHCI for cheap storage it seems).
          The scan is the dominating time factor in the kernel boot for these
          devices; with this flag it gets cut in half for the device I used
          for testing (eeepc).
          Alan took a look at the driver source and concluded that it ought to be safe
          to do for this driver.  Alan has also checked with the hardware team.
      
      and it is all true but once we put all things together additional
      constraints for PATA controllers show up (some hardware registers
      have per-host not per-port atomicity) and we risk misprogramming
      the controller.
      
      I used the following test to check whether the issue is real:
      
        @@ -736,8 +736,20 @@ static void piix_set_piomode(struct ata_
         			(timings[pio][1] << 8);
         	}
         	pci_write_config_word(dev, master_port, master_data);
        -	if (is_slave)
        +	if (is_slave) {
        +		if (ap->port_no == 0) {
        +			u8 tmp = slave_data;
        +
        +			while (slave_data == tmp) {
        +				pci_read_config_byte(dev, slave_port, &tmp);
        +				msleep(50);
        +			}
        +
        +			dev_printk(KERN_ERR, &dev->dev, "PATA parallel scan "
        +				   "race detected\n");
        +		}
         		pci_write_config_byte(dev, slave_port, slave_data);
        +	}
      
         	/* Ensure the UDMA bit is off - it will be turned back on if
         	   UDMA is selected */
      
      and it indeed triggered the error message.
      
      Lets fix all such races by adding an extra locking to ->set_piomode
      and ->set_dmamode methods for PATA controllers.
      
      [ Alan: would be better to take the host lock in libata-core for these
        cases so that we fix all the adapters in one swoop.  "Looks fine as a
        temproary quickfix tho" ]
      
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Acked-by: NAlan Cox <alan@linux.intel.com>
      Cc: Jeff Garzik <jgarzik@redhat.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      60c3be38
  4. 31 8月, 2009 7 次提交
  5. 30 8月, 2009 2 次提交
  6. 29 8月, 2009 3 次提交
  7. 28 8月, 2009 1 次提交
  8. 27 8月, 2009 9 次提交