From owner-freebsd-smp Thu Nov 16 14:59: 5 2000 Delivered-To: freebsd-smp@freebsd.org Received: from pike.osd.bsdi.com (pike.osd.bsdi.com [204.216.28.222]) by hub.freebsd.org (Postfix) with ESMTP id 1A7E237B4D7; Thu, 16 Nov 2000 14:59:01 -0800 (PST) Received: from laptop.baldwin.cx (john@jhb-laptop.osd.bsdi.com [204.216.28.241]) by pike.osd.bsdi.com (8.11.0/8.9.3) with ESMTP id eAGMwnB70239; Thu, 16 Nov 2000 14:58:49 -0800 (PST) (envelope-from jhb@FreeBSD.org) Message-ID: X-Mailer: XFMail 1.4.0 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: Date: Thu, 16 Nov 2000 14:59:28 -0800 (PST) From: John Baldwin To: John Baldwin Subject: Re: cvs commit: src/sys/kern kern_timeout.c Cc: smp@FreeBSD.org, cp@bsdi.com, jake@io.yi.org, Jake Burkholder Sender: owner-freebsd-smp@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org On 16-Nov-00 John Baldwin wrote: >> I think we need a separate spin lock for the callout wheel, ala BSD/OS's >> callout_mtx. Hardclock looks at the callout wheel and is now a fast >> interrupt, so it can't acquire a sleep mutex. Its a little paranoid >> because hardclock doesn't actually traverse any lists, it just checks >> if the current callout bucket is empty, and potentially schedules >> softclock, but you could miss a very short timeout on an smp system. >> ticks could also get incremented in the middle of softclock's test >> for if the callout's time has come. >> >> I have patches that do this and make softclock INTR_MPSAFE, I just need >> to test them. > > Ok. I was about to check the BSD/OS code to see how this was done there. > >> There's actually another major problem with this. The run queue and >> sleep queue use the same list linkage in struct proc, so its not >> safe to release sched_lock while you're on the sleep queue. If >> the process blocks on giant in CURSIG, the sleep queue will get >> corrupted. We really need to split the run queue/sleep queue >> linkage. > > Ugh, ok. I'll do this next then. Grrrr. Grr, wouldn't you know it, bar just died with a double fault because panic: cpu_switch has wchan Happened when I Ctrl-C'd a process. :-P *sigh* -- John Baldwin -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.baldwin.cx/~john/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message