svn commit: r207874 - stable/7/sys/dev/mpt
Marius Strobl
marius at FreeBSD.org
Mon May 10 18:56:40 UTC 2010
Author: marius
Date: Mon May 10 18:56:40 2010
New Revision: 207874
URL: http://svn.freebsd.org/changeset/base/207874
Log:
MFC: r207287
On sparc64 obtain the initiator ID to be used for SPI HBAs from the
Open Firmware device tree in order to match what the PROM built-in
driver uses. This is especially important when netbooting Fujitsu
Siemens PRIMEPOWER250 as in that case the built-in driver isn't used
and the port facts PortSCSIID defaults to 0, conflicting with the
disk at the same address.
Modified:
stable/7/sys/dev/mpt/mpt.c
stable/7/sys/dev/mpt/mpt.h
stable/7/sys/dev/mpt/mpt_pci.c
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/dev/mpt/mpt.c
==============================================================================
--- stable/7/sys/dev/mpt/mpt.c Mon May 10 18:56:36 2010 (r207873)
+++ stable/7/sys/dev/mpt/mpt.c Mon May 10 18:56:40 2010 (r207874)
@@ -2659,6 +2659,8 @@ mpt_configure_ioc(struct mpt_softc *mpt,
mpt->is_fc = 0;
mpt->is_sas = 0;
mpt->is_spi = 1;
+ if (mpt->mpt_ini_id == MPT_INI_ID_NONE)
+ mpt->mpt_ini_id = pfp->PortSCSIID;
} else if (pfp->PortType == MPI_PORTFACTS_PORTTYPE_ISCSI) {
mpt_prt(mpt, "iSCSI not supported yet\n");
return (ENXIO);
Modified: stable/7/sys/dev/mpt/mpt.h
==============================================================================
--- stable/7/sys/dev/mpt/mpt.h Mon May 10 18:56:36 2010 (r207873)
+++ stable/7/sys/dev/mpt/mpt.h Mon May 10 18:56:40 2010 (r207874)
@@ -130,6 +130,11 @@
#include <machine/clock.h>
#endif
+#ifdef __sparc64__
+#include <dev/ofw/openfirm.h>
+#include <machine/ofw_machdep.h>
+#endif
+
#include <sys/rman.h>
#if __FreeBSD_version < 500000
@@ -172,6 +177,8 @@
#define MPT_ROLE_BOTH 3
#define MPT_ROLE_DEFAULT MPT_ROLE_INITIATOR
+#define MPT_INI_ID_NONE -1
+
/**************************** Forward Declarations ****************************/
struct mpt_softc;
struct mpt_personality;
@@ -644,7 +651,6 @@ struct mpt_softc {
* Port Facts
*/
MSG_PORT_FACTS_REPLY * port_facts;
-#define mpt_ini_id port_facts[0].PortSCSIID
#define mpt_max_tgtcmds port_facts[0].MaxPostedCmdBuffers
/*
@@ -657,6 +663,7 @@ struct mpt_softc {
CONFIG_PAGE_SCSI_PORT_2 _port_page2;
CONFIG_PAGE_SCSI_DEVICE_0 _dev_page0[16];
CONFIG_PAGE_SCSI_DEVICE_1 _dev_page1[16];
+ int _ini_id;
uint16_t _tag_enable;
uint16_t _disc_enable;
} spi;
@@ -665,6 +672,7 @@ struct mpt_softc {
#define mpt_port_page2 cfg.spi._port_page2
#define mpt_dev_page0 cfg.spi._dev_page0
#define mpt_dev_page1 cfg.spi._dev_page1
+#define mpt_ini_id cfg.spi._ini_id
#define mpt_tag_enable cfg.spi._tag_enable
#define mpt_disc_enable cfg.spi._disc_enable
struct mpi_fc_cfg {
Modified: stable/7/sys/dev/mpt/mpt_pci.c
==============================================================================
--- stable/7/sys/dev/mpt/mpt_pci.c Mon May 10 18:56:36 2010 (r207873)
+++ stable/7/sys/dev/mpt/mpt_pci.c Mon May 10 18:56:40 2010 (r207874)
@@ -460,6 +460,11 @@ mpt_pci_attach(device_t dev)
mpt->raid_queue_depth = MPT_RAID_QUEUE_DEPTH_DEFAULT;
mpt->verbose = MPT_PRT_NONE;
mpt->role = MPT_ROLE_NONE;
+ mpt->mpt_ini_id = MPT_INI_ID_NONE;
+#ifdef __sparc64__
+ if (mpt->is_spi)
+ mpt->mpt_ini_id = OF_getscsinitid(dev);
+#endif
mpt_set_options(mpt);
if (mpt->verbose == MPT_PRT_NONE) {
mpt->verbose = MPT_PRT_WARN;
More information about the svn-src-stable
mailing list