Chinaunix首页 | 论坛 | 博客
  • 博客访问: 247003
  • 博文数量: 33
  • 博客积分: 3030
  • 博客等级: 中校
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-09 17:49
文章分类

全部博文(33)

文章存档

2011年(1)

2010年(1)

2009年(10)

2008年(21)

我的朋友

分类: LINUX

2008-05-26 15:16:22

由于不常用光驱,因此不能肯定到底是做了什么之后才使得光驱不能用的。

之前用2.6.24内核时有用过光驱

现在用2.6.25-r3版,不知道安装了openrc后是不是会导致udev不能认出光驱

用lspci命令可以看到
03:00.0 IDE interface: Marvell Technology Group Ltd. Device 6121 (rev b1)
我的主板上用Marvell程序来接一个ide接口的dvd。

dmesg | grep cd命令看不到任何关于光驱的信息。

/dev下没有sr0设备。


而在同一个机器上的另一个发行版fedora 8可以使用光驱

=============================================================================

linuxsir上的兄弟帮助我解决了这个问题:

折腾了一下,算是解决了。

找到内核中 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;
    } 
这段貌似就是相对 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;
    } 
然后重编译内核,发现可行,虽然不知道原理,但是效果达到了,不妨试试看~


===================================================================
非常感谢yyccrasher,你的方法我试了,发现单是删除if (pdev->device == 0x6121) mv = 0x3;else还不够,还要屏蔽掉下面这行
{ PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }
这样,重新编译后就可以使用光驱了,否则还是不行。不过我lspci的结果,检验Marvell还是6121,但是,这并不影响使用。
03:00.0 IDE interface: Marvell Technology Group Ltd. Device 6121 (rev b1)

最后再次感谢yyccrasher的帮助。

我想了想,是不是lspci把我的marvell设备给识别错了,本来应该是6145的,但是它给识别成6121了,所以就不能正确使用了。不知道到底是哪个部分来识别marvell的版本的?


=====================================================================


使用下面的命令看看能否找到设备
wodim --devices
cdrecord --scanbus
阅读(1173) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~