Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
446d2733
Commit
446d2733
authored
Sep 05, 2008
by
Ingo Molnar
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'x86/cpu' into x86/core
parents
accf0fa6
0a488a53
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
669 additions
and
454 deletions
+669
-454
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+6
-0
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/Makefile
+2
-2
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/cpu/amd.c
+7
-5
arch/x86/kernel/cpu/amd_64.c
arch/x86/kernel/cpu/amd_64.c
+2
-2
arch/x86/kernel/cpu/centaur.c
arch/x86/kernel/cpu/centaur.c
+13
-1
arch/x86/kernel/cpu/centaur_64.c
arch/x86/kernel/cpu/centaur_64.c
+2
-1
arch/x86/kernel/cpu/common.c
arch/x86/kernel/cpu/common.c
+313
-276
arch/x86/kernel/cpu/common_64.c
arch/x86/kernel/cpu/common_64.c
+231
-132
arch/x86/kernel/cpu/cpu.h
arch/x86/kernel/cpu/cpu.h
+6
-12
arch/x86/kernel/cpu/cyrix.c
arch/x86/kernel/cpu/cyrix.c
+32
-6
arch/x86/kernel/cpu/intel.c
arch/x86/kernel/cpu/intel.c
+2
-1
arch/x86/kernel/cpu/intel_64.c
arch/x86/kernel/cpu/intel_64.c
+2
-1
arch/x86/kernel/cpu/transmeta.c
arch/x86/kernel/cpu/transmeta.c
+2
-1
arch/x86/kernel/cpu/umc.c
arch/x86/kernel/cpu/umc.c
+2
-1
arch/x86/kernel/paravirt.c
arch/x86/kernel/paravirt.c
+1
-0
arch/x86/kernel/traps_64.c
arch/x86/kernel/traps_64.c
+2
-3
arch/x86/kernel/vmlinux_32.lds.S
arch/x86/kernel/vmlinux_32.lds.S
+4
-4
arch/x86/kernel/vmlinux_64.lds.S
arch/x86/kernel/vmlinux_64.lds.S
+4
-5
include/asm-x86/msr.h
include/asm-x86/msr.h
+23
-0
include/asm-x86/paravirt.h
include/asm-x86/paravirt.h
+12
-0
include/asm-x86/processor.h
include/asm-x86/processor.h
+1
-1
No files found.
Documentation/kernel-parameters.txt
View file @
446d2733
...
...
@@ -1888,6 +1888,12 @@ and is between 256 and 4096 characters. It is defined in the file
shapers= [NET]
Maximal number of shapers.
show_msr= [x86] show boot-time MSR settings
Format: { <integer> }
Show boot-time (BIOS-initialized) MSR settings.
The parameter means the number of CPUs to show,
for example 1 means boot CPU only.
sim710= [SCSI,HW]
See header of drivers/scsi/sim710.c.
...
...
arch/x86/kernel/cpu/Makefile
View file @
446d2733
...
...
@@ -8,14 +8,14 @@ obj-y += proc.o capflags.o powerflags.o
obj-$(CONFIG_X86_32)
+=
common.o bugs.o cmpxchg.o
obj-$(CONFIG_X86_64)
+=
common_64.o bugs_64.o
obj-$(CONFIG_CPU_SUP_INTEL_32)
+=
intel.o
obj-$(CONFIG_CPU_SUP_INTEL_64)
+=
intel_64.o
obj-$(CONFIG_CPU_SUP_AMD_32)
+=
amd.o
obj-$(CONFIG_CPU_SUP_AMD_64)
+=
amd_64.o
obj-$(CONFIG_CPU_SUP_CYRIX_32)
+=
cyrix.o
obj-$(CONFIG_CPU_SUP_CENTAUR_32)
+=
centaur.o
obj-$(CONFIG_CPU_SUP_CENTAUR_64)
+=
centaur_64.o
obj-$(CONFIG_CPU_SUP_TRANSMETA_32)
+=
transmeta.o
obj-$(CONFIG_CPU_SUP_INTEL_32)
+=
intel.o
obj-$(CONFIG_CPU_SUP_INTEL_64)
+=
intel_64.o
obj-$(CONFIG_CPU_SUP_UMC_32)
+=
umc.o
obj-$(CONFIG_X86_MCE)
+=
mcheck/
...
...
arch/x86/kernel/cpu/amd.c
View file @
446d2733
...
...
@@ -31,6 +31,11 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
if
(
c
->
x86_power
&
(
1
<<
8
))
set_cpu_cap
(
c
,
X86_FEATURE_CONSTANT_TSC
);
}
/* Set MTRR capability flag if appropriate */
if
(
c
->
x86_model
==
13
||
c
->
x86_model
==
9
||
(
c
->
x86_model
==
8
&&
c
->
x86_mask
>=
8
))
set_cpu_cap
(
c
,
X86_FEATURE_K6_MTRR
);
}
static
void
__cpuinit
init_amd
(
struct
cpuinfo_x86
*
c
)
...
...
@@ -166,10 +171,6 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
mbytes
);
}
/* Set MTRR capability flag if appropriate */
if
(
c
->
x86_model
==
13
||
c
->
x86_model
==
9
||
(
c
->
x86_model
==
8
&&
c
->
x86_mask
>=
8
))
set_cpu_cap
(
c
,
X86_FEATURE_K6_MTRR
);
break
;
}
...
...
@@ -297,6 +298,7 @@ static struct cpu_dev amd_cpu_dev __cpuinitdata = {
.
c_early_init
=
early_init_amd
,
.
c_init
=
init_amd
,
.
c_size_cache
=
amd_size_cache
,
.
c_x86_vendor
=
X86_VENDOR_AMD
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_AMD
,
&
amd_cpu_dev
);
cpu_
dev_register
(
amd_cpu_dev
);
arch/x86/kernel/cpu/amd_64.c
View file @
446d2733
...
...
@@ -218,7 +218,7 @@ static struct cpu_dev amd_cpu_dev __cpuinitdata = {
.
c_ident
=
{
"AuthenticAMD"
},
.
c_early_init
=
early_init_amd
,
.
c_init
=
init_amd
,
.
c_x86_vendor
=
X86_VENDOR_AMD
,
};
cpu_vendor_dev_register
(
X86_VENDOR_AMD
,
&
amd_cpu_dev
);
cpu_dev_register
(
amd_cpu_dev
);
arch/x86/kernel/cpu/centaur.c
View file @
446d2733
...
...
@@ -314,6 +314,16 @@ enum {
EAMD3D
=
1
<<
20
,
};
static
void
__cpuinit
early_init_centaur
(
struct
cpuinfo_x86
*
c
)
{
switch
(
c
->
x86
)
{
case
5
:
/* Emulate MTRRs using Centaur's MCR. */
set_cpu_cap
(
c
,
X86_FEATURE_CENTAUR_MCR
);
break
;
}
}
static
void
__cpuinit
init_centaur
(
struct
cpuinfo_x86
*
c
)
{
...
...
@@ -462,8 +472,10 @@ centaur_size_cache(struct cpuinfo_x86 *c, unsigned int size)
static
struct
cpu_dev
centaur_cpu_dev
__cpuinitdata
=
{
.
c_vendor
=
"Centaur"
,
.
c_ident
=
{
"CentaurHauls"
},
.
c_early_init
=
early_init_centaur
,
.
c_init
=
init_centaur
,
.
c_size_cache
=
centaur_size_cache
,
.
c_x86_vendor
=
X86_VENDOR_CENTAUR
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_CENTAUR
,
&
centaur_cpu_dev
);
cpu_
dev_register
(
centaur_cpu_dev
);
arch/x86/kernel/cpu/centaur_64.c
View file @
446d2733
...
...
@@ -29,7 +29,8 @@ static struct cpu_dev centaur_cpu_dev __cpuinitdata = {
.
c_ident
=
{
"CentaurHauls"
},
.
c_early_init
=
early_init_centaur
,
.
c_init
=
init_centaur
,
.
c_x86_vendor
=
X86_VENDOR_CENTAUR
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_CENTAUR
,
&
centaur_cpu_dev
);
cpu_
dev_register
(
centaur_cpu_dev
);
arch/x86/kernel/cpu/common.c
View file @
446d2733
This diff is collapsed.
Click to expand it.
arch/x86/kernel/cpu/common_64.c
View file @
446d2733
This diff is collapsed.
Click to expand it.
arch/x86/kernel/cpu/cpu.h
View file @
446d2733
...
...
@@ -21,21 +21,15 @@ struct cpu_dev {
void
(
*
c_init
)(
struct
cpuinfo_x86
*
c
);
void
(
*
c_identify
)(
struct
cpuinfo_x86
*
c
);
unsigned
int
(
*
c_size_cache
)(
struct
cpuinfo_x86
*
c
,
unsigned
int
size
);
int
c_x86_vendor
;
};
extern
struct
cpu_dev
*
cpu_devs
[
X86_VENDOR_NUM
];
#define cpu_dev_register(cpu_devX) \
static struct cpu_dev *__cpu_dev_##cpu_devX __used \
__attribute__((__section__(".x86_cpu_dev.init"))) = \
&cpu_devX;
struct
cpu_vendor_dev
{
int
vendor
;
struct
cpu_dev
*
cpu_dev
;
};
#define cpu_vendor_dev_register(cpu_vendor_id, cpu_dev) \
static struct cpu_vendor_dev __cpu_vendor_dev_##cpu_vendor_id __used \
__attribute__((__section__(".x86cpuvendor.init"))) = \
{ cpu_vendor_id, cpu_dev }
extern
struct
cpu_vendor_dev
__x86cpuvendor_start
[],
__x86cpuvendor_end
[];
extern
struct
cpu_dev
*
__x86_cpu_dev_start
[],
*
__x86_cpu_dev_end
[];
extern
int
get_model_name
(
struct
cpuinfo_x86
*
c
);
extern
void
display_cacheinfo
(
struct
cpuinfo_x86
*
c
);
...
...
arch/x86/kernel/cpu/cyrix.c
View file @
446d2733
...
...
@@ -15,13 +15,11 @@
/*
* Read NSC/Cyrix DEVID registers (DIR) to get more detailed info. about the CPU
*/
static
void
__cpuinit
do_cyrix_devid
(
unsigned
char
*
dir0
,
unsigned
char
*
dir1
)
static
void
__cpuinit
__
do_cyrix_devid
(
unsigned
char
*
dir0
,
unsigned
char
*
dir1
)
{
unsigned
char
ccr2
,
ccr3
;
unsigned
long
flags
;
/* we test for DEVID by checking whether CCR3 is writable */
local_irq_save
(
flags
);
ccr3
=
getCx86
(
CX86_CCR3
);
setCx86
(
CX86_CCR3
,
ccr3
^
0x80
);
getCx86
(
0xc0
);
/* dummy to change bus */
...
...
@@ -44,9 +42,16 @@ static void __cpuinit do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
*
dir0
=
getCx86
(
CX86_DIR0
);
*
dir1
=
getCx86
(
CX86_DIR1
);
}
local_irq_restore
(
flags
);
}
static
void
__cpuinit
do_cyrix_devid
(
unsigned
char
*
dir0
,
unsigned
char
*
dir1
)
{
unsigned
long
flags
;
local_irq_save
(
flags
);
__do_cyrix_devid
(
dir0
,
dir1
);
local_irq_restore
(
flags
);
}
/*
* Cx86_dir0_msb is a HACK needed by check_cx686_cpuid/slop in bugs.h in
* order to identify the Cyrix CPU model after we're out of setup.c
...
...
@@ -161,6 +166,24 @@ static void __cpuinit geode_configure(void)
local_irq_restore
(
flags
);
}
static
void
__cpuinit
early_init_cyrix
(
struct
cpuinfo_x86
*
c
)
{
unsigned
char
dir0
,
dir0_msn
,
dir1
=
0
;
__do_cyrix_devid
(
&
dir0
,
&
dir1
);
dir0_msn
=
dir0
>>
4
;
/* identifies CPU "family" */
switch
(
dir0_msn
)
{
case
3
:
/* 6x86/6x86L */
/* Emulate MTRRs using Cyrix's ARRs. */
set_cpu_cap
(
c
,
X86_FEATURE_CYRIX_ARR
);
break
;
case
5
:
/* 6x86MX/M II */
/* Emulate MTRRs using Cyrix's ARRs. */
set_cpu_cap
(
c
,
X86_FEATURE_CYRIX_ARR
);
break
;
}
}
static
void
__cpuinit
init_cyrix
(
struct
cpuinfo_x86
*
c
)
{
...
...
@@ -416,16 +439,19 @@ static void __cpuinit cyrix_identify(struct cpuinfo_x86 *c)
static
struct
cpu_dev
cyrix_cpu_dev
__cpuinitdata
=
{
.
c_vendor
=
"Cyrix"
,
.
c_ident
=
{
"CyrixInstead"
},
.
c_early_init
=
early_init_cyrix
,
.
c_init
=
init_cyrix
,
.
c_identify
=
cyrix_identify
,
.
c_x86_vendor
=
X86_VENDOR_CYRIX
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_CYRIX
,
&
cyrix_cpu_dev
);
cpu_
dev_register
(
cyrix_cpu_dev
);
static
struct
cpu_dev
nsc_cpu_dev
__cpuinitdata
=
{
.
c_vendor
=
"NSC"
,
.
c_ident
=
{
"Geode by NSC"
},
.
c_init
=
init_nsc
,
.
c_x86_vendor
=
X86_VENDOR_NSC
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_NSC
,
&
nsc_cpu_dev
);
cpu_
dev_register
(
nsc_cpu_dev
);
arch/x86/kernel/cpu/intel.c
View file @
446d2733
...
...
@@ -303,9 +303,10 @@ static struct cpu_dev intel_cpu_dev __cpuinitdata = {
.
c_early_init
=
early_init_intel
,
.
c_init
=
init_intel
,
.
c_size_cache
=
intel_size_cache
,
.
c_x86_vendor
=
X86_VENDOR_INTEL
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_INTEL
,
&
intel_cpu_dev
);
cpu_
dev_register
(
intel_cpu_dev
);
/* arch_initcall(intel_cpu_init); */
arch/x86/kernel/cpu/intel_64.c
View file @
446d2733
...
...
@@ -90,6 +90,7 @@ static struct cpu_dev intel_cpu_dev __cpuinitdata = {
.
c_ident
=
{
"GenuineIntel"
},
.
c_early_init
=
early_init_intel
,
.
c_init
=
init_intel
,
.
c_x86_vendor
=
X86_VENDOR_INTEL
,
};
cpu_vendor_dev_register
(
X86_VENDOR_INTEL
,
&
intel_cpu_dev
);
cpu_dev_register
(
intel_cpu_dev
);
arch/x86/kernel/cpu/transmeta.c
View file @
446d2733
...
...
@@ -102,6 +102,7 @@ static struct cpu_dev transmeta_cpu_dev __cpuinitdata = {
.
c_ident
=
{
"GenuineTMx86"
,
"TransmetaCPU"
},
.
c_init
=
init_transmeta
,
.
c_identify
=
transmeta_identify
,
.
c_x86_vendor
=
X86_VENDOR_TRANSMETA
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_TRANSMETA
,
&
transmeta_cpu_dev
);
cpu_
dev_register
(
transmeta_cpu_dev
);
arch/x86/kernel/cpu/umc.c
View file @
446d2733
...
...
@@ -19,7 +19,8 @@ static struct cpu_dev umc_cpu_dev __cpuinitdata = {
}
},
},
.
c_x86_vendor
=
X86_VENDOR_UMC
,
};
cpu_
vendor_dev_register
(
X86_VENDOR_UMC
,
&
umc_cpu_dev
);
cpu_
dev_register
(
umc_cpu_dev
);
arch/x86/kernel/paravirt.c
View file @
446d2733
...
...
@@ -330,6 +330,7 @@ struct pv_cpu_ops pv_cpu_ops = {
#endif
.
wbinvd
=
native_wbinvd
,
.
read_msr
=
native_read_msr_safe
,
.
read_msr_amd
=
native_read_msr_amd_safe
,
.
write_msr
=
native_write_msr_safe
,
.
read_tsc
=
native_read_tsc
,
.
read_pmc
=
native_read_pmc
,
...
...
arch/x86/kernel/traps_64.c
View file @
446d2733
...
...
@@ -339,9 +339,8 @@ static void
show_trace_log_lvl
(
struct
task_struct
*
task
,
struct
pt_regs
*
regs
,
unsigned
long
*
stack
,
unsigned
long
bp
,
char
*
log_lvl
)
{
printk
(
"
\n
Call Trace:
\n
"
);
printk
(
"Call Trace:
\n
"
);
dump_trace
(
task
,
regs
,
stack
,
bp
,
&
print_trace_ops
,
log_lvl
);
printk
(
"
\n
"
);
}
void
show_trace
(
struct
task_struct
*
task
,
struct
pt_regs
*
regs
,
...
...
@@ -386,6 +385,7 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
printk
(
" %016lx"
,
*
stack
++
);
touch_nmi_watchdog
();
}
printk
(
"
\n
"
);
show_trace_log_lvl
(
task
,
regs
,
sp
,
bp
,
log_lvl
);
}
...
...
@@ -443,7 +443,6 @@ void show_registers(struct pt_regs *regs)
printk
(
"Stack: "
);
show_stack_log_lvl
(
NULL
,
regs
,
(
unsigned
long
*
)
sp
,
regs
->
bp
,
""
);
printk
(
"
\n
"
);
printk
(
KERN_EMERG
"Code: "
);
...
...
arch/x86/kernel/vmlinux_32.lds.S
View file @
446d2733
...
...
@@ -140,10 +140,10 @@ SECTIONS
*(.
con_initcall
.
init
)
__con_initcall_end
=
.
;
}
.
x86
cpuvendor.init
:
AT
(
ADDR
(
.
x86cpuvendor
.
init
)
-
LOAD_OFFSET
)
{
__x86
cpuvendor
_start
=
.
;
*(.
x86
cpuvendor
.init
)
__x86
cpuvendor
_end
=
.
;
.
x86
_cpu_dev
.
init
:
AT
(
ADDR
(
.
x86_cpu_dev
.
init
)
-
LOAD_OFFSET
)
{
__x86
_cpu_dev
_start
=
.
;
*(.
x86
_cpu_dev
.
init
)
__x86
_cpu_dev
_end
=
.
;
}
SECURITY_INIT
.
=
ALIGN
(
4
)
;
...
...
arch/x86/kernel/vmlinux_64.lds.S
View file @
446d2733
...
...
@@ -168,13 +168,12 @@ SECTIONS
*(.
con_initcall
.
init
)
}
__con_initcall_end
=
.
;
.
=
ALIGN
(
16
)
;
__x86cpuvendor_start
=
.
;
.
x86cpuvendor.init
:
AT
(
ADDR
(
.
x86cpuvendor
.
init
)
-
LOAD_OFFSET
)
{
*(.
x86cpuvendor.init
)
__x86_cpu_dev_start
=
.
;
.
x86_cpu_dev
.
init
:
AT
(
ADDR
(
.
x86_cpu_dev
.
init
)
-
LOAD_OFFSET
)
{
*(.
x86_cpu_dev
.
init
)
}
__x86cpuvendor_end
=
.
;
SECURITY_INIT
__x86_cpu_dev_end
=
.
;
.
=
ALIGN
(
8
)
;
.
parainstructions
:
AT
(
ADDR
(
.
parainstructions
)
-
LOAD_OFFSET
)
{
...
...
include/asm-x86/msr.h
View file @
446d2733
...
...
@@ -63,6 +63,22 @@ static inline unsigned long long native_read_msr_safe(unsigned int msr,
return
EAX_EDX_VAL
(
val
,
low
,
high
);
}
static
inline
unsigned
long
long
native_read_msr_amd_safe
(
unsigned
int
msr
,
int
*
err
)
{
DECLARE_ARGS
(
val
,
low
,
high
);
asm
volatile
(
"2: rdmsr ; xor %0,%0
\n
"
"1:
\n\t
"
".section .fixup,
\"
ax
\"\n\t
"
"3: mov %3,%0 ; jmp 1b
\n\t
"
".previous
\n\t
"
_ASM_EXTABLE
(
2
b
,
3
b
)
:
"=r"
(
*
err
),
EAX_EDX_RET
(
val
,
low
,
high
)
:
"c"
(
msr
),
"D"
(
0x9c5a203a
),
"i"
(
-
EFAULT
));
return
EAX_EDX_VAL
(
val
,
low
,
high
);
}
static
inline
void
native_write_msr
(
unsigned
int
msr
,
unsigned
low
,
unsigned
high
)
{
...
...
@@ -158,6 +174,13 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
*
p
=
native_read_msr_safe
(
msr
,
&
err
);
return
err
;
}
static
inline
int
rdmsrl_amd_safe
(
unsigned
msr
,
unsigned
long
long
*
p
)
{
int
err
;
*
p
=
native_read_msr_amd_safe
(
msr
,
&
err
);
return
err
;
}
#define rdtscl(low) \
((low) = (u32)native_read_tsc())
...
...
include/asm-x86/paravirt.h
View file @
446d2733
...
...
@@ -137,6 +137,7 @@ struct pv_cpu_ops {
/* MSR, PMC and TSR operations.
err = 0/-EFAULT. wrmsr returns 0/-EFAULT. */
u64
(
*
read_msr_amd
)(
unsigned
int
msr
,
int
*
err
);
u64
(
*
read_msr
)(
unsigned
int
msr
,
int
*
err
);
int
(
*
write_msr
)(
unsigned
int
msr
,
unsigned
low
,
unsigned
high
);
...
...
@@ -720,6 +721,10 @@ static inline u64 paravirt_read_msr(unsigned msr, int *err)
{
return
PVOP_CALL2
(
u64
,
pv_cpu_ops
.
read_msr
,
msr
,
err
);
}
static
inline
u64
paravirt_read_msr_amd
(
unsigned
msr
,
int
*
err
)
{
return
PVOP_CALL2
(
u64
,
pv_cpu_ops
.
read_msr_amd
,
msr
,
err
);
}
static
inline
int
paravirt_write_msr
(
unsigned
msr
,
unsigned
low
,
unsigned
high
)
{
return
PVOP_CALL3
(
int
,
pv_cpu_ops
.
write_msr
,
msr
,
low
,
high
);
...
...
@@ -765,6 +770,13 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
*
p
=
paravirt_read_msr
(
msr
,
&
err
);
return
err
;
}
static
inline
int
rdmsrl_amd_safe
(
unsigned
msr
,
unsigned
long
long
*
p
)
{
int
err
;
*
p
=
paravirt_read_msr_amd
(
msr
,
&
err
);
return
err
;
}
static
inline
u64
paravirt_read_tsc
(
void
)
{
...
...
include/asm-x86/processor.h
View file @
446d2733
...
...
@@ -77,9 +77,9 @@ struct cpuinfo_x86 {
__u8
x86_phys_bits
;
/* CPUID returned core id bits: */
__u8
x86_coreid_bits
;
#endif
/* Max extended CPUID function supported: */
__u32
extended_cpuid_level
;
#endif
/* Maximum supported CPUID level, -1=no CPUID: */
int
cpuid_level
;
__u32
x86_capability
[
NCAPINTS
];
...
...
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