1

我正在编写一个实验性的内核模式程序来测试一些东西。我想对连接到 AHCI 控制器的 SATA 磁盘进行 IO。我有一个 C 驱动程序,该驱动程序以前在另一个类似项目上工作过,该项目在我不再拥有的另一台 PC 上运行。我现在拥有的 PC 是配备 ICH9 芯片组的 HP 笔记本电脑。所有读取和写入都是 2 个扇区大小,一次发生一个,因此它发出正常的 LBA48 DMA 读/写命令(无 NCQ)并获得一个中断信号完成。阅读按预期完美地工作,但写作失败 100% 的时间。PxSERR 保持为零,但 PxIS 中的 TFES 位亮起。设备在错误寄存器中显示 0x84(接口 CRC 错误,命令中止),在状态寄存器中显示 0x51(错误,查找完成,设备就绪)。这似乎指向布线问题或类似的硬件问题,但是 Linux 在同一设备上读取或写入同一分区没有问题,并且 BIOS 内置磁盘测试报告磁盘工作​​正常。向设备发送指定较低 DMA 模式的 SET FEATURES 命令没有任何区别,Linux 报告无论如何都将设备置于 UDMA/133 模式。(这甚至与 SATA 有关吗?)无论如何,有人能想到我缺少的东西吗?

4

0 回答 0