All of lore.kernel.org
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: X86 ML <x86@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH 05/12] x86/microcode: Export the microcode cache linked list
Date: Tue, 25 Oct 2016 11:55:15 +0200	[thread overview]
Message-ID: <20161025095522.11964-6-bp@alien8.de> (raw)
In-Reply-To: <20161025095522.11964-1-bp@alien8.de>

From: Borislav Petkov <bp@suse.de>

It will be used by both drivers so move it to core.c.

No functionality change.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
 arch/x86/include/asm/microcode.h     |  9 +++++++++
 arch/x86/kernel/cpu/microcode/amd.c  | 23 +++++++----------------
 arch/x86/kernel/cpu/microcode/core.c |  2 ++
 3 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h
index 05e56d0968d4..91595ecb3689 100644
--- a/arch/x86/include/asm/microcode.h
+++ b/arch/x86/include/asm/microcode.h
@@ -20,6 +20,15 @@ do {							\
 			 (u32)((u64)(val)),		\
 			 (u32)((u64)(val) >> 32))
 
+struct ucode_patch {
+	struct list_head plist;
+	void *data;		/* Intel uses only this one */
+	u32 patch_id;
+	u16 equiv_cpu;
+};
+
+extern struct list_head microcode_cache;
+
 struct cpu_signature {
 	unsigned int sig;
 	unsigned int pf;
diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c
index 6b3929e80fd4..8cb20e3e9436 100644
--- a/arch/x86/kernel/cpu/microcode/amd.c
+++ b/arch/x86/kernel/cpu/microcode/amd.c
@@ -39,15 +39,6 @@
 
 static struct equiv_cpu_entry *equiv_cpu_table;
 
-struct ucode_patch {
-	struct list_head plist;
-	void *data;
-	u32 patch_id;
-	u16 equiv_cpu;
-};
-
-static LIST_HEAD(pcache);
-
 /*
  * This points to the current valid container of microcode patches which we will
  * save from the initrd before jettisoning its contents.
@@ -312,9 +303,9 @@ void __init load_ucode_amd_bsp(unsigned int family)
 #ifdef CONFIG_X86_32
 /*
  * On 32-bit, since AP's early load occurs before paging is turned on, we
- * cannot traverse cpu_equiv_table and pcache in kernel heap memory. So during
- * cold boot, AP will apply_ucode_in_initrd() just like the BSP. During
- * save_microcode_in_initrd_amd() BSP's patch is copied to amd_ucode_patch,
+ * cannot traverse cpu_equiv_table and microcode_cache in kernel heap memory.
+ * So during cold boot, AP will apply_ucode_in_initrd() just like the BSP.
+ * In save_microcode_in_initrd_amd() BSP's patch is copied to amd_ucode_patch,
  * which is used upon resume from suspend.
  */
 void load_ucode_amd_ap(void)
@@ -508,7 +499,7 @@ static struct ucode_patch *cache_find_patch(u16 equiv_cpu)
 {
 	struct ucode_patch *p;
 
-	list_for_each_entry(p, &pcache, plist)
+	list_for_each_entry(p, &microcode_cache, plist)
 		if (p->equiv_cpu == equiv_cpu)
 			return p;
 	return NULL;
@@ -518,7 +509,7 @@ static void update_cache(struct ucode_patch *new_patch)
 {
 	struct ucode_patch *p;
 
-	list_for_each_entry(p, &pcache, plist) {
+	list_for_each_entry(p, &microcode_cache, plist) {
 		if (p->equiv_cpu == new_patch->equiv_cpu) {
 			if (p->patch_id >= new_patch->patch_id)
 				/* we already have the latest patch */
@@ -531,14 +522,14 @@ static void update_cache(struct ucode_patch *new_patch)
 		}
 	}
 	/* no patch found, add it */
-	list_add_tail(&new_patch->plist, &pcache);
+	list_add_tail(&new_patch->plist, &microcode_cache);
 }
 
 static void free_cache(void)
 {
 	struct ucode_patch *p, *tmp;
 
-	list_for_each_entry_safe(p, tmp, &pcache, plist) {
+	list_for_each_entry_safe(p, tmp, &microcode_cache, plist) {
 		__list_del(p->plist.prev, p->plist.next);
 		kfree(p->data);
 		kfree(p);
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index d0d1a0f5a497..55a2b24b2bdd 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -45,6 +45,8 @@
 static struct microcode_ops	*microcode_ops;
 static bool dis_ucode_ldr;
 
+LIST_HEAD(microcode_cache);
+
 /*
  * Synchronization.
  *
-- 
2.10.0

  parent reply	other threads:[~2016-10-25  9:56 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-25  9:55 [PATCH 00/12] x86/microcode: Rework microcode loading Borislav Petkov
2016-10-25  9:55 ` [PATCH 01/12] x86/microcode: Run the AP-loading routine only on the application processors Borislav Petkov
2016-10-25 16:27   ` [tip:x86/microcode] " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 02/12] x86/microcode: Move driver authors to CREDITS Borislav Petkov
2016-10-25 16:28   ` [tip:x86/microcode] " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 03/12] x86/microcode/intel: Simplify generic_load_microcode() Borislav Petkov
2016-10-25 16:28   ` [tip:x86/microcode] " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 04/12] x86/microcode: Remove one ifdef clause Borislav Petkov
2016-10-25 16:29   ` [tip:x86/microcode] x86/microcode: Remove one #ifdef clause tip-bot for Borislav Petkov
2016-10-25  9:55 ` Borislav Petkov [this message]
2016-10-25 16:29   ` [tip:x86/microcode] x86/microcode: Export the microcode cache linked list tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 06/12] x86/microcode/AMD: Hand down the CPU family Borislav Petkov
2016-10-25 16:30   ` [tip:x86/microcode] x86/microcode/amd: " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 07/12] x86/microcode: Issue the debug printk on resume only on success Borislav Petkov
2016-10-25 16:30   ` [tip:x86/microcode] " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 08/12] x86/microcode: Collect CPU info on resume Borislav Petkov
2016-10-25 16:31   ` [tip:x86/microcode] " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 09/12] x86/microcode/AMD: Retract functions Borislav Petkov
2016-10-25 16:31   ` [tip:x86/microcode] x86/microcode/amd: Move private inlines to .c and mark local functions static tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 10/12] x86/microcode/intel: Remove intel_lib.c Borislav Petkov
2016-10-25 16:32   ` [tip:x86/microcode] " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 11/12] x86/microcode: Rework microcode loading Borislav Petkov
2016-10-25 16:32   ` [tip:x86/microcode] " tip-bot for Borislav Petkov
2016-10-25  9:55 ` [PATCH 12/12] x86/microcode: Bump driver version, update copyrights Borislav Petkov
2016-10-25 16:33   ` [tip:x86/microcode] " 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=20161025095522.11964-6-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.