mpt2sas-19.00.00.00_rhel6.5驱动笔记系列1-函数初始化

再次说明,下面有加入一些网上达人的观点和自己的想法,作成笔记供自己记录


1.Fusion MPT简介:
   Fusion-MPT为LSI Logic开发,可以实现scsi和Fiber Channel的解决方案。这种架构具有高IO特性,降低产品的验证时间和推广时间。
       Fusion-MPT在硬件层上构建独有的Fimrware层,不同的Firmware为上层SCSI 和 FC驱动层提供支持,Firmware将驱动与硬件隔离,对上层程序提供统一的MPI(Message Passing Interface)接口,使同一驱动可以在不同的硬件上起作用。
       驱动对上层程序提供函数接口,上层通过调用驱动,经过MPI访问固件。MPI提供了一个消息传输框架,定义了主机和LSi Fusion-MPT芯片通信接口。


2.驱动分析:
    驱动mpt2sas-19.00.00.00_rhel6.5 C文件包括,mpt2sas_base.c ,mpt2sas_config.c ,mpt2sas_ctl.c ,mpt2sas_scsih.c ,mpt2sas_transport.c,mpt2sas_trigger_diag.c 文件
 2.1模块初始化
     模块初始化mpt2sas_scsih.c 中,加载驱动通过module_init(_scsih_init)调用_scsih_init函数。_scsih_init函数为main entry point for this driver.如果返回0则表示驱动加载正常,其它表示错误。
     在_scsih_init函数中通过printk(KERN_INFO "%s version %s loaded\n", MPT2SAS_DRIVER_NAME,MPT2SAS_DRIVER_VERSION); 将驱动的NAME和版本号打印出来。
      然后继续做了以下工作:


       2.1 .1设置scsi_transport_template模版
      mpt2sas_transport_template = sas_attach_transport(&mpt2sas_transport_functions);
       调用sas_attach_transport完成模板的初始化。
      调用raid_class_attach完成mpt2sas_raid_template
      
      
     2.1.2 初始化部分函数
     调用mpt2sas_base_initialize_callback_handler初始化mpt_callbacks[MPT_MAX_CALLBACKS]成员为NULL
     反复调用mpt2sas_base_register_callback_handler初始化部分函数,并将函数指针存在mpt_callbacks[]数组中。
     
   2.1.3 注册设备
  调用 mpt2sas_ctl_init完成mpt2sas作为一个miscellaneous注册,在/dev下生成对应的设备
  调用pci_register_driver将mpt2sas作为一个PCIE设备注册
         
         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解释脚本:#!/bin/bash #version: 0.1.0 20230510 totalstarttime=$(date +%s) # 计算间隔时间 pkg_name=`pwd |sed 's/\// /g'| awk '{print$NF}'` SWITCH_FW=${pkg_name::-8}"SIGN.fw" cd `pwd` G4XDIAG=./g4Xdiagnostics.x86_64 result_log=SR6295A_793_PCIeFW_UPDATE_`date '+%Y%m%d%H%M%S'`.log mpt_cnt=`lsmod | grep -i mpt3sas | wc -l` if [ $mpt_cnt != 0 ];then rmmod mpt3sas fi mpt3sas_driver=`ls | grep "mpt3sas-"` tar -zxvf $mpt3sas_driver cd mpt3sas/ ./compile.sh ./load.sh cd ../ echo -e "\n Switch Firmware Is Upgrading!!! \n" CNT=`$G4XDIAG -i 1 list | grep "MPI" | wc -l` echo "FW Image Is:" >> $result_log echo $SWITCH_FW | grep "SR6295A_793" >> $result_log if [ $? != 0 ]; then echo "PCIe FW Name Is Not Matched!" >> $result_log echo -e "\n FAIL: PCIe FW Name Is Not Matched! \n" exit 1 else if [ $CNT != 4 ];then echo "Lost switch!" >> $result_log $G4XDIAG -i 1 list >> $result_log echo -e "\n FAIL: Lost switch \n" exit 1 fi fi #Check platform for i in $(seq 1 1 $CNT) do hq_cmd=`$G4XDIAG -i $i cli showloc | grep "Current Switch Location" | wc -l` if [ $hq_cmd == 0 ];then echo -e "\n Platform Is Not Matched! \n" >> $result_log echo -e "\n FAIL:Platform Is Not Matched!\n" exit 1 fi done #FW upgrade for i in $(seq 1 1 $CNT) do $G4XDIAG -i $i cli showloc >> $result_log $G4XDIAG -i $i dl -f $SWITCH_FW -s >> $result_log ret=`cat $result_log | tail -n 5 | grep -i "successfully" | wc -l` if [ $ret == 1 ];then echo -e "\n Switch FW Download SUCCESS!!! \n" >> $result_log else echo -e "\n Switch FW Download FAIL!!! \n" >> $result_log echo -e "\n Switch FW Download FAIL!!! \n" exit 1 fi done echo -e "\n Upgrade PASS!!! Need restart the system to make the fresh image active! \n" totalendtime=$(date +%s) echo -e "\n Total FW update finished! Total cost time : $(( $totalendtime - $totalstarttime )) s\n" >> $result_log sleep 5 exit 0
最新发布
07-11

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值