Вообщем, на работке дали мне pci-плату, которая обменивается с компом данными в DOS'е прогой на C++. Моя задача была - написать такое же ПО для Ubuntu 9.04 (ну и улучшения потом).
Написал простенькую прогу, обмен проиходит по известному алгоритму, скопированному из досовской проги, из «железных» функций использую только in_p, out_p, iopl(). Всё работало зашибись.
Потом, когда делал к проге всякие навороты, плата вдруг работать перестала. Причём не работают даже первые примитивные варианты проги, которые раньше работали.
Посмотрел lspci -v, раньше было так:
02:00.0 DPIO module: PLX Technology, Inc. PCI <-> IOBus Bridge (rev 02)
Subsystem: Device ddd1:0002
Flags: medium devsel, IRQ 18
I/O ports at 9000 [size=128]
I/O ports at 9400 [size=256]
Memory at fb004000 (32-bit, non-prefetchable) [size=256]
I/O ports at 9800 [size=256]
Memory at fb005000 (32-bit, non-prefetchable) [size=256]
Kernel modules: hisax, com20020-pci
А теперь так:
02:00.0 DPIO module: PLX Technology, Inc. PCI <-> IOBus Bridge (rev 02)
Subsystem: Device ddd1:0002
Flags: medium devsel, IRQ 18
I/O ports at 9000 [disabled] [size=128]
I/O ports at 9400 [disabled] [size=256]
Memory at fa000000 (32-bit, non-prefetchable) [disabled] [size=256]
[virtual] Memory at 00009800 (32-bit, non-prefetchable) [disabled] [size=256]
Memory at fa000100 (32-bit, non-prefetchable) [disabled] [size=256]
Kernel modules: hisax, com20020-pci
Кроме того, теперь при загрузке комп выдаёт (можно потом посмотреть с помощью dmesg):
Starting up ...
[ 0.551277] pci 0000:02:00.0: BAR 4: error updating (0x009801 != 0xffffffff)
Пробовал презагружаться, пихать плату в другой pci-слот, загружаться через recovery mode. Не помогает, все порты остаются disabled:( При этом в DOS'е всё работает окей, и на другой машине в Xubuntu всё окей.
В самой плате, вроде, ничего нет, что можно было бы сломать экспериментами с ПО. Неужели механически, что-то треснуло? Глазами повреждений не нашёл, контакты протирал. Да и в ДОСе всё работает.
Что тут можно сделать в принципе? Может в самой Убунте можно как-то обнулить записи про эту плату, сделать так, чтоб порты не были disabled?