Author: marius
Date: Tue Apr 27 18:41:16 2010
New Revision: 207287
URL: http://svn.freebsd.org/changeset/base/207287

Log:
  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:
  head/sys/dev/mpt/mpt.c
  head/sys/dev/mpt/mpt.h
  head/sys/dev/mpt/mpt_pci.c

Modified: head/sys/dev/mpt/mpt.c
==============================================================================
--- head/sys/dev/mpt/mpt.c      Tue Apr 27 18:06:54 2010        (r207286)
+++ head/sys/dev/mpt/mpt.c      Tue Apr 27 18:41:16 2010        (r207287)
@@ -2667,6 +2667,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: head/sys/dev/mpt/mpt.h
==============================================================================
--- head/sys/dev/mpt/mpt.h      Tue Apr 27 18:06:54 2010        (r207286)
+++ head/sys/dev/mpt/mpt.h      Tue Apr 27 18:41:16 2010        (r207287)
@@ -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;
@@ -637,7 +644,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
 
        /*
@@ -650,6 +656,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;
@@ -658,6 +665,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: head/sys/dev/mpt/mpt_pci.c
==============================================================================
--- head/sys/dev/mpt/mpt_pci.c  Tue Apr 27 18:06:54 2010        (r207286)
+++ head/sys/dev/mpt/mpt_pci.c  Tue Apr 27 18:41:16 2010        (r207287)
@@ -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;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to