|
|
发表于 2008-5-20 09:38:34
|
显示全部楼层
折腾了一下,算是解决了。
找到内核中 drivers/ata/ahci.c 这个文件,大概在 700 行左右,会有一段:
[PHP]
/*
* Temporary Marvell 6145 hack: PATA port presence
* is asserted through the standard AHCI port
* presence register, as bit 4 (counting from 0)
*/
if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
if (pdev->device == 0x6121)
mv = 0x3;
else
mv = 0xf;
dev_printk(KERN_ERR, &pdev->dev,
"MV_AHCI HACK: port_map %x -> %x\n",
port_map,
port_map & mv);
port_map &= mv;
}
[/PHP]
这段貌似就是相对 2.6.24 新加入的 Marvell 相关的代码,貌似就是多了个 if (pdev->device == 0x6121) 的判断,尝试着去掉,变成:
[PHP]
if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
mv = 0xf;
dev_printk(KERN_ERR, &pdev->dev,
"MV_AHCI HACK: port_map %x -> %x\n",
port_map,
port_map & mv);
port_map &= mv;
}
[/PHP]
然后重编译内核,发现可行,虽然不知道原理,但是效果达到了,不妨试试看~ ;) |
|