[lkml]   [2019]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
SubjectRe: [tip: x86/urgent] x86/CPU/AMD: Clear RDRAND CPUID bit on AMD family 15h/16h
On Fri, Aug 23, 2019 at 01:10:49AM -0000, tip-bot2 for Tom Lendacky wrote:
>The following commit has been merged into the x86/urgent branch of tip:
>Commit-ID: c49a0a80137c7ca7d6ced4c812c9e07a949f6f24
>Author: Tom Lendacky <>
>AuthorDate: Mon, 19 Aug 2019 15:52:35
>Committer: Borislav Petkov <>
>CommitterDate: Mon, 19 Aug 2019 19:42:52 +02:00
>x86/CPU/AMD: Clear RDRAND CPUID bit on AMD family 15h/16h
>There have been reports of RDRAND issues after resuming from suspend on
>some AMD family 15h and family 16h systems. This issue stems from a BIOS
>not performing the proper steps during resume to ensure RDRAND continues
>to function properly.
>RDRAND support is indicated by CPUID Fn00000001_ECX[30]. This bit can be
>reset by clearing MSR C001_1004[62]. Any software that checks for RDRAND
>support using CPUID, including the kernel, will believe that RDRAND is
>not supported.
>Update the CPU initialization to clear the RDRAND CPUID bit for any family
>15h and 16h processor that supports RDRAND. If it is known that the family
>15h or family 16h system does not have an RDRAND resume issue or that the
>system will not be placed in suspend, the "rdrand=force" kernel parameter
>can be used to stop the clearing of the RDRAND CPUID bit.
>Additionally, update the suspend and resume path to save and restore the
>MSR C001_1004 value to ensure that the RDRAND CPUID setting remains in
>place after resuming from suspend.
>Note, that clearing the RDRAND CPUID bit does not prevent a processor
>that normally supports the RDRAND instruction from executing it. So any
>code that determined the support based on family and model won't #UD.
>Signed-off-by: Tom Lendacky <>
>Signed-off-by: Borislav Petkov <>
>Cc: Andrew Cooper <>
>Cc: Andrew Morton <>
>Cc: Chen Yu <>
>Cc: "H. Peter Anvin" <>
>Cc: Ingo Molnar <>
>Cc: Jonathan Corbet <>
>Cc: Josh Poimboeuf <>
>Cc: Juergen Gross <>
>Cc: Kees Cook <>
>Cc: "" <>
>Cc: "" <>
>Cc: Nathan Chancellor <>
>Cc: Paolo Bonzini <>
>Cc: Pavel Machek <>
>Cc: "Rafael J. Wysocki" <>
>Cc: <>
>Cc: Thomas Gleixner <>
>Cc: "" <>
> Documentation/admin-guide/kernel-parameters.txt | 7 +-
> arch/x86/include/asm/msr-index.h | 1 +-
> arch/x86/kernel/cpu/amd.c | 66 +------------
> arch/x86/power/cpu.c | 86 ++--------------
> 4 files changed, 13 insertions(+), 147 deletions(-)
>diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
>index 4c19719..47d981a 100644
>--- a/Documentation/admin-guide/kernel-parameters.txt
>+++ b/Documentation/admin-guide/kernel-parameters.txt
>@@ -4090,13 +4090,6 @@
> Run specified binary instead of /init from the ramdisk,
> used for early userspace startup. See initrd.
>- rdrand= [X86]
>- force - Override the decision by the kernel to hide the
>- advertisement of RDRAND support (this affects
>- certain AMD processors because of buggy BIOS
>- support, specifically around the suspend/resume
>- path).

Why is this being removed (along with supporting code)?


 \ /
  Last update: 2019-08-24 18:31    [W:0.111 / U:0.744 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site