Browse Source

Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev

Linus Torvalds 19 years ago
parent
commit
4ba529a8a3
3 changed files with 8 additions and 2 deletions
  1. 1 2
      drivers/scsi/libata-core.c
  2. 6 0
      drivers/scsi/libata-scsi.c
  3. 1 0
      drivers/scsi/sata_sil24.c

+ 1 - 2
drivers/scsi/libata-core.c

@@ -532,8 +532,7 @@ void ata_tf_to_fis(const struct ata_taskfile *tf, u8 *fis, u8 pmp)
  *	@fis: Buffer from which data will be input
  *	@tf: Taskfile to output
  *
- *	Converts a standard ATA taskfile to a Serial ATA
- *	FIS structure (Register - Host to Device).
+ *	Converts a serial ATA FIS structure to a standard ATA taskfile.
  *
  *	LOCKING:
  *	Inherited from caller.

+ 6 - 0
drivers/scsi/libata-scsi.c

@@ -2276,6 +2276,12 @@ ata_scsi_pass_thru(struct ata_queued_cmd *qc, const u8 *scsicmd)
 		tf->device = scsicmd[8];
 		tf->command = scsicmd[9];
 	}
+	/*
+	 * If slave is possible, enforce correct master/slave bit
+	*/
+	if (qc->ap->flags & ATA_FLAG_SLAVE_POSS)
+		tf->device = qc->dev->devno ?
+			tf->device | ATA_DEV1 : tf->device & ~ATA_DEV1;
 
 	/*
 	 * Filter SET_FEATURES - XFER MODE command -- otherwise,

+ 1 - 0
drivers/scsi/sata_sil24.c

@@ -687,6 +687,7 @@ static void sil24_port_stop(struct ata_port *ap)
 	struct sil24_port_priv *pp = ap->private_data;
 
 	sil24_cblk_free(pp, dev);
+	ata_pad_free(ap, dev);
 	kfree(pp);
 }