⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpt-fusion-downgrade-to-3_02_73-rhel4.patch

📁 lustre 1.6.5 source code
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
-		goto cim_sata_signature_exit;-	}--	sasDevicePg1_data_sz = hdr.ExtPageLength * 4;-	rc = -ENOMEM;--	sasDevicePg1 = (SasDevicePage1_t *) pci_alloc_consistent-	    (ioc->pcidev, sasDevicePg1_data_sz, &sasDevicePg1_dma);--	if (! sasDevicePg1) {-		dcsmisasprintk((": pci_alloc_consistent: FAILED\n"));-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_sata_signature_exit;-	}--	memset((u8 *)sasDevicePg1, 0, sasDevicePg1_data_sz);-	cfg.physAddr = sasDevicePg1_dma;-	cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;--	if ((rc = mpt_config(ioc, &cfg)) != 0) {-		dcsmisasprintk((": FAILED: MPI_SASDEVICE1_PAGEVERSION: PAGE\n"));-		dcsmisasprintk((": rc=%x\n",rc));-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_sata_signature_exit;-	}--/* EDM : dump Device Page 1 data*/-	dcsmisasprintk(("---- SAS DEVICE PAGE 1 ---------\n"));-	dcsmisasprintk(("Handle=0x%x\n",sasDevicePg1->DevHandle));-	dcsmisasprintk(("SAS Address="));-	for(jj=0;jj<8;jj++)-		dcsmisasprintk(("%02x ",-		((u8 *)&sasDevicePg1->SASAddress)[jj]));-	dcsmisasprintk(("\n"));-	dcsmisasprintk(("Target ID=0x%x\n",sasDevicePg1->TargetID));-	dcsmisasprintk(("Bus=0x%x\n",sasDevicePg1->Bus));-	dcsmisasprintk(("Initial Reg Device FIS="));-	for(jj=0;jj<20;jj++)-		dcsmisasprintk(("%02x ",-		((u8 *)&sasDevicePg1->InitialRegDeviceFIS)[jj]));-	dcsmisasprintk(("\n\n"));-/* EDM : debug data */--	memcpy(karg.Signature.bSignatureFIS,-		sasDevicePg1->InitialRegDeviceFIS,20);-- cim_sata_signature_exit:--	if (sasPhyPg0)-		pci_free_consistent(ioc->pcidev, sasPhyPg0_data_sz,-		    (u8 *) sasPhyPg0, sasPhyPg0_dma);--	if (sasDevicePg1)-		pci_free_consistent(ioc->pcidev, sasDevicePg1_data_sz,-		    (u8 *) sasDevicePg1, sasDevicePg1_dma);--	/* Copy the data from kernel memory to user memory-	 */-	if (copy_to_user((char *)arg, &karg,-	    sizeof(CSMI_SAS_SATA_SIGNATURE_BUFFER))) {-		printk(KERN_ERR "%s@%d::%s() - "-		    "Unable to write out csmi_sas_sata_signature @ %p\n",-		    __FILE__, __LINE__, __FUNCTION__, uarg);-		return -EFAULT;-	}--	dcsmisasprintk(("%s exit.\n",__FUNCTION__));-	return 0;-}--/**- * Prototype Routine for the CSMI Sas Get SCSI Address command.- *- * Outputs:	None.- * Return:	0 if successful- *		-EFAULT if data unavailable- *		-ENODEV if no such device/adapter- **/-static int-csmisas_get_device_address(unsigned long arg)-{-	CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER __user *uarg = (void __user *) arg;-	CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER	 karg;-	MPT_ADAPTER		*ioc = NULL;-	int			iocnum;-	struct sas_device_info	*sas_info;-	u64			sas_address;--	dcsmisasprintk(("%s enter.\n",__FUNCTION__));--	if (copy_from_user(&karg, uarg,-	    sizeof(CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER))) {-		printk(KERN_ERR "%s@%d::%s() - "-	   "Unable to read in csmi_sas_get_device_address_buffer struct @ %p\n",-		    __FILE__, __LINE__, __FUNCTION__, uarg);-		return -EFAULT;-	}--	if (((iocnum = mpt_verify_adapter(karg.IoctlHeader.IOControllerNumber,-	    &ioc)) < 0) || (ioc == NULL)) {-		dcsmisasprintk((KERN_ERR-	    "%s::%s() @%d - ioc%d not found!\n",-		    __FILE__, __FUNCTION__, __LINE__, iocnum));-		return -ENODEV;-	}--	if (!csmisas_is_this_sas_cntr(ioc)) {-		dcsmisasprintk((KERN_ERR-		    "%s::%s() @%d - ioc%d not SAS controller!\n",-		    __FILE__, __FUNCTION__, __LINE__, iocnum));-		return -ENODEV;-	}--	karg.IoctlHeader.ReturnCode = CSMI_SAS_NO_DEVICE_ADDRESS;-	memset(karg.bSASAddress, 0, sizeof(u64));-	memset(karg.bSASLun, 0, sizeof(karg.bSASLun));--	/* Search the list for the matching SAS address. */-	sas_info = csmisas_get_device_component_by_os(ioc, karg.bPathId,-	    karg.bTargetId);-	if (!sas_info || sas_info->is_cached || sas_info->is_logical_volume)-		goto csmisas_get_device_address_exit;--	sas_address = reverse_byte_order64(sas_info->sas_address);-	memcpy(karg.bSASAddress, &sas_address, sizeof(u64));-	karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_SUCCESS;-- csmisas_get_device_address_exit:--	/* Copy the data from kernel memory to user memory-	 */-	if (copy_to_user((char *)arg, &karg,-	    sizeof(CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER))) {-		printk(KERN_ERR "%s@%d::%s() - "-		"Unable to write out csmi_sas_get_device_address_buffer @ %p\n",-		    __FILE__, __LINE__, __FUNCTION__, uarg);-		return -EFAULT;-	}--	dcsmisasprintk(("%s exit.\n",__FUNCTION__));-	return 0;-}--/**- * Prototype Routine for the CSMI Sas Get Link Errors command.- *- * Outputs:	None.- * Return:	0 if successful- *		-EFAULT if data unavailable- *		-ENODEV if no such device/adapter- **/-static int-csmisas_get_link_errors(unsigned long arg)-{-	CSMI_SAS_LINK_ERRORS_BUFFER __user *uarg = (void __user *) arg;-	CSMI_SAS_LINK_ERRORS_BUFFER	 karg;-	MPT_ADAPTER			*ioc = NULL;-	MPT_FRAME_HDR			*mf = NULL;-	MPIHeader_t			*mpi_hdr;-	int				iocnum;-	int				rc;-	ConfigExtendedPageHeader_t	hdr;-	CONFIGPARMS			cfg;-	SasPhyPage1_t			*sasPhyPage1;-	dma_addr_t			sasPhyPage1_dma;-	int				sasPhyPage1_data_sz;-	SasIoUnitControlRequest_t	*sasIoUnitCntrReq;-	SasIoUnitControlReply_t		*sasIoUnitCntrReply;-	u8				phyId;-	u16				ioc_status;--	dcsmisasprintk(("%s enter.\n",__FUNCTION__));-	sasPhyPage1=NULL;-	sasPhyPage1_data_sz=0;--	if (copy_from_user(&karg, uarg,-	     sizeof(CSMI_SAS_LINK_ERRORS_BUFFER))) {-		printk(KERN_ERR "%s@%d::%s() - "-		    "Unable to read in csmisas_get_link_errors struct @ %p\n",-		    __FILE__, __LINE__, __FUNCTION__, uarg);-		return -EFAULT;-	}--	if (((iocnum = mpt_verify_adapter(karg.IoctlHeader.IOControllerNumber,-	    &ioc)) < 0) || (ioc == NULL)) {-		dcsmisasprintk((KERN_ERR-	    "%s::%s() @%d - ioc%d not found!\n",-		     __FILE__, __FUNCTION__, __LINE__, iocnum));-		return -ENODEV;-	}--	if (!csmisas_is_this_sas_cntr(ioc)) {-		dcsmisasprintk((KERN_ERR-		    "%s::%s() @%d - ioc%d not SAS controller!\n",-		    __FILE__, __FUNCTION__, __LINE__, iocnum));-		return -ENODEV;-	}--	phyId = karg.Information.bPhyIdentifier;-	if (phyId >= ioc->num_ports) {-		karg.IoctlHeader.ReturnCode = CSMI_SAS_PHY_DOES_NOT_EXIST;-		dcsmisasprintk((": phyId >= ioc->num_ports\n"));-		goto cim_get_link_errors_exit;-	}--	/* Default to success.*/-	karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_SUCCESS;--	/* Issue a config request to get the devHandle of the attached device-	 */--	/* Issue a config request to get phy information. */-	hdr.PageVersion = MPI_SASPHY1_PAGEVERSION;-	hdr.ExtPageLength = 0;-	hdr.PageNumber = 1 /* page number 1*/;-	hdr.Reserved1 = 0;-	hdr.Reserved2 = 0;-	hdr.PageType = MPI_CONFIG_PAGETYPE_EXTENDED;-	hdr.ExtPageType = MPI_CONFIG_EXTPAGETYPE_SAS_PHY;--	cfg.cfghdr.ehdr = &hdr;-	cfg.physAddr = -1;-	cfg.pageAddr = phyId;-	cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;-	cfg.dir = 0;	/* read */-	cfg.timeout = MPT_IOCTL_DEFAULT_TIMEOUT;--	if ((rc = mpt_config(ioc, &cfg)) != 0) {-		/* Don't check if this failed.  Already in a-		 * failure case.-		 */-		dcsmisasprintk((": FAILED: MPI_SASPHY1_PAGEVERSION: HEADER\n"));-		dcsmisasprintk((": rc=%x\n",rc));-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_get_link_errors_exit;-	}--	if (hdr.ExtPageLength == 0) {-		/* Don't check if this failed.  Already in a-		 * failure case.-		 */-		dcsmisasprintk((": hdr.ExtPageLength == 0\n"));-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_get_link_errors_exit;-	}---	sasPhyPage1_data_sz = hdr.ExtPageLength * 4;-	rc = -ENOMEM;--	sasPhyPage1 = (SasPhyPage1_t *) pci_alloc_consistent(ioc->pcidev,-	    sasPhyPage1_data_sz, &sasPhyPage1_dma);--	if (! sasPhyPage1) {-		dcsmisasprintk((": pci_alloc_consistent: FAILED\n"));-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_get_link_errors_exit;-	}--	memset((u8 *)sasPhyPage1, 0, sasPhyPage1_data_sz);-	cfg.physAddr = sasPhyPage1_dma;-	cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;--	if ((rc = mpt_config(ioc, &cfg)) != 0) {-		/* Don't check if this failed.  Already in a-		 * failure case.-		 */-		dcsmisasprintk((": FAILED: MPI_SASPHY1_PAGEVERSION: PAGE\n"));-		dcsmisasprintk((": rc=%x\n",rc));-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_get_link_errors_exit;-	}--/* EDM : dump PHY Page 1 data*/-	dcsmisasprintk(("---- SAS PHY PAGE 1 ------------\n"));-	dcsmisasprintk(("Invalid Dword Count=0x%x\n",-	    sasPhyPage1->InvalidDwordCount));-	dcsmisasprintk(("Running Disparity Error Count=0x%x\n",-	    sasPhyPage1->RunningDisparityErrorCount));-	dcsmisasprintk(("Loss Dword Synch Count=0x%x\n",-	    sasPhyPage1->LossDwordSynchCount));-	dcsmisasprintk(("PHY Reset Problem Count=0x%x\n",-	    sasPhyPage1->PhyResetProblemCount));-	dcsmisasprintk(("\n\n"));-/* EDM : debug data */--	karg.Information.uInvalidDwordCount =-		le32_to_cpu(sasPhyPage1->InvalidDwordCount);-	karg.Information.uRunningDisparityErrorCount =-		le32_to_cpu(sasPhyPage1->RunningDisparityErrorCount);-	karg.Information.uLossOfDwordSyncCount =-		le32_to_cpu(sasPhyPage1->LossDwordSynchCount);-	karg.Information.uPhyResetProblemCount =-		le32_to_cpu(sasPhyPage1->PhyResetProblemCount);--	if (karg.Information.bResetCounts ==-	    CSMI_SAS_LINK_ERROR_DONT_RESET_COUNTS ) {-		goto cim_get_link_errors_exit;-	}--	/* Clear Error log-	 *-	 * Issue IOUNIT Control Reqeust Message-	 */--	/* Get a MF for this command.-	 */-	if ((mf = mpt_get_msg_frame(mptctl_id, ioc)) == NULL) {-		dcsmisasprintk((": no msg frames!\n"));-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_get_link_errors_exit;-        }--	mpi_hdr = (MPIHeader_t *) mf;-	sasIoUnitCntrReq = (SasIoUnitControlRequest_t *)mf;-	memset(sasIoUnitCntrReq,0,sizeof(SasIoUnitControlRequest_t));-	sasIoUnitCntrReq->Function = MPI_FUNCTION_SAS_IO_UNIT_CONTROL;-	sasIoUnitCntrReq->MsgContext = mpi_hdr->MsgContext;-	sasIoUnitCntrReq->PhyNum = phyId;-	sasIoUnitCntrReq->Operation = MPI_SAS_OP_PHY_CLEAR_ERROR_LOG;--	if (csmisas_send_command_wait(ioc, mf, karg.IoctlHeader.Timeout) != 0) {-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-		goto cim_get_link_errors_exit;-	}--	/* process the completed Reply Message Frame */-	if (ioc->ioctl->status & MPT_IOCTL_STATUS_RF_VALID) {--		sasIoUnitCntrReply =-		    (SasIoUnitControlReply_t *)ioc->ioctl->ReplyFrame;-		ioc_status = le16_to_cpu(sasIoUnitCntrReply->IOCStatus)-		    & MPI_IOCSTATUS_MASK;--		if (ioc_status != MPI_IOCSTATUS_SUCCESS) {-			dcsmisasprintk((": SAS IO Unit Control: "));-			dcsmisasprintk(("IOCStatus=0x%X IOCLogInfo=0x%X\n",-			    sasIoUnitCntrReply->IOCStatus,-			    sasIoUnitCntrReply->IOCLogInfo));-		}-	}-- cim_get_link_errors_exit:--	if (sasPhyPage1)-		pci_free_consistent(ioc->pcidev, sasPhyPage1_data_sz,-		    (u8 *) sasPhyPage1, sasPhyPage1_dma);--	/* Copy the data from kernel memory to user memory-	 */-	if (copy_to_user((char *)arg, &karg,-	    sizeof(CSMI_SAS_LINK_ERRORS_BUFFER))) {-		printk(KERN_ERR "%s@%d::%s() - "-		    "Unable to write out csmisas_get_link_errors @ %p\n",-		    __FILE__, __LINE__, __FUNCTION__, uarg);-		return -EFAULT;-	}--	dcsmisasprintk(("%s exit.\n",__FUNCTION__));-	return 0;--}--/**- * Prototype Routine for the CSMI SAS SMP Passthru command.- *- * Outputs:	None.- * Return:	0 if successful- *		-EFAULT if data unavailable- *		-ENODEV if no such device/adapter- **/-static int-csmisas_smp_passthru(unsigned long arg)-{-	CSMI_SAS_SMP_PASSTHRU_BUFFER __user *uarg = (void __user *) arg;-	MPT_ADAPTER			*ioc;-	CSMI_SAS_SMP_PASSTHRU_BUFFER	 karg;-	pSmpPassthroughRequest_t	smpReq;-	pSmpPassthroughReply_t		smpReply;-	MPT_FRAME_HDR			*mf = NULL;-	MPIHeader_t			*mpi_hdr;-	char				*psge;-	int				iocnum, flagsLength;-	void *				request_data;-	dma_addr_t			request_data_dma;-	u32				request_data_sz;-	void *				response_data;-	dma_addr_t			response_data_dma;-	u32				response_data_sz;-	u16				ioc_status;-	u64				sas_address;--	dcsmisasprintk(("%s enter.\n",__FUNCTION__));--	if (copy_from_user(&karg, uarg, sizeof(CSMI_SAS_SMP_PASSTHRU_BUFFER))) {-		printk(KERN_ERR "%s@%d::%s() - "-		    "Unable to read in csmi_sas_smp_passthru struct @ %p\n",-		    __FILE__, __LINE__, __FUNCTION__, uarg);-		return -EFAULT;-	}--	request_data = NULL;-	response_data = NULL;-	response_data_sz = sizeof(CSMI_SAS_SMP_RESPONSE);-	request_data_sz  = karg.Parameters.uRequestLength;--	if (((iocnum = mpt_verify_adapter(karg.IoctlHeader.IOControllerNumber,-	    &ioc)) < 0) || (ioc == NULL)) {-		dcsmisasprintk((KERN_ERR-		"%s::%s() @%d - ioc%d not found!\n",-		    __FILE__, __FUNCTION__, __LINE__, iocnum));-		return -ENODEV;-	}--	if (!csmisas_is_this_sas_cntr(ioc)) {-		dcsmisasprintk((KERN_ERR-		    "%s::%s() @%d - ioc%d not SAS controller!\n",-		    __FILE__, __FUNCTION__, __LINE__, iocnum));-		return -ENODEV;-	}--	/* Make sure the adapter is not being reset. */-	if (!ioc->ioctl) {-		printk(KERN_ERR "%s@%d::%s - "-		    "No memory available during driver init.\n",-		    __FILE__, __LINE__,__FUNCTION__);-		return -ENOMEM;-	} else if (ioc->ioctl->status & MPT_IOCTL_STATUS_DID_IOCRESET) {-		printk(KERN_ERR "%s@%d::%s - "-		    "Busy with IOC Reset \n",-		    __FILE__, __LINE__,__FUNCTION__);-		return -EBUSY;-	}--	/* Default to success.*/-	karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_SUCCESS;--	/* Do some error checking on the request. */-	if (karg.Parameters.bPortIdentifier == CSMI_SAS_IGNORE_PORT) {-		karg.IoctlHeader.ReturnCode = CSMI_SAS_SELECT_PHY_OR_PORT;-		goto cim_smp_passthru_exit;-	}--	if ((request_data_sz > 0xFFFF) || (!request_data_sz)) {-		karg.IoctlHeader.ReturnCode = CSMI_SAS_STATUS_FAILED;-

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -