diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2011-04-11 23:02:11 -0700 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2011-04-12 14:41:24 -0700 |
commit | 787ca77736848e5d3967e5823d009cfe1ddcb833 (patch) | |
tree | ab566f44e13c4dfd83dd13a3bb51777674b2e2f2 /core/fs/pxe/pxe.c | |
parent | abf7a9d75878f7eac2fc363d934fce52fa33f532 (diff) | |
download | syslinux-787ca77736848e5d3967e5823d009cfe1ddcb833.tar.gz |
core: pxe: Cleanup properly when using undi.
Unhook the interrupt handler and stop the undi processing to
make it save to exit, and allows unload_pxe to start succeeding
again.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'core/fs/pxe/pxe.c')
-rw-r--r-- | core/fs/pxe/pxe.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/core/fs/pxe/pxe.c b/core/fs/pxe/pxe.c index 96c6e7b5..50f205f7 100644 --- a/core/fs/pxe/pxe.c +++ b/core/fs/pxe/pxe.c @@ -1420,6 +1420,8 @@ void unload_pxe(void) uint16_t Status; /* All calls have this as the first member */ } unload_call; + pxe_cleanup_isr(); + dprintf("FBM before unload = %d\n", BIOS_fbm); err = reset_pxe(); @@ -1438,7 +1440,8 @@ void unload_pxe(void) memset(&unload_call, 0, sizeof unload_call); err = pxe_call(api, &unload_call); if (err || unload_call.Status != PXENV_STATUS_SUCCESS) { - dprintf("PXE unload API call %04x failed\n", api); + dprintf("PXE unload API call %04x failed: 0x%x\n", + api, unload_call.Status); goto cant_free; } } |