diskless system freeze in bios16_call() on some Intel motherboards

From: Luigi Rizzo <rizzo_at_icir.org>
Date: Fri, 7 Sep 2007 06:48:51 -0700
Hi,
we are having some annoying problems with a number of Intel
motherboards (Pentium4, ich6 and ich7 based, the laters are on
D945PAW boards with SN94510J.86A bios if that matters).

The symptoms are that booting a 6.x or 7.x kernel with
etherboot causes a system freeze. This happens also if we
try to etherboot the kernel from a 6.2 install CD.

On the other hand, on the same hardware:
- a 4.11 kernel booted with etherboot boots ok.
- a 6.2 install CD boots ok;
- a 6.2 install CD with the kernel replaced with ours boots ok.

So it seems that at least part of the problem is how
the execution environment is set up by etherboot as opposed to
/boot/loader . However, it is still unclear to me why the 4.11 kernel
works.

After some instrumenting, it turns out that the freeze is in the
call to bios16_call, and specifically in this line in
sys/i386/i386/bioscall.s

	        lcallw  *bioscall_vector        /* 16-bit call */

Looking at the arguments there is nothing strange - the selector is
0x70 as on other machines, the address seems reasonable.
If I comment out the lcallw, then things proceed, but apparently the
interrupt for the network card is not set up correctly because the
subsequent bootp replies are not received (i see them on the
server with tcpdump) and have 'watchdog timeout' messages on the console
of the diskless client.

Any ideas on what could the problem be ?

	cheers
	luigi
Received on Fri Sep 07 2007 - 11:50:07 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:17 UTC