Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Nov 2011 11:47:19 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r227612 - projects/head_mfi/sys/dev/mfi
Message-ID:  <201111171147.pAHBlJYx004352@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Thu Nov 17 11:47:19 2011
New Revision: 227612
URL: http://svn.freebsd.org/changeset/base/227612

Log:
  Use bus_addr_t in more places.
  Remove most of "#ifdef __amd64__".

Modified:
  projects/head_mfi/sys/dev/mfi/mfi.c
  projects/head_mfi/sys/dev/mfi/mfi_ioctl.h
  projects/head_mfi/sys/dev/mfi/mfi_tbolt.c
  projects/head_mfi/sys/dev/mfi/mfivar.h

Modified: projects/head_mfi/sys/dev/mfi/mfi.c
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfi.c	Thu Nov 17 11:16:56 2011	(r227611)
+++ projects/head_mfi/sys/dev/mfi/mfi.c	Thu Nov 17 11:47:19 2011	(r227612)
@@ -53,6 +53,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_compat.h"
 #include "opt_mfi.h"
 
 #include <sys/param.h>
@@ -117,8 +118,10 @@ static int32_t	mfi_read_fw_status_xscale
 static int32_t	mfi_read_fw_status_ppc(struct mfi_softc *sc);
 static int 	mfi_check_clear_intr_xscale(struct mfi_softc *sc);
 static int 	mfi_check_clear_intr_ppc(struct mfi_softc *sc);
-static void 	mfi_issue_cmd_xscale(struct mfi_softc *sc, bus_addr_t bus_add,uint32_t frame_cnt);
-static void 	mfi_issue_cmd_ppc(struct mfi_softc *sc, bus_addr_t bus_add,uint32_t frame_cnt);
+static void 	mfi_issue_cmd_xscale(struct mfi_softc *sc, bus_addr_t bus_add,
+		    uint32_t frame_cnt);
+static void 	mfi_issue_cmd_ppc(struct mfi_softc *sc, bus_addr_t bus_add,
+		    uint32_t frame_cnt);
 static int mfi_config_lock(struct mfi_softc *sc, uint32_t opcode);
 static void mfi_config_unlock(struct mfi_softc *sc, int locked);
 static int mfi_check_command_pre(struct mfi_softc *sc, struct mfi_command *cm);
