From owner-freebsd-new-bus Mon Jun 26 23:21:32 2000 Delivered-To: freebsd-new-bus@freebsd.org Received: from rover.village.org (rover.village.org [204.144.255.49]) by hub.freebsd.org (Postfix) with ESMTP id A7ADF37BE15 for ; Mon, 26 Jun 2000 23:21:29 -0700 (PDT) (envelope-from imp@harmony.village.org) Received: from harmony.village.org (harmony.village.org [10.0.0.6]) by rover.village.org (8.9.3/8.9.3) with ESMTP id AAA72423; Tue, 27 Jun 2000 00:21:28 -0600 (MDT) (envelope-from imp@harmony.village.org) Received: from harmony.village.org (localhost.village.org [127.0.0.1]) by harmony.village.org (8.9.3/8.8.3) with ESMTP id AAA31901; Tue, 27 Jun 2000 00:19:37 -0600 (MDT) Message-Id: <200006270619.AAA31901@harmony.village.org> To: Doug Rabson Subject: Re: Why can't I have.. Cc: new-bus@freebsd.org In-reply-to: Your message of "Tue, 27 Jun 2000 07:16:24 BST." References: Date: Tue, 27 Jun 2000 00:19:37 -0600 From: Warner Losh Sender: owner-freebsd-new-bus@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG In message Doug Rabson writes: : On Mon, 26 Jun 2000, Warner Losh wrote: : : > : > ... a INTR_TYPE_FAST | INTR_TYPE_MISC? : > : > It gives me: : > panic("still using grody create_intr interface"); : > : > What's the deal? It is easy enough to fix the problem, but I was : > wondering why the code is still there... : > : > This is, admittedly, in -stable. : : Hmm. I thought Peter had fixed that ages ago. If you can generate patches, : I would appreciate it. Here's what I have. Tell me how it is wrong and I'll fix it :-). Fast interrupts make a *HUGE* difference for some hardware that I'm writing a driver for hire fore. This hardware generates an interrupt on the first write to a FIFO. In the ISR the you set the DMA parameters of the card, and you have only until the FIFO fills up to set the DMA. Once the DMA is set, the fifo drains (as well as data that is fed through it) and your hunk of data is complete. The normal interrupts had too much of a latency to make them work. Minor rework of the driver for fast interrupts seems to have solved the latency problem at the cost that each of these cards must have their own interrupt. Major rework of the driver could make it possible for interrupt sharing with other cards of this type with one ISR handling all of them. Anyway, enough about my oddball hardware. Here's the patch. Warner Index: nexus.c =================================================================== RCS file: /home/imp/FreeBSD/CVS/src/sys/i386/i386/nexus.c,v retrieving revision 1.26.2.2 diff -u -r1.26.2.2 nexus.c --- nexus.c 2000/04/23 09:59:11 1.26.2.2 +++ nexus.c 2000/06/27 03:15:03 @@ -437,6 +437,9 @@ case INTR_TYPE_CAM: mask = &cam_imask; break; + case INTR_TYPE_MISC | INTR_TYPE_FAST: + icflags |= INTR_FAST; + /* FALLTHROUGH */ case INTR_TYPE_MISC: mask = 0; break; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-new-bus" in the body of the message