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.
This commit is contained in:
parent
a8217f5c2e
commit
8ba5efbd6f
@ -2667,6 +2667,8 @@ mpt_configure_ioc(struct mpt_softc *mpt, int tn, int needreset)
|
||||
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);
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user