Date: Fri, 7 Sep 2007 06:48:51 -0700 From: Luigi Rizzo <rizzo@icir.org> To: current@freebsd.org Subject: diskless system freeze in bios16_call() on some Intel motherboards Message-ID: <20070907064851.A95655@xorpc.icir.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070907064851.A95655>
