* [PATCH] MCA: garbage collect sys_desc_table
@ 2015-07-08 17:14 Paolo Pisati
2015-07-08 17:14 ` Paolo Pisati
2015-07-10 9:06 ` Resend: Re: [PATCH] x86: MCA: garbage collect sys_desc_table Paolo Pisati
0 siblings, 2 replies; 6+ messages in thread
From: Paolo Pisati @ 2015-07-08 17:14 UTC (permalink / raw)
To: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, x86, linux-kernel
Is sys_desc_table still used anywhere? It seems not:
arch/x86/boot/mca.c::query_mca()
...
copy_from_fs(&boot_params.sys_desc_table, oreg.bx, len);
...
arch/x86/kernel/setup.c::setup_arch()
...
if (boot_params.sys_desc_table.length != 0) {
machine_id = boot_params.sys_desc_table.table[0];
machine_submodel_id = boot_params.sys_desc_table.table[1];
BIOS_revision = boot_params.sys_desc_table.table[2];
}
...
$ git grep machine_id
...
arch/x86/include/asm/processor.h:extern unsigned int machine_id;
arch/x86/kernel/setup.c:unsigned int machine_id;
arch/x86/kernel/setup.c: machine_id = boot_params.sys_desc_table.table[0];
...
$ git grep machine_submodel_id
arch/x86/include/asm/processor.h:extern unsigned int machine_submodel_id;
arch/x86/kernel/setup.c:unsigned int machine_submodel_id;
arch/x86/kernel/setup.c: machine_submodel_id = boot_params.sys_desc_table.table[1];
$ git grep BIOS_revision
arch/x86/include/asm/processor.h:extern unsigned int BIOS_revision;
arch/x86/kernel/setup.c:unsigned int BIOS_revision;
arch/x86/kernel/setup.c: BIOS_revision = boot_params.sys_desc_table.table[2];
Compile tested with i386_defconfig, x86_64_defconfig and allyesconfig.
Paolo Pisati (1):
MCA: garbage collect sys_desc_table
Documentation/x86/zero-page.txt | 1 -
arch/x86/boot/Makefile | 2 +-
arch/x86/boot/boot.h | 3 ---
arch/x86/boot/compressed/eboot.c | 4 ----
arch/x86/boot/main.c | 3 ---
arch/x86/boot/mca.c | 38 -----------------------------------
arch/x86/include/asm/processor.h | 8 --------
arch/x86/include/uapi/asm/bootparam.h | 19 +++++++-----------
arch/x86/kernel/kexec-bzimage64.c | 3 ---
arch/x86/kernel/setup.c | 5 -----
10 files changed, 8 insertions(+), 78 deletions(-)
delete mode 100644 arch/x86/boot/mca.c
--
2.1.4
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH] MCA: garbage collect sys_desc_table 2015-07-08 17:14 [PATCH] MCA: garbage collect sys_desc_table Paolo Pisati @ 2015-07-08 17:14 ` Paolo Pisati 2015-07-16 16:13 ` Thomas Gleixner 2015-07-10 9:06 ` Resend: Re: [PATCH] x86: MCA: garbage collect sys_desc_table Paolo Pisati 1 sibling, 1 reply; 6+ messages in thread From: Paolo Pisati @ 2015-07-08 17:14 UTC (permalink / raw) To: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, x86, linux-kernel Signed-off-by: Paolo Pisati <p.pisati@gmail.com> --- Documentation/x86/zero-page.txt | 1 - arch/x86/boot/Makefile | 2 +- arch/x86/boot/boot.h | 3 --- arch/x86/boot/compressed/eboot.c | 4 ---- arch/x86/boot/main.c | 3 --- arch/x86/boot/mca.c | 38 ----------------------------------- arch/x86/include/asm/processor.h | 8 -------- arch/x86/include/uapi/asm/bootparam.h | 19 +++++++----------- arch/x86/kernel/kexec-bzimage64.c | 3 --- arch/x86/kernel/setup.c | 5 ----- 10 files changed, 8 insertions(+), 78 deletions(-) delete mode 100644 arch/x86/boot/mca.c diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt index 82fbdbc..0761737 100644 --- a/Documentation/x86/zero-page.txt +++ b/Documentation/x86/zero-page.txt @@ -17,7 +17,6 @@ Offset Proto Name Meaning (struct ist_info) 080/010 ALL hd0_info hd0 disk parameter, OBSOLETE!! 090/010 ALL hd1_info hd1 disk parameter, OBSOLETE!! -0A0/010 ALL sys_desc_table System description table (struct sys_desc_table) 0B0/010 ALL olpc_ofw_header OLPC's OpenFirmware CIF and friends 0C0/004 ALL ext_ramdisk_image ramdisk_image high 32bits 0C4/004 ALL ext_ramdisk_size ramdisk_size high 32bits diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index 57bbf2f..0d553e5 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile @@ -23,7 +23,7 @@ targets += fdimage fdimage144 fdimage288 image.iso mtools.conf subdir- := compressed setup-y += a20.o bioscall.o cmdline.o copy.o cpu.o cpuflags.o cpucheck.o -setup-y += early_serial_console.o edd.o header.o main.o mca.o memory.o +setup-y += early_serial_console.o edd.o header.o main.o memory.o setup-y += pm.o pmjump.o printf.o regs.o string.o tty.o video.o setup-y += video-mode.o version.o setup-$(CONFIG_X86_APM_BOOT) += apm.o diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h index bd49ec6..0033e96 100644 --- a/arch/x86/boot/boot.h +++ b/arch/x86/boot/boot.h @@ -307,9 +307,6 @@ void query_edd(void); /* header.S */ void __attribute__((noreturn)) die(void); -/* mca.c */ -int query_mca(void); - /* memory.c */ int detect_memory(void); diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c index 48304b8..2ec7f03 100644 --- a/arch/x86/boot/compressed/eboot.c +++ b/arch/x86/boot/compressed/eboot.c @@ -1041,7 +1041,6 @@ void setup_graphics(struct boot_params *boot_params) struct boot_params *make_boot_params(struct efi_config *c) { struct boot_params *boot_params; - struct sys_desc_table *sdt; struct apm_bios_info *bi; struct setup_header *hdr; struct efi_info *efi; @@ -1089,7 +1088,6 @@ struct boot_params *make_boot_params(struct efi_config *c) hdr = &boot_params->hdr; efi = &boot_params->efi_info; bi = &boot_params->apm_bios_info; - sdt = &boot_params->sys_desc_table; /* Copy the second sector to boot_params */ memcpy(&hdr->jump, image->image_base + 512, 512); @@ -1118,8 +1116,6 @@ struct boot_params *make_boot_params(struct efi_config *c) /* Clear APM BIOS info */ memset(bi, 0, sizeof(*bi)); - memset(sdt, 0, sizeof(*sdt)); - status = efi_parse_options(cmdline_ptr); if (status != EFI_SUCCESS) goto fail2; diff --git a/arch/x86/boot/main.c b/arch/x86/boot/main.c index fd6c9f2..9bcea38 100644 --- a/arch/x86/boot/main.c +++ b/arch/x86/boot/main.c @@ -161,9 +161,6 @@ void main(void) /* Set keyboard repeat rate (why?) and query the lock flags */ keyboard_init(); - /* Query MCA information */ - query_mca(); - /* Query Intel SpeedStep (IST) information */ query_ist(); diff --git a/arch/x86/boot/mca.c b/arch/x86/boot/mca.c deleted file mode 100644 index a95a531..0000000 --- a/arch/x86/boot/mca.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- linux-c -*- ------------------------------------------------------- * - * - * Copyright (C) 1991, 1992 Linus Torvalds - * Copyright 2007 rPath, Inc. - All Rights Reserved - * Copyright 2009 Intel Corporation; author H. Peter Anvin - * - * This file is part of the Linux kernel, and is made available under - * the terms of the GNU General Public License version 2. - * - * ----------------------------------------------------------------------- */ - -/* - * Get the MCA system description table - */ - -#include "boot.h" - -int query_mca(void) -{ - struct biosregs ireg, oreg; - u16 len; - - initregs(&ireg); - ireg.ah = 0xc0; - intcall(0x15, &ireg, &oreg); - - if (oreg.eflags & X86_EFLAGS_CF) - return -1; /* No MCA present */ - - set_fs(oreg.es); - len = rdfs16(oreg.bx); - - if (len > sizeof(boot_params.sys_desc_table)) - len = sizeof(boot_params.sys_desc_table); - - copy_from_fs(&boot_params.sys_desc_table, oreg.bx, len); - return 0; -} diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 23ba676..81c05b3 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -773,14 +773,6 @@ static inline void update_debugctlmsr(unsigned long debugctlmsr) extern void set_task_blockstep(struct task_struct *task, bool on); -/* - * from system description table in BIOS. Mostly for MCA use, but - * others may find it useful: - */ -extern unsigned int machine_id; -extern unsigned int machine_submodel_id; -extern unsigned int BIOS_revision; - /* Boot loader type from the setup header: */ extern int bootloader_type; extern int bootloader_version; diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h index ab456dc..ad00cf4 100644 --- a/arch/x86/include/uapi/asm/bootparam.h +++ b/arch/x86/include/uapi/asm/bootparam.h @@ -86,11 +86,6 @@ struct setup_header { __u32 handover_offset; } __attribute__((packed)); -struct sys_desc_table { - __u16 length; - __u8 table[14]; -}; - /* Gleaned from OFW's set-parameters in cpu/x86/pc/linux.fth */ struct olpc_ofw_header { __u32 ofw_magic; /* OFW signature */ @@ -120,12 +115,12 @@ struct boot_params { __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[16]; /* 0x0a0 */ struct olpc_ofw_header olpc_ofw_header; /* 0x0b0 */ __u32 ext_ramdisk_image; /* 0x0c0 */ __u32 ext_ramdisk_size; /* 0x0c4 */ __u32 ext_cmd_line_ptr; /* 0x0c8 */ - __u8 _pad4[116]; /* 0x0cc */ + __u8 _pad5[116]; /* 0x0cc */ struct edid_info edid_info; /* 0x140 */ struct efi_info efi_info; /* 0x1c0 */ __u32 alt_mem_k; /* 0x1e0 */ @@ -134,7 +129,7 @@ struct boot_params { __u8 eddbuf_entries; /* 0x1e9 */ __u8 edd_mbr_sig_buf_entries; /* 0x1ea */ __u8 kbd_status; /* 0x1eb */ - __u8 _pad5[3]; /* 0x1ec */ + __u8 _pad6[3]; /* 0x1ec */ /* * The sentinel is set to a nonzero value (0xff) in header.S. * @@ -147,14 +142,14 @@ struct boot_params { * kernel should zero out certain portions of boot_params. */ __u8 sentinel; /* 0x1ef */ - __u8 _pad6[1]; /* 0x1f0 */ + __u8 _pad7[1]; /* 0x1f0 */ struct setup_header hdr; /* setup header */ /* 0x1f1 */ - __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)]; + __u8 _pad8[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 */ + __u8 _pad9[48]; /* 0xcd0 */ struct edd_info eddbuf[EDDMAXNR]; /* 0xd00 */ - __u8 _pad9[276]; /* 0xeec */ + __u8 _pad10[276]; /* 0xeec */ } __attribute__((packed)); enum { diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c index ca05f86..3666a84 100644 --- a/arch/x86/kernel/kexec-bzimage64.c +++ b/arch/x86/kernel/kexec-bzimage64.c @@ -222,9 +222,6 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params, memset(¶ms->hd0_info, 0, sizeof(params->hd0_info)); memset(¶ms->hd1_info, 0, sizeof(params->hd1_info)); - /* Default sysdesc table */ - params->sys_desc_table.length = 0; - if (image->type == KEXEC_TYPE_CRASH) { ret = crash_setup_memmap_entries(image, params); if (ret) diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index d74ac33..e42cf00 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -915,11 +915,6 @@ void __init setup_arch(char **cmdline_p) #ifdef CONFIG_X86_32 apm_info.bios = boot_params.apm_bios_info; ist_info = boot_params.ist_info; - if (boot_params.sys_desc_table.length != 0) { - machine_id = boot_params.sys_desc_table.table[0]; - machine_submodel_id = boot_params.sys_desc_table.table[1]; - BIOS_revision = boot_params.sys_desc_table.table[2]; - } #endif saved_video_mode = boot_params.hdr.vid_mode; bootloader_type = boot_params.hdr.type_of_loader; -- 2.1.4 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] MCA: garbage collect sys_desc_table 2015-07-08 17:14 ` Paolo Pisati @ 2015-07-16 16:13 ` Thomas Gleixner 2015-07-20 16:23 ` [PATCH v2] x86: MCA: obsolete sys_desc_table Paolo Pisati 0 siblings, 1 reply; 6+ messages in thread From: Thomas Gleixner @ 2015-07-16 16:13 UTC (permalink / raw) To: Paolo Pisati; +Cc: Ingo Molnar, H. Peter Anvin, x86, LKML, josh On Wed, 8 Jul 2015, Paolo Pisati wrote: This lacks a proper changelog. > Signed-off-by: Paolo Pisati <p.pisati@gmail.com> > diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt > index 82fbdbc..0761737 100644 > --- a/Documentation/x86/zero-page.txt > +++ b/Documentation/x86/zero-page.txt > @@ -17,7 +17,6 @@ Offset Proto Name Meaning > (struct ist_info) > 080/010 ALL hd0_info hd0 disk parameter, OBSOLETE!! > 090/010 ALL hd1_info hd1 disk parameter, OBSOLETE!! > -0A0/010 ALL sys_desc_table System description table (struct sys_desc_table) Removing this is wrong. The space stays reserved for sys_desc_table. It's just unused and should be marked OBSOLETE. > extern void set_task_blockstep(struct task_struct *task, bool on); > > -/* > - * from system description table in BIOS. Mostly for MCA use, but > - * others may find it useful: > - */ > -extern unsigned int machine_id; > -extern unsigned int machine_submodel_id; > -extern unsigned int BIOS_revision; > - > /* Boot loader type from the setup header: */ > extern int bootloader_type; > extern int bootloader_version; > diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h > index ab456dc..ad00cf4 100644 > --- a/arch/x86/include/uapi/asm/bootparam.h > +++ b/arch/x86/include/uapi/asm/bootparam.h > @@ -86,11 +86,6 @@ struct setup_header { > __u32 handover_offset; > } __attribute__((packed)); > > -struct sys_desc_table { > - __u16 length; > - __u8 table[14]; > -}; > - > /* Gleaned from OFW's set-parameters in cpu/x86/pc/linux.fth */ > struct olpc_ofw_header { > __u32 ofw_magic; /* OFW signature */ > @@ -120,12 +115,12 @@ struct boot_params { > __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[16]; /* 0x0a0 */ This is a UAPI header and we dont know what might reference that field. Leave it as is and mark it obsolete. > --- a/arch/x86/kernel/kexec-bzimage64.c > +++ b/arch/x86/kernel/kexec-bzimage64.c > @@ -222,9 +222,6 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params, > memset(¶ms->hd0_info, 0, sizeof(params->hd0_info)); > memset(¶ms->hd1_info, 0, sizeof(params->hd1_info)); These two lines are useless as well, but that should be a separate patch > - /* Default sysdesc table */ > - params->sys_desc_table.length = 0; > - Thanks, tglx ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2] x86: MCA: obsolete sys_desc_table 2015-07-16 16:13 ` Thomas Gleixner @ 2015-07-20 16:23 ` Paolo Pisati 2015-07-21 9:44 ` [tip:x86/boot] x86/boot: Obsolete the MCA sys_desc_table tip-bot for Paolo Pisati 0 siblings, 1 reply; 6+ messages in thread From: Paolo Pisati @ 2015-07-20 16:23 UTC (permalink / raw) To: Thomas Gleixner Cc: Josh Triplett, Ingo Molnar, H. Peter Anvin, x86, linux-kernel Mark sys_desc_table as obsolete: remove any reference from the code together with the remaining of MCA. bloat-o-meter output: add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-55 (-55) function old new delta i386_start_kernel 128 119 -9 setup_arch 1421 1375 -46 Signed-off-by: Paolo Pisati <p.pisati@gmail.com> --- Changes since v1: -added a changelog -kept sys_desc_table around but marked obsolete Documentation/x86/zero-page.txt | 3 ++- arch/x86/boot/Makefile | 2 +- arch/x86/boot/boot.h | 3 --- arch/x86/boot/compressed/eboot.c | 4 ---- arch/x86/boot/main.c | 3 --- arch/x86/boot/mca.c | 38 ----------------------------------- arch/x86/include/asm/processor.h | 8 -------- arch/x86/include/uapi/asm/bootparam.h | 2 +- arch/x86/kernel/kexec-bzimage64.c | 3 --- arch/x86/kernel/setup.c | 5 ----- 10 files changed, 4 insertions(+), 67 deletions(-) delete mode 100644 arch/x86/boot/mca.c diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt index 82fbdbc..95a4d34 100644 --- a/Documentation/x86/zero-page.txt +++ b/Documentation/x86/zero-page.txt @@ -17,7 +17,8 @@ Offset Proto Name Meaning (struct ist_info) 080/010 ALL hd0_info hd0 disk parameter, OBSOLETE!! 090/010 ALL hd1_info hd1 disk parameter, OBSOLETE!! -0A0/010 ALL sys_desc_table System description table (struct sys_desc_table) +0A0/010 ALL sys_desc_table System description table (struct sys_desc_table), + OBSOLETE!! 0B0/010 ALL olpc_ofw_header OLPC's OpenFirmware CIF and friends 0C0/004 ALL ext_ramdisk_image ramdisk_image high 32bits 0C4/004 ALL ext_ramdisk_size ramdisk_size high 32bits diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index 57bbf2f..0d553e5 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile @@ -23,7 +23,7 @@ targets += fdimage fdimage144 fdimage288 image.iso mtools.conf subdir- := compressed setup-y += a20.o bioscall.o cmdline.o copy.o cpu.o cpuflags.o cpucheck.o -setup-y += early_serial_console.o edd.o header.o main.o mca.o memory.o +setup-y += early_serial_console.o edd.o header.o main.o memory.o setup-y += pm.o pmjump.o printf.o regs.o string.o tty.o video.o setup-y += video-mode.o version.o setup-$(CONFIG_X86_APM_BOOT) += apm.o diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h index bd49ec6..0033e96 100644 --- a/arch/x86/boot/boot.h +++ b/arch/x86/boot/boot.h @@ -307,9 +307,6 @@ void query_edd(void); /* header.S */ void __attribute__((noreturn)) die(void); -/* mca.c */ -int query_mca(void); - /* memory.c */ int detect_memory(void); diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c index 48304b8..2ec7f03 100644 --- a/arch/x86/boot/compressed/eboot.c +++ b/arch/x86/boot/compressed/eboot.c @@ -1041,7 +1041,6 @@ void setup_graphics(struct boot_params *boot_params) struct boot_params *make_boot_params(struct efi_config *c) { struct boot_params *boot_params; - struct sys_desc_table *sdt; struct apm_bios_info *bi; struct setup_header *hdr; struct efi_info *efi; @@ -1089,7 +1088,6 @@ struct boot_params *make_boot_params(struct efi_config *c) hdr = &boot_params->hdr; efi = &boot_params->efi_info; bi = &boot_params->apm_bios_info; - sdt = &boot_params->sys_desc_table; /* Copy the second sector to boot_params */ memcpy(&hdr->jump, image->image_base + 512, 512); @@ -1118,8 +1116,6 @@ struct boot_params *make_boot_params(struct efi_config *c) /* Clear APM BIOS info */ memset(bi, 0, sizeof(*bi)); - memset(sdt, 0, sizeof(*sdt)); - status = efi_parse_options(cmdline_ptr); if (status != EFI_SUCCESS) goto fail2; diff --git a/arch/x86/boot/main.c b/arch/x86/boot/main.c index fd6c9f2..9bcea38 100644 --- a/arch/x86/boot/main.c +++ b/arch/x86/boot/main.c @@ -161,9 +161,6 @@ void main(void) /* Set keyboard repeat rate (why?) and query the lock flags */ keyboard_init(); - /* Query MCA information */ - query_mca(); - /* Query Intel SpeedStep (IST) information */ query_ist(); diff --git a/arch/x86/boot/mca.c b/arch/x86/boot/mca.c deleted file mode 100644 index a95a531..0000000 --- a/arch/x86/boot/mca.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- linux-c -*- ------------------------------------------------------- * - * - * Copyright (C) 1991, 1992 Linus Torvalds - * Copyright 2007 rPath, Inc. - All Rights Reserved - * Copyright 2009 Intel Corporation; author H. Peter Anvin - * - * This file is part of the Linux kernel, and is made available under - * the terms of the GNU General Public License version 2. - * - * ----------------------------------------------------------------------- */ - -/* - * Get the MCA system description table - */ - -#include "boot.h" - -int query_mca(void) -{ - struct biosregs ireg, oreg; - u16 len; - - initregs(&ireg); - ireg.ah = 0xc0; - intcall(0x15, &ireg, &oreg); - - if (oreg.eflags & X86_EFLAGS_CF) - return -1; /* No MCA present */ - - set_fs(oreg.es); - len = rdfs16(oreg.bx); - - if (len > sizeof(boot_params.sys_desc_table)) - len = sizeof(boot_params.sys_desc_table); - - copy_from_fs(&boot_params.sys_desc_table, oreg.bx, len); - return 0; -} diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 23ba676..81c05b3 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -773,14 +773,6 @@ static inline void update_debugctlmsr(unsigned long debugctlmsr) extern void set_task_blockstep(struct task_struct *task, bool on); -/* - * from system description table in BIOS. Mostly for MCA use, but - * others may find it useful: - */ -extern unsigned int machine_id; -extern unsigned int machine_submodel_id; -extern unsigned int BIOS_revision; - /* Boot loader type from the setup header: */ extern int bootloader_type; extern int bootloader_version; diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h index ab456dc..3292543 100644 --- a/arch/x86/include/uapi/asm/bootparam.h +++ b/arch/x86/include/uapi/asm/bootparam.h @@ -120,7 +120,7 @@ struct boot_params { __u8 _pad3[16]; /* 0x070 */ __u8 hd0_info[16]; /* obsolete! */ /* 0x080 */ __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */ - struct sys_desc_table sys_desc_table; /* 0x0a0 */ + struct sys_desc_table sys_desc_table; /* obsolete! */ /* 0x0a0 */ struct olpc_ofw_header olpc_ofw_header; /* 0x0b0 */ __u32 ext_ramdisk_image; /* 0x0c0 */ __u32 ext_ramdisk_size; /* 0x0c4 */ diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c index ca05f86..3666a84 100644 --- a/arch/x86/kernel/kexec-bzimage64.c +++ b/arch/x86/kernel/kexec-bzimage64.c @@ -222,9 +222,6 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params, memset(¶ms->hd0_info, 0, sizeof(params->hd0_info)); memset(¶ms->hd1_info, 0, sizeof(params->hd1_info)); - /* Default sysdesc table */ - params->sys_desc_table.length = 0; - if (image->type == KEXEC_TYPE_CRASH) { ret = crash_setup_memmap_entries(image, params); if (ret) diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index d74ac33..e42cf00 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -915,11 +915,6 @@ void __init setup_arch(char **cmdline_p) #ifdef CONFIG_X86_32 apm_info.bios = boot_params.apm_bios_info; ist_info = boot_params.ist_info; - if (boot_params.sys_desc_table.length != 0) { - machine_id = boot_params.sys_desc_table.table[0]; - machine_submodel_id = boot_params.sys_desc_table.table[1]; - BIOS_revision = boot_params.sys_desc_table.table[2]; - } #endif saved_video_mode = boot_params.hdr.vid_mode; bootloader_type = boot_params.hdr.type_of_loader; -- 2.1.4 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [tip:x86/boot] x86/boot: Obsolete the MCA sys_desc_table 2015-07-20 16:23 ` [PATCH v2] x86: MCA: obsolete sys_desc_table Paolo Pisati @ 2015-07-21 9:44 ` tip-bot for Paolo Pisati 0 siblings, 0 replies; 6+ messages in thread From: tip-bot for Paolo Pisati @ 2015-07-21 9:44 UTC (permalink / raw) To: linux-tip-commits Cc: torvalds, p.pisati, mingo, tglx, josh, linux-kernel, hpa, peterz Commit-ID: 949163015ce6fdb76a5e846a3582d3c40c23c001 Gitweb: http://git.kernel.org/tip/949163015ce6fdb76a5e846a3582d3c40c23c001 Author: Paolo Pisati <p.pisati@gmail.com> AuthorDate: Mon, 20 Jul 2015 18:23:50 +0200 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Tue, 21 Jul 2015 10:55:11 +0200 x86/boot: Obsolete the MCA sys_desc_table The kernel does not support the MCA bus anymroe, so mark sys_desc_table as obsolete: remove any reference from the code together with the remaining of MCA logic. bloat-o-meter output: add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-55 (-55) function old new delta i386_start_kernel 128 119 -9 setup_arch 1421 1375 -46 Signed-off-by: Paolo Pisati <p.pisati@gmail.com> Cc: Josh Triplett <josh@joshtriplett.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1437409430-8491-1-git-send-email-p.pisati@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- Documentation/x86/zero-page.txt | 3 ++- arch/x86/boot/Makefile | 2 +- arch/x86/boot/boot.h | 3 --- arch/x86/boot/compressed/eboot.c | 4 ---- arch/x86/boot/main.c | 3 --- arch/x86/boot/mca.c | 38 ----------------------------------- arch/x86/include/asm/processor.h | 8 -------- arch/x86/include/uapi/asm/bootparam.h | 2 +- arch/x86/kernel/kexec-bzimage64.c | 3 --- arch/x86/kernel/setup.c | 5 ----- 10 files changed, 4 insertions(+), 67 deletions(-) diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt index 82fbdbc..95a4d34 100644 --- a/Documentation/x86/zero-page.txt +++ b/Documentation/x86/zero-page.txt @@ -17,7 +17,8 @@ Offset Proto Name Meaning (struct ist_info) 080/010 ALL hd0_info hd0 disk parameter, OBSOLETE!! 090/010 ALL hd1_info hd1 disk parameter, OBSOLETE!! -0A0/010 ALL sys_desc_table System description table (struct sys_desc_table) +0A0/010 ALL sys_desc_table System description table (struct sys_desc_table), + OBSOLETE!! 0B0/010 ALL olpc_ofw_header OLPC's OpenFirmware CIF and friends 0C0/004 ALL ext_ramdisk_image ramdisk_image high 32bits 0C4/004 ALL ext_ramdisk_size ramdisk_size high 32bits diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index 57bbf2f..0d553e5 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile @@ -23,7 +23,7 @@ targets += fdimage fdimage144 fdimage288 image.iso mtools.conf subdir- := compressed setup-y += a20.o bioscall.o cmdline.o copy.o cpu.o cpuflags.o cpucheck.o -setup-y += early_serial_console.o edd.o header.o main.o mca.o memory.o +setup-y += early_serial_console.o edd.o header.o main.o memory.o setup-y += pm.o pmjump.o printf.o regs.o string.o tty.o video.o setup-y += video-mode.o version.o setup-$(CONFIG_X86_APM_BOOT) += apm.o diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h index bd49ec6..0033e96 100644 --- a/arch/x86/boot/boot.h +++ b/arch/x86/boot/boot.h @@ -307,9 +307,6 @@ void query_edd(void); /* header.S */ void __attribute__((noreturn)) die(void); -/* mca.c */ -int query_mca(void); - /* memory.c */ int detect_memory(void); diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c index 2c82bd1..e140bcc 100644 --- a/arch/x86/boot/compressed/eboot.c +++ b/arch/x86/boot/compressed/eboot.c @@ -1041,7 +1041,6 @@ void setup_graphics(struct boot_params *boot_params) struct boot_params *make_boot_params(struct efi_config *c) { struct boot_params *boot_params; - struct sys_desc_table *sdt; struct apm_bios_info *bi; struct setup_header *hdr; struct efi_info *efi; @@ -1089,7 +1088,6 @@ struct boot_params *make_boot_params(struct efi_config *c) hdr = &boot_params->hdr; efi = &boot_params->efi_info; bi = &boot_params->apm_bios_info; - sdt = &boot_params->sys_desc_table; /* Copy the second sector to boot_params */ memcpy(&hdr->jump, image->image_base + 512, 512); @@ -1118,8 +1116,6 @@ struct boot_params *make_boot_params(struct efi_config *c) /* Clear APM BIOS info */ memset(bi, 0, sizeof(*bi)); - memset(sdt, 0, sizeof(*sdt)); - status = efi_parse_options(cmdline_ptr); if (status != EFI_SUCCESS) goto fail2; diff --git a/arch/x86/boot/main.c b/arch/x86/boot/main.c index fd6c9f2..9bcea38 100644 --- a/arch/x86/boot/main.c +++ b/arch/x86/boot/main.c @@ -161,9 +161,6 @@ void main(void) /* Set keyboard repeat rate (why?) and query the lock flags */ keyboard_init(); - /* Query MCA information */ - query_mca(); - /* Query Intel SpeedStep (IST) information */ query_ist(); diff --git a/arch/x86/boot/mca.c b/arch/x86/boot/mca.c deleted file mode 100644 index a95a531..0000000 --- a/arch/x86/boot/mca.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- linux-c -*- ------------------------------------------------------- * - * - * Copyright (C) 1991, 1992 Linus Torvalds - * Copyright 2007 rPath, Inc. - All Rights Reserved - * Copyright 2009 Intel Corporation; author H. Peter Anvin - * - * This file is part of the Linux kernel, and is made available under - * the terms of the GNU General Public License version 2. - * - * ----------------------------------------------------------------------- */ - -/* - * Get the MCA system description table - */ - -#include "boot.h" - -int query_mca(void) -{ - struct biosregs ireg, oreg; - u16 len; - - initregs(&ireg); - ireg.ah = 0xc0; - intcall(0x15, &ireg, &oreg); - - if (oreg.eflags & X86_EFLAGS_CF) - return -1; /* No MCA present */ - - set_fs(oreg.es); - len = rdfs16(oreg.bx); - - if (len > sizeof(boot_params.sys_desc_table)) - len = sizeof(boot_params.sys_desc_table); - - copy_from_fs(&boot_params.sys_desc_table, oreg.bx, len); - return 0; -} diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 43e6519..3e15e13 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -647,14 +647,6 @@ static inline void update_debugctlmsr(unsigned long debugctlmsr) extern void set_task_blockstep(struct task_struct *task, bool on); -/* - * from system description table in BIOS. Mostly for MCA use, but - * others may find it useful: - */ -extern unsigned int machine_id; -extern unsigned int machine_submodel_id; -extern unsigned int BIOS_revision; - /* Boot loader type from the setup header: */ extern int bootloader_type; extern int bootloader_version; diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h index ab456dc..3292543 100644 --- a/arch/x86/include/uapi/asm/bootparam.h +++ b/arch/x86/include/uapi/asm/bootparam.h @@ -120,7 +120,7 @@ struct boot_params { __u8 _pad3[16]; /* 0x070 */ __u8 hd0_info[16]; /* obsolete! */ /* 0x080 */ __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */ - struct sys_desc_table sys_desc_table; /* 0x0a0 */ + struct sys_desc_table sys_desc_table; /* obsolete! */ /* 0x0a0 */ struct olpc_ofw_header olpc_ofw_header; /* 0x0b0 */ __u32 ext_ramdisk_image; /* 0x0c0 */ __u32 ext_ramdisk_size; /* 0x0c4 */ diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c index ca83f7ac..961e51e 100644 --- a/arch/x86/kernel/kexec-bzimage64.c +++ b/arch/x86/kernel/kexec-bzimage64.c @@ -223,9 +223,6 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params, memset(¶ms->hd0_info, 0, sizeof(params->hd0_info)); memset(¶ms->hd1_info, 0, sizeof(params->hd1_info)); - /* Default sysdesc table */ - params->sys_desc_table.length = 0; - if (image->type == KEXEC_TYPE_CRASH) { ret = crash_setup_memmap_entries(image, params); if (ret) diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 80f874b..b143c2d 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -916,11 +916,6 @@ void __init setup_arch(char **cmdline_p) #ifdef CONFIG_X86_32 apm_info.bios = boot_params.apm_bios_info; ist_info = boot_params.ist_info; - if (boot_params.sys_desc_table.length != 0) { - machine_id = boot_params.sys_desc_table.table[0]; - machine_submodel_id = boot_params.sys_desc_table.table[1]; - BIOS_revision = boot_params.sys_desc_table.table[2]; - } #endif saved_video_mode = boot_params.hdr.vid_mode; bootloader_type = boot_params.hdr.type_of_loader; ^ permalink raw reply [flat|nested] 6+ messages in thread
* Resend: Re: [PATCH] x86: MCA: garbage collect sys_desc_table 2015-07-08 17:14 [PATCH] MCA: garbage collect sys_desc_table Paolo Pisati 2015-07-08 17:14 ` Paolo Pisati @ 2015-07-10 9:06 ` Paolo Pisati 1 sibling, 0 replies; 6+ messages in thread From: Paolo Pisati @ 2015-07-10 9:06 UTC (permalink / raw) To: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, x86, linux-kernel, josh On Wed, Jul 08, 2015 at 07:14:36PM +0200, Paolo Pisati wrote: Adding Josh Triplett since he was interested in MCA removal for the kernel tinification project, and slightly change the subject line. > Is sys_desc_table still used anywhere? It seems not: > > arch/x86/boot/mca.c::query_mca() > ... > copy_from_fs(&boot_params.sys_desc_table, oreg.bx, len); > ... > > arch/x86/kernel/setup.c::setup_arch() > ... > if (boot_params.sys_desc_table.length != 0) { > machine_id = boot_params.sys_desc_table.table[0]; > machine_submodel_id = boot_params.sys_desc_table.table[1]; > BIOS_revision = boot_params.sys_desc_table.table[2]; > } > ... > > $ git grep machine_id > ... > arch/x86/include/asm/processor.h:extern unsigned int machine_id; > arch/x86/kernel/setup.c:unsigned int machine_id; > arch/x86/kernel/setup.c: machine_id = boot_params.sys_desc_table.table[0]; > ... > > $ git grep machine_submodel_id > arch/x86/include/asm/processor.h:extern unsigned int machine_submodel_id; > arch/x86/kernel/setup.c:unsigned int machine_submodel_id; > arch/x86/kernel/setup.c: machine_submodel_id = boot_params.sys_desc_table.table[1]; > > $ git grep BIOS_revision > arch/x86/include/asm/processor.h:extern unsigned int BIOS_revision; > arch/x86/kernel/setup.c:unsigned int BIOS_revision; > arch/x86/kernel/setup.c: BIOS_revision = boot_params.sys_desc_table.table[2]; > > Compile tested with i386_defconfig, x86_64_defconfig and allyesconfig. > > Paolo Pisati (1): > MCA: garbage collect sys_desc_table > > Documentation/x86/zero-page.txt | 1 - > arch/x86/boot/Makefile | 2 +- > arch/x86/boot/boot.h | 3 --- > arch/x86/boot/compressed/eboot.c | 4 ---- > arch/x86/boot/main.c | 3 --- > arch/x86/boot/mca.c | 38 ----------------------------------- > arch/x86/include/asm/processor.h | 8 -------- > arch/x86/include/uapi/asm/bootparam.h | 19 +++++++----------- > arch/x86/kernel/kexec-bzimage64.c | 3 --- > arch/x86/kernel/setup.c | 5 ----- > 10 files changed, 8 insertions(+), 78 deletions(-) > delete mode 100644 arch/x86/boot/mca.c > > -- > 2.1.4 > -- bye, p. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-07-21 9:45 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-07-08 17:14 [PATCH] MCA: garbage collect sys_desc_table Paolo Pisati 2015-07-08 17:14 ` Paolo Pisati 2015-07-16 16:13 ` Thomas Gleixner 2015-07-20 16:23 ` [PATCH v2] x86: MCA: obsolete sys_desc_table Paolo Pisati 2015-07-21 9:44 ` [tip:x86/boot] x86/boot: Obsolete the MCA sys_desc_table tip-bot for Paolo Pisati 2015-07-10 9:06 ` Resend: Re: [PATCH] x86: MCA: garbage collect sys_desc_table Paolo Pisati
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
Powered by JetHome