x86: add extension fields for bootloader type and version
A long ago, in days of yore, it all began with a god named Thor. There were vikings and boats and some plans for a Linux kernel header. Unfortunately, a single 8-bit field was used for bootloader type and version. This has generally worked without *too* much pain, but we're getting close to flat running out of ID fields. Add extension fields for both type and version. The type will be extended if it the old field is 0xE; the version is a simple MSB extension. Keep /proc/sys/kernel/bootloader_type containing (type << 4) + (ver & 0xf) for backwards compatiblity, but also add /proc/sys/kernel/bootloader_version which contains the full version number. [ Impact: new feature to support more bootloaders ] Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
@@ -214,8 +214,8 @@ unsigned long mmu_cr4_features;
|
||||
unsigned long mmu_cr4_features = X86_CR4_PAE;
|
||||
#endif
|
||||
|
||||
/* Boot loader ID as an integer, for the benefit of proc_dointvec */
|
||||
int bootloader_type;
|
||||
/* Boot loader ID and version as integers, for the benefit of proc_dointvec */
|
||||
int bootloader_type, bootloader_version;
|
||||
|
||||
/*
|
||||
* Setup options
|
||||
@@ -706,6 +706,12 @@ void __init setup_arch(char **cmdline_p)
|
||||
#endif
|
||||
saved_video_mode = boot_params.hdr.vid_mode;
|
||||
bootloader_type = boot_params.hdr.type_of_loader;
|
||||
if ((bootloader_type >> 4) == 0xe) {
|
||||
bootloader_type &= 0xf;
|
||||
bootloader_type |= (boot_params.hdr.ext_loader_type+0x10) << 4;
|
||||
}
|
||||
bootloader_version = bootloader_type & 0xf;
|
||||
bootloader_version |= boot_params.hdr.ext_loader_ver << 4;
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_RAM
|
||||
rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK;
|
||||
|
Reference in New Issue
Block a user