查看MIPS Linux PCI 调试技巧的源代码
←
MIPS Linux PCI 调试技巧
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== 初始化时让 Kernel 忽略某些设备 == 即让该设备不参与 ioport, iomem 及 irq 资源的分配 常用于资源冲突时,排除该设备的影响 具体的,只要修改 pci_scan_device() 这个函数(位于 drivers/pci/probe.c)的行为,在 pci_setup_device() 之前 return 一个空指针即可,如要忽略所有 Intel 的 PCI 设备,则: <source lang=c> if (0x8086 == (l & 0xffff)) return NULL; </source> l & 0xffff 所得即为设备的 Vendor ID,0x8086 为 Intel PCI 设备的 Vendor ID 再如忽略一个 Intel 的、Device ID 为 0x7113 的设备: <source lang=c> if ( (0x8086 == (l & 0xffff)) && (0x7113 == ((l >> 16) & 0xffff)) ) return NULL; </source> <br><br> == 初始化时拒绝 Kernel 重新分配的 ioport, iomem, irq 等 resource == 即使用 bootloader 已经为该设备分配的 resource PCI 子系统在读取设备配置空间的 ioports, iomem 等 resource 后,会调用 pci_bus_alloc_resource() 为之从内核的 resource 里分配,尔后通过调用 pci_update_resource() 将新分配的 resource 写入设备的配置空间寄存器 因此只要在 pci_bus_alloc_resource() 之前直接返回即可,这个需要修改 __pci_assign_resource() 这个函数,其位于 drivers/pci/setup-res.c 即,修改后的 __pci_assign_resource() 为: <source lang=c> static int __pci_assign_resource(struct pci_bus *bus, struct pci_dev *dev, int resno) { struct resource *res = dev->resource + resno; resource_size_t size, min, align; int ret; if(dev->vendor == 0x1022) return 0; ...... ...... </source> 对于 irq 资源的分配干预,则将 pcibios_init() 中的 pci_fixup_irqs() 注去即可,pcibios_init() 位于 arch/mips/pci/pci.c <br><br> <br><br> <br><br> <br><br> <br><br> <br><br>
返回到
MIPS Linux PCI 调试技巧
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面