From owner-freebsd-current Mon Apr 19 1:50:46 1999 Delivered-To: freebsd-current@freebsd.org Received: from herring.nlsystems.com (nlsys.demon.co.uk [158.152.125.33]) by hub.freebsd.org (Postfix) with ESMTP id 59C8F14F40 for ; Mon, 19 Apr 1999 01:50:42 -0700 (PDT) (envelope-from dfr@nlsystems.com) Received: from localhost (dfr@localhost) by herring.nlsystems.com (8.9.3/8.8.8) with ESMTP id JAA91862; Mon, 19 Apr 1999 09:53:20 +0100 (BST) (envelope-from dfr@nlsystems.com) Date: Mon, 19 Apr 1999 09:53:20 +0100 (BST) From: Doug Rabson To: John Hay Cc: current@freebsd.org Subject: Re: newbus and isa auto irq In-Reply-To: <199904182045.WAA78724@zibbi.mikom.csir.co.za> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Sun, 18 Apr 1999, John Hay wrote: > Hi, > > I ave found one more thing that seems to be broken. I have used the > irq "autodetect" feature of the ed(4) for a long time, but it seems > that the newbus compatability shim is not doing the right thing > with it. My kernel config file have a line like this: > > device ed0 at isa? port 0x280 net irq ? iomem 0xd8000 > > The card gets probed but you just get device timeouts and there is no > mention of an irq for that device in the probe output. Booting with > -c and specifying the irq there also didn't work. Rebuilding the kernel > with a config file which specified the irq did work though. Could you run a test kernel for me with this patch and tell me what it prints. Index: isa_compat.c =================================================================== RCS file: /home/ncvs/src/sys/i386/isa/isa_compat.c,v retrieving revision 1.3 diff -u -r1.3 isa_compat.c --- isa_compat.c 1999/04/19 08:42:39 1.3 +++ isa_compat.c 1999/04/19 08:52:29 @@ -171,8 +171,11 @@ isa_set_portsize(dev, portsize); if (dvp->id_iobase != isa_get_port(dev)) isa_set_port(dev, dvp->id_iobase); - if (dvp->id_irq != (1 << isa_get_irq(dev))) + if (dvp->id_irq != (1 << isa_get_irq(dev))) { +printf("isa_compat_probe: old irq=%d, new mask=%x, new irq=%d\n", + irq_get_irq(dev), dvp->id_irq, ffs(dvp->id_irq) - 1); isa_set_irq(dev, ffs(dvp->id_irq) - 1); + } if (dvp->id_drq != isa_get_drq(dev)) isa_set_drq(dev, dvp->id_drq); if (dvp->id_maddr != maddr) -- Doug Rabson Mail: dfr@nlsystems.com Nonlinear Systems Ltd. Phone: +44 181 442 9037 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message