PM8001驱动及相关模块分析——综述及初始化

本文主要分析了Linux内核中的PM8001 HBA驱动,探讨了其在SCSI子系统中的位置和作用,特别是初始化过程。通过PCI总线连接,PM8001驱动作为SCSI子系统的底层模块,与中间层交互。文章介绍了中间层的功能,包括解耦合、转换SCSI请求,并详细阐述了驱动的初始化步骤,如scsi_transport_template的初始化、PCI相关配置、scsi_host实例创建以及中断处理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

PM8001驱动是linux标准内核自带的HBA驱动,由于完全开源,所以对于学习linux存储系统底层很有帮助。笔者有幸在之前的工作中使用过这款HBA,所以结合实际使用和源码稍微记录一下。由于已经过去很久了,现在重新拿起来看,有些地方理解的会有疏忽,敬请谅解和多提宝贵意见。

对于PM8001这个设备,其与主机通过PCI总线连接,属于SCSI子系统中的底层模块。SCSI子系统按功能和逻辑结构可以划分成三层。系统结构如图所示。



本文的主线是根据PM8001驱动(较低层)来展开,其间会涉及到中间层相关部分的分析,但对于顶层涉及得不多。

  1. scsi子系统中间层和较低层简要分析

    1. scsi中间层功能简介

在进行对pm8001驱动分析之前,先简要根据我的理解分析一下scsi子系统中的中间层和较低层。

中间层顾名思义是介于scsi子系统顶层和较低层之间的层次。中间层是scsi子系统分层模型核心意义的体现——它能够解除顶层和较低层之间的耦合,并为顶层和较低层提供一系列服务。中间层能够解除顶层与较低层的耦合关键在于中间层提供了LLD的抽象接口scsi_host和能够复刻scsi_host对象的scsi_host_template。当较低层将scsi_host注册到中间层后,中间层即可以调用lld相关函数。同理,顶层的驱动也可以通过中间层间接地使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值