Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Nov 1999 12:05:01 +1030 (CST)
From:      Mark Newton <newton@internode.com.au>
To:        peter.jeremy@alcatel.com.au
Cc:        current@FreeBSD.ORG
Subject:   Re: panic: nexus_setup_intr: NULL irq resource!
Message-ID:  <199911120135.MAA21532@gizmo.internode.com.au>
In-Reply-To: <99Nov12.121756est.40354@border.alcanet.com.au> from "Peter Jeremy" at Nov 12, 99 12:23:54 pm

next in thread | previous in thread | raw e-mail | index | archive | help
Peter Jeremy wrote:

 > I'm trying to enable a generic ISA multiport SIO card in -current from
 > just before the signal changes and get presented with the above panic
 > when the first SIO port on the card is attached.

Well... the first port that doesn't mention an IRQ.

I discussed this with Bruce last month;  The following patch seemed
to work-around, even though it's a stupid hack which shouldn't be 
committed.

The problem is that the BUS_SETUP_INTR() method for ISA seems to
absolutely require the specification of an IRQ, even though IRQ
specification is absolutely prohibited for non-master ports in 
AST-compatible multi-port sio cards.  Gah.

I'm not completely sure that this patch does the right thing (in
terms of allowing the slave serial ports to work correctly) anyway:
I haven't stress-tested it, I was more interested in getting the 
machine involved to be able to boot.  More investigation is required.

    - mark


*** /tmp/co/src/sys/i386/isa/isa.c	Wed Sep  1 16:04:24 1999
--- isa.c	Wed Oct  6 23:00:26 1999
***************
*** 137,142 ****
--- 137,152 ----
  isa_setup_intr(device_t bus, device_t child, struct resource *r, int flags,
  	       void (*ihand)(void *), void *arg, void **cookiep)
  {
+ 	if (r == NULL) {
+ 		/*
+ 		 * handle the case for multiport sio cards, where 
+ 		 * the kernel config file mentions lots of sio ports
+ 		 * but only provides the irq on the master port -- other
+ 		 * ports panic in nexus_setup_intr() without this 
+ 		 */
+ 		return 0;
+ 	}
+ 
  	return (BUS_SETUP_INTR(device_get_parent(bus), child, r, flags,
  			       ihand, arg, cookiep));
  }




----
Mark Newton                               Email:  newton@internode.com.au (W)
Network Engineer                          Email:  newton@atdot.dotat.org  (H)
Internode Systems Pty Ltd                 Desk:   +61-8-82232999
"Network Man" - Anagram of "Mark Newton"  Mobile: +61-416-202-223


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199911120135.MAA21532>