Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Jul 2011 12:45:41 -0400
From:      Ryan Stone <rysto32@gmail.com>
To:        freebsd-net <freebsd-net@freebsd.org>
Subject:   pxeboot hangs if link bounces
Message-ID:  <CAFMmRNzc717KaFk-r8%2BuBYYKq=%2BifQ-1SC0TUjJHKKyiBE5_Pw@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
I'm trying to track down a very mysterious problem I've having with
pxebooting on 8.2-RELEASE and head (as of r224149).  I've found that
if I bring the link to a PXE client down and back up while it's in
pxeboot, pxeboot hangs and never recovers.  I've tried bouncing the
link to the NFS server and I see the same behaviour, so I believe that
the issue is really due to packet loss.  I added printfs to the loader
and I've found that the hang occurs when in vm86int() when it's called
from pxe_call, from readudp.  Once I bring down the link, vm86int()
never returns.  That's a BIOS bug -- PXENV_UDP_READ is defined to be
non-blocking by the spec -- but what utterly mystifies me is that a
6.1-RELEASE pxeldr does not get blocked in a PXENV_UDP_READ call.

I'm going to try a binary search to narrow down what set of changes
introduced the problem, but I'm hoping that somebody might have an
idea as to what could have changed that triggers this BIOS bug.  I've
tried building with -DOLD_NFSv2 but that didn't resolve the problem.

Ryan Stone



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFMmRNzc717KaFk-r8%2BuBYYKq=%2BifQ-1SC0TUjJHKKyiBE5_Pw>