Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
f26d9db2
Commit
f26d9db2
authored
Feb 11, 2019
by
Ingo Molnar
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'x86/cpu' into perf/core, to pick up dependent commit
Signed-off-by:
Ingo Molnar
<
mingo@kernel.org
>
parents
6854daa0
0f42b790
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
62 additions
and
5 deletions
+62
-5
arch/x86/include/asm/cpu_device_id.h
arch/x86/include/asm/cpu_device_id.h
+28
-0
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/cpu/amd.c
+3
-5
arch/x86/kernel/cpu/match.c
arch/x86/kernel/cpu/match.c
+31
-0
No files found.
arch/x86/include/asm/cpu_device_id.h
View file @
f26d9db2
...
...
@@ -11,4 +11,32 @@
extern
const
struct
x86_cpu_id
*
x86_match_cpu
(
const
struct
x86_cpu_id
*
match
);
/*
* Match specific microcode revisions.
*
* vendor/family/model/stepping must be all set.
*
* Only checks against the boot CPU. When mixed-stepping configs are
* valid for a CPU model, add a quirk for every valid stepping and
* do the fine-tuning in the quirk handler.
*/
struct
x86_cpu_desc
{
__u8
x86_family
;
__u8
x86_vendor
;
__u8
x86_model
;
__u8
x86_stepping
;
__u32
x86_microcode_rev
;
};
#define INTEL_CPU_DESC(mod, step, rev) { \
.x86_family = 6, \
.x86_vendor = X86_VENDOR_INTEL, \
.x86_model = mod, \
.x86_stepping = step, \
.x86_microcode_rev = rev, \
}
extern
bool
x86_cpu_has_min_microcode_rev
(
const
struct
x86_cpu_desc
*
table
);
#endif
arch/x86/kernel/cpu/amd.c
View file @
f26d9db2
...
...
@@ -819,11 +819,9 @@ static void init_amd_bd(struct cpuinfo_x86 *c)
static
void
init_amd_zn
(
struct
cpuinfo_x86
*
c
)
{
set_cpu_cap
(
c
,
X86_FEATURE_ZEN
);
/*
* Fix erratum 1076: CPB feature bit not being set in CPUID. It affects
* all up to and including B1.
*/
if
(
c
->
x86_model
<=
1
&&
c
->
x86_stepping
<=
1
)
/* Fix erratum 1076: CPB feature bit not being set in CPUID. */
if
(
!
cpu_has
(
c
,
X86_FEATURE_CPB
))
set_cpu_cap
(
c
,
X86_FEATURE_CPB
);
}
...
...
arch/x86/kernel/cpu/match.c
View file @
f26d9db2
...
...
@@ -48,3 +48,34 @@ const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match)
return
NULL
;
}
EXPORT_SYMBOL
(
x86_match_cpu
);
static
const
struct
x86_cpu_desc
*
x86_match_cpu_with_stepping
(
const
struct
x86_cpu_desc
*
match
)
{
struct
cpuinfo_x86
*
c
=
&
boot_cpu_data
;
const
struct
x86_cpu_desc
*
m
;
for
(
m
=
match
;
m
->
x86_family
|
m
->
x86_model
;
m
++
)
{
if
(
c
->
x86_vendor
!=
m
->
x86_vendor
)
continue
;
if
(
c
->
x86
!=
m
->
x86_family
)
continue
;
if
(
c
->
x86_model
!=
m
->
x86_model
)
continue
;
if
(
c
->
x86_stepping
!=
m
->
x86_stepping
)
continue
;
return
m
;
}
return
NULL
;
}
bool
x86_cpu_has_min_microcode_rev
(
const
struct
x86_cpu_desc
*
table
)
{
const
struct
x86_cpu_desc
*
res
=
x86_match_cpu_with_stepping
(
table
);
if
(
!
res
||
res
->
x86_microcode_rev
>
boot_cpu_data
.
microcode
)
return
false
;
return
true
;
}
EXPORT_SYMBOL_GPL
(
x86_cpu_has_min_microcode_rev
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment