From 8ffea19225a450f2bde34510d9c2c913ac0c0021 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 19 Apr 2010 20:38:35 +0100 Subject: [PATCH] [romprefix] Remove .hrom prefix The .hrom prefix provides an experimental mechanism for reducing option ROM space usage on systems where PMM allocation fails, by pretending that PMM allocation succeeded and gave us an address fixed at compilation time. This is unreliable, and potentially dangerous. In particular, when multiple gPXE ROMs are present in a system, each gPXE ROM will assume ownership of the same fixed address, resulting in undefined behaviour. Signed-off-by: Michael Brown --- src/Makefile.housekeeping | 1 - src/arch/i386/Makefile.pcbios | 2 -- src/arch/i386/prefix/hromprefix.S | 12 ------------ src/arch/i386/prefix/romprefix.S | 13 ------------- 4 files changed, 28 deletions(-) delete mode 100644 src/arch/i386/prefix/hromprefix.S diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping index efd85ea3..a7162e6f 100644 --- a/src/Makefile.housekeeping +++ b/src/Makefile.housekeeping @@ -866,7 +866,6 @@ endif # defined(BIN) # FINALISE_rom = $(MAKEROM) $(MAKEROM_FLAGS) $(TGT_MAKEROM_FLAGS) \ -i$(IDENT) -s 0 $@ -FINALISE_hrom = $(FINALISE_rom) # Some ROMs require specific flags to be passed to makerom.pl # diff --git a/src/arch/i386/Makefile.pcbios b/src/arch/i386/Makefile.pcbios index dcabbdf7..e3c33872 100644 --- a/src/arch/i386/Makefile.pcbios +++ b/src/arch/i386/Makefile.pcbios @@ -11,7 +11,6 @@ LDFLAGS += -N --no-check-sections # Media types. # MEDIA += rom -MEDIA += hrom MEDIA += pxe MEDIA += kpxe MEDIA += kkpxe @@ -24,7 +23,6 @@ MEDIA += raw # Padding rules # PAD_rom = $(PADIMG) --blksize=512 --byte=0xff $@ -PAD_hrom = $(PAD_rom) PAD_dsk = $(PADIMG) --blksize=512 $@ PAD_hd = $(PADIMG) --blksize=32768 $@ diff --git a/src/arch/i386/prefix/hromprefix.S b/src/arch/i386/prefix/hromprefix.S deleted file mode 100644 index 03acf1e2..00000000 --- a/src/arch/i386/prefix/hromprefix.S +++ /dev/null @@ -1,12 +0,0 @@ -/***************************************************************************** - * ROM prefix that relocates to HIGHMEM_LOADPOINT during POST if PMM allocation - * fails. Intended to be used, with caution, on BIOSes that support PCI3.00 but - * have limited PMM support, such as most AMI BIOSes. - ***************************************************************************** - */ - -FILE_LICENCE ( GPL2_OR_LATER ) - -#define SHRINK_WITHOUT_PMM - -#include "romprefix.S" diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S index e7d146eb..2d70cd21 100644 --- a/src/arch/i386/prefix/romprefix.S +++ b/src/arch/i386/prefix/romprefix.S @@ -352,7 +352,6 @@ got_pmm: /* PMM allocation succeeded */ call print_character movw %si, %ax call print_hex_byte -pmm_copy: /* Copy ROM to PMM block */ xorw %ax, %ax movw %ax, %es @@ -364,19 +363,7 @@ pmm_copy: movl %edi, decompress_to /* Shrink ROM */ movb $_prefix_memsz_sect, romheader_size -#ifdef SHRINK_WITHOUT_PMM - jmp pmm_done pmm_fail: - /* Print marker and copy ourselves to high memory */ - movl $HIGHMEM_LOADPOINT, image_source - xorw %di, %di - movb $( '!' ), %al - call print_character - jmp pmm_copy -pmm_done: -#else -pmm_fail: -#endif /* Restore upper register halves */ popal no_pmm: