05
2024
06
10:27:30

Linux 内核引导选项简介 PCI与PCIE

https://www.wenjiangs.com/doc/j0s9xor9


PCI与PCIE

  • [PCI]
    pci=选项[,选项...]

  • 指定各种PCI子系统选项:
    earlydump 在内核做出任何改变之前,首先转储出PCI配置空间。主要用于调试目的。
    off 不检测PCI总线,也就是关闭所有PCI设备。
    conf1 强制使用"PCI配置机制1"(目前的事实标准)
    conf2 强制使用"PCI配置机制2"(已被抛弃的老古董)
    noaer [PCIE]禁止使用CONFIG_PCIEAER功能(PCI Express Root Port Advanced Error Reporting)
    nodomains 禁止支持多个PCI root domain(也就是PCI总线域[PCI segment])
    nommconf 禁止使用通过MMCONFIG(CONFIG_PCI_MMCONFIG)方式访问PCI配置空间,MMCONFIG是PCI Express引入的新总线枚举方式。
    check_enable_amd_mmconf 在 AMD family 10h CPU 上检查并启用正确配置的MMIO以访问PCI配置空间
    nomsi [MSI]在全系统范围内禁止MSI中断(CONFIG_PCI_MSI)的使用
    noioapicquirk [APIC]禁止屏蔽任何boot中断(CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS),以确保boot IRQ永远可用。应该永远不需要使用此选项。
    ioapicreroute [APIC]允许将boot IRQ重新路由到主IO-APIC(相当于开启CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS),用于修复某些芯片组bug(在某些情况下会发送多余的"boot IRQ")。
    noioapicreroute [APIC]禁止将boot IRQ重新路由到主IO-APIC(相当于关闭CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS),不建议使用此项。
    rom 为扩展ROM分配地址空间。使用此选项要小心,因为某些设备在ROM与其它资源之间共享地址译码器。
    norom 即使BIOS没有为扩展ROM分配地址空间,也禁止内核为扩展ROM分配地址空间。
    nobar 即使BIOS没有为BAR分配地址空间,也禁止内核为BAR分配地址空间。
    irqmask=0xMMMM 指定允许自动分配到PCI设备的IRQ位掩码,目的是为了避免使用那些被ISA设备占用的IRQ。
    pirqaddr=0xAAAAA 如果PIRQ表(通常情况下由BIOS生成)在F0000h-100000h范围之外,此选项可用于明确指定其物理地址。
    lastbus=N 通过扫描N号总线来扫描全部总线。如果内核不能找到第二条总线,可以通过此方法明确告知其位置。
    assign-busses 总是使用内核自己生成的PCI总线号码替代固件自己生成的值。
    usepirqmask 优先使用可能存在于BIOS $PIR表中的IRQ掩码。某些有缺陷的BIOS需要这个选项(例如HP Pavilion
    N5400和Omnibook
    XE3笔记本)。此选项仅在noioapicreroute(相当于关闭
    CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS)的前提下有效。
    noacpi 不为IRQ路由或PCI扫描使用ACPI
    use_crs 使用来自ACPI的PCI主桥的窗口信息。在2008年之后的BIOS上,这是默认值,如果需要明确使用此项,请当做bug上报开发者。
    nocrs 忽略来自ACPI的PCI主桥的窗口信息,如果需要明确使用此项,请当做bug上报开发者。
    routeirq 对所有PCI设备使用IRQ路由。这个通常是由内核的pci_enable_device()函数完成,所以此项仅为那些忘记调用此函数的驱动提供的临时解决方案
    skip_isa_align 不对齐ISA IO起始地址,这样就可以处理更多的PCI卡
    noearly 不做任何"early type 1"扫描,这样许多针对主板缺陷的检测将被禁止,同时某些IOMMU驱动也会失效。仅用于解决某些有缺陷的主板故障。
    bfsort 按照宽度优先(breadth-first)的顺序对PCI设备进行排序。目的是为了以与2.4内核兼容的方式获取设备序号。
    nobfsort 不按宽度优先(breadth-first)的顺序对PCI设备进行排序。
    pcie_bus_tune_off 不对PCIe MPS(Max Payload Size)进行调整,而是使用BIOS配置好的默认值。
    pcie_bus_safe 将每个设备的MPS都设为root complex下所有设备支持的MPS中的最大值
    pcie_bus_perf 将设备的MPS设为其上级总线允许的最大MPS,同时将MRRS(Max Read Request Size)设为能支持的最大值(但不能大于设备或总线所支持的MPS值)
    pcie_bus_peer2peer 将每个设备的MPS都设为最安全的"128B",以确保支持所有设备之间的点对点DMA,同时也能保证热插入(hot-added)设备能够正常工作,但代价是可能会造成性能损失。
    cbiosize=nn[KMG] 从CardBus桥的IO窗口中保留的固定长度的总线空间(bus space),默认值是256B。
    cbmemsize=nn[KMG] 从CardBus桥的内存窗口中保留的固定长度的总线空间(bus space),默认值是64MB。
    resource_alignment=[对齐规则@][域:]总线:插槽.功能[; ...]
    为重新分配已对齐的内存资源指定对齐方式与设备。如果未指定对齐规则,那么将使用PAGE_SIZE作为对齐规则。也可以通过指定PCI-PCI桥来扩展
    资源窗口(resource windows)。
    ecrc={bios|on|off} 启用/禁用PCIe ECRC(事务层的端对端CRC校验)。默认值是"bios"(使用BIOS/固件的设定)。
    hpiosize=nn[KMG] 为热插拔桥的IO窗口保留的固定总线空间的大小,默认值是256B。
    hpmemsize=nn[KMG] 为热插拔桥的内存窗口保留的固定总线空间的大小,默认值是2MB。
    realloc={on|off} 当BIOS分配的PCI桥资源太小而无法满足所有子设备的需求时,是否由内核重新分配PCI桥资源。没有默认值(内核的默认值为"undefined")
    realloc 等价于"realloc=on"
    noari 不使用PCIe ARI
    pcie_scan_all 扫描所有可能的PCIe设备。默认只在每个PCIe下游端口扫描一个设备。

  • [PCIE]
    pcie_hp=nomsi

  • 禁止PCIe本地热插拔使用MSI(CONFIG_PCI_MSI),这将导致所有PCIe端口使用INTx中断提供热插拔服务。

  • [PCIE]
    pcie_ports={auto|native|compat}

  • PCIe端口处理方式:
    auto 由BIOS来决定是否使用关联在PCIe端口上的本地PCIe服务(PME, hot-plug, AER)
    native 无条件的使用关联在PCIe端口上的本地PCIe服务(PME, hot-plug, AER)
    compat 禁用PCIe端口驱动,同时将PCIe端口当做PCI-to-PCI桥处理。

  • [PCIE]
    pcie_aspm={off|force}

  • 强制启用/禁用PCIe Active State Power Management(CONFIG_PCIEASPM)。内核的默认值取决于内核"Default ASPM policy"的配置。
    off 强制禁用
    force 即使设备声明不支持ASPM也强制启用(可能会导致系统锁死)。

  • [PCIE]
    pcie_pme=nomsi

  • 禁止本地PCIe PME信号使用MSI(CONFIG_PCI_MSI),这将导致所有PCIe root端口使用INTx中断提供所有服务。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/6500.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: