From owner-freebsd-current Mon Nov 30 19:30:36 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id TAA05344 for freebsd-current-outgoing; Mon, 30 Nov 1998 19:30:36 -0800 (PST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.15.68.22]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA05337 for ; Mon, 30 Nov 1998 19:30:32 -0800 (PST) (envelope-from bde@godzilla.zeta.org.au) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.7/8.8.7) id OAA20453; Tue, 1 Dec 1998 14:30:14 +1100 Date: Tue, 1 Dec 1998 14:30:14 +1100 From: Bruce Evans Message-Id: <199812010330.OAA20453@godzilla.zeta.org.au> To: geoffb@demon.net, mike@smith.net.au Subject: Re: sio breakage Cc: andyf@speednet.com.au, bde@zeta.org.au, freebsd-current@FreeBSD.ORG, johan@granlund.nu, ortmann@sparc.isl.net Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG >> I was assuming the serial interface which is a fixed one breaking out of >> the back of the Laptop had nothing to do with the PCMCIA, > >You're quite correct; it doesn't. There's *something* holding up both >your interrupt handlers and the tty soft interrupt; maybe even possibly the >same thing that causes the "calcru: negative time for ..." messages. something() { asm("cli"); asm("sti"); } This disables interrupts for 0 user instructions, but if a pagefault occurs for reading the "sti" instruction, it disables interrupts for hundreds, thousands or millions of kernel instructions. something_more_likely() { asm("cli"); var = 0; asm("sti"); } This disables interrupts for 1 or 2 user instructions, but if a pagefault occurs for reading a critical instruction or more likely for accessing the variable, it disables interrupts for hundreds, thousands or millions of kernel instructions. Fixes: kernel: send a fatal signal to applications that do this. applications: don't do this. If interrupts must be disabled, then all critical code and data must be within one page. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message