mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-26 13:57:59 +00:00
ebbeb55561
Also add script used to generate patches and SRC_URI Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
76 lines
2.6 KiB
Diff
76 lines
2.6 KiB
Diff
From cb0e26dce7e9a5384c7dec3550647faf56207108 Mon Sep 17 00:00:00 2001
|
|
From: Andreas Herrmann <andreas.herrmann3@amd.com>
|
|
Date: Fri, 20 Jan 2012 17:44:12 +0100
|
|
Subject: [PATCH 25/90] x86/microcode_amd: Add support for CPU family specific
|
|
container files
|
|
|
|
commit 5b68edc91cdc972c46f76f85eded7ffddc3ff5c2 upstream.
|
|
|
|
We've decided to provide CPU family specific container files
|
|
(starting with CPU family 15h). E.g. for family 15h we have to
|
|
load microcode_amd_fam15h.bin instead of microcode_amd.bin
|
|
|
|
Rationale is that starting with family 15h patch size is larger
|
|
than 2KB which was hard coded as maximum patch size in various
|
|
microcode loaders (not just Linux).
|
|
|
|
Container files which include patches larger than 2KB cause
|
|
different kinds of trouble with such old patch loaders. Thus we
|
|
have to ensure that the default container file provides only
|
|
patches with size less than 2KB.
|
|
|
|
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
|
|
Cc: Borislav Petkov <borislav.petkov@amd.com>
|
|
Cc: <stable@kernel.org>
|
|
Link: http://lkml.kernel.org/r/20120120164412.GD24508@alberich.amd.com
|
|
[ documented the naming convention and tidied the code a bit. ]
|
|
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
arch/x86/kernel/microcode_amd.c | 24 ++++++++++++++++++++++--
|
|
1 file changed, 22 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
|
|
index d494799..ac52c15 100644
|
|
--- a/arch/x86/kernel/microcode_amd.c
|
|
+++ b/arch/x86/kernel/microcode_amd.c
|
|
@@ -300,13 +300,33 @@ free_table:
|
|
return state;
|
|
}
|
|
|
|
+/*
|
|
+ * AMD microcode firmware naming convention, up to family 15h they are in
|
|
+ * the legacy file:
|
|
+ *
|
|
+ * amd-ucode/microcode_amd.bin
|
|
+ *
|
|
+ * This legacy file is always smaller than 2K in size.
|
|
+ *
|
|
+ * Starting at family 15h they are in family specific firmware files:
|
|
+ *
|
|
+ * amd-ucode/microcode_amd_fam15h.bin
|
|
+ * amd-ucode/microcode_amd_fam16h.bin
|
|
+ * ...
|
|
+ *
|
|
+ * These might be larger than 2K.
|
|
+ */
|
|
static enum ucode_state request_microcode_amd(int cpu, struct device *device)
|
|
{
|
|
- const char *fw_name = "amd-ucode/microcode_amd.bin";
|
|
+ char fw_name[36] = "amd-ucode/microcode_amd.bin";
|
|
const struct firmware *fw;
|
|
enum ucode_state ret = UCODE_NFOUND;
|
|
+ struct cpuinfo_x86 *c = &cpu_data(cpu);
|
|
+
|
|
+ if (c->x86 >= 0x15)
|
|
+ snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
|
|
|
|
- if (request_firmware(&fw, fw_name, device)) {
|
|
+ if (request_firmware(&fw, (const char *)fw_name, device)) {
|
|
pr_err("failed to load file %s\n", fw_name);
|
|
goto out;
|
|
}
|
|
--
|
|
1.7.9.4
|
|
|