From owner-freebsd-alpha Sun Feb 17 11:53:20 2002 Delivered-To: freebsd-alpha@freebsd.org Received: from duke.cs.duke.edu (duke.cs.duke.edu [152.3.140.1]) by hub.freebsd.org (Postfix) with ESMTP id E7D4637B404 for ; Sun, 17 Feb 2002 11:53:05 -0800 (PST) Received: from grasshopper.cs.duke.edu (grasshopper.cs.duke.edu [152.3.145.30]) by duke.cs.duke.edu (8.9.3/8.9.3) with ESMTP id OAA09400; Sun, 17 Feb 2002 14:53:05 -0500 (EST) Received: (from gallatin@localhost) by grasshopper.cs.duke.edu (8.11.6/8.9.1) id g1HJqZX18433; Sun, 17 Feb 2002 14:52:35 -0500 (EST) (envelope-from gallatin@cs.duke.edu) From: Andrew Gallatin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15472.2563.368794.540600@grasshopper.cs.duke.edu> Date: Sun, 17 Feb 2002 14:52:35 -0500 (EST) To: Rolf Neugebauer Cc: freebsd-alpha@freebsd.org Subject: Re: cvs commit: src/sys/alpha/include cpufunc.h In-Reply-To: References: <200202120120.g1C1Ko136446@freefall.freebsd.org> <20020211204721.A49383@grasshopper.cs.duke.edu> X-Mailer: VM 6.75 under 21.1 (patch 12) "Channel Islands" XEmacs Lucid Sender: owner-freebsd-alpha@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Rolf Neugebauer writes: > I wonder if these are related (disabling device polling "solved" the > problem). Actually, I do have a clue.. Was the machine under load? I never implemented the hooks to poll from trap() -- this means that the only time the polling code will get called is if the context switch code does not find a process ready to run. If the machine is under load, it will never get called. If I'm reading the x86 trap() code correctly, I don't much care for where Luigi put the hook on x86. I think it belongs in userret(). Would you like to try this totally untested patch? Cheers, Drew Index: trap.c =================================================================== RCS file: /home/ncvs/src/sys/alpha/alpha/trap.c,v retrieving revision 1.26.2.4 diff -u -r1.26.2.4 trap.c --- trap.c 5 Mar 2001 21:24:15 -0000 1.26.2.4 +++ trap.c 17 Feb 2002 19:49:14 -0000 @@ -91,6 +91,12 @@ static void printtrap __P((const unsigned long, const unsigned long, const unsigned long, const unsigned long, struct trapframe *, int, int)); + +#ifdef DEVICE_POLLING +extern u_int32_t poll_in_trap; +extern int ether_poll __P((int count)); +#endif /* DEVICE_POLLING */ + /* * Define the code needed before returning to user mode, for * trap and syscall. @@ -102,6 +108,11 @@ u_quad_t oticks; { int sig, s; + +#ifdef DEVICE_POLLING + if (poll_in_trap) + ether_poll(poll_in_trap); +#endif /* DEVICE_POLLING */ /* take pending signals */ while ((sig = CURSIG(p)) != 0) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message