Replace "CONFIG_OPTIONROMS_CHECKSUM" with "etc/optionroms-checksum" file.
authorKevin O'Connor <kevin@koconnor.net>
Wed, 6 Jul 2011 00:47:35 +0000 (20:47 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Wed, 6 Jul 2011 00:47:35 +0000 (20:47 -0400)
src/Kconfig
src/optionroms.c

index 7a4d50a2c7d41946a1f9336fafb9091f49d56c72..3f633747d0427f238474d38df7c2cada491c5510 100644 (file)
@@ -248,17 +248,6 @@ menu "BIOS interfaces"
             Select this if option ROMs are already copied to
             0xc0000-0xf0000.  This must only be selected when using
             Bochs or QEMU versions older than 0.12.
-    config OPTIONROMS_CHECKSUM
-        depends on OPTIONROMS
-        bool "Require correct checksum on option ROMs"
-        default y
-        help
-            Option ROMs are required to have correct checksums.
-            However, some option ROMs in the wild don't correctly
-            follow the specifications and have bad checksums.
-            Say N here to allow SeaBIOS to execute them anyways.
-
-            If unsure, say Y.
     config PMM
         depends on OPTIONROMS
         bool "PMM interface"
index b5a4297e16efb02b94f724bfca4be41ad3d4ad66..3839497f3b6907d775b8586cfa5a93cee578cc4d 100644 (file)
@@ -116,6 +116,8 @@ call_bcv(u16 seg, u16 ip)
     __callrom(MAKE_FLATPTR(seg, 0), ip, 0);
 }
 
+static int EnforceChecksum;
+
 // Verify that an option rom looks valid
 static int
 is_valid_rom(struct rom_header *rom)
@@ -131,7 +133,7 @@ is_valid_rom(struct rom_header *rom)
     if (sum != 0) {
         dprintf(1, "Found option rom with bad checksum: loc=%p len=%d sum=%x\n"
                 , rom, len, sum);
-        if (CONFIG_OPTIONROMS_CHECKSUM)
+        if (EnforceChecksum)
             return 0;
     }
     return 1;
@@ -468,6 +470,8 @@ vga_setup(void)
 
     dprintf(1, "Scan for VGA option rom\n");
 
+    EnforceChecksum = romfile_loadint("etc/optionroms-checksum", 1);
+
     if (CONFIG_OPTIONROMS_DEPLOYED) {
         // Option roms are already deployed on the system.
         init_optionrom((void*)BUILD_ROM_START, 0, 1);