Portál AbcLinuxu, 2. května 2025 05:22
/usr/src/linux/arch/x86_64/Kconfig /usr/src/linux/arch/x86_64/pci/mmconfig.cTipuju, ze mas 64-bit...
možná tě bude zajímat toto :
2.6 kernels have added support for Memory-Mapped PCI Configuration Space accesses. Unfortunately, there are many problems with this mechanism, and the latest kernel updates are more careful about enabling this support. The NVIDIA driver may be unable to reliably read/write the PCI Configuration Space of NVIDIA devices when the kernel is using the MMCONFIG method to access PCI Configuration Space, specifically when using multiple GPUs and multiple CPUs on 32-bit kernels. This access method can be identified by the presence of the string "PCI: Using MMCONFIG" in the 'dmesg' output on your system. This access method can be disabled via the "pci=nommconf" kernel parameter.
Já tomu rozumím nějak takhle.
Každé PCI zařízení má 256-bajtový konfigurační prostor. Nacházejí se v něm např. takové registry jako Vendor ID, Device ID, kterými je zařízení identifikováno, a několik registrů popisujících adresy paměťově mapovaných oblastí, se kterými pak pracuje ovladač zařízení.
Způsoby, jak přistupovat k PCI konfiguračnímu prostoru, jsou na různých platformách různé. A i386/x86_64 mají těch způsobů hned několik:
1. Přes I/O porty řadiče PCI. Implementováno v arch/i386/pci/direct.c
. Čtení a zápis na I/O porty 0xCF8 a 0xCFC-... Tento způsob pravděpodobně používáš, když vnutíš pci=nommconf.
2. Přes volání BIOSu. Implementováno v arch/i386/pci/pcbios.c
. Použije se až jako poslední možnost, když ostatní selžou.
3. Pomocí namapování PCI konfiguračního prostoru do paměti. Implementováno v arch/i386/pci/mmconfig.c
. Pokud je povolený, tak je tento způsob preferovaný. Vyžaduje, aby se Linux dozvěděl, na jaké adrese se ten prostor nachází. Řekne mu to ACPI BIOS tabulkou MCFG. Rozšířený konfigurační prostor u PCI Express je dosažitelný pouze tímto způsobem.
Jestli ti mmconfig nefunguje, neměl byses spokojit s workaroundem nommconf, ale radši to nahlas v LKML.
Samozrejme, toto co jsem psal vyse uvadi Nvidia ve svem README (bod zname chyby) u jednoho z ovladacu. Tudiz vi, ze nektere jeji produkty nepracuji s jadrem dobre tak jak by mely, zda to opravi Nvidia (asi tezko, pokud pouziva nejake "nestandardnosti") ci LKLM je uz vec druha.Jestli ti mmconfig nefunguje, neměl byses spokojit s workaroundem nommconf, ale radši to nahlas v LKML.
Proto je LKML tím správným místem, kde chybu diskutovat.O tom nepochybuji, sam jsem nekolik chyb nahlasil...
Používá se pro některé fičury, které má PCI Express oproti PCI navíc:
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.