From owner-svn-src-all@FreeBSD.ORG  Sat Dec  5 08:44:56 2009
Return-Path: <owner-svn-src-all@FreeBSD.ORG>
Delivered-To: svn-src-all@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 2117F1065679;
	Sat,  5 Dec 2009 08:44:56 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 0F0D58FC17;
	Sat,  5 Dec 2009 08:44:56 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nB58itJ3079308;
	Sat, 5 Dec 2009 08:44:55 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nB58itIq079304;
	Sat, 5 Dec 2009 08:44:55 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <200912050844.nB58itIq079304@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Sat, 5 Dec 2009 08:44:55 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r200115 - in stable/8/sys: cam/ata sys
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the entire src tree \(except for &quot;
	user&quot; and &quot; projects&quot; \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-all>,
	<mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all>
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-all>,
	<mailto:svn-src-all-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 05 Dec 2009 08:44:56 -0000

Author: mav
Date: Sat Dec  5 08:44:55 2009
New Revision: 200115
URL: http://svn.freebsd.org/changeset/base/200115

Log:
  MFC r200008:
  Add CAM_ATAIO_DMA ATA command flag to mark DMA protocol commands.
  It is not needed for SATA controllers, but required for PATA.

Modified:
  stable/8/sys/cam/ata/ata_all.c
  stable/8/sys/cam/ata/ata_all.h
  stable/8/sys/sys/ata.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/cam/ata/ata_all.c
==============================================================================
--- stable/8/sys/cam/ata/ata_all.c	Sat Dec  5 08:41:08 2009	(r200114)
+++ stable/8/sys/cam/ata/ata_all.c	Sat Dec  5 08:44:55 2009	(r200115)
@@ -93,8 +93,8 @@ ata_op_string(struct ata_cmd *cmd)
 	case 0x39: return ("WRITE_MUL48");
 	case 0x3a: return ("WRITE_STREAM_DMA48");
 	case 0x3b: return ("WRITE_STREAM48");
-	case 0x3d: return ("WRITE_DMA_FUA");
-	case 0x3e: return ("WRITE_DMA_FUA48");
+	case 0x3d: return ("WRITE_DMA_FUA48");
+	case 0x3e: return ("WRITE_DMA_QUEUED_FUA48");
 	case 0x3f: return ("WRITE_LOG_EXT");
 	case 0x40: return ("READ_VERIFY");
 	case 0x42: return ("READ_VERIFY48");
@@ -119,7 +119,7 @@ ata_op_string(struct ata_cmd *cmd)
 	case 0xca: return ("WRITE_DMA");
 	case 0xcc: return ("WRITE_DMA_QUEUED");
 	case 0xcd: return ("CFA_WRITE_MULTIPLE_WITHOUT_ERASE");
-	case 0xce: return ("WRITE_MULTIPLE_FUA48");
+	case 0xce: return ("WRITE_MUL_FUA48");
 	case 0xd1: return ("CHECK_MEDIA_CARD_TYPE");
 	case 0xda: return ("GET_MEDIA_STATUS");
 	case 0xde: return ("MEDIA_LOCK");
@@ -309,6 +309,11 @@ ata_28bit_cmd(struct ccb_ataio *ataio, u
 {
 	bzero(&ataio->cmd, sizeof(ataio->cmd));
 	ataio->cmd.flags = 0;
+	if (cmd == ATA_READ_DMA ||
+	    cmd == ATA_READ_DMA_QUEUED ||
+	    cmd == ATA_WRITE_DMA ||
+	    cmd == ATA_WRITE_DMA_QUEUED)
+		ataio->cmd.flags |= CAM_ATAIO_DMA;
 	ataio->cmd.command = cmd;
 	ataio->cmd.features = features;
 	ataio->cmd.lba_low = lba;
@@ -324,6 +329,15 @@ ata_48bit_cmd(struct ccb_ataio *ataio, u
 {
 	bzero(&ataio->cmd, sizeof(ataio->cmd));
 	ataio->cmd.flags = CAM_ATAIO_48BIT;
+	if (cmd == ATA_READ_DMA48 ||
+	    cmd == ATA_READ_DMA_QUEUED48 ||
+	    cmd == ATA_READ_STREAM_DMA48 ||
+	    cmd == ATA_WRITE_DMA48 ||
+	    cmd == ATA_WRITE_DMA_FUA48 ||
+	    cmd == ATA_WRITE_DMA_QUEUED48 ||
+	    cmd == ATA_WRITE_DMA_QUEUED_FUA48 ||
+	    cmd == ATA_WRITE_STREAM_DMA48)
+		ataio->cmd.flags |= CAM_ATAIO_DMA;
 	ataio->cmd.command = cmd;
 	ataio->cmd.features = features;
 	ataio->cmd.lba_low = lba;

Modified: stable/8/sys/cam/ata/ata_all.h
==============================================================================
--- stable/8/sys/cam/ata/ata_all.h	Sat Dec  5 08:41:08 2009	(r200114)
+++ stable/8/sys/cam/ata/ata_all.h	Sat Dec  5 08:44:55 2009	(r200115)
@@ -41,6 +41,7 @@ struct ata_cmd {
 #define		CAM_ATAIO_FPDMA		0x02	/* FPDMA command */
 #define		CAM_ATAIO_CONTROL	0x04	/* Control, not a command */
 #define		CAM_ATAIO_NEEDRESULT	0x08	/* Request requires result. */
+#define		CAM_ATAIO_DMA		0x10	/* DMA command */
 
 	u_int8_t	command;
 	u_int8_t	features;

Modified: stable/8/sys/sys/ata.h
==============================================================================
--- stable/8/sys/sys/ata.h	Sat Dec  5 08:41:08 2009	(r200114)
+++ stable/8/sys/sys/ata.h	Sat Dec  5 08:44:55 2009	(r200115)
@@ -291,12 +291,21 @@ struct ata_params {
 #define ATA_READ_DMA_QUEUED48           0x26    /* read DMA QUEUED 48bit LBA */
 #define ATA_READ_NATIVE_MAX_ADDRESS48   0x27    /* read native max addr 48bit */
 #define ATA_READ_MUL48                  0x29    /* read multi 48bit LBA */
+#define ATA_READ_STREAM_DMA48           0x2a    /* read DMA stream 48bit LBA */
+#define ATA_READ_STREAM48               0x2b    /* read stream 48bit LBA */
 #define ATA_WRITE                       0x30    /* write */
 #define ATA_WRITE48                     0x34    /* write 48bit LBA */
 #define ATA_WRITE_DMA48                 0x35    /* write DMA 48bit LBA */
 #define ATA_WRITE_DMA_QUEUED48          0x36    /* write DMA QUEUED 48bit LBA*/
 #define ATA_SET_MAX_ADDRESS48           0x37    /* set max address 48bit */
 #define ATA_WRITE_MUL48                 0x39    /* write multi 48bit LBA */
+#define ATA_WRITE_STREAM_DMA48          0x3a
+#define ATA_WRITE_STREAM48              0x3b
+#define ATA_WRITE_DMA_FUA48             0x3d
+#define ATA_WRITE_DMA_QUEUED_FUA48      0x3e
+#define ATA_WRITE_LOG_EXT               0x3f
+#define ATA_READ_VERIFY                 0x40
+#define ATA_READ_VERIFY48               0x42
 #define ATA_READ_FPDMA_QUEUED           0x60    /* read DMA NCQ */
 #define ATA_WRITE_FPDMA_QUEUED          0x61    /* write DMA NCQ */
 #define ATA_SEEK                        0x70    /* seek */
@@ -312,6 +321,7 @@ struct ata_params {
 #define ATA_READ_DMA                    0xc8    /* read DMA */
 #define ATA_WRITE_DMA                   0xca    /* write DMA */
 #define ATA_WRITE_DMA_QUEUED            0xcc    /* write DMA QUEUED */
+#define ATA_WRITE_MUL_FUA48             0xce
 #define ATA_STANDBY_IMMEDIATE           0xe0    /* standby immediate */
 #define ATA_IDLE_IMMEDIATE              0xe1    /* idle immediate */
 #define ATA_STANDBY_CMD                 0xe2    /* standby */