mirror of https://github.com/ipxe/ipxe.git
[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 <mcb30@ipxe.org>pull/1/head
parent
329686c026
commit
8ffea19225
|
@ -866,7 +866,6 @@ endif # defined(BIN)
|
||||||
#
|
#
|
||||||
FINALISE_rom = $(MAKEROM) $(MAKEROM_FLAGS) $(TGT_MAKEROM_FLAGS) \
|
FINALISE_rom = $(MAKEROM) $(MAKEROM_FLAGS) $(TGT_MAKEROM_FLAGS) \
|
||||||
-i$(IDENT) -s 0 $@
|
-i$(IDENT) -s 0 $@
|
||||||
FINALISE_hrom = $(FINALISE_rom)
|
|
||||||
|
|
||||||
# Some ROMs require specific flags to be passed to makerom.pl
|
# Some ROMs require specific flags to be passed to makerom.pl
|
||||||
#
|
#
|
||||||
|
|
|
@ -11,7 +11,6 @@ LDFLAGS += -N --no-check-sections
|
||||||
# Media types.
|
# Media types.
|
||||||
#
|
#
|
||||||
MEDIA += rom
|
MEDIA += rom
|
||||||
MEDIA += hrom
|
|
||||||
MEDIA += pxe
|
MEDIA += pxe
|
||||||
MEDIA += kpxe
|
MEDIA += kpxe
|
||||||
MEDIA += kkpxe
|
MEDIA += kkpxe
|
||||||
|
@ -24,7 +23,6 @@ MEDIA += raw
|
||||||
# Padding rules
|
# Padding rules
|
||||||
#
|
#
|
||||||
PAD_rom = $(PADIMG) --blksize=512 --byte=0xff $@
|
PAD_rom = $(PADIMG) --blksize=512 --byte=0xff $@
|
||||||
PAD_hrom = $(PAD_rom)
|
|
||||||
PAD_dsk = $(PADIMG) --blksize=512 $@
|
PAD_dsk = $(PADIMG) --blksize=512 $@
|
||||||
PAD_hd = $(PADIMG) --blksize=32768 $@
|
PAD_hd = $(PADIMG) --blksize=32768 $@
|
||||||
|
|
||||||
|
|
|
@ -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"
|
|
|
@ -352,7 +352,6 @@ got_pmm: /* PMM allocation succeeded */
|
||||||
call print_character
|
call print_character
|
||||||
movw %si, %ax
|
movw %si, %ax
|
||||||
call print_hex_byte
|
call print_hex_byte
|
||||||
pmm_copy:
|
|
||||||
/* Copy ROM to PMM block */
|
/* Copy ROM to PMM block */
|
||||||
xorw %ax, %ax
|
xorw %ax, %ax
|
||||||
movw %ax, %es
|
movw %ax, %es
|
||||||
|
@ -364,19 +363,7 @@ pmm_copy:
|
||||||
movl %edi, decompress_to
|
movl %edi, decompress_to
|
||||||
/* Shrink ROM */
|
/* Shrink ROM */
|
||||||
movb $_prefix_memsz_sect, romheader_size
|
movb $_prefix_memsz_sect, romheader_size
|
||||||
#ifdef SHRINK_WITHOUT_PMM
|
|
||||||
jmp pmm_done
|
|
||||||
pmm_fail:
|
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 */
|
/* Restore upper register halves */
|
||||||
popal
|
popal
|
||||||
no_pmm:
|
no_pmm:
|
||||||
|
|
Loading…
Reference in New Issue