[SeaBIOS] [PATCH 7/9] Create mapping between rom address and boot priority.
Gleb Natapov
gleb at redhat.com
Fri Dec 24 18:31:36 CET 2010
On Fri, Dec 24, 2010 at 12:13:14PM -0500, Kevin O'Connor wrote:
> 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 <gleb at redhat.com>
>
> I find this patch confusing. How about the patch below instead?
>
Yes, better indeed. Need to pass actual priority instead of -1.
> -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);
--
Gleb.
More information about the SeaBIOS
mailing list