From: Borislav Petkov <bp@alien8.de>
To: X86 ML <x86@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH 1/6] x86/microcode: Unmodularize driver
Date: Tue, 20 Oct 2015 11:54:44 +0200 [thread overview]
Message-ID: <1445334889-300-2-git-send-email-bp@alien8.de> (raw)
In-Reply-To: <1445334889-300-1-git-send-email-bp@alien8.de>
From: Borislav Petkov <bp@suse.de>
Make it a bool. It was practically a bool already anyway since early
loader was forcing it to =y. Regardless, there's no real reason to
have something be a module which gets built-in on the majority of
installations out there. And its not like there's noticeable change in
functionality - we still can load late microcode - just the module glue
disappears.
Signed-off-by: Borislav Petkov <bp@suse.de>
---
arch/x86/Kconfig | 5 +++--
arch/x86/include/asm/microcode.h | 6 ++++++
arch/x86/kernel/cpu/microcode/amd.c | 2 +-
arch/x86/kernel/cpu/microcode/core.c | 36 ++---------------------------------
arch/x86/kernel/cpu/microcode/intel.c | 2 +-
arch/x86/kernel/setup.c | 3 +++
6 files changed, 16 insertions(+), 38 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 96d058a87100..fdf1f0cdf6b6 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1123,7 +1123,8 @@ config X86_REBOOTFIXUPS
Say N otherwise.
config MICROCODE
- tristate "CPU microcode loading support"
+ bool "CPU microcode loading support"
+ default y
depends on CPU_SUP_AMD || CPU_SUP_INTEL
select FW_LOADER
---help---
@@ -1174,7 +1175,7 @@ config MICROCODE_AMD_EARLY
config MICROCODE_EARLY
bool "Early load microcode"
- depends on MICROCODE=y && BLK_DEV_INITRD
+ depends on MICROCODE && BLK_DEV_INITRD
select MICROCODE_INTEL_EARLY if MICROCODE_INTEL
select MICROCODE_AMD_EARLY if MICROCODE_AMD
default y
diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h
index 9e6278c7140e..d1ff724f352b 100644
--- a/arch/x86/include/asm/microcode.h
+++ b/arch/x86/include/asm/microcode.h
@@ -55,6 +55,12 @@ struct ucode_cpu_info {
};
extern struct ucode_cpu_info ucode_cpu_info[];
+#ifdef CONFIG_MICROCODE
+int __init microcode_init(void);
+#else
+static inline int __init microcode_init(void) { return 0; };
+#endif
+
#ifdef CONFIG_MICROCODE_INTEL
extern struct microcode_ops * __init init_intel_microcode(void);
#else
diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c
index da922d1e2f71..5dcce5dc39b9 100644
--- a/arch/x86/kernel/cpu/microcode/amd.c
+++ b/arch/x86/kernel/cpu/microcode/amd.c
@@ -523,7 +523,7 @@ static struct microcode_ops microcode_amd_ops = {
struct microcode_ops * __init init_amd_microcode(void)
{
- struct cpuinfo_x86 *c = &cpu_data(0);
+ struct cpuinfo_x86 *c = &boot_cpu_data;
if (c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10) {
pr_warning("AMD CPU family 0x%x not supported\n", c->x86);
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index 9e3f3c7dd5d7..15491dd3131e 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -487,9 +487,9 @@ static struct attribute_group cpu_root_microcode_group = {
.attrs = cpu_root_microcode_attrs,
};
-static int __init microcode_init(void)
+int __init microcode_init(void)
{
- struct cpuinfo_x86 *c = &cpu_data(0);
+ struct cpuinfo_x86 *c = &boot_cpu_data;
int error;
if (paravirt_enabled() || dis_ucode_ldr)
@@ -560,35 +560,3 @@ static int __init microcode_init(void)
return error;
}
-module_init(microcode_init);
-
-static void __exit microcode_exit(void)
-{
- struct cpuinfo_x86 *c = &cpu_data(0);
-
- microcode_dev_exit();
-
- unregister_hotcpu_notifier(&mc_cpu_notifier);
- unregister_syscore_ops(&mc_syscore_ops);
-
- sysfs_remove_group(&cpu_subsys.dev_root->kobj,
- &cpu_root_microcode_group);
-
- get_online_cpus();
- mutex_lock(µcode_mutex);
-
- subsys_interface_unregister(&mc_cpu_interface);
-
- mutex_unlock(µcode_mutex);
- put_online_cpus();
-
- platform_device_unregister(microcode_pdev);
-
- microcode_ops = NULL;
-
- if (c->x86_vendor == X86_VENDOR_AMD)
- exit_amd_microcode();
-
- pr_info("Microcode Update Driver: v" MICROCODE_VERSION " removed.\n");
-}
-module_exit(microcode_exit);
diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c
index 969dc17eb1b4..bfd6fcd242ea 100644
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -264,7 +264,7 @@ static struct microcode_ops microcode_intel_ops = {
struct microcode_ops * __init init_intel_microcode(void)
{
- struct cpuinfo_x86 *c = &cpu_data(0);
+ struct cpuinfo_x86 *c = &boot_cpu_data;
if (c->x86_vendor != X86_VENDOR_INTEL || c->x86 < 6 ||
cpu_has(c, X86_FEATURE_IA64)) {
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index fdb7f2a2d328..ef9824fac9c3 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -111,6 +111,7 @@
#include <asm/mce.h>
#include <asm/alternative.h>
#include <asm/prom.h>
+#include <asm/microcode.h>
/*
* max_low_pfn_mapped: highest direct mapped pfn under 4GB
@@ -1234,6 +1235,8 @@ void __init setup_arch(char **cmdline_p)
if (efi_enabled(EFI_BOOT))
efi_apply_memmap_quirks();
#endif
+
+ microcode_init();
}
#ifdef CONFIG_X86_32
--
2.3.5
next prev parent reply other threads:[~2015-10-20 9:55 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-20 9:54 [PATCH 0/6] x86/microcode: Merge the early loader Borislav Petkov
2015-10-20 9:54 ` Borislav Petkov [this message]
2015-10-21 10:07 ` [tip:ras/core] x86/microcode: Unmodularize the microcode driver tip-bot for Borislav Petkov
2015-10-20 9:54 ` [PATCH 2/6] x86/microcode: Merge early loader Borislav Petkov
2015-10-21 10:07 ` [tip:ras/core] x86/microcode: Merge the early microcode loader tip-bot for Borislav Petkov
2015-11-06 19:22 ` [PATCH 2/6] x86/microcode: Merge early loader Josh Boyer
2015-11-06 19:31 ` Borislav Petkov
2015-11-09 9:42 ` Harald Hoyer
2015-11-09 10:11 ` Borislav Petkov
2015-10-20 9:54 ` [PATCH 3/6] x86/microcode: Remove modularization leftovers Borislav Petkov
2015-10-21 10:08 ` [tip:ras/core] " tip-bot for Borislav Petkov
2015-10-20 9:54 ` [PATCH 4/6] x86/microcode/amd: Remove maintainers from comments Borislav Petkov
2015-10-21 10:08 ` [tip:ras/core] " tip-bot for Borislav Petkov
2015-10-20 9:54 ` [PATCH 5/6] x86/microcode/intel: Move ifdef DEBUG inside the function Borislav Petkov
2015-10-21 10:08 ` [tip:ras/core] x86/microcode/intel: Move #ifdef " tip-bot for Borislav Petkov
2015-10-20 9:54 ` [PATCH 6/6] MAINTAINERS: Unify microcode driver section Borislav Petkov
2015-10-21 10:09 ` [tip:ras/core] MAINTAINERS: Unify the " tip-bot for Borislav Petkov
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=1445334889-300-2-git-send-email-bp@alien8.de \
--to=bp@alien8.de \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@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.