Subject: Re: System hangs after BIOSCALL
To: NetBSD i386 Mailing List <port-i386@netbsd.org>
From: Brian Clough <Brian_Clough@phoenix.com>
List: port-i386
Date: 10/17/2001 17:31:40
I hate it when that happens.  I had this working, but when I went to clean up my
code for check-in, then did another build, it hung again.

Okay, here's where I am right now.  When I return from bioscall, after doing a
VESA function 02, the timer interrupt pending bit is set on port 20.  That means
the once execution hits the halt, in the CPU idle loop it can never proceed
because the hardware is waiting for an interrupt service to complete, and clear
that bit, before it can accept another timer tick.

I tried masking out the timer IRQ before calling bioscall, then re-enabling it
afterwards.  That seemed to work at first, but now it looks like it wasn't a very
robust solution.  After making a couple of minor changes to the driver, the system
started hanging again.

Does anyone know why the "IRQ0 pending" bit should be set when I return from
bioscall?

As I said before, I don't have this problem with other VESA functions, just
function 02, and it happens with more than one video BIOS (different video
cards).  

-- 
Brian Clough
OS Development Group, Norwood, MA
x(82)5015
(781)551-5015
mailto:brian_clough@phoenix.com