免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3938 | 回复: 6
打印 上一主题 下一主题

[硬件及驱动] ahci是scsi low level的源码么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-29 10:56 |只看该作者 |倒序浏览
本帖最后由 Modifix 于 2013-01-29 10:58 编辑

硬件信息:
cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD2500BEKT-7 Rev: 01.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05

lspci -v
00:1f.2 SATA controller: Intel Corporation 6 Series Chipset Family 6 port SATA AHCI Controller (rev 04) (prog-if 01 [AHCI 1.0])
        Subsystem: Dell Device 049b
        Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 30
        I/O ports at 70b0

        I/O ports at 70a0
        I/O ports at 7090
        I/O ports at 7080
        I/O ports at 7060
        Memory at e3d20000 (32-bit, non-prefetchable) [size=2K]
        Capabilities: <access denied>
        Kernel driver in use: ahci
        Kernel modules: ahci


scsi子系统分三层:
Upper level, mid level, low level,磁盘的upper level是drivers/scsi/sd.c, drivers/scsi/Kconfig及Makefile下没见到相应的low level代码(SATA驱动)。

请问drivers/ata/ahci.c是属于scsi子系统的low level么?

如果drivers/ata/ahci.c不属于scsi子系统的low level,请问我该怎样找到相应的low level代码呢?

论坛徽章:
0
2 [报告]
发表于 2013-01-29 15:30 |只看该作者
scsi 和sata  ahci一点关系都没有吧?

scsi 底层对应的就是 设备驱动了,你直接搜索那个 scsi host的结构,看看那个模块使用就知道了。




论坛徽章:
0
3 [报告]
发表于 2013-01-29 16:03 |只看该作者
Low level                  这一层可以把接收到的SCSI命令转换成sata/usb的命令,当然如果是SCSI设备的话就可以直接发下去了


我的理解是:
内核应该是通过SCSI子系统与SATA驱动打交道,即使是SATA硬盘也得有SCSI子系统,ahci应该会扫描sata设备注册到SCSI总线上。

论坛徽章:
0
4 [报告]
发表于 2013-01-30 10:25 |只看该作者
回复 3# Modifix

看了一下确实是注册为scsi的,
设备对外表示为scsi磁盘,接受内存传来的scsi命令,
libata里会把它翻译为ata的命令然后才去执行。

scsi 到ata的转换应该是个规范来的。

如果你想看scsi的代码,看看libata的代码就可以了
http://lxr.linux.no/linux+v3.7.5/drivers/ata/libata-scsi.c#L1792

   

论坛徽章:
0
5 [报告]
发表于 2013-01-30 10:32 |只看该作者
应该是可以模拟一个scsi设备,然后底下有转换。
默认的不是scsi设备吧?   sata硬盘默认的不还是hda之类的吗?  sda这样的设备只是模拟出来的吧。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2014-04-05 21:37 |只看该作者
回复 5# hmsghnh
    是的!

   

论坛徽章:
0
7 [报告]
发表于 2014-04-06 19:56 |只看该作者
请问drivers/ata/ahci.c是属于scsi子系统的low level么?
如果drivers/ata/ahci.c不属于scsi子系统的low level,请问我该怎样找到相应的low level代码呢?
[回答]不是,low level一般可以是走ata协议的普通SATA设备,也可以是外接hba的SAS设备,简单的例子就是hba驱动.
AHCI为内存总线和SATA设备间提供通用接口,区别于IDE。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP