sas控制器驱动结构粗探--基于3.10.0-693.25.4

本文介绍了SAS控制器驱动mpt3sas的基础知识,特别是其在Fusion-MPT架构中的角色。mpt3sas是基于Fusion-MPT固件的,提供MPI接口,使得驱动能适配不同硬件。驱动注册过程涉及PCI设备的探测与probe函数。在SCSI层次,驱动创建Scsi host、target和device,连接到系统中。宕机问题源于ioctl处理时的资源释放,目前问题仍在分析中。
摘要由CSDN通过智能技术生成

部门测试环境最近出了个内核core,是宕机在了mpt3sas这个模块,以前没见过这个模块,怎么查这个core呢?以前没见过,现在见见就好了;)。这个模块是sas控制器的驱动,在之前的IO栈研究中,只了解到过通用块层,scsi往下的就没接触了,也正好趁此解这个bug的机会了解下IO栈scsi以下是什么。

从config描述可以看到,mpt3sas是SAS控制器驱动,特殊点在于它是基于Fusion-MPT 架构的。

config SCSI_MPT3SAS
	tristate "LSI MPT Fusion SAS 3.0 Device Driver"
	depends on PCI && SCSI
	select SCSI_SAS_ATTRS
	select RAID_ATTRS
	---help---
	This driver supports PCI-Express SAS 12Gb/s Host Adapters.

Fusion-MPT是什么呢?先看网络上的一段描述

Fusion-MPT 技术由 LSI Logic 开发,旨在为客户提供更为容易的实现 SCSI 和 Fibre Channel 的解决方案。
Fusion-MPT 技术主要包括 Fusion-MPT 固件,SAS、U320 SCSI、Fibre Channel硬核,和操作系统级的驱动程序等部分。
Fusion-MPT 架构中使用统一的固件及驱动来支持所有基于 Fusion-MPT 技术的 I/O 控制器。
Fusion-MPT 架构可分为操作系统层和硬件层两部分,而从驱动程序设计的角度,又可进一步将其分为驱动、固件和硬件三个功能层次。
Fusion-MPT 在硬件层之上构建独有的固件层,不同的固件为上层驱动程序提供对 SCSI 或 FC 的支持,以及高级的集成 RAID 等功能。固件层有效地将驱动程序同硬件隔离,对上层驱动程序提供统一的 MPI ( Message Passing Interface )接口,使同一驱动程序可以应用于不同的底层硬件系统,有助于加速应用开发。驱动层对上层操作系统提供功能函数接口,通过 MPI 访问固件层,实现操作系统对硬件的访问,并且按照通信协议实现相关的帧封装和拆解。消息传递接口 MPI 提供了一个消息传递传输架构,它定义了主机与 LSI Fusion-MPT 芯片组通信的接口。

上述描述的很明白了,概括来说,Fusion-MPT是个好东西,它在硬件上提供了一个固件,上层驱动程序可以用MPI接口访问固件,而固件可以接不同的硬件,这样简化了操作系统对不通硬件的访问。而mpt3sas这个驱动,是用了MPT固件,下面接的是sas接口,我们看下这个设备在系统中的位置,LSISAS 1068E就是用mpt3sas的一个设备
sas在系统中的位置
依据资料简单分析下mpt3sas驱动的结构,

static int __init
_mpt3sas_init(void)
{
   
	int error;

#ifdef MPT2SAS_SCSI
	pr_info("%s version %s loaded\n", MPT2SAS_DRIVER_NAME,
					MPT2SAS_DRIVER_VERSION);
#else
	pr_info("%s version %s loaded\n", MPT3SAS_DRIVER_NAME,
					MPT3SAS_DRIVER_VERSION);
#endif /* MPT2SAS_SCSI */

	mpt3sas_transport_template =	//设置template
	    sas_attach_transport(&mpt3sas_transport_functions);
	if (!mpt3sas_transport_template)
		return -ENODEV;

#ifdef MPT2SAS_SCSI
	mpt2sas_raid_template = rai
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值