PCI与PCIE

优质
小牛编辑
118浏览
2023-12-01

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中断提供所有服务。