From owner-freebsd-current Sun Jun 1 12:56:52 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id MAA02790 for current-outgoing; Sun, 1 Jun 1997 12:56:52 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id MAA02782; Sun, 1 Jun 1997 12:56:39 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.5/8.6.9) id FAA32060; Mon, 2 Jun 1997 05:53:16 +1000 Date: Mon, 2 Jun 1997 05:53:16 +1000 From: Bruce Evans Message-Id: <199706011953.FAA32060@godzilla.zeta.org.au> To: ache@nagual.pp.ru, bde@zeta.org.au Subject: Re: Shared irq's broke sounddriver badly Cc: current@FreeBSD.ORG, se@FreeBSD.ORG Sender: owner-current@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >> >opl0 at 0x388-0x38b irq 31 on isa >> > ^^^^^^ >> >> What was it originally? > >There is no IRQ for this device at all (according to config line). This is another old, previously unreported, bug. soundcard.c corrupts no-IRQ to irq 31 via the following operations: hw_config.irq = ipri_to_irq(dev->id_irq); /* in sndprobe() */ dev->id_irq = (1 << hw_config.irq); /* in sndattach() */ ipri_to_irq(0) = (unsigned short)-1 = 0xffff (assuming 16-bit unsigned shorts). 1 << 0xffff = 1 < (0xfffff) & 0x1f) = 1 << 31 (assuming a 386). Bruce