x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag
Subsystems (2)
PATCH 1/1 x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the LAHF_LM capability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.
Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
---
While making this change, I noticed the clause above my code:
if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58)
It does not seem concerned with the possibility that some of the upper 16 bits of level will be non-zero. Is this intentional, or should the upper 16 bits be masked off before the comparisons?
arch/x86/kernel/cpu/amd.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
arch/x86/kernel/cpu/amd.c +8 -0
@@ -400,6 +400,14 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly set this feature, but only +* Revision E (with Extended Model = 2) actually supports +* it. +*/ +if (!(level &0x00020000 )) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Signature · 1 line
1.6.4
Hi,
Quoted 11 lines · Kevin Winchester
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Signed-off-by Kevin Winchester <[email protected]>---
Quoted 7 lines
While making this change, I noticed the clause above my code:
if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58)It does not seem concerned with the possibility that some of the upper 16 bits of level will be non-zero. Is this intentional, or should the upper 16 bits be masked off before the comparisons?
This should be ok because the upper 16 bits are 0x0000 for those revisions and therefore the whole u32 matches. Later revisions have the extended model bumped and they also match.
Quoted 10 lines
arch/x86/kernel/cpu/amd.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)arch/x86/kernel/cpu/amd.c +0
-0@@ -400,6 +400,14 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 410
Quoted 10 lines
arch/x86/kernel/cpu/amd.c +8
-0if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly set this feature, but only +* Revision E (with Extended Model = 2) actually supports +* it. +*/ +if (!(level &0x00020000 )) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM );
let me check this internally next week because
it seems that according to the Fam 0xf RevGuide
(http://support.amd.com/us/Processor_TechDocs/25759.pdf) erratum 110 applies to atleast 3 CPU revisions with extended model 0x1 too.
By the way, what does /proc/cpuinfo say on your machine?
Signature · 2 lines
Regards/Gruss,
Boris.Quoted 6 lines · Borislav Petkov
Quoted 6 lines
arch/x86/kernel/cpu/amd.c +6
-0+ +/* +* Some BIOSes incorrectly set this feature, but only +* Revision E (with Extended Model = 2) actually supports +* it. +*/
Quoted 8 lines
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 410
Quoted 2 lines
arch/x86/kernel/cpu/amd.c +2
-0+if (!(level &0x00020000 )) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM );let me check this internally next week because it seems that according to the Fam
0xfRevGuide
(http://support.amd.com/us/Processor_TechDocs/25759.pdf) erratum 110 applies to atleast 3 CPU revisions with extended model0x1too.
Ok, mind resending the patch (or dropping it) if you figured that out? We need to be careful about restoring CPU erratum workarounds that BIOSen install ... these things are very hard to test and easy to get wrong.
Ingo
Quoted 1 line · Borislav Petkov
By the way, what does
/proc/cpuinfosay on your machine?
below is the separate bugreport email, with cpuinfo included.
Ingo
----- Forwarded message from Kevin Winchester <[email protected]> -----
Date: Thu, 06 Aug 2009 13:50:46 -0300
From: Kevin Winchester <[email protected]>
To: Ingo Molnar <[email protected]>, "H. Peter Anvin" <[email protected]>,
Thomas Gleixner <[email protected]>
Subject: X86_FEATURE_LAHF_LM set incorrectly (likely due to BIOS bug)
CC: LKML <[email protected]>
Hi,
I have an AMD Athlon64 processor:
processor : 0vendor_id : AuthenticAMD
cpu family : 15
model : 4
model name : AMD Athlon(tm) 64 Processor 2800+
stepping : 10
cpu MHz : 1800.000
cache size : 512 KB
fpu : yesfpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow rep_good lahf_lm
bogomips : 3600.25
TLB size : 1024 4K pages
clflush size : 64cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp
As you can see, the lahf_lm feature is reported as being present, but the lahf/sahf instructions are not actually supported by this processor. A simple program:
int main() {
asm("lahf");
}results in:
$ ./a.out Illegal instruction
I think the problem is with my BIOS, because, in the following guide from AMD:
http://support.amd.com/us/Processor_TechDocs/25759.pdf
Erratum 110 indicates that some CPUs will not report the LAHF capability, even if they have it, and the BIOS should write to a specific MSR bit in order to get the feature reported as present (for processors that support LAHF). I believe that perhaps my BIOS is writing to that bit unconditionally, and this causes my CPU to report support for the feature.
If I am correct, would it be appropriate to add a check somewhere in the CPU feature code to detect early Athlon 64 processors like mine and clear that feature flag, in case other BIOSes have made the same mistake? If so, is there some kind of quirk mechanism for this, or should I prepare a patch that adds the check directly to the feature checking code?
Thanks,
Signature · 3 lines
Kevin Winchester ----- End forwarded message -----
Quoted 42 lines · Borislav Petkov
Hi,
Quoted 11 lines · Kevin Winchester
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Signed-off-by Kevin Winchester <[email protected]>---
Quoted 7 lines
While making this change, I noticed the clause above my code:
if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58)It does not seem concerned with the possibility that some of the upper 16 bits of level will be non-zero. Is this intentional, or should the upper 16 bits be masked off before the comparisons?
This should be ok because the upper 16 bits are
0x0000for those revisions and therefore the whole u32 matches. Later revisions have the extended model bumped and they also match.Quoted 16 lines
arch/x86/kernel/cpu/amd.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)arch/x86/kernel/cpu/amd.c +5
-0@@ -400,6 +400,14 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly set this feature, but only +* Revision E (with Extended Model = 2) actually supports +* it.
Quoted 8 lines
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 410
Quoted 3 lines
arch/x86/kernel/cpu/amd.c +3
-0+*/ +if (!(level &0x00020000 )) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM );let me check this internally next week because
it seems that according to the Fam0xfRevGuide
(http://support.amd.com/us/Processor_TechDocs/25759.pdf) erratum 110 applies to atleast 3 CPU revisions with extended model0x1too.
You are quite right, I will redo the patch.
Quoted 3 lines
By the way, what does
/proc/cpuinfosay on your machine?
processor : 0vendor_id : AuthenticAMD
cpu family : 15
model : 4
model name : AMD Athlon(tm) 64 Processor 2800+
stepping : 10
cpu MHz : 1800.000
cache size : 512 KB
fpu : yesfpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow rep_good
bogomips : 3599.75
TLB size : 1024 4K pages
clflush size : 64cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp
Signature · 1 line
Kevin Winchester
PATCH v2 1/1 x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag
In reply to Borislav PetkovDue to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the LAHF_LM capability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.
Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
--- arch/x86/kernel/cpu/amd.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
arch/x86/kernel/cpu/amd.c +8 -0
@@ -400,6 +400,14 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly set this feature, but only Revisions +* D (Extended Model = 1) and E (Extended Model = 2) actually +* support it. +*/ +if (!(level &0x00030000 )) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Signature · 1 line
1.6.4
Hi,
Quoted 19 lines · Kevin Winchester
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Signed-off-by Kevin Winchester <[email protected]>--- arch/x86/kernel/cpu/amd.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)arch/x86/kernel/cpu/amd.c +0
-0@@ -400,6 +400,14 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 410
Quoted 10 lines
arch/x86/kernel/cpu/amd.c +8
-0if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly set this feature, but only Revisions +* D (Extended Model = 1) and E (Extended Model = 2) actually +* support it. +*/ +if (!(level &0x00030000 )) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM );
The LAHF/SAHF instructions are supported on all K8s from revision D upwards. Revisions D start their CPU model numbering at 0x14 so your check should rather be
if (c->x86_model < 0x14) clear_cpu_cap(c, X86_FEATURE_LAHF_LM);
Please correct the comment above too for future reference.
Thanks.
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
PATCH v3 1/1 x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the LAHF_LM capability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.
Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
--- arch/x86/kernel/cpu/amd.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
arch/x86/kernel/cpu/amd.c +7 -0
@@ -400,6 +400,13 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly force this feature, but only K8 +* revision D (model = 0x14) and later actually support it. +*/ +if (c->x86_model <0x14 ) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Signature · 1 line
1.6.4
[tip:x86/urgent] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
Commit-ID: fbd8b1819e80ac5a176d085fdddc3a34d1499318 Gitweb: http://git.kernel.org/tip/fbd8b1819e80ac5a176d085fdddc3a34d1499318 Author: Kevin Winchester <[email protected]> AuthorDate: Mon, 10 Aug 2009 19:56:45 -0300 Committer: Ingo Molnar <[email protected]> CommitDate: Tue, 11 Aug 2009 13:34:54 +0200
x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the LAHF_LM capability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.
Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/cpu/amd.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
arch/x86/kernel/cpu/amd.c +7 -0
@@ -400,6 +400,13 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly force this feature, but only K8 +* revision D (model = 0x14) and later actually support it. +*/ +if (c->x86_model <0x14 ) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Quoted 9 lines · Kevin Winchester
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Signed-off-by Kevin Winchester <[email protected]>
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
Quoted 21 lines · Kevin Winchester
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Signed-off-by Kevin Winchester <[email protected]>--- arch/x86/kernel/cpu/amd.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)arch/x86/kernel/cpu/amd.c +0
-0@@ -400,6 +400,13 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 412
Quoted 10 lines
arch/x86/kernel/cpu/amd.c +7
-0+ +/* +* Some BIOSes incorrectly force this feature, but only K8 +* revision D (model = 0x14) and later actually support it. +*/ +if (c->x86_model <0x14 ) +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
But this only fixes /proc/cpuinfo, right?
Since the BIOS apparently wrote some MSR to get LAHF_LM incorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?
/Mikael
2009/8/11 Mikael Pettersson <[email protected]>:
Quoted 33 lines
Kevin Winchester writes:
> Due to an erratum with certain AMD Athlon 64 processors, the BIOS may > need to force enable theLAHF_LMcapability. Unfortunately, in at > least one case, the BIOS does this even for processors that do not > support the functionality.
>
> Add a specific check that will clear the feature bit for processors > known not to support the LAHF/SAHF instructions.
>
> Signed-off-by: Kevin Winchester <[email protected]>
> ---
> arch/x86/kernel/cpu/amd.c | 7 +++++++
> 1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --gita/arch/x86/kernel/cpu/amd.cb/arch/x86/kernel/cpu/amd.c> index e2485b0..63fddcd 100644
> ---a/arch/x86/kernel/cpu/amd.c
> +++b/arch/x86/kernel/cpu/amd.c
> @@ -400,6 +400,13 @@ static void__cpuinitinit_amd(struct cpuinfo_x86 *c)> level =cpuid_eax(1);
> if((level >=0x0f48&& level <0x0f50) || level >=0x0f58) > set_cpu_cap(c,X86_FEATURE_REP_GOOD);
> +
> + /*
> + * Some BIOSes incorrectly force this feature, but only K8 > + * revision D (model =0x14) and later actually support it. > + */
> + if (c->x86_model<0x14)
> + clear_cpu_cap(c,X86_FEATURE_LAHF_LM);
> }
> if (c->x86==0x10||c->x86==0x11)
> set_cpu_cap(c,X86_FEATURE_REP_GOOD);
Quoted 6 lines
But this only fixes
/proc/cpuinfo, right?Since the BIOS apparently wrote some MSR to get
LAHF_LMincorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?
Yes, this does only fix /proc/cpuinfo. The problem I was experiencing was related to the 64-bit Adobe Flash plugin, which always uses the LAHF instruction, regardless of the capabilities of the processor. Gentoo has a special additional browser plugin that will basically emulate the LAHF instruction when it gets an illegal instruction signal, but that plugin is not installed if /proc/cpuinfo indicates that LAHF is supported.
Thus this patch precisely fixes my problem.
Other options would be, as you mention, to correct the MSR value, or even to have the kernel emulate the instruction (if that is possible).
I would be happy to implement any other solution instead if it would help others,
while continuing to solve my problem - but this was the simplest answer I had.
Signature · 1 line
Kevin Winchester
Quoted 3 lines · Mikael Pettersson
Since the BIOS apparently wrote some MSR to get
LAHF_LMincorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?
That's a good catch, actually. We have to turn off that bit in the cpuid leaf too if the CPU doesn't support the instructions so that cpuid info is consistent. LAHF/SAHF support in 64bit mode has to be cpuid-checked prior to using them so that info has to be correct.
@Kevin: willing to try a patch or two?
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
Quoted 26 lines · Kevin Winchester
2009/8/11 Borislav Petkov <[email protected]>:
Quoted 5 lines · Mikael Pettersson
Quoted 3 lines
Since the BIOS apparently wrote some MSR to get
LAHF_LMincorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?Quoted 7 lines
That's a good catch, actually. We have to turn off that bit in the cpuid leaf too if the CPU doesn't support the instructions so that cpuid info is consistent. LAHF/SAHF support in 64bit mode has to be cpuid-checked prior to using them so that info has to be correct.
@Kevin: willing to try a patch or two?
Sure, I'll give it a try this evening. I assume that since Erratum 110 says:
--------------------------
Suggested Workaround
For processors which support the feature (as determined by the processor revision ID), BIOS should
write a one to:
• MSRC001_100Dh, bit 32 for revision D silicon.
• MSRC001_1005h, bit 32 for revision E and later silicon. This will cause the extended feature flag in ECX[0] to be set.
--------------------------
Quoted 1 line
That writing a zero to those same MSRs would clear the feature flag?
Yep :). Patch coming up...
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
2009/8/11 Borislav Petkov <[email protected]>:
Quoted 5 lines · Mikael Pettersson
Quoted 3 lines
Since the BIOS apparently wrote some MSR to get
LAHF_LMincorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?
Quoted 7 lines
That's a good catch, actually. We have to turn off that bit in the cpuid leaf too if the CPU doesn't support the instructions so that cpuid info is consistent. LAHF/SAHF support in 64bit mode has to be cpuid-checked prior to using them so that info has to be correct.
@Kevin: willing to try a patch or two?
Sure, I'll give it a try this evening. I assume that since Erratum 110 says:
--------------------------
Suggested Workaround
For processors which support the feature (as determined by the processor revision ID), BIOS should
write a one to:
• MSR C001_100Dh, bit 32 for revision D silicon.
• MSR C001_1005h, bit 32 for revision E and later silicon. This will cause the extended feature flag in ECX[0] to be set.
--------------------------
That writing a zero to those same MSRs would clear the feature flag?
Signature · 1 line
Kevin Winchester
Quoted 25 lines · Borislav Petkov
Quoted 24 lines · Kevin Winchester
2009/8/11 Borislav Petkov <[email protected]>:
Quoted 11 lines · Mikael Pettersson
Quoted 3 lines
Since the BIOS apparently wrote some MSR to get
LAHF_LMincorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?That's a good catch, actually. We have to turn off that bit in the cpuid leaf too if the CPU doesn't support the instructions so that cpuid info is consistent. LAHF/SAHF support in 64bit mode has to be cpuid-checked prior to using them so that info has to be correct.
@Kevin: willing to try a patch or two?
Sure, I'll give it a try this evening. I assume that since Erratum 110 says:
--------------------------
Suggested Workaround
For processors which support the feature (as determined by the processor revision ID), BIOS should
write a one to:
• MSRC001_100Dh, bit 32 for revision D silicon.
• MSRC001_1005h, bit 32 for revision E and later silicon. This will cause the extended feature flag in ECX[0] to be set.
--------------------------
Quoted 4 lines
Quoted 1 line
That writing a zero to those same MSRs would clear the feature flag?
Yep :). Patch coming up...
I have been attempting to read those MSRs through the /dev/cpu/0/msr device file, without any success. Is it possible that my CPU will not have those MSRs? And if so, then maybe my original assumption about the BIOS forcing on the LAHF_LM feature is wrong.
In any case, clearing the feature flag (and thus fixing /proc/cpuinfo) is still the right thing to do.
Do you have any other suggestions for how I would affect that CPUID flag?
Signature · 1 line
Kevin Winchester
Quoted 36 lines · Kevin Winchester
Quoted 25 lines · Borislav Petkov
Quoted 24 lines · Kevin Winchester
2009/8/11 Borislav Petkov <[email protected]>:
Quoted 11 lines · Mikael Pettersson
Quoted 3 lines
Since the BIOS apparently wrote some MSR to get
LAHF_LMincorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?That's a good catch, actually. We have to turn off that bit in the cpuid leaf too if the CPU doesn't support the instructions so that cpuid info is consistent. LAHF/SAHF support in 64bit mode has to be cpuid-checked prior to using them so that info has to be correct.
@Kevin: willing to try a patch or two?
Sure, I'll give it a try this evening. I assume that since Erratum 110 says:
--------------------------
Suggested Workaround
For processors which support the feature (as determined by the processor revision ID), BIOS should
write a one to:
• MSRC001_100Dh, bit 32 for revision D silicon.
• MSRC001_1005h, bit 32 for revision E and later silicon. This will cause the extended feature flag in ECX[0] to be set.
--------------------------Quoted 4 lines
Quoted 1 line
That writing a zero to those same MSRs would clear the feature flag?
Yep :). Patch coming up...
I have been attempting to read those MSRs through the
/dev/cpu/0/msrdevice file, without any success. Is it possible that my CPU will not have those MSRs? And if so, then maybe my original assumption about the BIOS forcing on theLAHF_LMfeature is wrong.
Quoted 4 lines
In any case, clearing the feature flag (and thus fixing
/proc/cpuinfo) is still the right thing to do.Do you have any other suggestions for how I would affect that CPUID flag?
Before we do that though I'd like to verify that the BIOS is falsely setting that bit. Can you run this small c program on your machine and send me the result:
#include <stdio.h>
int main()
{
unsigned int ecx = 0;
asm volatile("cpuid"
: "=c" (ecx)
: "a" (0x80000001));
printf("0x8000_0001_ecx = 0x%08x\n", ecx);
return 0;
}Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
Quoted 49 lines · Borislav Petkov
Quoted 34 lines · Kevin Winchester
Quoted 25 lines · Borislav Petkov
Quoted 24 lines · Kevin Winchester
2009/8/11 Borislav Petkov <[email protected]>:
Quoted 11 lines · Mikael Pettersson
Quoted 3 lines
Since the BIOS apparently wrote some MSR to get
LAHF_LMincorrectly reported by CPUID, would it be possible to also correct that MSR so that applications that execute CPUID get the correct feature flags?That's a good catch, actually. We have to turn off that bit in the cpuid leaf too if the CPU doesn't support the instructions so that cpuid info is consistent. LAHF/SAHF support in 64bit mode has to be cpuid-checked prior to using them so that info has to be correct.
@Kevin: willing to try a patch or two?
Sure, I'll give it a try this evening. I assume that since Erratum 110 says:
--------------------------
Suggested Workaround
For processors which support the feature (as determined by the processor revision ID), BIOS should
write a one to:
• MSRC001_100Dh, bit 32 for revision D silicon.
• MSRC001_1005h, bit 32 for revision E and later silicon. This will cause the extended feature flag in ECX[0] to be set.
--------------------------Quoted 3 lines
Quoted 1 line
That writing a zero to those same MSRs would clear the feature flag?
Yep :). Patch coming up...
I have been attempting to read those MSRs through the
/dev/cpu/0/msrdevice file, without any success. Is it possible that my CPU will not have those MSRs? And if so, then maybe my original assumption about the BIOS forcing on theLAHF_LMfeature is wrong.Quoted 4 lines
In any case, clearing the feature flag (and thus fixing
/proc/cpuinfo) is still the right thing to do.Do you have any other suggestions for how I would affect that CPUID flag?
Before we do that though I'd like to verify that the BIOS is falsely setting that bit. Can you run this small c program on your machine and send me the result:
#include <
stdio.h>int
main()
{
Quoted 12 lines
unsigned int ecx = 0;
asm volatile("cpuid"
: "=c" (ecx)
: "a" (0x80000001));
printf("0x8000_0001_ecx = 0x%08x\n", ecx);
return 0;
}$ ./a.out 0x8000_0001_ecx = 0x00000001
So that feature is definitely set. I guess the questions would be:
Did the BIOS set it? If so, how? If not, who did?
Is there anything else I can do to help answer these questions?
Signature · 1 line
Kevin Winchester
Hi Kevin,
Quoted 1 line · Kevin Winchester
So that feature is definitely set.
thanks for testing. As a reply to that follow two patches for you to test. The one is adding some more msr functionality and the second is based on your original one which should in addition turn off the cpuid bit. Please apply, compile, reboot and run the small app again to verify that ECX[0] is now off.
Let me know how it goes.
Thanks.
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
PATCH 2/2 x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
From: Kevin Winchester <[email protected]>
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the LAHF_LM capability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.
Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Borislav: turn off cpuid bit.
--- arch/x86/kernel/cpu/amd.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
arch/x86/kernel/cpu/amd.c +16 -0
@@ -400,6 +400,22 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly force this feature, but only K8 +* revision D (model = 0x14) and later actually support it. +*/ +if (c->x86_model <0x14 ) { +u64 val; + +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Signature · 1 line
1.6.3.3
PATCH 1/2 x86, msr: Add an AMD wrmsr with exception handling
In reply to Borislav PetkovWhile at it, convert native_read_msr_amd_safe to using named inline asm parameters as the rest of the functions.
--- arch/x86/include/asm/msr.h | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-)
arch/x86/include/asm/msr.h +28 -4
@@ -76,14 +76,14 @@ static inline unsigned long long native_read_msr_amd_safe(unsigned int msr, {DECLARE_ARGS (val, low, high); - asm volatile("2: rdmsr ; xor %0,%0\n" + asmvolatile ("2: rdmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" - "3: mov %3,%0 ; jmp 1b\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" ".previous\n\t" _ASM_EXTABLE(2b, 3b) - : "=r" (*err), EAX_EDX_RET(val, low, high) - : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT)); + : [err] "=r" (*err), EAX_EDX_RET(val, low, high) + : "c" (msr), "D" (0x9c5a203a), [fault] "i" (-EFAULT)); returnEAX_EDX_VAL (val, low, high); }
@@ -111,6 +111,25 @@ notrace static inline int native_write_msr_safe(unsigned int msr,return err; } +static inline unsigned long long native_write_msr_amd_safe (unsigned int msr, +unsigned low, +unsigned high) +{ +int err; + asmvolatile ("2: wrmsr ; xor %[err],%[err]\n" +"1:\n\t" +".section .fixup,\"ax\"\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" +".previous\n\t" + _ASM_EXTABLE(2b, 3b) + : [err] "=a" (err) + : "c" (msr), "0" (low), "d" (high), [fault] "i" (-EFAULT), +" D " (0x9c5a203a) + : "memory"); + return err; + +} +extern unsigned long long native_read_tsc (void );static __always_inline unsigned long long __native_read_tsc (void )
@@ -164,6 +183,11 @@ static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)return native_write_msr_safe (msr, low, high); } +static inline int wrmsr_amd_safe (unsigned msr,unsigned low,unsigned high) +{ +return native_write_msr_amd_safe (msr, low, high); +} +/* rdmsr with exception handling */ #define rdmsr_safe (msr, p1, p2) \ ({ \
Signature · 1 line
1.6.3.3
Re: [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
In reply to Borislav PetkovQuoted 23 lines · Borislav Petkov
From: Kevin Winchester <[email protected]>
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Borislav: turn off cpuid bit.
Signed-off-by Kevin Winchester <[email protected]>Signed-off-by Borislav Petkov <[email protected]>---
arch/x86/kernel/cpu/amd.c | 16 ++++++++++++++++1 files changed, 16 insertions(+), 0 deletions(-)arch/x86/kernel/cpu/amd.c +0
-0
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 408
Quoted 9 lines
arch/x86/kernel/cpu/amd.c +6
-0@@ -400,6 +400,22 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level = cpuid_eax(1); if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58) set_cpu_cap(c, X86_FEATURE_REP_GOOD); + + /* + * Some BIOSes incorrectly force this feature, but only K8 + * revision D (model = 0x14) and later actually support it. + */ + if (c->x86_model < 0x14) {
Shouldn't you test that the flag is actually set before trying to clear it?
Quoted 23 lines
arch/x86/kernel/cpu/amd.c +10
-1+ u64 val; + + clear_cpu_cap(c, X86_FEATURE_LAHF_LM); + if (!rdmsrl_amd_safe(0xc001100d, &val)) { + val &= ~(1ULL << 32); + wrmsr_amd_safe(0xc001100d, (u32) val, + (u32)(val >> 32)); + } + } + } if (c->x86 == 0x10 || c->x86 == 0x11) set_cpu_cap(c, X86_FEATURE_REP_GOOD); --1.6.3.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
2009/8/13 Brian Gerst <[email protected]>:
Quoted 19 lines · Borislav Petkov
Quoted 18 lines
From: Kevin Winchester <[email protected]>
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Borislav: turn off cpuid bit.
Signed-off-by Kevin Winchester <[email protected]>Signed-off-by Borislav Petkov <[email protected]>---
arch/x86/kernel/cpu/amd.c | 16 ++++++++++++++++1 files changed, 16 insertions(+), 0 deletions(-)
Quoted 17 lines
Quoted 5 lines
arch/x86/kernel/cpu/amd.c +0
-0arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 408
Quoted 9 lines
arch/x86/kernel/cpu/amd.c +6
-0@@ -400,6 +400,22 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level = cpuid_eax(1); if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58) set_cpu_cap(c, X86_FEATURE_REP_GOOD); + + /* + * Some BIOSes incorrectly force this feature, but only K8 + * revision D (model = 0x14) and later actually support it. + */ + if (c->x86_model < 0x14) {Shouldn't you test that the flag is actually set before trying to clear it?
Possibly. If there were some concern that:
- The extra instructions would cause a performance impact, and the test was significantly faster than the clear.
- The extra instructions might actually cause more problems if the flag is not set.
Then we would certainly want to test it first. In my opinion, a few simple instructions to clear the flag and the CPUID bit will not affect performance, and clearing a flag that is already cleared should not cause any additional problems, so I would not bother testing the flag first. That results in fewer lines of code to change.
Signature · 1 line
Kevin Winchester
2009/8/13 Borislav Petkov <[email protected]>:
Quoted 5 lines
Hi Kevin,
Quoted 1 line · Kevin Winchester
So that feature is definitely set.
Quoted 8 lines
thanks for testing. As a reply to that follow two patches for you to test. The one is adding some more msr functionality and the second is based on your original one which should in addition turn off the cpuid bit. Please apply, compile, reboot and run the small app again to verify that ECX[0] is now off.
Let me know how it goes.
Looking at your patch, I now see why my attempt to read/write the MSRs failed - magic. :)
I will try these patches this evening when I get back to my computer and let you know, but they look good to me.
Thanks for all the help,
Signature · 1 line
Kevin Winchester
Re: [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
In reply to Brian GerstQuoted 7 lines · Brian Gerst
Quoted 5 lines
+ /*
+ * Some BIOSes incorrectly force this feature, but only K8
+ * revision D (model =0x14) and later actually support it.
+ */
+ if (c->x86_model<0x14) {Shouldn't you test that the flag is actually set before trying to clear it?
Yep, I'll do that in the final version of the patches.
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
Re: [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
In reply to Kevin WinchesterQuoted 38 lines · Kevin Winchester
2009/8/13 Brian Gerst <[email protected]>:
Quoted 19 lines · Borislav Petkov
Quoted 18 lines
From: Kevin Winchester <[email protected]>
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Borislav: turn off cpuid bit.
Signed-off-by Kevin Winchester <[email protected]>Signed-off-by Borislav Petkov <[email protected]>---
arch/x86/kernel/cpu/amd.c | 16 ++++++++++++++++1 files changed, 16 insertions(+), 0 deletions(-)Quoted 17 lines
Quoted 5 lines
arch/x86/kernel/cpu/amd.c +0
-0arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 408
Quoted 9 lines
arch/x86/kernel/cpu/amd.c +6
-0@@ -400,6 +400,22 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level = cpuid_eax(1); if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58) set_cpu_cap(c, X86_FEATURE_REP_GOOD); + + /* + * Some BIOSes incorrectly force this feature, but only K8 + * revision D (model = 0x14) and later actually support it. + */ + if (c->x86_model < 0x14) {Shouldn't you test that the flag is actually set before trying to clear it?
Quoted 4 lines
Possibly. If there were some concern that:
- The extra instructions would cause a performance impact, and the test was significantly faster than the clear.
Testing a bit is cheap and MSR accesses are not.
Quoted 2 lines
- The extra instructions might actually cause more problems if the flag is not set.
These MSRs don't exist on older cpus and will cause a fault, which is handled at additional cost.
Quoted 5 lines
Then we would certainly want to test it first. In my opinion, a few simple instructions to clear the flag and the CPUID bit will not affect performance, and clearing a flag that is already cleared should not cause any additional problems, so I would not bother testing the flag first. That results in fewer lines of code to change.
--
Brian Gerst
Re: [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
On Thu, Aug 13, 2009 at 11:55:32AM -0400, Brian Gerst wrote:
[..]
Quoted 6 lines
Quoted 4 lines
Possibly. If there were some concern that:
- The extra instructions would cause a performance impact, and the test was significantly faster than the clear.
Testing a bit is cheap and MSR accesses are not.
true.
Quoted 5 lines
Quoted 2 lines
- The extra instructions might actually cause more problems if the flag is not set.
These MSRs don't exist on older cpus and will cause a fault, which is handled at additional cost.
No, we're ok here since this code is exec'ed on K8s only. The _safe variants are an additional precaution only.
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
Re: [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag
In reply to Brian GerstQuoted 43 lines · Brian Gerst
Quoted 36 lines · Kevin Winchester
2009/8/13 Brian Gerst <[email protected]>:
Quoted 19 lines · Borislav Petkov
Quoted 18 lines
From: Kevin Winchester <[email protected]>
Due to an erratum with certain AMD Athlon 64 processors, the BIOS may need to force enable the
LAHF_LMcapability. Unfortunately, in at least one case, the BIOS does this even for processors that do not support the functionality.Add a specific check that will clear the feature bit for processors known not to support the LAHF/SAHF instructions.
Borislav: turn off cpuid bit.
Signed-off-by Kevin Winchester <[email protected]>Signed-off-by Borislav Petkov <[email protected]>--- arch/x86/kernel/cpu/amd.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)Quoted 16 lines
Quoted 5 lines
arch/x86/kernel/cpu/amd.c +0
-0arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 408
Quoted 9 lines
arch/x86/kernel/cpu/amd.c +6
-0@@ -400,6 +400,22 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) level =cpuid_eax (1 );if ((level >=0x0f48 && level <0x0f50 ) || level >=0x0f58 )set_cpu_cap (c,X86_FEATURE_REP_GOOD ); + +/* +* Some BIOSes incorrectly force this feature, but only K8 +* revision D (model = 0x14) and later actually support it. +*/ +if (c->x86_model <0x14 ) {Shouldn't you test that the flag is actually set before trying to clear it?
Quoted 4 lines
Possibly. If there were some concern that:
- The extra instructions would cause a performance impact, and the test was significantly faster than the clear.
Quoted 8 lines
Testing a bit is cheap and MSR accesses are not.
Quoted 2 lines
- The extra instructions might actually cause more problems if the flag is not set.
These MSRs don't exist on older cpus and will cause a fault, which is handled at additional cost.
I stand corrected. I was unaware of this, so I guess testing the flag first would be a good idea.
Thanks,
Signature · 1 line
Kevin Winchester
Quoted 5 lines · Borislav Petkov
Hi Kevin,
Quoted 1 line · Kevin Winchester
So that feature is definitely set.
Quoted 8 lines
thanks for testing. As a reply to that follow two patches for you to test. The one is adding some more msr functionality and the second is based on your original one which should in addition turn off the cpuid bit. Please apply, compile, reboot and run the small app again to verify that ECX[0] is now off.
Let me know how it goes.
Yes, those patches seem to fix everything:
$ ./a.out 0x8000_0001_ecx = 0x00000000
I just noticed that my original patch has been pulled into Linus' tree, so you will likely want to rebase your patches on top of that.
Thank you again,
Signature · 1 line
Kevin Winchester
Hi Kevin,
Quoted 1 line · Kevin Winchester
Yes, those patches seem to fix everything:
Thanks for testing and helping along the way.
@Ingo: I'm sending the final patches as a reply to that mail. Considering that the issue can be observed only on revA-C K8s _with_ broken BIOSes I can't say that it is that urgent. In that case we can conveniently wait for the merge window for a wider exposure and testing; I'm happy with whatever you decide.
Thanks.
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
PATCH 2/2 x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
fbd8b1819e80ac5a176d085fdddc3a34d1499318 turns off the bit for /proc/cpuinfo. However, a proper fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info. Do that by basically reversing what the BIOS wrongfully does at boot.
--- arch/x86/kernel/cpu/amd.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-)
arch/x86/kernel/cpu/amd.c +11 -1
@@ -404,9 +404,19 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Signature · 1 line
1.6.3.3
PATCH 1/2 x86, msr: Add a AMD wrmsr with exception handling
In reply to Borislav PetkovWhile at it, convert native_read_msr_amd_safe to using named inline asm parameters as the rest of the functions.
--- arch/x86/include/asm/msr.h | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-)
arch/x86/include/asm/msr.h +28 -4
@@ -76,14 +76,14 @@ static inline unsigned long long native_read_msr_amd_safe(unsigned int msr, {DECLARE_ARGS (val, low, high); - asm volatile("2: rdmsr ; xor %0,%0\n" + asmvolatile ("2: rdmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" - "3: mov %3,%0 ; jmp 1b\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" ".previous\n\t" _ASM_EXTABLE(2b, 3b) - : "=r" (*err), EAX_EDX_RET(val, low, high) - : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT)); + : [err] "=r" (*err), EAX_EDX_RET(val, low, high) + : "c" (msr), "D" (0x9c5a203a), [fault] "i" (-EFAULT)); returnEAX_EDX_VAL (val, low, high); }
@@ -111,6 +111,25 @@ notrace static inline int native_write_msr_safe(unsigned int msr,return err; } +static inline unsigned long long native_write_msr_amd_safe (unsigned int msr, +unsigned low, +unsigned high) +{ +int err; + asmvolatile ("2: wrmsr ; xor %[err],%[err]\n" +"1:\n\t" +".section .fixup,\"ax\"\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" +".previous\n\t" + _ASM_EXTABLE(2b, 3b) + : [err] "=a" (err) + : "c" (msr), "0" (low), "d" (high), [fault] "i" (-EFAULT), +" D " (0x9c5a203a) + : "memory"); + return err; + +} +extern unsigned long long native_read_tsc (void );static __always_inline unsigned long long __native_read_tsc (void )
@@ -164,6 +183,11 @@ static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)return native_write_msr_safe (msr, low, high); } +static inline int wrmsr_amd_safe (unsigned msr,unsigned low,unsigned high) +{ +return native_write_msr_amd_safe (msr, low, high); +} +/* rdmsr with exception handling */ #define rdmsr_safe (msr, p1, p2) \ ({ \
Signature · 1 line
1.6.3.3
[tip:x86/urgent] x86, msr: Add a AMD wrmsr with exception handling
Commit-ID: 0ae84a7d38ee64a21290797e51cd0cc38e3da586 Gitweb: http://git.kernel.org/tip/0ae84a7d38ee64a21290797e51cd0cc38e3da586 Author: Borislav Petkov <[email protected]> AuthorDate: Fri, 14 Aug 2009 14:06:33 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Sat, 15 Aug 2009 18:43:58 +0200
x86, msr: Add a AMD wrmsr with exception handling
Add native_write_msr_amd_safe() - we need this for a workaround.
( While at it, convert native_read_msr_amd_safe to using
more robust named inline asm parameters as the rest of the functions. )
LKML-Reference: <[email protected]>
--- arch/x86/include/asm/msr.h | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-)
arch/x86/include/asm/msr.h +28 -4
@@ -76,14 +76,14 @@ static inline unsigned long long native_read_msr_amd_safe(unsigned int msr, {DECLARE_ARGS (val, low, high); - asm volatile("2: rdmsr ; xor %0,%0\n" + asmvolatile ("2: rdmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" - "3: mov %3,%0 ; jmp 1b\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" ".previous\n\t" _ASM_EXTABLE(2b, 3b) - : "=r" (*err), EAX_EDX_RET(val, low, high) - : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT)); + : [err] "=r" (*err), EAX_EDX_RET(val, low, high) + : "c" (msr), "D" (0x9c5a203a), [fault] "i" (-EFAULT)); returnEAX_EDX_VAL (val, low, high); }
@@ -111,6 +111,25 @@ notrace static inline int native_write_msr_safe(unsigned int msr,return err; } +static inline unsigned long long native_write_msr_amd_safe (unsigned int msr, +unsigned low, +unsigned high) +{ +int err; + asmvolatile ("2: wrmsr ; xor %[err],%[err]\n" +"1:\n\t" +".section .fixup,\"ax\"\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" +".previous\n\t" + _ASM_EXTABLE(2b, 3b) + : [err] "=a" (err) + : "c" (msr), "0" (low), "d" (high), [fault] "i" (-EFAULT), +" D " (0x9c5a203a) + : "memory"); + return err; + +} +extern unsigned long long native_read_tsc (void );static __always_inline unsigned long long __native_read_tsc (void )
@@ -164,6 +183,11 @@ static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)return native_write_msr_safe (msr, low, high); } +static inline int wrmsr_amd_safe (unsigned msr,unsigned low,unsigned high) +{ +return native_write_msr_amd_safe (msr, low, high); +} +/* rdmsr with exception handling */ #define rdmsr_safe (msr, p1, p2) \ ({ \
[tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Borislav PetkovCommit-ID: c74cb13b94118ec89e48849806356b67caa5ff86 Gitweb: http://git.kernel.org/tip/c74cb13b94118ec89e48849806356b67caa5ff86 Author: Borislav Petkov <[email protected]> AuthorDate: Fri, 14 Aug 2009 14:06:34 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Sat, 15 Aug 2009 18:43:59 +0200
x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
fbd8b1819e80ac5a176d085fdddc3a34d1499318 turns off the bit for /proc/cpuinfo. However, a proper/full fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info.
Do that by basically reversing what the BIOS wrongfully does at boot.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/cpu/amd.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-)
arch/x86/kernel/cpu/amd.c +11 -1
@@ -404,9 +404,19 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 44 lines · tip-bot for Borislav Petkov
Commit-ID: c74cb13b94118ec89e48849806356b67caa5ff86 Gitweb: http://git.kernel.org/tip/c74cb13b94118ec89e48849806356b67caa5ff86 Author: Borislav Petkov <[email protected]> AuthorDate: Fri, 14 Aug 2009 14:06:34 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Sat, 15 Aug 2009 18:43:59 +0200x86, AMD: Disable wrongly set
X86_FEATURE_LAHF_LMCPUID bit
fbd8b1819e80ac5a176d085fdddc3a34d1499318turns off the bit for/proc/cpuinfo. However, a proper/full fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info.Do that by basically reversing what the BIOS wrongfully does at boot.
Tested-by Kevin Winchester <[email protected]>Signed-off-by Borislav Petkov <[email protected]>LKML-Reference: <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>--- arch/x86/kernel/cpu/amd.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-)arch/x86/kernel/cpu/amd.c +4
-1@@ -404,9 +404,19 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM );
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 422
Quoted 10 lines
arch/x86/kernel/cpu/amd.c +7
-0+if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
-tip testing found this build bug caused by this patch:
arch/x86/kernel/cpu/amd.c: In function ‘init_amd’:arch/x86/kernel/cpu/amd.c:417: error: implicit declaration of function ‘wrmsr_amd_safe’
Ingo
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 59 lines · Ingo Molnar
Quoted 44 lines · tip-bot for Borislav Petkov
Commit-ID: c74cb13b94118ec89e48849806356b67caa5ff86 Gitweb: http://git.kernel.org/tip/c74cb13b94118ec89e48849806356b67caa5ff86 Author: Borislav Petkov <[email protected]> AuthorDate: Fri, 14 Aug 2009 14:06:34 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Sat, 15 Aug 2009 18:43:59 +0200x86, AMD: Disable wrongly set
X86_FEATURE_LAHF_LMCPUID bit
fbd8b1819e80ac5a176d085fdddc3a34d1499318turns off the bit for/proc/cpuinfo. However, a proper/full fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info.Do that by basically reversing what the BIOS wrongfully does at boot.
Tested-by Kevin Winchester <[email protected]>Signed-off-by Borislav Petkov <[email protected]>LKML-Reference: <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>--- arch/x86/kernel/cpu/amd.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-)arch/x86/kernel/cpu/amd.c +4
-1@@ -404,9 +404,19 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM );arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 422
Quoted 10 lines
arch/x86/kernel/cpu/amd.c +7
-0+if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );-tip testing found this build bug caused by this patch:
Quoted 3 lines
arch/x86/kernel/cpu/amd.c: In function ‘init_amd’:arch/x86/kernel/cpu/amd.c:417: error: implicit declaration of function ‘wrmsr_amd_safe’
I didn't see a notification that patch 1/2:
x86, msr: Add a AMD wrmsr with exception handling
got applied before this patch. That could be the cause of this failure.
Signature · 1 line
Kevin Winchester
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 64 lines · Kevin Winchester
Quoted 59 lines · Ingo Molnar
Quoted 44 lines · tip-bot for Borislav Petkov
Commit-ID: c74cb13b94118ec89e48849806356b67caa5ff86 Gitweb: http://git.kernel.org/tip/c74cb13b94118ec89e48849806356b67caa5ff86 Author: Borislav Petkov <[email protected]> AuthorDate: Fri, 14 Aug 2009 14:06:34 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Sat, 15 Aug 2009 18:43:59 +0200x86, AMD: Disable wrongly set
X86_FEATURE_LAHF_LMCPUID bit
fbd8b1819e80ac5a176d085fdddc3a34d1499318turns off the bit for/proc/cpuinfo. However, a proper/full fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info.Do that by basically reversing what the BIOS wrongfully does at boot.
Tested-by Kevin Winchester <[email protected]>Signed-off-by Borislav Petkov <[email protected]>LKML-Reference: <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>--- arch/x86/kernel/cpu/amd.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-)arch/x86/kernel/cpu/amd.c +4
-1@@ -404,9 +404,19 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM );arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 422
Quoted 10 lines
arch/x86/kernel/cpu/amd.c +7
-0+if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );-tip testing found this build bug caused by this patch:
Quoted 3 lines
arch/x86/kernel/cpu/amd.c: In function ‘init_amd’:arch/x86/kernel/cpu/amd.c:417: error: implicit declaration of function ‘wrmsr_amd_safe’
Quoted 5 lines
I didn't see a notification that patch 1/2:
x86, msr: Add a AMD wrmsr with exception handling
got applied before this patch. That could be the cause of this failure.
it got applied in the correct order:
c74cb13: x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit 0ae84a7: x86, msr: Add a AMD wrmsr with exception handling 3ef12c3: x86: Fix UV BAU destination subnode id
64f1607: Linux 2.6.31-rc6
Ingo
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Ingo MolnarQuoted 4 lines · Ingo Molnar
-tip testing found this build bug caused by this patch:
arch/x86/kernel/cpu/amd.c: In function ‘init_amd’:arch/x86/kernel/cpu/amd.c:417: error: implicit declaration of function ‘wrmsr_amd_safe’
Oops, forgot paravirt. Here's a fixed version:
--
From: Borislav Petkov <[email protected]>
Date: Sat, 15 Aug 2009 17:06:39 +0000
Subject: [PATCH 1/2] x86, msr: Add a AMD wrmsr with exception handling
Add native_write_msr_amd_safe() - we need this for a workaround.
( While at it, convert native_read_msr_amd_safe to using
more robust named inline asm parameters as the rest of the functions. )
--- arch/x86/include/asm/msr.h | 32 ++++++++++++++++++++++++++++---- arch/x86/include/asm/paravirt.h | 11 +++++++++-- arch/x86/kernel/paravirt.c | 1 + 3 files changed, 38 insertions(+), 6 deletions(-)
arch/x86/include/asm/msr.h +28 -4
@@ -76,14 +76,14 @@ static inline unsigned long long native_read_msr_amd_safe(unsigned int msr, {DECLARE_ARGS (val, low, high); - asm volatile("2: rdmsr ; xor %0,%0\n" + asmvolatile ("2: rdmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" - "3: mov %3,%0 ; jmp 1b\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" ".previous\n\t" _ASM_EXTABLE(2b, 3b) - : "=r" (*err), EAX_EDX_RET(val, low, high) - : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT)); + : [err] "=r" (*err), EAX_EDX_RET(val, low, high) + : "c" (msr), "D" (0x9c5a203a), [fault] "i" (-EFAULT)); returnEAX_EDX_VAL (val, low, high); }
@@ -111,6 +111,25 @@ notrace static inline int native_write_msr_safe(unsigned int msr,return err; } +static inline unsigned long long native_write_msr_amd_safe (unsigned int msr, +unsigned low, +unsigned high) +{ +int err; + asmvolatile ("2: wrmsr ; xor %[err],%[err]\n" +"1:\n\t" +".section .fixup,\"ax\"\n\t" +"3: mov %[fault],%[err] ; jmp 1b\n\t" +".previous\n\t" + _ASM_EXTABLE(2b, 3b) + : [err] "=a" (err) + : "c" (msr), "0" (low), "d" (high), [fault] "i" (-EFAULT), +" D " (0x9c5a203a) + : "memory"); + return err; + +} +extern unsigned long long native_read_tsc (void );static __always_inline unsigned long long __native_read_tsc (void )
@@ -164,6 +183,11 @@ static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)return native_write_msr_safe (msr, low, high); } +static inline int wrmsr_amd_safe (unsigned msr,unsigned low,unsigned high) +{ +return native_write_msr_amd_safe (msr, low, high); +} +/* rdmsr with exception handling */ #define rdmsr_safe (msr, p1, p2) \ ({ \
arch/x86/include/asm/paravirt.h +9 -2
@@ -169,6 +169,7 @@ struct pv_cpu_ops {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); +u64 (*write_msr_amd)(unsigned int msr,unsigned low,unsigned high);u64 (*read_tsc)(void);u64 (*read_pmc)(int counter);
@@ -829,6 +830,11 @@ static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)return PVOP_CALL3 (int, pv_cpu_ops.write_msr, msr, low, high); } +static inline int paravirt_write_msr_amd (unsigned msr,unsigned low,unsigned high) +{ +return PVOP_CALL3 (u64, pv_cpu_ops.write_msr_amd, msr, low, high); +} +/* These should all do BUG_ON(_err), but our headers are too tangled. */ #define rdmsr (msr, val1, val2) \ do { \
@@ -849,8 +855,9 @@ do { \ val =paravirt_read_msr (msr, &_err); \ } while (0) -#define wrmsrl (msr, val) wrmsr(msr, (u32)((u64)(val)), ((u64)(val))>>32) -#define wrmsr_safe (msr, a, b) paravirt_write_msr(msr, a, b) +#define wrmsrl (msr, val) wrmsr(msr, (u32)((u64)(val)), ((u64)(val))>>32) +#define wrmsr_safe (msr, a, b) paravirt_write_msr(msr, a, b) +#define wrmsr_amd_safe (msr, a, b) paravirt_write_msr_amd(msr, a, b)/* rdmsr with exception handling */ #define rdmsr_safe (msr, a, b) \
arch/x86/kernel/paravirt.c +1 -0
@@ -364,6 +364,7 @@ struct pv_cpu_ops pv_cpu_ops = { .read_msr = native_read_msr_safe, .read_msr_amd = native_read_msr_amd_safe, .write_msr = native_write_msr_safe, + .write_msr_amd = native_write_msr_amd_safe, .read_tsc = native_read_tsc, .read_pmc = native_read_pmc, .read_tscp = native_read_tscp,
Signature · 6 lines
1.6.3.3
--
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 8 lines · Borislav Petkov
Quoted 4 lines · Ingo Molnar
-tip testing found this build bug caused by this patch:
arch/x86/kernel/cpu/amd.c: In function ‘init_amd’:arch/x86/kernel/cpu/amd.c:417: error: implicit declaration of function ‘wrmsr_amd_safe’Oops, forgot paravirt. Here's a fixed version:
One thing that really bothers me about these is that they're horribly non-generic. It wouldn't be so bad -- if we need something more generic we can create them -- if it wasn't for that perennial horror called paravirt_crap, which of course just ends up incorporating whatever internal interfaces we have.
If we're going to modify the paravirt_crap for yet another MSR operation, then let's at least make it something like "write_msr_edi" and have it take a parameter for the EDI value. Perhaps we should let it set EBX and ESI as well (and the same for the read operation, even though it already exists.)
-hpa
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 5 lines · H. Peter Anvin
If we're going to modify the
paravirt_crapfor yet another MSR operation, then let's at least make it something like "write_msr_edi" and have it take a parameter for the EDI value. Perhaps we should let it set EBX and ESI as well (and the same for the read operation, even though it already exists.)
Ok, how about making all rdmsr* variants indirectly call into a native_read_msr_safe_reg() helper which takes esi and edi as additional arguments. There was no room for ebx since paravirt has a PVOP_CALL4 macro which takes the largest number of args - 4 and I am lazy, of course, to implement a PVOP_CALL5 thing :o)
The wrmsr variants could be done similarly.
Suggestions, comments?
--
arch/x86/include/asm/msr.h +10 -16
@@ -55,8 +55,10 @@ static inline unsigned long long native_read_msr(unsigned int msr)return EAX_EDX_VAL (val, low, high); } -static inline unsigned long long native_read_msr_safe (unsigned int msr, -int *err) +static inline unsigned long long native_read_msr_safe_reg (unsigned int msr, +int *err, +unsigned int edi, +unsigned int esi) {DECLARE_ARGS (val, low, high);
@@ -67,24 +69,15 @@ static inline unsigned long long native_read_msr_safe(unsigned int msr,".previous\n\t" _ASM_EXTABLE(2b ,3b ) : [err] "=r" (*err), EAX_EDX_RET(val, low, high) - : "c" (msr), [fault] "i" (-EFAULT)); + : "c" (msr), [fault] "i" (-EFAULT), "D" (edi), "S" (esi)); + returnEAX_EDX_VAL (val, low, high); } -static inline unsigned long long native_read_msr_amd_safe (unsigned int msr, +static inline unsigned long long native_read_msr_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(2b, 3b) - : "=r" (*err), EAX_EDX_RET(val, low, high) - : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT)); -return EAX_EDX_VAL (val, low, high); +return native_read_msr_safe_reg (msr, err,0 ,0 ); } static inline void native_write_msr(unsigned int msr,
@@ -181,11 +174,12 @@ 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); + *p =native_read_msr_safe_reg (msr, &err,0x9c5a203a ,0 );return err; }
arch/x86/include/asm/paravirt.h +6 -4
@@ -166,8 +166,9 @@ 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); +u64 (*read_msr_reg)(unsigned int msr,int *err,unsigned edi, +unsigned esi);int (*write_msr)(unsigned int msr,unsigned low,unsigned high);u64 (*read_tsc)(void);
@@ -820,9 +821,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) +static inline u64 paravirt_read_msr_reg (unsigned msr,int *err,unsigned edi, +unsigned esi) { -return PVOP_CALL2 (u64, pv_cpu_ops.read_msr_amd, msr, err); +return PVOP_CALL4 (u64, pv_cpu_ops.read_msr_reg, msr, err, edi, esi); }static inline int paravirt_write_msr (unsigned msr,unsigned low,unsigned high) {
@@ -873,7 +875,7 @@ static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p) {int err; - *p =paravirt_read_msr_amd (msr, &err); + *p =paravirt_read_msr_reg (msr, &err,0x9c5a203a ,0 );return err; }
arch/x86/kernel/paravirt.c +1 -1
@@ -362,7 +362,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, + .read_msr_reg = native_read_msr_safe_reg, .write_msr = native_write_msr_safe, .read_tsc = native_read_tsc, .read_pmc = native_read_pmc,
Signature · 2 lines
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 13 lines · Borislav Petkov
Quoted 5 lines · H. Peter Anvin
If we're going to modify the
paravirt_crapfor yet another MSR operation, then let's at least make it something like "write_msr_edi" and have it take a parameter for the EDI value. Perhaps we should let it set EBX and ESI as well (and the same for the read operation, even though it already exists.)Ok, how about making all rdmsr* variants indirectly call into a
native_read_msr_safe_reg()helper which takes esi and edi as additional arguments. There was no room for ebx since paravirt has aPVOP_CALL4macro which takes the largest number of args - 4 and I am lazy, of course, to implement aPVOP_CALL5thing :o)
Quoted 4 lines
The wrmsr variants could be done similarly.
Suggestions, comments?
Looks reasonable... although part of me wonders if having a pointer to an array containing the entire register file in and out is even better, of if I'm just overengineering at this point.
Note that the only difference between "rdmsr" and "wrmsr" is the actual opcode being executed at this point...
/*
* int native_rdmsr_safe_regs(u32 gprs[8]);
*
* 32-bit implementation
*
*/ENTRY(native_rdmsr_safe_regs)
push %ebx push %ebp push %esi push %edi push $0 /* Return value */ push %eax movl 4(%eax), %ecx movl 8(%eax), %edx movl 12(%eax), %ebx movl 20(%eax), %ebp movl 24(%eax), %esi movl 28(%eax), %edi movl (%eax), %eax 1: rdmsr 2: push %eax movl 4(%esp), %eax pop (%eax) addl $4, %esp movl %ecx, 4(%eax) movl %edx, 8(%eax) movl %ebx, 12(%eax) movl %ebp, 20(%eax) movl %esi, 24(%eax) movl %edi, 28(%eax) pop %eax pop %edi pop %esi pop %ebp pop %ebx ret 3: movl $-EIO, 4(%esp) jmp 2b __ASM_EX_SEC .balign 4 .long 1b, 3b .previous
EXIT(native_rdmsr_safe_regs)
/*
* int native_rdmsr_safe_regs(u32 gprs[8]);
*
* 64-bit implementation
*
*/ENTRY(native_rdmsr_safe_regs)
push %rbx push %rbp push $0 /* Return value */ push %rdi movl (%rdi), %eax movl 4(%rdi), %ecx movl 8(%rdi), %edx movl 12(%rdi), %ebx movl 20(%rdi), %ebp movl 24(%rdi), %esi movl 28(%rdi), %edi 1: rdmsr 2: movl %edi, %r10 pop %rdi movl %eax, (%rdi) movl %ecx, 4(%rdi) movl %edx, 8(%rdi) movl %ebx, 12(%rdi) movl %ebp, 20(%rdi) movl %esi, 24(%rdi) movl %r10d, 28(%rdi) pop %rax pop %rbp pop %rbx ret 3: movq $-EIO, 8(%esp) jmp 2b __ASM_EX_SEC .balign 4 .long 1b, 3b .previous
EXIT(native_rdmsr_safe_regs)
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 3 lines · H. Peter Anvin
Looks reasonable... although part of me wonders if having a pointer to an array containing the entire register file in and out is even better, of if I'm just overengineering at this point.
Hmm, let's have necessity determine that. I can only think of %edi being used as an input reg to rd/wrmsr beside %ecx but it could be very well that some other x86 hardware uses other regs too. Do we actually need all regs or a two should suffice?
Quoted 2 lines
Note that the only difference between "rdmsr" and "wrmsr" is the actual opcode being executed at this point...
... which means even less code with macro magic.
Signature · 2 lines
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 10 lines · Borislav Petkov
Quoted 3 lines · H. Peter Anvin
Looks reasonable... although part of me wonders if having a pointer to an array containing the entire register file in and out is even better, of if I'm just overengineering at this point.
Hmm, let's have necessity determine that. I can only think of %edi being used as an input reg to rd/wrmsr beside %ecx but it could be very well that some other x86 hardware uses other regs too. Do we actually need all regs or a two should suffice?
Hard to know. In theory we shouldn't need ESI and EDI either!
As I said, I wouldn't have worried about it at all if it wasn't for paravirt_ops turning these things into ABIs.
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 12 lines · H. Peter Anvin
Quoted 10 lines · Borislav Petkov
Quoted 3 lines · H. Peter Anvin
Looks reasonable... although part of me wonders if having a pointer to an array containing the entire register file in and out is even better, of if I'm just overengineering at this point.
Hmm, let's have necessity determine that. I can only think of %edi being used as an input reg to rd/wrmsr beside %ecx but it could be very well that some other x86 hardware uses other regs too. Do we actually need all regs or a two should suffice?
Quoted 4 lines
Hard to know. In theory we shouldn't need ESI and EDI either!
As I said, I wouldn't have worried about it at all if it wasn't for
paravirt_opsturning these things into ABIs.
Ok, here's what I could come up with. It seems to work (tested only on a Fam10h box), it should cover all our msr needs for now and alleviate the need for adding yet another paravirt_ops member.
Signature · 2 lines
Regards/Gruss,
Boris.PATCH 3/3 x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Borislav PetkovFrom: Borislav Petkov <[email protected]>
fbd8b1819e80ac5a176d085fdddc3a34d1499318 turns off the bit for /proc/cpuinfo. However, a proper/full fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info.
Do that by basically reversing what the BIOS wrongfully does at boot.
--- arch/x86/kernel/cpu/amd.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-)
arch/x86/kernel/cpu/amd.c +11 -1
@@ -404,9 +404,19 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Signature · 1 line
1.6.3.3
PATCH 1/3 x86, msr: add rd/wrmsr interfaces with preset registers
In reply to Borislav Petkovnative_{rdmsr,wrmsr}_safe_regs are two new interfaces which allow presetting of a subset of eight x86 GPRs before executing the rd/wrmsr instructions. This is needed at least on AMD K8 for accessing an erratum workaround MSR.
Originally based on an idea by H. Peter Anvin.
--- arch/x86/include/asm/msr.h | 13 +++++ arch/x86/include/asm/paravirt.h | 16 ++++++ arch/x86/kernel/paravirt.c | 2 + arch/x86/lib/Makefile | 1 + arch/x86/lib/msr-reg.S | 100 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 132 insertions(+), 0 deletions(-) create mode 100644 arch/x86/lib/msr-reg.S
arch/x86/include/asm/msr.h +13 -0
@@ -113,6 +113,9 @@ notrace static inline int native_write_msr_safe(unsigned int msr,extern unsigned long long native_read_tsc (void ); +extern int native_rdmsr_safe_regs (u32 *regs); +extern int native_wrmsr_safe_regs (u32 *regs); +static __always_inline unsigned long long __native_read_tsc (void ) {DECLARE_ARGS (val, low, high);
@@ -189,6 +192,16 @@ static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)return err; } +static inline int rdmsr_safe_regs (u32 *regs) +{ +return native_rdmsr_safe_regs (regs); +} + +static inline int wrmsr_safe_regs (u32 *regs) +{ +return native_wrmsr_safe_regs (regs); +} +#define rdtscl (low) \ ((low) = (u32)__native_read_tsc())
arch/x86/include/asm/paravirt.h +16 -0
@@ -168,7 +168,9 @@ struct pv_cpu_ops {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 (*rdmsr_regs)(u32 *regs);int (*write_msr)(unsigned int msr,unsigned low,unsigned high); +int (*wrmsr_regs)(u32 *regs);u64 (*read_tsc)(void);u64 (*read_pmc)(int counter);
@@ -820,6 +822,12 @@ static inline u64 paravirt_read_msr(unsigned msr, int *err) {return PVOP_CALL2 (u64, pv_cpu_ops.read_msr, msr, err); } + +static inline int paravirt_rdmsr_regs (u32 *regs) +{ +return PVOP_CALL1 (int, pv_cpu_ops.rdmsr_regs, regs); +} +static inline u64 paravirt_read_msr_amd (unsigned msr,int *err) {return PVOP_CALL2 (u64, pv_cpu_ops.read_msr_amd, msr, err);
@@ -829,6 +837,11 @@ static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)return PVOP_CALL3 (int, pv_cpu_ops.write_msr, msr, low, high); } +static inline int paravirt_wrmsr_regs (u32 *regs) +{ +return PVOP_CALL1 (int, pv_cpu_ops.wrmsr_regs, regs); +} +/* These should all do BUG_ON(_err), but our headers are too tangled. */ #define rdmsr (msr, val1, val2) \ do { \
@@ -862,6 +875,9 @@ do { \ _err; \ }) +#define rdmsr_safe_regs (regs) paravirt_rdmsr_regs(regs) +#define wrmsr_safe_regs (regs) paravirt_wrmsr_regs(regs) +static inline int rdmsrl_safe (unsigned msr,unsigned long long *p) {int err;
arch/x86/kernel/paravirt.c +2 -0
@@ -362,8 +362,10 @@ struct pv_cpu_ops pv_cpu_ops = {#endif .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, + .rdmsr_regs = native_rdmsr_safe_regs, .read_msr_amd = native_read_msr_amd_safe, .write_msr = native_write_msr_safe, + .wrmsr_regs = native_wrmsr_safe_regs, .read_tsc = native_read_tsc, .read_pmc = native_read_pmc, .read_tscp = native_read_tscp,
arch/x86/lib/Makefile +1 -0
@@ -8,6 +8,7 @@ lib-y := delay.o lib-y += thunk_$(BITS).o lib-y += usercopy_$(BITS).o getuser.o putuser.o lib-y += memcpy_$(BITS).o +lib-y += msr-reg.o ifeq ($(CONFIG_X86_32),y) obj-y += atomic64_32.o
arch/x86/lib/msr-reg.S new file +100 -0
100 lines not on this page · raw message
Signature · 1 line
1.6.3.3
PATCH 2/3 x86, msr: rewrite AMD rd/wrmsr variants
Switch them to native_{rd,wr}msr_safe_regs and remove pv_cpu_ops.read_msr_amd.
--- arch/x86/include/asm/msr.h | 45 +++++++++++++++++++++++--------------- arch/x86/include/asm/paravirt.h | 30 ++++++++++++++++++++----- arch/x86/kernel/paravirt.c | 1 - 3 files changed, 51 insertions(+), 25 deletions(-)
arch/x86/include/asm/msr.h +27 -18
@@ -71,22 +71,6 @@ 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(2b, 3b) - : "=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) {
@@ -184,14 +168,39 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) *p =native_read_msr_safe (msr, &err);return err; } + +#define memset (d,c,l) __builtin_memset(d,c,l)static inline int rdmsrl_amd_safe (unsigned msr,unsigned long long *p) { -int err; +u32 gprs[8 ]; +int err, i; + +memset (gprs,0 ,sizeof (u32) *8 ); + + gprs[1 ] = msr; + gprs[7 ] =0x9c5a203a ; + + err =native_rdmsr_safe_regs (gprs); + + *p = gprs[0 ] | ((u64 )gprs[2 ] <<32 ); - *p =native_read_msr_amd_safe (msr, &err);return err; } +static inline int wrmsr_amd_safe (unsigned msr,unsigned low,unsigned high) +{ +u32 gprs[8 ]; + +memset (gprs,0 ,sizeof (u32) *8 ); + + gprs[0 ] = low; + gprs[1 ] = msr; + gprs[2 ] = high; + gprs[7 ] =0x9c5a203a ; + +return native_wrmsr_safe_regs (gprs); +} +static inline int rdmsr_safe_regs (u32 *regs) {return native_rdmsr_safe_regs (regs);
arch/x86/include/asm/paravirt.h +24 -6
@@ -166,7 +166,6 @@ 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 (*rdmsr_regs)(u32 *regs);int (*write_msr)(unsigned int msr,unsigned low,unsigned high);
@@ -828,10 +827,6 @@ static inline int paravirt_rdmsr_regs(u32 *regs)return PVOP_CALL1 (int, pv_cpu_ops.rdmsr_regs, regs); } -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);
@@ -887,12 +882,35 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) }static inline int rdmsrl_amd_safe (unsigned msr,unsigned long long *p) { +u32 gprs[8 ];int err; - *p =paravirt_read_msr_amd (msr, &err); +memset (gprs,0 ,sizeof (u32) *8 ); + + gprs[1 ] = msr; + gprs[7 ] =0x9c5a203a ; + + err =paravirt_rdmsr_regs (gprs); + + *p = gprs[0 ] | ((u64 )gprs[2 ] <<32 ); +return err; } +static inline int wrmsr_amd_safe (unsigned msr,unsigned low,unsigned high) +{ +u32 gprs[8 ]; + +memset (gprs,0 ,sizeof (u32) *8 ); + + gprs[0 ] = low; + gprs[1 ] = msr; + gprs[2 ] = high; + gprs[7 ] =0x9c5a203a ; + +return paravirt_wrmsr_regs (gprs); +} +static inline u64 paravirt_read_tsc (void ) {return PVOP_CALL0 (u64, pv_cpu_ops.read_tsc);
arch/x86/kernel/paravirt.c +0 -1
@@ -363,7 +363,6 @@ struct pv_cpu_ops pv_cpu_ops = { .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, .rdmsr_regs = native_rdmsr_safe_regs, - .read_msr_amd = native_read_msr_amd_safe, .write_msr = native_write_msr_safe, .wrmsr_regs = native_wrmsr_safe_regs, .read_tsc = native_read_tsc,
Signature · 1 line
1.6.3.3
H. Peter Anvin
reviewerRe: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Borislav PetkovQuoted 11 lines · Borislav Petkov
Quoted 10 lines · H. Peter Anvin
Quoted 9 lines · Borislav Petkov
Quoted 3 lines · H. Peter Anvin
Looks reasonable... although part of me wonders if having a pointer to an array containing the entire register file in and out is even better, of if I'm just overengineering at this point.
Hmm, let's have necessity determine that. I can only think of %edi being used as an input reg to rd/wrmsr beside %ecx but it could be very well that some other x86 hardware uses other regs too. Do we actually need all regs or a two should suffice?
Quoted 9 lines
Quoted 4 lines
Hard to know. In theory we shouldn't need ESI and EDI either!
As I said, I wouldn't have worried about it at all if it wasn't for
paravirt_opsturning these things into ABIs.Ok, here's what I could come up with. It seems to work (tested only on a Fam10h box), it should cover all our msr needs for now and alleviate the need for adding yet another
paravirt_opsmember.
Looks good... there are a few minor tweaks to the assembly (in particular, if we're going to do the single file with a macro then the macro invocation should be outside the architecture #ifdef; second, I realized a better implementation of the 64-bit code after I sent you the email) but I can take care of this.
This is for .32, right?
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
Re: [tip:x86/urgent] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 5 lines · H. Peter Anvin
Looks good... there are a few minor tweaks to the assembly (in particular, if we're going to do the single file with a macro then the macro invocation should be outside the architecture #ifdef; second, I realized a better implementation of the 64-bit code after I sent you the email) but I can take care of this.
Cool. Could you please move the macro invocations too then, while you're at it.
Quoted 1 line
This is for .32, right?
Yep, I'd like to play it safe here so let's have it properly tested first. I will backport it to .31 and at least .30 later.
Thanks.
Signature · 2 lines
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Borislav Petkovarch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 418
Quoted 7 lines · Borislav Petkov
arch/x86/kernel/cpu/amd.c +6
-0clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + }
We presumably want/need wrmsrl_amd_safe() here!
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
Re: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 10 lines · H. Peter Anvin
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 418
Quoted 7 lines · Borislav Petkov
arch/x86/kernel/cpu/amd.c +6
-0clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + }We presumably want/need
wrmsrl_amd_safe()here!
Actually, it is wrmsr_amd_safe() because we need the magic value in %edi. wrmsr_amd_safe() calls the _regs variant with the array argument. And we don't have a wrmsrl_amd_safe-one which gets a 64bit msr value as an argument similar to the rdmsrl one.
Signature · 2 lines
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 11 lines · Borislav Petkov
Quoted 9 lines · H. Peter Anvin
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 418
Quoted 7 lines · Borislav Petkov
arch/x86/kernel/cpu/amd.c +6
-0clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + }We presumably want/need
wrmsrl_amd_safe()here!
Quoted 5 lines
Actually, it is
wrmsr_amd_safe()because we need the magic value in %edi.wrmsr_amd_safe()calls the_regsvariant with the array argument. And we don't have a wrmsrl_amd_safe-one which gets a 64bit msr value as an argument similar to the rdmsrl one.
That's exactly the point. We shouldn't have rdmsrl_amd_safe() on one hand and wrmsr_asm_safe() on the other. I have already fixed this up in my tree, but this kind of asymmetry should have been a big red flashing light.
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
H. Peter Anvin
reviewerRe: [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants
In reply to Borislav PetkovQuoted 1 line · Borislav Petkov
+#define
memset(d,c,l)__builtin_memset(d,c,l)
Uh, *NO*.
#include <linux/string.h> instead.
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
H. Peter Anvin
reviewerRe: [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants
In reply to Borislav PetkovQuoted 11 lines · Borislav Petkov
arch/x86/include/asm/msr.h +7
-1+ +#define memset (d,c,l) __builtin_memset(d,c,l)static inline int rdmsrl_amd_safe (unsigned msr,unsigned long long *p) { -int err; +u32 gprs[8 ]; +int err, i; + +memset (gprs,0 ,sizeof (u32) *8 ); +
arch/x86/include/asm/msr.h static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) · line 188
Quoted 10 lines
arch/x86/include/asm/msr.h +6
-1+ gprs[1 ] = msr; + gprs[7 ] =0x9c5a203a ; + + err =native_rdmsr_safe_regs (gprs); + + *p = gprs[0 ] | ((u64 )gprs[2 ] <<32 ); - *p =native_read_msr_amd_safe (msr, &err);return err; }
In file included from /home/hpa/kernel/linux-2.6-tip.msr/arch/x86/include/asm/processor.h:21,
from/home/hpa/kernel/linux-2.6-tip.msr/include/linux/prefetch.h:14,
from/home/hpa/kernel/linux-2.6-tip.msr/include/linux/list.h:6,
from/home/hpa/kernel/linux-2.6-tip.msr/include/linux/smp.h:11,
from/home/hpa/kernel/linux-2.6-tip.msr/include/linux/kernel_stat.h:4,
from/home/hpa/kernel/linux-2.6-tip.msr/arch/x86/kernel/irq_64.c:11:/home/hpa/kernel/linux-2.6-tip.msr/arch/x86/include/asm/msr.h: In function ‘rdmsrl_amd_safe’:/home/hpa/kernel/linux-2.6-tip.msr/arch/x86/include/asm/msr.h:176:
warning: unused variable ‘i’
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
Re: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to H. Peter AnvinQuoted 18 lines · H. Peter Anvin
Quoted 11 lines · Borislav Petkov
Quoted 9 lines · H. Peter Anvin
arch/x86/kernel/cpu/amd.c static void __cpuinit init_amd(struct cpuinfo_x86 *c) · line 418
Quoted 7 lines · Borislav Petkov
arch/x86/kernel/cpu/amd.c +6
-0clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsr_amd_safe (0xc001100d , (u32 ) val, + (u32)(val >>32 )); + } + }We presumably want/need
wrmsrl_amd_safe()here!Quoted 5 lines
Actually, it is
wrmsr_amd_safe()because we need the magic value in %edi.wrmsr_amd_safe()calls the_regsvariant with the array argument. And we don't have a wrmsrl_amd_safe-one which gets a 64bit msr value as an argument similar to the rdmsrl one.
Quoted 4 lines
That's exactly the point. We shouldn't have
rdmsrl_amd_safe()on one hand andwrmsr_asm_safe()on the other. I have already fixed this up in my tree, but this kind of asymmetry should have been a big red flashing light.
Ok, what do we want actually? We have rdmsr_safe and rdmsrl_safe where the last one engineers the 2 u32s into a u64. My gut feeling would opt for the 2 32bit values instead of one 64bit since they're naturally returned into %eax:%edx. And in the most cases we need only one of the values. However, the MSRs themselves are 64bit... Hmmm...
Signature · 2 lines
Regards/Gruss,
Boris.Re: [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants
In reply to H. Peter AnvinQuoted 6 lines · H. Peter Anvin
Quoted 1 line · Borislav Petkov
+#define
memset(d,c,l)__builtin_memset(d,c,l)Uh, *NO*.
#include <
linux/string.h> instead.
With string.h I seem to be getting some symbols visibility conflict at link time:
arch/x86/boot/compressed/misc.c:134: error: conflicting types for ‘memset’ /home/boris/kernel/linux-2.6/arch/x86/include/asm/msr.h:178: error: previous implicit declaration of ‘memset’ was here make[2]: *** [arch/x86/boot/compressed/misc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [arch/x86/boot/compressed/vmlinux] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [bzImage] Error 2
make: *** Waiting for unfinished jobs....
Will look more deeply into it tomorrow.
Signature · 2 lines
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Borislav PetkovQuoted 7 lines · Borislav Petkov
Ok, what do we want actually? We have
rdmsr_safeandrdmsrl_safewhere the last one engineers the 2 u32s into a u64. My gut feeling would opt for the 2 32bit values instead of one 64bit since they're naturally returned into %eax:%edx. And in the most cases we need only one of the values. However, the MSRs themselves are 64bit... Hmmm...
The 2x32 bit interface is the legacy interface. It turned out to be a bad idea, but it's hard to clean up all the users.
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
Re: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 11 lines · H. Peter Anvin
Quoted 7 lines · Borislav Petkov
Ok, what do we want actually? We have
rdmsr_safeandrdmsrl_safewhere the last one engineers the 2 u32s into a u64. My gut feeling would opt for the 2 32bit values instead of one 64bit since they're naturally returned into %eax:%edx. And in the most cases we need only one of the values. However, the MSRs themselves are 64bit... Hmmm...The 2x32 bit interface is the legacy interface. It turned out to be a bad idea, but it's hard to clean up all the users.
Ok, fixed. All other small-ish problems addressed too.
Signature · 2 lines
Regards/Gruss,
Boris.PATCH 3/3 x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Borislav PetkovFrom: Borislav Petkov <[email protected]>
fbd8b1819e80ac5a176d085fdddc3a34d1499318 turns off the bit for /proc/cpuinfo. However, a proper/full fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info.
Do that by basically reversing what the BIOS wrongfully does at boot.
--- arch/x86/kernel/cpu/amd.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
arch/x86/kernel/cpu/amd.c +10 -1
@@ -404,9 +404,18 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsrl_amd_safe (0xc001100d , val); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
Signature · 1 line
1.6.3.3
PATCH 1/3 x86, msr: add rd/wrmsr interfaces with preset registers
In reply to Borislav Petkovnative_{rdmsr,wrmsr}_safe_regs are two new interfaces which allow presetting of a subset of eight x86 GPRs before executing the rd/wrmsr instructions. This is needed at least on AMD K8 for accessing an erratum workaround MSR.
Originally based on an idea by H. Peter Anvin.
--- arch/x86/include/asm/msr.h | 13 +++++ arch/x86/include/asm/paravirt.h | 16 ++++++ arch/x86/kernel/paravirt.c | 2 + arch/x86/lib/Makefile | 1 + arch/x86/lib/msr-reg.S | 98 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+), 0 deletions(-) create mode 100644 arch/x86/lib/msr-reg.S
arch/x86/include/asm/msr.h +13 -0
@@ -113,6 +113,9 @@ notrace static inline int native_write_msr_safe(unsigned int msr,extern unsigned long long native_read_tsc (void ); +extern int native_rdmsr_safe_regs (u32 *regs); +extern int native_wrmsr_safe_regs (u32 *regs); +static __always_inline unsigned long long __native_read_tsc (void ) {DECLARE_ARGS (val, low, high);
@@ -189,6 +192,16 @@ static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)return err; } +static inline int rdmsr_safe_regs (u32 *regs) +{ +return native_rdmsr_safe_regs (regs); +} + +static inline int wrmsr_safe_regs (u32 *regs) +{ +return native_wrmsr_safe_regs (regs); +} +#define rdtscl (low) \ ((low) = (u32)__native_read_tsc())
arch/x86/include/asm/paravirt.h +16 -0
@@ -168,7 +168,9 @@ struct pv_cpu_ops {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 (*rdmsr_regs)(u32 *regs);int (*write_msr)(unsigned int msr,unsigned low,unsigned high); +int (*wrmsr_regs)(u32 *regs);u64 (*read_tsc)(void);u64 (*read_pmc)(int counter);
@@ -820,6 +822,12 @@ static inline u64 paravirt_read_msr(unsigned msr, int *err) {return PVOP_CALL2 (u64, pv_cpu_ops.read_msr, msr, err); } + +static inline int paravirt_rdmsr_regs (u32 *regs) +{ +return PVOP_CALL1 (int, pv_cpu_ops.rdmsr_regs, regs); +} +static inline u64 paravirt_read_msr_amd (unsigned msr,int *err) {return PVOP_CALL2 (u64, pv_cpu_ops.read_msr_amd, msr, err);
@@ -829,6 +837,11 @@ static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)return PVOP_CALL3 (int, pv_cpu_ops.write_msr, msr, low, high); } +static inline int paravirt_wrmsr_regs (u32 *regs) +{ +return PVOP_CALL1 (int, pv_cpu_ops.wrmsr_regs, regs); +} +/* These should all do BUG_ON(_err), but our headers are too tangled. */ #define rdmsr (msr, val1, val2) \ do { \
@@ -862,6 +875,9 @@ do { \ _err; \ }) +#define rdmsr_safe_regs (regs) paravirt_rdmsr_regs(regs) +#define wrmsr_safe_regs (regs) paravirt_wrmsr_regs(regs) +static inline int rdmsrl_safe (unsigned msr,unsigned long long *p) {int err;
arch/x86/kernel/paravirt.c +2 -0
@@ -362,8 +362,10 @@ struct pv_cpu_ops pv_cpu_ops = {#endif .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, + .rdmsr_regs = native_rdmsr_safe_regs, .read_msr_amd = native_read_msr_amd_safe, .write_msr = native_write_msr_safe, + .wrmsr_regs = native_wrmsr_safe_regs, .read_tsc = native_read_tsc, .read_pmc = native_read_pmc, .read_tscp = native_read_tscp,
arch/x86/lib/Makefile +1 -0
@@ -8,6 +8,7 @@ lib-y := delay.o lib-y += thunk_$(BITS).o lib-y += usercopy_$(BITS).o getuser.o putuser.o lib-y += memcpy_$(BITS).o +lib-y += msr-reg.o ifeq ($(CONFIG_X86_32),y) obj-y += atomic64_32.o
arch/x86/lib/msr-reg.S new file +98 -0
98 lines not on this page · raw message
Signature · 1 line
1.6.3.3
PATCH 2/3 x86, msr: rewrite AMD rd/wrmsr variants
Switch them to native_{rd,wr}msr_safe_regs and remove pv_cpu_ops.read_msr_amd.
--- arch/x86/include/asm/msr.h | 38 +++++++++++++++++++++----------------- arch/x86/include/asm/paravirt.h | 26 ++++++++++++++++++++------ arch/x86/kernel/paravirt.c | 1 - 3 files changed, 41 insertions(+), 24 deletions(-)
arch/x86/include/asm/msr.h +21 -17
@@ -71,22 +71,6 @@ 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(2b, 3b) - : "=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) {
@@ -184,14 +168,34 @@ 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) { +u32 gprs[8 ] = {0 };int err; - *p =native_read_msr_amd_safe (msr, &err); + gprs[1 ] = msr; + gprs[7 ] =0x9c5a203a ; + + err =native_rdmsr_safe_regs (gprs); + + *p = gprs[0 ] | ((u64 )gprs[2 ] <<32 ); +return err; } +static inline int wrmsrl_amd_safe (unsigned msr,unsigned long long val) +{ +u32 gprs[8 ] = {0 }; + + gprs[0 ] = (u32 )val; + gprs[1 ] = msr; + gprs[2 ] = val >>32 ; + gprs[7 ] =0x9c5a203a ; + +return native_wrmsr_safe_regs (gprs); +} +static inline int rdmsr_safe_regs (u32 *regs) {return native_rdmsr_safe_regs (regs);
arch/x86/include/asm/paravirt.h +20 -6
@@ -166,7 +166,6 @@ 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 (*rdmsr_regs)(u32 *regs);int (*write_msr)(unsigned int msr,unsigned low,unsigned high);
@@ -828,10 +827,6 @@ static inline int paravirt_rdmsr_regs(u32 *regs)return PVOP_CALL1 (int, pv_cpu_ops.rdmsr_regs, regs); } -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);
@@ -887,12 +882,31 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) }static inline int rdmsrl_amd_safe (unsigned msr,unsigned long long *p) { +u32 gprs[8 ] = {0 };int err; - *p =paravirt_read_msr_amd (msr, &err); + gprs[1 ] = msr; + gprs[7 ] =0x9c5a203a ; + + err =paravirt_rdmsr_regs (gprs); + + *p = gprs[0 ] | ((u64 )gprs[2 ] <<32 ); +return err; } +static inline int wrmsrl_amd_safe (unsigned msr,unsigned long long val) +{ +u32 gprs[8 ] = {0 }; + + gprs[0 ] = (u32 )val; + gprs[1 ] = msr; + gprs[2 ] = val >>32 ; + gprs[7 ] =0x9c5a203a ; + +return paravirt_wrmsr_regs (gprs); +} +static inline u64 paravirt_read_tsc (void ) {return PVOP_CALL0 (u64, pv_cpu_ops.read_tsc);
arch/x86/kernel/paravirt.c +0 -1
@@ -363,7 +363,6 @@ struct pv_cpu_ops pv_cpu_ops = { .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, .rdmsr_regs = native_rdmsr_safe_regs, - .read_msr_amd = native_read_msr_amd_safe, .write_msr = native_write_msr_safe, .wrmsr_regs = native_wrmsr_safe_regs, .read_tsc = native_read_tsc,
Signature · 1 line
1.6.3.3
Re: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to H. Peter AnvinQuoted 2 lines · H. Peter Anvin
The 2x32 bit interface is the legacy interface. It turned out to be a bad idea, but it's hard to clean up all the users.
By the way, do we want to switch all rd/wrmsr users to the rd/wrmsrl et al interfaces? I could do that gradually - there are only about 400+ callsites :)
Signature · 2 lines
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
Quoted 8 lines · Borislav Petkov
Quoted 2 lines · H. Peter Anvin
The 2x32 bit interface is the legacy interface. It turned out to be a bad idea, but it's hard to clean up all the users.
By the way, do we want to switch all rd/wrmsr users to the rd/wrmsrl et al interfaces? I could do that gradually - there are only about 400+ callsites :)
Probably, but I don't consider it a high-priority project. To me it's more of a "clean it up as you go" kind of thing.
-hpa
[tip:x86/cpu] x86, msr: Add rd/wrmsr interfaces with preset registers
In reply to Borislav PetkovCommit-ID: 132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Gitweb: http://git.kernel.org/tip/132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Author: Borislav Petkov <[email protected]> AuthorDate: Mon, 31 Aug 2009 09:50:09 +0200 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:26 -0700
x86, msr: Add rd/wrmsr interfaces with preset registers
native_{rdmsr,wrmsr}_safe_regs are two new interfaces which allow presetting of a subset of eight x86 GPRs before executing the rd/wrmsr instructions. This is needed at least on AMD K8 for accessing an erratum workaround MSR.
Originally based on an idea by H. Peter Anvin.
LKML-Reference: <[email protected]>
--- arch/x86/include/asm/msr.h | 13 +++++ arch/x86/include/asm/paravirt.h | 16 ++++++ arch/x86/kernel/paravirt.c | 2 + arch/x86/lib/Makefile | 1 + arch/x86/lib/msr-reg.S | 98 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+), 0 deletions(-)
arch/x86/include/asm/msr.h +13 -0
@@ -113,6 +113,9 @@ notrace static inline int native_write_msr_safe(unsigned int msr,extern unsigned long long native_read_tsc (void ); +extern int native_rdmsr_safe_regs (u32 *regs); +extern int native_wrmsr_safe_regs (u32 *regs); +static __always_inline unsigned long long __native_read_tsc (void ) {DECLARE_ARGS (val, low, high);
@@ -189,6 +192,16 @@ static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)return err; } +static inline int rdmsr_safe_regs (u32 *regs) +{ +return native_rdmsr_safe_regs (regs); +} + +static inline int wrmsr_safe_regs (u32 *regs) +{ +return native_wrmsr_safe_regs (regs); +} +#define rdtscl (low) \ ((low) = (u32)__native_read_tsc())
arch/x86/include/asm/paravirt.h +16 -0
@@ -168,7 +168,9 @@ struct pv_cpu_ops {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 (*rdmsr_regs)(u32 *regs);int (*write_msr)(unsigned int msr,unsigned low,unsigned high); +int (*wrmsr_regs)(u32 *regs);u64 (*read_tsc)(void);u64 (*read_pmc)(int counter);
@@ -820,6 +822,12 @@ static inline u64 paravirt_read_msr(unsigned msr, int *err) {return PVOP_CALL2 (u64, pv_cpu_ops.read_msr, msr, err); } + +static inline int paravirt_rdmsr_regs (u32 *regs) +{ +return PVOP_CALL1 (int, pv_cpu_ops.rdmsr_regs, regs); +} +static inline u64 paravirt_read_msr_amd (unsigned msr,int *err) {return PVOP_CALL2 (u64, pv_cpu_ops.read_msr_amd, msr, err);
@@ -829,6 +837,11 @@ static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)return PVOP_CALL3 (int, pv_cpu_ops.write_msr, msr, low, high); } +static inline int paravirt_wrmsr_regs (u32 *regs) +{ +return PVOP_CALL1 (int, pv_cpu_ops.wrmsr_regs, regs); +} +/* These should all do BUG_ON(_err), but our headers are too tangled. */ #define rdmsr (msr, val1, val2) \ do { \
@@ -862,6 +875,9 @@ do { \ _err; \ }) +#define rdmsr_safe_regs (regs) paravirt_rdmsr_regs(regs) +#define wrmsr_safe_regs (regs) paravirt_wrmsr_regs(regs) +static inline int rdmsrl_safe (unsigned msr,unsigned long long *p) {int err;
arch/x86/kernel/paravirt.c +2 -0
@@ -362,8 +362,10 @@ struct pv_cpu_ops pv_cpu_ops = {#endif .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, + .rdmsr_regs = native_rdmsr_safe_regs, .read_msr_amd = native_read_msr_amd_safe, .write_msr = native_write_msr_safe, + .wrmsr_regs = native_wrmsr_safe_regs, .read_tsc = native_read_tsc, .read_pmc = native_read_pmc, .read_tscp = native_read_tscp,
arch/x86/lib/Makefile +1 -0
@@ -8,6 +8,7 @@ lib-y := delay.o lib-y += thunk_$(BITS).o lib-y += usercopy_$(BITS).o getuser.o putuser.o lib-y += memcpy_$(BITS).o +lib-y += msr-reg.o ifeq ($(CONFIG_X86_32),y) obj-y += atomic64_32.o
arch/x86/lib/msr-reg.S new file +98 -0
98 lines not on this page · raw message
[tip:x86/cpu] x86, msr: Rewrite AMD rd/wrmsr variants
In reply to Borislav PetkovCommit-ID: 177fed1ee8d727c39601ce9fc2299b4cb25a718e Gitweb: http://git.kernel.org/tip/177fed1ee8d727c39601ce9fc2299b4cb25a718e Author: Borislav Petkov <[email protected]> AuthorDate: Mon, 31 Aug 2009 09:50:10 +0200 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:28 -0700
x86, msr: Rewrite AMD rd/wrmsr variants
Switch them to native_{rd,wr}msr_safe_regs and remove pv_cpu_ops.read_msr_amd.
LKML-Reference: <[email protected]>
--- arch/x86/include/asm/msr.h | 38 +++++++++++++++++++++----------------- arch/x86/include/asm/paravirt.h | 26 ++++++++++++++++++++------ arch/x86/kernel/paravirt.c | 1 - 3 files changed, 41 insertions(+), 24 deletions(-)
arch/x86/include/asm/msr.h +21 -17
@@ -71,22 +71,6 @@ 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(2b, 3b) - : "=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) {
@@ -184,14 +168,34 @@ 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) { +u32 gprs[8 ] = {0 };int err; - *p =native_read_msr_amd_safe (msr, &err); + gprs[1 ] = msr; + gprs[7 ] =0x9c5a203a ; + + err =native_rdmsr_safe_regs (gprs); + + *p = gprs[0 ] | ((u64 )gprs[2 ] <<32 ); +return err; } +static inline int wrmsrl_amd_safe (unsigned msr,unsigned long long val) +{ +u32 gprs[8 ] = {0 }; + + gprs[0 ] = (u32 )val; + gprs[1 ] = msr; + gprs[2 ] = val >>32 ; + gprs[7 ] =0x9c5a203a ; + +return native_wrmsr_safe_regs (gprs); +} +static inline int rdmsr_safe_regs (u32 *regs) {return native_rdmsr_safe_regs (regs);
arch/x86/include/asm/paravirt.h +20 -6
@@ -166,7 +166,6 @@ 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 (*rdmsr_regs)(u32 *regs);int (*write_msr)(unsigned int msr,unsigned low,unsigned high);
@@ -828,10 +827,6 @@ static inline int paravirt_rdmsr_regs(u32 *regs)return PVOP_CALL1 (int, pv_cpu_ops.rdmsr_regs, regs); } -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);
@@ -887,12 +882,31 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) }static inline int rdmsrl_amd_safe (unsigned msr,unsigned long long *p) { +u32 gprs[8 ] = {0 };int err; - *p =paravirt_read_msr_amd (msr, &err); + gprs[1 ] = msr; + gprs[7 ] =0x9c5a203a ; + + err =paravirt_rdmsr_regs (gprs); + + *p = gprs[0 ] | ((u64 )gprs[2 ] <<32 ); +return err; } +static inline int wrmsrl_amd_safe (unsigned msr,unsigned long long val) +{ +u32 gprs[8 ] = {0 }; + + gprs[0 ] = (u32 )val; + gprs[1 ] = msr; + gprs[2 ] = val >>32 ; + gprs[7 ] =0x9c5a203a ; + +return paravirt_wrmsr_regs (gprs); +} +static inline u64 paravirt_read_tsc (void ) {return PVOP_CALL0 (u64, pv_cpu_ops.read_tsc);
arch/x86/kernel/paravirt.c +0 -1
@@ -363,7 +363,6 @@ struct pv_cpu_ops pv_cpu_ops = { .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, .rdmsr_regs = native_rdmsr_safe_regs, - .read_msr_amd = native_read_msr_amd_safe, .write_msr = native_write_msr_safe, .wrmsr_regs = native_wrmsr_safe_regs, .read_tsc = native_read_tsc,
[tip:x86/cpu] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
In reply to Borislav PetkovCommit-ID: 6b0f43ddfa358dc71ad2a2d57bce5906c1c5dc1a Gitweb: http://git.kernel.org/tip/6b0f43ddfa358dc71ad2a2d57bce5906c1c5dc1a Author: Borislav Petkov <[email protected]> AuthorDate: Mon, 31 Aug 2009 09:50:11 +0200 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:29 -0700
x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit
fbd8b1819e80ac5a176d085fdddc3a34d1499318 turns off the bit for /proc/cpuinfo. However, a proper/full fix would be to additionally turn off the bit in the CPUID output so that future callers get correct CPU features info.
Do that by basically reversing what the BIOS wrongfully does at boot.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/cpu/amd.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
arch/x86/kernel/cpu/amd.c +10 -1
@@ -404,9 +404,18 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)/* * Some BIOSes incorrectly force this feature, but only K8 * revision D (model = 0x14) and later actually support it. +* (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 ) +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +u64 val; +clear_cpu_cap (c,X86_FEATURE_LAHF_LM ); +if (!rdmsrl_amd_safe (0xc001100d , &val)) { + val &= ~(1ULL <<32 ); +wrmsrl_amd_safe (0xc001100d , val); + } + } + }if (c->x86 ==0x10 || c->x86 ==0x11 )set_cpu_cap (c,X86_FEATURE_REP_GOOD );
tip-bot for H. Peter Anvin
reviewer[tip:x86/cpu] x86, msr: CFI annotations, cleanups for msr-reg.S
In reply to Borislav PetkovCommit-ID: 79c5dca3619d6ae15815eec14cd7a43db5f38b47 Gitweb: http://git.kernel.org/tip/79c5dca3619d6ae15815eec14cd7a43db5f38b47 Author: H. Peter Anvin <[email protected]> AuthorDate: Mon, 31 Aug 2009 13:59:53 -0700 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:47 -0700
x86, msr: CFI annotations, cleanups for msr-reg.S
Add CFI annotations for native_{rd,wr}msr_safe_regs(). Simplify the 64-bit implementation: we don't allow the upper half registers to be set, and so we can use them to carry state across the operation.
LKML-Reference: <[email protected]>
--- arch/x86/lib/msr-reg.S | 80 +++++++++++++++++++++++++----------------------- 1 files changed, 42 insertions(+), 38 deletions(-)
arch/x86/lib/msr-reg.S +42 -38
@@ -1,5 +1,6 @@ #include <linux/linkage.h> #include <linux/errno.h> +#include <asm/dwarf2.h> #include <asm/asm.h> #include <asm/msr.h>
@@ -12,10 +13,11 @@ */ .macro op_safe_regs op:req ENTRY(native_\op\()_safe_regs) - push %rbx - push %rbp - push $0 /* Return value */ - push %rdi + CFI_STARTPROC + pushq_cfi %rbx + pushq_cfi %rbp + movq %rdi, %r10 /* Save pointer */ + xorl %r11d, %r11d /* Return value */ movl (%rdi), %eax movl 4(%rdi), %ecx movl 8(%rdi), %edx
@@ -23,27 +25,26 @@ ENTRY(native_\op\()_safe_regs) movl 20(%rdi), %ebp movl 24(%rdi), %esi movl 28(%rdi), %edi + CFI_REMEMBER_STATE 1: \op -2: movl %edi, %r10d - pop %rdi - movl %eax, (%rdi) - movl %ecx, 4(%rdi) - movl %edx, 8(%rdi) - movl %ebx, 12(%rdi) - movl %ebp, 20(%rdi) - movl %esi, 24(%rdi) - movl %r10d, 28(%rdi) - pop %rax - pop %rbp - pop %rbx +2: movl %eax, (%r10) + movl %r11d, %eax /* Return value */ + movl %ecx, 4(%r10) + movl %edx, 8(%r10) + movl %ebx, 12(%r10) + movl %ebp, 20(%r10) + movl %esi, 24(%r10) + movl %edi, 28(%r10) + popq_cfi %rbp + popq_cfi %rbx ret 3: - movq $-EIO, 8(%rsp) + CFI_RESTORE_STATE + movl $-EIO, %r11d jmp 2b - .section __ex_table,"ax" - .balign 4 - .quad 1b, 3b - .previous + + _ASM_EXTABLE(1b, 3b) + CFI_ENDPROC ENDPROC(native_\op\()_safe_regs) .endm
@@ -51,12 +52,13 @@ ENDPROC(native_\op\()_safe_regs) .macro op_safe_regs op:req ENTRY(native_\op\()_safe_regs) - push %ebx - push %ebp - push %esi - push %edi - push $0 /* Return value */ - push %eax + CFI_STARTPROC + pushl_cfi %ebx + pushl_cfi %ebp + pushl_cfi %esi + pushl_cfi %edi + pushl_cfi $0 /* Return value */ + pushl_cfi %eax movl 4(%eax), %ecx movl 8(%eax), %edx movl 12(%eax), %ebx
@@ -64,30 +66,32 @@ ENTRY(native_\op\()_safe_regs) movl 24(%eax), %esi movl 28(%eax), %edi movl (%eax), %eax + CFI_REMEMBER_STATE 1: \op -2: push %eax +2: pushl_cfi %eax movl 4(%esp), %eax - pop (%eax) + popl_cfi (%eax) addl $4, %esp + CFI_ADJUST_CFA_OFFSET -4 movl %ecx, 4(%eax) movl %edx, 8(%eax) movl %ebx, 12(%eax) movl %ebp, 20(%eax) movl %esi, 24(%eax) movl %edi, 28(%eax) - pop %eax - pop %edi - pop %esi - pop %ebp - pop %ebx + popl_cfi %eax + popl_cfi %edi + popl_cfi %esi + popl_cfi %ebp + popl_cfi %ebx ret 3: + CFI_RESTORE_STATE movl $-EIO, 4(%esp) jmp 2b - .section __ex_table,"ax" - .balign 4 - .long 1b, 3b - .previous + + _ASM_EXTABLE(1b, 3b) + CFI_ENDPROC ENDPROC(native_\op\()_safe_regs) .endm
Re: [tip:x86/cpu] x86, msr: Add rd/wrmsr interfaces with preset registers
In reply to tip-bot for Borislav PetkovQuoted 8 lines · tip-bot for Borislav Petkov
Commit-ID: 132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Gitweb: http://git.kernel.org/tip/132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Author: Borislav Petkov <[email protected]> AuthorDate: Mon, 31 Aug 2009 09:50:09 +0200 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:26 -0700x86, msr: Add rd/wrmsr interfaces with preset registers
FYI, -tip testing found a build failure on x86 with these patches:
arch/x86/lib/msr-reg.S:14: Error: Bad macro parameter list arch/x86/lib/msr-reg.S:100: Error: invalid character '_' in mnemonic arch/x86/lib/msr-reg.S:101: Error: invalid character '_' in mnemonic
config attached. I've excluded this topic branch from tip:master for now.
Ingo
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc8
# Tue Sep 1 12:15:03 2009
#CONFIG_64BIT=y
# CONFIG_X86_32 is not setCONFIG_X86_64=yCONFIG_X86=yCONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_GENERIC_TIME=yCONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=yCONFIG_MMU=yCONFIG_ZONE_DMA=yCONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_IOMAP=yCONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=yCONFIG_ZONE_DMA32=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_64_SMP=yCONFIG_X86_HT=yCONFIG_X86_TRAMPOLINE=y
# CONFIG_KTIME_SCALAR is not set
# CONFIG_BOOTPARAM_SUPPORT is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y
#
# General setup
#CONFIG_EXPERIMENTAL=yCONFIG_BROKEN_BOOT_ALLOWED4=yCONFIG_BROKEN_BOOT_ALLOWED3=y
# CONFIG_BROKEN_BOOT_ALLOWED2 is not set
# CONFIG_BROKEN_BOOT_EUROPE is not set
# CONFIG_BROKEN_BOOT_TITAN is not setCONFIG_LOCK_KERNEL=yCONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not setCONFIG_HAVE_KERNEL_GZIP=yCONFIG_HAVE_KERNEL_BZIP2=yCONFIG_HAVE_KERNEL_LZMA=y
# CONFIG_KERNEL_GZIP is not setCONFIG_KERNEL_BZIP2=y
# CONFIG_KERNEL_LZMA is not setCONFIG_SWAP=y
# CONFIG_SYSVIPC is not set
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
#
# RCU Subsystem
#CONFIG_TREE_RCU=y
# CONFIG_TREE_PREEMPT_RCU is not setCONFIG_RCU_TRACE=yCONFIG_RCU_FANOUT=64
# CONFIG_RCU_FANOUT_EXACT is not setCONFIG_TREE_RCU_TRACE=y
# CONFIG_IKCONFIG is not setCONFIG_LOG_BUF_SHIFT=21CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=yCONFIG_GROUP_SCHED=yCONFIG_FAIR_GROUP_SCHED=yCONFIG_RT_GROUP_SCHED=yCONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
# CONFIG_CGROUPS is not setCONFIG_SYSFS_DEPRECATED=y
# CONFIG_SYSFS_DEPRECATED_V2 is not setCONFIG_RELAY=y
# CONFIG_NAMESPACES is not setCONFIG_BLK_DEV_INITRD=yCONFIG_INITRAMFS_SOURCE=""CONFIG_RD_GZIP=yCONFIG_RD_BZIP2=y
# CONFIG_RD_LZMA is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not setCONFIG_SYSCTL=yCONFIG_ANON_INODES=yCONFIG_EMBEDDED=y
# CONFIG_UID16 is not setCONFIG_SYSCTL_SYSCALL=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not setCONFIG_HOTPLUG=yCONFIG_PRINTK=y
# CONFIG_BUG is not setCONFIG_ELF_CORE=yCONFIG_PCSPKR_PLATFORM=y
# CONFIG_BASE_FULL is not setCONFIG_FUTEX=yCONFIG_EPOLL=yCONFIG_SIGNALFD=y
# CONFIG_TIMERFD is not set
# CONFIG_EVENTFD is not setCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_HAVE_PERF_COUNTERS=y
#
# Performance Counters
#CONFIG_PERF_COUNTERS=y
# CONFIG_VM_EVENT_COUNTERS is not setCONFIG_PCI_QUIRKS=yCONFIG_SLUB_DEBUG=yCONFIG_STRIP_ASM_SYMS=yCONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not setCONFIG_TRACEPOINTS=yCONFIG_MARKERS=yCONFIG_HAVE_OPROFILE=yCONFIG_KPROBES=yCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_KRETPROBES=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_ATTRS=yCONFIG_HAVE_DMA_API_DEBUG=yCONFIG_HAVE_HW_BREAKPOINT=y
#
# GCOV-based kernel profiling
#CONFIG_SLOW_WORK=y
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not setCONFIG_SLABINFO=yCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=1CONFIG_MODULES=yCONFIG_MODULE_FORCE_LOAD=yCONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not setCONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not setCONFIG_STOP_MACHINE=yCONFIG_BLOCK=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not setCONFIG_BLOCK_COMPAT=y
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=mCONFIG_IOSCHED_DEADLINE=mCONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not setCONFIG_DEFAULT_NOOP=yCONFIG_DEFAULT_IOSCHED="noop"CONFIG_PREEMPT_NOTIFIERS=yCONFIG_FREEZER=y
#
# Processor type and features
#CONFIG_TICK_ONESHOT=y
# CONFIG_NO_HZ is not set CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP_SUPPORT is not set
# CONFIG_SPARSE_IRQ is not set CONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set CONFIG_MEMTEST=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not setCONFIG_MK8=y
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_MATOM is not set
# CONFIG_GENERIC_CPU is not set CONFIG_X86_CPU=y CONFIG_X86_L1_CACHE_BYTES=64 CONFIG_X86_INTERNODE_CACHE_BYTES=64 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_TSC=yCONFIG_X86_CMPXCHG64=yCONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y CONFIG_PROCESSOR_SELECT=y
# CONFIG_CPU_SUP_INTEL is not set CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR=y
# CONFIG_X86_DS is not set CONFIG_HPET_TIMER=yCONFIG_DMI=yCONFIG_GART_IOMMU=yCONFIG_CALGARY_IOMMU=y
# CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT is not set CONFIG_AMD_IOMMU=yCONFIG_AMD_IOMMU_STATS=yCONFIG_SWIOTLB=yCONFIG_IOMMU_HELPER=yCONFIG_IOMMU_API=yCONFIG_MAXSMP=yCONFIG_NR_CPUS=4096CONFIG_SCHED_SMT=y
# CONFIG_SCHED_MC is not set CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y CONFIG_X86_MCE=yCONFIG_X86_MCE_INTEL=yCONFIG_X86_MCE_AMD=y CONFIG_X86_MCE_THRESHOLD=y CONFIG_X86_MCE_INJECT=m CONFIG_X86_THERMAL_VECTOR=y
# CONFIG_I8K is not setCONFIG_MICROCODE=mCONFIG_MICROCODE_INTEL=y CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_OLD_INTERFACE=y
# CONFIG_X86_MSR is not set CONFIG_X86_CPUID=m
# CONFIG_X86_CPU_DEBUG is not set
# CONFIG_UP_WANTED_1 is not setCONFIG_SMP=yCONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_DIRECT_GBPAGES=y
# CONFIG_NUMA is not set CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set CONFIG_SPARSEMEM_MANUAL=yCONFIG_SPARSEMEM=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
# CONFIG_SPARSEMEM_VMEMMAP is not set
#
# Memory hotplug is currently incompatible with Software Suspend #CONFIG_PAGEFLAGS_EXTENDED=yCONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_PHYS_ADDR_T_64BIT=yCONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_HAVE_MLOCK=yCONFIG_HAVE_MLOCKED_PAGE_BIT=yCONFIG_MMU_NOTIFIER=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y CONFIG_X86_RESERVE_LOW_64K=yCONFIG_MTRR=y
# CONFIG_MTRR_SANITIZER is not setCONFIG_X86_PAT=yCONFIG_ARCH_USES_PG_UNCACHED=y
# CONFIG_EFI is not setCONFIG_SECCOMP=yCONFIG_CC_STACKPROTECTOR_ALL=y CONFIG_CC_STACKPROTECTOR=yCONFIG_HZ_100=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not setCONFIG_HZ=100CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set CONFIG_PHYSICAL_START=0x1000000CONFIG_RELOCATABLE=yCONFIG_PHYSICAL_ALIGN=0x1000000CONFIG_HOTPLUG_CPU=yCONFIG_COMPAT_VDSO=yCONFIG_CMDLINE_BOOL=yCONFIG_CMDLINE=""CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management and ACPI options
#CONFIG_ARCH_HIBERNATION_HEADER=yCONFIG_PM=y
# CONFIG_PM_DEBUG is not setCONFIG_PM_SLEEP_SMP=yCONFIG_PM_SLEEP=y
# CONFIG_SUSPEND is not setCONFIG_HIBERNATION_NVS=yCONFIG_HIBERNATION=yCONFIG_PM_STD_PARTITION=""CONFIG_ACPI=yCONFIG_ACPI_SLEEP=yCONFIG_ACPI_PROCFS=yCONFIG_ACPI_PROCFS_POWER=yCONFIG_ACPI_SYSFS_POWER=y
# CONFIG_ACPI_PROC_EVENT is not set
# CONFIG_ACPI_AC is not setCONFIG_ACPI_BATTERY=yCONFIG_ACPI_BUTTON=mCONFIG_ACPI_FAN=mCONFIG_ACPI_DOCK=yCONFIG_ACPI_PROCESSOR=mCONFIG_ACPI_HOTPLUG_CPU=y
# CONFIG_ACPI_THERMAL is not set
# CONFIG_ACPI_CUSTOM_DSDT is not setCONFIG_ACPI_BLACKLIST_YEAR=0CONFIG_ACPI_DEBUG=yCONFIG_ACPI_DEBUG_FUNC_TRACE=yCONFIG_ACPI_PCI_SLOT=mCONFIG_X86_PM_TIMER=yCONFIG_ACPI_CONTAINER=yCONFIG_ACPI_SBS=m
#
# CPU Frequency scaling
#CONFIG_CPU_FREQ=yCONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set CONFIG_CPU_FREQ_STAT=m CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#CONFIG_X86_ACPI_CPUFREQ=mCONFIG_X86_POWERNOW_K8=mCONFIG_X86_SPEEDSTEP_CENTRINO=mCONFIG_X86_P4_CLOCKMOD=y
#
# shared options # CONFIG_X86_SPEEDSTEP_LIB=y CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y
#
# Memory power savings
#
# CONFIG_I7300_IDLE is not set
#
# Bus options (PCI etc.)
#CONFIG_PCI=yCONFIG_PCI_DIRECT=yCONFIG_PCI_MMCONFIG=yCONFIG_PCI_DOMAINS=y
# CONFIG_DMAR is not set
# CONFIG_INTR_REMAP is not set
# CONFIG_PCIEPORTBUS is not setCONFIG_ARCH_SUPPORTS_MSI=yCONFIG_PCI_MSI=yCONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not setCONFIG_PCI_STUB=yCONFIG_HT_IRQ=yCONFIG_PCI_IOV=yCONFIG_ISA_DMA_API=yCONFIG_K8_NB=yCONFIG_PCCARD=yCONFIG_PCMCIA_DEBUG=yCONFIG_PCMCIA=yCONFIG_PCMCIA_LOAD_CIS=y
# CONFIG_PCMCIA_IOCTL is not setCONFIG_CARDBUS=y
#
# PC-card bridges
#CONFIG_YENTA=yCONFIG_YENTA_O2=yCONFIG_YENTA_RICOH=yCONFIG_YENTA_TI=yCONFIG_YENTA_ENE_TUNE=yCONFIG_YENTA_TOSHIBA=y
# CONFIG_PD6729 is not setCONFIG_I82092=yCONFIG_PCCARD_NONSTATIC=yCONFIG_HOTPLUG_PCI=m
# CONFIG_HOTPLUG_PCI_FAKE is not set
# CONFIG_HOTPLUG_PCI_ACPI is not set
# CONFIG_HOTPLUG_PCI_CPCI is not setCONFIG_HOTPLUG_PCI_SHPC=m
#
# Executable file formats / Emulations
#CONFIG_BINFMT_ELF=yCONFIG_COMPAT_BINFMT_ELF=yCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
# CONFIG_HAVE_AOUT is not setCONFIG_BINFMT_MISC=mCONFIG_IA32_EMULATION=yCONFIG_IA32_AOUT=mCONFIG_COMPAT=yCONFIG_COMPAT_FOR_U64_ALIGNMENT=yCONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not setCONFIG_UNIX=yCONFIG_XFRM=y
# CONFIG_XFRM_USER is not setCONFIG_XFRM_SUB_POLICY=yCONFIG_XFRM_MIGRATE=yCONFIG_XFRM_STATISTICS=yCONFIG_XFRM_IPCOMP=yCONFIG_NET_KEY=mCONFIG_NET_KEY_MIGRATE=yCONFIG_INET=y
# CONFIG_IP_MULTICAST is not setCONFIG_IP_ADVANCED_ROUTER=y
# CONFIG_ASK_IP_FIB_HASH is not setCONFIG_IP_FIB_TRIE=y
# CONFIG_IP_FIB_HASH is not setCONFIG_IP_FIB_TRIE_STATS=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_MULTIPATH=yCONFIG_IP_ROUTE_VERBOSE=yCONFIG_IP_PNP=y
# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not setCONFIG_IP_PNP_RARP=y
# CONFIG_NET_IPIP is not setCONFIG_NET_IPGRE=y
# CONFIG_ARPD is not setCONFIG_SYN_COOKIES=yCONFIG_INET_AH=yCONFIG_INET_ESP=y
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not setCONFIG_INET_TUNNEL=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not setCONFIG_INET_XFRM_MODE_BEET=yCONFIG_INET_LRO=yCONFIG_INET_DIAG=yCONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not setCONFIG_TCP_CONG_CUBIC=yCONFIG_DEFAULT_TCP_CONG="cubic"CONFIG_TCP_MD5SIG=yCONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not setCONFIG_INET6_AH=m
# CONFIG_INET6_ESP is not setCONFIG_INET6_IPCOMP=yCONFIG_IPV6_MIP6=yCONFIG_INET6_XFRM_TUNNEL=yCONFIG_INET6_TUNNEL=yCONFIG_INET6_XFRM_MODE_TRANSPORT=y
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_BEET is not setCONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=yCONFIG_IPV6_SIT=yCONFIG_IPV6_NDISC_NODETYPE=yCONFIG_IPV6_TUNNEL=mCONFIG_IPV6_MULTIPLE_TABLES=yCONFIG_IPV6_SUBTREES=yCONFIG_IPV6_MROUTE=yCONFIG_IPV6_PIMSM_V2=yCONFIG_NETLABEL=yCONFIG_NETWORK_SECMARK=yCONFIG_NETFILTER=yCONFIG_NETFILTER_DEBUG=yCONFIG_NETFILTER_ADVANCED=yCONFIG_BRIDGE_NETFILTER=y
#
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
# CONFIG_NETFILTER_NETLINK_LOG is not set
# CONFIG_NF_CONNTRACK is not setCONFIG_NETFILTER_XTABLES=m
# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not setCONFIG_NETFILTER_XT_TARGET_MARK=m
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not setCONFIG_NETFILTER_XT_TARGET_RATEEST=m
# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
# CONFIG_NETFILTER_XT_MATCH_COMMENT is not setCONFIG_NETFILTER_XT_MATCH_DCCP=mCONFIG_NETFILTER_XT_MATCH_DSCP=m
# CONFIG_NETFILTER_XT_MATCH_ESP is not set
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not setCONFIG_NETFILTER_XT_MATCH_HL=mCONFIG_NETFILTER_XT_MATCH_IPRANGE=mCONFIG_NETFILTER_XT_MATCH_LENGTH=m
# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
# CONFIG_NETFILTER_XT_MATCH_MAC is not setCONFIG_NETFILTER_XT_MATCH_MARK=mCONFIG_NETFILTER_XT_MATCH_MULTIPORT=mCONFIG_NETFILTER_XT_MATCH_OWNER=mCONFIG_NETFILTER_XT_MATCH_POLICY=mCONFIG_NETFILTER_XT_MATCH_PHYSDEV=mCONFIG_NETFILTER_XT_MATCH_PKTTYPE=mCONFIG_NETFILTER_XT_MATCH_QUOTA=mCONFIG_NETFILTER_XT_MATCH_RATEEST=m
# CONFIG_NETFILTER_XT_MATCH_REALM is not set
# CONFIG_NETFILTER_XT_MATCH_RECENT is not setCONFIG_NETFILTER_XT_MATCH_SCTP=mCONFIG_NETFILTER_XT_MATCH_STATISTIC=mCONFIG_NETFILTER_XT_MATCH_STRING=m
# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not setCONFIG_NETFILTER_XT_MATCH_TIME=m
# CONFIG_NETFILTER_XT_MATCH_U32 is not setCONFIG_IP_VS=y
# CONFIG_IP_VS_IPV6 is not set
# CONFIG_IP_VS_DEBUG is not setCONFIG_IP_VS_TAB_BITS=12
#
# IPVS transport protocol load balancing support
#CONFIG_IP_VS_PROTO_TCP=yCONFIG_IP_VS_PROTO_UDP=yCONFIG_IP_VS_PROTO_AH_ESP=y
# CONFIG_IP_VS_PROTO_ESP is not setCONFIG_IP_VS_PROTO_AH=y
#
# IPVS scheduler
#CONFIG_IP_VS_RR=m
# CONFIG_IP_VS_WRR is not setCONFIG_IP_VS_LC=yCONFIG_IP_VS_WLC=m
# CONFIG_IP_VS_LBLC is not set
# CONFIG_IP_VS_LBLCR is not setCONFIG_IP_VS_DH=yCONFIG_IP_VS_SH=y
# CONFIG_IP_VS_SED is not setCONFIG_IP_VS_NQ=y
#
# IPVS application helper
#
# CONFIG_IP_VS_FTP is not set
#
# IP: Netfilter Configuration
#
# CONFIG_NF_DEFRAG_IPV4 is not set
# CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration
#
# CONFIG_IP6_NF_QUEUE is not set
# CONFIG_IP6_NF_IPTABLES is not setCONFIG_BRIDGE_NF_EBTABLES=mCONFIG_BRIDGE_EBT_BROUTE=mCONFIG_BRIDGE_EBT_T_FILTER=m
# CONFIG_BRIDGE_EBT_T_NAT is not setCONFIG_BRIDGE_EBT_802_3=m
# CONFIG_BRIDGE_EBT_AMONG is not setCONFIG_BRIDGE_EBT_ARP=m
# CONFIG_BRIDGE_EBT_IP is not set
# CONFIG_BRIDGE_EBT_IP6 is not set
# CONFIG_BRIDGE_EBT_LIMIT is not set
# CONFIG_BRIDGE_EBT_MARK is not setCONFIG_BRIDGE_EBT_PKTTYPE=mCONFIG_BRIDGE_EBT_STP=mCONFIG_BRIDGE_EBT_VLAN=m
# CONFIG_BRIDGE_EBT_ARPREPLY is not setCONFIG_BRIDGE_EBT_DNAT=mCONFIG_BRIDGE_EBT_MARK_T=mCONFIG_BRIDGE_EBT_REDIRECT=m
# CONFIG_BRIDGE_EBT_SNAT is not set
# CONFIG_BRIDGE_EBT_LOG is not setCONFIG_BRIDGE_EBT_ULOG=mCONFIG_BRIDGE_EBT_NFLOG=m
# CONFIG_IP_DCCP is not setCONFIG_IP_SCTP=y
# CONFIG_SCTP_DBG_MSG is not setCONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_SCTP_HMAC_NONE is not setCONFIG_SCTP_HMAC_SHA1=y
# CONFIG_SCTP_HMAC_MD5 is not setCONFIG_RDS=mCONFIG_RDS_DEBUG=y
# CONFIG_TIPC is not set
# CONFIG_ATM is not setCONFIG_STP=yCONFIG_BRIDGE=yCONFIG_NET_DSA=y
# CONFIG_NET_DSA_TAG_DSA is not setCONFIG_NET_DSA_TAG_EDSA=yCONFIG_NET_DSA_TAG_TRAILER=yCONFIG_NET_DSA_MV88E6XXX=yCONFIG_NET_DSA_MV88E6060=y
# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
# CONFIG_NET_DSA_MV88E6131 is not setCONFIG_NET_DSA_MV88E6123_61_65=y
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not setCONFIG_LLC=yCONFIG_LLC2=mCONFIG_IPX=mCONFIG_IPX_INTERN=y
# CONFIG_ATALK is not setCONFIG_X25=y
# CONFIG_LAPB is not setCONFIG_ECONET=mCONFIG_ECONET_AUNUDP=yCONFIG_ECONET_NATIVE=yCONFIG_WAN_ROUTER=mCONFIG_PHONET=m
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not setCONFIG_NET_TCPPROBE=mCONFIG_NET_DROP_MONITOR=y
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not setCONFIG_BT=mCONFIG_BT_L2CAP=mCONFIG_BT_SCO=mCONFIG_BT_RFCOMM=mCONFIG_BT_RFCOMM_TTY=yCONFIG_BT_BNEP=m
# CONFIG_BT_BNEP_MC_FILTER is not setCONFIG_BT_BNEP_PROTO_FILTER=y
# CONFIG_BT_CMTP is not setCONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#CONFIG_BT_HCIBTUSB=m
# CONFIG_BT_HCIBTSDIO is not set
# CONFIG_BT_HCIUART is not setCONFIG_BT_HCIBCM203X=mCONFIG_BT_HCIBPA10X=m
# CONFIG_BT_HCIBFUSB is not setCONFIG_BT_HCIDTL1=mCONFIG_BT_HCIBT3C=m
# CONFIG_BT_HCIBLUECARD is not setCONFIG_BT_HCIBTUART=mCONFIG_BT_HCIVHCI=mCONFIG_AF_RXRPC=yCONFIG_AF_RXRPC_DEBUG=y
# CONFIG_RXKAD is not setCONFIG_FIB_RULES=yCONFIG_WIRELESS=yCONFIG_CFG80211=yCONFIG_CFG80211_REG_DEBUG=yCONFIG_CFG80211_DEBUGFS=y
# CONFIG_WIRELESS_OLD_REGULATORY is not setCONFIG_WIRELESS_EXT=yCONFIG_WIRELESS_EXT_SYSFS=yCONFIG_LIB80211=yCONFIG_LIB80211_CRYPT_WEP=yCONFIG_LIB80211_CRYPT_CCMP=yCONFIG_LIB80211_CRYPT_TKIP=y
# CONFIG_LIB80211_DEBUG is not set
# CONFIG_MAC80211 is not setCONFIG_MAC80211_DEFAULT_PS_VALUE=0CONFIG_WIMAX=yCONFIG_WIMAX_DEBUG_LEVEL=8CONFIG_RFKILL=yCONFIG_RFKILL_INPUT=y
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"CONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=yCONFIG_FW_LOADER=yCONFIG_FIRMWARE_IN_KERNEL=yCONFIG_EXTRA_FIRMWARE=""CONFIG_DEBUG_DRIVER=yCONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not setCONFIG_CONNECTOR=y
# CONFIG_PROC_EVENTS is not setCONFIG_PARPORT=yCONFIG_PARPORT_PC=yCONFIG_PARPORT_SERIAL=mCONFIG_PARPORT_PC_FIFO=yCONFIG_PARPORT_PC_SUPERIO=y
# CONFIG_PARPORT_PC_PCMCIA is not set
# CONFIG_PARPORT_GSC is not setCONFIG_PARPORT_AX88796=mCONFIG_PARPORT_1284=yCONFIG_PARPORT_NOT_PC=yCONFIG_PNP=yCONFIG_PNP_DEBUG_MESSAGES=y
#
# Protocols
#CONFIG_PNPACPI=yCONFIG_BLK_DEV=yCONFIG_BLK_DEV_FD=yCONFIG_BLK_CPQ_DA=y
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not setCONFIG_BLK_DEV_UMEM=m
# CONFIG_BLK_DEV_COW_COMMON is not setCONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not setCONFIG_BLK_DEV_NBD=mCONFIG_BLK_DEV_SX8=mCONFIG_BLK_DEV_UB=y
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not setCONFIG_ATA_OVER_ETH=mCONFIG_VIRTIO_BLK=mCONFIG_BLK_DEV_HD=yCONFIG_MISC_DEVICES=yCONFIG_IBM_ASM=yCONFIG_PHANTOM=m
# CONFIG_SGI_IOC4 is not setCONFIG_TIFM_CORE=y
# CONFIG_TIFM_7XX1 is not setCONFIG_ENCLOSURE_SERVICES=mCONFIG_HP_ILO=yCONFIG_C2PORT=m
# CONFIG_C2PORT_DURAMAR_2150 is not set
#
# EEPROM support
#
# CONFIG_EEPROM_93CX6 is not setCONFIG_CB710_CORE=yCONFIG_CB710_DEBUG=yCONFIG_CB710_DEBUG_ASSUMPTIONS=yCONFIG_HAVE_IDE=y
#
# SCSI device support
#CONFIG_RAID_ATTRS=yCONFIG_SCSI=yCONFIG_SCSI_DMA=yCONFIG_SCSI_TGT=yCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=yCONFIG_CHR_DEV_ST=mCONFIG_CHR_DEV_OSST=yCONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SR_VENDOR is not setCONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_ENCLOSURE is not setCONFIG_SCSI_MULTI_LUN=yCONFIG_SCSI_CONSTANTS=yCONFIG_SCSI_LOGGING=yCONFIG_SCSI_SCAN_ASYNC=yCONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=y
# CONFIG_SCSI_FC_TGT_ATTRS is not setCONFIG_SCSI_ISCSI_ATTRS=yCONFIG_SCSI_SAS_ATTRS=mCONFIG_SCSI_SAS_LIBSAS=mCONFIG_SCSI_SAS_ATA=y
# CONFIG_SCSI_SAS_HOST_SMP is not set
# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not setCONFIG_SCSI_SRP_ATTRS=mCONFIG_SCSI_SRP_TGT_ATTRS=y
# CONFIG_SCSI_LOWLEVEL is not setCONFIG_SCSI_AIC7XXX=y
# CONFIG_SCSI_LOWLEVEL_PCMCIA is not setCONFIG_SCSI_DH=m
# CONFIG_SCSI_DH_RDAC is not set
# CONFIG_SCSI_DH_HP_SW is not set
# CONFIG_SCSI_DH_EMC is not setCONFIG_SCSI_DH_ALUA=m
# CONFIG_SCSI_OSD_INITIATOR is not setCONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
# CONFIG_ATA_ACPI is not setCONFIG_SATA_PMP=yCONFIG_SATA_AHCI=yCONFIG_SATA_SIL24=yCONFIG_ATA_SFF=yCONFIG_SATA_SVW=mCONFIG_ATA_PIIX=yCONFIG_SATA_MV=yCONFIG_SATA_NV=yCONFIG_PDC_ADMA=mCONFIG_SATA_QSTOR=mCONFIG_SATA_PROMISE=yCONFIG_SATA_SX4=mCONFIG_SATA_SIL=y
# CONFIG_SATA_SIS is not setCONFIG_SATA_ULI=yCONFIG_SATA_VIA=m
# CONFIG_SATA_VITESSE is not set
# CONFIG_SATA_INIC162X is not setCONFIG_PATA_ALI=mCONFIG_PATA_AMD=yCONFIG_PATA_ARTOP=yCONFIG_PATA_ATIIXP=yCONFIG_PATA_CMD640_PCI=yCONFIG_PATA_CMD64X=yCONFIG_PATA_CS5520=m
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CYPRESS is not setCONFIG_PATA_EFAR=y
# CONFIG_ATA_GENERIC is not setCONFIG_PATA_HPT366=mCONFIG_PATA_HPT37X=y
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not setCONFIG_PATA_IT821X=mCONFIG_PATA_IT8213=yCONFIG_PATA_JMICRON=m
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MARVELL is not setCONFIG_PATA_MPIIX=mCONFIG_PATA_OLDPIIX=yCONFIG_PATA_NETCELL=y
# CONFIG_PATA_NINJA32 is not setCONFIG_PATA_NS87410=m
# CONFIG_PATA_NS87415 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PCMCIA is not set
# CONFIG_PATA_PDC_OLD is not setCONFIG_PATA_RADISYS=yCONFIG_PATA_RZ1000=yCONFIG_PATA_SC1200=yCONFIG_PATA_SERVERWORKS=m
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not setCONFIG_PATA_SIS=mCONFIG_PATA_VIA=y
# CONFIG_PATA_WINBOND is not setCONFIG_PATA_PLATFORM=m
# CONFIG_PATA_SCH is not setCONFIG_MD=yCONFIG_BLK_DEV_MD=m
# CONFIG_MD_LINEAR is not setCONFIG_MD_RAID0=mCONFIG_MD_RAID1=mCONFIG_MD_RAID10=mCONFIG_MD_RAID456=mCONFIG_MD_RAID6_PQ=mCONFIG_MD_MULTIPATH=m
# CONFIG_MD_FAULTY is not setCONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not setCONFIG_DM_CRYPT=mCONFIG_DM_SNAPSHOT=m
# CONFIG_DM_MIRROR is not setCONFIG_DM_ZERO=mCONFIG_DM_MULTIPATH=mCONFIG_DM_MULTIPATH_QL=mCONFIG_DM_MULTIPATH_ST=mCONFIG_DM_DELAY=mCONFIG_DM_UEVENT=yCONFIG_FUSION=y
# CONFIG_FUSION_SPI is not setCONFIG_FUSION_FC=yCONFIG_FUSION_SAS=mCONFIG_FUSION_MAX_SGE=128CONFIG_FUSION_CTL=mCONFIG_FUSION_LAN=mCONFIG_FUSION_LOGGING=y
#
# IEEE 1394 (FireWire) support
#
#
# You can enable one or both FireWire driver stacks. #
#
# See the help texts for more information.
#CONFIG_FIREWIRE=yCONFIG_FIREWIRE_OHCI=yCONFIG_FIREWIRE_OHCI_DEBUG=y
# CONFIG_FIREWIRE_SBP2 is not set
# CONFIG_FIREWIRE_NET is not set
# CONFIG_IEEE1394 is not setCONFIG_I2O=mCONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
# CONFIG_I2O_EXT_ADAPTEC is not setCONFIG_I2O_BUS=m
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
# CONFIG_MACINTOSH_DRIVERS is not setCONFIG_NETDEVICES=y
# CONFIG_DUMMY is not setCONFIG_BONDING=yCONFIG_MACVLAN=mCONFIG_EQUALIZER=yCONFIG_TUN=mCONFIG_VETH=yCONFIG_NET_SB1000=m
# CONFIG_ARCNET is not setCONFIG_PHYLIB=y
#
# MII PHY device drivers
#CONFIG_MARVELL_PHY=mCONFIG_DAVICOM_PHY=yCONFIG_QSEMI_PHY=mCONFIG_LXT_PHY=yCONFIG_CICADA_PHY=mCONFIG_VITESSE_PHY=mCONFIG_SMSC_PHY=yCONFIG_BROADCOM_PHY=yCONFIG_ICPLUS_PHY=m
# CONFIG_REALTEK_PHY is not set CONFIG_NATIONAL_PHY=yCONFIG_STE10XP=m
# CONFIG_LSI_ET1011C_PHY is not set CONFIG_FIXED_PHY=yCONFIG_MDIO_BITBANG=y CONFIG_NET_ETHERNET=yCONFIG_MII=y
# CONFIG_HAPPYMEAL is not set CONFIG_SUNGEM=mCONFIG_CASSINI=mCONFIG_NET_VENDOR_3COM=yCONFIG_VORTEX=y
# CONFIG_TYPHOON is not set
# CONFIG_ETHOC is not set
# CONFIG_DNET is not set CONFIG_NET_TULIP=yCONFIG_DE2104X=yCONFIG_DE2104X_DSL=0CONFIG_TULIP=mCONFIG_TULIP_MWI=yCONFIG_TULIP_MMIO=yCONFIG_TULIP_NAPI=y CONFIG_TULIP_NAPI_HW_MITIGATION=y CONFIG_DE4X5=y
# CONFIG_WINBOND_840 is not set CONFIG_DM9102=mCONFIG_ULI526X=yCONFIG_PCMCIA_XIRCOM=mCONFIG_HP100=y
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set CONFIG_AMD8111_ETH=y CONFIG_ADAPTEC_STARFIRE=y
# CONFIG_B44 is not setCONFIG_FORCEDETH=yCONFIG_FORCEDETH_NAPI=yCONFIG_E100=yCONFIG_FEALNX=yCONFIG_NATSEMI=y
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set CONFIG_8139TOO=yCONFIG_8139TOO_PIO=y CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_8139TOO_8129=y CONFIG_8139_OLD_RX_RESET=y
# CONFIG_R6040 is not setCONFIG_SIS900=y
# CONFIG_EPIC100 is not set CONFIG_SMSC9420=y
# CONFIG_SUNDANCE is not setCONFIG_TLAN=m
# CONFIG_KS8842 is not set CONFIG_VIA_RHINE=yCONFIG_VIA_RHINE_MMIO=yCONFIG_SC92031=mCONFIG_NET_POCKET=yCONFIG_ATP=yCONFIG_DE600=mCONFIG_DE620=mCONFIG_ATL2=mCONFIG_NETDEV_1000=yCONFIG_ACENIC=y
# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not setCONFIG_E1000E=y
# CONFIG_IP1000 is not setCONFIG_IGB=yCONFIG_IGBVF=mCONFIG_NS83820=y
# CONFIG_HAMACHI is not set CONFIG_YELLOWFIN=yCONFIG_R8169=mCONFIG_SIS190=mCONFIG_SKGE=yCONFIG_SKGE_DEBUG=yCONFIG_SKY2=yCONFIG_SKY2_DEBUG=yCONFIG_VIA_VELOCITY=mCONFIG_TIGON3=yCONFIG_BNX2=m
# CONFIG_QLA3XXX is not setCONFIG_ATL1=yCONFIG_ATL1E=mCONFIG_ATL1C=yCONFIG_JME=y
# CONFIG_NETDEV_10000 is not set CONFIG_MLX4_CORE=mCONFIG_TR=mCONFIG_IBMOL=mCONFIG_3C359=mCONFIG_TMS380TR=mCONFIG_TMSPCI=mCONFIG_ABYSS=m
#
# Wireless LAN
#CONFIG_WLAN_PRE80211=yCONFIG_STRIP=mCONFIG_PCMCIA_WAVELAN=yCONFIG_PCMCIA_NETWAVE=mCONFIG_WLAN_80211=yCONFIG_PCMCIA_RAYCS=yCONFIG_LIBERTAS=yCONFIG_LIBERTAS_USB=y
# CONFIG_LIBERTAS_CS is not setCONFIG_LIBERTAS_SDIO=y
# CONFIG_LIBERTAS_DEBUG is not set
# CONFIG_AIRO is not set
# CONFIG_ATMEL is not setCONFIG_AIRO_CS=mCONFIG_PCMCIA_WL3501=mCONFIG_PRISM54=m
# CONFIG_USB_ZD1201 is not setCONFIG_USB_NET_RNDIS_WLAN=yCONFIG_IPW2100=yCONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG is not setCONFIG_IPW2200=y
# CONFIG_IPW2200_MONITOR is not setCONFIG_IPW2200_QOS=yCONFIG_IPW2200_DEBUG=yCONFIG_LIBIPW=yCONFIG_LIBIPW_DEBUG=yCONFIG_HOSTAP=m
# CONFIG_HOSTAP_FIRMWARE is not setCONFIG_HOSTAP_PLX=mCONFIG_HOSTAP_PCI=m
# CONFIG_HOSTAP_CS is not setCONFIG_HERMES=mCONFIG_HERMES_CACHE_FW_ON_INIT=yCONFIG_PLX_HERMES=mCONFIG_TMD_HERMES=mCONFIG_NORTEL_HERMES=m
# CONFIG_PCI_HERMES is not set
# CONFIG_PCMCIA_HERMES is not setCONFIG_PCMCIA_SPECTRUM=mCONFIG_IWM=mCONFIG_IWM_DEBUG=y
#
# WiMAX Wireless Broadband devices
#CONFIG_WIMAX_I2400M=mCONFIG_WIMAX_I2400M_SDIO=mCONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
#
# USB Network Adapters
#CONFIG_USB_CATC=mCONFIG_USB_KAWETH=mCONFIG_USB_PEGASUS=mCONFIG_USB_RTL8150=yCONFIG_USB_USBNET=yCONFIG_USB_NET_AX8817X=yCONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_CDC_EEM is not setCONFIG_USB_NET_DM9601=y
# CONFIG_USB_NET_SMSC95XX is not setCONFIG_USB_NET_GL620A=yCONFIG_USB_NET_NET1080=mCONFIG_USB_NET_PLUSB=mCONFIG_USB_NET_MCS7830=yCONFIG_USB_NET_RNDIS_HOST=y
# CONFIG_USB_NET_CDC_SUBSET is not setCONFIG_USB_NET_ZAURUS=mCONFIG_USB_HSO=mCONFIG_USB_NET_INT51X1=m
# CONFIG_USB_CDC_PHONET is not setCONFIG_NET_PCMCIA=yCONFIG_PCMCIA_3C589=y
# CONFIG_PCMCIA_3C574 is not set
# CONFIG_PCMCIA_FMVJ18X is not setCONFIG_PCMCIA_PCNET=m
# CONFIG_PCMCIA_NMCLAN is not setCONFIG_PCMCIA_SMC91C92=mCONFIG_PCMCIA_XIRC2PS=yCONFIG_PCMCIA_AXNET=yCONFIG_PCMCIA_IBMTR=m
# CONFIG_WAN is not setCONFIG_FDDI=yCONFIG_DEFXX=mCONFIG_DEFXX_MMIO=yCONFIG_SKFP=yCONFIG_HIPPI=y
# CONFIG_ROADRUNNER is not set
# CONFIG_PLIP is not setCONFIG_PPP=mCONFIG_PPP_MULTILINK=y
# CONFIG_PPP_FILTER is not setCONFIG_PPP_ASYNC=mCONFIG_PPP_SYNC_TTY=m
# CONFIG_PPP_DEFLATE is not setCONFIG_PPP_BSDCOMP=mCONFIG_PPP_MPPE=m
# CONFIG_PPPOE is not setCONFIG_PPPOL2TP=mCONFIG_SLIP=yCONFIG_SLIP_COMPRESSED=yCONFIG_SLHC=yCONFIG_SLIP_SMART=yCONFIG_SLIP_MODE_SLIP6=yCONFIG_NET_FC=yCONFIG_NETCONSOLE=yCONFIG_NETCONSOLE_DYNAMIC=yCONFIG_NETPOLL=yCONFIG_NETPOLL_TRAP=yCONFIG_NET_POLL_CONTROLLER=yCONFIG_VIRTIO_NET=yCONFIG_ISDN=y
# CONFIG_ISDN_I4L is not setCONFIG_ISDN_CAPI=yCONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
# CONFIG_CAPI_TRACE is not set
# CONFIG_ISDN_CAPI_MIDDLEWARE is not setCONFIG_ISDN_CAPI_CAPI20=y
#
# CAPI hardware drivers
#CONFIG_CAPI_AVM=y
# CONFIG_ISDN_DRV_AVMB1_B1PCI is not setCONFIG_ISDN_DRV_AVMB1_B1PCMCIA=y
# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set
# CONFIG_ISDN_DRV_AVMB1_T1PCI is not setCONFIG_ISDN_DRV_AVMB1_C4=yCONFIG_CAPI_EICON=yCONFIG_ISDN_DIVAS=yCONFIG_ISDN_DIVAS_BRIPCI=yCONFIG_ISDN_DIVAS_PRIPCI=y
# CONFIG_ISDN_DIVAS_DIVACAPI is not set
# CONFIG_ISDN_DIVAS_USERIDI is not setCONFIG_ISDN_DIVAS_MAINT=m
# CONFIG_PHONE is not set
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_FF_MEMLESS=yCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768CONFIG_INPUT_JOYDEV=mCONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_KEYBOARD_LKKBD=y
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not setCONFIG_KEYBOARD_SUNKBD=yCONFIG_KEYBOARD_XTKBD=yCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=mCONFIG_MOUSE_PS2_ALPS=y
# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
# CONFIG_MOUSE_PS2_SYNAPTICS is not setCONFIG_MOUSE_PS2_LIFEBOOK=yCONFIG_MOUSE_PS2_TRACKPOINT=yCONFIG_MOUSE_PS2_ELANTECH=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not setCONFIG_MOUSE_APPLETOUCH=mCONFIG_MOUSE_BCM5974=y
# CONFIG_MOUSE_VSXXXAA is not setCONFIG_INPUT_JOYSTICK=yCONFIG_JOYSTICK_ANALOG=yCONFIG_JOYSTICK_A3D=mCONFIG_JOYSTICK_ADI=y
# CONFIG_JOYSTICK_COBRA is not setCONFIG_JOYSTICK_GF2K=mCONFIG_JOYSTICK_GRIP=yCONFIG_JOYSTICK_GRIP_MP=mCONFIG_JOYSTICK_GUILLEMOT=mCONFIG_JOYSTICK_INTERACT=yCONFIG_JOYSTICK_SIDEWINDER=yCONFIG_JOYSTICK_TMDC=yCONFIG_JOYSTICK_IFORCE=m
# CONFIG_JOYSTICK_IFORCE_USB is not setCONFIG_JOYSTICK_IFORCE_232=y
# CONFIG_JOYSTICK_WARRIOR is not setCONFIG_JOYSTICK_MAGELLAN=y
# CONFIG_JOYSTICK_SPACEORB is not set
# CONFIG_JOYSTICK_SPACEBALL is not setCONFIG_JOYSTICK_STINGER=m
# CONFIG_JOYSTICK_TWIDJOY is not setCONFIG_JOYSTICK_ZHENHUA=m
# CONFIG_JOYSTICK_DB9 is not setCONFIG_JOYSTICK_GAMECON=yCONFIG_JOYSTICK_TURBOGRAFX=mCONFIG_JOYSTICK_JOYDUMP=yCONFIG_JOYSTICK_XPAD=yCONFIG_JOYSTICK_XPAD_FF=y
# CONFIG_JOYSTICK_WALKERA0701 is not setCONFIG_INPUT_TABLET=y
# CONFIG_TABLET_USB_ACECAD is not setCONFIG_TABLET_USB_AIPTEK=mCONFIG_TABLET_USB_GTCO=mCONFIG_TABLET_USB_KBTAB=y
# CONFIG_TABLET_USB_WACOM is not set
# CONFIG_INPUT_TOUCHSCREEN is not setCONFIG_INPUT_MISC=y
# CONFIG_INPUT_PCSPKR is not setCONFIG_INPUT_ATLAS_BTNS=mCONFIG_INPUT_ATI_REMOTE=y
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not setCONFIG_INPUT_POWERMATE=y
# CONFIG_INPUT_YEALINK is not setCONFIG_INPUT_CM109=mCONFIG_INPUT_UINPUT=m
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not setCONFIG_SERIO_CT82C710=yCONFIG_SERIO_PARKBD=mCONFIG_SERIO_PCIPS2=mCONFIG_SERIO_LIBPS2=yCONFIG_SERIO_RAW=yCONFIG_GAMEPORT=yCONFIG_GAMEPORT_NS558=mCONFIG_GAMEPORT_L4=yCONFIG_GAMEPORT_EMU10K1=y
# CONFIG_GAMEPORT_FM801 is not set
#
# Character devices
#CONFIG_VT=y
# CONFIG_CONSOLE_TRANSLATIONS is not setCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_DEVKMEM is not setCONFIG_SERIAL_NONSTANDARD=yCONFIG_COMPUTONE=mCONFIG_ROCKETPORT=yCONFIG_CYCLADES=y
# CONFIG_CYZ_INTR is not setCONFIG_DIGIEPCA=y
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not setCONFIG_SYNCLINK=yCONFIG_SYNCLINKMP=yCONFIG_SYNCLINK_GT=mCONFIG_N_HDLC=mCONFIG_RISCOM8=m
# CONFIG_SPECIALIX is not setCONFIG_SX=mCONFIG_RIO=yCONFIG_RIO_OLDPCI=y
# CONFIG_STALDRV is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#CONFIG_SERIAL_8250=yCONFIG_SERIAL_8250_CONSOLE=yCONFIG_FIX_EARLYCON_MEM=yCONFIG_SERIAL_8250_PCI=mCONFIG_SERIAL_8250_PNP=yCONFIG_SERIAL_8250_CS=yCONFIG_SERIAL_8250_NR_UARTS=4CONFIG_SERIAL_8250_RUNTIME_UARTS=4CONFIG_SERIAL_8250_EXTENDED=yCONFIG_SERIAL_8250_MANY_PORTS=yCONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not setCONFIG_SERIAL_8250_RSA=y
#
# Non-8250 serial port support
#CONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=yCONFIG_CONSOLE_POLL=yCONFIG_SERIAL_JSM=mCONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not setCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256CONFIG_PRINTER=mCONFIG_LP_CONSOLE=yCONFIG_PPDEV=mCONFIG_HVC_DRIVER=yCONFIG_VIRTIO_CONSOLE=yCONFIG_IPMI_HANDLER=yCONFIG_IPMI_PANIC_EVENT=yCONFIG_IPMI_PANIC_STRING=yCONFIG_IPMI_DEVICE_INTERFACE=yCONFIG_IPMI_SI=m
# CONFIG_IPMI_WATCHDOG is not set
# CONFIG_IPMI_POWEROFF is not set
# CONFIG_HW_RANDOM is not setCONFIG_NVRAM=y
# CONFIG_RTC is not setCONFIG_GEN_RTC=mCONFIG_GEN_RTC_X=y
# CONFIG_R3964 is not setCONFIG_APPLICOM=y
#
# PCMCIA character devices
#CONFIG_SYNCLINK_CS=m
# CONFIG_CARDMAN_4000 is not set
# CONFIG_CARDMAN_4040 is not set
# CONFIG_IPWIRELESS is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_RAW_DRIVER is not setCONFIG_HPET=yCONFIG_HPET_MMAP=yCONFIG_HANGCHECK_TIMER=mCONFIG_TCG_TPM=yCONFIG_TCG_TIS=yCONFIG_TCG_NSC=mCONFIG_TCG_ATMEL=mCONFIG_TCG_INFINEON=mCONFIG_TELCLOCK=mCONFIG_DEVPORT=y
# CONFIG_I2C is not set
# CONFIG_SPI is not set
#
# PPS support
#CONFIG_PPS=yCONFIG_PPS_DEBUG=yCONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not setCONFIG_POWER_SUPPLY=yCONFIG_POWER_SUPPLY_DEBUG=y
# CONFIG_PDA_POWER is not set
# CONFIG_BATTERY_DS2760 is not setCONFIG_HWMON=mCONFIG_HWMON_VID=mCONFIG_SENSORS_ABITUGURU=mCONFIG_SENSORS_ABITUGURU3=mCONFIG_SENSORS_K8TEMP=m
# CONFIG_SENSORS_ATK0110 is not setCONFIG_SENSORS_I5K_AMB=mCONFIG_SENSORS_F71805F=mCONFIG_SENSORS_F71882FG=mCONFIG_SENSORS_CORETEMP=m
# CONFIG_SENSORS_IBMAEM is not set
# CONFIG_SENSORS_IBMPEX is not setCONFIG_SENSORS_IT87=m
# CONFIG_SENSORS_PC87360 is not setCONFIG_SENSORS_PC87427=m
# CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_SMSC47M1 is not setCONFIG_SENSORS_SMSC47B397=m
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not setCONFIG_SENSORS_W83627HF=mCONFIG_SENSORS_W83627EHF=mCONFIG_SENSORS_HDAPS=mCONFIG_SENSORS_LIS3LV02D=m
# CONFIG_SENSORS_APPLESMC is not setCONFIG_HWMON_DEBUG_CHIP=yCONFIG_THERMAL=m
# CONFIG_THERMAL_HWMON is not setCONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not setCONFIG_ACQUIRE_WDT=yCONFIG_ADVANTECH_WDT=mCONFIG_ALIM1535_WDT=m
# CONFIG_ALIM7101_WDT is not setCONFIG_SC520_WDT=mCONFIG_IB700_WDT=yCONFIG_IBMASR=mCONFIG_WAFER_WDT=mCONFIG_I6300ESB_WDT=mCONFIG_ITCO_WDT=mCONFIG_ITCO_VENDOR_SUPPORT=yCONFIG_IT8712F_WDT=yCONFIG_IT87_WDT=m
# CONFIG_HP_WATCHDOG is not set
# CONFIG_SC1200_WDT is not setCONFIG_PC87413_WDT=mCONFIG_60XX_WDT=mCONFIG_SBC8360_WDT=mCONFIG_CPU5_WDT=mCONFIG_SMSC_SCH311X_WDT=mCONFIG_SMSC37B787_WDT=mCONFIG_W83627HF_WDT=m
# CONFIG_W83697HF_WDT is not setCONFIG_W83697UG_WDT=mCONFIG_W83877F_WDT=yCONFIG_W83977F_WDT=yCONFIG_MACHZ_WDT=yCONFIG_SBC_EPX_C3_WATCHDOG=m
#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not setCONFIG_WDTPCI=y
#
# USB-based Watchdog Cards
#CONFIG_USBPCWATCHDOG=mCONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
#
# Multifunction device drivers
#CONFIG_MFD_CORE=yCONFIG_MFD_SM501=yCONFIG_HTC_PASIC3=y
# CONFIG_MFD_TMIO is not setCONFIG_REGULATOR=yCONFIG_REGULATOR_DEBUG=yCONFIG_REGULATOR_FIXED_VOLTAGE=y
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not setCONFIG_REGULATOR_USERSPACE_CONSUMER=m
# CONFIG_REGULATOR_BQ24022 is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#CONFIG_AGP=yCONFIG_AGP_AMD64=y
# CONFIG_AGP_INTEL is not setCONFIG_AGP_SIS=yCONFIG_AGP_VIA=y
# CONFIG_DRM is not set
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_FB is not setCONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not setCONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not setCONFIG_BACKLIGHT_PROGEAR=m
# CONFIG_BACKLIGHT_MBP_NVIDIA is not setCONFIG_BACKLIGHT_SAHARA=y
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=m
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=yCONFIG_VGACON_SOFT_SCROLLBACK=yCONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64CONFIG_DUMMY_CONSOLE=y
CONFIG_FONT_8x16=yCONFIG_SOUND=yCONFIG_SOUND_OSS_CORE=yCONFIG_SND=mCONFIG_SND_TIMER=mCONFIG_SND_PCM=mCONFIG_SND_HWDEP=mCONFIG_SND_RAWMIDI=mCONFIG_SND_JACK=yCONFIG_SND_SEQUENCER=mCONFIG_SND_SEQ_DUMMY=mCONFIG_SND_OSSEMUL=yCONFIG_SND_MIXER_OSS=mCONFIG_SND_PCM_OSS=mCONFIG_SND_PCM_OSS_PLUGINS=yCONFIG_SND_SEQUENCER_OSS=yCONFIG_SND_HRTIMER=mCONFIG_SND_SEQ_HRTIMER_DEFAULT=yCONFIG_SND_DYNAMIC_MINORS=y
# CONFIG_SND_SUPPORT_OLD_API is not setCONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not setCONFIG_SND_DEBUG=yCONFIG_SND_DEBUG_VERBOSE=yCONFIG_SND_PCM_XRUN_DEBUG=yCONFIG_SND_VMASTER=yCONFIG_SND_RAWMIDI_SEQ=mCONFIG_SND_OPL3_LIB_SEQ=m
# CONFIG_SND_OPL4_LIB_SEQ is not set
# CONFIG_SND_SBAWE_SEQ is not setCONFIG_SND_EMU10K1_SEQ=mCONFIG_SND_MPU401_UART=mCONFIG_SND_OPL3_LIB=mCONFIG_SND_VX_LIB=mCONFIG_SND_AC97_CODEC=mCONFIG_SND_DRIVERS=yCONFIG_SND_PCSP=m
# CONFIG_SND_DUMMY is not setCONFIG_SND_VIRMIDI=m
# CONFIG_SND_MTS64 is not set
# CONFIG_SND_SERIAL_U16550 is not setCONFIG_SND_MPU401=mCONFIG_SND_PORTMAN2X4=mCONFIG_SND_AC97_POWER_SAVE=yCONFIG_SND_AC97_POWER_SAVE_DEFAULT=0CONFIG_SND_SB_COMMON=mCONFIG_SND_SB16_DSP=mCONFIG_SND_PCI=y
# CONFIG_SND_AD1889 is not setCONFIG_SND_ALS300=m
# CONFIG_SND_ALS4000 is not setCONFIG_SND_ALI5451=mCONFIG_SND_ATIIXP=m
# CONFIG_SND_ATIIXP_MODEM is not setCONFIG_SND_AU8810=mCONFIG_SND_AU8820=m
# CONFIG_SND_AU8830 is not setCONFIG_SND_AW2=mCONFIG_SND_AZT3328=m
# CONFIG_SND_BT87X is not setCONFIG_SND_CA0106=m
# CONFIG_SND_CMIPCI is not setCONFIG_SND_OXYGEN_LIB=m
# CONFIG_SND_OXYGEN is not setCONFIG_SND_CS4281=mCONFIG_SND_CS46XX=m
# CONFIG_SND_CS46XX_NEW_DSP is not setCONFIG_SND_CS5530=mCONFIG_SND_CTXFI=m
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not setCONFIG_SND_LAYLA20=mCONFIG_SND_DARLA24=m
# CONFIG_SND_GINA24 is not setCONFIG_SND_LAYLA24=mCONFIG_SND_MONA=mCONFIG_SND_MIA=mCONFIG_SND_ECHO3G=m
# CONFIG_SND_INDIGO is not setCONFIG_SND_INDIGOIO=mCONFIG_SND_INDIGODJ=mCONFIG_SND_INDIGOIOX=mCONFIG_SND_INDIGODJX=mCONFIG_SND_EMU10K1=mCONFIG_SND_EMU10K1X=mCONFIG_SND_ENS1370=mCONFIG_SND_ENS1371=mCONFIG_SND_ES1938=mCONFIG_SND_ES1968=mCONFIG_SND_FM801=mCONFIG_SND_HDA_INTEL=m
# CONFIG_SND_HDA_HWDEP is not set
# CONFIG_SND_HDA_INPUT_BEEP is not setCONFIG_SND_HDA_INPUT_JACK=y
# CONFIG_SND_HDA_CODEC_REALTEK is not set
# CONFIG_SND_HDA_CODEC_ANALOG is not setCONFIG_SND_HDA_CODEC_SIGMATEL=y
# CONFIG_SND_HDA_CODEC_VIA is not setCONFIG_SND_HDA_CODEC_ATIHDMI=yCONFIG_SND_HDA_CODEC_NVHDMI=yCONFIG_SND_HDA_CODEC_INTELHDMI=yCONFIG_SND_HDA_ELD=yCONFIG_SND_HDA_CODEC_CONEXANT=yCONFIG_SND_HDA_CODEC_CA0110=yCONFIG_SND_HDA_CODEC_CMEDIA=yCONFIG_SND_HDA_CODEC_SI3054=yCONFIG_SND_HDA_GENERIC=yCONFIG_SND_HDA_POWER_SAVE=yCONFIG_SND_HDA_POWER_SAVE_DEFAULT=0CONFIG_SND_HDSP=m
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_HIFIER is not setCONFIG_SND_ICE1712=mCONFIG_SND_ICE1724=mCONFIG_SND_INTEL8X0=mCONFIG_SND_INTEL8X0M=m
# CONFIG_SND_KORG1212 is not setCONFIG_SND_LX6464ES=mCONFIG_SND_MAESTRO3=mCONFIG_SND_MIXART=m
# CONFIG_SND_NM256 is not setCONFIG_SND_PCXHR=m
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not setCONFIG_SND_RME96=m
# CONFIG_SND_RME9652 is not setCONFIG_SND_SONICVIBES=mCONFIG_SND_TRIDENT=m
# CONFIG_SND_VIA82XX is not setCONFIG_SND_VIA82XX_MODEM=mCONFIG_SND_VIRTUOSO=mCONFIG_SND_VX222=m
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_USB is not setCONFIG_SND_PCMCIA=yCONFIG_SND_VXPOCKET=mCONFIG_SND_PDAUDIOCF=mCONFIG_SND_SOC=mCONFIG_SND_SOC_ALL_CODECS=mCONFIG_SND_SOC_L3=mCONFIG_SND_SOC_PCM3008=mCONFIG_SND_SOC_SPDIF=mCONFIG_SND_SOC_UDA134X=m
# CONFIG_SOUND_PRIME is not setCONFIG_AC97_BUS=m
# CONFIG_HID_SUPPORT is not setCONFIG_HID=mCONFIG_USB_MOUSE=yCONFIG_USB_SUPPORT=yCONFIG_USB_ARCH_HAS_HCD=yCONFIG_USB_ARCH_HAS_OHCI=yCONFIG_USB_ARCH_HAS_EHCI=yCONFIG_USB=yCONFIG_USB_DEBUG=y
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICEFS is not set
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not setCONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not setCONFIG_USB_OTG_WHITELIST=yCONFIG_USB_OTG_BLACKLIST_HUB=yCONFIG_USB_MON=mCONFIG_USB_WUSB=y
# CONFIG_USB_WUSB_CBAF is not set
#
# USB Host Controller Drivers
#CONFIG_USB_C67X00_HCD=mCONFIG_USB_XHCI_HCD=y
# CONFIG_USB_XHCI_HCD_DEBUGGING is not setCONFIG_USB_EHCI_HCD=yCONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not setCONFIG_USB_OXU210HP_HCD=yCONFIG_USB_ISP116X_HCD=mCONFIG_USB_ISP1760_HCD=yCONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not setCONFIG_USB_OHCI_LITTLE_ENDIAN=yCONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not setCONFIG_USB_R8A66597_HCD=y
# CONFIG_USB_HWA_HCD is not set
#
# USB Device Class drivers
#CONFIG_USB_ACM=m
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_WDM is not set
# CONFIG_USB_TMC is not set
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may #
#
# also be needed; see USB_STORAGE Help for more info # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=m # CONFIG_USB_STORAGE_ISD200 is not set CONFIG_USB_STORAGE_USBAT=y # CONFIG_USB_STORAGE_SDDR09 is not set CONFIG_USB_STORAGE_SDDR55=y # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ONETOUCH is not set CONFIG_USB_STORAGE_KARMA=m CONFIG_USB_STORAGE_CYPRESS_ATACB=y CONFIG_USB_LIBUSUAL=y
#
# USB Imaging devices
#CONFIG_USB_MDC800=m
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
#
# CONFIG_USB_USS720 is not setCONFIG_USB_SERIAL=mCONFIG_USB_EZUSB=y
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_AIRCABLE is not setCONFIG_USB_SERIAL_ARK3116=mCONFIG_USB_SERIAL_BELKIN=mCONFIG_USB_SERIAL_CH341=mCONFIG_USB_SERIAL_WHITEHEAT=mCONFIG_USB_SERIAL_DIGI_ACCELEPORT=mCONFIG_USB_SERIAL_CP210X=mCONFIG_USB_SERIAL_CYPRESS_M8=mCONFIG_USB_SERIAL_EMPEG=mCONFIG_USB_SERIAL_FTDI_SIO=mCONFIG_USB_SERIAL_FUNSOFT=m
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not setCONFIG_USB_SERIAL_IR=m
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not setCONFIG_USB_SERIAL_GARMIN=m
# CONFIG_USB_SERIAL_IPW is not setCONFIG_USB_SERIAL_IUU=mCONFIG_USB_SERIAL_KEYSPAN_PDA=mCONFIG_USB_SERIAL_KEYSPAN=mCONFIG_USB_SERIAL_KEYSPAN_MPR=yCONFIG_USB_SERIAL_KEYSPAN_USA28=yCONFIG_USB_SERIAL_KEYSPAN_USA28X=y
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not setCONFIG_USB_SERIAL_KEYSPAN_USA28XB=yCONFIG_USB_SERIAL_KEYSPAN_USA19=yCONFIG_USB_SERIAL_KEYSPAN_USA18X=y
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not setCONFIG_USB_SERIAL_KEYSPAN_USA19QW=yCONFIG_USB_SERIAL_KEYSPAN_USA19QI=yCONFIG_USB_SERIAL_KEYSPAN_USA49W=y
# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not setCONFIG_USB_SERIAL_KLSI=mCONFIG_USB_SERIAL_KOBIL_SCT=mCONFIG_USB_SERIAL_MCT_U232=mCONFIG_USB_SERIAL_MOS7720=m
# CONFIG_USB_SERIAL_MOS7840 is not setCONFIG_USB_SERIAL_MOTOROLA=mCONFIG_USB_SERIAL_NAVMAN=mCONFIG_USB_SERIAL_PL2303=m
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_QUALCOMM is not setCONFIG_USB_SERIAL_SPCP8X5=mCONFIG_USB_SERIAL_HP4X=mCONFIG_USB_SERIAL_SAFE=m
# CONFIG_USB_SERIAL_SAFE_PADDED is not set
# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not setCONFIG_USB_SERIAL_SYMBOL=mCONFIG_USB_SERIAL_TI=mCONFIG_USB_SERIAL_CYBERJACK=m
# CONFIG_USB_SERIAL_XIRCOM is not setCONFIG_USB_SERIAL_OPTION=mCONFIG_USB_SERIAL_OMNINET=mCONFIG_USB_SERIAL_OPTICON=m
# CONFIG_USB_SERIAL_DEBUG is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not setCONFIG_USB_EMI26=mCONFIG_USB_ADUTUX=mCONFIG_USB_SEVSEG=yCONFIG_USB_RIO500=mCONFIG_USB_LEGOTOWER=y
# CONFIG_USB_LCD is not setCONFIG_USB_BERRY_CHARGE=yCONFIG_USB_LED=mCONFIG_USB_CYPRESS_CY7C63=mCONFIG_USB_CYTHERM=yCONFIG_USB_IDMOUSE=m
# CONFIG_USB_FTDI_ELAN is not setCONFIG_USB_APPLEDISPLAY=yCONFIG_USB_SISUSBVGA=yCONFIG_USB_SISUSBVGA_CON=y
# CONFIG_USB_LD is not setCONFIG_USB_TRANCEVIBRATOR=m
# CONFIG_USB_IOWARRIOR is not setCONFIG_USB_TEST=yCONFIG_USB_ISIGHTFW=yCONFIG_USB_VST=m
#
# OTG and related infrastructure
#CONFIG_USB_OTG_UTILS=yCONFIG_NOP_USB_XCEIV=mCONFIG_UWB=y
# CONFIG_UWB_HWA is not setCONFIG_UWB_WHCI=mCONFIG_UWB_WLP=mCONFIG_MMC=yCONFIG_MMC_DEBUG=yCONFIG_MMC_UNSAFE_RESUME=y
#
# MMC/SD/SDIO Card Drivers
#CONFIG_MMC_BLOCK=yCONFIG_MMC_BLOCK_BOUNCE=yCONFIG_SDIO_UART=mCONFIG_MMC_TEST=y
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_SDHCI is not setCONFIG_MMC_WBSD=yCONFIG_MMC_TIFM_SD=yCONFIG_MMC_SDRICOH_CS=yCONFIG_MMC_CB710=yCONFIG_MMC_VIA_SDMMC=mCONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set
#
# MemoryStick drivers
#
# CONFIG_MEMSTICK_UNSAFE_RESUME is not setCONFIG_MSPRO_BLOCK=m
#
# MemoryStick Host Controller Drivers
#CONFIG_MEMSTICK_TIFM_MS=mCONFIG_MEMSTICK_JMICRON_38X=mCONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=m
#
# LED drivers
#CONFIG_LEDS_ALIX2=mCONFIG_LEDS_CLEVO_MAIL=m
#
# LED Triggers
#
# CONFIG_LEDS_TRIGGERS is not set
# CONFIG_ACCESSIBILITY is not setCONFIG_INFINIBAND=mCONFIG_INFINIBAND_USER_MAD=mCONFIG_INFINIBAND_USER_ACCESS=mCONFIG_INFINIBAND_USER_MEM=yCONFIG_INFINIBAND_ADDR_TRANS=yCONFIG_INFINIBAND_MTHCA=mCONFIG_INFINIBAND_MTHCA_DEBUG=y
# CONFIG_INFINIBAND_IPATH is not setCONFIG_INFINIBAND_AMSO1100=mCONFIG_INFINIBAND_AMSO1100_DEBUG=yCONFIG_MLX4_INFINIBAND=mCONFIG_INFINIBAND_NES=mCONFIG_INFINIBAND_NES_DEBUG=yCONFIG_INFINIBAND_IPOIB=mCONFIG_INFINIBAND_IPOIB_CM=yCONFIG_INFINIBAND_IPOIB_DEBUG=yCONFIG_INFINIBAND_IPOIB_DEBUG_DATA=yCONFIG_INFINIBAND_SRP=mCONFIG_INFINIBAND_ISER=mCONFIG_EDAC=y
#
# Reporting subsystems
#CONFIG_EDAC_DEBUG=yCONFIG_EDAC_DEBUG_VERBOSE=yCONFIG_EDAC_MM_EDAC=m
# CONFIG_EDAC_AMD64 is not setCONFIG_EDAC_E752X=m
# CONFIG_EDAC_I82975X is not setCONFIG_EDAC_I3000=mCONFIG_EDAC_X38=m
# CONFIG_EDAC_I5400 is not set
# CONFIG_EDAC_I5000 is not set
# CONFIG_EDAC_I5100 is not set
# CONFIG_RTC_CLASS is not setCONFIG_DMADEVICES=y
#
# DMA Devices
#CONFIG_INTEL_IOATDMA=mCONFIG_DMA_ENGINE=y
#
# DMA Clients
#
# CONFIG_NET_DMA is not setCONFIG_ASYNC_TX_DMA=yCONFIG_DMATEST=mCONFIG_DCA=mCONFIG_AUXDISPLAY=y
# CONFIG_KS0108 is not setCONFIG_UIO=mCONFIG_UIO_CIF=m
# CONFIG_UIO_PDRV is not setCONFIG_UIO_PDRV_GENIRQ=m
# CONFIG_UIO_SMX is not setCONFIG_UIO_AEC=mCONFIG_UIO_SERCOS3=m
#
# TI VLYNQ
#CONFIG_X86_PLATFORM_DEVICES=y
# CONFIG_ACER_WMI is not set
# CONFIG_DELL_WMI is not set
# CONFIG_FUJITSU_LAPTOP is not setCONFIG_HP_WMI=y
# CONFIG_MSI_LAPTOP is not setCONFIG_PANASONIC_LAPTOP=yCONFIG_COMPAL_LAPTOP=yCONFIG_SONY_LAPTOP=yCONFIG_SONYPI_COMPAT=yCONFIG_THINKPAD_ACPI=mCONFIG_THINKPAD_ACPI_DEBUGFACILITIES=yCONFIG_THINKPAD_ACPI_DEBUG=y
# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
# CONFIG_THINKPAD_ACPI_VIDEO is not setCONFIG_THINKPAD_ACPI_HOTKEY_POLL=yCONFIG_EEEPC_LAPTOP=mCONFIG_ACPI_WMI=yCONFIG_ACPI_ASUS=y
# CONFIG_ACPI_TOSHIBA is not set
#
# Firmware Drivers
#
# CONFIG_EDD is not setCONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not setCONFIG_DMIID=y
# CONFIG_ISCSI_IBFT_FIND is not set
#
# File systems
#
# CONFIG_EXT2_FS is not setCONFIG_EXT3_FS=yCONFIG_EXT3_DEFAULTS_TO_ORDERED=yCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not setCONFIG_JBD=yCONFIG_JBD_DEBUG=yCONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not setCONFIG_JFS_FS=yCONFIG_JFS_POSIX_ACL=y
# CONFIG_JFS_SECURITY is not setCONFIG_JFS_DEBUG=yCONFIG_JFS_STATISTICS=yCONFIG_FS_POSIX_ACL=yCONFIG_XFS_FS=mCONFIG_XFS_QUOTA=y
# CONFIG_XFS_POSIX_ACL is not setCONFIG_XFS_RT=y
# CONFIG_XFS_DEBUG is not setCONFIG_GFS2_FS=yCONFIG_GFS2_FS_LOCKING_DLM=y
# CONFIG_OCFS2_FS is not setCONFIG_BTRFS_FS=yCONFIG_BTRFS_FS_POSIX_ACL=yCONFIG_FILE_LOCKING=yCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not setCONFIG_QUOTACTL=yCONFIG_AUTOFS_FS=y
# CONFIG_AUTOFS4_FS is not setCONFIG_FUSE_FS=y
# CONFIG_CUSE is not set
#
# Caches
#CONFIG_FSCACHE=yCONFIG_FSCACHE_STATS=yCONFIG_FSCACHE_HISTOGRAM=yCONFIG_FSCACHE_DEBUG=yCONFIG_CACHEFILES=y
# CONFIG_CACHEFILES_DEBUG is not set
# CONFIG_CACHEFILES_HISTOGRAM is not set
#
# CD-ROM/DVD Filesystems
#CONFIG_ISO9660_FS=mCONFIG_JOLIET=y
# CONFIG_ZISOFS is not setCONFIG_UDF_FS=mCONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#CONFIG_FAT_FS=y
# CONFIG_MSDOS_FS is not setCONFIG_VFAT_FS=yCONFIG_FAT_DEFAULT_CODEPAGE=437CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"CONFIG_NTFS_FS=y
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_PROC_SYSCTL=yCONFIG_PROC_PAGE_MONITOR=yCONFIG_SYSFS=y
# CONFIG_TMPFS is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not setCONFIG_CONFIGFS_FS=y
# CONFIG_MISC_FILESYSTEMS is not setCONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not setCONFIG_NFSD=mCONFIG_NFSD_V2_ACL=yCONFIG_NFSD_V3=yCONFIG_NFSD_V3_ACL=y
# CONFIG_NFSD_V4 is not setCONFIG_LOCKD=mCONFIG_LOCKD_V4=yCONFIG_EXPORTFS=mCONFIG_NFS_ACL_SUPPORT=mCONFIG_NFS_COMMON=yCONFIG_SUNRPC=mCONFIG_SUNRPC_GSS=mCONFIG_SUNRPC_XPRT_RDMA=mCONFIG_RPCSEC_GSS_KRB5=mCONFIG_RPCSEC_GSS_SPKM3=m
# CONFIG_SMB_FS is not setCONFIG_CIFS=mCONFIG_CIFS_STATS=yCONFIG_CIFS_STATS2=y
# CONFIG_CIFS_WEAK_PW_HASH is not set
# CONFIG_CIFS_UPCALL is not set
# CONFIG_CIFS_XATTR is not set
# CONFIG_CIFS_DEBUG2 is not setCONFIG_CIFS_DFS_UPCALL=yCONFIG_CIFS_EXPERIMENTAL=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=yCONFIG_ACORN_PARTITION=yCONFIG_ACORN_PARTITION_CUMANA=y
# CONFIG_ACORN_PARTITION_EESOX is not setCONFIG_ACORN_PARTITION_ICS=yCONFIG_ACORN_PARTITION_ADFS=y
# CONFIG_ACORN_PARTITION_POWERTEC is not setCONFIG_ACORN_PARTITION_RISCIX=yCONFIG_OSF_PARTITION=yCONFIG_AMIGA_PARTITION=y
# CONFIG_ATARI_PARTITION is not setCONFIG_MAC_PARTITION=yCONFIG_MSDOS_PARTITION=yCONFIG_BSD_DISKLABEL=yCONFIG_MINIX_SUBPARTITION=yCONFIG_SOLARIS_X86_PARTITION=yCONFIG_UNIXWARE_DISKLABEL=yCONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG is not setCONFIG_SGI_PARTITION=yCONFIG_ULTRIX_PARTITION=yCONFIG_SUN_PARTITION=yCONFIG_KARMA_PARTITION=yCONFIG_EFI_PARTITION=yCONFIG_SYSV68_PARTITION=yCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=mCONFIG_NLS_CODEPAGE_737=m
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not setCONFIG_NLS_CODEPAGE_852=yCONFIG_NLS_CODEPAGE_855=yCONFIG_NLS_CODEPAGE_857=yCONFIG_NLS_CODEPAGE_860=mCONFIG_NLS_CODEPAGE_861=y
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not setCONFIG_NLS_CODEPAGE_864=y
# CONFIG_NLS_CODEPAGE_865 is not setCONFIG_NLS_CODEPAGE_866=y
# CONFIG_NLS_CODEPAGE_869 is not setCONFIG_NLS_CODEPAGE_936=yCONFIG_NLS_CODEPAGE_950=mCONFIG_NLS_CODEPAGE_932=yCONFIG_NLS_CODEPAGE_949=yCONFIG_NLS_CODEPAGE_874=yCONFIG_NLS_ISO8859_8=m
# CONFIG_NLS_CODEPAGE_1250 is not setCONFIG_NLS_CODEPAGE_1251=yCONFIG_NLS_ASCII=yCONFIG_NLS_ISO8859_1=mCONFIG_NLS_ISO8859_2=y
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not setCONFIG_NLS_ISO8859_13=mCONFIG_NLS_ISO8859_14=yCONFIG_NLS_ISO8859_15=mCONFIG_NLS_KOI8_R=mCONFIG_NLS_KOI8_U=yCONFIG_NLS_UTF8=mCONFIG_DLM=y
# CONFIG_DLM_DEBUG is not set
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=yCONFIG_ALLOW_WARNINGS=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not setCONFIG_FRAME_WARN=2048CONFIG_MAGIC_SYSRQ=yCONFIG_UNUSED_SYMBOLS=yCONFIG_DEBUG_FS=yCONFIG_HEADERS_CHECK=yCONFIG_DEBUG_SECTION_MISMATCH=yCONFIG_DEBUG_KERNEL=yCONFIG_DEBUG_SHIRQ=yCONFIG_DETECT_SOFTLOCKUP=yCONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=yCONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not setCONFIG_SCHEDSTATS=y
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not setCONFIG_SLUB_STATS=yCONFIG_DEBUG_KMEMLEAK=yCONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=400CONFIG_DEBUG_KMEMLEAK_TEST=m
# CONFIG_DEBUG_RT_MUTEXES is not setCONFIG_RT_MUTEX_TESTER=yCONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=yCONFIG_DEBUG_LOCK_ALLOC=yCONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=yCONFIG_LOCK_STAT=yCONFIG_DEBUG_LOCKDEP=yCONFIG_TRACE_IRQFLAGS=yCONFIG_DEBUG_SPINLOCK_SLEEP=yCONFIG_DEBUG_LOCKING_API_SELFTESTS=yCONFIG_STACKTRACE=yCONFIG_DEBUG_VM=y
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_WRITECOUNT is not setCONFIG_DEBUG_MEMORY_INIT=yCONFIG_DEBUG_LIST=yCONFIG_DEBUG_SG=yCONFIG_DEBUG_NOTIFIERS=yCONFIG_ARCH_WANT_FRAME_POINTERS=yCONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not setCONFIG_RCU_TORTURE_TEST=mCONFIG_RCU_CPU_STALL_DETECTOR=yCONFIG_KPROBES_SANITY_TEST=y
# CONFIG_BACKTRACE_SELF_TEST is not setCONFIG_LKDTM=y
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not setCONFIG_SYSCTL_SYSCALL_CHECK=yCONFIG_DEBUG_PAGEALLOC=yCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_HAVE_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=yCONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=yCONFIG_HAVE_DYNAMIC_FTRACE=yCONFIG_HAVE_FTRACE_MCOUNT_RECORD=yCONFIG_HAVE_SYSCALL_TRACEPOINTS=yCONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not setCONFIG_PROVIDE_OHCI1394_DMA_INIT=y
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not setCONFIG_BUILD_DOCSRC=yCONFIG_DYNAMIC_DEBUG=y
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_SAMPLES is not setCONFIG_HAVE_ARCH_KGDB=yCONFIG_KGDB=yCONFIG_KGDB_SERIAL_CONSOLE=m
# CONFIG_KGDB_TESTS is not setCONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_STRICT_DEVMEM is not setCONFIG_X86_VERBOSE_BOOTUP=yCONFIG_EARLY_PRINTK=yCONFIG_EARLY_PRINTK_DBGP=yCONFIG_DEBUG_STACKOVERFLOW=yCONFIG_DEBUG_STACK_USAGE=yCONFIG_DEBUG_PER_CPU_MAPS=yCONFIG_X86_PTDUMP=yCONFIG_DEBUG_RODATA=y
# CONFIG_DEBUG_RODATA_TEST is not setCONFIG_DEBUG_NX_TEST=mCONFIG_IOMMU_DEBUG=yCONFIG_IOMMU_STRESS=yCONFIG_HAVE_MMIOTRACE_SUPPORT=yCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not setCONFIG_DEFAULT_IO_DELAY_TYPE=0CONFIG_DEBUG_BOOT_PARAMS=yCONFIG_CPA_DEBUG=y
# CONFIG_OPTIMIZE_INLINING is not set
#
# Security options
#CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not setCONFIG_SECURITY=yCONFIG_SECURITYFS=y
# CONFIG_SECURITY_NETWORK is not setCONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_FILE_CAPABILITIES is not setCONFIG_SECURITY_TOMOYO=yCONFIG_IMA=yCONFIG_IMA_MEASURE_PCR_IDX=10CONFIG_IMA_AUDIT=yCONFIG_XOR_BLOCKS=mCONFIG_ASYNC_CORE=mCONFIG_ASYNC_MEMCPY=mCONFIG_ASYNC_XOR=mCONFIG_CRYPTO=y
#
# Crypto core or helper
#CONFIG_CRYPTO_FIPS=yCONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ALGAPI2=yCONFIG_CRYPTO_AEAD=yCONFIG_CRYPTO_AEAD2=yCONFIG_CRYPTO_BLKCIPHER=yCONFIG_CRYPTO_BLKCIPHER2=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_HASH2=yCONFIG_CRYPTO_RNG=yCONFIG_CRYPTO_RNG2=yCONFIG_CRYPTO_PCOMP=yCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_MANAGER2=yCONFIG_CRYPTO_GF128MUL=yCONFIG_CRYPTO_NULL=mCONFIG_CRYPTO_WORKQUEUE=yCONFIG_CRYPTO_CRYPTD=mCONFIG_CRYPTO_AUTHENC=yCONFIG_CRYPTO_TEST=m
#
# Authenticated Encryption with Associated Data
#CONFIG_CRYPTO_CCM=yCONFIG_CRYPTO_GCM=yCONFIG_CRYPTO_SEQIV=y
#
# Block modes
#CONFIG_CRYPTO_CBC=yCONFIG_CRYPTO_CTR=yCONFIG_CRYPTO_CTS=yCONFIG_CRYPTO_ECB=yCONFIG_CRYPTO_LRW=yCONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_XTS is not setCONFIG_CRYPTO_FPU=m
#
# Hash modes
#CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
#
# Digest
#CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32C_INTEL is not setCONFIG_CRYPTO_MD4=yCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_MICHAEL_MIC=yCONFIG_CRYPTO_RMD128=mCONFIG_CRYPTO_RMD160=mCONFIG_CRYPTO_RMD256=mCONFIG_CRYPTO_RMD320=mCONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA256 is not setCONFIG_CRYPTO_SHA512=y
# CONFIG_CRYPTO_TGR192 is not setCONFIG_CRYPTO_WP512=m
#
# Ciphers
#CONFIG_CRYPTO_AES=yCONFIG_CRYPTO_AES_X86_64=yCONFIG_CRYPTO_AES_NI_INTEL=m
# CONFIG_CRYPTO_ANUBIS is not setCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_BLOWFISH=yCONFIG_CRYPTO_CAMELLIA=mCONFIG_CRYPTO_CAST5=m
# CONFIG_CRYPTO_CAST6 is not setCONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not setCONFIG_CRYPTO_KHAZAD=y
# CONFIG_CRYPTO_SALSA20 is not setCONFIG_CRYPTO_SALSA20_X86_64=m
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not setCONFIG_CRYPTO_TEA=y
# CONFIG_CRYPTO_TWOFISH is not setCONFIG_CRYPTO_TWOFISH_COMMON=mCONFIG_CRYPTO_TWOFISH_X86_64=m
#
# Compression
#CONFIG_CRYPTO_DEFLATE=yCONFIG_CRYPTO_ZLIB=mCONFIG_CRYPTO_LZO=y
#
# Random Number Generation
#CONFIG_CRYPTO_ANSI_CPRNG=yCONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_PADLOCK is not set
# CONFIG_CRYPTO_DEV_HIFN_795X is not setCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=yCONFIG_VIRTUALIZATION=yCONFIG_KVM=mCONFIG_KVM_INTEL=mCONFIG_KVM_AMD=mCONFIG_KVM_TRACE=yCONFIG_VIRTIO=yCONFIG_VIRTIO_RING=yCONFIG_VIRTIO_PCI=mCONFIG_VIRTIO_BALLOON=y
# CONFIG_BINARY_PRINTF is not set
#
# Library routines
#CONFIG_BITREVERSE=yCONFIG_GENERIC_FIND_FIRST_BIT=yCONFIG_GENERIC_FIND_NEXT_BIT=yCONFIG_GENERIC_FIND_LAST_BIT=yCONFIG_CRC_CCITT=mCONFIG_CRC16=mCONFIG_CRC_T10DIF=mCONFIG_CRC_ITU_T=yCONFIG_CRC32=y
# CONFIG_CRC7 is not setCONFIG_LIBCRC32C=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_LZO_COMPRESS=yCONFIG_LZO_DECOMPRESS=yCONFIG_DECOMPRESS_GZIP=yCONFIG_DECOMPRESS_BZIP2=yCONFIG_TEXTSEARCH=yCONFIG_TEXTSEARCH_KMP=mCONFIG_TEXTSEARCH_BM=mCONFIG_TEXTSEARCH_FSM=mCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_CPUMASK_OFFSTACK=yCONFIG_NLATTR=yCONFIG_FORCE_SUCCESSFUL_BUILD=yCONFIG_FORCE_MINIMAL_CONFIG=yCONFIG_FORCE_MINIMAL_CONFIG_64=yCONFIG_FORCE_MINIMAL_CONFIG_PHYS=y
Re: [tip:x86/cpu] x86, msr: Add rd/wrmsr interfaces with preset registers
Quoted 12 lines · Ingo Molnar
Quoted 8 lines · tip-bot for Borislav Petkov
Commit-ID: 132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Gitweb: http://git.kernel.org/tip/132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Author: Borislav Petkov <[email protected]> AuthorDate: Mon, 31 Aug 2009 09:50:09 +0200 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:26 -0700x86, msr: Add rd/wrmsr interfaces with preset registers
Quoted 8 lines
FYI, -tip testing found a build failure on x86 with these patches:
arch/x86/lib/msr-reg.S:14: Error: Bad macro parameter listarch/x86/lib/msr-reg.S:100: Error: invalid character '_' in mnemonicarch/x86/lib/msr-reg.S:101: Error: invalid character '_' in mnemonicconfig attached. I've excluded this topic branch from tip:master for now.
I can't trigger it here.
Stab in the dark: It could be an old binutils issue since gas can't swallow the macro definition. If you're building on a RHEL system, it could be that the ":req" macro argument specification is not supported by that particular version of the gnu assembler as
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/gnu-assembler/macro.html
doesn't state anything on required macro arguments.
Try removing the ":req" part if the op macro argument to see whether it builds. If so, ":req" is not absolutely necessary and we can do away without it.
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
Re: [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers
In reply to Borislav PetkovQuoted 1 line · On Mon, 31 Aug 2009 09:50:09 +0200 Borislav Petkov <[email protected]>…
+.macro
op_safe_regsop:req
Using
GNU assembler 2.16.1
I get
arch/x86/lib/msr-reg.S: Assembler messages:arch/x86/lib/msr-reg.S:53: Error: Bad macro parameter list arch/x86/lib/msr-reg.S:100: Error: invalid character '_' in mnemonic arch/x86/lib/msr-reg.S:101: Error: invalid character '_' in mnemonic
this:
arch/x86/lib/msr-reg.S renamed from arch/x86/lib/msr-reg.S~a +1 -1
@@ -50,7 +50,7 @@ ENDPROC(native_\op\()_safe_regs) #else /* X86_32 */ -.macro op_safe_regs op:req +.macro op_safe_regs op ENTRY(native_\op\()_safe_regs) CFI_STARTPROC pushl_cfi %ebx
fixed it.
H. Peter Anvin
reviewerRe: [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers
Quoted 32 lines · Andrew Morton
Quoted 1 line · On Mon, 31 Aug 2009 09:50:09 +0200 Borislav Petkov <[email protected]>…
+.macro
op_safe_regsop:reqUsing
GNU assembler 2.16.1
I get
arch/x86/lib/msr-reg.S: Assembler messages:arch/x86/lib/msr-reg.S:53: Error: Bad macro parameter listarch/x86/lib/msr-reg.S:100: Error: invalid character '_' in mnemonicarch/x86/lib/msr-reg.S:101: Error: invalid character '_' in mnemonicthis:
diff -puN
arch/x86/lib/msr-reg.S~aarch/x86/lib/msr-reg.Sarch/x86/lib/msr-reg.S renamed from arch/x86/lib/msr-reg.S~a +1
-1@@ -50,7 +50,7 @@ ENDPROC(native_\op\()_safe_regs) #else /* X86_32 */ -.macro op_safe_regs op:req +.macro op_safe_regs op ENTRY(native_\op\()_safe_regs) CFI_STARTPROC pushl_cfi %ebx
Quoted 1 line
fixed it.
Yup, already fixed in -tip.
-hpa
Re: [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers
Quoted 33 lines · On Thu, 03 Sep 2009 15:57:54 -0700 "H. Peter Anvin" <[email protected]> wrote:
Quoted 32 lines · Andrew Morton
Quoted 1 line · On Mon, 31 Aug 2009 09:50:09 +0200 Borislav Petkov <[email protected]>…
+.macro
op_safe_regsop:reqUsing
GNU assembler 2.16.1
I get
arch/x86/lib/msr-reg.S: Assembler messages:arch/x86/lib/msr-reg.S:53: Error: Bad macro parameter listarch/x86/lib/msr-reg.S:100: Error: invalid character '_' in mnemonicarch/x86/lib/msr-reg.S:101: Error: invalid character '_' in mnemonicthis:
diff -puN
arch/x86/lib/msr-reg.S~aarch/x86/lib/msr-reg.Sarch/x86/lib/msr-reg.S renamed from arch/x86/lib/msr-reg.S~a +1
-1@@ -50,7 +50,7 @@ ENDPROC(native_\op\()_safe_regs) #else /* X86_32 */ -.macro op_safe_regs op:req +.macro op_safe_regs op ENTRY(native_\op\()_safe_regs) CFI_STARTPROC pushl_cfi %ebx
Quoted 4 lines
Quoted 1 line
fixed it.
Yup, already fixed in -tip.
<looks>
Three days ago. linux-next is still busted.
I want my five minutes back.
H. Peter Anvin
reviewerRe: [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers
Quoted 6 lines · Andrew Morton
<looks>
Three days ago. linux-next is still busted.
I want my five minutes back.
x86-64 got fixed three days ago, i386 earlier today. Didn't fix them both at the same time due to a brainfart on my part. :-/
-hpa
Re: [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers
In reply to Andrew MortonQuoted 36 lines · Andrew Morton
Quoted 33 lines · On Thu, 03 Sep 2009 15:57:54 -0700 "H. Peter Anvin" <[email protected]> wrote:
Quoted 32 lines · Andrew Morton
Quoted 1 line · On Mon, 31 Aug 2009 09:50:09 +0200 Borislav Petkov <[email protected]>…
+.macro
op_safe_regsop:reqUsing
GNU assembler 2.16.1
I get
arch/x86/lib/msr-reg.S: Assembler messages:arch/x86/lib/msr-reg.S:53: Error: Bad macro parameter listarch/x86/lib/msr-reg.S:100: Error: invalid character '_' in mnemonicarch/x86/lib/msr-reg.S:101: Error: invalid character '_' in mnemonicthis:
diff -puN
arch/x86/lib/msr-reg.S~aarch/x86/lib/msr-reg.Sarch/x86/lib/msr-reg.S renamed from arch/x86/lib/msr-reg.S~a +1
-1@@ -50,7 +50,7 @@ ENDPROC(native_\op\()_safe_regs) #else /* X86_32 */ -.macro op_safe_regs op:req +.macro op_safe_regs op ENTRY(native_\op\()_safe_regs) CFI_STARTPROC pushl_cfi %ebx
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
fixed it.
Yup, already fixed in -tip.
<looks>
Three days ago. linux-next is still busted.
No, the 32-bit ancient-binutils bug you have hit here was found and fixed ~8 hours ago, by me, and i pushed the fix out immediately. (and this happened before you wrote this mail and the fix was posted to lkml as well.)
Quoted 1 line
I want my five minutes back.
I too want my five minutes back that i spent researching commit logs and writing this email ;-)
Btw., we could save much more if we avoided this whole 'break the kernel then fix it' infinite loop that kernel development is ultimately about ;-)
Ingo
Re: [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers
Quoted 8 lines · Ingo Molnar
Quoted 1 line
I want my five minutes back.
I too want my five minutes back that i spent researching commit logs and writing this email ;-)
Btw., we could save much more if we avoided this whole 'break the kernel then fix it' infinite loop that kernel development is ultimately about ;-)
Well,
how about I buy you all coffee instead :-). The :req thing was my overzealous attempt to write asm macros - I promise I won't do it anymore :-).
Signature · 8 lines
Regards/Gruss, Boris. Operating | Advanced Micro Devices GmbH System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany Research | Geschäftsführer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München (OSRC) | Registergericht München, HRB Nr. 43632
Re: [tip:x86/cpu] x86, msr: Add rd/wrmsr interfaces with preset registers
In reply to tip-bot for Borislav PetkovQuoted 8 lines · tip-bot for Borislav Petkov
Commit-ID: 132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Gitweb: http://git.kernel.org/tip/132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Author: Borislav Petkov <[email protected]> AuthorDate: Mon, 31 Aug 2009 09:50:09 +0200 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:26 -0700x86, msr: Add rd/wrmsr interfaces with preset registers
module exports are missing:
ERROR: "native_wrmsr_safe_regs" [arch/x86/kernel/msr.ko] undefined!
ERROR: "native_rdmsr_safe_regs" [arch/x86/kernel/msr.ko] undefined!
config attached.
Ingo
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc8
# Fri Sep 4 15:05:11 2009
#CONFIG_64BIT=y
# CONFIG_X86_32 is not setCONFIG_X86_64=yCONFIG_X86=yCONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_GENERIC_TIME=yCONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=yCONFIG_MMU=yCONFIG_ZONE_DMA=yCONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_IOMAP=yCONFIG_GENERIC_HWEIGHT=yCONFIG_GENERIC_GPIO=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=yCONFIG_ZONE_DMA32=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_GENERIC_IRQ_PROBE=y
# CONFIG_KTIME_SCALAR is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y
#
# General setup
#CONFIG_EXPERIMENTAL=yCONFIG_BROKEN_ON_SMP=yCONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_LOCALVERSION=""CONFIG_LOCALVERSION_AUTO=yCONFIG_HAVE_KERNEL_GZIP=yCONFIG_HAVE_KERNEL_BZIP2=yCONFIG_HAVE_KERNEL_LZMA=y
# CONFIG_KERNEL_GZIP is not setCONFIG_KERNEL_BZIP2=y
# CONFIG_KERNEL_LZMA is not setCONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_POSIX_MQUEUE_SYSCTL=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_BSD_PROCESS_ACCT_V3=yCONFIG_TASKSTATS=y
# CONFIG_TASK_DELAY_ACCT is not set
# CONFIG_TASK_XACCT is not setCONFIG_AUDIT=yCONFIG_AUDITSYSCALL=yCONFIG_AUDIT_TREE=y
#
# RCU Subsystem
#CONFIG_TREE_RCU=y
# CONFIG_TREE_PREEMPT_RCU is not setCONFIG_RCU_TRACE=yCONFIG_RCU_FANOUT=64CONFIG_RCU_FANOUT_EXACT=yCONFIG_TREE_RCU_TRACE=yCONFIG_IKCONFIG=yCONFIG_IKCONFIG_PROC=yCONFIG_LOG_BUF_SHIFT=20CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=yCONFIG_GROUP_SCHED=y
# CONFIG_FAIR_GROUP_SCHED is not setCONFIG_RT_GROUP_SCHED=y
# CONFIG_USER_SCHED is not setCONFIG_CGROUP_SCHED=yCONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not setCONFIG_CGROUP_NS=yCONFIG_CGROUP_FREEZER=yCONFIG_CGROUP_DEVICE=yCONFIG_CPUSETS=y
# CONFIG_PROC_PID_CPUSET is not setCONFIG_CGROUP_CPUACCT=yCONFIG_RESOURCE_COUNTERS=y
# CONFIG_CGROUP_MEM_RES_CTLR is not setCONFIG_SYSFS_DEPRECATED=yCONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not setCONFIG_BLK_DEV_INITRD=yCONFIG_INITRAMFS_SOURCE=""CONFIG_RD_GZIP=yCONFIG_RD_BZIP2=y
# CONFIG_RD_LZMA is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not setCONFIG_SYSCTL=yCONFIG_ANON_INODES=yCONFIG_EMBEDDED=y
# CONFIG_UID16 is not setCONFIG_SYSCTL_SYSCALL=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=yCONFIG_KALLSYMS_EXTRA_PASS=yCONFIG_HOTPLUG=yCONFIG_PRINTK=y
# CONFIG_BUG is not setCONFIG_ELF_CORE=y
# CONFIG_PCSPKR_PLATFORM is not setCONFIG_BASE_FULL=yCONFIG_FUTEX=y
# CONFIG_EPOLL is not setCONFIG_SIGNALFD=y
# CONFIG_TIMERFD is not set
# CONFIG_EVENTFD is not set
# CONFIG_SHMEM is not setCONFIG_AIO=yCONFIG_HAVE_PERF_COUNTERS=y
#
# Performance Counters
#
# CONFIG_PERF_COUNTERS is not setCONFIG_VM_EVENT_COUNTERS=y
# CONFIG_PCI_QUIRKS is not set
# CONFIG_SLUB_DEBUG is not setCONFIG_STRIP_ASM_SYMS=yCONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not setCONFIG_PROFILING=yCONFIG_TRACEPOINTS=y
# CONFIG_MARKERS is not setCONFIG_OPROFILE=mCONFIG_OPROFILE_EVENT_MULTIPLEX=yCONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not setCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_ATTRS=yCONFIG_HAVE_DMA_API_DEBUG=yCONFIG_HAVE_HW_BREAKPOINT=y
#
# GCOV-based kernel profiling
#CONFIG_SLOW_WORK=y
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not setCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0CONFIG_MODULES=yCONFIG_MODULE_FORCE_LOAD=yCONFIG_MODULE_UNLOAD=yCONFIG_MODULE_FORCE_UNLOAD=yCONFIG_MODVERSIONS=yCONFIG_MODULE_SRCVERSION_ALL=yCONFIG_BLOCK=yCONFIG_BLK_DEV_BSG=y
# CONFIG_BLK_DEV_INTEGRITY is not setCONFIG_BLOCK_COMPAT=y
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=mCONFIG_IOSCHED_DEADLINE=y
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_DEFAULT_AS is not setCONFIG_DEFAULT_DEADLINE=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not setCONFIG_DEFAULT_IOSCHED="deadline"CONFIG_FREEZER=y
#
# Processor type and features
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP is not setCONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set CONFIG_MEMTEST=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_MATOM is not setCONFIG_GENERIC_CPU=yCONFIG_X86_CPU=yCONFIG_X86_L1_CACHE_BYTES=64 CONFIG_X86_INTERNODE_CACHE_BYTES=64 CONFIG_X86_CMPXCHG=yCONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_WP_WORKS_OK=yCONFIG_X86_TSC=yCONFIG_X86_CMPXCHG64=yCONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y CONFIG_PROCESSOR_SELECT=yCONFIG_CPU_SUP_INTEL=yCONFIG_CPU_SUP_AMD=yCONFIG_CPU_SUP_CENTAUR=y
# CONFIG_X86_DS is not setCONFIG_HPET_TIMER=yCONFIG_HPET_EMULATE_RTC=yCONFIG_DMI=yCONFIG_GART_IOMMU=y
# CONFIG_CALGARY_IOMMU is not set CONFIG_SWIOTLB=yCONFIG_IOMMU_HELPER=y
# CONFIG_IOMMU_API is not setCONFIG_NR_CPUS=1CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
# CONFIG_X86_MCE is not setCONFIG_I8K=mCONFIG_MICROCODE=m
# CONFIG_MICROCODE_INTEL is not set CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=m
# CONFIG_X86_CPUID is not set CONFIG_X86_CPU_DEBUG=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
# CONFIG_DIRECT_GBPAGES is not set CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set CONFIG_SPARSEMEM_MANUAL=yCONFIG_SPARSEMEM=yCONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y
# CONFIG_MEMORY_HOTPLUG is not set CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_HAVE_MLOCK=y CONFIG_HAVE_MLOCKED_PAGE_BIT=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set CONFIG_X86_RESERVE_LOW_64K=yCONFIG_MTRR=yCONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
# CONFIG_X86_PAT is not setCONFIG_SECCOMP=yCONFIG_CC_STACKPROTECTOR_ALL=y CONFIG_CC_STACKPROTECTOR=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not setCONFIG_HZ_300=y
# CONFIG_HZ_1000 is not setCONFIG_HZ=300CONFIG_SCHED_HRTICK=yCONFIG_KEXEC=yCONFIG_CRASH_DUMP=y CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000
# CONFIG_COMPAT_VDSO is not set CONFIG_CMDLINE_BOOL=yCONFIG_CMDLINE=""
# CONFIG_CMDLINE_OVERRIDE is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management and ACPI options
#
# CONFIG_PM is not set
#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
# CONFIG_CPU_IDLE is not set
#
# Memory power savings
#CONFIG_I7300_IDLE_IOAT_CHANNEL=yCONFIG_I7300_IDLE=m
#
# Bus options (PCI etc.)
#CONFIG_PCI=yCONFIG_PCI_DIRECT=yCONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not setCONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_LEGACY is not setCONFIG_PCI_DEBUG=yCONFIG_PCI_STUB=y
# CONFIG_HT_IRQ is not set
# CONFIG_PCI_IOV is not setCONFIG_ISA_DMA_API=yCONFIG_K8_NB=y
# CONFIG_PCCARD is not setCONFIG_HOTPLUG_PCI=yCONFIG_HOTPLUG_PCI_FAKE=yCONFIG_HOTPLUG_PCI_CPCI=yCONFIG_HOTPLUG_PCI_CPCI_ZT5550=yCONFIG_HOTPLUG_PCI_CPCI_GENERIC=mCONFIG_HOTPLUG_PCI_SHPC=m
#
# Executable file formats / Emulations
#CONFIG_BINFMT_ELF=yCONFIG_COMPAT_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_HAVE_AOUT is not setCONFIG_BINFMT_MISC=mCONFIG_IA32_EMULATION=yCONFIG_IA32_AOUT=yCONFIG_COMPAT=yCONFIG_COMPAT_FOR_U64_ALIGNMENT=yCONFIG_SYSVIPC_COMPAT=yCONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_UNIX=yCONFIG_XFRM=yCONFIG_XFRM_USER=mCONFIG_XFRM_SUB_POLICY=yCONFIG_XFRM_MIGRATE=yCONFIG_XFRM_STATISTICS=yCONFIG_NET_KEY=yCONFIG_NET_KEY_MIGRATE=yCONFIG_INET=y
# CONFIG_IP_MULTICAST is not setCONFIG_IP_ADVANCED_ROUTER=y
# CONFIG_ASK_IP_FIB_HASH is not setCONFIG_IP_FIB_TRIE=y
# CONFIG_IP_FIB_HASH is not setCONFIG_IP_FIB_TRIE_STATS=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_VERBOSE is not set
# CONFIG_IP_PNP is not setCONFIG_NET_IPIP=mCONFIG_NET_IPGRE=mCONFIG_ARPD=yCONFIG_SYN_COOKIES=yCONFIG_INET_AH=mCONFIG_INET_ESP=y
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not setCONFIG_INET_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not setCONFIG_INET_XFRM_MODE_TUNNEL=mCONFIG_INET_XFRM_MODE_BEET=yCONFIG_INET_LRO=yCONFIG_INET_DIAG=mCONFIG_INET_TCP_DIAG=mCONFIG_TCP_CONG_ADVANCED=yCONFIG_TCP_CONG_BIC=yCONFIG_TCP_CONG_CUBIC=mCONFIG_TCP_CONG_WESTWOOD=m
# CONFIG_TCP_CONG_HTCP is not setCONFIG_TCP_CONG_HSTCP=y
# CONFIG_TCP_CONG_HYBLA is not set
# CONFIG_TCP_CONG_VEGAS is not setCONFIG_TCP_CONG_SCALABLE=mCONFIG_TCP_CONG_LP=m
# CONFIG_TCP_CONG_VENO is not set
# CONFIG_TCP_CONG_YEAH is not setCONFIG_TCP_CONG_ILLINOIS=yCONFIG_DEFAULT_BIC=y
# CONFIG_DEFAULT_CUBIC is not set
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not setCONFIG_DEFAULT_TCP_CONG="bic"
# CONFIG_TCP_MD5SIG is not setCONFIG_IPV6=m
# CONFIG_IPV6_PRIVACY is not setCONFIG_IPV6_ROUTER_PREF=yCONFIG_IPV6_ROUTE_INFO=y
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
# CONFIG_INET6_AH is not setCONFIG_INET6_ESP=m
# CONFIG_INET6_IPCOMP is not setCONFIG_IPV6_MIP6=m
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not setCONFIG_INET6_XFRM_MODE_TRANSPORT=m
# CONFIG_INET6_XFRM_MODE_TUNNEL is not setCONFIG_INET6_XFRM_MODE_BEET=mCONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
# CONFIG_IPV6_SIT is not set
# CONFIG_IPV6_TUNNEL is not setCONFIG_IPV6_MULTIPLE_TABLES=yCONFIG_IPV6_SUBTREES=yCONFIG_IPV6_MROUTE=y
# CONFIG_IPV6_PIMSM_V2 is not setCONFIG_NETLABEL=y
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not setCONFIG_IP_DCCP=mCONFIG_INET_DCCP_DIAG=m
#
# DCCP CCIDs Configuration (EXPERIMENTAL)
#CONFIG_IP_DCCP_CCID2_DEBUG=yCONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_CCID3_DEBUG is not setCONFIG_IP_DCCP_CCID3_RTO=100CONFIG_IP_DCCP_TFRC_LIB=y
#
# DCCP Kernel Hacking
#
# CONFIG_IP_DCCP_DEBUG is not setCONFIG_IP_SCTP=mCONFIG_SCTP_DBG_MSG=y
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not setCONFIG_SCTP_HMAC_SHA1=y
# CONFIG_SCTP_HMAC_MD5 is not setCONFIG_TIPC=m
# CONFIG_TIPC_ADVANCED is not set
# CONFIG_TIPC_DEBUG is not setCONFIG_ATM=y
# CONFIG_ATM_CLIP is not setCONFIG_ATM_LANE=y
# CONFIG_ATM_MPOA is not setCONFIG_ATM_BR2684=yCONFIG_ATM_BR2684_IPFILTER=yCONFIG_STP=yCONFIG_GARP=mCONFIG_BRIDGE=y
# CONFIG_NET_DSA is not setCONFIG_VLAN_8021Q=mCONFIG_VLAN_8021Q_GVRP=y
# CONFIG_DECNET is not setCONFIG_LLC=y
# CONFIG_LLC2 is not setCONFIG_IPX=m
# CONFIG_IPX_INTERN is not setCONFIG_ATALK=yCONFIG_DEV_APPLETALK=y
# CONFIG_IPDDP is not setCONFIG_X25=yCONFIG_LAPB=yCONFIG_ECONET=mCONFIG_ECONET_AUNUDP=y
# CONFIG_ECONET_NATIVE is not setCONFIG_WAN_ROUTER=y
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not setCONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#CONFIG_NET_SCH_CBQ=m
# CONFIG_NET_SCH_HTB is not setCONFIG_NET_SCH_HFSC=yCONFIG_NET_SCH_ATM=mCONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MULTIQ is not setCONFIG_NET_SCH_RED=mCONFIG_NET_SCH_SFQ=yCONFIG_NET_SCH_TEQL=yCONFIG_NET_SCH_TBF=mCONFIG_NET_SCH_GRED=mCONFIG_NET_SCH_DSMARK=yCONFIG_NET_SCH_NETEM=mCONFIG_NET_SCH_DRR=mCONFIG_NET_SCH_INGRESS=y
#
# Classification
#CONFIG_NET_CLS=yCONFIG_NET_CLS_BASIC=mCONFIG_NET_CLS_TCINDEX=yCONFIG_NET_CLS_ROUTE4=yCONFIG_NET_CLS_ROUTE=yCONFIG_NET_CLS_FW=mCONFIG_NET_CLS_U32=yCONFIG_CLS_U32_PERF=y
# CONFIG_CLS_U32_MARK is not setCONFIG_NET_CLS_RSVP=mCONFIG_NET_CLS_RSVP6=y
# CONFIG_NET_CLS_FLOW is not set
# CONFIG_NET_CLS_CGROUP is not setCONFIG_NET_EMATCH=yCONFIG_NET_EMATCH_STACK=32
# CONFIG_NET_EMATCH_CMP is not setCONFIG_NET_EMATCH_NBYTE=mCONFIG_NET_EMATCH_U32=m
# CONFIG_NET_EMATCH_META is not setCONFIG_NET_EMATCH_TEXT=mCONFIG_NET_CLS_ACT=y
# CONFIG_NET_ACT_POLICE is not set
# CONFIG_NET_ACT_GACT is not setCONFIG_NET_ACT_MIRRED=yCONFIG_NET_ACT_NAT=m
# CONFIG_NET_ACT_PEDIT is not setCONFIG_NET_ACT_SIMP=mCONFIG_NET_ACT_SKBEDIT=y
# CONFIG_NET_CLS_IND is not setCONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set
#
# Network testing
#CONFIG_NET_PKTGEN=yCONFIG_NET_DROP_MONITOR=y
# CONFIG_HAMRADIO is not setCONFIG_CAN=m
# CONFIG_CAN_RAW is not setCONFIG_CAN_BCM=m
#
# CAN Device Drivers
#CONFIG_CAN_VCAN=m
# CONFIG_CAN_DEV is not setCONFIG_CAN_DEBUG_DEVICES=yCONFIG_IRDA=m
#
# IrDA protocols
#CONFIG_IRLAN=m
# CONFIG_IRCOMM is not set
# CONFIG_IRDA_ULTRA is not set
#
# IrDA options
#CONFIG_IRDA_CACHE_LAST_LSAP=yCONFIG_IRDA_FAST_RR=yCONFIG_IRDA_DEBUG=y
#
# Infrared-port device drivers
#
#
# SIR device drivers
#
# CONFIG_IRTTY_SIR is not set
#
# Dongle support
#
# CONFIG_KINGSUN_DONGLE is not setCONFIG_KSDAZZLE_DONGLE=mCONFIG_KS959_DONGLE=m
#
# FIR device drivers
#
# CONFIG_USB_IRDA is not setCONFIG_SIGMATEL_FIR=mCONFIG_NSC_FIR=mCONFIG_WINBOND_FIR=m
# CONFIG_SMC_IRCC_FIR is not setCONFIG_ALI_FIR=m
# CONFIG_VLSI_FIR is not setCONFIG_VIA_FIR=m
# CONFIG_MCS_FIR is not setCONFIG_BT=yCONFIG_BT_L2CAP=yCONFIG_BT_SCO=mCONFIG_BT_RFCOMM=mCONFIG_BT_RFCOMM_TTY=yCONFIG_BT_BNEP=m
# CONFIG_BT_BNEP_MC_FILTER is not set
# CONFIG_BT_BNEP_PROTO_FILTER is not setCONFIG_BT_HIDP=y
#
# Bluetooth device drivers
#CONFIG_BT_HCIBTUSB=m
# CONFIG_BT_HCIBTSDIO is not set
# CONFIG_BT_HCIUART is not setCONFIG_BT_HCIBCM203X=yCONFIG_BT_HCIBPA10X=mCONFIG_BT_HCIBFUSB=yCONFIG_BT_HCIVHCI=mCONFIG_AF_RXRPC=m
# CONFIG_AF_RXRPC_DEBUG is not set
# CONFIG_RXKAD is not setCONFIG_FIB_RULES=y
# CONFIG_WIRELESS is not setCONFIG_WIRELESS_EXT=yCONFIG_LIB80211=yCONFIG_LIB80211_CRYPT_WEP=yCONFIG_LIB80211_CRYPT_CCMP=yCONFIG_LIB80211_CRYPT_TKIP=yCONFIG_WIMAX=yCONFIG_WIMAX_DEBUG_LEVEL=8
# CONFIG_RFKILL is not set
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"CONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=yCONFIG_FW_LOADER=yCONFIG_FIRMWARE_IN_KERNEL=yCONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not setCONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not setCONFIG_CONNECTOR=yCONFIG_PROC_EVENTS=y
# CONFIG_MTD is not setCONFIG_PARPORT=mCONFIG_PARPORT_PC=mCONFIG_PARPORT_PC_FIFO=yCONFIG_PARPORT_PC_SUPERIO=y
# CONFIG_PARPORT_GSC is not setCONFIG_PARPORT_AX88796=m
# CONFIG_PARPORT_1284 is not setCONFIG_PARPORT_NOT_PC=yCONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_PARIDE is not setCONFIG_BLK_CPQ_DA=yCONFIG_BLK_CPQ_CISS_DA=y
# CONFIG_CISS_SCSI_TAPE is not setCONFIG_BLK_DEV_DAC960=mCONFIG_BLK_DEV_UMEM=y
# CONFIG_BLK_DEV_COW_COMMON is not setCONFIG_BLK_DEV_LOOP=mCONFIG_BLK_DEV_CRYPTOLOOP=mCONFIG_BLK_DEV_NBD=yCONFIG_BLK_DEV_SX8=y
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not setCONFIG_CDROM_PKTCDVD=mCONFIG_CDROM_PKTCDVD_BUFFERS=8CONFIG_CDROM_PKTCDVD_WCACHE=y
# CONFIG_ATA_OVER_ETH is not setCONFIG_VIRTIO_BLK=y
# CONFIG_BLK_DEV_HD is not setCONFIG_MISC_DEVICES=yCONFIG_IBM_ASM=y
# CONFIG_PHANTOM is not setCONFIG_SGI_IOC4=yCONFIG_TIFM_CORE=y
# CONFIG_TIFM_7XX1 is not set
# CONFIG_ICS932S401 is not set
# CONFIG_ENCLOSURE_SERVICES is not setCONFIG_HP_ILO=y
# CONFIG_ISL29003 is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#CONFIG_EEPROM_AT24=m
# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_MAX6875 is not setCONFIG_EEPROM_93CX6=yCONFIG_CB710_CORE=yCONFIG_CB710_DEBUG=yCONFIG_CB710_DEBUG_ASSUMPTIONS=yCONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
#
# SCSI device support
#CONFIG_RAID_ATTRS=yCONFIG_SCSI=yCONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not setCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=yCONFIG_CHR_DEV_ST=mCONFIG_CHR_DEV_OSST=yCONFIG_BLK_DEV_SR=mCONFIG_BLK_DEV_SR_VENDOR=yCONFIG_CHR_DEV_SG=mCONFIG_CHR_DEV_SCH=y
# CONFIG_SCSI_MULTI_LUN is not setCONFIG_SCSI_CONSTANTS=yCONFIG_SCSI_LOGGING=y
# CONFIG_SCSI_SCAN_ASYNC is not setCONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=yCONFIG_SCSI_ISCSI_ATTRS=yCONFIG_SCSI_SAS_ATTRS=mCONFIG_SCSI_SAS_LIBSAS=mCONFIG_SCSI_SAS_ATA=yCONFIG_SCSI_SAS_HOST_SMP=yCONFIG_SCSI_SAS_LIBSAS_DEBUG=y
# CONFIG_SCSI_SRP_ATTRS is not set
# CONFIG_SCSI_LOWLEVEL is not setCONFIG_SCSI_DH=yCONFIG_SCSI_DH_RDAC=m
# CONFIG_SCSI_DH_HP_SW is not setCONFIG_SCSI_DH_EMC=yCONFIG_SCSI_DH_ALUA=y
# CONFIG_SCSI_OSD_INITIATOR is not setCONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not setCONFIG_SATA_PMP=yCONFIG_SATA_AHCI=yCONFIG_SATA_SIL24=yCONFIG_ATA_SFF=yCONFIG_SATA_SVW=mCONFIG_ATA_PIIX=y
# CONFIG_SATA_MV is not setCONFIG_SATA_NV=y
# CONFIG_PDC_ADMA is not setCONFIG_SATA_QSTOR=m
# CONFIG_SATA_PROMISE is not setCONFIG_SATA_SX4=mCONFIG_SATA_SIL=yCONFIG_SATA_SIS=yCONFIG_SATA_ULI=mCONFIG_SATA_VIA=m
# CONFIG_SATA_VITESSE is not setCONFIG_SATA_INIC162X=mCONFIG_PATA_ALI=mCONFIG_PATA_AMD=yCONFIG_PATA_ARTOP=mCONFIG_PATA_ATIIXP=y
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not setCONFIG_PATA_CS5520=mCONFIG_PATA_CS5530=mCONFIG_PATA_CYPRESS=yCONFIG_PATA_EFAR=yCONFIG_ATA_GENERIC=yCONFIG_PATA_HPT366=mCONFIG_PATA_HPT37X=yCONFIG_PATA_HPT3X2N=m
# CONFIG_PATA_HPT3X3 is not setCONFIG_PATA_IT821X=mCONFIG_PATA_IT8213=yCONFIG_PATA_JMICRON=mCONFIG_PATA_TRIFLEX=m
# CONFIG_PATA_MARVELL is not setCONFIG_PATA_MPIIX=yCONFIG_PATA_OLDPIIX=yCONFIG_PATA_NETCELL=mCONFIG_PATA_NINJA32=mCONFIG_PATA_NS87410=yCONFIG_PATA_NS87415=m
# CONFIG_PATA_OPTI is not setCONFIG_PATA_OPTIDMA=mCONFIG_PATA_PDC_OLD=mCONFIG_PATA_RADISYS=yCONFIG_PATA_RZ1000=yCONFIG_PATA_SC1200=yCONFIG_PATA_SERVERWORKS=yCONFIG_PATA_PDC2027X=mCONFIG_PATA_SIL680=yCONFIG_PATA_SIS=y
# CONFIG_PATA_VIA is not setCONFIG_PATA_WINBOND=yCONFIG_PATA_PLATFORM=yCONFIG_PATA_SCH=mCONFIG_MD=yCONFIG_BLK_DEV_MD=mCONFIG_MD_LINEAR=mCONFIG_MD_RAID0=mCONFIG_MD_RAID1=mCONFIG_MD_RAID10=mCONFIG_MD_RAID456=mCONFIG_MD_RAID6_PQ=mCONFIG_MD_MULTIPATH=mCONFIG_MD_FAULTY=m
# CONFIG_BLK_DEV_DM is not setCONFIG_FUSION=y
# CONFIG_FUSION_SPI is not set
# CONFIG_FUSION_FC is not set
# CONFIG_FUSION_SAS is not setCONFIG_FUSION_MAX_SGE=128
# CONFIG_FUSION_LOGGING is not set
#
# IEEE 1394 (FireWire) support
#
#
# You can enable one or both FireWire driver stacks. #
#
# See the help texts for more information.
#CONFIG_FIREWIRE=yCONFIG_FIREWIRE_OHCI=mCONFIG_FIREWIRE_OHCI_DEBUG=yCONFIG_FIREWIRE_SBP2=yCONFIG_FIREWIRE_NET=m
# CONFIG_IEEE1394 is not setCONFIG_I2O=y
# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not setCONFIG_I2O_EXT_ADAPTEC=yCONFIG_I2O_EXT_ADAPTEC_DMA64=yCONFIG_I2O_BUS=m
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not setCONFIG_MACINTOSH_DRIVERS=yCONFIG_MAC_EMUMOUSEBTN=yCONFIG_NETDEVICES=yCONFIG_IFB=yCONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not setCONFIG_TUN=mCONFIG_VETH=mCONFIG_ARCNET=yCONFIG_ARCNET_1201=m
# CONFIG_ARCNET_1051 is not setCONFIG_ARCNET_RAW=yCONFIG_ARCNET_CAP=y
CONFIG_ARCNET_COM90xx=y
CONFIG_ARCNET_COM90xxIO=y
# CONFIG_ARCNET_RIM_I is not setCONFIG_ARCNET_COM20020=y
# CONFIG_ARCNET_COM20020_PCI is not setCONFIG_PHYLIB=y
#
# MII PHY device drivers
#CONFIG_MARVELL_PHY=y
# CONFIG_DAVICOM_PHY is not set CONFIG_QSEMI_PHY=mCONFIG_LXT_PHY=mCONFIG_CICADA_PHY=y
# CONFIG_VITESSE_PHY is not set CONFIG_SMSC_PHY=yCONFIG_BROADCOM_PHY=yCONFIG_ICPLUS_PHY=m
# CONFIG_REALTEK_PHY is not set CONFIG_NATIONAL_PHY=mCONFIG_STE10XP=yCONFIG_LSI_ET1011C_PHY=y
# CONFIG_FIXED_PHY is not set CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_GPIO is not set CONFIG_NET_ETHERNET=yCONFIG_MII=yCONFIG_HAPPYMEAL=mCONFIG_SUNGEM=mCONFIG_CASSINI=m
# CONFIG_NET_VENDOR_3COM is not set CONFIG_ETHOC=yCONFIG_DNET=mCONFIG_NET_TULIP=yCONFIG_DE2104X=mCONFIG_DE2104X_DSL=0CONFIG_TULIP=yCONFIG_TULIP_MWI=yCONFIG_TULIP_MMIO=yCONFIG_TULIP_NAPI=y CONFIG_TULIP_NAPI_HW_MITIGATION=y CONFIG_DE4X5=m
# CONFIG_WINBOND_840 is not set CONFIG_DM9102=m
# CONFIG_ULI526X is not setCONFIG_HP100=m
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set CONFIG_NET_PCI=yCONFIG_PCNET32=mCONFIG_AMD8111_ETH=m
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not setCONFIG_FORCEDETH=yCONFIG_FORCEDETH_NAPI=yCONFIG_E100=yCONFIG_FEALNX=yCONFIG_NATSEMI=y
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set CONFIG_8139TOO=y
# CONFIG_8139TOO_PIO is not set CONFIG_8139TOO_TUNE_TWISTER=y
# CONFIG_8139TOO_8129 is not set CONFIG_8139_OLD_RX_RESET=yCONFIG_R6040=mCONFIG_SIS900=mCONFIG_EPIC100=mCONFIG_SMSC9420=yCONFIG_SUNDANCE=mCONFIG_SUNDANCE_MMIO=y
# CONFIG_TLAN is not set
# CONFIG_KS8842 is not set
# CONFIG_VIA_RHINE is not set CONFIG_SC92031=mCONFIG_NET_POCKET=y
# CONFIG_ATP is not set
# CONFIG_DE600 is not setCONFIG_DE620=m
# CONFIG_ATL2 is not set CONFIG_NETDEV_1000=yCONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=yCONFIG_E1000=mCONFIG_E1000E=yCONFIG_IP1000=mCONFIG_IGB=mCONFIG_IGB_DCA=y
# CONFIG_IGBVF is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set CONFIG_YELLOWFIN=mCONFIG_R8169=m
# CONFIG_R8169_VLAN is not set CONFIG_SIS190=mCONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set CONFIG_SKY2=mCONFIG_SKY2_DEBUG=yCONFIG_VIA_VELOCITY=yCONFIG_TIGON3=y
# CONFIG_BNX2 is not setCONFIG_QLA3XXX=mCONFIG_ATL1=m
# CONFIG_ATL1E is not set
# CONFIG_ATL1C is not set
# CONFIG_JME is not set CONFIG_NETDEV_10000=yCONFIG_MDIO=yCONFIG_CHELSIO_T1=y
# CONFIG_CHELSIO_T1_1G is not set CONFIG_CHELSIO_T3_DEPENDS=y CONFIG_CHELSIO_T3=yCONFIG_ENIC=y
# CONFIG_IXGBE is not set
# CONFIG_IXGB is not setCONFIG_S2IO=yCONFIG_MYRI10GE=yCONFIG_NIU=y
# CONFIG_MLX4_EN is not set
# CONFIG_MLX4_CORE is not set
# CONFIG_TEHUTI is not setCONFIG_BNX2X=mCONFIG_QLGE=yCONFIG_SFC=y
# CONFIG_BE2NET is not setCONFIG_TR=mCONFIG_IBMOL=mCONFIG_3C359=m
# CONFIG_TMS380TR is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not setCONFIG_WLAN_80211=y
# CONFIG_LIBERTAS is not set
# CONFIG_AIRO is not set
# CONFIG_ATMEL is not setCONFIG_PRISM54=yCONFIG_USB_ZD1201=m
# CONFIG_IPW2100 is not setCONFIG_IPW2200=mCONFIG_IPW2200_MONITOR=yCONFIG_IPW2200_RADIOTAP=yCONFIG_IPW2200_PROMISCUOUS=y
# CONFIG_IPW2200_QOS is not set
# CONFIG_IPW2200_DEBUG is not setCONFIG_LIBIPW=mCONFIG_LIBIPW_DEBUG=yCONFIG_HOSTAP=yCONFIG_HOSTAP_FIRMWARE=y
# CONFIG_HOSTAP_FIRMWARE_NVRAM is not setCONFIG_HOSTAP_PLX=y
# CONFIG_HOSTAP_PCI is not set
# CONFIG_HERMES is not set
#
# WiMAX Wireless Broadband devices
#CONFIG_WIMAX_I2400M=mCONFIG_WIMAX_I2400M_SDIO=mCONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
#
# USB Network Adapters
#
# CONFIG_USB_CATC is not setCONFIG_USB_KAWETH=m
# CONFIG_USB_PEGASUS is not setCONFIG_USB_RTL8150=y
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
# CONFIG_ATM_DRIVERS is not setCONFIG_FDDI=yCONFIG_DEFXX=mCONFIG_DEFXX_MMIO=yCONFIG_SKFP=mCONFIG_HIPPI=y
# CONFIG_ROADRUNNER is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not setCONFIG_NETCONSOLE=yCONFIG_NETCONSOLE_DYNAMIC=yCONFIG_NETPOLL=yCONFIG_NETPOLL_TRAP=yCONFIG_NET_POLL_CONTROLLER=y
# CONFIG_VIRTIO_NET is not set
# CONFIG_ISDN is not setCONFIG_PHONE=y
#
# Input device support
#CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not setCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not setCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not setCONFIG_INPUT_EVBUG=y
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_KEYBOARD_LKKBD=yCONFIG_KEYBOARD_GPIO=yCONFIG_KEYBOARD_MATRIX=yCONFIG_KEYBOARD_NEWTON=yCONFIG_KEYBOARD_STOWAWAY=mCONFIG_KEYBOARD_SUNKBD=yCONFIG_KEYBOARD_XTKBD=yCONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not setCONFIG_MOUSE_APPLETOUCH=mCONFIG_MOUSE_BCM5974=yCONFIG_MOUSE_VSXXXAA=m
# CONFIG_MOUSE_GPIO is not setCONFIG_MOUSE_SYNAPTICS_I2C=y
# CONFIG_INPUT_JOYSTICK is not setCONFIG_INPUT_TABLET=yCONFIG_TABLET_USB_ACECAD=m
# CONFIG_TABLET_USB_AIPTEK is not set
# CONFIG_TABLET_USB_GTCO is not set
# CONFIG_TABLET_USB_KBTAB is not setCONFIG_TABLET_USB_WACOM=m
# CONFIG_INPUT_TOUCHSCREEN is not setCONFIG_INPUT_MISC=y
# CONFIG_INPUT_ATI_REMOTE is not setCONFIG_INPUT_ATI_REMOTE2=y
# CONFIG_INPUT_KEYSPAN_REMOTE is not setCONFIG_INPUT_POWERMATE=y
# CONFIG_INPUT_YEALINK is not setCONFIG_INPUT_CM109=mCONFIG_INPUT_TWL4030_PWRBUTTON=yCONFIG_INPUT_UINPUT=yCONFIG_INPUT_PCF50633_PMU=yCONFIG_INPUT_GPIO_ROTARY_ENCODER=y
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not setCONFIG_SERIO_PARKBD=mCONFIG_SERIO_PCIPS2=yCONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not setCONFIG_GAMEPORT=yCONFIG_GAMEPORT_NS558=mCONFIG_GAMEPORT_L4=mCONFIG_GAMEPORT_EMU10K1=mCONFIG_GAMEPORT_FM801=m
#
# Character devices
#CONFIG_VT=y
# CONFIG_CONSOLE_TRANSLATIONS is not setCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=yCONFIG_DEVKMEM=yCONFIG_SERIAL_NONSTANDARD=yCONFIG_COMPUTONE=yCONFIG_ROCKETPORT=yCONFIG_CYCLADES=yCONFIG_CYZ_INTR=yCONFIG_DIGIEPCA=mCONFIG_MOXA_INTELLIO=m
# CONFIG_MOXA_SMARTIO is not setCONFIG_ISI=m
# CONFIG_SYNCLINK is not setCONFIG_SYNCLINKMP=m
# CONFIG_SYNCLINK_GT is not setCONFIG_N_HDLC=mCONFIG_RISCOM8=yCONFIG_SPECIALIX=yCONFIG_SX=yCONFIG_RIO=mCONFIG_RIO_OLDPCI=yCONFIG_STALDRV=yCONFIG_STALLION=mCONFIG_ISTALLION=yCONFIG_NOZOMI=y
#
# Serial drivers
#CONFIG_SERIAL_8250=yCONFIG_SERIAL_8250_CONSOLE=yCONFIG_FIX_EARLYCON_MEM=y
# CONFIG_SERIAL_8250_PCI is not setCONFIG_SERIAL_8250_NR_UARTS=4CONFIG_SERIAL_8250_RUNTIME_UARTS=4CONFIG_SERIAL_8250_EXTENDED=yCONFIG_SERIAL_8250_MANY_PORTS=y
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_RSA is not set
#
# Non-8250 serial port support
#CONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not setCONFIG_UNIX98_PTYS=yCONFIG_DEVPTS_MULTIPLE_INSTANCES=yCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256CONFIG_PRINTER=mCONFIG_LP_CONSOLE=yCONFIG_PPDEV=m
# CONFIG_VIRTIO_CONSOLE is not setCONFIG_IPMI_HANDLER=y
# CONFIG_IPMI_PANIC_EVENT is not setCONFIG_IPMI_DEVICE_INTERFACE=yCONFIG_IPMI_SI=m
# CONFIG_IPMI_WATCHDOG is not setCONFIG_IPMI_POWEROFF=yCONFIG_HW_RANDOM=yCONFIG_HW_RANDOM_TIMERIOMEM=mCONFIG_HW_RANDOM_INTEL=m
# CONFIG_HW_RANDOM_AMD is not setCONFIG_HW_RANDOM_VIA=mCONFIG_HW_RANDOM_VIRTIO=mCONFIG_NVRAM=yCONFIG_RTC=mCONFIG_GEN_RTC=m
# CONFIG_GEN_RTC_X is not set
# CONFIG_R3964 is not setCONFIG_APPLICOM=mCONFIG_MWAVE=m
CONFIG_PC8736x_GPIO=yCONFIG_NSC_GPIO=yCONFIG_RAW_DRIVER=mCONFIG_MAX_RAW_DEVS=256
# CONFIG_HANGCHECK_TIMER is not setCONFIG_TCG_TPM=mCONFIG_TCG_NSC=mCONFIG_TCG_ATMEL=m
# CONFIG_TELCLOCK is not setCONFIG_DEVPORT=yCONFIG_I2C=yCONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not setCONFIG_I2C_HELPER_AUTO=yCONFIG_I2C_ALGOBIT=yCONFIG_I2C_ALGOPCA=m
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#CONFIG_I2C_ALI1535=m
# CONFIG_I2C_ALI1563 is not setCONFIG_I2C_ALI15X3=y
# CONFIG_I2C_AMD756 is not setCONFIG_I2C_AMD8111=m
# CONFIG_I2C_I801 is not setCONFIG_I2C_ISCH=m
# CONFIG_I2C_PIIX4 is not setCONFIG_I2C_NFORCE2=y
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not setCONFIG_I2C_VIA=yCONFIG_I2C_VIAPRO=m
#
# I2C system bus drivers (mostly embedded / system-on-chip) #CONFIG_I2C_GPIO=mCONFIG_I2C_OCORES=mCONFIG_I2C_SIMTEC=y
#
# External I2C/SMBus adapter drivers
#CONFIG_I2C_PARPORT=mCONFIG_I2C_PARPORT_LIGHT=mCONFIG_I2C_TAOS_EVM=y
# CONFIG_I2C_TINY_USB is not set
#
# Graphics adapter I2C/DDC channel drivers
#CONFIG_I2C_VOODOO3=y
#
# Other I2C/SMBus bus drivers
#CONFIG_I2C_PCA_PLATFORM=mCONFIG_I2C_STUB=m
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
# CONFIG_SENSORS_PCF8574 is not setCONFIG_PCF8575=mCONFIG_SENSORS_TSL2550=m
# CONFIG_I2C_DEBUG_CORE is not setCONFIG_I2C_DEBUG_ALGO=yCONFIG_I2C_DEBUG_BUS=yCONFIG_I2C_DEBUG_CHIP=y
# CONFIG_SPI is not set
#
# PPS support
#CONFIG_PPS=mCONFIG_PPS_DEBUG=yCONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=yCONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_GPIO_SYSFS is not set
#
# Memory mapped GPIO expanders:
#
#
# I2C GPIO expanders:
#
# CONFIG_GPIO_MAX732X is not setCONFIG_GPIO_PCA953X=y
# CONFIG_GPIO_PCF857X is not setCONFIG_GPIO_TWL4030=m
#
# PCI GPIO expanders:
#CONFIG_GPIO_BT8XX=m
#
# SPI GPIO expanders:
#
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not setCONFIG_HWMON=mCONFIG_HWMON_VID=m
# CONFIG_SENSORS_ABITUGURU is not setCONFIG_SENSORS_ABITUGURU3=m
# CONFIG_SENSORS_AD7414 is not set
# CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADM1021 is not setCONFIG_SENSORS_ADM1025=m
# CONFIG_SENSORS_ADM1026 is not setCONFIG_SENSORS_ADM1029=mCONFIG_SENSORS_ADM1031=m
# CONFIG_SENSORS_ADM9240 is not setCONFIG_SENSORS_ADT7462=mCONFIG_SENSORS_ADT7470=m
# CONFIG_SENSORS_ADT7473 is not set
# CONFIG_SENSORS_ADT7475 is not setCONFIG_SENSORS_K8TEMP=mCONFIG_SENSORS_ASB100=m
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not setCONFIG_SENSORS_I5K_AMB=mCONFIG_SENSORS_F71805F=m
# CONFIG_SENSORS_F71882FG is not setCONFIG_SENSORS_F75375S=mCONFIG_SENSORS_FSCHER=mCONFIG_SENSORS_FSCPOS=mCONFIG_SENSORS_FSCHMD=m
# CONFIG_SENSORS_G760A is not set
# CONFIG_SENSORS_GL518SM is not setCONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_CORETEMP is not setCONFIG_SENSORS_IBMAEM=m
# CONFIG_SENSORS_IBMPEX is not setCONFIG_SENSORS_IT87=mCONFIG_SENSORS_LM63=mCONFIG_SENSORS_LM75=m
# CONFIG_SENSORS_LM77 is not setCONFIG_SENSORS_LM78=m
# CONFIG_SENSORS_LM80 is not setCONFIG_SENSORS_LM83=mCONFIG_SENSORS_LM85=mCONFIG_SENSORS_LM87=mCONFIG_SENSORS_LM90=m
# CONFIG_SENSORS_LM92 is not setCONFIG_SENSORS_LM93=mCONFIG_SENSORS_LTC4215=m
# CONFIG_SENSORS_LTC4245 is not set
# CONFIG_SENSORS_LM95241 is not set
# CONFIG_SENSORS_MAX1619 is not setCONFIG_SENSORS_MAX6650=m
# CONFIG_SENSORS_PC87360 is not setCONFIG_SENSORS_PC87427=mCONFIG_SENSORS_PCF8591=mCONFIG_SENSORS_SHT15=m
# CONFIG_SENSORS_SIS5595 is not setCONFIG_SENSORS_DME1737=m
# CONFIG_SENSORS_SMSC47M1 is not setCONFIG_SENSORS_SMSC47M192=mCONFIG_SENSORS_SMSC47B397=mCONFIG_SENSORS_ADS7828=mCONFIG_SENSORS_THMC50=mCONFIG_SENSORS_TMP401=mCONFIG_SENSORS_VIA686A=mCONFIG_SENSORS_VT1211=mCONFIG_SENSORS_VT8231=mCONFIG_SENSORS_W83781D=mCONFIG_SENSORS_W83791D=mCONFIG_SENSORS_W83792D=m
# CONFIG_SENSORS_W83793 is not setCONFIG_SENSORS_W83L785TS=mCONFIG_SENSORS_W83L786NG=mCONFIG_SENSORS_W83627HF=mCONFIG_SENSORS_W83627EHF=mCONFIG_SENSORS_HDAPS=m
# CONFIG_SENSORS_APPLESMC is not setCONFIG_HWMON_DEBUG_CHIP=yCONFIG_THERMAL=yCONFIG_WATCHDOG=yCONFIG_WATCHDOG_NOWAYOUT=y
#
# Watchdog Device Drivers
#CONFIG_SOFT_WATCHDOG=yCONFIG_TWL4030_WATCHDOG=mCONFIG_ACQUIRE_WDT=yCONFIG_ADVANTECH_WDT=y
# CONFIG_ALIM1535_WDT is not setCONFIG_ALIM7101_WDT=mCONFIG_SC520_WDT=m
# CONFIG_EUROTECH_WDT is not setCONFIG_IB700_WDT=m
# CONFIG_IBMASR is not setCONFIG_WAFER_WDT=yCONFIG_I6300ESB_WDT=m
# CONFIG_ITCO_WDT is not set
# CONFIG_IT8712F_WDT is not set
# CONFIG_IT87_WDT is not set
# CONFIG_HP_WATCHDOG is not setCONFIG_SC1200_WDT=mCONFIG_PC87413_WDT=yCONFIG_60XX_WDT=mCONFIG_SBC8360_WDT=m
# CONFIG_CPU5_WDT is not set
# CONFIG_SMSC_SCH311X_WDT is not setCONFIG_SMSC37B787_WDT=mCONFIG_W83627HF_WDT=m
# CONFIG_W83697HF_WDT is not setCONFIG_W83697UG_WDT=yCONFIG_W83877F_WDT=yCONFIG_W83977F_WDT=mCONFIG_MACHZ_WDT=mCONFIG_SBC_EPX_C3_WATCHDOG=y
#
# PCI-based Watchdog Cards
#CONFIG_PCIPCWATCHDOG=mCONFIG_WDTPCI=y
#
# USB-based Watchdog Cards
#CONFIG_USBPCWATCHDOG=mCONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
#
# Multifunction device drivers
#CONFIG_MFD_CORE=mCONFIG_MFD_SM501=mCONFIG_MFD_SM501_GPIO=y
# CONFIG_HTC_PASIC3 is not set
# CONFIG_TPS65010 is not setCONFIG_TWL4030_CORE=y
# CONFIG_MFD_TMIO is not setCONFIG_PMIC_DA903X=yCONFIG_MFD_WM8400=mCONFIG_MFD_PCF50633=yCONFIG_PCF50633_ADC=y
# CONFIG_PCF50633_GPIO is not setCONFIG_AB3100_CORE=yCONFIG_REGULATOR=yCONFIG_REGULATOR_DEBUG=yCONFIG_REGULATOR_FIXED_VOLTAGE=yCONFIG_REGULATOR_VIRTUAL_CONSUMER=mCONFIG_REGULATOR_USERSPACE_CONSUMER=mCONFIG_REGULATOR_BQ24022=mCONFIG_REGULATOR_MAX1586=m
# CONFIG_REGULATOR_TWL4030 is not setCONFIG_REGULATOR_WM8400=mCONFIG_REGULATOR_DA903X=mCONFIG_REGULATOR_PCF50633=mCONFIG_REGULATOR_LP3971=m
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#CONFIG_AGP=yCONFIG_AGP_AMD64=yCONFIG_AGP_INTEL=yCONFIG_AGP_SIS=mCONFIG_AGP_VIA=m
# CONFIG_DRM is not setCONFIG_VGASTATE=yCONFIG_VIDEO_OUTPUT_CONTROL=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=yCONFIG_FB_DDC=yCONFIG_FB_BOOT_VESA_SUPPORT=yCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not setCONFIG_FB_SYS_FILLRECT=yCONFIG_FB_SYS_COPYAREA=yCONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not setCONFIG_FB_SYS_FOPS=yCONFIG_FB_DEFERRED_IO=yCONFIG_FB_HECUBA=yCONFIG_FB_SVGALIB=m
# CONFIG_FB_MACMODES is not setCONFIG_FB_BACKLIGHT=yCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not setCONFIG_FB_PM2=m
# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
# CONFIG_FB_CYBER2000 is not setCONFIG_FB_ARC=y
# CONFIG_FB_ASILIANT is not setCONFIG_FB_IMSTT=y
# CONFIG_FB_VGA16 is not setCONFIG_FB_UVESA=y
# CONFIG_FB_VESA is not setCONFIG_FB_N411=yCONFIG_FB_HGA=mCONFIG_FB_HGA_ACCEL=yCONFIG_FB_S1D13XXX=yCONFIG_FB_NVIDIA=yCONFIG_FB_NVIDIA_I2C=yCONFIG_FB_NVIDIA_DEBUG=yCONFIG_FB_NVIDIA_BACKLIGHT=y
# CONFIG_FB_RIVA is not set
# CONFIG_FB_LE80578 is not setCONFIG_FB_INTEL=y
# CONFIG_FB_INTEL_DEBUG is not setCONFIG_FB_INTEL_I2C=y
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not setCONFIG_FB_ATY=m
# CONFIG_FB_ATY_CT is not setCONFIG_FB_ATY_GX=yCONFIG_FB_ATY_BACKLIGHT=yCONFIG_FB_S3=mCONFIG_FB_SAVAGE=y
# CONFIG_FB_SAVAGE_I2C is not set
# CONFIG_FB_SAVAGE_ACCEL is not setCONFIG_FB_SIS=yCONFIG_FB_SIS_300=yCONFIG_FB_SIS_315=yCONFIG_FB_VIA=yCONFIG_FB_NEOMAGIC=yCONFIG_FB_KYRO=y
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not setCONFIG_FB_VT8623=m
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not setCONFIG_FB_PM3=mCONFIG_FB_CARMINE=yCONFIG_FB_CARMINE_DRAM_EVAL=y
# CONFIG_CARMINE_DRAM_CUSTOM is not setCONFIG_FB_GEODE=yCONFIG_FB_GEODE_LX=y
# CONFIG_FB_GEODE_GX is not setCONFIG_FB_GEODE_GX1=mCONFIG_FB_TMIO=m
# CONFIG_FB_TMIO_ACCELL is not setCONFIG_FB_SM501=m
# CONFIG_FB_VIRTUAL is not setCONFIG_FB_METRONOME=m
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not setCONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not setCONFIG_BACKLIGHT_CLASS_DEVICE=yCONFIG_BACKLIGHT_GENERIC=m
# CONFIG_BACKLIGHT_PROGEAR is not setCONFIG_BACKLIGHT_DA903X=m
# CONFIG_BACKLIGHT_MBP_NVIDIA is not setCONFIG_BACKLIGHT_SAHARA=y
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not setCONFIG_DUMMY_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE is not set
CONFIG_FONT_8x16=yCONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not setCONFIG_LOGO_LINUX_VGA16=yCONFIG_LOGO_LINUX_CLUT224=yCONFIG_SOUND=mCONFIG_SOUND_OSS_CORE=yCONFIG_SND=mCONFIG_SND_TIMER=mCONFIG_SND_PCM=mCONFIG_SND_JACK=y
# CONFIG_SND_SEQUENCER is not setCONFIG_SND_OSSEMUL=y
# CONFIG_SND_MIXER_OSS is not setCONFIG_SND_PCM_OSS=m
# CONFIG_SND_PCM_OSS_PLUGINS is not setCONFIG_SND_HRTIMER=mCONFIG_SND_RTCTIMER=mCONFIG_SND_DYNAMIC_MINORS=yCONFIG_SND_SUPPORT_OLD_API=yCONFIG_SND_VERBOSE_PROCFS=yCONFIG_SND_VERBOSE_PRINTK=yCONFIG_SND_DEBUG=yCONFIG_SND_DEBUG_VERBOSE=yCONFIG_SND_PCM_XRUN_DEBUG=y
# CONFIG_SND_RAWMIDI_SEQ is not set
# CONFIG_SND_OPL3_LIB_SEQ is not set
# CONFIG_SND_OPL4_LIB_SEQ is not set
# CONFIG_SND_SBAWE_SEQ is not set
# CONFIG_SND_EMU10K1_SEQ is not set
# CONFIG_SND_DRIVERS is not set
# CONFIG_SND_PCI is not set
# CONFIG_SND_USB is not setCONFIG_SND_SOC=mCONFIG_SND_SOC_I2C_AND_SPI=m
# CONFIG_SND_SOC_ALL_CODECS is not setCONFIG_SOUND_PRIME=m
# CONFIG_SOUND_OSS is not set
# CONFIG_HID_SUPPORT is not setCONFIG_HID=yCONFIG_USB_SUPPORT=yCONFIG_USB_ARCH_HAS_HCD=yCONFIG_USB_ARCH_HAS_OHCI=yCONFIG_USB_ARCH_HAS_EHCI=yCONFIG_USB=y
# CONFIG_USB_DEBUG is not setCONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# Miscellaneous USB options
#CONFIG_USB_DEVICEFS=yCONFIG_USB_DEVICE_CLASS=yCONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_OTG is not setCONFIG_USB_OTG_WHITELIST=yCONFIG_USB_OTG_BLACKLIST_HUB=yCONFIG_USB_MON=mCONFIG_USB_WUSB=yCONFIG_USB_WUSB_CBAF=yCONFIG_USB_WUSB_CBAF_DEBUG=y
#
# USB Host Controller Drivers
#CONFIG_USB_C67X00_HCD=mCONFIG_USB_XHCI_HCD=m
# CONFIG_USB_XHCI_HCD_DEBUGGING is not setCONFIG_USB_EHCI_HCD=yCONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not setCONFIG_USB_OXU210HP_HCD=y
# CONFIG_USB_ISP116X_HCD is not setCONFIG_USB_ISP1760_HCD=mCONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not setCONFIG_USB_OHCI_LITTLE_ENDIAN=yCONFIG_USB_UHCI_HCD=yCONFIG_USB_U132_HCD=mCONFIG_USB_SL811_HCD=mCONFIG_USB_R8A66597_HCD=y
# CONFIG_USB_HWA_HCD is not set
#
# USB Device Class drivers
#CONFIG_USB_ACM=m
# CONFIG_USB_PRINTER is not setCONFIG_USB_WDM=yCONFIG_USB_TMC=y
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may #
#
# also be needed; see USB_STORAGE Help for more info # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set CONFIG_USB_STORAGE_FREECOM=m CONFIG_USB_STORAGE_ISD200=m CONFIG_USB_STORAGE_USBAT=m CONFIG_USB_STORAGE_SDDR09=m # CONFIG_USB_STORAGE_SDDR55 is not set CONFIG_USB_STORAGE_JUMPSHOT=m CONFIG_USB_STORAGE_ALAUDA=m # CONFIG_USB_STORAGE_ONETOUCH is not set CONFIG_USB_STORAGE_KARMA=m CONFIG_USB_STORAGE_CYPRESS_ATACB=m CONFIG_USB_LIBUSUAL=y
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not setCONFIG_USB_MICROTEK=m
#
# USB port drivers
#
# CONFIG_USB_USS720 is not setCONFIG_USB_SERIAL=mCONFIG_USB_EZUSB=yCONFIG_USB_SERIAL_GENERIC=yCONFIG_USB_SERIAL_AIRCABLE=m
# CONFIG_USB_SERIAL_ARK3116 is not setCONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not setCONFIG_USB_SERIAL_WHITEHEAT=mCONFIG_USB_SERIAL_DIGI_ACCELEPORT=mCONFIG_USB_SERIAL_CP210X=mCONFIG_USB_SERIAL_CYPRESS_M8=m
# CONFIG_USB_SERIAL_EMPEG is not setCONFIG_USB_SERIAL_FTDI_SIO=m
# CONFIG_USB_SERIAL_FUNSOFT is not setCONFIG_USB_SERIAL_VISOR=m
# CONFIG_USB_SERIAL_IPAQ is not setCONFIG_USB_SERIAL_IR=mCONFIG_USB_SERIAL_EDGEPORT=mCONFIG_USB_SERIAL_EDGEPORT_TI=m
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not setCONFIG_USB_SERIAL_IUU=m
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not setCONFIG_USB_SERIAL_KEYSPAN=mCONFIG_USB_SERIAL_KEYSPAN_MPR=yCONFIG_USB_SERIAL_KEYSPAN_USA28=y
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not setCONFIG_USB_SERIAL_KEYSPAN_USA28XB=yCONFIG_USB_SERIAL_KEYSPAN_USA19=y
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not setCONFIG_USB_SERIAL_KEYSPAN_USA19QW=yCONFIG_USB_SERIAL_KEYSPAN_USA19QI=yCONFIG_USB_SERIAL_KEYSPAN_USA49W=yCONFIG_USB_SERIAL_KEYSPAN_USA49WLC=yCONFIG_USB_SERIAL_KLSI=m
# CONFIG_USB_SERIAL_KOBIL_SCT is not setCONFIG_USB_SERIAL_MCT_U232=mCONFIG_USB_SERIAL_MOS7720=mCONFIG_USB_SERIAL_MOS7840=mCONFIG_USB_SERIAL_MOTOROLA=m
# CONFIG_USB_SERIAL_NAVMAN is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_OTI6858 is not setCONFIG_USB_SERIAL_QUALCOMM=m
# CONFIG_USB_SERIAL_SPCP8X5 is not setCONFIG_USB_SERIAL_HP4X=mCONFIG_USB_SERIAL_SAFE=mCONFIG_USB_SERIAL_SAFE_PADDED=yCONFIG_USB_SERIAL_SIEMENS_MPI=mCONFIG_USB_SERIAL_SIERRAWIRELESS=mCONFIG_USB_SERIAL_SYMBOL=m
# CONFIG_USB_SERIAL_TI is not setCONFIG_USB_SERIAL_CYBERJACK=m
# CONFIG_USB_SERIAL_XIRCOM is not setCONFIG_USB_SERIAL_OPTION=mCONFIG_USB_SERIAL_OMNINET=m
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_DEBUG is not set
#
# USB Miscellaneous drivers
#CONFIG_USB_EMI62=mCONFIG_USB_EMI26=mCONFIG_USB_ADUTUX=mCONFIG_USB_SEVSEG=yCONFIG_USB_RIO500=m
# CONFIG_USB_LEGOTOWER is not setCONFIG_USB_LCD=mCONFIG_USB_BERRY_CHARGE=m
# CONFIG_USB_LED is not setCONFIG_USB_CYPRESS_CY7C63=mCONFIG_USB_CYTHERM=yCONFIG_USB_IDMOUSE=yCONFIG_USB_FTDI_ELAN=mCONFIG_USB_APPLEDISPLAY=yCONFIG_USB_SISUSBVGA=mCONFIG_USB_SISUSBVGA_CON=y
# CONFIG_USB_LD is not setCONFIG_USB_TRANCEVIBRATOR=mCONFIG_USB_IOWARRIOR=yCONFIG_USB_TEST=mCONFIG_USB_ISIGHTFW=yCONFIG_USB_VST=y
# CONFIG_USB_ATM is not set
#
# OTG and related infrastructure
#CONFIG_USB_OTG_UTILS=yCONFIG_USB_GPIO_VBUS=y
# CONFIG_NOP_USB_XCEIV is not setCONFIG_UWB=y
# CONFIG_UWB_HWA is not setCONFIG_UWB_WHCI=mCONFIG_UWB_WLP=mCONFIG_MMC=yCONFIG_MMC_DEBUG=y
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD/SDIO Card Drivers
#
# CONFIG_MMC_BLOCK is not set
# CONFIG_SDIO_UART is not setCONFIG_MMC_TEST=y
#
# MMC/SD/SDIO Host Controller Drivers
#CONFIG_MMC_SDHCI=yCONFIG_MMC_SDHCI_PCI=yCONFIG_MMC_RICOH_MMC=m
# CONFIG_MMC_SDHCI_PLTFM is not setCONFIG_MMC_WBSD=mCONFIG_MMC_TIFM_SD=yCONFIG_MMC_CB710=m
# CONFIG_MMC_VIA_SDMMC is not set
# CONFIG_MEMSTICK is not setCONFIG_NEW_LEDS=y
# CONFIG_LEDS_CLASS is not set
#
# LED drivers
#
#
# LED Triggers
#CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not setCONFIG_LEDS_TRIGGER_HEARTBEAT=yCONFIG_LEDS_TRIGGER_BACKLIGHT=mCONFIG_LEDS_TRIGGER_GPIO=mCONFIG_LEDS_TRIGGER_DEFAULT_ON=y
#
# iptables trigger is under Netfilter config (LED target) # # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC=y
#
# Reporting subsystems
#CONFIG_EDAC_DEBUG=yCONFIG_EDAC_DEBUG_VERBOSE=y
# CONFIG_EDAC_MM_EDAC is not set
# CONFIG_RTC_CLASS is not setCONFIG_DMADEVICES=y
#
# DMA Devices
#CONFIG_INTEL_IOATDMA=mCONFIG_DMA_ENGINE=y
#
# DMA Clients
#CONFIG_NET_DMA=y
# CONFIG_ASYNC_TX_DMA is not setCONFIG_DMATEST=yCONFIG_DCA=mCONFIG_AUXDISPLAY=yCONFIG_KS0108=mCONFIG_KS0108_PORT=0x378CONFIG_KS0108_DELAY=2CONFIG_CFAG12864B=mCONFIG_CFAG12864B_RATE=20CONFIG_UIO=y
# CONFIG_UIO_CIF is not setCONFIG_UIO_PDRV=yCONFIG_UIO_PDRV_GENIRQ=y
# CONFIG_UIO_SMX is not setCONFIG_UIO_AEC=mCONFIG_UIO_SERCOS3=m
#
# TI VLYNQ
#
# CONFIG_STAGING is not setCONFIG_X86_PLATFORM_DEVICES=y
#
# Firmware Drivers
#CONFIG_EDD=yCONFIG_EDD_OFF=y
# CONFIG_FIRMWARE_MEMMAP is not setCONFIG_DELL_RBU=m
# CONFIG_DCDBAS is not setCONFIG_DMIID=y
# CONFIG_ISCSI_IBFT_FIND is not set
#
# File systems
#
# CONFIG_EXT2_FS is not setCONFIG_EXT3_FS=yCONFIG_EXT3_DEFAULTS_TO_ORDERED=yCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not setCONFIG_JBD=yCONFIG_JBD_DEBUG=yCONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not setCONFIG_FS_MBCACHE=yCONFIG_REISERFS_FS=yCONFIG_REISERFS_CHECK=y
# CONFIG_REISERFS_PROC_INFO is not setCONFIG_REISERFS_FS_XATTR=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_REISERFS_FS_SECURITY=yCONFIG_JFS_FS=yCONFIG_JFS_POSIX_ACL=y
# CONFIG_JFS_SECURITY is not setCONFIG_JFS_DEBUG=yCONFIG_JFS_STATISTICS=yCONFIG_FS_POSIX_ACL=yCONFIG_XFS_FS=m
# CONFIG_XFS_QUOTA is not setCONFIG_XFS_POSIX_ACL=yCONFIG_XFS_RT=y
# CONFIG_XFS_DEBUG is not setCONFIG_GFS2_FS=yCONFIG_GFS2_FS_LOCKING_DLM=yCONFIG_OCFS2_FS=m
# CONFIG_OCFS2_FS_O2CB is not setCONFIG_OCFS2_FS_USERSPACE_CLUSTER=mCONFIG_OCFS2_FS_STATS=yCONFIG_OCFS2_DEBUG_MASKLOG=yCONFIG_OCFS2_DEBUG_FS=y
# CONFIG_OCFS2_FS_POSIX_ACL is not setCONFIG_BTRFS_FS=m
# CONFIG_BTRFS_FS_POSIX_ACL is not setCONFIG_FILE_LOCKING=yCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=yCONFIG_QUOTA=yCONFIG_QUOTA_NETLINK_INTERFACE=yCONFIG_PRINT_QUOTA_WARNING=yCONFIG_QUOTA_TREE=mCONFIG_QFMT_V1=y
# CONFIG_QFMT_V2 is not setCONFIG_QUOTACTL=yCONFIG_AUTOFS_FS=m
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not setCONFIG_GENERIC_ACL=y
#
# Caches
#CONFIG_FSCACHE=yCONFIG_FSCACHE_STATS=y
# CONFIG_FSCACHE_HISTOGRAM is not setCONFIG_FSCACHE_DEBUG=yCONFIG_CACHEFILES=mCONFIG_CACHEFILES_DEBUG=y
# CONFIG_CACHEFILES_HISTOGRAM is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not setCONFIG_UDF_FS=yCONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#CONFIG_FAT_FS=mCONFIG_MSDOS_FS=m
# CONFIG_VFAT_FS is not setCONFIG_FAT_DEFAULT_CODEPAGE=437CONFIG_NTFS_FS=yCONFIG_NTFS_DEBUG=yCONFIG_NTFS_RW=y
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_PROC_VMCORE=yCONFIG_PROC_SYSCTL=yCONFIG_PROC_PAGE_MONITOR=yCONFIG_SYSFS=yCONFIG_TMPFS=yCONFIG_TMPFS_POSIX_ACL=yCONFIG_HUGETLBFS=yCONFIG_HUGETLB_PAGE=yCONFIG_CONFIGFS_FS=yCONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not setCONFIG_AFFS_FS=mCONFIG_ECRYPT_FS=yCONFIG_HFS_FS=m
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not setCONFIG_EFS_FS=y
# CONFIG_CRAMFS is not setCONFIG_SQUASHFS=y
# CONFIG_SQUASHFS_EMBEDDED is not setCONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3CONFIG_VXFS_FS=mCONFIG_MINIX_FS=y
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not setCONFIG_QNX4FS_FS=mCONFIG_ROMFS_FS=yCONFIG_ROMFS_BACKED_BY_BLOCK=y
# CONFIG_ROMFS_BACKED_BY_MTD is not set
# CONFIG_ROMFS_BACKED_BY_BOTH is not setCONFIG_ROMFS_ON_BLOCK=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not setCONFIG_NILFS2_FS=m
# CONFIG_NETWORK_FILESYSTEMS is not setCONFIG_EXPORTFS=m
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=yCONFIG_ACORN_PARTITION=yCONFIG_ACORN_PARTITION_CUMANA=yCONFIG_ACORN_PARTITION_EESOX=y
# CONFIG_ACORN_PARTITION_ICS is not setCONFIG_ACORN_PARTITION_ADFS=yCONFIG_ACORN_PARTITION_POWERTEC=yCONFIG_ACORN_PARTITION_RISCIX=y
# CONFIG_OSF_PARTITION is not setCONFIG_AMIGA_PARTITION=y
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not setCONFIG_MSDOS_PARTITION=yCONFIG_BSD_DISKLABEL=yCONFIG_MINIX_SUBPARTITION=yCONFIG_SOLARIS_X86_PARTITION=yCONFIG_UNIXWARE_DISKLABEL=yCONFIG_LDM_PARTITION=yCONFIG_LDM_DEBUG=yCONFIG_SGI_PARTITION=yCONFIG_ULTRIX_PARTITION=yCONFIG_SUN_PARTITION=yCONFIG_KARMA_PARTITION=yCONFIG_EFI_PARTITION=yCONFIG_SYSV68_PARTITION=yCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=m
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not setCONFIG_NLS_CODEPAGE_852=m
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not setCONFIG_NLS_CODEPAGE_861=yCONFIG_NLS_CODEPAGE_862=yCONFIG_NLS_CODEPAGE_863=y
# CONFIG_NLS_CODEPAGE_864 is not setCONFIG_NLS_CODEPAGE_865=m
# CONFIG_NLS_CODEPAGE_866 is not setCONFIG_NLS_CODEPAGE_869=yCONFIG_NLS_CODEPAGE_936=y
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not setCONFIG_NLS_CODEPAGE_1251=mCONFIG_NLS_ASCII=yCONFIG_NLS_ISO8859_1=mCONFIG_NLS_ISO8859_2=yCONFIG_NLS_ISO8859_3=m
# CONFIG_NLS_ISO8859_4 is not setCONFIG_NLS_ISO8859_5=y
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not setCONFIG_NLS_KOI8_R=yCONFIG_NLS_KOI8_U=m
# CONFIG_NLS_UTF8 is not setCONFIG_DLM=yCONFIG_DLM_DEBUG=y
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=yCONFIG_ALLOW_WARNINGS=yCONFIG_ENABLE_WARN_DEPRECATED=y
# CONFIG_ENABLE_MUST_CHECK is not setCONFIG_FRAME_WARN=2048CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not setCONFIG_DEBUG_FS=yCONFIG_HEADERS_CHECK=yCONFIG_DEBUG_SECTION_MISMATCH=yCONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not setCONFIG_DETECT_SOFTLOCKUP=yCONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=yCONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not setCONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not setCONFIG_TIMER_STATS=yCONFIG_DEBUG_OBJECTS=y
# CONFIG_DEBUG_OBJECTS_SELFTEST is not setCONFIG_DEBUG_OBJECTS_FREE=yCONFIG_DEBUG_OBJECTS_TIMERS=yCONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1CONFIG_DEBUG_KMEMLEAK=yCONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=400CONFIG_DEBUG_KMEMLEAK_TEST=yCONFIG_DEBUG_RT_MUTEXES=yCONFIG_DEBUG_PI_LIST=yCONFIG_RT_MUTEX_TESTER=yCONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=yCONFIG_DEBUG_LOCK_ALLOC=yCONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not setCONFIG_TRACE_IRQFLAGS=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not setCONFIG_DEBUG_LOCKING_API_SELFTESTS=yCONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VIRTUAL is not setCONFIG_DEBUG_WRITECOUNT=y
# CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not setCONFIG_DEBUG_NOTIFIERS=yCONFIG_ARCH_WANT_FRAME_POINTERS=yCONFIG_FRAME_POINTER=yCONFIG_BOOT_PRINTK_DELAY=yCONFIG_RCU_TORTURE_TEST=yCONFIG_RCU_TORTURE_TEST_RUNNABLE=yCONFIG_RCU_CPU_STALL_DETECTOR=yCONFIG_BACKTRACE_SELF_TEST=m
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not setCONFIG_SYSCTL_SYSCALL_CHECK=yCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_NOP_TRACER=yCONFIG_HAVE_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=yCONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=yCONFIG_HAVE_DYNAMIC_FTRACE=yCONFIG_HAVE_FTRACE_MCOUNT_RECORD=yCONFIG_HAVE_SYSCALL_TRACEPOINTS=yCONFIG_RING_BUFFER=yCONFIG_EVENT_TRACING=yCONFIG_CONTEXT_SWITCH_TRACER=yCONFIG_TRACING=yCONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not setCONFIG_PROVIDE_OHCI1394_DMA_INIT=y
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
# CONFIG_BUILD_DOCSRC is not setCONFIG_DYNAMIC_DEBUG=y
# CONFIG_DMA_API_DEBUG is not setCONFIG_SAMPLES=yCONFIG_SAMPLE_TRACEPOINTS=mCONFIG_SAMPLE_TRACE_EVENTS=m
# CONFIG_SAMPLE_KOBJECT is not set
# CONFIG_SAMPLE_HW_BREAKPOINT is not setCONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not setCONFIG_HAVE_ARCH_KMEMCHECK=yCONFIG_KMEMCHECK=y
# CONFIG_KMEMCHECK_DISABLED_BY_DEFAULT is not setCONFIG_KMEMCHECK_ENABLED_BY_DEFAULT=y
# CONFIG_KMEMCHECK_ONESHOT_BY_DEFAULT is not setCONFIG_KMEMCHECK_QUEUE_SIZE=64CONFIG_KMEMCHECK_SHADOW_COPY_SHIFT=5CONFIG_KMEMCHECK_PARTIAL_OK=yCONFIG_KMEMCHECK_BITOPS_OK=yCONFIG_STRICT_DEVMEM=y
# CONFIG_X86_VERBOSE_BOOTUP is not setCONFIG_EARLY_PRINTK=yCONFIG_EARLY_PRINTK_DBGP=yCONFIG_DEBUG_STACKOVERFLOW=yCONFIG_DEBUG_STACK_USAGE=yCONFIG_X86_PTDUMP=y
# CONFIG_DEBUG_RODATA is not setCONFIG_DEBUG_NX_TEST=m
# CONFIG_IOMMU_DEBUG is not setCONFIG_IOMMU_STRESS=yCONFIG_HAVE_MMIOTRACE_SUPPORT=yCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not setCONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not setCONFIG_DEFAULT_IO_DELAY_TYPE=1
# CONFIG_DEBUG_BOOT_PARAMS is not setCONFIG_CPA_DEBUG=yCONFIG_OPTIMIZE_INLINING=y
#
# Security options
#CONFIG_KEYS=yCONFIG_KEYS_DEBUG_PROC_KEYS=yCONFIG_SECURITY=yCONFIG_SECURITYFS=yCONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not setCONFIG_SECURITY_PATH=yCONFIG_SECURITY_FILE_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not setCONFIG_SECURITY_TOMOYO=yCONFIG_XOR_BLOCKS=mCONFIG_ASYNC_CORE=mCONFIG_ASYNC_MEMCPY=mCONFIG_ASYNC_XOR=mCONFIG_CRYPTO=y
#
# Crypto core or helper
#CONFIG_CRYPTO_FIPS=yCONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ALGAPI2=yCONFIG_CRYPTO_AEAD=yCONFIG_CRYPTO_AEAD2=yCONFIG_CRYPTO_BLKCIPHER=yCONFIG_CRYPTO_BLKCIPHER2=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_HASH2=yCONFIG_CRYPTO_RNG=yCONFIG_CRYPTO_RNG2=yCONFIG_CRYPTO_PCOMP=yCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_MANAGER2=yCONFIG_CRYPTO_GF128MUL=yCONFIG_CRYPTO_NULL=yCONFIG_CRYPTO_WORKQUEUE=yCONFIG_CRYPTO_CRYPTD=yCONFIG_CRYPTO_AUTHENC=y
# CONFIG_CRYPTO_TEST is not set
#
# Authenticated Encryption with Associated Data
#CONFIG_CRYPTO_CCM=mCONFIG_CRYPTO_GCM=yCONFIG_CRYPTO_SEQIV=y
#
# Block modes
#CONFIG_CRYPTO_CBC=yCONFIG_CRYPTO_CTR=y
# CONFIG_CRYPTO_CTS is not setCONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_LRW is not setCONFIG_CRYPTO_PCBC=yCONFIG_CRYPTO_XTS=mCONFIG_CRYPTO_FPU=y
#
# Hash modes
#CONFIG_CRYPTO_HMAC=yCONFIG_CRYPTO_XCBC=y
#
# Digest
#CONFIG_CRYPTO_CRC32C=yCONFIG_CRYPTO_CRC32C_INTEL=y
# CONFIG_CRYPTO_MD4 is not setCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_MICHAEL_MIC=y
# CONFIG_CRYPTO_RMD128 is not setCONFIG_CRYPTO_RMD160=yCONFIG_CRYPTO_RMD256=y
# CONFIG_CRYPTO_RMD320 is not setCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=mCONFIG_CRYPTO_SHA512=mCONFIG_CRYPTO_TGR192=yCONFIG_CRYPTO_WP512=m
#
# Ciphers
#CONFIG_CRYPTO_AES=yCONFIG_CRYPTO_AES_X86_64=yCONFIG_CRYPTO_AES_NI_INTEL=yCONFIG_CRYPTO_ANUBIS=yCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_BLOWFISH=yCONFIG_CRYPTO_CAMELLIA=y
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not setCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_FCRYPT=yCONFIG_CRYPTO_KHAZAD=yCONFIG_CRYPTO_SALSA20=yCONFIG_CRYPTO_SALSA20_X86_64=m
# CONFIG_CRYPTO_SEED is not setCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_TEA=mCONFIG_CRYPTO_TWOFISH=yCONFIG_CRYPTO_TWOFISH_COMMON=y
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
#
# Compression
#CONFIG_CRYPTO_DEFLATE=yCONFIG_CRYPTO_ZLIB=y
# CONFIG_CRYPTO_LZO is not set
#
# Random Number Generation
#CONFIG_CRYPTO_ANSI_CPRNG=yCONFIG_CRYPTO_HW=yCONFIG_CRYPTO_DEV_PADLOCK=y
# CONFIG_CRYPTO_DEV_PADLOCK_AES is not setCONFIG_CRYPTO_DEV_PADLOCK_SHA=mCONFIG_CRYPTO_DEV_HIFN_795X=yCONFIG_CRYPTO_DEV_HIFN_795X_RNG=yCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=yCONFIG_VIRTUALIZATION=y
# CONFIG_KVM is not setCONFIG_VIRTIO=yCONFIG_VIRTIO_RING=yCONFIG_VIRTIO_PCI=yCONFIG_VIRTIO_BALLOON=yCONFIG_BINARY_PRINTF=y
#
# Library routines
#CONFIG_BITREVERSE=yCONFIG_GENERIC_FIND_FIRST_BIT=yCONFIG_GENERIC_FIND_NEXT_BIT=yCONFIG_GENERIC_FIND_LAST_BIT=yCONFIG_CRC_CCITT=y
# CONFIG_CRC16 is not setCONFIG_CRC_T10DIF=yCONFIG_CRC_ITU_T=yCONFIG_CRC32=y
# CONFIG_CRC7 is not setCONFIG_LIBCRC32C=mCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_DECOMPRESS_GZIP=yCONFIG_DECOMPRESS_BZIP2=yCONFIG_TEXTSEARCH=yCONFIG_TEXTSEARCH_KMP=mCONFIG_TEXTSEARCH_BM=mCONFIG_TEXTSEARCH_FSM=mCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_NLATTR=y
H. Peter Anvin
reviewerRe: [tip:x86/cpu] x86, msr: Add rd/wrmsr interfaces with preset registers
Quoted 9 lines · Ingo Molnar
Quoted 7 lines · tip-bot for Borislav Petkov
Commit-ID: 132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Gitweb: http://git.kernel.org/tip/132ec92f3f70fe365c1f4b8d46e66cf8a2a16880 Author: Borislav Petkov <[email protected]> AuthorDate: Mon, 31 Aug 2009 09:50:09 +0200 Committer: H. Peter Anvin <[email protected]> CommitDate: Mon, 31 Aug 2009 15:14:26 -0700
Quoted 7 lines
Quoted 1 line
x86, msr: Add rd/wrmsr interfaces with preset registers
module exports are missing:
ERROR: "
native_wrmsr_safe_regs" [arch/x86/kernel/msr.ko] undefined!
ERROR: "native_rdmsr_safe_regs" [arch/x86/kernel/msr.ko] undefined!
Uglier than that, msr-reg.o is defined as lib-y, which probably means it's discarded completely if the kernel proper doesn't link it in.
It probably needs a new Kconfig variable or something... let me think about it for a little bit.
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
tip-bot for H. Peter Anvin
reviewer[tip:x86/cpu] x86, msr: change msr-reg.o to obj-y, and export its symbols
In reply to Ingo MolnarCommit-ID: b19ae3999891cad21a3995c34d313dda5df014e2 Gitweb: http://git.kernel.org/tip/b19ae3999891cad21a3995c34d313dda5df014e2 Author: H. Peter Anvin <[email protected]> AuthorDate: Fri, 4 Sep 2009 10:00:09 -0700 Committer: H. Peter Anvin <[email protected]> CommitDate: Fri, 4 Sep 2009 10:00:09 -0700
x86, msr: change msr-reg.o to obj-y, and export its symbols
Change msr-reg.o to obj-y (it will be included in virtually every kernel since it is used by the initialization code for AMD processors) and add a separate C file to export its symbols to modules, so that msr.ko can use them; on uniprocessors we bypass the helper functions in msr.o and use the accessor functions directly via inlines.
LKML-Reference: <[email protected]>
Cc: Borislav Petkov <[email protected]>
--- arch/x86/lib/Makefile | 3 ++- arch/x86/lib/msr-reg-export.c | 5 +++++ 2 files changed, 7 insertions(+), 1 deletions(-)
arch/x86/lib/Makefile +2 -1
@@ -8,7 +8,8 @@ lib-y := delay.o lib-y += thunk_$(BITS).o lib-y += usercopy_$(BITS).o getuser.o putuser.o lib-y += memcpy_$(BITS).o -lib-y += msr-reg.o + +obj-y += msr-reg.o msr-reg-export.o ifeq ($(CONFIG_X86_32),y) obj-y += atomic64_32.o
arch/x86/lib/msr-reg-export.c new file +5 -0
@@ -0,0 +1,5 @@ +#include <linux/module.h> +#include <asm/msr.h> + +EXPORT_SYMBOL (native_rdmsr_safe_regs); +EXPORT_SYMBOL (native_wrmsr_safe_regs);
Re: [tip:x86/cpu] x86, msr: change msr-reg.o to obj-y, and export its symbols
Quoted 4 lines · tip-bot for H. Peter Anvin
x86, msr: change msr-reg.o to obj-y, and export its symbols
Change msr-reg.o to obj-y (it will be included in virtually every kernel since it is used by the initialization code for AMD processors)
Yeah, about that, I'm wondering whether a more fine grained Kconfig suboptions would be appropriate here. Currently, <arch/x86/kernel/cpu/{intel,amd}.c> are sprinkled with the
if (c->x86 == XX) { apply quirks }
thingies and we could put those into their own files which are built/linked only when enabled. Before that, you would have chosen the CPU vendor and the CPU family thus pulling only the related quirks/fixes. Distros will of course need to enable all of them. Then, all those different families quirks should be iterated over in a manner similar to the initcall mechanism.
Anyways, just an idea - it could be dumb overengineering but on a first glance it will organize/simplify the quirks code, reduce kernel image proper, get rid of Kconfig options like CONFIG_X86_F00F_BUG, vendor-specific cpuinfo_x86 members like fdiv_bug, f00f_bug, coma_bug, and [add another good reason here :)].
Comments?
Signature · 2 lines
Regards/Gruss,
Boris.H. Peter Anvin
reviewerRe: [tip:x86/cpu] x86, msr: change msr-reg.o to obj-y, and export its symbols
Quoted 19 lines · Borislav Petkov
Quoted 4 lines · tip-bot for H. Peter Anvin
x86, msr: change msr-reg.o to obj-y, and export its symbols
Change msr-reg.o to obj-y (it will be included in virtually every kernel since it is used by the initialization code for AMD processors)
Yeah, about that, I'm wondering whether a more fine grained
Kconfigsuboptions would be appropriate here. Currently, <arch/x86/kernel/cpu/{intel,amd}.c> are sprinkled with theif (
c->x86== XX) { apply quirks }thingies and we could put those into their own files which are built/linked only when enabled. Before that, you would have chosen the CPU vendor and the CPU family thus pulling only the related quirks/fixes. Distros will of course need to enable all of them. Then, all those different families quirks should be iterated over in a manner similar to the initcall mechanism.
Quoted 6 lines
Anyways, just an idea - it could be dumb overengineering but on a first glance it will organize/simplify the quirks code, reduce kernel image proper, get rid of
Kconfigoptions likeCONFIG_X86_F00F_BUG, vendor-specificcpuinfo_x86members likefdiv_bug,f00f_bug,coma_bug, and [add another good reason here :)].
Ultimately the right thing to do would be to have the linker do these kinds of things. This is easy enough when one deals with things that have to be linked into the kernel binary, but the msr-reg issue is that both the kernel proper and a module depend on the same thing... making it a lib means the module doesn't get it.
All of this gets ugly, and I felt it wasn't enough code to worry about in this case.
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.