From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 8 Jan 2004 19:57:17 +0300 From: Sergey Vlasov To: community@altlinux.ru Subject: Re: [Comm] USB Flash Travelling Disk Message-ID: <20040108165717.GI19034@master.mivlgu.local> Mail-Followup-To: community@altlinux.ru References: <3FEBF5B7.000005.09657@soapbox.yandex.ru> <20040105113034.GA25030@alexpc.oiau.chel.cbr.ru> <3FF962E6.000004.10931@ariel.yandex.ru> <20040105155221.2bfce79e.x@linux.by> <20040108183249.3062d83c.x@linux.by> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="X0cz4bGbQuRbxrVl" Content-Disposition: inline In-Reply-To: <20040108183249.3062d83c.x@linux.by> X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.3 Precedence: list Reply-To: community@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Jan 2004 16:57:18 -0000 Archived-At: List-Archive: List-Post: --X0cz4bGbQuRbxrVl Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit 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. --X0cz4bGbQuRbxrVl Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3 (GNU/Linux) iD8DBQE//YvtW82GfkQfsqIRAohEAJ4ughgdKNAR88f/Blh34CL6izQJ5QCfVP++ H1vFmyvKzsgulY+w8K/uSJI= =9ztH -----END PGP SIGNATURE----- --X0cz4bGbQuRbxrVl--