All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	andi@firstfloor.org, akpm@linux-foundation.org
Cc: "H. Peter Anvin" <hpa@zytor.com>
Subject: [x86 setup 10/33] Make struct boot_params a real structure, and remove obsolete fields
Date: Mon,  9 Jul 2007 19:51:49 -0700	[thread overview]
Message-ID: <11840369841576-git-send-email-hpa@zytor.com> (raw)
Message-ID: <0ff939788c542b0560ec39668550557dcc134afe.1184032749.git.hpa@zytor.com> (raw)
In-Reply-To: <11840368791603-git-send-email-hpa@zytor.com>
In-Reply-To: <2034f71d414def30de582fb59573295cadbdabb4.1184032748.git.hpa@zytor.com>

From: H. Peter Anvin <hpa@zytor.com>

Make struct boot_params a real structure, and remove the handling of
some obsolete fields, in particular hd*_info, which was only used by
the ST-506 driver, and likely to be wrong for that driver on any
modern BIOS.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
 arch/i386/kernel/setup.c       |   12 +-----
 include/asm-i386/bootparam.h   |   85 ++++++++++++++++++++++++++++++++++++++++
 include/asm-i386/setup.h       |   10 +++--
 include/asm-x86_64/boot.h      |   16 +-------
 include/asm-x86_64/bootparam.h |    1 +
 5 files changed, 94 insertions(+), 30 deletions(-)
 create mode 100644 include/asm-i386/bootparam.h
 create mode 100644 include/asm-x86_64/bootparam.h

diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 698c24f..2d61e65 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -102,19 +102,10 @@ static unsigned int highmem_pages = -1;
 /*
  * Setup options
  */
-struct drive_info_struct { char dummy[32]; } drive_info;
-#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || \
-    defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE)
-EXPORT_SYMBOL(drive_info);
-#endif
 struct screen_info screen_info;
 EXPORT_SYMBOL(screen_info);
 struct apm_info apm_info;
 EXPORT_SYMBOL(apm_info);
-struct sys_desc_table_struct {
-	unsigned short length;
-	unsigned char table[0];
-};
 struct edid_info edid_info;
 EXPORT_SYMBOL_GPL(edid_info);
 struct ist_info ist_info;
@@ -134,7 +125,7 @@ unsigned long saved_videomode;
 
 static char __initdata command_line[COMMAND_LINE_SIZE];
 
-unsigned char __initdata boot_params[PARAM_SIZE];
+struct boot_params __initdata boot_params;
 
 #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
 struct edd edd;
@@ -528,7 +519,6 @@ void __init setup_arch(char **cmdline_p)
 #endif
 
  	ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
- 	drive_info = DRIVE_INFO;
  	screen_info = SCREEN_INFO;
 	edid_info = EDID_INFO;
 	apm_info.bios = APM_BIOS_INFO;
