[Comm] USB Flash Travelling Disk

X-Stranger =?iso-8859-1?q?x_=CE=C1_linux=2Eby?=
Чт Янв 8 20:22:49 MSK 2004


On Thu, 8 Jan 2004 19:57:17 +0300
Sergey Vlasov <vsu на altlinux.ru> wrote:

> 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.

11. Просто у тестера было число 10, а у меня 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.

Видимо. Но на моей машине сработало без неожиданных последствий. Пока. Да и баг такой не редок. Пока
искал - толпа подобных мессаг без решения и ответа. Может все же стоит кому намекнуть, чтобы сделали
все же поправку?

X-Stranger 



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