x86, amd: Restrict usage of c1e_idle()
authorAndreas Herrmann <andreas.herrmann3@amd.com>
Fri, 19 Mar 2010 11:09:22 +0000 (12:09 +0100)
committerH. Peter Anvin <hpa@zytor.com>
Fri, 19 Mar 2010 21:43:36 +0000 (14:43 -0700)
commit035a02c1e1de31888e8b6adac0ff667971ac04db
treeaae59332c2e409f0a725123a8f514256a41cf869
parentff30a0543e9a6cd732582063e7cae951cdb7acf2
x86, amd: Restrict usage of c1e_idle()

Currently c1e_idle returns true for all CPUs greater than or equal to
family 0xf model 0x40. This covers too many CPUs.

Meanwhile a respective erratum for the underlying problem was filed
(#400). This patch adds the logic to check whether erratum #400
applies to a given CPU.
Especially for CPUs where SMI/HW triggered C1e is not supported,
c1e_idle() doesn't need to be used. We can check this by looking at
the respective OSVW bit for erratum #400.

Cc: <stable@kernel.org> # .32.x .33.x
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
LKML-Reference: <20100319110922.GA19614@alberich.amd.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/include/asm/msr-index.h
arch/x86/kernel/process.c