diff --git a/include/asm-i386/bootparam.h b/include/asm-i386/bootparam.h
new file mode 100644
index 0000000..427d865
--- /dev/null
+++ b/include/asm-i386/bootparam.h
@@ -0,0 +1,85 @@
+#ifndef _ASM_BOOTPARAM_H
+#define _ASM_BOOTPARAM_H
+
+#include <linux/types.h>
+#include <linux/screen_info.h>
+#include <linux/apm_bios.h>
+#include <asm/e820.h>
+#include <linux/edd.h>
+#include <video/edid.h>
+
+struct setup_header {
+	u8	setup_sects;
+	u16	root_flags;
+	u32	syssize;
+	u16	ram_size;
+	u16	vid_mode;
+	u16	root_dev;
+	u16	boot_flag;
+	u16	jump;
+	u32	header;
+	u16	version;
+	u32	realmode_swtch;
+	u16	start_sys;
+	u16	kernel_version;
+	u8	type_of_loader;
+	u8	loadflags;
+#define LOADED_HIGH	0x01
+#define CAN_USE_HEAP	0x80
+	u16	setup_move_size;
+	u32	code32_start;
+	u32	ramdisk_image;
+	u32	ramdisk_size;
+	u32	bootsect_kludge;
+	u16	heap_end_ptr;
+	u16	_pad1;
+	u32	cmd_line_ptr;
+	u32	initrd_addr_max;
+	u32	kernel_alignment;
+	u8	relocatable_kernel;
+} __attribute__((packed));
+
+struct sys_desc_table {
+	u16 length;
+	u8  table[14];
+};
+
+struct efi_info {
+	u32 _pad1;
+	u32 efi_systab;
+	u32 efi_memdesc_size;
+	u32 efi_memdec_version;
+	u32 efi_memmap;
+	u32 fi_memmap_size;
+	u32 _pad2[2];
+};
+
+/* The so-called "zeropage" */
+struct boot_params {
+	struct screen_info screen_info;			/* 0x000 */
+	struct apm_bios_info apm_bios_info;		/* 0x040 */
+	u8  _pad2[12];					/* 0x054 */
+	u32 speedstep_info[4];				/* 0x060 */
+	u8  _pad3[16];					/* 0x070 */
+	u8  hd0_info[16];	/* obsolete! */		/* 0x080 */
+	u8  hd1_info[16];	/* obsolete! */		/* 0x090 */
+	struct sys_desc_table sys_desc_table;		/* 0x0a0 */
+	u8  _pad4[144];					/* 0x0b0 */
+	struct edid_info edid_info;			/* 0x140 */
+	struct efi_info efi_info;			/* 0x1c0 */
+	u32 alt_mem_k;					/* 0x1e0 */
+	u32 scratch;		/* Scratch field! */	/* 0x1e4 */
+	u8  e820_entries;				/* 0x1e8 */
+	u8  eddbuf_entries;				/* 0x1e9 */
+	u8  edd_mbr_sig_buf_entries;			/* 0x1ea */
+	u8  _pad6[6];					/* 0x1eb */
+	struct setup_header hdr;    /* setup header */	/* 0x1f1 */
+	u8  _pad7[0x290-0x1f1-sizeof(struct setup_header)];
+	u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];	/* 0x290 */
+	struct e820entry e820_map[E820MAX];		/* 0x2d0 */
+	u8  _pad8[48];					/* 0xcd0 */
+	struct edd_info eddbuf[EDDMAXNR];		/* 0xd00 */
+	u8  _pad9[276];					/* 0xeec */
+} __attribute__((packed));
+
+#endif /* _ASM_BOOTPARAM_H */
diff --git a/include/asm-i386/setup.h b/include/asm-i386/setup.h
index 0e8077c..0d5bff9 100644
--- a/include/asm-i386/setup.h
+++ b/include/asm-i386/setup.h
@@ -26,12 +26,15 @@
 #define NEW_CL_POINTER		0x228	/* Relative to real mode data */
 
 #ifndef __ASSEMBLY__
+
+#include <asm/bootparam.h>
+
 /*
  * This is set up by the setup-routine at boot-time
  */
-extern unsigned char boot_params[PARAM_SIZE];
+extern struct boot_params boot_params;
 
-#define PARAM	(boot_params)
+#define PARAM	((char *)&boot_params)
 #define SCREEN_INFO (*(struct screen_info *) (PARAM+0))
 #define EXT_MEM_K (*(unsigned short *) (PARAM+2))
 #define ALT_MEM_K (*(unsigned long *) (PARAM+0x1e0))
@@ -39,8 +42,7 @@ extern unsigned char boot_params[PARAM_SIZE];
 #define E820_MAP    ((struct e820entry *) (PARAM+E820MAP))
 #define APM_BIOS_INFO (*(struct apm_bios_info *) (PARAM+0x40))
 #define IST_INFO   (*(struct ist_info *) (PARAM+0x60))
-#define DRIVE_INFO (*(struct drive_info_struct *) (PARAM+0x80))
-#define SYS_DESC_TABLE (*(struct sys_desc_table_struct*)(PARAM+0xa0))
+#define SYS_DESC_TABLE (*(struct sys_desc_table *)(PARAM+0xa0))
 #define EFI_SYSTAB ((efi_system_table_t *) *((unsigned long *)(PARAM+0x1c4)))
 #define EFI_MEMDESC_SIZE (*((unsigned long *) (PARAM+0x1c8)))
 #define EFI_MEMDESC_VERSION (*((unsigned long *) (PARAM+0x1cc)))
