]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[pcbios] Add extra debugging messages when unhiding iPXE from memory
authorMichael Brown <mcb30@ipxe.org>
Fri, 8 Mar 2013 12:22:56 +0000 (12:22 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 8 Mar 2013 17:40:46 +0000 (17:40 +0000)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/firmware/pcbios/hidemem.c

index c1788b3a3eda92ee48f1f2dd99c4ecdef48b26ab..8f3069e18eaba0c3ffc63d9c3be168f03834ed7b 100644 (file)
@@ -190,6 +190,8 @@ static void hide_etherboot ( void ) {
  * possible.
  */
 static void unhide_etherboot ( int flags __unused ) {
+       struct memory_map memmap;
+       int rc;
 
        /* If we have more than one hooked interrupt at this point, it
         * means that some other vector is still hooked, in which case
@@ -203,15 +205,23 @@ static void unhide_etherboot ( int flags __unused ) {
                return;
        }
 
-       /* Try to unhook INT 15.  If it fails, then just leave it
-        * hooked; it takes care of protecting itself.  :)
-        */
-       unhook_bios_interrupt ( 0x15, ( unsigned int ) int15,
-                               &int15_vector );
+       /* Try to unhook INT 15 */
+       if ( ( rc = unhook_bios_interrupt ( 0x15, ( unsigned int ) int15,
+                                           &int15_vector ) ) != 0 ) {
+               DBG ( "Cannot unhook INT15: %s\n", strerror ( rc ) );
+               /* Leave it hooked; there's nothing else we can do,
+                * and it should be intrinsically safe (though
+                * wasteful of RAM).
+                */
+       }
 
        /* Unhook fake E820 map, if used */
        if ( FAKE_E820 )
                unfake_e820();
+
+       /* Dump memory map after unhiding */
+       DBG ( "Unhidden iPXE from system memory map\n" );
+       get_memmap ( &memmap );
 }
 
 /** Hide Etherboot startup function */