On Thu, Dec 23, 2010 at 11:29:41AM +0200, Gleb Natapov wrote: > At the time of bev/bcv initialization the device rom was loaded from is > no longer know. Only memory address where rom resides is know at this > point. This patch create mapping between boot priority and rom address > at rom initialization time for use during bev/bcv init. > > Signed-off-by: Gleb Natapov <g...@redhat.com>
I find this patch confusing. How about the patch below instead? -Kevin diff --git a/src/optionroms.c b/src/optionroms.c index 854c33f..579fdd8 100644 --- a/src/optionroms.c +++ b/src/optionroms.c @@ -195,13 +195,17 @@ copy_rom(struct rom_header *rom) return (void*)RomEnd; } +static u8 RomPriority[(BUILD_BIOS_ADDR - BUILD_ROM_START) / OPTION_ROM_ALIGN]; + // Run rom init code and note rom size. static int -init_optionrom(struct rom_header *rom, u16 bdf, int isvga) +init_optionrom(struct rom_header *rom, u16 bdf, int isvga, u8 prio) { if (! is_valid_rom(rom)) return -1; + RomPriority[((u32)rom - BUILD_ROM_START) / OPTION_ROM_ALIGN] = prio; + if (isvga || get_pnp_rom(rom)) // Only init vga and PnP roms here. callrom(rom, bdf); @@ -249,7 +253,7 @@ run_file_roms(const char *prefix, int isvga) break; int ret = romfile_copy(file, (void*)RomEnd, max_rom() - RomEnd); if (ret > 0) - init_optionrom((void*)RomEnd, 0, isvga); + init_optionrom((void*)RomEnd, 0, isvga, -1); } } @@ -342,7 +346,7 @@ init_pcirom(u16 bdf, int isvga) if (! rom) // No ROM present. return -1; - return init_optionrom(rom, bdf, isvga); + return init_optionrom(rom, bdf, isvga, -1); } @@ -364,7 +368,7 @@ optionrom_setup(void) // Option roms are already deployed on the system. u32 pos = RomEnd; while (pos < max_rom()) { - int ret = init_optionrom((void*)pos, 0, 0); + int ret = init_optionrom((void*)pos, 0, 0, -1); if (ret) pos += OPTION_ROM_ALIGN; else @@ -430,7 +434,7 @@ vga_setup(void) if (CONFIG_OPTIONROMS_DEPLOYED) { // Option roms are already deployed on the system. - init_optionrom((void*)BUILD_ROM_START, 0, 1); + init_optionrom((void*)BUILD_ROM_START, 0, 1, -1); } else { // Clear option rom memory memset((void*)RomEnd, 0, _max_rom() - RomEnd); _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org http://www.seabios.org/mailman/listinfo/seabios