[Comm] USB Flash Travelling Disk

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Чт Янв 8 19:57:17 MSK 2004


On Thu, Jan 08, 2004 at 06:32:49PM +0200, X-Stranger wrote:
> После долгого сбора инфы о том, как же это все работает, выяснилось, в чем дело.
> Это баг некоторых версий БИОСа, как например на моем Acer TravelMate: USB-controller
> поддерживает только 9-е прерывание (mask==0x200 -->bit 9), правильно будет запускать
> его на irq 9, следуя данным БИОСа. Но, как сказал один из разработчиков: "But according
> to the piix irq router, it's connected to irq 10."

Так 10 или 11?  В dmesg было написано 11.

> Нужно было выяснить, где БИОС врет. Выяснили. Проблему решает следующий патч (ядро версий 2.4):
> 
> --- 2.4/arch/i386/kernel/pci-irq.c
> +++ build-2.4/arch/i386/kernel/pci-irq.c
> @@ -629,6 +629,18 @@
>  		    	if (dev2->irq && dev2->irq != irq) {
>  		    		printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n",
>  				       dev2->slot_name, dev2->irq, irq);
> +				if (!strcmp(msg, "Found")) {
> +					/* ok, the bios lied. Try to recover */
> +					if (r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
> +						printk(KERN_ERR "trying set.\n");
> +						if (r->set(pirq_router_dev, dev2, pirq, dev2->irq)) {
> +							printk(KERN_ERR "set succedded.\n");
> +							eisa_set_level_irq(dev2->irq);
> +						} else {
> +							printk(KERN_ERR "set failed.\n");
> +						}
> +					}
> +				}
>  		    		continue;
>  		    	}
>  			dev2->irq = irq;
> 
> Компилим ядро, ставим, перезагружаемся - вуаля! Никаких кофликтов в dmesg даже и не наблюдалось!
> Как и с PCMCIA. Протестено было на 2.4.21 (за неимением под рукой других версий). Инфа, помогающая
> обнаружить трабл датирована 2001 годом, почему же в ядре до сих пор не сделано такой поправки? Кто
> знает, кому из ALT Linux Team надо писать, чтобы такую поправку хотя бы в Альтовское ядро включили?

Очевидно, эта ошибка встречается достаточно редко, и это изменение
просто не пропихнули в ядро...

Хотя подобные правки чреваты неожиданными последствиями.  Видимо,
придётся добавить флаг pirq_router_override и ставить его только для
известных машин по информации DMI.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20040108/f4cd3bea/attachment-0002.bin>


Подробная информация о списке рассылки community