aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/setup.c
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-05-07 19:54:11 -0400
committerH. Peter Anvin <hpa@zytor.com>2009-05-11 20:45:06 -0400
commit5031296c57024a78ddad4edfc993367dbf4abb98 (patch)
tree7506daf7aabf25a5ec567fcd2e644fe22cd91eca /arch/x86/kernel/setup.c
parentfe83fcc0a14dcf71996de5eb84771b2369ba7abc (diff)
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>
Diffstat (limited to 'arch/x86/kernel/setup.c')
-rw-r--r--arch/x86/kernel/setup.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index b4158439bf63..2b093451aec9 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -214,8 +214,8 @@ unsigned long mmu_cr4_features;
214unsigned long mmu_cr4_features = X86_CR4_PAE; 214unsigned long mmu_cr4_features = X86_CR4_PAE;
215#endif 215#endif
216 216
217/* Boot loader ID as an integer, for the benefit of proc_dointvec */ 217/* Boot loader ID and version as integers, for the benefit of proc_dointvec */
218int bootloader_type; 218int bootloader_type, bootloader_version;
219 219
220/* 220/*
221 * Setup options 221 * Setup options
@@ -706,6 +706,12 @@ void __init setup_arch(char **cmdline_p)
706#endif 706#endif
707 saved_video_mode = boot_params.hdr.vid_mode; 707 saved_video_mode = boot_params.hdr.vid_mode;
708 bootloader_type = boot_params.hdr.type_of_loader; 708 bootloader_type = boot_params.hdr.type_of_loader;
709 if ((bootloader_type >> 4) == 0xe) {
710 bootloader_type &= 0xf;
711 bootloader_type |= (boot_params.hdr.ext_loader_type+0x10) << 4;
712 }
713 bootloader_version = bootloader_type & 0xf;
714 bootloader_version |= boot_params.hdr.ext_loader_ver << 4;
709 715
710#ifdef CONFIG_BLK_DEV_RAM 716#ifdef CONFIG_BLK_DEV_RAM
711 rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK; 717 rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK;