LINUX.ORG.RU

Перестал работать PCI-девайс :(


0

0

Вообщем, на работке дали мне 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?

BIOS пробовал сбрасывать? Еще может в платке прошивка своя сырая.

Suigintou ★★★★★
()

а на той же машинке, но с лайв убунты работает? кстати если в досе работает, то просто не может быть такого что с платой что-то нарушено, кстати другие девайсы в pci там звуковая или сеть работают?

Shredder
()
Ответ на: комментарий от Shredder

BIOS пробовал сбрасывать? Еще может в платке прошивка своя сырая.

Пока не пробовал, завтра попробую. Может ещё стоит поэкспериментировать с номерами прерываний?

а на той же машинке, но с лайв убунты работает?

Не, и с лайва не работает :( Не могу понять, что может быть такого, что в ДОСе работает, а в убунте блокируется(

кстати если в досе работает, то просто не может быть такого что с платой что-то нарушено, кстати другие девайсы в pci там звуковая или сеть работают?

Всё остальное работает. Но есть один момент. на старом компе, на котором Xubuntu, если эту плату ткнуть в определённый слот, то видюха не работает) а если в другой слот, то всё как надо) ну это наверно уже к вопросу об архитектуре современных PC, тут мне кажется проблема с портами не при чём:)

White_Pony
() автор топика

Твое это устройство поддерживает Plug and Play? Не рассматривал вариант, что у него конфликт прерываний с чем-то из оборудования?

Возможно, твоя плата хочет использовать смежные ресурсы с какой-то из железяк, установленных в компьютер. А работает в ДОСе по причине того, что в ДОСе не подгружается драйвер под конфликтующую железяку и она не активна.

ravenlord
()
Ответ на: комментарий от ravenlord

Твое это устройство поддерживает Plug and Play?

хз.. плату сделали на работе, по сути это АЦП, который общается по PCI с компом с помощью PLX9050. Попробую узнать. Если нет, то это очень плохо?:)

Не рассматривал вариант, что у него конфликт прерываний с чем-то из оборудования?

Была такая мысль, сейчас думаю как бы отследить, где именно конфликт.

Возможно, твоя плата хочет использовать смежные ресурсы с какой-то из железяк, установленных в компьютер. А работает в ДОСе по причине того, что в ДОСе не подгружается драйвер под конфликтующую железяку и она не активна.

Толковая идея, буду пробовать разобраться. Спасибо!

White_Pony
() автор топика
Ответ на: комментарий от White_Pony

хз.. плату сделали на работе, по сути это АЦП, который общается по PCI с компом с помощью PLX9050. Попробую узнать. Если нет, то это очень плохо?:)

Это не плохо, просто означает, что ОС не знает какие параметры нужны устройству для корректного функционирования, и эти параметры как-то надо задать руками.

Была такая мысль, сейчас думаю как бы отследить, где именно конфликт.

Отключи всю периферию и максимум интегрированных устройств. Если при таком обстоятельстве плата заработает - проблема будет очевидна. А при планомерном включении периферии «по одному» - можно будет отследить с чем конфликтует плата

ravenlord
()
Ответ на: комментарий от ravenlord

Отключи всю периферию и максимум интегрированных устройств

можно попробовать поискать (и отключить) в BIOS параметр, отвечающий за распределение ресурсов - что то типа - PnP/PCI Configurations

male66
()
Ответ на: комментарий от White_Pony

>Всё остальное работает. Но есть один момент. на старом компе, на котором Xubuntu, если эту плату ткнуть в определённый слот, то видюха не работает) а если в другой слот, то всё как надо) ну это наверно уже к вопросу об архитектуре современных PC, тут мне кажется проблема с портами не при чём

Если на компе той эпохи распаяны все пять разъёмов PCI, то первый и пятый делят между собой ресурсы.

dn2010 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.