From owner-p4-projects@FreeBSD.ORG Thu Jul 13 04:45:29 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1305916A4E0; Thu, 13 Jul 2006 04:45:29 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C38EE16A4DE for ; Thu, 13 Jul 2006 04:45:28 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6F25B43D49 for ; Thu, 13 Jul 2006 04:45:28 +0000 (GMT) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k6D4jS6t046585 for ; Thu, 13 Jul 2006 04:45:28 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k6D4jSQ3046582 for perforce@freebsd.org; Thu, 13 Jul 2006 04:45:28 GMT (envelope-from jb@freebsd.org) Date: Thu, 13 Jul 2006 04:45:28 GMT Message-Id: <200607130445.k6D4jSQ3046582@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 101430 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Jul 2006 04:45:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=101430 Change 101430 by jb@jb_freebsd2 on 2006/07/13 04:44:53 Debuging work-in-progress. Affected files ... .. //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt.c#8 edit .. //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt.h#9 edit .. //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt_cam.c#4 edit .. //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt_pci.c#6 edit Differences ... ==== //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt.c#8 (text+ko) ==== @@ -520,7 +520,7 @@ handled += pers->event(mpt, req, msg); if (handled == 0 && mpt->mpt_pers_mask == 0) { - mpt_lprt(mpt, MPT_PRT_INFO, + mpt_lprt(mpt, MPT_PRT_INFO, "No Handlers For Any Event Notify Frames. " "Event %#x (ACK %sequired).\n", msg->Event, msg->AckRequired? "r" : "not r"); @@ -668,7 +668,9 @@ int ntrips = 0; mpt = (struct mpt_softc *)arg; +#ifdef DOODAD mpt_lprt(mpt, MPT_PRT_DEBUG2, "enter mpt_intr\n"); +#endif while ((reply_desc = mpt_pop_reply_queue(mpt)) != MPT_REPLY_EMPTY) { request_t *req; MSG_DEFAULT_REPLY *reply_frame; @@ -784,7 +786,9 @@ break; } } +#ifdef DOODAD mpt_lprt(mpt, MPT_PRT_DEBUG2, "exit mpt_intr\n"); +#endif } /******************************* Error Recovery *******************************/ @@ -1984,6 +1988,7 @@ } } } +mpt_prt(mpt, "attach was successful!\n"); return (0); } @@ -2431,7 +2436,7 @@ pfp.MaxDevices); mpt->mpt_port_type = pfp.PortType; - mpt->mpt_proto_flags = pfp.ProtocolFlags; + mpt->mpt_proto_flags = le16toh(pfp.ProtocolFlags); if (pfp.PortType != MPI_PORTFACTS_PORTTYPE_SCSI && pfp.PortType != MPI_PORTFACTS_PORTTYPE_SAS && pfp.PortType != MPI_PORTFACTS_PORTTYPE_FC) { @@ -2462,10 +2467,10 @@ */ mpt->role = MPT_ROLE_NONE; - if (pfp.ProtocolFlags & MPI_PORTFACTS_PROTOCOL_INITIATOR) { + if (mpt->mpt_proto_flags & MPI_PORTFACTS_PROTOCOL_INITIATOR) { mpt->role |= MPT_ROLE_INITIATOR; } - if (pfp.ProtocolFlags & MPI_PORTFACTS_PROTOCOL_TARGET) { + if (mpt->mpt_proto_flags & MPI_PORTFACTS_PROTOCOL_TARGET) { mpt->role |= MPT_ROLE_TARGET; } if (mpt->role == MPT_ROLE_NONE) { ==== //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt.h#9 (text+ko) ==== ==== //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt_cam.c#4 (text+ko) ==== @@ -188,6 +188,7 @@ if ((mpt->mpt_proto_flags & MPI_PORTFACTS_PROTOCOL_INITIATOR) != 0 || (mpt->mpt_proto_flags & MPI_PORTFACTS_PROTOCOL_TARGET) != 0 || (mpt->ioc_page2 != NULL && mpt->ioc_page2->MaxPhysDisks != 0)) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); return (0); } return (ENODEV); @@ -201,10 +202,12 @@ int maxq; int error; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); TAILQ_INIT(&mpt->request_timeout_list); maxq = (mpt->mpt_global_credits < MPT_MAX_REQUESTS(mpt))? mpt->mpt_global_credits : MPT_MAX_REQUESTS(mpt); +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); handler.reply_handler = mpt_scsi_reply_handler; error = mpt_register_handler(mpt, MPT_HANDLER_REPLY, handler, &scsi_io_handler_id); @@ -212,6 +215,7 @@ goto cleanup0; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); handler.reply_handler = mpt_scsi_tmf_reply_handler; error = mpt_register_handler(mpt, MPT_HANDLER_REPLY, handler, &scsi_tmf_handler_id); @@ -219,6 +223,7 @@ goto cleanup0; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * If we're fibre channel and could support target mode, we register * an ELS reply handler and give it resources. @@ -237,6 +242,7 @@ maxq -= mpt->els_cmds_allocated; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * If we support target mode, we register a reply handler for it, * but don't add resources until we actually enable target mode. @@ -250,6 +256,7 @@ } } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * We keep one request reserved for timeout TMF requests. */ @@ -260,6 +267,7 @@ goto cleanup0; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * Mark the request as free even though not on the free list. * There is only one TMF request allowed to be outstanding at @@ -275,6 +283,7 @@ goto cleanup0; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * The rest of this is CAM foo, for which we need to drop our lock */ @@ -290,6 +299,7 @@ goto cleanup; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * Construct our SIM entry. */ @@ -302,6 +312,7 @@ goto cleanup; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * Register exactly this bus. */ @@ -311,6 +322,7 @@ goto cleanup; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (xpt_create_path(&mpt->path, NULL, cam_sim_path(mpt->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mpt_prt(mpt, "Unable to allocate Path!\n"); @@ -318,15 +330,18 @@ goto cleanup; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * Only register a second bus for RAID physical * devices if the controller supports RAID. */ if (mpt->ioc_page2 == NULL || mpt->ioc_page2->MaxPhysDisks == 0) { CAMLOCK_2_MPTLOCK(mpt); +mpt_prt(mpt, "%s(%d): success\n",__FUNCTION__,__LINE__); return (0); } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * Create a "bus" to export all hidden disks to CAM. */ @@ -338,6 +353,7 @@ goto cleanup; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * Register this bus. */ @@ -347,6 +363,7 @@ goto cleanup; } +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (xpt_create_path(&mpt->phydisk_path, NULL, cam_sim_path(mpt->phydisk_sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { @@ -355,6 +372,7 @@ goto cleanup; } CAMLOCK_2_MPTLOCK(mpt); +mpt_prt(mpt, "%s(%d): success\n",__FUNCTION__,__LINE__); return (0); cleanup: @@ -436,6 +454,7 @@ static int mpt_set_initial_config_fc(struct mpt_softc *mpt) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); #if 0 CONFIG_PAGE_FC_PORT_1 fc; U32 fl; @@ -488,6 +507,7 @@ static int mpt_read_config_info_sas(struct mpt_softc *mpt) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); return (0); } @@ -497,6 +517,7 @@ static int mpt_set_initial_config_sas(struct mpt_softc *mpt) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); return (0); } @@ -508,6 +529,7 @@ { int rv, i; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); rv = mpt_read_cfg_header(mpt, MPI_CONFIG_PAGETYPE_SCSI_PORT, 0, 0, &mpt->mpt_port_page0.Header, FALSE, 5000); if (rv) { @@ -654,6 +676,7 @@ int i, j, pp1val = ((1 << mpt->mpt_ini_id) << 16) | mpt->mpt_ini_id; int error; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); mpt->mpt_disc_enable = 0xff; mpt->mpt_tag_enable = 0; @@ -711,6 +734,7 @@ int mpt_cam_enable(struct mpt_softc *mpt) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (mpt->is_fc) { if (mpt_read_config_info_fc(mpt)) { return (EIO); @@ -733,6 +757,7 @@ return (EIO); } } +mpt_prt(mpt, "%s(%d): succeeded\n",__FUNCTION__,__LINE__); return (0); } @@ -741,6 +766,7 @@ { mpt_handler_t handler; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); mpt_terminate_recovery_thread(mpt); handler.reply_handler = mpt_scsi_reply_handler; @@ -1855,6 +1881,7 @@ uint16_t status; uint8_t response; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); error = mpt_scsi_send_tmf(mpt, (tgt != CAM_TARGET_WILDCARD || lun != CAM_LUN_WILDCARD) ? MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET : @@ -1914,6 +1941,7 @@ request_t *req; PTR_MSG_FC_PRIMITIVE_SEND_REQUEST fc; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); req = mpt_get_request(mpt, FALSE); if (req == NULL) { return (ENOMEM); @@ -1938,7 +1966,8 @@ mpt_cam_event(struct mpt_softc *mpt, request_t *req, MSG_EVENT_NOTIFY_REPLY *msg) { - switch(msg->Event & 0xFF) { +printf("%s(%d): msg->Event 0x%x\n",__FUNCTION__,__LINE__,le32toh(msg->Event)); + switch(le32toh(msg->Event) & 0xFF) { case MPI_EVENT_UNIT_ATTENTION: mpt_prt(mpt, "Bus: 0x%02x TargetID: 0x%02x\n", (msg->Data[0] >> 8) & 0xff, msg->Data[0] & 0xff); @@ -2054,7 +2083,7 @@ break; default: mpt_lprt(mpt, MPT_PRT_WARN, "mpt_cam_event: 0x%x\n", - msg->Event & 0xFF); + le32toh(msg->Event) & 0xFF); return (0); } return (1); @@ -2166,6 +2195,7 @@ MSG_SCSI_TASK_MGMT_REPLY *tmf_reply; KASSERT(req == mpt->tmf_req, ("TMF Reply not using mpt->tmf_req")); +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); #ifdef INVARIANTS mpt_req_not_spcl(mpt, req, "mpt_scsi_tmf_reply_handler", __LINE__); #endif @@ -2212,6 +2242,7 @@ PTR_MSG_LINK_SERVICE_RSP_REQUEST rsp; uint32_t fl; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * We are going to reuse the ELS request to send this response back. */ @@ -2281,6 +2312,7 @@ int ioindex; int do_refresh = TRUE; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); #ifdef INVARIANTS KASSERT(mpt_req_on_free_list(mpt, req) == 0, ("fc_els_reply_handler: req %p:%u for function %x on freelist!", @@ -2520,6 +2552,7 @@ static void mpt_cam_ioc_reset(struct mpt_softc *mpt, int type) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * The pending list is already run down by * the generic handler. Perform the same @@ -3171,6 +3204,7 @@ uint8_t dval, pval, oval; int rv; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (xpt_path_sim(cts->ccb_h.path) == mpt->phydisk_sim) { if (mpt_map_physdisk(mpt, (union ccb *)cts, &tgt)) { return (-1); @@ -3282,6 +3316,7 @@ { PTR_CONFIG_PAGE_SCSI_DEVICE_1 ptr; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); ptr = &mpt->mpt_dev_page1[tgt]; if (onoff) { ptr->RequestedParameters |= MPI_SCSIDEVPAGE1_RP_WIDE; @@ -3295,6 +3330,7 @@ { PTR_CONFIG_PAGE_SCSI_DEVICE_1 ptr; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); ptr = &mpt->mpt_dev_page1[tgt]; ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK; ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_MAX_SYNC_OFFSET_MASK; @@ -3363,6 +3399,7 @@ { int error; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); error = mpt_kthread_create(mpt_recovery_thread, mpt, &mpt->recovery_thread, /*flags*/0, /*altstack*/0, "mpt_recovery%d", mpt->unit); @@ -3372,6 +3409,7 @@ static void mpt_terminate_recovery_thread(struct mpt_softc *mpt) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (mpt->recovery_thread == NULL) { return; } @@ -3421,6 +3459,7 @@ MSG_SCSI_TASK_MGMT *tmf_req; int error; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * Wait for any current TMF request to complete. * We're only allowed to issue one TMF at a time. @@ -3489,6 +3528,7 @@ union ccb *ccb; int error; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (TAILQ_EMPTY(&mpt->request_timeout_list) != 0) { /* * No work to do- leave. @@ -3618,6 +3658,7 @@ bus_addr_t paddr; uint32_t fl; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); paddr = req->req_pbuf; paddr += MPT_RQSL(mpt); @@ -3666,6 +3707,7 @@ PTR_CMD_BUFFER_DESCRIPTOR cb; bus_addr_t paddr; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); paddr = req->req_pbuf; paddr += MPT_RQSL(mpt); memset(req->req_vbuf, 0, MPT_REQUEST_AREA); @@ -3689,6 +3731,7 @@ { int i; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (mpt->is_fc == 0) { return (TRUE); } @@ -3736,6 +3779,7 @@ { int i, max; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (mpt->tgt_cmd_ptrs) { return (TRUE); } @@ -3797,6 +3841,7 @@ static int mpt_enable_lun(struct mpt_softc *mpt, target_id_t tgt, lun_id_t lun) { +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (tgt == CAM_TARGET_WILDCARD && lun == CAM_LUN_WILDCARD) { mpt->twildcard = 1; } else if (lun >= MPT_MAX_LUNS) { @@ -3829,6 +3874,7 @@ mpt_disable_lun(struct mpt_softc *mpt, target_id_t tgt, lun_id_t lun) { int i; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (tgt == CAM_TARGET_WILDCARD && lun == CAM_LUN_WILDCARD) { mpt->twildcard = 0; } else if (lun >= MPT_MAX_LUNS) { @@ -3867,6 +3913,7 @@ request_t *cmd_req = MPT_TAG_2_REQ(mpt, csio->tag_id); mpt_tgt_state_t *tgt = MPT_TGT_STATE(mpt, cmd_req); +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); switch (tgt->state) { case TGT_STATE_IN_CAM: break; @@ -4107,6 +4154,7 @@ request_t *req; PTR_MSG_TARGET_MODE_ABORT abtp; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); req = mpt_get_request(mpt, FALSE); if (req == NULL) { return (-1); @@ -4151,6 +4199,7 @@ uint32_t fl; int resplen = 0; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); cmd_vbuf = cmd_req->req_vbuf; cmd_vbuf += MPT_RQSL(mpt); tgt = MPT_TGT_STATE(mpt, cmd_req); @@ -4299,6 +4348,7 @@ struct ccb_immed_notify *inot; mpt_tgt_state_t *tgt; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); tgt = MPT_TGT_STATE(mpt, req); inot = (struct ccb_immed_notify *) STAILQ_FIRST(&trtp->inots); if (inot == NULL) { @@ -4361,6 +4411,7 @@ mpt_task_mgmt_t fct = MPT_NIL_TMT_VALUE; uint8_t *cdbp; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); /* * First, DMA sync the received command- which is in the *request* * phys area. @@ -4585,6 +4636,7 @@ union ccb *ccb; U16 status; +mpt_prt(mpt, "%s(%d):\n",__FUNCTION__,__LINE__); if (reply_frame == NULL) { /* * Figure out what the state of the command is. ==== //depot/projects/kmacy_sun4v_stable/src/sys/dev/mpt/mpt_pci.c#6 (text+ko) ==== @@ -243,14 +243,28 @@ desc = "LSILogic 1030 Ultra4 Adapter"; break; case PCI_PRODUCT_LSI_SAS1064: + desc = "LSILogic SAS1064 Adapter"; + break; case PCI_PRODUCT_LSI_SAS1064A: + desc = "LSILogic SAS1064A Adapter"; + break; case PCI_PRODUCT_LSI_SAS1064E: + desc = "LSILogic SAS1064E Adapter"; + break; case PCI_PRODUCT_LSI_SAS1066: + desc = "LSILogic SAS1066 Adapter"; + break; case PCI_PRODUCT_LSI_SAS1066E: + desc = "LSILogic SAS1066E Adapter"; + break; case PCI_PRODUCT_LSI_SAS1068: + desc = "LSILogic SAS1068 Adapter"; + break; case PCI_PRODUCT_LSI_SAS1068E: + desc = "LSILogic SAS1068E Adapter"; + break; case PCI_PRODUCT_LSI_SAS1078: - desc = "LSILogic SAS Adapter"; + desc = "LSILogic SAS1078 Adapter"; break; default: return (ENXIO);