@@ -1973,13 +1976,8 @@ mfi_build_syspdio(struct mfi_softc *sc,s
 	pass->header.sense_len = MFI_SENSE_LEN;
 	pass->header.data_len = bio->bio_bcount;
 	pass->header.cdb_len = 10;
-	#if defined(__amd64__)
-	pass->sense_addr_lo = (cm->cm_sense_busaddr & 0xFFFFFFFF);
-	pass->sense_addr_hi = (cm->cm_sense_busaddr & 0xFFFFFFFF00000000) >> 32;
-	#else
-	pass->sense_addr_lo = cm->cm_sense_busaddr;
-	pass->sense_addr_hi = 0;
-	#endif
+	pass->sense_addr_lo = (uint32_t)cm->cm_sense_busaddr;
+	pass->sense_addr_hi = (uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32);
 	cm->cm_complete = mfi_bio_complete;
 	cm->cm_private = bio;
 	cm->cm_data = bio->bio_data;
@@ -2027,13 +2025,8 @@ mfi_build_ldio(struct mfi_softc *sc,stru
 	io->header.scsi_status = 0;
 	io->header.sense_len = MFI_SENSE_LEN;
 	io->header.data_len = blkcount;
-	#if defined(__amd64__)
-	io->sense_addr_lo = (cm->cm_sense_busaddr & 0xFFFFFFFF);
-	io->sense_addr_hi = (cm->cm_sense_busaddr & 0xFFFFFFFF00000000 ) >> 32;
-	#else
-	io->sense_addr_lo = cm->cm_sense_busaddr;
-	io->sense_addr_hi = 0;
-	#endif
+	io->sense_addr_lo = (uint32_t)cm->cm_sense_busaddr;
+	io->sense_addr_hi = (uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32);
 	io->lba_hi = (bio->bio_pblkno & 0xffffffff00000000) >> 32;
 	io->lba_lo = bio->bio_pblkno & 0xffffffff;
 	cm->cm_complete = mfi_bio_complete;
@@ -2335,13 +2328,9 @@ mfi_abort(struct mfi_softc *sc, struct m
 	abort->header.flags = 0;
 	abort->header.scsi_status = 0;
 	abort->abort_context = cm_abort->cm_frame->header.context;
-	#if defined(__amd64__)
-		abort->abort_mfi_addr_lo = cm_abort->cm_frame_busaddr & 0xFFFFFFFF;
-		abort->abort_mfi_addr_hi = (cm_abort->cm_frame_busaddr & 0xFFFFFFFF00000000 ) >> 32  ;
-	#else
-	abort->abort_mfi_addr_lo = cm_abort->cm_frame_busaddr;
-	abort->abort_mfi_addr_hi = 0;
-	#endif
+	abort->abort_mfi_addr_lo = (uint32_t)cm_abort->cm_frame_busaddr;
+	abort->abort_mfi_addr_hi =
+	    (uint32_t)((uint64_t)cm_abort->cm_frame_busaddr >> 32);
 	cm->cm_data = NULL;
 	cm->cm_flags = MFI_CMD_POLLED;
 
@@ -2382,13 +2371,8 @@ mfi_dump_blocks(struct mfi_softc *sc, in
 	io->header.scsi_status = 0;
 	io->header.sense_len = MFI_SENSE_LEN;
 	io->header.data_len = (len + MFI_SECTOR_LEN - 1) / MFI_SECTOR_LEN;
-	#if defined(__amd64__)
-		io->sense_addr_lo = (cm->cm_sense_busaddr & 0xFFFFFFFF);
-		io->sense_addr_hi = (cm->cm_sense_busaddr & 0xFFFFFFFF00000000) >> 32;
-	#else
-	io->sense_addr_lo = cm->cm_sense_busaddr;
-	io->sense_addr_hi = 0;
-	#endif
+	io->sense_addr_lo = (uint32_t)cm->cm_sense_busaddr;
+	io->sense_addr_hi = (uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32);
 	io->lba_hi = (lba & 0xffffffff00000000) >> 32;
 	io->lba_lo = lba & 0xffffffff;
 	cm->cm_data = virt;
@@ -2435,13 +2419,8 @@ mfi_dump_syspd_blocks(struct mfi_softc *
 	pass->header.sense_len = MFI_SENSE_LEN;
 	pass->header.data_len = len;
 	pass->header.cdb_len = 10;
-	#if defined(__amd64__)
-		pass->sense_addr_lo = (cm->cm_sense_busaddr & 0xFFFFFFFF);
-		pass->sense_addr_hi = (cm->cm_sense_busaddr & 0xFFFFFFFF00000000) >> 32;
-	#else
-	pass->sense_addr_lo = cm->cm_sense_busaddr;
-	pass->sense_addr_hi = 0;
-	#endif
+	pass->sense_addr_lo = (uint32_t)cm->cm_sense_busaddr;
+	pass->sense_addr_hi = (uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32);
 	cm->cm_data = virt;
 	cm->cm_len = len;
 	cm->cm_sg = &pass->sgl;
@@ -2774,12 +2753,6 @@ mfi_stp_cmd(struct mfi_softc *sc, struct
 	return 0;
 }
 
-#ifdef __amd64__
-#define	PTRIN(p)		((void *)(uintptr_t)(p))
-#else
-#define	PTRIN(p)		(p)
-#endif
-
 static int
 mfi_user_command(struct mfi_softc *sc, struct mfi_ioc_passthru *ioc)
 {
@@ -2848,11 +2821,7 @@ out:
 	return (error);
 }
 
-#ifdef __amd64__
 #define	PTRIN(p)		((void *)(uintptr_t)(p))
-#else
-#define	PTRIN(p)		(p)
-#endif
 
 static int
 mfi_ioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
@@ -2860,7 +2829,7 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 	struct mfi_softc *sc;
 	union mfi_statrequest *ms;
 	struct mfi_ioc_packet *ioc;
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 	struct mfi_ioc_packet32 *ioc32;
 #endif
 	struct mfi_ioc_aen *aen;
@@ -2871,7 +2840,7 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 	size_t len;
 	int i, res;
 	struct mfi_ioc_passthru *iop = (struct mfi_ioc_passthru *)arg;
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 	struct mfi_ioc_passthru32 *iop32 = (struct mfi_ioc_passthru32 *)arg;
 	struct mfi_ioc_passthru iop_swab;
 #endif
@@ -2930,7 +2899,7 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 		break;
 	}
 	case MFI_CMD:
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 	case MFI_CMD32:
 #endif
 		{
@@ -2979,12 +2948,12 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 			cm->cm_flags |= MFI_CMD_DATAIN | MFI_CMD_DATAOUT;
 		cm->cm_len = cm->cm_frame->header.data_len;
 		if (cm->cm_frame->header.cmd == MFI_CMD_STP) {
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 			if (cmd == MFI_CMD) {
 #endif
 				/* Native */
 				cm->cm_stp_len = ioc->mfi_sgl[0].iov_len;
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 			} else {
 				/* 32bit on 64bit */
 				ioc32 = (struct mfi_ioc_packet32 *)ioc;
@@ -3017,13 +2986,13 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 			if ((cm->cm_flags & MFI_CMD_DATAOUT) ||
 			    (cm->cm_frame->header.cmd == MFI_CMD_STP)) {
 				for (i = 0; i < ioc->mfi_sge_count; i++) {
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 					if (cmd == MFI_CMD) {
 #endif
 						/* Native */
 						addr = ioc->mfi_sgl[i].iov_base;
 						len = ioc->mfi_sgl[i].iov_len;
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 					} else {
 						/* 32bit on 64bit */
 						ioc32 = (struct mfi_ioc_packet32 *)ioc;
@@ -3046,13 +3015,10 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 			locked = mfi_config_lock(sc, cm->cm_frame->dcmd.opcode);
 
 		if (cm->cm_frame->header.cmd == MFI_CMD_PD_SCSI_IO) {
-			#if defined(__amd64__)
-			cm->cm_frame->pass.sense_addr_lo = (cm->cm_sense_busaddr & 0xFFFFFFFF);
-			cm->cm_frame->pass.sense_addr_hi = (cm->cm_sense_busaddr& 0xFFFFFFFF00000000) >> 32;
-			#else
-			cm->cm_frame->pass.sense_addr_lo = cm->cm_sense_busaddr;
-			cm->cm_frame->pass.sense_addr_hi = 0;
-			#endif
+			cm->cm_frame->pass.sense_addr_lo =
+			    (uint32_t)cm->cm_sense_busaddr;
+			cm->cm_frame->pass.sense_addr_hi =
+			    (uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32);
 		}
 		mtx_lock(&sc->mfi_io_lock);
 		skip_pre_post = mfi_check_for_sscd (sc, cm);
@@ -3079,13 +3045,13 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 			if ((cm->cm_flags & MFI_CMD_DATAIN) ||
 			    (cm->cm_frame->header.cmd == MFI_CMD_STP)) {
 				for (i = 0; i < ioc->mfi_sge_count; i++) {
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 					if (cmd == MFI_CMD) {
 #endif
 						/* Native */
 						addr = ioc->mfi_sgl[i].iov_base;
 						len = ioc->mfi_sgl[i].iov_len;
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 					} else {
 						/* 32bit on 64bit */
 						ioc32 = (struct mfi_ioc_packet32 *)ioc;
@@ -3109,7 +3075,7 @@ mfi_ioctl(struct cdev *dev, u_long cmd, 
 			bcopy(&ioc->mfi_frame.raw[ioc->mfi_sense_off],
 			    &sense_ptr.sense_ptr_data[0],
 			    sizeof(sense_ptr.sense_ptr_data));
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 			if (cmd != MFI_CMD) {
 				/*
 				 * not 64bit native so zero out any address
@@ -3202,7 +3168,7 @@ out:
 			    cmd, arg, flag, td));
 			break;
 		}
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 	case MFIIO_PASSTHRU32:
 		iop_swab.ioc_frame	= iop32->ioc_frame;
 		iop_swab.buf_size	= iop32->buf_size;
@@ -3212,7 +3178,7 @@ out:
 #endif
 	case MFIIO_PASSTHRU:
 		error = mfi_user_command(sc, iop);
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 		if (cmd == MFIIO_PASSTHRU32)
 			iop32->ioc_frame = iop_swab.ioc_frame;
 #endif
@@ -3315,13 +3281,10 @@ mfi_linux_ioctl_int(struct cdev *dev, u_
 			locked = mfi_config_lock(sc, cm->cm_frame->dcmd.opcode);
 
 		if (cm->cm_frame->header.cmd == MFI_CMD_PD_SCSI_IO) {
-			#if defined(__amd64__)
-			cm->cm_frame->pass.sense_addr_lo = (cm->cm_sense_busaddr & 0xFFFFFFFF);
-			cm->cm_frame->pass.sense_addr_hi = (cm->cm_sense_busaddr & 0xFFFFFFFF00000000) >> 32;
-			#else
-			cm->cm_frame->pass.sense_addr_lo = cm->cm_sense_busaddr;
-			cm->cm_frame->pass.sense_addr_hi = 0;
-			#endif
+			cm->cm_frame->pass.sense_addr_lo =
+			    (uint32_t)cm->cm_sense_busaddr;
+			cm->cm_frame->pass.sense_addr_hi =
+			    (uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32);
 		}
 		
 		mtx_lock(&sc->mfi_io_lock);

Modified: projects/head_mfi/sys/dev/mfi/mfi_ioctl.h
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfi_ioctl.h	Thu Nov 17 11:16:56 2011	(r227611)
+++ projects/head_mfi/sys/dev/mfi/mfi_ioctl.h	Thu Nov 17 11:47:19 2011	(r227612)
@@ -30,12 +30,10 @@ __FBSDID("$FreeBSD$");
 #include <dev/mfi/mfireg.h>
 #include <machine/bus.h>
 
-#if defined(__amd64__) /* Assume amd64 wants 32 bit Linux */
 struct iovec32 {
 	u_int32_t	iov_base;
 	int		iov_len;
 };
-#endif
 
 struct megasas_sge
 {
@@ -86,7 +84,7 @@ struct mfi_ioc_packet {
 	struct iovec mfi_sgl[MAX_IOCTL_SGE];
 } __packed;
 
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 struct mfi_ioc_packet32 {
 	uint16_t	mfi_adapter_no;
 	uint16_t	mfi_pad1;
@@ -111,7 +109,7 @@ struct mfi_ioc_aen {
 } __packed;
 
 #define MFI_CMD		_IOWR('M', 1, struct mfi_ioc_packet)
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 #define MFI_CMD32	_IOWR('M', 1, struct mfi_ioc_packet32)
 #endif
 #define MFI_SET_AEN	_IOW('M', 3, struct mfi_ioc_aen)
@@ -143,7 +141,7 @@ struct mfi_ioc_passthru {
 	uint8_t			*buf;
 } __packed;
 
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 struct mfi_ioc_passthru32 {
 	struct mfi_dcmd_frame	ioc_frame;
 	uint32_t		buf_size;
@@ -153,7 +151,7 @@ struct mfi_ioc_passthru32 {
 
 #define MFIIO_STATS	_IOWR('Q', 101, union mfi_statrequest)
 #define MFIIO_PASSTHRU	_IOWR('C', 102, struct mfi_ioc_passthru)
-#ifdef __amd64__
+#ifdef COMPAT_FREEBSD32
 #define MFIIO_PASSTHRU32	_IOWR('C', 102, struct mfi_ioc_passthru32)
 #endif
 

Modified: projects/head_mfi/sys/dev/mfi/mfi_tbolt.c
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfi_tbolt.c	Thu Nov 17 11:16:56 2011	(r227611)
+++ projects/head_mfi/sys/dev/mfi/mfi_tbolt.c	Thu Nov 17 11:47:19 2011	(r227612)
@@ -134,13 +134,13 @@ mfi_tbolt_check_clear_intr_ppc(struct mf
 
 
 void
-mfi_tbolt_issue_cmd_ppc(struct mfi_softc *sc, uintptr_t bus_add,
+mfi_tbolt_issue_cmd_ppc(struct mfi_softc *sc, bus_addr_t bus_add,
    uint32_t frame_cnt)
 {
 	bus_add |= (MFI_REQ_DESCRIPT_FLAGS_MFA
 	    << MFI_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
-	MFI_WRITE4(sc, MFI_IQPL, bus_add);
-	MFI_WRITE4(sc, MFI_IQPH, 0x00000000);
+	MFI_WRITE4(sc, MFI_IQPL, (uint32_t)bus_add);
+	MFI_WRITE4(sc, MFI_IQPH, (uint32_t)((uint64_t)bus_add >> 32));
 }
 
 /**
@@ -348,7 +348,7 @@ mfi_tbolt_init_MFI_queue(struct mfi_soft
 	struct MPI2_IOC_INIT_REQUEST   *mpi2IocInit;
 	struct mfi_init_frame	*mfi_init;
 	uintptr_t			offset = 0;
-	uintptr_t			phyAddress;
+	bus_addr_t			phyAddress;
 	MFI_ADDRESS			*mfiAddressTemp;
 	struct mfi_command *cm;
 	int error;
@@ -395,48 +395,29 @@ mfi_tbolt_init_MFI_queue(struct mfi_soft
 	phyAddress = sc->mfi_tb_busaddr + offset;
 	mfiAddressTemp =
 	    (MFI_ADDRESS *)&mpi2IocInit->ReplyDescriptorPostQueueAddress;
-#if defined(__amd64__)
-	mfiAddressTemp->u.addressLow = (phyAddress & 0xFFFFFFFF);
-	mfiAddressTemp->u.addressHigh = (phyAddress & 0xFFFFFFFF00000000) >> 32;
-#else
-	mfiAddressTemp->u.addressLow = phyAddress & 0xFFFFFFFF;
-	mfiAddressTemp->u.addressHigh = 0;
-#endif
+	mfiAddressTemp->u.addressLow = (uint32_t)phyAddress;
+	mfiAddressTemp->u.addressHigh = (uint32_t)((uint64_t)phyAddress >> 32);
 
 	/* Get physical address of request message pool */
 	offset = sc->request_message_pool_align - sc->request_message_pool;
 	phyAddress =  sc->mfi_tb_busaddr + offset;
 	mfiAddressTemp = (MFI_ADDRESS *)&mpi2IocInit->SystemRequestFrameBaseAddress;
-#if defined(__amd64__)
-	mfiAddressTemp->u.addressLow = (phyAddress & 0xFFFFFFFF);
-	mfiAddressTemp->u.addressHigh = (phyAddress & 0xFFFFFFFF00000000) >> 32;
-#else
-	mfiAddressTemp->u.addressLow = phyAddress & 0xFFFFFFFF;
-	mfiAddressTemp->u.addressHigh = 0;	/* High Part */
-#endif
+	mfiAddressTemp->u.addressLow = (uint32_t)phyAddress;
+	mfiAddressTemp->u.addressHigh = (uint32_t)((uint64_t)phyAddress >> 32);
 	mpi2IocInit->ReplyFreeQueueAddress =  0; // Not supported by MR.
 	mpi2IocInit->TimeStamp = time_uptime;
 
 	if (sc->verbuf) {
 		snprintf((char *)sc->verbuf, strlen(MEGASAS_VERSION) + 2, "%s\n",
                 MEGASAS_VERSION);
-#if defined(__amd64__)
-		mfi_init->driver_ver_lo = (sc->verbuf_h_busaddr & 0xFFFFFFFF);
-		mfi_init->driver_ver_hi = (sc->verbuf_h_busaddr & 0xFFFFFFFF00000000) >> 32;
-#else
-		mfi_init->driver_ver_lo = sc->verbuf_h_busaddr;
-		mfi_init->driver_ver_hi = 0;
-#endif
+		mfi_init->driver_ver_lo = (uint32_t)sc->verbuf_h_busaddr;
+		mfi_init->driver_ver_hi =
+		    (uint32_t)((uint64_t)sc->verbuf_h_busaddr >> 32);
 	}
 	/* Get the physical address of the mpi2 ioc init command */
 	phyAddress =  sc->mfi_tb_ioc_init_busaddr;
-#if defined(__amd64__)
-	mfi_init->qinfo_new_addr_lo = (phyAddress & 0xFFFFFFFF);
-	mfi_init->qinfo_new_addr_hi = (phyAddress & 0xFFFFFFFF00000000) >> 32;
-#else
-	mfi_init->qinfo_new_addr_lo = phyAddress & 0xFFFFFFFF;
-	mfi_init->qinfo_new_addr_hi = 0;
-#endif
+	mfi_init->qinfo_new_addr_lo = (uint32_t)phyAddress;
+	mfi_init->qinfo_new_addr_hi = (uint32_t)((uint64_t)phyAddress >> 32);
 	mfi_init->header.flags |= MFI_FRAME_DONT_POST_IN_REPLY_QUEUE;
 
 	mfi_init->header.cmd = MFI_CMD_INIT;
@@ -472,9 +453,9 @@ mfi_tbolt_init_MFI_queue(struct mfi_soft
 int mfi_tbolt_alloc_cmd(struct mfi_softc *sc)
 {
 	struct mfi_cmd_tbolt *cmd;
-	uint32_t io_req_base_phys, offset = 0;
+	bus_addr_t io_req_base_phys;
 	uint8_t *io_req_base;
-	uint16_t i = 0, j = 0;
+	int i = 0, j = 0, offset = 0;
 
 	/*
 	 * sc->mfi_cmd_pool_tbolt is an array of struct mfi_cmd_tbolt pointers.
@@ -1080,7 +1061,6 @@ mfi_tbolt_make_sgl(struct mfi_softc *sc,
 	uint8_t i, sg_processed,sg_to_process;
 	uint8_t sge_count, sge_idx;
 	union mfi_sgl *os_sgl;
-	uint64_t tmp = ~0x00;
 
 	/*
 	 * Return 0 if there is no data transfer
@@ -1121,7 +1101,7 @@ mfi_tbolt_make_sgl(struct mfi_softc *sc,
 			sgl_ptr->Address = os_sgl->sg_skinny[i].addr;
 		} else {
 			sgl_ptr->Length = os_sgl->sg32[i].len;
-			sgl_ptr->Address = os_sgl->sg32[i].addr & tmp;
+			sgl_ptr->Address = os_sgl->sg32[i].addr;
 		}
 		sgl_ptr->Flags = 0;
 		sgl_ptr++;
@@ -1142,18 +1122,15 @@ mfi_tbolt_make_sgl(struct mfi_softc *sc,
 		    MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR);
 		sg_chain->Length =  (sizeof(MPI2_SGE_IO_UNION) *
 		    (sge_count - sg_processed));
-		sg_chain->Address = ((uintptr_t)cmd->sg_frame_phys_addr) & tmp;
+		sg_chain->Address = cmd->sg_frame_phys_addr;
 		sgl_ptr = (pMpi25IeeeSgeChain64_t)cmd->sg_frame;
 		for (; i < sge_count; i++) {
 			if (sc->mfi_flags & MFI_FLAGS_SKINNY) {
 				sgl_ptr->Length = os_sgl->sg_skinny[i].len;
 				sgl_ptr->Address = os_sgl->sg_skinny[i].addr;
-			}
-			else
-			{
+			} else {
 				sgl_ptr->Length = os_sgl->sg32[i].len;
-				sgl_ptr->Address = (os_sgl->sg32[i].addr) &
-				    tmp;
+				sgl_ptr->Address = os_sgl->sg32[i].addr;
 			}
 			sgl_ptr->Flags = 0;
 			sgl_ptr++;

Modified: projects/head_mfi/sys/dev/mfi/mfivar.h
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfivar.h	Thu Nov 17 11:16:56 2011	(r227611)
+++ projects/head_mfi/sys/dev/mfi/mfivar.h	Thu Nov 17 11:47:19 2011	(r227612)
@@ -365,9 +365,9 @@ union desc_value {
 struct mfi_cmd_tbolt {
 	union mfi_mpi2_request_descriptor *request_desc;
 	struct mfi_mpi2_request_raid_scsi_io *io_request;
-	uintptr_t		io_request_phys_addr;
-	uintptr_t		sg_frame_phys_addr;
-	uintptr_t 		sense_phys_addr;
+	bus_addr_t		io_request_phys_addr;
+	bus_addr_t		sg_frame_phys_addr;
+	bus_addr_t 		sense_phys_addr;
 	MPI2_SGE_IO_UNION	*sg_frame;
 	uint8_t			*sense;
 	TAILQ_ENTRY(mfi_cmd_tbolt) next;
@@ -401,7 +401,7 @@ extern void mfi_tbolt_enable_intr_ppc(st
 extern void mfi_tbolt_disable_intr_ppc(struct mfi_softc *);
 extern int32_t mfi_tbolt_read_fw_status_ppc(struct mfi_softc *);
 extern int32_t mfi_tbolt_check_clear_intr_ppc(struct mfi_softc *);
-extern void mfi_tbolt_issue_cmd_ppc(struct mfi_softc *,bus_addr_t, uint32_t);
+extern void mfi_tbolt_issue_cmd_ppc(struct mfi_softc *, bus_addr_t, uint32_t);
 extern void mfi_tbolt_init_globals(struct mfi_softc*);
 extern uint32_t mfi_tbolt_get_memory_requirement(struct mfi_softc *);
 extern int mfi_tbolt_init_desc_pool(struct mfi_softc *, uint8_t *, uint32_t);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201111171147.pAHBlJYx004352>