driver_gang
驱动牛犊
驱动牛犊
  • 注册日期2006-04-26
  • 最后登录2011-07-16
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望80点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1593回复:3

急!大侠们进来看看咋回事?

楼主#
更多 发布于:2007-05-23 15:54
linux下在amd机器上跑U盘和ACPI测试导致的当机,现象如图,请看看给点提示问题在哪,不胜感谢!

ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-05-23 18:49
ding
人不靓仔心灵美,版头不正红花仔!
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
板凳#
发布于:2007-05-23 19:18
根据信息似乎是这里出现了问题:

case 4:
        __asm__("lcall *(%%esi); cld\n\t"
            "jc 1f\n\t"
            "xor %%ah, %%ah\n"
            "1:"
            : "=c" (*value),
              "=a" (result)
            : "1" (PCIBIOS_READ_CONFIG_DWORD),
              "b" (bx),
              "D" ((long)reg),
              "S" (&pci_indirect));
        break;
    }

    spin_unlock_irqrestore(&pci_config_lock, flags);

    return (int)((result & 0xff00) >> 8);
}

也就是在读pci设备参数的时候发生了错误。这个在smp多核上是不是存在锁的问题啊,乱猜得。重要是能够找到pci_bios_read+0xa4的地址。这可通过gdb调试内核得到具体出现问题的位置。不过eip的地址有些奇怪,那么最有可能就是spin_unlock_irqrestore释放锁出现了问题,那么有可能一些参数传进来有问题,修改了flag,不知道了。

最终结果:找到你应用空间调用read的地方,看看参数是否正确。
走走看看开源好 Solaris vs Linux
driver_gang
驱动牛犊
驱动牛犊
  • 注册日期2006-04-26
  • 最后登录2011-07-16
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望80点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-24 10:22
谢谢版主的分析,我正在调试。找问题原因。
游客

返回顶部