Date: Sat, 21 Feb 1998 11:19:59 -0500 (EST) From: "John S. Dyson" <dyson@FreeBSD.ORG> To: toasty@home.dragondata.com (Kevin Day) Cc: toasty@home.dragondata.com, current@FreeBSD.ORG Subject: Re: panic: rslock: cpu: 1 during boot on current kernel (was: panic: vm_page_unwire: invalid wire count: 0) Message-ID: <199802211619.LAA00694@dyson.iquest.net> In-Reply-To: <199802211612.KAA14359@home.dragondata.com> from Kevin Day at "Feb 21, 98 10:12:35 am"
next in thread | previous in thread | raw e-mail | index | archive | help
Kevin Day said: > One final thing, I cvsupped today's kernel, and I get: > > APIC_IO: routing 8254 via 8259 on pin 0 > Considering FFS root f/s. > SMP: AP CPU #1 Launched! > SMP: CPU1 apic_initialize(): > lint0: 0x00010700 lint1: 0x00010400 TPR: 0x00000000 SVR: 0x0000001ff > panic: rslock: cpu 1, addr: 0xf021e8d0, lock: 0x01000001 > mp_lock = 01000002; cpuid = 1; lapic.id = 01000000 > Debugger("panic") > > It then locks up. > > I've tried changing the PCI video card back to an ISA one(mentioned below), > no help with either problem. > > Going back to a 02/15/98 kernel stops this panic: rslock from happening. > Somewhere between those dates something broke SMP on my motherboard. > I had the same problem. There is a bug in clock.c (or nearby) where the clock_lock simplelock is gained recursively. I don't know how to officially fix it (since I am not in the SMP loop), but below makes the problem go-away until whomever broke it can fix it: Index: clock.c =================================================================== RCS file: /local/home/ncvs/src/sys/i386/isa/clock.c,v retrieving revision 1.111 diff -C2 -r1.111 clock.c *** clock.c 1998/02/20 16:35:37 1.111 --- clock.c 1998/02/21 10:32:11 *************** *** 1055,1059 **** ef = read_eflags(); ! disable_intr(); /* Select timer0 and latch counter value. */ --- 1055,1059 ---- ef = read_eflags(); ! __asm __volatile("cli" : : : "memory"); /* Select timer0 and latch counter value. */ *************** *** 1071,1074 **** --- 1071,1075 ---- i8254_lastcount = count; count += i8254_offset; + write_eflags(ef); return (count); -- John | Never try to teach a pig to sing, dyson@freebsd.org | it just makes you look stupid, jdyson@nc.com | and it irritates the pig. 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?199802211619.LAA00694>