Ubuntu 7.10 (linux kernel 2.6.22) vs NVIDIA 8600 GT
Решил поставить кубунту (kubuntu), увидеть красоты компиза (compiz fusion), насладится юникс окружением!
Но не тут то было. Моя видеокарта упорно не хотела работать с драйверами от nvidia (10,14.19-23).
Система загружалась, но как только в xorg.conf видела driver="nvidia" (вместо "nv"), сразу впадала в ступор и нагло зависала не подавая признаков жизни (экран гаснет, система в дед локе)
Вот что система выдавала в dmesg
Понятно, что не может зарезервировать регион памяти, понятно что биос глючный, либо ядро косячит,
непонятно - почему!? Ибо в win xp все работает, Непорядок, Нужно разобраться.
Перерыв, как обычно, пол интернета, просмотрев кучу сообщений в баг репортах однозначного ответа не нашел.
Пошел читать книжки типа "understanding linux kernel", "compiling linux kernel modules for dummies", "linux device drivers 3 edition"..
В итоге пополняем наши знания:
- ядру можно передавать кучу опций, таких как apic=debug noapic lapic nolapic pci=nommconf pci=nobios vga=791
Результатов это не принесло, гораздо более интересна в моем случае опция reserve=, которая позволяет резервировать память,
не давая ядру возможности самостоятельно "попробовать" этот регион.
- можно управлять pci шиной/устройствами командой setpci. Читать данные можем той же командой или lspci, lshw, также низкоуровневая информация содержится в /proc, и /sys/pci
Несколько дней-недель зоопарка linux и танцов с бубнами (барабанами) и мы ее добили,
Делаем следующее (справедливо для моей системы)
Перезагружаем систему, и - о чудо! Заставка nvidia и кдешный сплэш радуют нас своим присутствием.
Обнаруживаем рабочую конфигурацию системы с другими параметрами регионов памяти!
И в результате -
За это время было отослано баг репортов - 4
Получено подтверждений - 1
Получено способов устранения проблемы - 0
Но не тут то было. Моя видеокарта упорно не хотела работать с драйверами от nvidia (10,14.19-23).
Система загружалась, но как только в xorg.conf видела driver="nvidia" (вместо "nv"), сразу впадала в ступор и нагло зависала не подавая признаков жизни (экран гаснет, система в дед локе)
Вот что система выдавала в dmesg
# dmesg
[ 20.393275] PCI: Cannot allocate resource region 3 of device 0000:05:00.0
[ 20.480120] PCI: Failed to allocate mem resource #3:2000000@fe000000 for 0000:05:00.0
[ 21.108511] Boot video device is 0000:05:00.0
[ 39.067285] ACPI: PCI Interrupt 0000:05:00.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 20
[ 39.067387] PCI: Setting latency timer of device 0000:05:00.0 to 64
Понятно, что не может зарезервировать регион памяти, понятно что биос глючный, либо ядро косячит,
непонятно - почему!? Ибо в win xp все работает, Непорядок, Нужно разобраться.
Перерыв, как обычно, пол интернета, просмотрев кучу сообщений в баг репортах однозначного ответа не нашел.
Пошел читать книжки типа "understanding linux kernel", "compiling linux kernel modules for dummies", "linux device drivers 3 edition"..
В итоге пополняем наши знания:
- ядру можно передавать кучу опций, таких как apic=debug noapic lapic nolapic pci=nommconf pci=nobios vga=791
Результатов это не принесло, гораздо более интересна в моем случае опция reserve=, которая позволяет резервировать память,
не давая ядру возможности самостоятельно "попробовать" этот регион.
- можно управлять pci шиной/устройствами командой setpci. Читать данные можем той же командой или lspci, lshw, также низкоуровневая информация содержится в /proc, и /sys/pci
Несколько дней-недель зоопарка linux и танцов с бубнами (барабанами) и мы ее добили,
Делаем следующее (справедливо для моей системы)
1) Add all nvidia stuff to /etc/modprobe.d/blacklist
blacklist nv
blacklist nvidia
blacklist nvidia_new
2) Add kernel ooptions
reserve=0xCE000000,0x1FFFFFF reserve=0xFD000000,0x1FFFF
Перезагружаем систему, и - о чудо! Заставка nvidia и кдешный сплэш радуют нас своим присутствием.
Обнаруживаем рабочую конфигурацию системы с другими параметрами регионов памяти!
05:00.0 0300: 10de:0402 (rev a1) (prog-if 00 [VGA])
Subsystem: 1462:0910
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 20
Region 0: Memory at 8a000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at 90000000 (64-bit, prefetchable) [size=256M]
Region 3: Memory at 88000000 (64-bit, non-prefetchable) [size=32M]
Region 5: I/O ports at 9f00 [size=128]
[virtual] Expansion ROM at 8b000000 [disabled] [size=128K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [68] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [78] Express Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag+
Device: Latency L0s <512ns, L1 <4us
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x16, ASPM unknown, Port 0
Link: Latency L0s <512ns, L1 <4us
Link: ASPM Disabled RCB 128 bytes CommClk- ExtSynch-
Link: Speed 2.5Gb/s, Width x16
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting
Capabilities: [600] Unknown (11)
И в результате -
glxinfo | grep direc
direct rendering: Yes
За это время было отослано баг репортов - 4
Получено подтверждений - 1
Получено способов устранения проблемы - 0
There are no such error present.
Как и венда. переходим на МакОсь