diff --git a/include/asm-x86_64/boot.h b/include/asm-x86_64/boot.h
index 96b228e..3c46cea 100644
--- a/include/asm-x86_64/boot.h
+++ b/include/asm-x86_64/boot.h
@@ -1,15 +1 @@
-#ifndef _LINUX_BOOT_H
-#define _LINUX_BOOT_H
-
-/* Don't touch these, unless you really know what you're doing. */
-#define DEF_INITSEG	0x9000
-#define DEF_SYSSEG	0x1000
-#define DEF_SETUPSEG	0x9020
-#define DEF_SYSSIZE	0x7F00
-
-/* Internal svga startup constants */
-#define NORMAL_VGA	0xffff		/* 80x25 mode */
-#define EXTENDED_VGA	0xfffe		/* 80x50 mode */
-#define ASK_VGA		0xfffd		/* ask for it at bootup */
-
-#endif
+#include <asm-i386/boot.h>
diff --git a/include/asm-x86_64/bootparam.h b/include/asm-x86_64/bootparam.h
new file mode 100644
index 0000000..aa82e52
--- /dev/null
+++ b/include/asm-x86_64/bootparam.h
@@ -0,0 +1 @@
+#include <asm-i386/bootparam.h>
-- 
1.5.2.2


  parent reply	other threads:[~2007-07-10  3:16 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-10  2:51 x86 setup code rewrite in C H. Peter Anvin
2007-07-10  2:51 ` [x86 setup 01/33] x86 setup: MAINTAINERS: formally take responsibility for the i386 boot code H. Peter Anvin
2007-07-10  2:51   ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 02/33] hd.c: remove BIOS/CMOS queries H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 03/33] include/asm-i386/boot.h: This is <asm/boot.h>, not <linux/boot.h> H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 04/33] Unify the CPU features vectors between i386 and x86-64 H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 05/33] Change CONFIG_X86_MINIMUM_CPU_MODEL to CONFIG_X86_MINIMUM_CPU_FAMILY H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 06/33] Clean up struct screen_info (<linux/screen_info.h>) H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 07/33] Use a new CPU feature word to cover all Intel features that are spread around H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 08/33] Define zero-page offset 0x1e4 as a scratch field, and use it H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 09/33] Make definitions for struct e820entry and struct e820map consistent H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10 11:48     ` Andi Kleen
2007-07-10  2:51   ` H. Peter Anvin [this message]
2007-07-10  2:51     ` [x86 setup 10/33] Make struct boot_params a real structure, and remove obsolete fields H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 11/33] x86-64: add CONFIG_PHYSICAL_ALIGN for consistency with i386 H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 12/33] x86-64: add symbolic constants for the boot segment selectors H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 13/33] Header file to produce 16-bit code with gcc H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10 14:16       ` Segher Boessenkool
2007-07-10 15:21         ` Andi Kleen
2007-07-10 15:48           ` H. Peter Anvin
2007-07-10 15:53             ` H. Peter Anvin
2007-07-10 20:08             ` Segher Boessenkool
2007-07-10 20:43               ` H. Peter Anvin
2007-07-10 21:08                 ` Pawel Dziepak
2007-07-10 21:20                   ` H. Peter Anvin
2007-07-11  0:26                   ` Brian Gerst
2007-07-10 19:57           ` Segher Boessenkool
2007-07-10 20:42             ` H. Peter Anvin
2007-07-10 21:10               ` Segher Boessenkool
2007-07-10 21:40                 ` H. Peter Anvin
2007-07-10 22:06                   ` Segher Boessenkool
2007-07-10 21:43               ` Adrian Bunk
2007-07-10 21:46                 ` H. Peter Anvin
2007-07-11  0:30                 ` Brian Gerst
2007-07-10  2:51   ` [x86 setup 14/33] Top header file for new x86 setup code H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 15/33] Simple bitops for the " H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 16/33] String-handling functions " H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10 18:25       ` Jan Engelhardt
2007-07-10 18:35         ` H. Peter Anvin
2007-07-10 20:10           ` Segher Boessenkool
2007-07-10 20:44             ` H. Peter Anvin
2007-07-10 21:14               ` Segher Boessenkool
2007-07-11 12:46                 ` Andi Kleen
2007-07-10  2:51   ` [x86 setup 17/33] A20 handling code H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10 18:27       ` Jan Engelhardt
2007-07-10 18:33         ` H. Peter Anvin
2007-07-10 18:36         ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 18/33] APM probing code H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 19/33] Command-line parsing code for the new x86 setup code H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10  2:51   ` [x86 setup 20/33] Console-writing " H. Peter Anvin
2007-07-10  2:51     ` H. Peter Anvin
2007-07-10 18:35       ` Jan Engelhardt
2007-07-10 18:48         ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 21/33] Version string " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 22/33] CPU features verification " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  7:37       ` Sébastien Dugué
2007-07-10  7:37         ` Sébastien Dugué
2007-07-10  2:52   ` [x86 setup 23/33] EDD probing code " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 24/33] MCA support for " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 25/33] Memory probing support for the " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 26/33] Voyager " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 27/33] Video mode probing " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 28/33] Code for actual protected-mode entry H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 29/33] Assembly header and main routine for new x86 setup code H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 30/33] Linker script for the " H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 31/33] Use the new x86 setup code for i386 H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  7:55       ` Tilman Schmidt
2007-07-10  2:52   ` [x86 setup 32/33] Use the new x86 setup code for x86-64; unify with i386 H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  2:52   ` [x86 setup 33/33] Remove old i386 setup code H. Peter Anvin
2007-07-10  2:52     ` H. Peter Anvin
2007-07-10  4:24 ` x86 setup code rewrite in C Yinghai Lu
2007-07-10  4:39   ` H. Peter Anvin
2007-07-10  5:25 ` Jeff Garzik
2007-07-10 16:24 ` Jeremy Fitzhardinge
  -- strict thread matches above, loose matches on Subject: below --
2007-07-11 19:18 x86 setup code rewrite in C - revised H. Peter Anvin
2007-07-11 19:18 ` [x86 setup 01/33] x86 setup: MAINTAINERS: formally take responsibility for the i386 boot code H. Peter Anvin
2007-07-11 19:18   ` [x86 setup 02/33] hd.c: remove BIOS/CMOS queries H. Peter Anvin
2007-07-11 19:18     ` [x86 setup 03/33] include/asm-i386/boot.h: This is <asm/boot.h>, not <linux/boot.h> H. Peter Anvin
2007-07-11 19:18       ` [x86 setup 04/33] Unify the CPU features vectors between i386 and x86-64 H. Peter Anvin
2007-07-11 19:18         ` [x86 setup 05/33] Change CONFIG_X86_MINIMUM_CPU_MODEL to CONFIG_X86_MINIMUM_CPU_FAMILY H. Peter Anvin
2007-07-11 19:18           ` [x86 setup 06/33] Clean up struct screen_info (<linux/screen_info.h>) H. Peter Anvin
2007-07-11 19:18             ` [x86 setup 07/33] Use a new CPU feature word to cover all Intel features that are spread around H. Peter Anvin
2007-07-11 19:18               ` [x86 setup 08/33] Define zero-page offset 0x1e4 as a scratch field, and use it H. Peter Anvin
2007-07-11 19:18                 ` [x86 setup 09/33] Make definitions for struct e820entry and struct e820map consistent H. Peter Anvin
2007-07-11 19:18                   ` [x86 setup 01/33] x86 setup: MAINTAINERS: formally take responsibility for the i386 boot code H. Peter Anvin
2007-07-11 19:18                     ` [x86 setup 10/33] Make struct boot_params a real structure, and remove obsolete fields H. Peter Anvin
2007-07-11 19:18                       ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11840369841576-git-send-email-hpa@zytor.com \
    --to=hpa@zytor.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.