7.0 RC1/SPARC64 panic in boot

Scott Long scottl at samsco.org
Tue Jan 22 22:32:56 PST 2008


Eirik Øverby wrote:
> On Jan 22, 2008, at 7:23 PM, Marius Strobl wrote:
> 
>> On Tue, Jan 22, 2008 at 07:16:16AM +0100, Eirik verby wrote:
>>> Hi list,
>>>
>>> by disabling the isp driver (set hint.isp.o.disabled=1), the system  
>>> comes up. This of course denies us access to the external disk array  
>>> hosted by the internal QLogic controller, but pinpoints the problem.
>>>
>>> We tried setting hint.isp.0.prefer_iomap=1, which made no difference  
>>> (though by reading the code, I don't see that it ever used this).
>>>
>>> Can anyone help us out here?
>>
>> Scott, could this be due to a missing MFC of isp_sbus.c rev. 1.36?
> 
> If that would be the case I'd be most happy to hear that. I'll also be 
> more than happy to test, and can do so on relatively short notice (at 
> least for another few hours).
> 
> We have, for the record, gone through some basic troubleshooting: 
> Replaced memory (as this error also can show up under Solaris and is 
> usually an indicator of bad memory), replaced SCSI controller with 
> another one (still isp driven), and testing various device hints - 
> suffice to say we have wasted our time so far ;)
> 

Are you able to compile a new kernel without having to install first?
if so, apply the attached patch and let me know if it works.

Scott
-------------- next part --------------
Index: isp_sbus.c
===================================================================
RCS file: /usr1/ncvs/src/sys/dev/isp/isp_sbus.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- isp_sbus.c	11 May 2007 13:47:28 -0000	1.35
+++ isp_sbus.c	5 Nov 2007 11:22:18 -0000	1.36
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_sbus.c,v 1.35 2007/05/11 13:47:28 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_sbus.c,v 1.36 2007/11/05 11:22:18 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -327,21 +327,26 @@
 	/*
 	 * Make sure we're in reset state.
 	 */
+	ISP_LOCK(isp);
 	isp_reset(isp);
 	if (isp->isp_state != ISP_RESETSTATE) {
 		isp_uninit(isp);
+		ISP_UNLOCK(isp);
 		goto bad;
 	}
 	isp_init(isp);
 	if (isp->isp_role != ISP_ROLE_NONE && isp->isp_state != ISP_INITSTATE) {
 		isp_uninit(isp);
+		ISP_UNLOCK(isp);
 		goto bad;
 	}
 	isp_attach(isp);
 	if (isp->isp_role != ISP_ROLE_NONE && isp->isp_state != ISP_RUNSTATE) {
 		isp_uninit(isp);
+		ISP_UNLOCK(isp);
 		goto bad;
 	}
+	ISP_UNLOCK(isp);
 	return (0);
 
 bad:


More information about the freebsd-stable mailing list