diff options
Diffstat (limited to 'arch/x86')
74 files changed, 1268 insertions, 731 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index e2305c7d881b..962388cffa89 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
| @@ -22,7 +22,6 @@ config X86 | |||
| 22 | select HAVE_IDE | 22 | select HAVE_IDE |
| 23 | select HAVE_OPROFILE | 23 | select HAVE_OPROFILE |
| 24 | select HAVE_IOREMAP_PROT | 24 | select HAVE_IOREMAP_PROT |
| 25 | select HAVE_GET_USER_PAGES_FAST | ||
| 26 | select HAVE_KPROBES | 25 | select HAVE_KPROBES |
| 27 | select ARCH_WANT_OPTIONAL_GPIOLIB | 26 | select ARCH_WANT_OPTIONAL_GPIOLIB |
| 28 | select HAVE_KRETPROBES | 27 | select HAVE_KRETPROBES |
| @@ -578,35 +577,29 @@ config SWIOTLB | |||
| 578 | 577 | ||
| 579 | config IOMMU_HELPER | 578 | config IOMMU_HELPER |
| 580 | def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU) | 579 | def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU) |
| 580 | |||
| 581 | config MAXSMP | 581 | config MAXSMP |
| 582 | bool "Configure Maximum number of SMP Processors and NUMA Nodes" | 582 | bool "Configure Maximum number of SMP Processors and NUMA Nodes" |
| 583 | depends on X86_64 && SMP | 583 | depends on X86_64 && SMP && BROKEN |
| 584 | default n | 584 | default n |
| 585 | help | 585 | help |
| 586 | Configure maximum number of CPUS and NUMA Nodes for this architecture. | 586 | Configure maximum number of CPUS and NUMA Nodes for this architecture. |
| 587 | If unsure, say N. | 587 | If unsure, say N. |
| 588 | 588 | ||
| 589 | if MAXSMP | ||
| 590 | config NR_CPUS | ||
| 591 | int | ||
| 592 | default "4096" | ||
| 593 | endif | ||
| 594 | |||
| 595 | if !MAXSMP | ||
| 596 | config NR_CPUS | 589 | config NR_CPUS |
| 597 | int "Maximum number of CPUs (2-4096)" | 590 | int "Maximum number of CPUs (2-512)" if !MAXSMP |
| 598 | range 2 4096 | 591 | range 2 512 |
| 599 | depends on SMP | 592 | depends on SMP |
| 593 | default "4096" if MAXSMP | ||
| 600 | default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000 | 594 | default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000 |
| 601 | default "8" | 595 | default "8" |
| 602 | help | 596 | help |
| 603 | This allows you to specify the maximum number of CPUs which this | 597 | This allows you to specify the maximum number of CPUs which this |
| 604 | kernel will support. The maximum supported value is 4096 and the | 598 | kernel will support. The maximum supported value is 512 and the |
| 605 | minimum value which makes sense is 2. | 599 | minimum value which makes sense is 2. |
| 606 | 600 | ||
| 607 | This is purely to save memory - each supported CPU adds | 601 | This is purely to save memory - each supported CPU adds |
| 608 | approximately eight kilobytes to the kernel image. | 602 | approximately eight kilobytes to the kernel image. |
| 609 | endif | ||
| 610 | 603 | ||
| 611 | config SCHED_SMT | 604 | config SCHED_SMT |
| 612 | bool "SMT (Hyperthreading) scheduler support" | 605 | bool "SMT (Hyperthreading) scheduler support" |
| @@ -952,9 +945,9 @@ config NUMA | |||
| 952 | local memory controller of the CPU and add some more | 945 | local memory controller of the CPU and add some more |
| 953 | NUMA awareness to the kernel. | 946 | NUMA awareness to the kernel. |
| 954 | 947 | ||
| 955 | For i386 this is currently highly experimental and should be only | 948 | For 32-bit this is currently highly experimental and should be only |
| 956 | used for kernel development. It might also cause boot failures. | 949 | used for kernel development. It might also cause boot failures. |
| 957 | For x86_64 this is recommended on all multiprocessor Opteron systems. | 950 | For 64-bit this is recommended on all multiprocessor Opteron systems. |
| 958 | If the system is EM64T, you should say N unless your system is | 951 | If the system is EM64T, you should say N unless your system is |
| 959 | EM64T NUMA. | 952 | EM64T NUMA. |
| 960 | 953 | ||
| @@ -997,17 +990,10 @@ config NUMA_EMU | |||
| 997 | into virtual nodes when booted with "numa=fake=N", where N is the | 990 | into virtual nodes when booted with "numa=fake=N", where N is the |
| 998 | number of nodes. This is only useful for debugging. | 991 | number of nodes. This is only useful for debugging. |
| 999 | 992 | ||
| 1000 | if MAXSMP | ||
| 1001 | |||
| 1002 | config NODES_SHIFT | 993 | config NODES_SHIFT |
| 1003 | int | 994 | int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP |
| 1004 | default "9" | ||
| 1005 | endif | ||
| 1006 | |||
| 1007 | if !MAXSMP | ||
| 1008 | config NODES_SHIFT | ||
| 1009 | int "Maximum NUMA Nodes (as a power of 2)" | ||
| 1010 | range 1 9 if X86_64 | 995 | range 1 9 if X86_64 |
| 996 | default "9" if MAXSMP | ||
| 1011 | default "6" if X86_64 | 997 | default "6" if X86_64 |
| 1012 | default "4" if X86_NUMAQ | 998 | default "4" if X86_NUMAQ |
| 1013 | default "3" | 999 | default "3" |
| @@ -1015,7 +1001,6 @@ config NODES_SHIFT | |||
| 1015 | help | 1001 | help |
| 1016 | Specify the maximum number of NUMA Nodes available on the target | 1002 | Specify the maximum number of NUMA Nodes available on the target |
| 1017 | system. Increases memory reserved to accomodate various tables. | 1003 | system. Increases memory reserved to accomodate various tables. |
| 1018 | endif | ||
| 1019 | 1004 | ||
| 1020 | config HAVE_ARCH_BOOTMEM_NODE | 1005 | config HAVE_ARCH_BOOTMEM_NODE |
| 1021 | def_bool y | 1006 | def_bool y |
| @@ -1264,7 +1249,7 @@ config KEXEC | |||
| 1264 | strongly in flux, so no good recommendation can be made. | 1249 | strongly in flux, so no good recommendation can be made. |
| 1265 | 1250 | ||
| 1266 | config CRASH_DUMP | 1251 | config CRASH_DUMP |
| 1267 | bool "kernel crash dumps (EXPERIMENTAL)" | 1252 | bool "kernel crash dumps" |
| 1268 | depends on X86_64 || (X86_32 && HIGHMEM) | 1253 | depends on X86_64 || (X86_32 && HIGHMEM) |
| 1269 | help | 1254 | help |
| 1270 | Generate crash dump after being started by kexec. | 1255 | Generate crash dump after being started by kexec. |
diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h index a34b9982c7cb..cc0ef13fba7a 100644 --- a/arch/x86/boot/boot.h +++ b/arch/x86/boot/boot.h | |||
| @@ -24,10 +24,14 @@ | |||
| 24 | #include <linux/edd.h> | 24 | #include <linux/edd.h> |
| 25 | #include <asm/boot.h> | 25 | #include <asm/boot.h> |
| 26 | #include <asm/setup.h> | 26 | #include <asm/setup.h> |
| 27 | #include "bitops.h" | ||
| 28 | #include <asm/cpufeature.h> | ||
| 27 | 29 | ||
| 28 | /* Useful macros */ | 30 | /* Useful macros */ |
| 29 | #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) | 31 | #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) |
| 30 | 32 | ||
| 33 | #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) | ||
| 34 | |||
| 31 | extern struct setup_header hdr; | 35 | extern struct setup_header hdr; |
| 32 | extern struct boot_params boot_params; | 36 | extern struct boot_params boot_params; |
| 33 | 37 | ||
| @@ -242,6 +246,12 @@ int cmdline_find_option(const char *option, char *buffer, int bufsize); | |||
| 242 | int cmdline_find_option_bool(const char *option); | 246 | int cmdline_find_option_bool(const char *option); |
| 243 | 247 | ||
| 244 | /* cpu.c, cpucheck.c */ | 248 | /* cpu.c, cpucheck.c */ |
| 249 | struct cpu_features { | ||
| 250 | int level; /* Family, or 64 for x86-64 */ | ||
| 251 | int model; | ||
| 252 | u32 flags[NCAPINTS]; | ||
| 253 | }; | ||
| 254 | extern struct cpu_features cpu; | ||
| 245 | int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr); | 255 | int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr); |
| 246 | int validate_cpu(void); | 256 | int validate_cpu(void); |
| 247 | 257 | ||
diff --git a/arch/x86/boot/cpu.c b/arch/x86/boot/cpu.c index 92d6fd73dc7d..75298fe2edca 100644 --- a/arch/x86/boot/cpu.c +++ b/arch/x86/boot/cpu.c | |||
| @@ -16,9 +16,6 @@ | |||
| 16 | */ | 16 | */ |
| 17 | 17 | ||
| 18 | #include "boot.h" | 18 | #include "boot.h" |
| 19 | #include "bitops.h" | ||
| 20 | #include <asm/cpufeature.h> | ||
| 21 | |||
| 22 | #include "cpustr.h" | 19 | #include "cpustr.h" |
| 23 | 20 | ||
| 24 | static char *cpu_name(int level) | 21 | static char *cpu_name(int level) |
diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c index 7804389ee005..4b9ae7c56748 100644 --- a/arch/x86/boot/cpucheck.c +++ b/arch/x86/boot/cpucheck.c | |||
| @@ -22,21 +22,13 @@ | |||
| 22 | 22 | ||
| 23 | #ifdef _SETUP | 23 | #ifdef _SETUP |
| 24 | # include "boot.h" | 24 | # include "boot.h" |
| 25 | # include "bitops.h" | ||
| 26 | #endif | 25 | #endif |
| 27 | #include <linux/types.h> | 26 | #include <linux/types.h> |
| 28 | #include <asm/cpufeature.h> | ||
| 29 | #include <asm/processor-flags.h> | 27 | #include <asm/processor-flags.h> |
| 30 | #include <asm/required-features.h> | 28 | #include <asm/required-features.h> |
| 31 | #include <asm/msr-index.h> | 29 | #include <asm/msr-index.h> |
| 32 | 30 | ||
| 33 | struct cpu_features { | 31 | struct cpu_features cpu; |
| 34 | int level; /* Family, or 64 for x86-64 */ | ||
| 35 | int model; | ||
| 36 | u32 flags[NCAPINTS]; | ||
| 37 | }; | ||
| 38 | |||
| 39 | static struct cpu_features cpu; | ||
| 40 | static u32 cpu_vendor[3]; | 32 | static u32 cpu_vendor[3]; |
| 41 | static u32 err_flags[NCAPINTS]; | 33 | static u32 err_flags[NCAPINTS]; |
| 42 | 34 | ||
diff --git a/arch/x86/boot/main.c b/arch/x86/boot/main.c index 2296164b54d2..197421db1af1 100644 --- a/arch/x86/boot/main.c +++ b/arch/x86/boot/main.c | |||
| @@ -73,6 +73,11 @@ static void keyboard_set_repeat(void) | |||
| 73 | */ | 73 | */ |
| 74 | static void query_ist(void) | 74 | static void query_ist(void) |
| 75 | { | 75 | { |
| 76 | /* Some older BIOSes apparently crash on this call, so filter | ||
| 77 | it from machines too old to have SpeedStep at all. */ | ||
| 78 | if (cpu.level < 6) | ||
| 79 | return; | ||
| 80 | |||
| 76 | asm("int $0x15" | 81 | asm("int $0x15" |
| 77 | : "=a" (boot_params.ist_info.signature), | 82 | : "=a" (boot_params.ist_info.signature), |
| 78 | "=b" (boot_params.ist_info.command), | 83 | "=b" (boot_params.ist_info.command), |
diff --git a/arch/x86/boot/memory.c b/arch/x86/boot/memory.c index 53165c97336b..8c3c25f35578 100644 --- a/arch/x86/boot/memory.c +++ b/arch/x86/boot/memory.c | |||
| @@ -13,7 +13,6 @@ | |||
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include "boot.h" | 15 | #include "boot.h" |
| 16 | #include <linux/kernel.h> | ||
| 17 | 16 | ||
| 18 | #define SMAP 0x534d4150 /* ASCII "SMAP" */ | 17 | #define SMAP 0x534d4150 /* ASCII "SMAP" */ |
| 19 | 18 | ||
diff --git a/arch/x86/configs/i386_defconfig b/arch/x86/configs/i386_defconfig index 4d73f53287b6..104275e191a8 100644 --- a/arch/x86/configs/i386_defconfig +++ b/arch/x86/configs/i386_defconfig | |||
| @@ -1,13 +1,13 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.26-rc1 | 3 | # Linux kernel version: 2.6.27-rc4 |
| 4 | # Sun May 4 19:59:02 2008 | 4 | # Mon Aug 25 15:04:00 2008 |
| 5 | # | 5 | # |
| 6 | # CONFIG_64BIT is not set | 6 | # CONFIG_64BIT is not set |
| 7 | CONFIG_X86_32=y | 7 | CONFIG_X86_32=y |
| 8 | # CONFIG_X86_64 is not set | 8 | # CONFIG_X86_64 is not set |
| 9 | CONFIG_X86=y | 9 | CONFIG_X86=y |
| 10 | CONFIG_DEFCONFIG_LIST="arch/x86/configs/i386_defconfig" | 10 | CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" |
| 11 | # CONFIG_GENERIC_LOCKBREAK is not set | 11 | # CONFIG_GENERIC_LOCKBREAK is not set |
| 12 | CONFIG_GENERIC_TIME=y | 12 | CONFIG_GENERIC_TIME=y |
| 13 | CONFIG_GENERIC_CMOS_UPDATE=y | 13 | CONFIG_GENERIC_CMOS_UPDATE=y |
| @@ -53,6 +53,7 @@ CONFIG_X86_HT=y | |||
| 53 | CONFIG_X86_BIOS_REBOOT=y | 53 | CONFIG_X86_BIOS_REBOOT=y |
| 54 | CONFIG_X86_TRAMPOLINE=y | 54 | CONFIG_X86_TRAMPOLINE=y |
| 55 | CONFIG_KTIME_SCALAR=y | 55 | CONFIG_KTIME_SCALAR=y |
| 56 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 56 | 57 | ||
| 57 | # | 58 | # |
| 58 | # General setup | 59 | # General setup |
| @@ -82,6 +83,7 @@ CONFIG_CGROUPS=y | |||
| 82 | CONFIG_CGROUP_NS=y | 83 | CONFIG_CGROUP_NS=y |
| 83 | # CONFIG_CGROUP_DEVICE is not set | 84 | # CONFIG_CGROUP_DEVICE is not set |
| 84 | CONFIG_CPUSETS=y | 85 | CONFIG_CPUSETS=y |
| 86 | CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y | ||
| 85 | CONFIG_GROUP_SCHED=y | 87 | CONFIG_GROUP_SCHED=y |
| 86 | CONFIG_FAIR_GROUP_SCHED=y | 88 | CONFIG_FAIR_GROUP_SCHED=y |
| 87 | # CONFIG_RT_GROUP_SCHED is not set | 89 | # CONFIG_RT_GROUP_SCHED is not set |
| @@ -105,7 +107,6 @@ CONFIG_SYSCTL=y | |||
| 105 | # CONFIG_EMBEDDED is not set | 107 | # CONFIG_EMBEDDED is not set |
| 106 | CONFIG_UID16=y | 108 | CONFIG_UID16=y |
| 107 | CONFIG_SYSCTL_SYSCALL=y | 109 | CONFIG_SYSCTL_SYSCALL=y |
| 108 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 109 | CONFIG_KALLSYMS=y | 110 | CONFIG_KALLSYMS=y |
| 110 | CONFIG_KALLSYMS_ALL=y | 111 | CONFIG_KALLSYMS_ALL=y |
| 111 | CONFIG_KALLSYMS_EXTRA_PASS=y | 112 | CONFIG_KALLSYMS_EXTRA_PASS=y |
| @@ -113,6 +114,7 @@ CONFIG_HOTPLUG=y | |||
| 113 | CONFIG_PRINTK=y | 114 | CONFIG_PRINTK=y |
| 114 | CONFIG_BUG=y | 115 | CONFIG_BUG=y |
| 115 | CONFIG_ELF_CORE=y | 116 | CONFIG_ELF_CORE=y |
| 117 | CONFIG_PCSPKR_PLATFORM=y | ||
| 116 | # CONFIG_COMPAT_BRK is not set | 118 | # CONFIG_COMPAT_BRK is not set |
| 117 | CONFIG_BASE_FULL=y | 119 | CONFIG_BASE_FULL=y |
| 118 | CONFIG_FUTEX=y | 120 | CONFIG_FUTEX=y |
| @@ -132,27 +134,35 @@ CONFIG_MARKERS=y | |||
| 132 | # CONFIG_OPROFILE is not set | 134 | # CONFIG_OPROFILE is not set |
| 133 | CONFIG_HAVE_OPROFILE=y | 135 | CONFIG_HAVE_OPROFILE=y |
| 134 | CONFIG_KPROBES=y | 136 | CONFIG_KPROBES=y |
| 137 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 135 | CONFIG_KRETPROBES=y | 138 | CONFIG_KRETPROBES=y |
| 139 | CONFIG_HAVE_IOREMAP_PROT=y | ||
| 136 | CONFIG_HAVE_KPROBES=y | 140 | CONFIG_HAVE_KPROBES=y |
| 137 | CONFIG_HAVE_KRETPROBES=y | 141 | CONFIG_HAVE_KRETPROBES=y |
| 142 | # CONFIG_HAVE_ARCH_TRACEHOOK is not set | ||
| 138 | # CONFIG_HAVE_DMA_ATTRS is not set | 143 | # CONFIG_HAVE_DMA_ATTRS is not set |
| 144 | CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 145 | # CONFIG_HAVE_CLK is not set | ||
| 139 | CONFIG_PROC_PAGE_MONITOR=y | 146 | CONFIG_PROC_PAGE_MONITOR=y |
| 147 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
| 140 | CONFIG_SLABINFO=y | 148 | CONFIG_SLABINFO=y |
| 141 | CONFIG_RT_MUTEXES=y | 149 | CONFIG_RT_MUTEXES=y |
| 142 | # CONFIG_TINY_SHMEM is not set | 150 | # CONFIG_TINY_SHMEM is not set |
| 143 | CONFIG_BASE_SMALL=0 | 151 | CONFIG_BASE_SMALL=0 |
| 144 | CONFIG_MODULES=y | 152 | CONFIG_MODULES=y |
| 153 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
| 145 | CONFIG_MODULE_UNLOAD=y | 154 | CONFIG_MODULE_UNLOAD=y |
| 146 | CONFIG_MODULE_FORCE_UNLOAD=y | 155 | CONFIG_MODULE_FORCE_UNLOAD=y |
| 147 | # CONFIG_MODVERSIONS is not set | 156 | # CONFIG_MODVERSIONS is not set |
| 148 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 157 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 149 | # CONFIG_KMOD is not set | 158 | CONFIG_KMOD=y |
| 150 | CONFIG_STOP_MACHINE=y | 159 | CONFIG_STOP_MACHINE=y |
| 151 | CONFIG_BLOCK=y | 160 | CONFIG_BLOCK=y |
| 152 | # CONFIG_LBD is not set | 161 | # CONFIG_LBD is not set |
| 153 | CONFIG_BLK_DEV_IO_TRACE=y | 162 | CONFIG_BLK_DEV_IO_TRACE=y |
| 154 | # CONFIG_LSF is not set | 163 | # CONFIG_LSF is not set |
| 155 | CONFIG_BLK_DEV_BSG=y | 164 | CONFIG_BLK_DEV_BSG=y |
| 165 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 156 | 166 | ||
| 157 | # | 167 | # |
| 158 | # IO Schedulers | 168 | # IO Schedulers |
| @@ -176,19 +186,17 @@ CONFIG_NO_HZ=y | |||
| 176 | CONFIG_HIGH_RES_TIMERS=y | 186 | CONFIG_HIGH_RES_TIMERS=y |
| 177 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | 187 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |
| 178 | CONFIG_SMP=y | 188 | CONFIG_SMP=y |
| 189 | CONFIG_X86_FIND_SMP_CONFIG=y | ||
| 190 | CONFIG_X86_MPPARSE=y | ||
| 179 | CONFIG_X86_PC=y | 191 | CONFIG_X86_PC=y |
| 180 | # CONFIG_X86_ELAN is not set | 192 | # CONFIG_X86_ELAN is not set |
| 181 | # CONFIG_X86_VOYAGER is not set | 193 | # CONFIG_X86_VOYAGER is not set |
| 182 | # CONFIG_X86_NUMAQ is not set | ||
| 183 | # CONFIG_X86_SUMMIT is not set | ||
| 184 | # CONFIG_X86_BIGSMP is not set | ||
| 185 | # CONFIG_X86_VISWS is not set | ||
| 186 | # CONFIG_X86_GENERICARCH is not set | 194 | # CONFIG_X86_GENERICARCH is not set |
| 187 | # CONFIG_X86_ES7000 is not set | ||
| 188 | # CONFIG_X86_RDC321X is not set | ||
| 189 | # CONFIG_X86_VSMP is not set | 195 | # CONFIG_X86_VSMP is not set |
| 196 | # CONFIG_X86_RDC321X is not set | ||
| 190 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 197 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 191 | # CONFIG_PARAVIRT_GUEST is not set | 198 | # CONFIG_PARAVIRT_GUEST is not set |
| 199 | # CONFIG_MEMTEST is not set | ||
| 192 | # CONFIG_M386 is not set | 200 | # CONFIG_M386 is not set |
| 193 | # CONFIG_M486 is not set | 201 | # CONFIG_M486 is not set |
| 194 | # CONFIG_M586 is not set | 202 | # CONFIG_M586 is not set |
| @@ -215,21 +223,19 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | |||
| 215 | # CONFIG_MPSC is not set | 223 | # CONFIG_MPSC is not set |
| 216 | CONFIG_MCORE2=y | 224 | CONFIG_MCORE2=y |
| 217 | # CONFIG_GENERIC_CPU is not set | 225 | # CONFIG_GENERIC_CPU is not set |
| 218 | # CONFIG_X86_GENERIC is not set | 226 | CONFIG_X86_GENERIC=y |
| 219 | CONFIG_X86_CPU=y | 227 | CONFIG_X86_CPU=y |
| 220 | CONFIG_X86_CMPXCHG=y | 228 | CONFIG_X86_CMPXCHG=y |
| 221 | CONFIG_X86_L1_CACHE_SHIFT=6 | 229 | CONFIG_X86_L1_CACHE_SHIFT=7 |
| 222 | CONFIG_X86_XADD=y | 230 | CONFIG_X86_XADD=y |
| 223 | CONFIG_X86_WP_WORKS_OK=y | 231 | CONFIG_X86_WP_WORKS_OK=y |
| 224 | CONFIG_X86_INVLPG=y | 232 | CONFIG_X86_INVLPG=y |
| 225 | CONFIG_X86_BSWAP=y | 233 | CONFIG_X86_BSWAP=y |
| 226 | CONFIG_X86_POPAD_OK=y | 234 | CONFIG_X86_POPAD_OK=y |
| 227 | CONFIG_X86_GOOD_APIC=y | ||
| 228 | CONFIG_X86_INTEL_USERCOPY=y | 235 | CONFIG_X86_INTEL_USERCOPY=y |
| 229 | CONFIG_X86_USE_PPRO_CHECKSUM=y | 236 | CONFIG_X86_USE_PPRO_CHECKSUM=y |
| 230 | CONFIG_X86_P6_NOP=y | ||
| 231 | CONFIG_X86_TSC=y | 237 | CONFIG_X86_TSC=y |
| 232 | CONFIG_X86_MINIMUM_CPU_FAMILY=6 | 238 | CONFIG_X86_MINIMUM_CPU_FAMILY=4 |
| 233 | CONFIG_X86_DEBUGCTLMSR=y | 239 | CONFIG_X86_DEBUGCTLMSR=y |
| 234 | CONFIG_HPET_TIMER=y | 240 | CONFIG_HPET_TIMER=y |
| 235 | CONFIG_HPET_EMULATE_RTC=y | 241 | CONFIG_HPET_EMULATE_RTC=y |
| @@ -247,7 +253,7 @@ CONFIG_X86_IO_APIC=y | |||
| 247 | CONFIG_VM86=y | 253 | CONFIG_VM86=y |
| 248 | # CONFIG_TOSHIBA is not set | 254 | # CONFIG_TOSHIBA is not set |
| 249 | # CONFIG_I8K is not set | 255 | # CONFIG_I8K is not set |
| 250 | # CONFIG_X86_REBOOTFIXUPS is not set | 256 | CONFIG_X86_REBOOTFIXUPS=y |
| 251 | # CONFIG_MICROCODE is not set | 257 | # CONFIG_MICROCODE is not set |
| 252 | CONFIG_X86_MSR=y | 258 | CONFIG_X86_MSR=y |
| 253 | CONFIG_X86_CPUID=y | 259 | CONFIG_X86_CPUID=y |
| @@ -256,32 +262,28 @@ CONFIG_HIGHMEM4G=y | |||
| 256 | # CONFIG_HIGHMEM64G is not set | 262 | # CONFIG_HIGHMEM64G is not set |
| 257 | CONFIG_PAGE_OFFSET=0xC0000000 | 263 | CONFIG_PAGE_OFFSET=0xC0000000 |
| 258 | CONFIG_HIGHMEM=y | 264 | CONFIG_HIGHMEM=y |
| 259 | CONFIG_NEED_NODE_MEMMAP_SIZE=y | ||
| 260 | CONFIG_ARCH_FLATMEM_ENABLE=y | 265 | CONFIG_ARCH_FLATMEM_ENABLE=y |
| 261 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 266 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
| 262 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 267 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
| 263 | CONFIG_SELECT_MEMORY_MODEL=y | 268 | CONFIG_SELECT_MEMORY_MODEL=y |
| 264 | # CONFIG_FLATMEM_MANUAL is not set | 269 | CONFIG_FLATMEM_MANUAL=y |
| 265 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 270 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
| 266 | CONFIG_SPARSEMEM_MANUAL=y | 271 | # CONFIG_SPARSEMEM_MANUAL is not set |
| 267 | CONFIG_SPARSEMEM=y | 272 | CONFIG_FLATMEM=y |
| 268 | CONFIG_HAVE_MEMORY_PRESENT=y | 273 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 269 | CONFIG_SPARSEMEM_STATIC=y | 274 | CONFIG_SPARSEMEM_STATIC=y |
| 270 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 275 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
| 271 | |||
| 272 | # | ||
| 273 | # Memory hotplug is currently incompatible with Software Suspend | ||
| 274 | # | ||
| 275 | CONFIG_PAGEFLAGS_EXTENDED=y | 276 | CONFIG_PAGEFLAGS_EXTENDED=y |
| 276 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 277 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 277 | CONFIG_RESOURCES_64BIT=y | 278 | CONFIG_RESOURCES_64BIT=y |
| 278 | CONFIG_ZONE_DMA_FLAG=1 | 279 | CONFIG_ZONE_DMA_FLAG=1 |
| 279 | CONFIG_BOUNCE=y | 280 | CONFIG_BOUNCE=y |
| 280 | CONFIG_VIRT_TO_BUS=y | 281 | CONFIG_VIRT_TO_BUS=y |
| 281 | # CONFIG_HIGHPTE is not set | 282 | CONFIG_HIGHPTE=y |
| 282 | # CONFIG_MATH_EMULATION is not set | 283 | # CONFIG_MATH_EMULATION is not set |
| 283 | CONFIG_MTRR=y | 284 | CONFIG_MTRR=y |
| 284 | # CONFIG_X86_PAT is not set | 285 | # CONFIG_MTRR_SANITIZER is not set |
| 286 | CONFIG_X86_PAT=y | ||
| 285 | CONFIG_EFI=y | 287 | CONFIG_EFI=y |
| 286 | # CONFIG_IRQBALANCE is not set | 288 | # CONFIG_IRQBALANCE is not set |
| 287 | CONFIG_SECCOMP=y | 289 | CONFIG_SECCOMP=y |
| @@ -293,6 +295,7 @@ CONFIG_HZ=1000 | |||
| 293 | CONFIG_SCHED_HRTICK=y | 295 | CONFIG_SCHED_HRTICK=y |
| 294 | CONFIG_KEXEC=y | 296 | CONFIG_KEXEC=y |
| 295 | CONFIG_CRASH_DUMP=y | 297 | CONFIG_CRASH_DUMP=y |
| 298 | # CONFIG_KEXEC_JUMP is not set | ||
| 296 | CONFIG_PHYSICAL_START=0x1000000 | 299 | CONFIG_PHYSICAL_START=0x1000000 |
| 297 | CONFIG_RELOCATABLE=y | 300 | CONFIG_RELOCATABLE=y |
| 298 | CONFIG_PHYSICAL_ALIGN=0x200000 | 301 | CONFIG_PHYSICAL_ALIGN=0x200000 |
| @@ -312,6 +315,7 @@ CONFIG_PM_TRACE_RTC=y | |||
| 312 | CONFIG_PM_SLEEP_SMP=y | 315 | CONFIG_PM_SLEEP_SMP=y |
| 313 | CONFIG_PM_SLEEP=y | 316 | CONFIG_PM_SLEEP=y |
| 314 | CONFIG_SUSPEND=y | 317 | CONFIG_SUSPEND=y |
| 318 | # CONFIG_PM_TEST_SUSPEND is not set | ||
| 315 | CONFIG_SUSPEND_FREEZER=y | 319 | CONFIG_SUSPEND_FREEZER=y |
| 316 | CONFIG_HIBERNATION=y | 320 | CONFIG_HIBERNATION=y |
| 317 | CONFIG_PM_STD_PARTITION="" | 321 | CONFIG_PM_STD_PARTITION="" |
| @@ -337,6 +341,7 @@ CONFIG_ACPI_THERMAL=y | |||
| 337 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 341 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
| 338 | # CONFIG_ACPI_DEBUG is not set | 342 | # CONFIG_ACPI_DEBUG is not set |
| 339 | CONFIG_ACPI_EC=y | 343 | CONFIG_ACPI_EC=y |
| 344 | # CONFIG_ACPI_PCI_SLOT is not set | ||
| 340 | CONFIG_ACPI_POWER=y | 345 | CONFIG_ACPI_POWER=y |
| 341 | CONFIG_ACPI_SYSTEM=y | 346 | CONFIG_ACPI_SYSTEM=y |
| 342 | CONFIG_X86_PM_TIMER=y | 347 | CONFIG_X86_PM_TIMER=y |
| @@ -395,8 +400,8 @@ CONFIG_PCI=y | |||
| 395 | # CONFIG_PCI_GOBIOS is not set | 400 | # CONFIG_PCI_GOBIOS is not set |
| 396 | # CONFIG_PCI_GOMMCONFIG is not set | 401 | # CONFIG_PCI_GOMMCONFIG is not set |
| 397 | # CONFIG_PCI_GODIRECT is not set | 402 | # CONFIG_PCI_GODIRECT is not set |
| 398 | CONFIG_PCI_GOANY=y | ||
| 399 | # CONFIG_PCI_GOOLPC is not set | 403 | # CONFIG_PCI_GOOLPC is not set |
| 404 | CONFIG_PCI_GOANY=y | ||
| 400 | CONFIG_PCI_BIOS=y | 405 | CONFIG_PCI_BIOS=y |
| 401 | CONFIG_PCI_DIRECT=y | 406 | CONFIG_PCI_DIRECT=y |
| 402 | CONFIG_PCI_MMCONFIG=y | 407 | CONFIG_PCI_MMCONFIG=y |
| @@ -448,10 +453,6 @@ CONFIG_HOTPLUG_PCI=y | |||
| 448 | CONFIG_BINFMT_ELF=y | 453 | CONFIG_BINFMT_ELF=y |
| 449 | # CONFIG_BINFMT_AOUT is not set | 454 | # CONFIG_BINFMT_AOUT is not set |
| 450 | CONFIG_BINFMT_MISC=y | 455 | CONFIG_BINFMT_MISC=y |
| 451 | |||
| 452 | # | ||
| 453 | # Networking | ||
| 454 | # | ||
| 455 | CONFIG_NET=y | 456 | CONFIG_NET=y |
| 456 | 457 | ||
| 457 | # | 458 | # |
| @@ -475,7 +476,10 @@ CONFIG_IP_FIB_HASH=y | |||
| 475 | CONFIG_IP_MULTIPLE_TABLES=y | 476 | CONFIG_IP_MULTIPLE_TABLES=y |
| 476 | CONFIG_IP_ROUTE_MULTIPATH=y | 477 | CONFIG_IP_ROUTE_MULTIPATH=y |
| 477 | CONFIG_IP_ROUTE_VERBOSE=y | 478 | CONFIG_IP_ROUTE_VERBOSE=y |
| 478 | # CONFIG_IP_PNP is not set | 479 | CONFIG_IP_PNP=y |
| 480 | CONFIG_IP_PNP_DHCP=y | ||
| 481 | CONFIG_IP_PNP_BOOTP=y | ||
| 482 | CONFIG_IP_PNP_RARP=y | ||
| 479 | # CONFIG_NET_IPIP is not set | 483 | # CONFIG_NET_IPIP is not set |
| 480 | # CONFIG_NET_IPGRE is not set | 484 | # CONFIG_NET_IPGRE is not set |
| 481 | CONFIG_IP_MROUTE=y | 485 | CONFIG_IP_MROUTE=y |
| @@ -618,7 +622,6 @@ CONFIG_NET_SCHED=y | |||
| 618 | # CONFIG_NET_SCH_HTB is not set | 622 | # CONFIG_NET_SCH_HTB is not set |
| 619 | # CONFIG_NET_SCH_HFSC is not set | 623 | # CONFIG_NET_SCH_HFSC is not set |
| 620 | # CONFIG_NET_SCH_PRIO is not set | 624 | # CONFIG_NET_SCH_PRIO is not set |
| 621 | # CONFIG_NET_SCH_RR is not set | ||
| 622 | # CONFIG_NET_SCH_RED is not set | 625 | # CONFIG_NET_SCH_RED is not set |
| 623 | # CONFIG_NET_SCH_SFQ is not set | 626 | # CONFIG_NET_SCH_SFQ is not set |
| 624 | # CONFIG_NET_SCH_TEQL is not set | 627 | # CONFIG_NET_SCH_TEQL is not set |
| @@ -680,28 +683,19 @@ CONFIG_FIB_RULES=y | |||
| 680 | CONFIG_CFG80211=y | 683 | CONFIG_CFG80211=y |
| 681 | CONFIG_NL80211=y | 684 | CONFIG_NL80211=y |
| 682 | CONFIG_WIRELESS_EXT=y | 685 | CONFIG_WIRELESS_EXT=y |
| 686 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
| 683 | CONFIG_MAC80211=y | 687 | CONFIG_MAC80211=y |
| 684 | 688 | ||
| 685 | # | 689 | # |
| 686 | # Rate control algorithm selection | 690 | # Rate control algorithm selection |
| 687 | # | 691 | # |
| 692 | CONFIG_MAC80211_RC_PID=y | ||
| 688 | CONFIG_MAC80211_RC_DEFAULT_PID=y | 693 | CONFIG_MAC80211_RC_DEFAULT_PID=y |
| 689 | # CONFIG_MAC80211_RC_DEFAULT_NONE is not set | ||
| 690 | |||
| 691 | # | ||
| 692 | # Selecting 'y' for an algorithm will | ||
| 693 | # | ||
| 694 | |||
| 695 | # | ||
| 696 | # build the algorithm into mac80211. | ||
| 697 | # | ||
| 698 | CONFIG_MAC80211_RC_DEFAULT="pid" | 694 | CONFIG_MAC80211_RC_DEFAULT="pid" |
| 699 | CONFIG_MAC80211_RC_PID=y | ||
| 700 | # CONFIG_MAC80211_MESH is not set | 695 | # CONFIG_MAC80211_MESH is not set |
| 701 | CONFIG_MAC80211_LEDS=y | 696 | CONFIG_MAC80211_LEDS=y |
| 702 | # CONFIG_MAC80211_DEBUGFS is not set | 697 | # CONFIG_MAC80211_DEBUGFS is not set |
| 703 | # CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set | 698 | # CONFIG_MAC80211_DEBUG_MENU is not set |
| 704 | # CONFIG_MAC80211_DEBUG is not set | ||
| 705 | # CONFIG_IEEE80211 is not set | 699 | # CONFIG_IEEE80211 is not set |
| 706 | # CONFIG_RFKILL is not set | 700 | # CONFIG_RFKILL is not set |
| 707 | # CONFIG_NET_9P is not set | 701 | # CONFIG_NET_9P is not set |
| @@ -717,6 +711,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | |||
| 717 | CONFIG_STANDALONE=y | 711 | CONFIG_STANDALONE=y |
| 718 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 712 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
| 719 | CONFIG_FW_LOADER=y | 713 | CONFIG_FW_LOADER=y |
| 714 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 715 | CONFIG_EXTRA_FIRMWARE="" | ||
| 720 | # CONFIG_DEBUG_DRIVER is not set | 716 | # CONFIG_DEBUG_DRIVER is not set |
| 721 | CONFIG_DEBUG_DEVRES=y | 717 | CONFIG_DEBUG_DEVRES=y |
| 722 | # CONFIG_SYS_HYPERVISOR is not set | 718 | # CONFIG_SYS_HYPERVISOR is not set |
| @@ -749,6 +745,7 @@ CONFIG_BLK_DEV_RAM_SIZE=16384 | |||
| 749 | # CONFIG_BLK_DEV_XIP is not set | 745 | # CONFIG_BLK_DEV_XIP is not set |
| 750 | # CONFIG_CDROM_PKTCDVD is not set | 746 | # CONFIG_CDROM_PKTCDVD is not set |
| 751 | # CONFIG_ATA_OVER_ETH is not set | 747 | # CONFIG_ATA_OVER_ETH is not set |
| 748 | # CONFIG_BLK_DEV_HD is not set | ||
| 752 | CONFIG_MISC_DEVICES=y | 749 | CONFIG_MISC_DEVICES=y |
| 753 | # CONFIG_IBM_ASM is not set | 750 | # CONFIG_IBM_ASM is not set |
| 754 | # CONFIG_PHANTOM is not set | 751 | # CONFIG_PHANTOM is not set |
| @@ -760,10 +757,12 @@ CONFIG_MISC_DEVICES=y | |||
| 760 | # CONFIG_FUJITSU_LAPTOP is not set | 757 | # CONFIG_FUJITSU_LAPTOP is not set |
| 761 | # CONFIG_TC1100_WMI is not set | 758 | # CONFIG_TC1100_WMI is not set |
| 762 | # CONFIG_MSI_LAPTOP is not set | 759 | # CONFIG_MSI_LAPTOP is not set |
| 760 | # CONFIG_COMPAL_LAPTOP is not set | ||
| 763 | # CONFIG_SONY_LAPTOP is not set | 761 | # CONFIG_SONY_LAPTOP is not set |
| 764 | # CONFIG_THINKPAD_ACPI is not set | 762 | # CONFIG_THINKPAD_ACPI is not set |
| 765 | # CONFIG_INTEL_MENLOW is not set | 763 | # CONFIG_INTEL_MENLOW is not set |
| 766 | # CONFIG_ENCLOSURE_SERVICES is not set | 764 | # CONFIG_ENCLOSURE_SERVICES is not set |
| 765 | # CONFIG_HP_ILO is not set | ||
| 767 | CONFIG_HAVE_IDE=y | 766 | CONFIG_HAVE_IDE=y |
| 768 | # CONFIG_IDE is not set | 767 | # CONFIG_IDE is not set |
| 769 | 768 | ||
| @@ -802,12 +801,13 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
| 802 | # | 801 | # |
| 803 | CONFIG_SCSI_SPI_ATTRS=y | 802 | CONFIG_SCSI_SPI_ATTRS=y |
| 804 | # CONFIG_SCSI_FC_ATTRS is not set | 803 | # CONFIG_SCSI_FC_ATTRS is not set |
| 805 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 804 | CONFIG_SCSI_ISCSI_ATTRS=y |
| 806 | # CONFIG_SCSI_SAS_ATTRS is not set | 805 | # CONFIG_SCSI_SAS_ATTRS is not set |
| 807 | # CONFIG_SCSI_SAS_LIBSAS is not set | 806 | # CONFIG_SCSI_SAS_LIBSAS is not set |
| 808 | # CONFIG_SCSI_SRP_ATTRS is not set | 807 | # CONFIG_SCSI_SRP_ATTRS is not set |
| 809 | # CONFIG_SCSI_LOWLEVEL is not set | 808 | # CONFIG_SCSI_LOWLEVEL is not set |
| 810 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | 809 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
| 810 | # CONFIG_SCSI_DH is not set | ||
| 811 | CONFIG_ATA=y | 811 | CONFIG_ATA=y |
| 812 | # CONFIG_ATA_NONSTANDARD is not set | 812 | # CONFIG_ATA_NONSTANDARD is not set |
| 813 | CONFIG_ATA_ACPI=y | 813 | CONFIG_ATA_ACPI=y |
| @@ -842,7 +842,7 @@ CONFIG_PATA_AMD=y | |||
| 842 | # CONFIG_PATA_CS5536 is not set | 842 | # CONFIG_PATA_CS5536 is not set |
| 843 | # CONFIG_PATA_CYPRESS is not set | 843 | # CONFIG_PATA_CYPRESS is not set |
| 844 | # CONFIG_PATA_EFAR is not set | 844 | # CONFIG_PATA_EFAR is not set |
| 845 | # CONFIG_ATA_GENERIC is not set | 845 | CONFIG_ATA_GENERIC=y |
| 846 | # CONFIG_PATA_HPT366 is not set | 846 | # CONFIG_PATA_HPT366 is not set |
| 847 | # CONFIG_PATA_HPT37X is not set | 847 | # CONFIG_PATA_HPT37X is not set |
| 848 | # CONFIG_PATA_HPT3X2N is not set | 848 | # CONFIG_PATA_HPT3X2N is not set |
| @@ -852,7 +852,7 @@ CONFIG_PATA_AMD=y | |||
| 852 | # CONFIG_PATA_JMICRON is not set | 852 | # CONFIG_PATA_JMICRON is not set |
| 853 | # CONFIG_PATA_TRIFLEX is not set | 853 | # CONFIG_PATA_TRIFLEX is not set |
| 854 | # CONFIG_PATA_MARVELL is not set | 854 | # CONFIG_PATA_MARVELL is not set |
| 855 | # CONFIG_PATA_MPIIX is not set | 855 | CONFIG_PATA_MPIIX=y |
| 856 | CONFIG_PATA_OLDPIIX=y | 856 | CONFIG_PATA_OLDPIIX=y |
| 857 | # CONFIG_PATA_NETCELL is not set | 857 | # CONFIG_PATA_NETCELL is not set |
| 858 | # CONFIG_PATA_NINJA32 is not set | 858 | # CONFIG_PATA_NINJA32 is not set |
| @@ -871,6 +871,7 @@ CONFIG_PATA_OLDPIIX=y | |||
| 871 | # CONFIG_PATA_SIS is not set | 871 | # CONFIG_PATA_SIS is not set |
| 872 | # CONFIG_PATA_VIA is not set | 872 | # CONFIG_PATA_VIA is not set |
| 873 | # CONFIG_PATA_WINBOND is not set | 873 | # CONFIG_PATA_WINBOND is not set |
| 874 | CONFIG_PATA_SCH=y | ||
| 874 | CONFIG_MD=y | 875 | CONFIG_MD=y |
| 875 | CONFIG_BLK_DEV_MD=y | 876 | CONFIG_BLK_DEV_MD=y |
| 876 | # CONFIG_MD_LINEAR is not set | 877 | # CONFIG_MD_LINEAR is not set |
| @@ -894,13 +895,16 @@ CONFIG_DM_ZERO=y | |||
| 894 | # | 895 | # |
| 895 | # IEEE 1394 (FireWire) support | 896 | # IEEE 1394 (FireWire) support |
| 896 | # | 897 | # |
| 898 | |||
| 899 | # | ||
| 900 | # Enable only one of the two stacks, unless you know what you are doing | ||
| 901 | # | ||
| 897 | # CONFIG_FIREWIRE is not set | 902 | # CONFIG_FIREWIRE is not set |
| 898 | # CONFIG_IEEE1394 is not set | 903 | # CONFIG_IEEE1394 is not set |
| 899 | # CONFIG_I2O is not set | 904 | # CONFIG_I2O is not set |
| 900 | CONFIG_MACINTOSH_DRIVERS=y | 905 | CONFIG_MACINTOSH_DRIVERS=y |
| 901 | CONFIG_MAC_EMUMOUSEBTN=y | 906 | CONFIG_MAC_EMUMOUSEBTN=y |
| 902 | CONFIG_NETDEVICES=y | 907 | CONFIG_NETDEVICES=y |
| 903 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
| 904 | # CONFIG_IFB is not set | 908 | # CONFIG_IFB is not set |
| 905 | # CONFIG_DUMMY is not set | 909 | # CONFIG_DUMMY is not set |
| 906 | # CONFIG_BONDING is not set | 910 | # CONFIG_BONDING is not set |
| @@ -910,7 +914,23 @@ CONFIG_NETDEVICES=y | |||
| 910 | # CONFIG_VETH is not set | 914 | # CONFIG_VETH is not set |
| 911 | # CONFIG_NET_SB1000 is not set | 915 | # CONFIG_NET_SB1000 is not set |
| 912 | # CONFIG_ARCNET is not set | 916 | # CONFIG_ARCNET is not set |
| 913 | # CONFIG_PHYLIB is not set | 917 | CONFIG_PHYLIB=y |
| 918 | |||
| 919 | # | ||
| 920 | # MII PHY device drivers | ||
| 921 | # | ||
| 922 | # CONFIG_MARVELL_PHY is not set | ||
| 923 | # CONFIG_DAVICOM_PHY is not set | ||
| 924 | # CONFIG_QSEMI_PHY is not set | ||
| 925 | # CONFIG_LXT_PHY is not set | ||
| 926 | # CONFIG_CICADA_PHY is not set | ||
| 927 | # CONFIG_VITESSE_PHY is not set | ||
| 928 | # CONFIG_SMSC_PHY is not set | ||
| 929 | # CONFIG_BROADCOM_PHY is not set | ||
| 930 | # CONFIG_ICPLUS_PHY is not set | ||
| 931 | # CONFIG_REALTEK_PHY is not set | ||
| 932 | # CONFIG_FIXED_PHY is not set | ||
| 933 | # CONFIG_MDIO_BITBANG is not set | ||
| 914 | CONFIG_NET_ETHERNET=y | 934 | CONFIG_NET_ETHERNET=y |
| 915 | CONFIG_MII=y | 935 | CONFIG_MII=y |
| 916 | # CONFIG_HAPPYMEAL is not set | 936 | # CONFIG_HAPPYMEAL is not set |
| @@ -943,10 +963,10 @@ CONFIG_FORCEDETH=y | |||
| 943 | CONFIG_E100=y | 963 | CONFIG_E100=y |
| 944 | # CONFIG_FEALNX is not set | 964 | # CONFIG_FEALNX is not set |
| 945 | # CONFIG_NATSEMI is not set | 965 | # CONFIG_NATSEMI is not set |
| 946 | # CONFIG_NE2K_PCI is not set | 966 | CONFIG_NE2K_PCI=y |
| 947 | # CONFIG_8139CP is not set | 967 | # CONFIG_8139CP is not set |
| 948 | CONFIG_8139TOO=y | 968 | CONFIG_8139TOO=y |
| 949 | CONFIG_8139TOO_PIO=y | 969 | # CONFIG_8139TOO_PIO is not set |
| 950 | # CONFIG_8139TOO_TUNE_TWISTER is not set | 970 | # CONFIG_8139TOO_TUNE_TWISTER is not set |
| 951 | # CONFIG_8139TOO_8129 is not set | 971 | # CONFIG_8139TOO_8129 is not set |
| 952 | # CONFIG_8139_OLD_RX_RESET is not set | 972 | # CONFIG_8139_OLD_RX_RESET is not set |
| @@ -961,25 +981,24 @@ CONFIG_NETDEV_1000=y | |||
| 961 | # CONFIG_ACENIC is not set | 981 | # CONFIG_ACENIC is not set |
| 962 | # CONFIG_DL2K is not set | 982 | # CONFIG_DL2K is not set |
| 963 | CONFIG_E1000=y | 983 | CONFIG_E1000=y |
| 964 | # CONFIG_E1000_NAPI is not set | ||
| 965 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 984 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
| 966 | # CONFIG_E1000E is not set | 985 | CONFIG_E1000E=y |
| 967 | # CONFIG_E1000E_ENABLED is not set | ||
| 968 | # CONFIG_IP1000 is not set | 986 | # CONFIG_IP1000 is not set |
| 969 | # CONFIG_IGB is not set | 987 | # CONFIG_IGB is not set |
| 970 | # CONFIG_NS83820 is not set | 988 | # CONFIG_NS83820 is not set |
| 971 | # CONFIG_HAMACHI is not set | 989 | # CONFIG_HAMACHI is not set |
| 972 | # CONFIG_YELLOWFIN is not set | 990 | # CONFIG_YELLOWFIN is not set |
| 973 | # CONFIG_R8169 is not set | 991 | CONFIG_R8169=y |
| 974 | # CONFIG_SIS190 is not set | 992 | # CONFIG_SIS190 is not set |
| 975 | # CONFIG_SKGE is not set | 993 | # CONFIG_SKGE is not set |
| 976 | CONFIG_SKY2=y | 994 | CONFIG_SKY2=y |
| 977 | # CONFIG_SKY2_DEBUG is not set | 995 | # CONFIG_SKY2_DEBUG is not set |
| 978 | # CONFIG_VIA_VELOCITY is not set | 996 | # CONFIG_VIA_VELOCITY is not set |
| 979 | CONFIG_TIGON3=y | 997 | CONFIG_TIGON3=y |
| 980 | # CONFIG_BNX2 is not set | 998 | CONFIG_BNX2=y |
| 981 | # CONFIG_QLA3XXX is not set | 999 | # CONFIG_QLA3XXX is not set |
| 982 | # CONFIG_ATL1 is not set | 1000 | # CONFIG_ATL1 is not set |
| 1001 | # CONFIG_ATL1E is not set | ||
| 983 | CONFIG_NETDEV_10000=y | 1002 | CONFIG_NETDEV_10000=y |
| 984 | # CONFIG_CHELSIO_T1 is not set | 1003 | # CONFIG_CHELSIO_T1 is not set |
| 985 | # CONFIG_CHELSIO_T3 is not set | 1004 | # CONFIG_CHELSIO_T3 is not set |
| @@ -1019,13 +1038,14 @@ CONFIG_WLAN_80211=y | |||
| 1019 | # CONFIG_RTL8180 is not set | 1038 | # CONFIG_RTL8180 is not set |
| 1020 | # CONFIG_RTL8187 is not set | 1039 | # CONFIG_RTL8187 is not set |
| 1021 | # CONFIG_ADM8211 is not set | 1040 | # CONFIG_ADM8211 is not set |
| 1041 | # CONFIG_MAC80211_HWSIM is not set | ||
| 1022 | # CONFIG_P54_COMMON is not set | 1042 | # CONFIG_P54_COMMON is not set |
| 1023 | CONFIG_ATH5K=y | 1043 | CONFIG_ATH5K=y |
| 1024 | # CONFIG_ATH5K_DEBUG is not set | 1044 | # CONFIG_ATH5K_DEBUG is not set |
| 1025 | # CONFIG_IWLWIFI is not set | 1045 | # CONFIG_ATH9K is not set |
| 1026 | # CONFIG_IWLCORE is not set | 1046 | # CONFIG_IWLCORE is not set |
| 1027 | # CONFIG_IWLWIFI_LEDS is not set | 1047 | # CONFIG_IWLWIFI_LEDS is not set |
| 1028 | # CONFIG_IWL4965 is not set | 1048 | # CONFIG_IWLAGN is not set |
| 1029 | # CONFIG_IWL3945 is not set | 1049 | # CONFIG_IWL3945 is not set |
| 1030 | # CONFIG_HOSTAP is not set | 1050 | # CONFIG_HOSTAP is not set |
| 1031 | # CONFIG_B43 is not set | 1051 | # CONFIG_B43 is not set |
| @@ -1105,6 +1125,7 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y | |||
| 1105 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | 1125 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set |
| 1106 | # CONFIG_MOUSE_SERIAL is not set | 1126 | # CONFIG_MOUSE_SERIAL is not set |
| 1107 | # CONFIG_MOUSE_APPLETOUCH is not set | 1127 | # CONFIG_MOUSE_APPLETOUCH is not set |
| 1128 | # CONFIG_MOUSE_BCM5974 is not set | ||
| 1108 | # CONFIG_MOUSE_VSXXXAA is not set | 1129 | # CONFIG_MOUSE_VSXXXAA is not set |
| 1109 | CONFIG_INPUT_JOYSTICK=y | 1130 | CONFIG_INPUT_JOYSTICK=y |
| 1110 | # CONFIG_JOYSTICK_ANALOG is not set | 1131 | # CONFIG_JOYSTICK_ANALOG is not set |
| @@ -1139,12 +1160,14 @@ CONFIG_INPUT_TOUCHSCREEN=y | |||
| 1139 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 1160 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
| 1140 | # CONFIG_TOUCHSCREEN_ELO is not set | 1161 | # CONFIG_TOUCHSCREEN_ELO is not set |
| 1141 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | 1162 | # CONFIG_TOUCHSCREEN_MTOUCH is not set |
| 1163 | # CONFIG_TOUCHSCREEN_INEXIO is not set | ||
| 1142 | # CONFIG_TOUCHSCREEN_MK712 is not set | 1164 | # CONFIG_TOUCHSCREEN_MK712 is not set |
| 1143 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | 1165 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set |
| 1144 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | 1166 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set |
| 1145 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | 1167 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set |
| 1146 | # CONFIG_TOUCHSCREEN_UCB1400 is not set | 1168 | # CONFIG_TOUCHSCREEN_UCB1400 is not set |
| 1147 | # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set | 1169 | # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set |
| 1170 | # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set | ||
| 1148 | CONFIG_INPUT_MISC=y | 1171 | CONFIG_INPUT_MISC=y |
| 1149 | # CONFIG_INPUT_PCSPKR is not set | 1172 | # CONFIG_INPUT_PCSPKR is not set |
| 1150 | # CONFIG_INPUT_APANEL is not set | 1173 | # CONFIG_INPUT_APANEL is not set |
| @@ -1173,6 +1196,7 @@ CONFIG_SERIO_LIBPS2=y | |||
| 1173 | # Character devices | 1196 | # Character devices |
| 1174 | # | 1197 | # |
| 1175 | CONFIG_VT=y | 1198 | CONFIG_VT=y |
| 1199 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 1176 | CONFIG_VT_CONSOLE=y | 1200 | CONFIG_VT_CONSOLE=y |
| 1177 | CONFIG_HW_CONSOLE=y | 1201 | CONFIG_HW_CONSOLE=y |
| 1178 | CONFIG_VT_HW_CONSOLE_BINDING=y | 1202 | CONFIG_VT_HW_CONSOLE_BINDING=y |
| @@ -1223,8 +1247,8 @@ CONFIG_UNIX98_PTYS=y | |||
| 1223 | # CONFIG_LEGACY_PTYS is not set | 1247 | # CONFIG_LEGACY_PTYS is not set |
| 1224 | # CONFIG_IPMI_HANDLER is not set | 1248 | # CONFIG_IPMI_HANDLER is not set |
| 1225 | CONFIG_HW_RANDOM=y | 1249 | CONFIG_HW_RANDOM=y |
| 1226 | # CONFIG_HW_RANDOM_INTEL is not set | 1250 | CONFIG_HW_RANDOM_INTEL=y |
| 1227 | # CONFIG_HW_RANDOM_AMD is not set | 1251 | CONFIG_HW_RANDOM_AMD=y |
| 1228 | CONFIG_HW_RANDOM_GEODE=y | 1252 | CONFIG_HW_RANDOM_GEODE=y |
| 1229 | CONFIG_HW_RANDOM_VIA=y | 1253 | CONFIG_HW_RANDOM_VIA=y |
| 1230 | CONFIG_NVRAM=y | 1254 | CONFIG_NVRAM=y |
| @@ -1245,7 +1269,6 @@ CONFIG_NVRAM=y | |||
| 1245 | # CONFIG_CS5535_GPIO is not set | 1269 | # CONFIG_CS5535_GPIO is not set |
| 1246 | # CONFIG_RAW_DRIVER is not set | 1270 | # CONFIG_RAW_DRIVER is not set |
| 1247 | CONFIG_HPET=y | 1271 | CONFIG_HPET=y |
| 1248 | # CONFIG_HPET_RTC_IRQ is not set | ||
| 1249 | # CONFIG_HPET_MMAP is not set | 1272 | # CONFIG_HPET_MMAP is not set |
| 1250 | # CONFIG_HANGCHECK_TIMER is not set | 1273 | # CONFIG_HANGCHECK_TIMER is not set |
| 1251 | # CONFIG_TCG_TPM is not set | 1274 | # CONFIG_TCG_TPM is not set |
| @@ -1254,43 +1277,64 @@ CONFIG_DEVPORT=y | |||
| 1254 | CONFIG_I2C=y | 1277 | CONFIG_I2C=y |
| 1255 | CONFIG_I2C_BOARDINFO=y | 1278 | CONFIG_I2C_BOARDINFO=y |
| 1256 | # CONFIG_I2C_CHARDEV is not set | 1279 | # CONFIG_I2C_CHARDEV is not set |
| 1280 | CONFIG_I2C_HELPER_AUTO=y | ||
| 1257 | 1281 | ||
| 1258 | # | 1282 | # |
| 1259 | # I2C Hardware Bus support | 1283 | # I2C Hardware Bus support |
| 1260 | # | 1284 | # |
| 1285 | |||
| 1286 | # | ||
| 1287 | # PC SMBus host controller drivers | ||
| 1288 | # | ||
| 1261 | # CONFIG_I2C_ALI1535 is not set | 1289 | # CONFIG_I2C_ALI1535 is not set |
| 1262 | # CONFIG_I2C_ALI1563 is not set | 1290 | # CONFIG_I2C_ALI1563 is not set |
| 1263 | # CONFIG_I2C_ALI15X3 is not set | 1291 | # CONFIG_I2C_ALI15X3 is not set |
| 1264 | # CONFIG_I2C_AMD756 is not set | 1292 | # CONFIG_I2C_AMD756 is not set |
| 1265 | # CONFIG_I2C_AMD8111 is not set | 1293 | # CONFIG_I2C_AMD8111 is not set |
| 1266 | CONFIG_I2C_I801=y | 1294 | CONFIG_I2C_I801=y |
| 1267 | # CONFIG_I2C_I810 is not set | 1295 | # CONFIG_I2C_ISCH is not set |
| 1268 | # CONFIG_I2C_PIIX4 is not set | 1296 | # CONFIG_I2C_PIIX4 is not set |
| 1269 | # CONFIG_I2C_NFORCE2 is not set | 1297 | # CONFIG_I2C_NFORCE2 is not set |
| 1270 | # CONFIG_I2C_OCORES is not set | ||
| 1271 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 1272 | # CONFIG_I2C_PROSAVAGE is not set | ||
| 1273 | # CONFIG_I2C_SAVAGE4 is not set | ||
| 1274 | # CONFIG_I2C_SIMTEC is not set | ||
| 1275 | # CONFIG_SCx200_ACB is not set | ||
| 1276 | # CONFIG_I2C_SIS5595 is not set | 1298 | # CONFIG_I2C_SIS5595 is not set |
| 1277 | # CONFIG_I2C_SIS630 is not set | 1299 | # CONFIG_I2C_SIS630 is not set |
| 1278 | # CONFIG_I2C_SIS96X is not set | 1300 | # CONFIG_I2C_SIS96X is not set |
| 1279 | # CONFIG_I2C_TAOS_EVM is not set | ||
| 1280 | # CONFIG_I2C_STUB is not set | ||
| 1281 | # CONFIG_I2C_TINY_USB is not set | ||
| 1282 | # CONFIG_I2C_VIA is not set | 1301 | # CONFIG_I2C_VIA is not set |
| 1283 | # CONFIG_I2C_VIAPRO is not set | 1302 | # CONFIG_I2C_VIAPRO is not set |
| 1303 | |||
| 1304 | # | ||
| 1305 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
| 1306 | # | ||
| 1307 | # CONFIG_I2C_OCORES is not set | ||
| 1308 | # CONFIG_I2C_SIMTEC is not set | ||
| 1309 | |||
| 1310 | # | ||
| 1311 | # External I2C/SMBus adapter drivers | ||
| 1312 | # | ||
| 1313 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 1314 | # CONFIG_I2C_TAOS_EVM is not set | ||
| 1315 | # CONFIG_I2C_TINY_USB is not set | ||
| 1316 | |||
| 1317 | # | ||
| 1318 | # Graphics adapter I2C/DDC channel drivers | ||
| 1319 | # | ||
| 1284 | # CONFIG_I2C_VOODOO3 is not set | 1320 | # CONFIG_I2C_VOODOO3 is not set |
| 1321 | |||
| 1322 | # | ||
| 1323 | # Other I2C/SMBus bus drivers | ||
| 1324 | # | ||
| 1285 | # CONFIG_I2C_PCA_PLATFORM is not set | 1325 | # CONFIG_I2C_PCA_PLATFORM is not set |
| 1326 | # CONFIG_I2C_STUB is not set | ||
| 1327 | # CONFIG_SCx200_ACB is not set | ||
| 1286 | 1328 | ||
| 1287 | # | 1329 | # |
| 1288 | # Miscellaneous I2C Chip support | 1330 | # Miscellaneous I2C Chip support |
| 1289 | # | 1331 | # |
| 1290 | # CONFIG_DS1682 is not set | 1332 | # CONFIG_DS1682 is not set |
| 1333 | # CONFIG_AT24 is not set | ||
| 1291 | # CONFIG_SENSORS_EEPROM is not set | 1334 | # CONFIG_SENSORS_EEPROM is not set |
| 1292 | # CONFIG_SENSORS_PCF8574 is not set | 1335 | # CONFIG_SENSORS_PCF8574 is not set |
| 1293 | # CONFIG_PCF8575 is not set | 1336 | # CONFIG_PCF8575 is not set |
| 1337 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 1294 | # CONFIG_SENSORS_PCF8591 is not set | 1338 | # CONFIG_SENSORS_PCF8591 is not set |
| 1295 | # CONFIG_SENSORS_MAX6875 is not set | 1339 | # CONFIG_SENSORS_MAX6875 is not set |
| 1296 | # CONFIG_SENSORS_TSL2550 is not set | 1340 | # CONFIG_SENSORS_TSL2550 is not set |
| @@ -1299,6 +1343,8 @@ CONFIG_I2C_I801=y | |||
| 1299 | # CONFIG_I2C_DEBUG_BUS is not set | 1343 | # CONFIG_I2C_DEBUG_BUS is not set |
| 1300 | # CONFIG_I2C_DEBUG_CHIP is not set | 1344 | # CONFIG_I2C_DEBUG_CHIP is not set |
| 1301 | # CONFIG_SPI is not set | 1345 | # CONFIG_SPI is not set |
| 1346 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 1347 | # CONFIG_GPIOLIB is not set | ||
| 1302 | # CONFIG_W1 is not set | 1348 | # CONFIG_W1 is not set |
| 1303 | CONFIG_POWER_SUPPLY=y | 1349 | CONFIG_POWER_SUPPLY=y |
| 1304 | # CONFIG_POWER_SUPPLY_DEBUG is not set | 1350 | # CONFIG_POWER_SUPPLY_DEBUG is not set |
| @@ -1360,8 +1406,10 @@ CONFIG_SSB_POSSIBLE=y | |||
| 1360 | # | 1406 | # |
| 1361 | # Multifunction device drivers | 1407 | # Multifunction device drivers |
| 1362 | # | 1408 | # |
| 1409 | # CONFIG_MFD_CORE is not set | ||
| 1363 | # CONFIG_MFD_SM501 is not set | 1410 | # CONFIG_MFD_SM501 is not set |
| 1364 | # CONFIG_HTC_PASIC3 is not set | 1411 | # CONFIG_HTC_PASIC3 is not set |
| 1412 | # CONFIG_MFD_TMIO is not set | ||
| 1365 | 1413 | ||
| 1366 | # | 1414 | # |
| 1367 | # Multimedia devices | 1415 | # Multimedia devices |
| @@ -1372,6 +1420,7 @@ CONFIG_SSB_POSSIBLE=y | |||
| 1372 | # | 1420 | # |
| 1373 | # CONFIG_VIDEO_DEV is not set | 1421 | # CONFIG_VIDEO_DEV is not set |
| 1374 | # CONFIG_DVB_CORE is not set | 1422 | # CONFIG_DVB_CORE is not set |
| 1423 | # CONFIG_VIDEO_MEDIA is not set | ||
| 1375 | 1424 | ||
| 1376 | # | 1425 | # |
| 1377 | # Multimedia drivers | 1426 | # Multimedia drivers |
| @@ -1418,7 +1467,6 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
| 1418 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 1467 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
| 1419 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 1468 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
| 1420 | # CONFIG_FB_SYS_FOPS is not set | 1469 | # CONFIG_FB_SYS_FOPS is not set |
| 1421 | CONFIG_FB_DEFERRED_IO=y | ||
| 1422 | # CONFIG_FB_SVGALIB is not set | 1470 | # CONFIG_FB_SVGALIB is not set |
| 1423 | # CONFIG_FB_MACMODES is not set | 1471 | # CONFIG_FB_MACMODES is not set |
| 1424 | # CONFIG_FB_BACKLIGHT is not set | 1472 | # CONFIG_FB_BACKLIGHT is not set |
| @@ -1463,6 +1511,7 @@ CONFIG_FB_EFI=y | |||
| 1463 | # CONFIG_FB_TRIDENT is not set | 1511 | # CONFIG_FB_TRIDENT is not set |
| 1464 | # CONFIG_FB_ARK is not set | 1512 | # CONFIG_FB_ARK is not set |
| 1465 | # CONFIG_FB_PM3 is not set | 1513 | # CONFIG_FB_PM3 is not set |
| 1514 | # CONFIG_FB_CARMINE is not set | ||
| 1466 | # CONFIG_FB_GEODE is not set | 1515 | # CONFIG_FB_GEODE is not set |
| 1467 | # CONFIG_FB_VIRTUAL is not set | 1516 | # CONFIG_FB_VIRTUAL is not set |
| 1468 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | 1517 | CONFIG_BACKLIGHT_LCD_SUPPORT=y |
| @@ -1470,6 +1519,7 @@ CONFIG_BACKLIGHT_LCD_SUPPORT=y | |||
| 1470 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | 1519 | CONFIG_BACKLIGHT_CLASS_DEVICE=y |
| 1471 | # CONFIG_BACKLIGHT_CORGI is not set | 1520 | # CONFIG_BACKLIGHT_CORGI is not set |
| 1472 | # CONFIG_BACKLIGHT_PROGEAR is not set | 1521 | # CONFIG_BACKLIGHT_PROGEAR is not set |
| 1522 | # CONFIG_BACKLIGHT_MBP_NVIDIA is not set | ||
| 1473 | 1523 | ||
| 1474 | # | 1524 | # |
| 1475 | # Display device support | 1525 | # Display device support |
| @@ -1489,15 +1539,7 @@ CONFIG_LOGO=y | |||
| 1489 | # CONFIG_LOGO_LINUX_MONO is not set | 1539 | # CONFIG_LOGO_LINUX_MONO is not set |
| 1490 | # CONFIG_LOGO_LINUX_VGA16 is not set | 1540 | # CONFIG_LOGO_LINUX_VGA16 is not set |
| 1491 | CONFIG_LOGO_LINUX_CLUT224=y | 1541 | CONFIG_LOGO_LINUX_CLUT224=y |
| 1492 | |||
| 1493 | # | ||
| 1494 | # Sound | ||
| 1495 | # | ||
| 1496 | CONFIG_SOUND=y | 1542 | CONFIG_SOUND=y |
| 1497 | |||
| 1498 | # | ||
| 1499 | # Advanced Linux Sound Architecture | ||
| 1500 | # | ||
| 1501 | CONFIG_SND=y | 1543 | CONFIG_SND=y |
| 1502 | CONFIG_SND_TIMER=y | 1544 | CONFIG_SND_TIMER=y |
| 1503 | CONFIG_SND_PCM=y | 1545 | CONFIG_SND_PCM=y |
| @@ -1515,20 +1557,14 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
| 1515 | # CONFIG_SND_VERBOSE_PRINTK is not set | 1557 | # CONFIG_SND_VERBOSE_PRINTK is not set |
| 1516 | # CONFIG_SND_DEBUG is not set | 1558 | # CONFIG_SND_DEBUG is not set |
| 1517 | CONFIG_SND_VMASTER=y | 1559 | CONFIG_SND_VMASTER=y |
| 1518 | 1560 | CONFIG_SND_DRIVERS=y | |
| 1519 | # | ||
| 1520 | # Generic devices | ||
| 1521 | # | ||
| 1522 | # CONFIG_SND_PCSP is not set | 1561 | # CONFIG_SND_PCSP is not set |
| 1523 | # CONFIG_SND_DUMMY is not set | 1562 | # CONFIG_SND_DUMMY is not set |
| 1524 | # CONFIG_SND_VIRMIDI is not set | 1563 | # CONFIG_SND_VIRMIDI is not set |
| 1525 | # CONFIG_SND_MTPAV is not set | 1564 | # CONFIG_SND_MTPAV is not set |
| 1526 | # CONFIG_SND_SERIAL_U16550 is not set | 1565 | # CONFIG_SND_SERIAL_U16550 is not set |
| 1527 | # CONFIG_SND_MPU401 is not set | 1566 | # CONFIG_SND_MPU401 is not set |
| 1528 | 1567 | CONFIG_SND_PCI=y | |
| 1529 | # | ||
| 1530 | # PCI devices | ||
| 1531 | # | ||
| 1532 | # CONFIG_SND_AD1889 is not set | 1568 | # CONFIG_SND_AD1889 is not set |
| 1533 | # CONFIG_SND_ALS300 is not set | 1569 | # CONFIG_SND_ALS300 is not set |
| 1534 | # CONFIG_SND_ALS4000 is not set | 1570 | # CONFIG_SND_ALS4000 is not set |
| @@ -1603,36 +1639,14 @@ CONFIG_SND_HDA_GENERIC=y | |||
| 1603 | # CONFIG_SND_VIRTUOSO is not set | 1639 | # CONFIG_SND_VIRTUOSO is not set |
| 1604 | # CONFIG_SND_VX222 is not set | 1640 | # CONFIG_SND_VX222 is not set |
| 1605 | # CONFIG_SND_YMFPCI is not set | 1641 | # CONFIG_SND_YMFPCI is not set |
| 1606 | 1642 | CONFIG_SND_USB=y | |
| 1607 | # | ||
| 1608 | # USB devices | ||
| 1609 | # | ||
| 1610 | # CONFIG_SND_USB_AUDIO is not set | 1643 | # CONFIG_SND_USB_AUDIO is not set |
| 1611 | # CONFIG_SND_USB_USX2Y is not set | 1644 | # CONFIG_SND_USB_USX2Y is not set |
| 1612 | # CONFIG_SND_USB_CAIAQ is not set | 1645 | # CONFIG_SND_USB_CAIAQ is not set |
| 1613 | 1646 | CONFIG_SND_PCMCIA=y | |
| 1614 | # | ||
| 1615 | # PCMCIA devices | ||
| 1616 | # | ||
| 1617 | # CONFIG_SND_VXPOCKET is not set | 1647 | # CONFIG_SND_VXPOCKET is not set |
| 1618 | # CONFIG_SND_PDAUDIOCF is not set | 1648 | # CONFIG_SND_PDAUDIOCF is not set |
| 1619 | |||
| 1620 | # | ||
| 1621 | # System on Chip audio support | ||
| 1622 | # | ||
| 1623 | # CONFIG_SND_SOC is not set | 1649 | # CONFIG_SND_SOC is not set |
| 1624 | |||
| 1625 | # | ||
| 1626 | # ALSA SoC audio for Freescale SOCs | ||
| 1627 | # | ||
| 1628 | |||
| 1629 | # | ||
| 1630 | # SoC Audio for the Texas Instruments OMAP | ||
| 1631 | # | ||
| 1632 | |||
| 1633 | # | ||
| 1634 | # Open Sound System | ||
| 1635 | # | ||
| 1636 | # CONFIG_SOUND_PRIME is not set | 1650 | # CONFIG_SOUND_PRIME is not set |
| 1637 | CONFIG_HID_SUPPORT=y | 1651 | CONFIG_HID_SUPPORT=y |
| 1638 | CONFIG_HID=y | 1652 | CONFIG_HID=y |
| @@ -1668,6 +1682,7 @@ CONFIG_USB_DEVICEFS=y | |||
| 1668 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1682 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 1669 | CONFIG_USB_SUSPEND=y | 1683 | CONFIG_USB_SUSPEND=y |
| 1670 | # CONFIG_USB_OTG is not set | 1684 | # CONFIG_USB_OTG is not set |
| 1685 | CONFIG_USB_MON=y | ||
| 1671 | 1686 | ||
| 1672 | # | 1687 | # |
| 1673 | # USB Host Controller Drivers | 1688 | # USB Host Controller Drivers |
| @@ -1691,6 +1706,7 @@ CONFIG_USB_UHCI_HCD=y | |||
| 1691 | # | 1706 | # |
| 1692 | # CONFIG_USB_ACM is not set | 1707 | # CONFIG_USB_ACM is not set |
| 1693 | CONFIG_USB_PRINTER=y | 1708 | CONFIG_USB_PRINTER=y |
| 1709 | # CONFIG_USB_WDM is not set | ||
| 1694 | 1710 | ||
| 1695 | # | 1711 | # |
| 1696 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1712 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
| @@ -1712,6 +1728,7 @@ CONFIG_USB_STORAGE=y | |||
| 1712 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1728 | # CONFIG_USB_STORAGE_ALAUDA is not set |
| 1713 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1729 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
| 1714 | # CONFIG_USB_STORAGE_KARMA is not set | 1730 | # CONFIG_USB_STORAGE_KARMA is not set |
| 1731 | # CONFIG_USB_STORAGE_SIERRA is not set | ||
| 1715 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | 1732 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set |
| 1716 | CONFIG_USB_LIBUSUAL=y | 1733 | CONFIG_USB_LIBUSUAL=y |
| 1717 | 1734 | ||
| @@ -1720,7 +1737,6 @@ CONFIG_USB_LIBUSUAL=y | |||
| 1720 | # | 1737 | # |
| 1721 | # CONFIG_USB_MDC800 is not set | 1738 | # CONFIG_USB_MDC800 is not set |
| 1722 | # CONFIG_USB_MICROTEK is not set | 1739 | # CONFIG_USB_MICROTEK is not set |
| 1723 | CONFIG_USB_MON=y | ||
| 1724 | 1740 | ||
| 1725 | # | 1741 | # |
| 1726 | # USB port drivers | 1742 | # USB port drivers |
| @@ -1733,7 +1749,6 @@ CONFIG_USB_MON=y | |||
| 1733 | # CONFIG_USB_EMI62 is not set | 1749 | # CONFIG_USB_EMI62 is not set |
| 1734 | # CONFIG_USB_EMI26 is not set | 1750 | # CONFIG_USB_EMI26 is not set |
| 1735 | # CONFIG_USB_ADUTUX is not set | 1751 | # CONFIG_USB_ADUTUX is not set |
| 1736 | # CONFIG_USB_AUERSWALD is not set | ||
| 1737 | # CONFIG_USB_RIO500 is not set | 1752 | # CONFIG_USB_RIO500 is not set |
| 1738 | # CONFIG_USB_LEGOTOWER is not set | 1753 | # CONFIG_USB_LEGOTOWER is not set |
| 1739 | # CONFIG_USB_LCD is not set | 1754 | # CONFIG_USB_LCD is not set |
| @@ -1750,6 +1765,7 @@ CONFIG_USB_MON=y | |||
| 1750 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1765 | # CONFIG_USB_TRANCEVIBRATOR is not set |
| 1751 | # CONFIG_USB_IOWARRIOR is not set | 1766 | # CONFIG_USB_IOWARRIOR is not set |
| 1752 | # CONFIG_USB_TEST is not set | 1767 | # CONFIG_USB_TEST is not set |
| 1768 | # CONFIG_USB_ISIGHTFW is not set | ||
| 1753 | # CONFIG_USB_GADGET is not set | 1769 | # CONFIG_USB_GADGET is not set |
| 1754 | # CONFIG_MMC is not set | 1770 | # CONFIG_MMC is not set |
| 1755 | # CONFIG_MEMSTICK is not set | 1771 | # CONFIG_MEMSTICK is not set |
| @@ -1759,7 +1775,9 @@ CONFIG_LEDS_CLASS=y | |||
| 1759 | # | 1775 | # |
| 1760 | # LED drivers | 1776 | # LED drivers |
| 1761 | # | 1777 | # |
| 1778 | # CONFIG_LEDS_PCA9532 is not set | ||
| 1762 | # CONFIG_LEDS_CLEVO_MAIL is not set | 1779 | # CONFIG_LEDS_CLEVO_MAIL is not set |
| 1780 | # CONFIG_LEDS_PCA955X is not set | ||
| 1763 | 1781 | ||
| 1764 | # | 1782 | # |
| 1765 | # LED Triggers | 1783 | # LED Triggers |
| @@ -1805,6 +1823,7 @@ CONFIG_RTC_INTF_DEV=y | |||
| 1805 | # CONFIG_RTC_DRV_PCF8583 is not set | 1823 | # CONFIG_RTC_DRV_PCF8583 is not set |
| 1806 | # CONFIG_RTC_DRV_M41T80 is not set | 1824 | # CONFIG_RTC_DRV_M41T80 is not set |
| 1807 | # CONFIG_RTC_DRV_S35390A is not set | 1825 | # CONFIG_RTC_DRV_S35390A is not set |
| 1826 | # CONFIG_RTC_DRV_FM3130 is not set | ||
| 1808 | 1827 | ||
| 1809 | # | 1828 | # |
| 1810 | # SPI RTC drivers | 1829 | # SPI RTC drivers |
| @@ -1837,11 +1856,13 @@ CONFIG_DMADEVICES=y | |||
| 1837 | # Firmware Drivers | 1856 | # Firmware Drivers |
| 1838 | # | 1857 | # |
| 1839 | # CONFIG_EDD is not set | 1858 | # CONFIG_EDD is not set |
| 1859 | CONFIG_FIRMWARE_MEMMAP=y | ||
| 1840 | CONFIG_EFI_VARS=y | 1860 | CONFIG_EFI_VARS=y |
| 1841 | # CONFIG_DELL_RBU is not set | 1861 | # CONFIG_DELL_RBU is not set |
| 1842 | # CONFIG_DCDBAS is not set | 1862 | # CONFIG_DCDBAS is not set |
| 1843 | CONFIG_DMIID=y | 1863 | CONFIG_DMIID=y |
| 1844 | # CONFIG_ISCSI_IBFT_FIND is not set | 1864 | CONFIG_ISCSI_IBFT_FIND=y |
| 1865 | CONFIG_ISCSI_IBFT=y | ||
| 1845 | 1866 | ||
| 1846 | # | 1867 | # |
| 1847 | # File systems | 1868 | # File systems |
| @@ -1920,14 +1941,27 @@ CONFIG_HUGETLB_PAGE=y | |||
| 1920 | # CONFIG_CRAMFS is not set | 1941 | # CONFIG_CRAMFS is not set |
| 1921 | # CONFIG_VXFS_FS is not set | 1942 | # CONFIG_VXFS_FS is not set |
| 1922 | # CONFIG_MINIX_FS is not set | 1943 | # CONFIG_MINIX_FS is not set |
| 1944 | # CONFIG_OMFS_FS is not set | ||
| 1923 | # CONFIG_HPFS_FS is not set | 1945 | # CONFIG_HPFS_FS is not set |
| 1924 | # CONFIG_QNX4FS_FS is not set | 1946 | # CONFIG_QNX4FS_FS is not set |
| 1925 | # CONFIG_ROMFS_FS is not set | 1947 | # CONFIG_ROMFS_FS is not set |
| 1926 | # CONFIG_SYSV_FS is not set | 1948 | # CONFIG_SYSV_FS is not set |
| 1927 | # CONFIG_UFS_FS is not set | 1949 | # CONFIG_UFS_FS is not set |
| 1928 | CONFIG_NETWORK_FILESYSTEMS=y | 1950 | CONFIG_NETWORK_FILESYSTEMS=y |
| 1929 | # CONFIG_NFS_FS is not set | 1951 | CONFIG_NFS_FS=y |
| 1952 | CONFIG_NFS_V3=y | ||
| 1953 | CONFIG_NFS_V3_ACL=y | ||
| 1954 | CONFIG_NFS_V4=y | ||
| 1955 | CONFIG_ROOT_NFS=y | ||
| 1930 | # CONFIG_NFSD is not set | 1956 | # CONFIG_NFSD is not set |
| 1957 | CONFIG_LOCKD=y | ||
| 1958 | CONFIG_LOCKD_V4=y | ||
| 1959 | CONFIG_NFS_ACL_SUPPORT=y | ||
| 1960 | CONFIG_NFS_COMMON=y | ||
| 1961 | CONFIG_SUNRPC=y | ||
| 1962 | CONFIG_SUNRPC_GSS=y | ||
| 1963 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 1964 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1931 | # CONFIG_SMB_FS is not set | 1965 | # CONFIG_SMB_FS is not set |
| 1932 | # CONFIG_CIFS is not set | 1966 | # CONFIG_CIFS is not set |
| 1933 | # CONFIG_NCP_FS is not set | 1967 | # CONFIG_NCP_FS is not set |
| @@ -2001,9 +2035,9 @@ CONFIG_NLS_UTF8=y | |||
| 2001 | # Kernel hacking | 2035 | # Kernel hacking |
| 2002 | # | 2036 | # |
| 2003 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 2037 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
| 2004 | # CONFIG_PRINTK_TIME is not set | 2038 | CONFIG_PRINTK_TIME=y |
| 2005 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | 2039 | CONFIG_ENABLE_WARN_DEPRECATED=y |
| 2006 | # CONFIG_ENABLE_MUST_CHECK is not set | 2040 | CONFIG_ENABLE_MUST_CHECK=y |
| 2007 | CONFIG_FRAME_WARN=2048 | 2041 | CONFIG_FRAME_WARN=2048 |
| 2008 | CONFIG_MAGIC_SYSRQ=y | 2042 | CONFIG_MAGIC_SYSRQ=y |
| 2009 | # CONFIG_UNUSED_SYMBOLS is not set | 2043 | # CONFIG_UNUSED_SYMBOLS is not set |
| @@ -2033,6 +2067,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
| 2033 | # CONFIG_DEBUG_INFO is not set | 2067 | # CONFIG_DEBUG_INFO is not set |
| 2034 | # CONFIG_DEBUG_VM is not set | 2068 | # CONFIG_DEBUG_VM is not set |
| 2035 | # CONFIG_DEBUG_WRITECOUNT is not set | 2069 | # CONFIG_DEBUG_WRITECOUNT is not set |
| 2070 | CONFIG_DEBUG_MEMORY_INIT=y | ||
| 2036 | # CONFIG_DEBUG_LIST is not set | 2071 | # CONFIG_DEBUG_LIST is not set |
| 2037 | # CONFIG_DEBUG_SG is not set | 2072 | # CONFIG_DEBUG_SG is not set |
| 2038 | CONFIG_FRAME_POINTER=y | 2073 | CONFIG_FRAME_POINTER=y |
| @@ -2043,23 +2078,32 @@ CONFIG_FRAME_POINTER=y | |||
| 2043 | # CONFIG_LKDTM is not set | 2078 | # CONFIG_LKDTM is not set |
| 2044 | # CONFIG_FAULT_INJECTION is not set | 2079 | # CONFIG_FAULT_INJECTION is not set |
| 2045 | # CONFIG_LATENCYTOP is not set | 2080 | # CONFIG_LATENCYTOP is not set |
| 2081 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 2082 | CONFIG_HAVE_FTRACE=y | ||
| 2083 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 2084 | # CONFIG_FTRACE is not set | ||
| 2085 | # CONFIG_IRQSOFF_TRACER is not set | ||
| 2086 | # CONFIG_SYSPROF_TRACER is not set | ||
| 2087 | # CONFIG_SCHED_TRACER is not set | ||
| 2088 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
| 2046 | CONFIG_PROVIDE_OHCI1394_DMA_INIT=y | 2089 | CONFIG_PROVIDE_OHCI1394_DMA_INIT=y |
| 2047 | # CONFIG_SAMPLES is not set | 2090 | # CONFIG_SAMPLES is not set |
| 2048 | # CONFIG_KGDB is not set | ||
| 2049 | CONFIG_HAVE_ARCH_KGDB=y | 2091 | CONFIG_HAVE_ARCH_KGDB=y |
| 2092 | # CONFIG_KGDB is not set | ||
| 2050 | # CONFIG_STRICT_DEVMEM is not set | 2093 | # CONFIG_STRICT_DEVMEM is not set |
| 2094 | CONFIG_X86_VERBOSE_BOOTUP=y | ||
| 2051 | CONFIG_EARLY_PRINTK=y | 2095 | CONFIG_EARLY_PRINTK=y |
| 2052 | CONFIG_DEBUG_STACKOVERFLOW=y | 2096 | CONFIG_DEBUG_STACKOVERFLOW=y |
| 2053 | CONFIG_DEBUG_STACK_USAGE=y | 2097 | CONFIG_DEBUG_STACK_USAGE=y |
| 2054 | # CONFIG_DEBUG_PAGEALLOC is not set | 2098 | # CONFIG_DEBUG_PAGEALLOC is not set |
| 2099 | # CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 2055 | # CONFIG_X86_PTDUMP is not set | 2100 | # CONFIG_X86_PTDUMP is not set |
| 2056 | CONFIG_DEBUG_RODATA=y | 2101 | CONFIG_DEBUG_RODATA=y |
| 2057 | # CONFIG_DEBUG_RODATA_TEST is not set | 2102 | # CONFIG_DEBUG_RODATA_TEST is not set |
| 2058 | CONFIG_DEBUG_NX_TEST=m | 2103 | CONFIG_DEBUG_NX_TEST=m |
| 2059 | # CONFIG_4KSTACKS is not set | 2104 | # CONFIG_4KSTACKS is not set |
| 2060 | CONFIG_X86_FIND_SMP_CONFIG=y | ||
| 2061 | CONFIG_X86_MPPARSE=y | ||
| 2062 | CONFIG_DOUBLEFAULT=y | 2105 | CONFIG_DOUBLEFAULT=y |
| 2106 | # CONFIG_MMIOTRACE is not set | ||
| 2063 | CONFIG_IO_DELAY_TYPE_0X80=0 | 2107 | CONFIG_IO_DELAY_TYPE_0X80=0 |
| 2064 | CONFIG_IO_DELAY_TYPE_0XED=1 | 2108 | CONFIG_IO_DELAY_TYPE_0XED=1 |
| 2065 | CONFIG_IO_DELAY_TYPE_UDELAY=2 | 2109 | CONFIG_IO_DELAY_TYPE_UDELAY=2 |
| @@ -2071,6 +2115,7 @@ CONFIG_IO_DELAY_0X80=y | |||
| 2071 | CONFIG_DEFAULT_IO_DELAY_TYPE=0 | 2115 | CONFIG_DEFAULT_IO_DELAY_TYPE=0 |
| 2072 | CONFIG_DEBUG_BOOT_PARAMS=y | 2116 | CONFIG_DEBUG_BOOT_PARAMS=y |
| 2073 | # CONFIG_CPA_DEBUG is not set | 2117 | # CONFIG_CPA_DEBUG is not set |
| 2118 | # CONFIG_OPTIMIZE_INLINING is not set | ||
| 2074 | 2119 | ||
| 2075 | # | 2120 | # |
| 2076 | # Security options | 2121 | # Security options |
| @@ -2080,7 +2125,6 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y | |||
| 2080 | CONFIG_SECURITY=y | 2125 | CONFIG_SECURITY=y |
| 2081 | CONFIG_SECURITY_NETWORK=y | 2126 | CONFIG_SECURITY_NETWORK=y |
| 2082 | # CONFIG_SECURITY_NETWORK_XFRM is not set | 2127 | # CONFIG_SECURITY_NETWORK_XFRM is not set |
| 2083 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 2084 | CONFIG_SECURITY_FILE_CAPABILITIES=y | 2128 | CONFIG_SECURITY_FILE_CAPABILITIES=y |
| 2085 | # CONFIG_SECURITY_ROOTPLUG is not set | 2129 | # CONFIG_SECURITY_ROOTPLUG is not set |
| 2086 | CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536 | 2130 | CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536 |
| @@ -2141,6 +2185,10 @@ CONFIG_CRYPTO_HMAC=y | |||
| 2141 | # CONFIG_CRYPTO_MD4 is not set | 2185 | # CONFIG_CRYPTO_MD4 is not set |
| 2142 | CONFIG_CRYPTO_MD5=y | 2186 | CONFIG_CRYPTO_MD5=y |
| 2143 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 2187 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
| 2188 | # CONFIG_CRYPTO_RMD128 is not set | ||
| 2189 | # CONFIG_CRYPTO_RMD160 is not set | ||
| 2190 | # CONFIG_CRYPTO_RMD256 is not set | ||
| 2191 | # CONFIG_CRYPTO_RMD320 is not set | ||
| 2144 | CONFIG_CRYPTO_SHA1=y | 2192 | CONFIG_CRYPTO_SHA1=y |
| 2145 | # CONFIG_CRYPTO_SHA256 is not set | 2193 | # CONFIG_CRYPTO_SHA256 is not set |
| 2146 | # CONFIG_CRYPTO_SHA512 is not set | 2194 | # CONFIG_CRYPTO_SHA512 is not set |
| @@ -2151,7 +2199,7 @@ CONFIG_CRYPTO_SHA1=y | |||
| 2151 | # Ciphers | 2199 | # Ciphers |
| 2152 | # | 2200 | # |
| 2153 | CONFIG_CRYPTO_AES=y | 2201 | CONFIG_CRYPTO_AES=y |
| 2154 | # CONFIG_CRYPTO_AES_586 is not set | 2202 | CONFIG_CRYPTO_AES_586=y |
| 2155 | # CONFIG_CRYPTO_ANUBIS is not set | 2203 | # CONFIG_CRYPTO_ANUBIS is not set |
| 2156 | CONFIG_CRYPTO_ARC4=y | 2204 | CONFIG_CRYPTO_ARC4=y |
| 2157 | # CONFIG_CRYPTO_BLOWFISH is not set | 2205 | # CONFIG_CRYPTO_BLOWFISH is not set |
| @@ -2193,6 +2241,7 @@ CONFIG_GENERIC_FIND_FIRST_BIT=y | |||
| 2193 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 2241 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
| 2194 | # CONFIG_CRC_CCITT is not set | 2242 | # CONFIG_CRC_CCITT is not set |
| 2195 | # CONFIG_CRC16 is not set | 2243 | # CONFIG_CRC16 is not set |
| 2244 | CONFIG_CRC_T10DIF=y | ||
| 2196 | # CONFIG_CRC_ITU_T is not set | 2245 | # CONFIG_CRC_ITU_T is not set |
| 2197 | CONFIG_CRC32=y | 2246 | CONFIG_CRC32=y |
| 2198 | # CONFIG_CRC7 is not set | 2247 | # CONFIG_CRC7 is not set |
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig index a40452429625..678c8acefe04 100644 --- a/arch/x86/configs/x86_64_defconfig +++ b/arch/x86/configs/x86_64_defconfig | |||
| @@ -1,13 +1,13 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.26-rc1 | 3 | # Linux kernel version: 2.6.27-rc4 |
| 4 | # Sun May 4 19:59:57 2008 | 4 | # Mon Aug 25 14:40:46 2008 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | # CONFIG_X86_32 is not set | 7 | # CONFIG_X86_32 is not set |
| 8 | CONFIG_X86_64=y | 8 | CONFIG_X86_64=y |
| 9 | CONFIG_X86=y | 9 | CONFIG_X86=y |
| 10 | CONFIG_DEFCONFIG_LIST="arch/x86/configs/x86_64_defconfig" | 10 | CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" |
| 11 | # CONFIG_GENERIC_LOCKBREAK is not set | 11 | # CONFIG_GENERIC_LOCKBREAK is not set |
| 12 | CONFIG_GENERIC_TIME=y | 12 | CONFIG_GENERIC_TIME=y |
| 13 | CONFIG_GENERIC_CMOS_UPDATE=y | 13 | CONFIG_GENERIC_CMOS_UPDATE=y |
| @@ -53,6 +53,7 @@ CONFIG_X86_HT=y | |||
| 53 | CONFIG_X86_BIOS_REBOOT=y | 53 | CONFIG_X86_BIOS_REBOOT=y |
| 54 | CONFIG_X86_TRAMPOLINE=y | 54 | CONFIG_X86_TRAMPOLINE=y |
| 55 | # CONFIG_KTIME_SCALAR is not set | 55 | # CONFIG_KTIME_SCALAR is not set |
| 56 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 56 | 57 | ||
| 57 | # | 58 | # |
| 58 | # General setup | 59 | # General setup |
| @@ -82,6 +83,7 @@ CONFIG_CGROUPS=y | |||
| 82 | CONFIG_CGROUP_NS=y | 83 | CONFIG_CGROUP_NS=y |
| 83 | # CONFIG_CGROUP_DEVICE is not set | 84 | # CONFIG_CGROUP_DEVICE is not set |
| 84 | CONFIG_CPUSETS=y | 85 | CONFIG_CPUSETS=y |
| 86 | CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y | ||
| 85 | CONFIG_GROUP_SCHED=y | 87 | CONFIG_GROUP_SCHED=y |
| 86 | CONFIG_FAIR_GROUP_SCHED=y | 88 | CONFIG_FAIR_GROUP_SCHED=y |
| 87 | # CONFIG_RT_GROUP_SCHED is not set | 89 | # CONFIG_RT_GROUP_SCHED is not set |
| @@ -105,7 +107,6 @@ CONFIG_SYSCTL=y | |||
| 105 | # CONFIG_EMBEDDED is not set | 107 | # CONFIG_EMBEDDED is not set |
| 106 | CONFIG_UID16=y | 108 | CONFIG_UID16=y |
| 107 | CONFIG_SYSCTL_SYSCALL=y | 109 | CONFIG_SYSCTL_SYSCALL=y |
| 108 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 109 | CONFIG_KALLSYMS=y | 110 | CONFIG_KALLSYMS=y |
| 110 | CONFIG_KALLSYMS_ALL=y | 111 | CONFIG_KALLSYMS_ALL=y |
| 111 | CONFIG_KALLSYMS_EXTRA_PASS=y | 112 | CONFIG_KALLSYMS_EXTRA_PASS=y |
| @@ -113,6 +114,7 @@ CONFIG_HOTPLUG=y | |||
| 113 | CONFIG_PRINTK=y | 114 | CONFIG_PRINTK=y |
| 114 | CONFIG_BUG=y | 115 | CONFIG_BUG=y |
| 115 | CONFIG_ELF_CORE=y | 116 | CONFIG_ELF_CORE=y |
| 117 | CONFIG_PCSPKR_PLATFORM=y | ||
| 116 | # CONFIG_COMPAT_BRK is not set | 118 | # CONFIG_COMPAT_BRK is not set |
| 117 | CONFIG_BASE_FULL=y | 119 | CONFIG_BASE_FULL=y |
| 118 | CONFIG_FUTEX=y | 120 | CONFIG_FUTEX=y |
| @@ -132,25 +134,33 @@ CONFIG_MARKERS=y | |||
| 132 | # CONFIG_OPROFILE is not set | 134 | # CONFIG_OPROFILE is not set |
| 133 | CONFIG_HAVE_OPROFILE=y | 135 | CONFIG_HAVE_OPROFILE=y |
| 134 | CONFIG_KPROBES=y | 136 | CONFIG_KPROBES=y |
| 137 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 135 | CONFIG_KRETPROBES=y | 138 | CONFIG_KRETPROBES=y |
| 139 | CONFIG_HAVE_IOREMAP_PROT=y | ||
| 136 | CONFIG_HAVE_KPROBES=y | 140 | CONFIG_HAVE_KPROBES=y |
| 137 | CONFIG_HAVE_KRETPROBES=y | 141 | CONFIG_HAVE_KRETPROBES=y |
| 142 | # CONFIG_HAVE_ARCH_TRACEHOOK is not set | ||
| 138 | # CONFIG_HAVE_DMA_ATTRS is not set | 143 | # CONFIG_HAVE_DMA_ATTRS is not set |
| 144 | CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 145 | # CONFIG_HAVE_CLK is not set | ||
| 139 | CONFIG_PROC_PAGE_MONITOR=y | 146 | CONFIG_PROC_PAGE_MONITOR=y |
| 147 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 140 | CONFIG_SLABINFO=y | 148 | CONFIG_SLABINFO=y |
| 141 | CONFIG_RT_MUTEXES=y | 149 | CONFIG_RT_MUTEXES=y |
| 142 | # CONFIG_TINY_SHMEM is not set | 150 | # CONFIG_TINY_SHMEM is not set |
| 143 | CONFIG_BASE_SMALL=0 | 151 | CONFIG_BASE_SMALL=0 |
| 144 | CONFIG_MODULES=y | 152 | CONFIG_MODULES=y |
| 153 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
| 145 | CONFIG_MODULE_UNLOAD=y | 154 | CONFIG_MODULE_UNLOAD=y |
| 146 | CONFIG_MODULE_FORCE_UNLOAD=y | 155 | CONFIG_MODULE_FORCE_UNLOAD=y |
| 147 | # CONFIG_MODVERSIONS is not set | 156 | # CONFIG_MODVERSIONS is not set |
| 148 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 157 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 149 | # CONFIG_KMOD is not set | 158 | CONFIG_KMOD=y |
| 150 | CONFIG_STOP_MACHINE=y | 159 | CONFIG_STOP_MACHINE=y |
| 151 | CONFIG_BLOCK=y | 160 | CONFIG_BLOCK=y |
| 152 | CONFIG_BLK_DEV_IO_TRACE=y | 161 | CONFIG_BLK_DEV_IO_TRACE=y |
| 153 | CONFIG_BLK_DEV_BSG=y | 162 | CONFIG_BLK_DEV_BSG=y |
| 163 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 154 | CONFIG_BLOCK_COMPAT=y | 164 | CONFIG_BLOCK_COMPAT=y |
| 155 | 165 | ||
| 156 | # | 166 | # |
| @@ -175,20 +185,15 @@ CONFIG_NO_HZ=y | |||
| 175 | CONFIG_HIGH_RES_TIMERS=y | 185 | CONFIG_HIGH_RES_TIMERS=y |
| 176 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | 186 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |
| 177 | CONFIG_SMP=y | 187 | CONFIG_SMP=y |
| 188 | CONFIG_X86_FIND_SMP_CONFIG=y | ||
| 189 | CONFIG_X86_MPPARSE=y | ||
| 178 | CONFIG_X86_PC=y | 190 | CONFIG_X86_PC=y |
| 179 | # CONFIG_X86_ELAN is not set | 191 | # CONFIG_X86_ELAN is not set |
| 180 | # CONFIG_X86_VOYAGER is not set | 192 | # CONFIG_X86_VOYAGER is not set |
| 181 | # CONFIG_X86_NUMAQ is not set | ||
| 182 | # CONFIG_X86_SUMMIT is not set | ||
| 183 | # CONFIG_X86_BIGSMP is not set | ||
| 184 | # CONFIG_X86_VISWS is not set | ||
| 185 | # CONFIG_X86_GENERICARCH is not set | 193 | # CONFIG_X86_GENERICARCH is not set |
| 186 | # CONFIG_X86_ES7000 is not set | ||
| 187 | # CONFIG_X86_RDC321X is not set | ||
| 188 | # CONFIG_X86_VSMP is not set | 194 | # CONFIG_X86_VSMP is not set |
| 189 | # CONFIG_PARAVIRT_GUEST is not set | 195 | # CONFIG_PARAVIRT_GUEST is not set |
| 190 | CONFIG_MEMTEST_BOOTPARAM=y | 196 | # CONFIG_MEMTEST is not set |
| 191 | CONFIG_MEMTEST_BOOTPARAM_VALUE=0 | ||
| 192 | # CONFIG_M386 is not set | 197 | # CONFIG_M386 is not set |
| 193 | # CONFIG_M486 is not set | 198 | # CONFIG_M486 is not set |
| 194 | # CONFIG_M586 is not set | 199 | # CONFIG_M586 is not set |
| @@ -220,11 +225,12 @@ CONFIG_X86_L1_CACHE_BYTES=64 | |||
| 220 | CONFIG_X86_INTERNODE_CACHE_BYTES=64 | 225 | CONFIG_X86_INTERNODE_CACHE_BYTES=64 |
| 221 | CONFIG_X86_CMPXCHG=y | 226 | CONFIG_X86_CMPXCHG=y |
| 222 | CONFIG_X86_L1_CACHE_SHIFT=6 | 227 | CONFIG_X86_L1_CACHE_SHIFT=6 |
| 223 | CONFIG_X86_GOOD_APIC=y | 228 | CONFIG_X86_WP_WORKS_OK=y |
| 224 | CONFIG_X86_INTEL_USERCOPY=y | 229 | CONFIG_X86_INTEL_USERCOPY=y |
| 225 | CONFIG_X86_USE_PPRO_CHECKSUM=y | 230 | CONFIG_X86_USE_PPRO_CHECKSUM=y |
| 226 | CONFIG_X86_P6_NOP=y | 231 | CONFIG_X86_P6_NOP=y |
| 227 | CONFIG_X86_TSC=y | 232 | CONFIG_X86_TSC=y |
| 233 | CONFIG_X86_CMPXCHG64=y | ||
| 228 | CONFIG_X86_CMOV=y | 234 | CONFIG_X86_CMOV=y |
| 229 | CONFIG_X86_MINIMUM_CPU_FAMILY=64 | 235 | CONFIG_X86_MINIMUM_CPU_FAMILY=64 |
| 230 | CONFIG_X86_DEBUGCTLMSR=y | 236 | CONFIG_X86_DEBUGCTLMSR=y |
| @@ -234,8 +240,10 @@ CONFIG_DMI=y | |||
| 234 | CONFIG_GART_IOMMU=y | 240 | CONFIG_GART_IOMMU=y |
| 235 | CONFIG_CALGARY_IOMMU=y | 241 | CONFIG_CALGARY_IOMMU=y |
| 236 | CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y | 242 | CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y |
| 243 | CONFIG_AMD_IOMMU=y | ||
| 237 | CONFIG_SWIOTLB=y | 244 | CONFIG_SWIOTLB=y |
| 238 | CONFIG_IOMMU_HELPER=y | 245 | CONFIG_IOMMU_HELPER=y |
| 246 | # CONFIG_MAXSMP is not set | ||
| 239 | CONFIG_NR_CPUS=4 | 247 | CONFIG_NR_CPUS=4 |
| 240 | # CONFIG_SCHED_SMT is not set | 248 | # CONFIG_SCHED_SMT is not set |
| 241 | CONFIG_SCHED_MC=y | 249 | CONFIG_SCHED_MC=y |
| @@ -281,6 +289,7 @@ CONFIG_ZONE_DMA_FLAG=1 | |||
| 281 | CONFIG_BOUNCE=y | 289 | CONFIG_BOUNCE=y |
| 282 | CONFIG_VIRT_TO_BUS=y | 290 | CONFIG_VIRT_TO_BUS=y |
| 283 | CONFIG_MTRR=y | 291 | CONFIG_MTRR=y |
| 292 | # CONFIG_MTRR_SANITIZER is not set | ||
| 284 | # CONFIG_X86_PAT is not set | 293 | # CONFIG_X86_PAT is not set |
| 285 | CONFIG_EFI=y | 294 | CONFIG_EFI=y |
| 286 | CONFIG_SECCOMP=y | 295 | CONFIG_SECCOMP=y |
| @@ -313,6 +322,7 @@ CONFIG_PM_TRACE_RTC=y | |||
| 313 | CONFIG_PM_SLEEP_SMP=y | 322 | CONFIG_PM_SLEEP_SMP=y |
| 314 | CONFIG_PM_SLEEP=y | 323 | CONFIG_PM_SLEEP=y |
| 315 | CONFIG_SUSPEND=y | 324 | CONFIG_SUSPEND=y |
| 325 | # CONFIG_PM_TEST_SUSPEND is not set | ||
| 316 | CONFIG_SUSPEND_FREEZER=y | 326 | CONFIG_SUSPEND_FREEZER=y |
| 317 | CONFIG_HIBERNATION=y | 327 | CONFIG_HIBERNATION=y |
| 318 | CONFIG_PM_STD_PARTITION="" | 328 | CONFIG_PM_STD_PARTITION="" |
| @@ -339,6 +349,7 @@ CONFIG_ACPI_NUMA=y | |||
| 339 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 349 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
| 340 | # CONFIG_ACPI_DEBUG is not set | 350 | # CONFIG_ACPI_DEBUG is not set |
| 341 | CONFIG_ACPI_EC=y | 351 | CONFIG_ACPI_EC=y |
| 352 | # CONFIG_ACPI_PCI_SLOT is not set | ||
| 342 | CONFIG_ACPI_POWER=y | 353 | CONFIG_ACPI_POWER=y |
| 343 | CONFIG_ACPI_SYSTEM=y | 354 | CONFIG_ACPI_SYSTEM=y |
| 344 | CONFIG_X86_PM_TIMER=y | 355 | CONFIG_X86_PM_TIMER=y |
| @@ -437,10 +448,6 @@ CONFIG_IA32_EMULATION=y | |||
| 437 | CONFIG_COMPAT=y | 448 | CONFIG_COMPAT=y |
| 438 | CONFIG_COMPAT_FOR_U64_ALIGNMENT=y | 449 | CONFIG_COMPAT_FOR_U64_ALIGNMENT=y |
| 439 | CONFIG_SYSVIPC_COMPAT=y | 450 | CONFIG_SYSVIPC_COMPAT=y |
| 440 | |||
| 441 | # | ||
| 442 | # Networking | ||
| 443 | # | ||
| 444 | CONFIG_NET=y | 451 | CONFIG_NET=y |
| 445 | 452 | ||
| 446 | # | 453 | # |
| @@ -464,7 +471,10 @@ CONFIG_IP_FIB_HASH=y | |||
| 464 | CONFIG_IP_MULTIPLE_TABLES=y | 471 | CONFIG_IP_MULTIPLE_TABLES=y |
| 465 | CONFIG_IP_ROUTE_MULTIPATH=y | 472 | CONFIG_IP_ROUTE_MULTIPATH=y |
| 466 | CONFIG_IP_ROUTE_VERBOSE=y | 473 | CONFIG_IP_ROUTE_VERBOSE=y |
| 467 | # CONFIG_IP_PNP is not set | 474 | CONFIG_IP_PNP=y |
| 475 | CONFIG_IP_PNP_DHCP=y | ||
| 476 | CONFIG_IP_PNP_BOOTP=y | ||
| 477 | CONFIG_IP_PNP_RARP=y | ||
| 468 | # CONFIG_NET_IPIP is not set | 478 | # CONFIG_NET_IPIP is not set |
| 469 | # CONFIG_NET_IPGRE is not set | 479 | # CONFIG_NET_IPGRE is not set |
| 470 | CONFIG_IP_MROUTE=y | 480 | CONFIG_IP_MROUTE=y |
| @@ -607,7 +617,6 @@ CONFIG_NET_SCHED=y | |||
| 607 | # CONFIG_NET_SCH_HTB is not set | 617 | # CONFIG_NET_SCH_HTB is not set |
| 608 | # CONFIG_NET_SCH_HFSC is not set | 618 | # CONFIG_NET_SCH_HFSC is not set |
| 609 | # CONFIG_NET_SCH_PRIO is not set | 619 | # CONFIG_NET_SCH_PRIO is not set |
| 610 | # CONFIG_NET_SCH_RR is not set | ||
| 611 | # CONFIG_NET_SCH_RED is not set | 620 | # CONFIG_NET_SCH_RED is not set |
| 612 | # CONFIG_NET_SCH_SFQ is not set | 621 | # CONFIG_NET_SCH_SFQ is not set |
| 613 | # CONFIG_NET_SCH_TEQL is not set | 622 | # CONFIG_NET_SCH_TEQL is not set |
| @@ -669,28 +678,19 @@ CONFIG_FIB_RULES=y | |||
| 669 | CONFIG_CFG80211=y | 678 | CONFIG_CFG80211=y |
| 670 | CONFIG_NL80211=y | 679 | CONFIG_NL80211=y |
| 671 | CONFIG_WIRELESS_EXT=y | 680 | CONFIG_WIRELESS_EXT=y |
| 681 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
| 672 | CONFIG_MAC80211=y | 682 | CONFIG_MAC80211=y |
| 673 | 683 | ||
| 674 | # | 684 | # |
| 675 | # Rate control algorithm selection | 685 | # Rate control algorithm selection |
| 676 | # | 686 | # |
| 687 | CONFIG_MAC80211_RC_PID=y | ||
| 677 | CONFIG_MAC80211_RC_DEFAULT_PID=y | 688 | CONFIG_MAC80211_RC_DEFAULT_PID=y |
| 678 | # CONFIG_MAC80211_RC_DEFAULT_NONE is not set | ||
| 679 | |||
| 680 | # | ||
| 681 | # Selecting 'y' for an algorithm will | ||
| 682 | # | ||
| 683 | |||
| 684 | # | ||
| 685 | # build the algorithm into mac80211. | ||
| 686 | # | ||
| 687 | CONFIG_MAC80211_RC_DEFAULT="pid" | 689 | CONFIG_MAC80211_RC_DEFAULT="pid" |
| 688 | CONFIG_MAC80211_RC_PID=y | ||
| 689 | # CONFIG_MAC80211_MESH is not set | 690 | # CONFIG_MAC80211_MESH is not set |
| 690 | CONFIG_MAC80211_LEDS=y | 691 | CONFIG_MAC80211_LEDS=y |
| 691 | # CONFIG_MAC80211_DEBUGFS is not set | 692 | # CONFIG_MAC80211_DEBUGFS is not set |
| 692 | # CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set | 693 | # CONFIG_MAC80211_DEBUG_MENU is not set |
| 693 | # CONFIG_MAC80211_DEBUG is not set | ||
| 694 | # CONFIG_IEEE80211 is not set | 694 | # CONFIG_IEEE80211 is not set |
| 695 | # CONFIG_RFKILL is not set | 695 | # CONFIG_RFKILL is not set |
| 696 | # CONFIG_NET_9P is not set | 696 | # CONFIG_NET_9P is not set |
| @@ -706,6 +706,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | |||
| 706 | CONFIG_STANDALONE=y | 706 | CONFIG_STANDALONE=y |
| 707 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 707 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
| 708 | CONFIG_FW_LOADER=y | 708 | CONFIG_FW_LOADER=y |
| 709 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 710 | CONFIG_EXTRA_FIRMWARE="" | ||
| 709 | # CONFIG_DEBUG_DRIVER is not set | 711 | # CONFIG_DEBUG_DRIVER is not set |
| 710 | CONFIG_DEBUG_DEVRES=y | 712 | CONFIG_DEBUG_DEVRES=y |
| 711 | # CONFIG_SYS_HYPERVISOR is not set | 713 | # CONFIG_SYS_HYPERVISOR is not set |
| @@ -738,6 +740,7 @@ CONFIG_BLK_DEV_RAM_SIZE=16384 | |||
| 738 | # CONFIG_BLK_DEV_XIP is not set | 740 | # CONFIG_BLK_DEV_XIP is not set |
| 739 | # CONFIG_CDROM_PKTCDVD is not set | 741 | # CONFIG_CDROM_PKTCDVD is not set |
| 740 | # CONFIG_ATA_OVER_ETH is not set | 742 | # CONFIG_ATA_OVER_ETH is not set |
| 743 | # CONFIG_BLK_DEV_HD is not set | ||
| 741 | CONFIG_MISC_DEVICES=y | 744 | CONFIG_MISC_DEVICES=y |
| 742 | # CONFIG_IBM_ASM is not set | 745 | # CONFIG_IBM_ASM is not set |
| 743 | # CONFIG_PHANTOM is not set | 746 | # CONFIG_PHANTOM is not set |
| @@ -748,10 +751,14 @@ CONFIG_MISC_DEVICES=y | |||
| 748 | # CONFIG_ASUS_LAPTOP is not set | 751 | # CONFIG_ASUS_LAPTOP is not set |
| 749 | # CONFIG_FUJITSU_LAPTOP is not set | 752 | # CONFIG_FUJITSU_LAPTOP is not set |
| 750 | # CONFIG_MSI_LAPTOP is not set | 753 | # CONFIG_MSI_LAPTOP is not set |
| 754 | # CONFIG_COMPAL_LAPTOP is not set | ||
| 751 | # CONFIG_SONY_LAPTOP is not set | 755 | # CONFIG_SONY_LAPTOP is not set |
| 752 | # CONFIG_THINKPAD_ACPI is not set | 756 | # CONFIG_THINKPAD_ACPI is not set |
| 753 | # CONFIG_INTEL_MENLOW is not set | 757 | # CONFIG_INTEL_MENLOW is not set |
| 754 | # CONFIG_ENCLOSURE_SERVICES is not set | 758 | # CONFIG_ENCLOSURE_SERVICES is not set |
| 759 | # CONFIG_SGI_XP is not set | ||
| 760 | # CONFIG_HP_ILO is not set | ||
| 761 | # CONFIG_SGI_GRU is not set | ||
| 755 | CONFIG_HAVE_IDE=y | 762 | CONFIG_HAVE_IDE=y |
| 756 | # CONFIG_IDE is not set | 763 | # CONFIG_IDE is not set |
| 757 | 764 | ||
| @@ -790,12 +797,13 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
| 790 | # | 797 | # |
| 791 | CONFIG_SCSI_SPI_ATTRS=y | 798 | CONFIG_SCSI_SPI_ATTRS=y |
| 792 | # CONFIG_SCSI_FC_ATTRS is not set | 799 | # CONFIG_SCSI_FC_ATTRS is not set |
| 793 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 800 | CONFIG_SCSI_ISCSI_ATTRS=y |
| 794 | # CONFIG_SCSI_SAS_ATTRS is not set | 801 | # CONFIG_SCSI_SAS_ATTRS is not set |
| 795 | # CONFIG_SCSI_SAS_LIBSAS is not set | 802 | # CONFIG_SCSI_SAS_LIBSAS is not set |
| 796 | # CONFIG_SCSI_SRP_ATTRS is not set | 803 | # CONFIG_SCSI_SRP_ATTRS is not set |
| 797 | # CONFIG_SCSI_LOWLEVEL is not set | 804 | # CONFIG_SCSI_LOWLEVEL is not set |
| 798 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | 805 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
| 806 | # CONFIG_SCSI_DH is not set | ||
| 799 | CONFIG_ATA=y | 807 | CONFIG_ATA=y |
| 800 | # CONFIG_ATA_NONSTANDARD is not set | 808 | # CONFIG_ATA_NONSTANDARD is not set |
| 801 | CONFIG_ATA_ACPI=y | 809 | CONFIG_ATA_ACPI=y |
| @@ -857,6 +865,7 @@ CONFIG_PATA_OLDPIIX=y | |||
| 857 | # CONFIG_PATA_SIS is not set | 865 | # CONFIG_PATA_SIS is not set |
| 858 | # CONFIG_PATA_VIA is not set | 866 | # CONFIG_PATA_VIA is not set |
| 859 | # CONFIG_PATA_WINBOND is not set | 867 | # CONFIG_PATA_WINBOND is not set |
| 868 | CONFIG_PATA_SCH=y | ||
| 860 | CONFIG_MD=y | 869 | CONFIG_MD=y |
| 861 | CONFIG_BLK_DEV_MD=y | 870 | CONFIG_BLK_DEV_MD=y |
| 862 | # CONFIG_MD_LINEAR is not set | 871 | # CONFIG_MD_LINEAR is not set |
| @@ -880,13 +889,16 @@ CONFIG_DM_ZERO=y | |||
| 880 | # | 889 | # |
| 881 | # IEEE 1394 (FireWire) support | 890 | # IEEE 1394 (FireWire) support |
| 882 | # | 891 | # |
| 892 | |||
| 893 | # | ||
| 894 | # Enable only one of the two stacks, unless you know what you are doing | ||
| 895 | # | ||
| 883 | # CONFIG_FIREWIRE is not set | 896 | # CONFIG_FIREWIRE is not set |
| 884 | # CONFIG_IEEE1394 is not set | 897 | # CONFIG_IEEE1394 is not set |
| 885 | # CONFIG_I2O is not set | 898 | # CONFIG_I2O is not set |
| 886 | CONFIG_MACINTOSH_DRIVERS=y | 899 | CONFIG_MACINTOSH_DRIVERS=y |
| 887 | CONFIG_MAC_EMUMOUSEBTN=y | 900 | CONFIG_MAC_EMUMOUSEBTN=y |
| 888 | CONFIG_NETDEVICES=y | 901 | CONFIG_NETDEVICES=y |
| 889 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
| 890 | # CONFIG_IFB is not set | 902 | # CONFIG_IFB is not set |
| 891 | # CONFIG_DUMMY is not set | 903 | # CONFIG_DUMMY is not set |
| 892 | # CONFIG_BONDING is not set | 904 | # CONFIG_BONDING is not set |
| @@ -896,7 +908,23 @@ CONFIG_NETDEVICES=y | |||
| 896 | # CONFIG_VETH is not set | 908 | # CONFIG_VETH is not set |
| 897 | # CONFIG_NET_SB1000 is not set | 909 | # CONFIG_NET_SB1000 is not set |
| 898 | # CONFIG_ARCNET is not set | 910 | # CONFIG_ARCNET is not set |
| 899 | # CONFIG_PHYLIB is not set | 911 | CONFIG_PHYLIB=y |
| 912 | |||
| 913 | # | ||
| 914 | # MII PHY device drivers | ||
| 915 | # | ||
| 916 | # CONFIG_MARVELL_PHY is not set | ||
| 917 | # CONFIG_DAVICOM_PHY is not set | ||
| 918 | # CONFIG_QSEMI_PHY is not set | ||
| 919 | # CONFIG_LXT_PHY is not set | ||
| 920 | # CONFIG_CICADA_PHY is not set | ||
| 921 | # CONFIG_VITESSE_PHY is not set | ||
| 922 | # CONFIG_SMSC_PHY is not set | ||
| 923 | # CONFIG_BROADCOM_PHY is not set | ||
| 924 | # CONFIG_ICPLUS_PHY is not set | ||
| 925 | # CONFIG_REALTEK_PHY is not set | ||
| 926 | # CONFIG_FIXED_PHY is not set | ||
| 927 | # CONFIG_MDIO_BITBANG is not set | ||
| 900 | CONFIG_NET_ETHERNET=y | 928 | CONFIG_NET_ETHERNET=y |
| 901 | CONFIG_MII=y | 929 | CONFIG_MII=y |
| 902 | # CONFIG_HAPPYMEAL is not set | 930 | # CONFIG_HAPPYMEAL is not set |
| @@ -940,16 +968,15 @@ CONFIG_8139TOO_PIO=y | |||
| 940 | # CONFIG_SIS900 is not set | 968 | # CONFIG_SIS900 is not set |
| 941 | # CONFIG_EPIC100 is not set | 969 | # CONFIG_EPIC100 is not set |
| 942 | # CONFIG_SUNDANCE is not set | 970 | # CONFIG_SUNDANCE is not set |
| 971 | # CONFIG_TLAN is not set | ||
| 943 | # CONFIG_VIA_RHINE is not set | 972 | # CONFIG_VIA_RHINE is not set |
| 944 | # CONFIG_SC92031 is not set | 973 | # CONFIG_SC92031 is not set |
| 945 | CONFIG_NETDEV_1000=y | 974 | CONFIG_NETDEV_1000=y |
| 946 | # CONFIG_ACENIC is not set | 975 | # CONFIG_ACENIC is not set |
| 947 | # CONFIG_DL2K is not set | 976 | # CONFIG_DL2K is not set |
| 948 | CONFIG_E1000=y | 977 | CONFIG_E1000=y |
| 949 | # CONFIG_E1000_NAPI is not set | ||
| 950 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 978 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
| 951 | # CONFIG_E1000E is not set | 979 | # CONFIG_E1000E is not set |
| 952 | # CONFIG_E1000E_ENABLED is not set | ||
| 953 | # CONFIG_IP1000 is not set | 980 | # CONFIG_IP1000 is not set |
| 954 | # CONFIG_IGB is not set | 981 | # CONFIG_IGB is not set |
| 955 | # CONFIG_NS83820 is not set | 982 | # CONFIG_NS83820 is not set |
| @@ -965,6 +992,7 @@ CONFIG_TIGON3=y | |||
| 965 | # CONFIG_BNX2 is not set | 992 | # CONFIG_BNX2 is not set |
| 966 | # CONFIG_QLA3XXX is not set | 993 | # CONFIG_QLA3XXX is not set |
| 967 | # CONFIG_ATL1 is not set | 994 | # CONFIG_ATL1 is not set |
| 995 | # CONFIG_ATL1E is not set | ||
| 968 | CONFIG_NETDEV_10000=y | 996 | CONFIG_NETDEV_10000=y |
| 969 | # CONFIG_CHELSIO_T1 is not set | 997 | # CONFIG_CHELSIO_T1 is not set |
| 970 | # CONFIG_CHELSIO_T3 is not set | 998 | # CONFIG_CHELSIO_T3 is not set |
| @@ -1003,13 +1031,14 @@ CONFIG_WLAN_80211=y | |||
| 1003 | # CONFIG_RTL8180 is not set | 1031 | # CONFIG_RTL8180 is not set |
| 1004 | # CONFIG_RTL8187 is not set | 1032 | # CONFIG_RTL8187 is not set |
| 1005 | # CONFIG_ADM8211 is not set | 1033 | # CONFIG_ADM8211 is not set |
| 1034 | # CONFIG_MAC80211_HWSIM is not set | ||
| 1006 | # CONFIG_P54_COMMON is not set | 1035 | # CONFIG_P54_COMMON is not set |
| 1007 | CONFIG_ATH5K=y | 1036 | CONFIG_ATH5K=y |
| 1008 | # CONFIG_ATH5K_DEBUG is not set | 1037 | # CONFIG_ATH5K_DEBUG is not set |
| 1009 | # CONFIG_IWLWIFI is not set | 1038 | # CONFIG_ATH9K is not set |
| 1010 | # CONFIG_IWLCORE is not set | 1039 | # CONFIG_IWLCORE is not set |
| 1011 | # CONFIG_IWLWIFI_LEDS is not set | 1040 | # CONFIG_IWLWIFI_LEDS is not set |
| 1012 | # CONFIG_IWL4965 is not set | 1041 | # CONFIG_IWLAGN is not set |
| 1013 | # CONFIG_IWL3945 is not set | 1042 | # CONFIG_IWL3945 is not set |
| 1014 | # CONFIG_HOSTAP is not set | 1043 | # CONFIG_HOSTAP is not set |
| 1015 | # CONFIG_B43 is not set | 1044 | # CONFIG_B43 is not set |
| @@ -1088,6 +1117,7 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y | |||
| 1088 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | 1117 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set |
| 1089 | # CONFIG_MOUSE_SERIAL is not set | 1118 | # CONFIG_MOUSE_SERIAL is not set |
| 1090 | # CONFIG_MOUSE_APPLETOUCH is not set | 1119 | # CONFIG_MOUSE_APPLETOUCH is not set |
| 1120 | # CONFIG_MOUSE_BCM5974 is not set | ||
| 1091 | # CONFIG_MOUSE_VSXXXAA is not set | 1121 | # CONFIG_MOUSE_VSXXXAA is not set |
| 1092 | CONFIG_INPUT_JOYSTICK=y | 1122 | CONFIG_INPUT_JOYSTICK=y |
| 1093 | # CONFIG_JOYSTICK_ANALOG is not set | 1123 | # CONFIG_JOYSTICK_ANALOG is not set |
| @@ -1122,12 +1152,14 @@ CONFIG_INPUT_TOUCHSCREEN=y | |||
| 1122 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 1152 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
| 1123 | # CONFIG_TOUCHSCREEN_ELO is not set | 1153 | # CONFIG_TOUCHSCREEN_ELO is not set |
| 1124 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | 1154 | # CONFIG_TOUCHSCREEN_MTOUCH is not set |
| 1155 | # CONFIG_TOUCHSCREEN_INEXIO is not set | ||
| 1125 | # CONFIG_TOUCHSCREEN_MK712 is not set | 1156 | # CONFIG_TOUCHSCREEN_MK712 is not set |
| 1126 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | 1157 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set |
| 1127 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | 1158 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set |
| 1128 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | 1159 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set |
| 1129 | # CONFIG_TOUCHSCREEN_UCB1400 is not set | 1160 | # CONFIG_TOUCHSCREEN_UCB1400 is not set |
| 1130 | # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set | 1161 | # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set |
| 1162 | # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set | ||
| 1131 | CONFIG_INPUT_MISC=y | 1163 | CONFIG_INPUT_MISC=y |
| 1132 | # CONFIG_INPUT_PCSPKR is not set | 1164 | # CONFIG_INPUT_PCSPKR is not set |
| 1133 | # CONFIG_INPUT_APANEL is not set | 1165 | # CONFIG_INPUT_APANEL is not set |
| @@ -1155,6 +1187,7 @@ CONFIG_SERIO_LIBPS2=y | |||
| 1155 | # Character devices | 1187 | # Character devices |
| 1156 | # | 1188 | # |
| 1157 | CONFIG_VT=y | 1189 | CONFIG_VT=y |
| 1190 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 1158 | CONFIG_VT_CONSOLE=y | 1191 | CONFIG_VT_CONSOLE=y |
| 1159 | CONFIG_HW_CONSOLE=y | 1192 | CONFIG_HW_CONSOLE=y |
| 1160 | CONFIG_VT_HW_CONSOLE_BINDING=y | 1193 | CONFIG_VT_HW_CONSOLE_BINDING=y |
| @@ -1222,7 +1255,6 @@ CONFIG_NVRAM=y | |||
| 1222 | # CONFIG_PC8736x_GPIO is not set | 1255 | # CONFIG_PC8736x_GPIO is not set |
| 1223 | # CONFIG_RAW_DRIVER is not set | 1256 | # CONFIG_RAW_DRIVER is not set |
| 1224 | CONFIG_HPET=y | 1257 | CONFIG_HPET=y |
| 1225 | # CONFIG_HPET_RTC_IRQ is not set | ||
| 1226 | # CONFIG_HPET_MMAP is not set | 1258 | # CONFIG_HPET_MMAP is not set |
| 1227 | # CONFIG_HANGCHECK_TIMER is not set | 1259 | # CONFIG_HANGCHECK_TIMER is not set |
| 1228 | # CONFIG_TCG_TPM is not set | 1260 | # CONFIG_TCG_TPM is not set |
| @@ -1231,42 +1263,63 @@ CONFIG_DEVPORT=y | |||
| 1231 | CONFIG_I2C=y | 1263 | CONFIG_I2C=y |
| 1232 | CONFIG_I2C_BOARDINFO=y | 1264 | CONFIG_I2C_BOARDINFO=y |
| 1233 | # CONFIG_I2C_CHARDEV is not set | 1265 | # CONFIG_I2C_CHARDEV is not set |
| 1266 | CONFIG_I2C_HELPER_AUTO=y | ||
| 1234 | 1267 | ||
| 1235 | # | 1268 | # |
| 1236 | # I2C Hardware Bus support | 1269 | # I2C Hardware Bus support |
| 1237 | # | 1270 | # |
| 1271 | |||
| 1272 | # | ||
| 1273 | # PC SMBus host controller drivers | ||
| 1274 | # | ||
| 1238 | # CONFIG_I2C_ALI1535 is not set | 1275 | # CONFIG_I2C_ALI1535 is not set |
| 1239 | # CONFIG_I2C_ALI1563 is not set | 1276 | # CONFIG_I2C_ALI1563 is not set |
| 1240 | # CONFIG_I2C_ALI15X3 is not set | 1277 | # CONFIG_I2C_ALI15X3 is not set |
| 1241 | # CONFIG_I2C_AMD756 is not set | 1278 | # CONFIG_I2C_AMD756 is not set |
| 1242 | # CONFIG_I2C_AMD8111 is not set | 1279 | # CONFIG_I2C_AMD8111 is not set |
| 1243 | CONFIG_I2C_I801=y | 1280 | CONFIG_I2C_I801=y |
| 1244 | # CONFIG_I2C_I810 is not set | 1281 | # CONFIG_I2C_ISCH is not set |
| 1245 | # CONFIG_I2C_PIIX4 is not set | 1282 | # CONFIG_I2C_PIIX4 is not set |
| 1246 | # CONFIG_I2C_NFORCE2 is not set | 1283 | # CONFIG_I2C_NFORCE2 is not set |
| 1247 | # CONFIG_I2C_OCORES is not set | ||
| 1248 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 1249 | # CONFIG_I2C_PROSAVAGE is not set | ||
| 1250 | # CONFIG_I2C_SAVAGE4 is not set | ||
| 1251 | # CONFIG_I2C_SIMTEC is not set | ||
| 1252 | # CONFIG_I2C_SIS5595 is not set | 1284 | # CONFIG_I2C_SIS5595 is not set |
| 1253 | # CONFIG_I2C_SIS630 is not set | 1285 | # CONFIG_I2C_SIS630 is not set |
| 1254 | # CONFIG_I2C_SIS96X is not set | 1286 | # CONFIG_I2C_SIS96X is not set |
| 1255 | # CONFIG_I2C_TAOS_EVM is not set | ||
| 1256 | # CONFIG_I2C_STUB is not set | ||
| 1257 | # CONFIG_I2C_TINY_USB is not set | ||
| 1258 | # CONFIG_I2C_VIA is not set | 1287 | # CONFIG_I2C_VIA is not set |
| 1259 | # CONFIG_I2C_VIAPRO is not set | 1288 | # CONFIG_I2C_VIAPRO is not set |
| 1289 | |||
| 1290 | # | ||
| 1291 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
| 1292 | # | ||
| 1293 | # CONFIG_I2C_OCORES is not set | ||
| 1294 | # CONFIG_I2C_SIMTEC is not set | ||
| 1295 | |||
| 1296 | # | ||
| 1297 | # External I2C/SMBus adapter drivers | ||
| 1298 | # | ||
| 1299 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 1300 | # CONFIG_I2C_TAOS_EVM is not set | ||
| 1301 | # CONFIG_I2C_TINY_USB is not set | ||
| 1302 | |||
| 1303 | # | ||
| 1304 | # Graphics adapter I2C/DDC channel drivers | ||
| 1305 | # | ||
| 1260 | # CONFIG_I2C_VOODOO3 is not set | 1306 | # CONFIG_I2C_VOODOO3 is not set |
| 1307 | |||
| 1308 | # | ||
| 1309 | # Other I2C/SMBus bus drivers | ||
| 1310 | # | ||
| 1261 | # CONFIG_I2C_PCA_PLATFORM is not set | 1311 | # CONFIG_I2C_PCA_PLATFORM is not set |
| 1312 | # CONFIG_I2C_STUB is not set | ||
| 1262 | 1313 | ||
| 1263 | # | 1314 | # |
| 1264 | # Miscellaneous I2C Chip support | 1315 | # Miscellaneous I2C Chip support |
| 1265 | # | 1316 | # |
| 1266 | # CONFIG_DS1682 is not set | 1317 | # CONFIG_DS1682 is not set |
| 1318 | # CONFIG_AT24 is not set | ||
| 1267 | # CONFIG_SENSORS_EEPROM is not set | 1319 | # CONFIG_SENSORS_EEPROM is not set |
| 1268 | # CONFIG_SENSORS_PCF8574 is not set | 1320 | # CONFIG_SENSORS_PCF8574 is not set |
| 1269 | # CONFIG_PCF8575 is not set | 1321 | # CONFIG_PCF8575 is not set |
| 1322 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 1270 | # CONFIG_SENSORS_PCF8591 is not set | 1323 | # CONFIG_SENSORS_PCF8591 is not set |
| 1271 | # CONFIG_SENSORS_MAX6875 is not set | 1324 | # CONFIG_SENSORS_MAX6875 is not set |
| 1272 | # CONFIG_SENSORS_TSL2550 is not set | 1325 | # CONFIG_SENSORS_TSL2550 is not set |
| @@ -1275,6 +1328,8 @@ CONFIG_I2C_I801=y | |||
| 1275 | # CONFIG_I2C_DEBUG_BUS is not set | 1328 | # CONFIG_I2C_DEBUG_BUS is not set |
| 1276 | # CONFIG_I2C_DEBUG_CHIP is not set | 1329 | # CONFIG_I2C_DEBUG_CHIP is not set |
| 1277 | # CONFIG_SPI is not set | 1330 | # CONFIG_SPI is not set |
| 1331 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 1332 | # CONFIG_GPIOLIB is not set | ||
| 1278 | # CONFIG_W1 is not set | 1333 | # CONFIG_W1 is not set |
| 1279 | CONFIG_POWER_SUPPLY=y | 1334 | CONFIG_POWER_SUPPLY=y |
| 1280 | # CONFIG_POWER_SUPPLY_DEBUG is not set | 1335 | # CONFIG_POWER_SUPPLY_DEBUG is not set |
| @@ -1335,8 +1390,10 @@ CONFIG_SSB_POSSIBLE=y | |||
| 1335 | # | 1390 | # |
| 1336 | # Multifunction device drivers | 1391 | # Multifunction device drivers |
| 1337 | # | 1392 | # |
| 1393 | # CONFIG_MFD_CORE is not set | ||
| 1338 | # CONFIG_MFD_SM501 is not set | 1394 | # CONFIG_MFD_SM501 is not set |
| 1339 | # CONFIG_HTC_PASIC3 is not set | 1395 | # CONFIG_HTC_PASIC3 is not set |
| 1396 | # CONFIG_MFD_TMIO is not set | ||
| 1340 | 1397 | ||
| 1341 | # | 1398 | # |
| 1342 | # Multimedia devices | 1399 | # Multimedia devices |
| @@ -1347,6 +1404,7 @@ CONFIG_SSB_POSSIBLE=y | |||
| 1347 | # | 1404 | # |
| 1348 | # CONFIG_VIDEO_DEV is not set | 1405 | # CONFIG_VIDEO_DEV is not set |
| 1349 | # CONFIG_DVB_CORE is not set | 1406 | # CONFIG_DVB_CORE is not set |
| 1407 | # CONFIG_VIDEO_MEDIA is not set | ||
| 1350 | 1408 | ||
| 1351 | # | 1409 | # |
| 1352 | # Multimedia drivers | 1410 | # Multimedia drivers |
| @@ -1387,7 +1445,6 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
| 1387 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 1445 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
| 1388 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 1446 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
| 1389 | # CONFIG_FB_SYS_FOPS is not set | 1447 | # CONFIG_FB_SYS_FOPS is not set |
| 1390 | CONFIG_FB_DEFERRED_IO=y | ||
| 1391 | # CONFIG_FB_SVGALIB is not set | 1448 | # CONFIG_FB_SVGALIB is not set |
| 1392 | # CONFIG_FB_MACMODES is not set | 1449 | # CONFIG_FB_MACMODES is not set |
| 1393 | # CONFIG_FB_BACKLIGHT is not set | 1450 | # CONFIG_FB_BACKLIGHT is not set |
| @@ -1430,6 +1487,7 @@ CONFIG_FB_EFI=y | |||
| 1430 | # CONFIG_FB_TRIDENT is not set | 1487 | # CONFIG_FB_TRIDENT is not set |
| 1431 | # CONFIG_FB_ARK is not set | 1488 | # CONFIG_FB_ARK is not set |
| 1432 | # CONFIG_FB_PM3 is not set | 1489 | # CONFIG_FB_PM3 is not set |
| 1490 | # CONFIG_FB_CARMINE is not set | ||
| 1433 | # CONFIG_FB_GEODE is not set | 1491 | # CONFIG_FB_GEODE is not set |
| 1434 | # CONFIG_FB_VIRTUAL is not set | 1492 | # CONFIG_FB_VIRTUAL is not set |
| 1435 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | 1493 | CONFIG_BACKLIGHT_LCD_SUPPORT=y |
| @@ -1437,6 +1495,7 @@ CONFIG_BACKLIGHT_LCD_SUPPORT=y | |||
| 1437 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | 1495 | CONFIG_BACKLIGHT_CLASS_DEVICE=y |
| 1438 | # CONFIG_BACKLIGHT_CORGI is not set | 1496 | # CONFIG_BACKLIGHT_CORGI is not set |
| 1439 | # CONFIG_BACKLIGHT_PROGEAR is not set | 1497 | # CONFIG_BACKLIGHT_PROGEAR is not set |
| 1498 | # CONFIG_BACKLIGHT_MBP_NVIDIA is not set | ||
| 1440 | 1499 | ||
| 1441 | # | 1500 | # |
| 1442 | # Display device support | 1501 | # Display device support |
| @@ -1456,15 +1515,7 @@ CONFIG_LOGO=y | |||
| 1456 | # CONFIG_LOGO_LINUX_MONO is not set | 1515 | # CONFIG_LOGO_LINUX_MONO is not set |
| 1457 | # CONFIG_LOGO_LINUX_VGA16 is not set | 1516 | # CONFIG_LOGO_LINUX_VGA16 is not set |
| 1458 | CONFIG_LOGO_LINUX_CLUT224=y | 1517 | CONFIG_LOGO_LINUX_CLUT224=y |
| 1459 | |||
| 1460 | # | ||
| 1461 | # Sound | ||
| 1462 | # | ||
| 1463 | CONFIG_SOUND=y | 1518 | CONFIG_SOUND=y |
| 1464 | |||
| 1465 | # | ||
| 1466 | # Advanced Linux Sound Architecture | ||
| 1467 | # | ||
| 1468 | CONFIG_SND=y | 1519 | CONFIG_SND=y |
| 1469 | CONFIG_SND_TIMER=y | 1520 | CONFIG_SND_TIMER=y |
| 1470 | CONFIG_SND_PCM=y | 1521 | CONFIG_SND_PCM=y |
| @@ -1482,20 +1533,14 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
| 1482 | # CONFIG_SND_VERBOSE_PRINTK is not set | 1533 | # CONFIG_SND_VERBOSE_PRINTK is not set |
| 1483 | # CONFIG_SND_DEBUG is not set | 1534 | # CONFIG_SND_DEBUG is not set |
| 1484 | CONFIG_SND_VMASTER=y | 1535 | CONFIG_SND_VMASTER=y |
| 1485 | 1536 | CONFIG_SND_DRIVERS=y | |
| 1486 | # | ||
| 1487 | # Generic devices | ||
| 1488 | # | ||
| 1489 | # CONFIG_SND_PCSP is not set | 1537 | # CONFIG_SND_PCSP is not set |
| 1490 | # CONFIG_SND_DUMMY is not set | 1538 | # CONFIG_SND_DUMMY is not set |
| 1491 | # CONFIG_SND_VIRMIDI is not set | 1539 | # CONFIG_SND_VIRMIDI is not set |
| 1492 | # CONFIG_SND_MTPAV is not set | 1540 | # CONFIG_SND_MTPAV is not set |
| 1493 | # CONFIG_SND_SERIAL_U16550 is not set | 1541 | # CONFIG_SND_SERIAL_U16550 is not set |
| 1494 | # CONFIG_SND_MPU401 is not set | 1542 | # CONFIG_SND_MPU401 is not set |
| 1495 | 1543 | CONFIG_SND_PCI=y | |
| 1496 | # | ||
| 1497 | # PCI devices | ||
| 1498 | # | ||
| 1499 | # CONFIG_SND_AD1889 is not set | 1544 | # CONFIG_SND_AD1889 is not set |
| 1500 | # CONFIG_SND_ALS300 is not set | 1545 | # CONFIG_SND_ALS300 is not set |
| 1501 | # CONFIG_SND_ALS4000 is not set | 1546 | # CONFIG_SND_ALS4000 is not set |
| @@ -1568,36 +1613,14 @@ CONFIG_SND_HDA_GENERIC=y | |||
| 1568 | # CONFIG_SND_VIRTUOSO is not set | 1613 | # CONFIG_SND_VIRTUOSO is not set |
| 1569 | # CONFIG_SND_VX222 is not set | 1614 | # CONFIG_SND_VX222 is not set |
| 1570 | # CONFIG_SND_YMFPCI is not set | 1615 | # CONFIG_SND_YMFPCI is not set |
| 1571 | 1616 | CONFIG_SND_USB=y | |
| 1572 | # | ||
| 1573 | # USB devices | ||
| 1574 | # | ||
| 1575 | # CONFIG_SND_USB_AUDIO is not set | 1617 | # CONFIG_SND_USB_AUDIO is not set |
| 1576 | # CONFIG_SND_USB_USX2Y is not set | 1618 | # CONFIG_SND_USB_USX2Y is not set |
| 1577 | # CONFIG_SND_USB_CAIAQ is not set | 1619 | # CONFIG_SND_USB_CAIAQ is not set |
| 1578 | 1620 | CONFIG_SND_PCMCIA=y | |
| 1579 | # | ||
| 1580 | # PCMCIA devices | ||
| 1581 | # | ||
| 1582 | # CONFIG_SND_VXPOCKET is not set | 1621 | # CONFIG_SND_VXPOCKET is not set |
| 1583 | # CONFIG_SND_PDAUDIOCF is not set | 1622 | # CONFIG_SND_PDAUDIOCF is not set |
| 1584 | |||
| 1585 | # | ||
| 1586 | # System on Chip audio support | ||
| 1587 | # | ||
| 1588 | # CONFIG_SND_SOC is not set | 1623 | # CONFIG_SND_SOC is not set |
| 1589 | |||
| 1590 | # | ||
| 1591 | # ALSA SoC audio for Freescale SOCs | ||
| 1592 | # | ||
| 1593 | |||
| 1594 | # | ||
| 1595 | # SoC Audio for the Texas Instruments OMAP | ||
| 1596 | # | ||
| 1597 | |||
| 1598 | # | ||
| 1599 | # Open Sound System | ||
| 1600 | # | ||
| 1601 | # CONFIG_SOUND_PRIME is not set | 1624 | # CONFIG_SOUND_PRIME is not set |
| 1602 | CONFIG_HID_SUPPORT=y | 1625 | CONFIG_HID_SUPPORT=y |
| 1603 | CONFIG_HID=y | 1626 | CONFIG_HID=y |
| @@ -1633,6 +1656,7 @@ CONFIG_USB_DEVICEFS=y | |||
| 1633 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1656 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 1634 | CONFIG_USB_SUSPEND=y | 1657 | CONFIG_USB_SUSPEND=y |
| 1635 | # CONFIG_USB_OTG is not set | 1658 | # CONFIG_USB_OTG is not set |
| 1659 | CONFIG_USB_MON=y | ||
| 1636 | 1660 | ||
| 1637 | # | 1661 | # |
| 1638 | # USB Host Controller Drivers | 1662 | # USB Host Controller Drivers |
| @@ -1656,6 +1680,7 @@ CONFIG_USB_UHCI_HCD=y | |||
| 1656 | # | 1680 | # |
| 1657 | # CONFIG_USB_ACM is not set | 1681 | # CONFIG_USB_ACM is not set |
| 1658 | CONFIG_USB_PRINTER=y | 1682 | CONFIG_USB_PRINTER=y |
| 1683 | # CONFIG_USB_WDM is not set | ||
| 1659 | 1684 | ||
| 1660 | # | 1685 | # |
| 1661 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1686 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
| @@ -1677,6 +1702,7 @@ CONFIG_USB_STORAGE=y | |||
| 1677 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1702 | # CONFIG_USB_STORAGE_ALAUDA is not set |
| 1678 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1703 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
| 1679 | # CONFIG_USB_STORAGE_KARMA is not set | 1704 | # CONFIG_USB_STORAGE_KARMA is not set |
| 1705 | # CONFIG_USB_STORAGE_SIERRA is not set | ||
| 1680 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | 1706 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set |
| 1681 | CONFIG_USB_LIBUSUAL=y | 1707 | CONFIG_USB_LIBUSUAL=y |
| 1682 | 1708 | ||
| @@ -1685,7 +1711,6 @@ CONFIG_USB_LIBUSUAL=y | |||
| 1685 | # | 1711 | # |
| 1686 | # CONFIG_USB_MDC800 is not set | 1712 | # CONFIG_USB_MDC800 is not set |
| 1687 | # CONFIG_USB_MICROTEK is not set | 1713 | # CONFIG_USB_MICROTEK is not set |
| 1688 | CONFIG_USB_MON=y | ||
| 1689 | 1714 | ||
| 1690 | # | 1715 | # |
| 1691 | # USB port drivers | 1716 | # USB port drivers |
| @@ -1698,7 +1723,6 @@ CONFIG_USB_MON=y | |||
| 1698 | # CONFIG_USB_EMI62 is not set | 1723 | # CONFIG_USB_EMI62 is not set |
| 1699 | # CONFIG_USB_EMI26 is not set | 1724 | # CONFIG_USB_EMI26 is not set |
| 1700 | # CONFIG_USB_ADUTUX is not set | 1725 | # CONFIG_USB_ADUTUX is not set |
| 1701 | # CONFIG_USB_AUERSWALD is not set | ||
| 1702 | # CONFIG_USB_RIO500 is not set | 1726 | # CONFIG_USB_RIO500 is not set |
| 1703 | # CONFIG_USB_LEGOTOWER is not set | 1727 | # CONFIG_USB_LEGOTOWER is not set |
| 1704 | # CONFIG_USB_LCD is not set | 1728 | # CONFIG_USB_LCD is not set |
| @@ -1715,6 +1739,7 @@ CONFIG_USB_MON=y | |||
| 1715 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1739 | # CONFIG_USB_TRANCEVIBRATOR is not set |
| 1716 | # CONFIG_USB_IOWARRIOR is not set | 1740 | # CONFIG_USB_IOWARRIOR is not set |
| 1717 | # CONFIG_USB_TEST is not set | 1741 | # CONFIG_USB_TEST is not set |
| 1742 | # CONFIG_USB_ISIGHTFW is not set | ||
| 1718 | # CONFIG_USB_GADGET is not set | 1743 | # CONFIG_USB_GADGET is not set |
| 1719 | # CONFIG_MMC is not set | 1744 | # CONFIG_MMC is not set |
| 1720 | # CONFIG_MEMSTICK is not set | 1745 | # CONFIG_MEMSTICK is not set |
| @@ -1724,7 +1749,9 @@ CONFIG_LEDS_CLASS=y | |||
| 1724 | # | 1749 | # |
| 1725 | # LED drivers | 1750 | # LED drivers |
| 1726 | # | 1751 | # |
| 1752 | # CONFIG_LEDS_PCA9532 is not set | ||
| 1727 | # CONFIG_LEDS_CLEVO_MAIL is not set | 1753 | # CONFIG_LEDS_CLEVO_MAIL is not set |
| 1754 | # CONFIG_LEDS_PCA955X is not set | ||
| 1728 | 1755 | ||
| 1729 | # | 1756 | # |
| 1730 | # LED Triggers | 1757 | # LED Triggers |
| @@ -1770,6 +1797,7 @@ CONFIG_RTC_INTF_DEV=y | |||
| 1770 | # CONFIG_RTC_DRV_PCF8583 is not set | 1797 | # CONFIG_RTC_DRV_PCF8583 is not set |
| 1771 | # CONFIG_RTC_DRV_M41T80 is not set | 1798 | # CONFIG_RTC_DRV_M41T80 is not set |
| 1772 | # CONFIG_RTC_DRV_S35390A is not set | 1799 | # CONFIG_RTC_DRV_S35390A is not set |
| 1800 | # CONFIG_RTC_DRV_FM3130 is not set | ||
| 1773 | 1801 | ||
| 1774 | # | 1802 | # |
| 1775 | # SPI RTC drivers | 1803 | # SPI RTC drivers |
| @@ -1802,11 +1830,13 @@ CONFIG_DMADEVICES=y | |||
| 1802 | # Firmware Drivers | 1830 | # Firmware Drivers |
| 1803 | # | 1831 | # |
| 1804 | # CONFIG_EDD is not set | 1832 | # CONFIG_EDD is not set |
| 1833 | CONFIG_FIRMWARE_MEMMAP=y | ||
| 1805 | CONFIG_EFI_VARS=y | 1834 | CONFIG_EFI_VARS=y |
| 1806 | # CONFIG_DELL_RBU is not set | 1835 | # CONFIG_DELL_RBU is not set |
| 1807 | # CONFIG_DCDBAS is not set | 1836 | # CONFIG_DCDBAS is not set |
| 1808 | CONFIG_DMIID=y | 1837 | CONFIG_DMIID=y |
| 1809 | # CONFIG_ISCSI_IBFT_FIND is not set | 1838 | CONFIG_ISCSI_IBFT_FIND=y |
| 1839 | CONFIG_ISCSI_IBFT=y | ||
| 1810 | 1840 | ||
| 1811 | # | 1841 | # |
| 1812 | # File systems | 1842 | # File systems |
| @@ -1886,14 +1916,27 @@ CONFIG_HUGETLB_PAGE=y | |||
| 1886 | # CONFIG_CRAMFS is not set | 1916 | # CONFIG_CRAMFS is not set |
| 1887 | # CONFIG_VXFS_FS is not set | 1917 | # CONFIG_VXFS_FS is not set |
| 1888 | # CONFIG_MINIX_FS is not set | 1918 | # CONFIG_MINIX_FS is not set |
| 1919 | # CONFIG_OMFS_FS is not set | ||
| 1889 | # CONFIG_HPFS_FS is not set | 1920 | # CONFIG_HPFS_FS is not set |
| 1890 | # CONFIG_QNX4FS_FS is not set | 1921 | # CONFIG_QNX4FS_FS is not set |
| 1891 | # CONFIG_ROMFS_FS is not set | 1922 | # CONFIG_ROMFS_FS is not set |
| 1892 | # CONFIG_SYSV_FS is not set | 1923 | # CONFIG_SYSV_FS is not set |
| 1893 | # CONFIG_UFS_FS is not set | 1924 | # CONFIG_UFS_FS is not set |
| 1894 | CONFIG_NETWORK_FILESYSTEMS=y | 1925 | CONFIG_NETWORK_FILESYSTEMS=y |
| 1895 | # CONFIG_NFS_FS is not set | 1926 | CONFIG_NFS_FS=y |
| 1927 | CONFIG_NFS_V3=y | ||
| 1928 | CONFIG_NFS_V3_ACL=y | ||
| 1929 | CONFIG_NFS_V4=y | ||
| 1930 | CONFIG_ROOT_NFS=y | ||
| 1896 | # CONFIG_NFSD is not set | 1931 | # CONFIG_NFSD is not set |
| 1932 | CONFIG_LOCKD=y | ||
| 1933 | CONFIG_LOCKD_V4=y | ||
| 1934 | CONFIG_NFS_ACL_SUPPORT=y | ||
| 1935 | CONFIG_NFS_COMMON=y | ||
| 1936 | CONFIG_SUNRPC=y | ||
| 1937 | CONFIG_SUNRPC_GSS=y | ||
| 1938 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 1939 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1897 | # CONFIG_SMB_FS is not set | 1940 | # CONFIG_SMB_FS is not set |
| 1898 | # CONFIG_CIFS is not set | 1941 | # CONFIG_CIFS is not set |
| 1899 | # CONFIG_NCP_FS is not set | 1942 | # CONFIG_NCP_FS is not set |
| @@ -1967,9 +2010,9 @@ CONFIG_NLS_UTF8=y | |||
| 1967 | # Kernel hacking | 2010 | # Kernel hacking |
| 1968 | # | 2011 | # |
| 1969 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 2012 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
| 1970 | # CONFIG_PRINTK_TIME is not set | 2013 | CONFIG_PRINTK_TIME=y |
| 1971 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | 2014 | CONFIG_ENABLE_WARN_DEPRECATED=y |
| 1972 | # CONFIG_ENABLE_MUST_CHECK is not set | 2015 | CONFIG_ENABLE_MUST_CHECK=y |
| 1973 | CONFIG_FRAME_WARN=2048 | 2016 | CONFIG_FRAME_WARN=2048 |
| 1974 | CONFIG_MAGIC_SYSRQ=y | 2017 | CONFIG_MAGIC_SYSRQ=y |
| 1975 | # CONFIG_UNUSED_SYMBOLS is not set | 2018 | # CONFIG_UNUSED_SYMBOLS is not set |
| @@ -1998,6 +2041,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
| 1998 | # CONFIG_DEBUG_INFO is not set | 2041 | # CONFIG_DEBUG_INFO is not set |
| 1999 | # CONFIG_DEBUG_VM is not set | 2042 | # CONFIG_DEBUG_VM is not set |
| 2000 | # CONFIG_DEBUG_WRITECOUNT is not set | 2043 | # CONFIG_DEBUG_WRITECOUNT is not set |
| 2044 | CONFIG_DEBUG_MEMORY_INIT=y | ||
| 2001 | # CONFIG_DEBUG_LIST is not set | 2045 | # CONFIG_DEBUG_LIST is not set |
| 2002 | # CONFIG_DEBUG_SG is not set | 2046 | # CONFIG_DEBUG_SG is not set |
| 2003 | CONFIG_FRAME_POINTER=y | 2047 | CONFIG_FRAME_POINTER=y |
| @@ -2008,11 +2052,20 @@ CONFIG_FRAME_POINTER=y | |||
| 2008 | # CONFIG_LKDTM is not set | 2052 | # CONFIG_LKDTM is not set |
| 2009 | # CONFIG_FAULT_INJECTION is not set | 2053 | # CONFIG_FAULT_INJECTION is not set |
| 2010 | # CONFIG_LATENCYTOP is not set | 2054 | # CONFIG_LATENCYTOP is not set |
| 2055 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 2056 | CONFIG_HAVE_FTRACE=y | ||
| 2057 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 2058 | # CONFIG_FTRACE is not set | ||
| 2059 | # CONFIG_IRQSOFF_TRACER is not set | ||
| 2060 | # CONFIG_SYSPROF_TRACER is not set | ||
| 2061 | # CONFIG_SCHED_TRACER is not set | ||
| 2062 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
| 2011 | CONFIG_PROVIDE_OHCI1394_DMA_INIT=y | 2063 | CONFIG_PROVIDE_OHCI1394_DMA_INIT=y |
| 2012 | # CONFIG_SAMPLES is not set | 2064 | # CONFIG_SAMPLES is not set |
| 2013 | # CONFIG_KGDB is not set | ||
| 2014 | CONFIG_HAVE_ARCH_KGDB=y | 2065 | CONFIG_HAVE_ARCH_KGDB=y |
| 2066 | # CONFIG_KGDB is not set | ||
| 2015 | # CONFIG_STRICT_DEVMEM is not set | 2067 | # CONFIG_STRICT_DEVMEM is not set |
| 2068 | CONFIG_X86_VERBOSE_BOOTUP=y | ||
| 2016 | CONFIG_EARLY_PRINTK=y | 2069 | CONFIG_EARLY_PRINTK=y |
| 2017 | CONFIG_DEBUG_STACKOVERFLOW=y | 2070 | CONFIG_DEBUG_STACKOVERFLOW=y |
| 2018 | CONFIG_DEBUG_STACK_USAGE=y | 2071 | CONFIG_DEBUG_STACK_USAGE=y |
| @@ -2023,8 +2076,8 @@ CONFIG_DEBUG_RODATA=y | |||
| 2023 | # CONFIG_DIRECT_GBPAGES is not set | 2076 | # CONFIG_DIRECT_GBPAGES is not set |
| 2024 | # CONFIG_DEBUG_RODATA_TEST is not set | 2077 | # CONFIG_DEBUG_RODATA_TEST is not set |
| 2025 | CONFIG_DEBUG_NX_TEST=m | 2078 | CONFIG_DEBUG_NX_TEST=m |
| 2026 | CONFIG_X86_MPPARSE=y | ||
| 2027 | # CONFIG_IOMMU_DEBUG is not set | 2079 | # CONFIG_IOMMU_DEBUG is not set |
| 2080 | # CONFIG_MMIOTRACE is not set | ||
| 2028 | CONFIG_IO_DELAY_TYPE_0X80=0 | 2081 | CONFIG_IO_DELAY_TYPE_0X80=0 |
| 2029 | CONFIG_IO_DELAY_TYPE_0XED=1 | 2082 | CONFIG_IO_DELAY_TYPE_0XED=1 |
| 2030 | CONFIG_IO_DELAY_TYPE_UDELAY=2 | 2083 | CONFIG_IO_DELAY_TYPE_UDELAY=2 |
| @@ -2036,6 +2089,7 @@ CONFIG_IO_DELAY_0X80=y | |||
| 2036 | CONFIG_DEFAULT_IO_DELAY_TYPE=0 | 2089 | CONFIG_DEFAULT_IO_DELAY_TYPE=0 |
| 2037 | CONFIG_DEBUG_BOOT_PARAMS=y | 2090 | CONFIG_DEBUG_BOOT_PARAMS=y |
| 2038 | # CONFIG_CPA_DEBUG is not set | 2091 | # CONFIG_CPA_DEBUG is not set |
| 2092 | # CONFIG_OPTIMIZE_INLINING is not set | ||
| 2039 | 2093 | ||
| 2040 | # | 2094 | # |
| 2041 | # Security options | 2095 | # Security options |
| @@ -2045,7 +2099,6 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y | |||
| 2045 | CONFIG_SECURITY=y | 2099 | CONFIG_SECURITY=y |
| 2046 | CONFIG_SECURITY_NETWORK=y | 2100 | CONFIG_SECURITY_NETWORK=y |
| 2047 | # CONFIG_SECURITY_NETWORK_XFRM is not set | 2101 | # CONFIG_SECURITY_NETWORK_XFRM is not set |
| 2048 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 2049 | CONFIG_SECURITY_FILE_CAPABILITIES=y | 2102 | CONFIG_SECURITY_FILE_CAPABILITIES=y |
| 2050 | # CONFIG_SECURITY_ROOTPLUG is not set | 2103 | # CONFIG_SECURITY_ROOTPLUG is not set |
| 2051 | CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536 | 2104 | CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536 |
| @@ -2106,6 +2159,10 @@ CONFIG_CRYPTO_HMAC=y | |||
| 2106 | # CONFIG_CRYPTO_MD4 is not set | 2159 | # CONFIG_CRYPTO_MD4 is not set |
| 2107 | CONFIG_CRYPTO_MD5=y | 2160 | CONFIG_CRYPTO_MD5=y |
| 2108 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 2161 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
| 2162 | # CONFIG_CRYPTO_RMD128 is not set | ||
| 2163 | # CONFIG_CRYPTO_RMD160 is not set | ||
| 2164 | # CONFIG_CRYPTO_RMD256 is not set | ||
| 2165 | # CONFIG_CRYPTO_RMD320 is not set | ||
| 2109 | CONFIG_CRYPTO_SHA1=y | 2166 | CONFIG_CRYPTO_SHA1=y |
| 2110 | # CONFIG_CRYPTO_SHA256 is not set | 2167 | # CONFIG_CRYPTO_SHA256 is not set |
| 2111 | # CONFIG_CRYPTO_SHA512 is not set | 2168 | # CONFIG_CRYPTO_SHA512 is not set |
| @@ -2155,6 +2212,7 @@ CONFIG_GENERIC_FIND_FIRST_BIT=y | |||
| 2155 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 2212 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
| 2156 | # CONFIG_CRC_CCITT is not set | 2213 | # CONFIG_CRC_CCITT is not set |
| 2157 | # CONFIG_CRC16 is not set | 2214 | # CONFIG_CRC16 is not set |
| 2215 | CONFIG_CRC_T10DIF=y | ||
| 2158 | # CONFIG_CRC_ITU_T is not set | 2216 | # CONFIG_CRC_ITU_T is not set |
| 2159 | CONFIG_CRC32=y | 2217 | CONFIG_CRC32=y |
| 2160 | # CONFIG_CRC7 is not set | 2218 | # CONFIG_CRC7 is not set |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index fa88a1d71290..bfd10fd211cd 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
| @@ -97,6 +97,8 @@ static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE; | |||
| 97 | #warning ACPI uses CMPXCHG, i486 and later hardware | 97 | #warning ACPI uses CMPXCHG, i486 and later hardware |
| 98 | #endif | 98 | #endif |
| 99 | 99 | ||
| 100 | static int acpi_mcfg_64bit_base_addr __initdata = FALSE; | ||
| 101 | |||
| 100 | /* -------------------------------------------------------------------------- | 102 | /* -------------------------------------------------------------------------- |
| 101 | Boot-time Configuration | 103 | Boot-time Configuration |
| 102 | -------------------------------------------------------------------------- */ | 104 | -------------------------------------------------------------------------- */ |
| @@ -158,6 +160,14 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size) | |||
| 158 | struct acpi_mcfg_allocation *pci_mmcfg_config; | 160 | struct acpi_mcfg_allocation *pci_mmcfg_config; |
| 159 | int pci_mmcfg_config_num; | 161 | int pci_mmcfg_config_num; |
| 160 | 162 | ||
| 163 | static int __init acpi_mcfg_oem_check(struct acpi_table_mcfg *mcfg) | ||
| 164 | { | ||
| 165 | if (!strcmp(mcfg->header.oem_id, "SGI")) | ||
| 166 | acpi_mcfg_64bit_base_addr = TRUE; | ||
| 167 | |||
| 168 | return 0; | ||
| 169 | } | ||
| 170 | |||
| 161 | int __init acpi_parse_mcfg(struct acpi_table_header *header) | 171 | int __init acpi_parse_mcfg(struct acpi_table_header *header) |
| 162 | { | 172 | { |
| 163 | struct acpi_table_mcfg *mcfg; | 173 | struct acpi_table_mcfg *mcfg; |
| @@ -190,8 +200,12 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header) | |||
| 190 | } | 200 | } |
| 191 | 201 | ||
| 192 | memcpy(pci_mmcfg_config, &mcfg[1], config_size); | 202 | memcpy(pci_mmcfg_config, &mcfg[1], config_size); |
| 203 | |||
| 204 | acpi_mcfg_oem_check(mcfg); | ||
| 205 | |||
| 193 | for (i = 0; i < pci_mmcfg_config_num; ++i) { | 206 | for (i = 0; i < pci_mmcfg_config_num; ++i) { |
| 194 | if (pci_mmcfg_config[i].address > 0xFFFFFFFF) { | 207 | if ((pci_mmcfg_config[i].address > 0xFFFFFFFF) && |
| 208 | !acpi_mcfg_64bit_base_addr) { | ||
| 195 | printk(KERN_ERR PREFIX | 209 | printk(KERN_ERR PREFIX |
| 196 | "MMCONFIG not in low 4GB of memory\n"); | 210 | "MMCONFIG not in low 4GB of memory\n"); |
| 197 | kfree(pci_mmcfg_config); | 211 | kfree(pci_mmcfg_config); |
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index fa2161d5003b..426e5d91b63a 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c | |||
| @@ -20,7 +20,7 @@ unsigned long acpi_realmode_flags; | |||
| 20 | /* address in low memory of the wakeup routine. */ | 20 | /* address in low memory of the wakeup routine. */ |
| 21 | static unsigned long acpi_realmode; | 21 | static unsigned long acpi_realmode; |
| 22 | 22 | ||
| 23 | #ifdef CONFIG_64BIT | 23 | #if defined(CONFIG_SMP) && defined(CONFIG_64BIT) |
| 24 | static char temp_stack[10240]; | 24 | static char temp_stack[10240]; |
| 25 | #endif | 25 | #endif |
| 26 | 26 | ||
| @@ -86,7 +86,7 @@ int acpi_save_state_mem(void) | |||
| 86 | #endif /* !CONFIG_64BIT */ | 86 | #endif /* !CONFIG_64BIT */ |
| 87 | 87 | ||
| 88 | header->pmode_cr0 = read_cr0(); | 88 | header->pmode_cr0 = read_cr0(); |
| 89 | header->pmode_cr4 = read_cr4(); | 89 | header->pmode_cr4 = read_cr4_safe(); |
| 90 | header->realmode_flags = acpi_realmode_flags; | 90 | header->realmode_flags = acpi_realmode_flags; |
| 91 | header->real_magic = 0x12345678; | 91 | header->real_magic = 0x12345678; |
| 92 | 92 | ||
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index 22d7d050905d..69b4d060b21c 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c | |||
| @@ -65,7 +65,7 @@ static int __iommu_queue_command(struct amd_iommu *iommu, struct iommu_cmd *cmd) | |||
| 65 | u8 *target; | 65 | u8 *target; |
| 66 | 66 | ||
| 67 | tail = readl(iommu->mmio_base + MMIO_CMD_TAIL_OFFSET); | 67 | tail = readl(iommu->mmio_base + MMIO_CMD_TAIL_OFFSET); |
| 68 | target = (iommu->cmd_buf + tail); | 68 | target = iommu->cmd_buf + tail; |
| 69 | memcpy_toio(target, cmd, sizeof(*cmd)); | 69 | memcpy_toio(target, cmd, sizeof(*cmd)); |
| 70 | tail = (tail + sizeof(*cmd)) % iommu->cmd_buf_size; | 70 | tail = (tail + sizeof(*cmd)) % iommu->cmd_buf_size; |
| 71 | head = readl(iommu->mmio_base + MMIO_CMD_HEAD_OFFSET); | 71 | head = readl(iommu->mmio_base + MMIO_CMD_HEAD_OFFSET); |
| @@ -101,16 +101,13 @@ static int iommu_queue_command(struct amd_iommu *iommu, struct iommu_cmd *cmd) | |||
| 101 | */ | 101 | */ |
| 102 | static int iommu_completion_wait(struct amd_iommu *iommu) | 102 | static int iommu_completion_wait(struct amd_iommu *iommu) |
| 103 | { | 103 | { |
| 104 | int ret; | 104 | int ret, ready = 0; |
| 105 | unsigned status = 0; | ||
| 105 | struct iommu_cmd cmd; | 106 | struct iommu_cmd cmd; |
| 106 | volatile u64 ready = 0; | ||
| 107 | unsigned long ready_phys = virt_to_phys(&ready); | ||
| 108 | unsigned long i = 0; | 107 | unsigned long i = 0; |
| 109 | 108 | ||
| 110 | memset(&cmd, 0, sizeof(cmd)); | 109 | memset(&cmd, 0, sizeof(cmd)); |
| 111 | cmd.data[0] = LOW_U32(ready_phys) | CMD_COMPL_WAIT_STORE_MASK; | 110 | cmd.data[0] = CMD_COMPL_WAIT_INT_MASK; |
| 112 | cmd.data[1] = upper_32_bits(ready_phys); | ||
| 113 | cmd.data[2] = 1; /* value written to 'ready' */ | ||
| 114 | CMD_SET_TYPE(&cmd, CMD_COMPL_WAIT); | 111 | CMD_SET_TYPE(&cmd, CMD_COMPL_WAIT); |
| 115 | 112 | ||
| 116 | iommu->need_sync = 0; | 113 | iommu->need_sync = 0; |
| @@ -122,9 +119,15 @@ static int iommu_completion_wait(struct amd_iommu *iommu) | |||
| 122 | 119 | ||
| 123 | while (!ready && (i < EXIT_LOOP_COUNT)) { | 120 | while (!ready && (i < EXIT_LOOP_COUNT)) { |
| 124 | ++i; | 121 | ++i; |
| 125 | cpu_relax(); | 122 | /* wait for the bit to become one */ |
| 123 | status = readl(iommu->mmio_base + MMIO_STATUS_OFFSET); | ||
| 124 | ready = status & MMIO_STATUS_COM_WAIT_INT_MASK; | ||
| 126 | } | 125 | } |
| 127 | 126 | ||
| 127 | /* set bit back to zero */ | ||
| 128 | status &= ~MMIO_STATUS_COM_WAIT_INT_MASK; | ||
| 129 | writel(status, iommu->mmio_base + MMIO_STATUS_OFFSET); | ||
| 130 | |||
| 128 | if (unlikely((i == EXIT_LOOP_COUNT) && printk_ratelimit())) | 131 | if (unlikely((i == EXIT_LOOP_COUNT) && printk_ratelimit())) |
| 129 | printk(KERN_WARNING "AMD IOMMU: Completion wait loop failed\n"); | 132 | printk(KERN_WARNING "AMD IOMMU: Completion wait loop failed\n"); |
| 130 | 133 | ||
| @@ -161,7 +164,7 @@ static int iommu_queue_inv_iommu_pages(struct amd_iommu *iommu, | |||
| 161 | address &= PAGE_MASK; | 164 | address &= PAGE_MASK; |
| 162 | CMD_SET_TYPE(&cmd, CMD_INV_IOMMU_PAGES); | 165 | CMD_SET_TYPE(&cmd, CMD_INV_IOMMU_PAGES); |
| 163 | cmd.data[1] |= domid; | 166 | cmd.data[1] |= domid; |
| 164 | cmd.data[2] = LOW_U32(address); | 167 | cmd.data[2] = lower_32_bits(address); |
| 165 | cmd.data[3] = upper_32_bits(address); | 168 | cmd.data[3] = upper_32_bits(address); |
| 166 | if (s) /* size bit - we flush more than one 4kb page */ | 169 | if (s) /* size bit - we flush more than one 4kb page */ |
| 167 | cmd.data[2] |= CMD_INV_IOMMU_PAGES_SIZE_MASK; | 170 | cmd.data[2] |= CMD_INV_IOMMU_PAGES_SIZE_MASK; |
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c index d9a9da597e79..a69cc0f52042 100644 --- a/arch/x86/kernel/amd_iommu_init.c +++ b/arch/x86/kernel/amd_iommu_init.c | |||
| @@ -801,6 +801,21 @@ static int __init init_memory_definitions(struct acpi_table_header *table) | |||
| 801 | } | 801 | } |
| 802 | 802 | ||
| 803 | /* | 803 | /* |
| 804 | * Init the device table to not allow DMA access for devices and | ||
| 805 | * suppress all page faults | ||
| 806 | */ | ||
| 807 | static void init_device_table(void) | ||
| 808 | { | ||
| 809 | u16 devid; | ||
| 810 | |||
| 811 | for (devid = 0; devid <= amd_iommu_last_bdf; ++devid) { | ||
| 812 | set_dev_entry_bit(devid, DEV_ENTRY_VALID); | ||
| 813 | set_dev_entry_bit(devid, DEV_ENTRY_TRANSLATION); | ||
| 814 | set_dev_entry_bit(devid, DEV_ENTRY_NO_PAGE_FAULT); | ||
| 815 | } | ||
| 816 | } | ||
| 817 | |||
| 818 | /* | ||
| 804 | * This function finally enables all IOMMUs found in the system after | 819 | * This function finally enables all IOMMUs found in the system after |
| 805 | * they have been initialized | 820 | * they have been initialized |
| 806 | */ | 821 | */ |
| @@ -931,6 +946,9 @@ int __init amd_iommu_init(void) | |||
| 931 | if (amd_iommu_pd_alloc_bitmap == NULL) | 946 | if (amd_iommu_pd_alloc_bitmap == NULL) |
| 932 | goto free; | 947 | goto free; |
| 933 | 948 | ||
| 949 | /* init the device table */ | ||
| 950 | init_device_table(); | ||
| 951 | |||
| 934 | /* | 952 | /* |
| 935 | * let all alias entries point to itself | 953 | * let all alias entries point to itself |
| 936 | */ | 954 | */ |
| @@ -954,15 +972,15 @@ int __init amd_iommu_init(void) | |||
| 954 | if (acpi_table_parse("IVRS", init_memory_definitions) != 0) | 972 | if (acpi_table_parse("IVRS", init_memory_definitions) != 0) |
| 955 | goto free; | 973 | goto free; |
| 956 | 974 | ||
| 957 | ret = amd_iommu_init_dma_ops(); | 975 | ret = sysdev_class_register(&amd_iommu_sysdev_class); |
| 958 | if (ret) | 976 | if (ret) |
| 959 | goto free; | 977 | goto free; |
| 960 | 978 | ||
| 961 | ret = sysdev_class_register(&amd_iommu_sysdev_class); | 979 | ret = sysdev_register(&device_amd_iommu); |
| 962 | if (ret) | 980 | if (ret) |
| 963 | goto free; | 981 | goto free; |
| 964 | 982 | ||
| 965 | ret = sysdev_register(&device_amd_iommu); | 983 | ret = amd_iommu_init_dma_ops(); |
| 966 | if (ret) | 984 | if (ret) |
| 967 | goto free; | 985 | goto free; |
| 968 | 986 | ||
diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c index d6c898358371..f88bd0d982b0 100644 --- a/arch/x86/kernel/apic_32.c +++ b/arch/x86/kernel/apic_32.c | |||
| @@ -1454,8 +1454,6 @@ void disconnect_bsp_APIC(int virt_wire_setup) | |||
| 1454 | } | 1454 | } |
| 1455 | } | 1455 | } |
| 1456 | 1456 | ||
| 1457 | unsigned int __cpuinitdata maxcpus = NR_CPUS; | ||
| 1458 | |||
| 1459 | void __cpuinit generic_processor_info(int apicid, int version) | 1457 | void __cpuinit generic_processor_info(int apicid, int version) |
| 1460 | { | 1458 | { |
| 1461 | int cpu; | 1459 | int cpu; |
| @@ -1482,12 +1480,6 @@ void __cpuinit generic_processor_info(int apicid, int version) | |||
| 1482 | return; | 1480 | return; |
| 1483 | } | 1481 | } |
| 1484 | 1482 | ||
| 1485 | if (num_processors >= maxcpus) { | ||
| 1486 | printk(KERN_WARNING "WARNING: maxcpus limit of %i reached." | ||
| 1487 | " Processor ignored.\n", maxcpus); | ||
| 1488 | return; | ||
| 1489 | } | ||
| 1490 | |||
| 1491 | num_processors++; | 1483 | num_processors++; |
| 1492 | cpus_complement(tmp_map, cpu_present_map); | 1484 | cpus_complement(tmp_map, cpu_present_map); |
| 1493 | cpu = first_cpu(tmp_map); | 1485 | cpu = first_cpu(tmp_map); |
| @@ -1720,15 +1712,19 @@ static int __init parse_lapic_timer_c2_ok(char *arg) | |||
| 1720 | } | 1712 | } |
| 1721 | early_param("lapic_timer_c2_ok", parse_lapic_timer_c2_ok); | 1713 | early_param("lapic_timer_c2_ok", parse_lapic_timer_c2_ok); |
| 1722 | 1714 | ||
| 1723 | static int __init apic_set_verbosity(char *str) | 1715 | static int __init apic_set_verbosity(char *arg) |
| 1724 | { | 1716 | { |
| 1725 | if (strcmp("debug", str) == 0) | 1717 | if (!arg) |
| 1718 | return -EINVAL; | ||
| 1719 | |||
| 1720 | if (strcmp(arg, "debug") == 0) | ||
| 1726 | apic_verbosity = APIC_DEBUG; | 1721 | apic_verbosity = APIC_DEBUG; |
| 1727 | else if (strcmp("verbose", str) == 0) | 1722 | else if (strcmp(arg, "verbose") == 0) |
| 1728 | apic_verbosity = APIC_VERBOSE; | 1723 | apic_verbosity = APIC_VERBOSE; |
| 1729 | return 1; | 1724 | |
| 1725 | return 0; | ||
| 1730 | } | 1726 | } |
| 1731 | __setup("apic=", apic_set_verbosity); | 1727 | early_param("apic", apic_set_verbosity); |
| 1732 | 1728 | ||
| 1733 | static int __init lapic_insert_resource(void) | 1729 | static int __init lapic_insert_resource(void) |
| 1734 | { | 1730 | { |
diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c index 7f1f030da7ee..446c062e831c 100644 --- a/arch/x86/kernel/apic_64.c +++ b/arch/x86/kernel/apic_64.c | |||
| @@ -90,7 +90,6 @@ static unsigned long apic_phys; | |||
| 90 | 90 | ||
| 91 | unsigned long mp_lapic_addr; | 91 | unsigned long mp_lapic_addr; |
| 92 | 92 | ||
| 93 | unsigned int __cpuinitdata maxcpus = NR_CPUS; | ||
| 94 | /* | 93 | /* |
| 95 | * Get the LAPIC version | 94 | * Get the LAPIC version |
| 96 | */ | 95 | */ |
| @@ -1062,12 +1061,6 @@ void __cpuinit generic_processor_info(int apicid, int version) | |||
| 1062 | return; | 1061 | return; |
| 1063 | } | 1062 | } |
| 1064 | 1063 | ||
| 1065 | if (num_processors >= maxcpus) { | ||
| 1066 | printk(KERN_WARNING "WARNING: maxcpus limit of %i reached." | ||
| 1067 | " Processor ignored.\n", maxcpus); | ||
| 1068 | return; | ||
| 1069 | } | ||
| 1070 | |||
| 1071 | num_processors++; | 1064 | num_processors++; |
| 1072 | cpus_complement(tmp_map, cpu_present_map); | 1065 | cpus_complement(tmp_map, cpu_present_map); |
| 1073 | cpu = first_cpu(tmp_map); | 1066 | cpu = first_cpu(tmp_map); |
diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c index 84a8220a6072..a6ef672adbba 100644 --- a/arch/x86/kernel/cpu/addon_cpuid_features.c +++ b/arch/x86/kernel/cpu/addon_cpuid_features.c | |||
| @@ -56,9 +56,22 @@ void __cpuinit validate_pat_support(struct cpuinfo_x86 *c) | |||
| 56 | 56 | ||
| 57 | switch (c->x86_vendor) { | 57 | switch (c->x86_vendor) { |
| 58 | case X86_VENDOR_INTEL: | 58 | case X86_VENDOR_INTEL: |
| 59 | if (c->x86 == 0xF || (c->x86 == 6 && c->x86_model >= 15)) | 59 | /* |
| 60 | * There is a known erratum on Pentium III and Core Solo | ||
| 61 | * and Core Duo CPUs. | ||
| 62 | * " Page with PAT set to WC while associated MTRR is UC | ||
| 63 | * may consolidate to UC " | ||
| 64 | * Because of this erratum, it is better to stick with | ||
| 65 | * setting WC in MTRR rather than using PAT on these CPUs. | ||
| 66 | * | ||
| 67 | * Enable PAT WC only on P4, Core 2 or later CPUs. | ||
| 68 | */ | ||
| 69 | if (c->x86 > 0x6 || (c->x86 == 6 && c->x86_model >= 15)) | ||
| 60 | return; | 70 | return; |
| 61 | break; | 71 | |
| 72 | pat_disable("PAT WC disabled due to known CPU erratum."); | ||
| 73 | return; | ||
| 74 | |||
| 62 | case X86_VENDOR_AMD: | 75 | case X86_VENDOR_AMD: |
| 63 | case X86_VENDOR_CENTAUR: | 76 | case X86_VENDOR_CENTAUR: |
| 64 | case X86_VENDOR_TRANSMETA: | 77 | case X86_VENDOR_TRANSMETA: |
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index c9b58a806e85..c8e315f1aa83 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c | |||
| @@ -50,6 +50,8 @@ static double __initdata y = 3145727.0; | |||
| 50 | */ | 50 | */ |
| 51 | static void __init check_fpu(void) | 51 | static void __init check_fpu(void) |
| 52 | { | 52 | { |
| 53 | s32 fdiv_bug; | ||
| 54 | |||
| 53 | if (!boot_cpu_data.hard_math) { | 55 | if (!boot_cpu_data.hard_math) { |
| 54 | #ifndef CONFIG_MATH_EMULATION | 56 | #ifndef CONFIG_MATH_EMULATION |
| 55 | printk(KERN_EMERG "No coprocessor found and no math emulation present.\n"); | 57 | printk(KERN_EMERG "No coprocessor found and no math emulation present.\n"); |
| @@ -74,8 +76,10 @@ static void __init check_fpu(void) | |||
| 74 | "fistpl %0\n\t" | 76 | "fistpl %0\n\t" |
| 75 | "fwait\n\t" | 77 | "fwait\n\t" |
| 76 | "fninit" | 78 | "fninit" |
| 77 | : "=m" (*&boot_cpu_data.fdiv_bug) | 79 | : "=m" (*&fdiv_bug) |
| 78 | : "m" (*&x), "m" (*&y)); | 80 | : "m" (*&x), "m" (*&y)); |
| 81 | |||
| 82 | boot_cpu_data.fdiv_bug = fdiv_bug; | ||
| 79 | if (boot_cpu_data.fdiv_bug) | 83 | if (boot_cpu_data.fdiv_bug) |
| 80 | printk("Hmm, FPU with FDIV bug.\n"); | 84 | printk("Hmm, FPU with FDIV bug.\n"); |
| 81 | } | 85 | } |
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index 4e7271999a74..84bb395038d8 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | |||
| @@ -737,63 +737,44 @@ static int find_psb_table(struct powernow_k8_data *data) | |||
| 737 | #ifdef CONFIG_X86_POWERNOW_K8_ACPI | 737 | #ifdef CONFIG_X86_POWERNOW_K8_ACPI |
| 738 | static void powernow_k8_acpi_pst_values(struct powernow_k8_data *data, unsigned int index) | 738 | static void powernow_k8_acpi_pst_values(struct powernow_k8_data *data, unsigned int index) |
| 739 | { | 739 | { |
| 740 | if (!data->acpi_data->state_count || (cpu_family == CPU_HW_PSTATE)) | 740 | if (!data->acpi_data.state_count || (cpu_family == CPU_HW_PSTATE)) |
| 741 | return; | 741 | return; |
| 742 | 742 | ||
| 743 | data->irt = (data->acpi_data->states[index].control >> IRT_SHIFT) & IRT_MASK; | 743 | data->irt = (data->acpi_data.states[index].control >> IRT_SHIFT) & IRT_MASK; |
| 744 | data->rvo = (data->acpi_data->states[index].control >> RVO_SHIFT) & RVO_MASK; | 744 | data->rvo = (data->acpi_data.states[index].control >> RVO_SHIFT) & RVO_MASK; |
| 745 | data->exttype = (data->acpi_data->states[index].control >> EXT_TYPE_SHIFT) & EXT_TYPE_MASK; | 745 | data->exttype = (data->acpi_data.states[index].control >> EXT_TYPE_SHIFT) & EXT_TYPE_MASK; |
| 746 | data->plllock = (data->acpi_data->states[index].control >> PLL_L_SHIFT) & PLL_L_MASK; | 746 | data->plllock = (data->acpi_data.states[index].control >> PLL_L_SHIFT) & PLL_L_MASK; |
| 747 | data->vidmvs = 1 << ((data->acpi_data->states[index].control >> MVS_SHIFT) & MVS_MASK); | 747 | data->vidmvs = 1 << ((data->acpi_data.states[index].control >> MVS_SHIFT) & MVS_MASK); |
| 748 | data->vstable = (data->acpi_data->states[index].control >> VST_SHIFT) & VST_MASK; | 748 | data->vstable = (data->acpi_data.states[index].control >> VST_SHIFT) & VST_MASK; |
| 749 | } | ||
| 750 | |||
| 751 | |||
| 752 | static struct acpi_processor_performance *acpi_perf_data; | ||
| 753 | static int preregister_valid; | ||
| 754 | |||
| 755 | static int powernow_k8_cpu_preinit_acpi(void) | ||
| 756 | { | ||
| 757 | acpi_perf_data = alloc_percpu(struct acpi_processor_performance); | ||
| 758 | if (!acpi_perf_data) | ||
| 759 | return -ENODEV; | ||
| 760 | |||
| 761 | if (acpi_processor_preregister_performance(acpi_perf_data)) | ||
| 762 | return -ENODEV; | ||
| 763 | else | ||
| 764 | preregister_valid = 1; | ||
| 765 | return 0; | ||
| 766 | } | 749 | } |
| 767 | 750 | ||
| 768 | static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) | 751 | static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) |
| 769 | { | 752 | { |
| 770 | struct cpufreq_frequency_table *powernow_table; | 753 | struct cpufreq_frequency_table *powernow_table; |
| 771 | int ret_val; | 754 | int ret_val; |
| 772 | int cpu = 0; | ||
| 773 | 755 | ||
| 774 | data->acpi_data = percpu_ptr(acpi_perf_data, cpu); | 756 | if (acpi_processor_register_performance(&data->acpi_data, data->cpu)) { |
| 775 | if (acpi_processor_register_performance(data->acpi_data, data->cpu)) { | ||
| 776 | dprintk("register performance failed: bad ACPI data\n"); | 757 | dprintk("register performance failed: bad ACPI data\n"); |
| 777 | return -EIO; | 758 | return -EIO; |
| 778 | } | 759 | } |
| 779 | 760 | ||
| 780 | /* verify the data contained in the ACPI structures */ | 761 | /* verify the data contained in the ACPI structures */ |
| 781 | if (data->acpi_data->state_count <= 1) { | 762 | if (data->acpi_data.state_count <= 1) { |
| 782 | dprintk("No ACPI P-States\n"); | 763 | dprintk("No ACPI P-States\n"); |
| 783 | goto err_out; | 764 | goto err_out; |
| 784 | } | 765 | } |
| 785 | 766 | ||
| 786 | if ((data->acpi_data->control_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE) || | 767 | if ((data->acpi_data.control_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE) || |
| 787 | (data->acpi_data->status_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) { | 768 | (data->acpi_data.status_register.space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) { |
| 788 | dprintk("Invalid control/status registers (%x - %x)\n", | 769 | dprintk("Invalid control/status registers (%x - %x)\n", |
| 789 | data->acpi_data->control_register.space_id, | 770 | data->acpi_data.control_register.space_id, |
| 790 | data->acpi_data->status_register.space_id); | 771 | data->acpi_data.status_register.space_id); |
| 791 | goto err_out; | 772 | goto err_out; |
| 792 | } | 773 | } |
| 793 | 774 | ||
| 794 | /* fill in data->powernow_table */ | 775 | /* fill in data->powernow_table */ |
| 795 | powernow_table = kmalloc((sizeof(struct cpufreq_frequency_table) | 776 | powernow_table = kmalloc((sizeof(struct cpufreq_frequency_table) |
| 796 | * (data->acpi_data->state_count + 1)), GFP_KERNEL); | 777 | * (data->acpi_data.state_count + 1)), GFP_KERNEL); |
| 797 | if (!powernow_table) { | 778 | if (!powernow_table) { |
| 798 | dprintk("powernow_table memory alloc failure\n"); | 779 | dprintk("powernow_table memory alloc failure\n"); |
| 799 | goto err_out; | 780 | goto err_out; |
| @@ -806,12 +787,12 @@ static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) | |||
| 806 | if (ret_val) | 787 | if (ret_val) |
| 807 | goto err_out_mem; | 788 | goto err_out_mem; |
| 808 | 789 | ||
| 809 | powernow_table[data->acpi_data->state_count].frequency = CPUFREQ_TABLE_END; | 790 | powernow_table[data->acpi_data.state_count].frequency = CPUFREQ_TABLE_END; |
| 810 | powernow_table[data->acpi_data->state_count].index = 0; | 791 | powernow_table[data->acpi_data.state_count].index = 0; |
| 811 | data->powernow_table = powernow_table; | 792 | data->powernow_table = powernow_table; |
| 812 | 793 | ||
| 813 | /* fill in data */ | 794 | /* fill in data */ |
| 814 | data->numps = data->acpi_data->state_count; | 795 | data->numps = data->acpi_data.state_count; |
| 815 | if (first_cpu(per_cpu(cpu_core_map, data->cpu)) == data->cpu) | 796 | if (first_cpu(per_cpu(cpu_core_map, data->cpu)) == data->cpu) |
| 816 | print_basics(data); | 797 | print_basics(data); |
| 817 | powernow_k8_acpi_pst_values(data, 0); | 798 | powernow_k8_acpi_pst_values(data, 0); |
| @@ -819,31 +800,16 @@ static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) | |||
| 819 | /* notify BIOS that we exist */ | 800 | /* notify BIOS that we exist */ |
| 820 | acpi_processor_notify_smm(THIS_MODULE); | 801 | acpi_processor_notify_smm(THIS_MODULE); |
| 821 | 802 | ||
| 822 | /* determine affinity, from ACPI if available */ | ||
| 823 | if (preregister_valid) { | ||
| 824 | if ((data->acpi_data->shared_type == CPUFREQ_SHARED_TYPE_ALL) || | ||
| 825 | (data->acpi_data->shared_type == CPUFREQ_SHARED_TYPE_ANY)) | ||
| 826 | data->starting_core_affinity = data->acpi_data->shared_cpu_map; | ||
| 827 | else | ||
| 828 | data->starting_core_affinity = cpumask_of_cpu(data->cpu); | ||
| 829 | } else { | ||
| 830 | /* best guess from family if not */ | ||
| 831 | if (cpu_family == CPU_HW_PSTATE) | ||
| 832 | data->starting_core_affinity = cpumask_of_cpu(data->cpu); | ||
| 833 | else | ||
| 834 | data->starting_core_affinity = per_cpu(cpu_core_map, data->cpu); | ||
| 835 | } | ||
| 836 | |||
| 837 | return 0; | 803 | return 0; |
| 838 | 804 | ||
| 839 | err_out_mem: | 805 | err_out_mem: |
| 840 | kfree(powernow_table); | 806 | kfree(powernow_table); |
| 841 | 807 | ||
| 842 | err_out: | 808 | err_out: |
| 843 | acpi_processor_unregister_performance(data->acpi_data, data->cpu); | 809 | acpi_processor_unregister_performance(&data->acpi_data, data->cpu); |
| 844 | 810 | ||
| 845 | /* data->acpi_data.state_count informs us at ->exit() whether ACPI was used */ | 811 | /* data->acpi_data.state_count informs us at ->exit() whether ACPI was used */ |
| 846 | data->acpi_data->state_count = 0; | 812 | data->acpi_data.state_count = 0; |
| 847 | 813 | ||
| 848 | return -ENODEV; | 814 | return -ENODEV; |
| 849 | } | 815 | } |
| @@ -855,10 +821,10 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data, struct cpuf | |||
| 855 | rdmsr(MSR_PSTATE_CUR_LIMIT, hi, lo); | 821 | rdmsr(MSR_PSTATE_CUR_LIMIT, hi, lo); |
| 856 | data->max_hw_pstate = (hi & HW_PSTATE_MAX_MASK) >> HW_PSTATE_MAX_SHIFT; | 822 | data->max_hw_pstate = (hi & HW_PSTATE_MAX_MASK) >> HW_PSTATE_MAX_SHIFT; |
| 857 | 823 | ||
| 858 | for (i = 0; i < data->acpi_data->state_count; i++) { | 824 | for (i = 0; i < data->acpi_data.state_count; i++) { |
| 859 | u32 index; | 825 | u32 index; |
| 860 | 826 | ||
| 861 | index = data->acpi_data->states[i].control & HW_PSTATE_MASK; | 827 | index = data->acpi_data.states[i].control & HW_PSTATE_MASK; |
| 862 | if (index > data->max_hw_pstate) { | 828 | if (index > data->max_hw_pstate) { |
| 863 | printk(KERN_ERR PFX "invalid pstate %d - bad value %d.\n", i, index); | 829 | printk(KERN_ERR PFX "invalid pstate %d - bad value %d.\n", i, index); |
| 864 | printk(KERN_ERR PFX "Please report to BIOS manufacturer\n"); | 830 | printk(KERN_ERR PFX "Please report to BIOS manufacturer\n"); |
| @@ -874,7 +840,7 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data, struct cpuf | |||
| 874 | 840 | ||
| 875 | powernow_table[i].index = index; | 841 | powernow_table[i].index = index; |
| 876 | 842 | ||
| 877 | powernow_table[i].frequency = data->acpi_data->states[i].core_frequency * 1000; | 843 | powernow_table[i].frequency = data->acpi_data.states[i].core_frequency * 1000; |
| 878 | } | 844 | } |
| 879 | return 0; | 845 | return 0; |
| 880 | } | 846 | } |
| @@ -883,16 +849,16 @@ static int fill_powernow_table_fidvid(struct powernow_k8_data *data, struct cpuf | |||
| 883 | { | 849 | { |
| 884 | int i; | 850 | int i; |
| 885 | int cntlofreq = 0; | 851 | int cntlofreq = 0; |
| 886 | for (i = 0; i < data->acpi_data->state_count; i++) { | 852 | for (i = 0; i < data->acpi_data.state_count; i++) { |
| 887 | u32 fid; | 853 | u32 fid; |
| 888 | u32 vid; | 854 | u32 vid; |
| 889 | 855 | ||
| 890 | if (data->exttype) { | 856 | if (data->exttype) { |
| 891 | fid = data->acpi_data->states[i].status & EXT_FID_MASK; | 857 | fid = data->acpi_data.states[i].status & EXT_FID_MASK; |
| 892 | vid = (data->acpi_data->states[i].status >> VID_SHIFT) & EXT_VID_MASK; | 858 | vid = (data->acpi_data.states[i].status >> VID_SHIFT) & EXT_VID_MASK; |
| 893 | } else { | 859 | } else { |
| 894 | fid = data->acpi_data->states[i].control & FID_MASK; | 860 | fid = data->acpi_data.states[i].control & FID_MASK; |
| 895 | vid = (data->acpi_data->states[i].control >> VID_SHIFT) & VID_MASK; | 861 | vid = (data->acpi_data.states[i].control >> VID_SHIFT) & VID_MASK; |
| 896 | } | 862 | } |
| 897 | 863 | ||
| 898 | dprintk(" %d : fid 0x%x, vid 0x%x\n", i, fid, vid); | 864 | dprintk(" %d : fid 0x%x, vid 0x%x\n", i, fid, vid); |
| @@ -933,10 +899,10 @@ static int fill_powernow_table_fidvid(struct powernow_k8_data *data, struct cpuf | |||
| 933 | cntlofreq = i; | 899 | cntlofreq = i; |
| 934 | } | 900 | } |
| 935 | 901 | ||
| 936 | if (powernow_table[i].frequency != (data->acpi_data->states[i].core_frequency * 1000)) { | 902 | if (powernow_table[i].frequency != (data->acpi_data.states[i].core_frequency * 1000)) { |
| 937 | printk(KERN_INFO PFX "invalid freq entries %u kHz vs. %u kHz\n", | 903 | printk(KERN_INFO PFX "invalid freq entries %u kHz vs. %u kHz\n", |
| 938 | powernow_table[i].frequency, | 904 | powernow_table[i].frequency, |
| 939 | (unsigned int) (data->acpi_data->states[i].core_frequency * 1000)); | 905 | (unsigned int) (data->acpi_data.states[i].core_frequency * 1000)); |
| 940 | powernow_table[i].frequency = CPUFREQ_ENTRY_INVALID; | 906 | powernow_table[i].frequency = CPUFREQ_ENTRY_INVALID; |
| 941 | continue; | 907 | continue; |
| 942 | } | 908 | } |
| @@ -946,12 +912,11 @@ static int fill_powernow_table_fidvid(struct powernow_k8_data *data, struct cpuf | |||
| 946 | 912 | ||
| 947 | static void powernow_k8_cpu_exit_acpi(struct powernow_k8_data *data) | 913 | static void powernow_k8_cpu_exit_acpi(struct powernow_k8_data *data) |
| 948 | { | 914 | { |
| 949 | if (data->acpi_data->state_count) | 915 | if (data->acpi_data.state_count) |
| 950 | acpi_processor_unregister_performance(data->acpi_data, data->cpu); | 916 | acpi_processor_unregister_performance(&data->acpi_data, data->cpu); |
| 951 | } | 917 | } |
| 952 | 918 | ||
| 953 | #else | 919 | #else |
| 954 | static int powernow_k8_cpu_preinit_acpi(void) { return -ENODEV; } | ||
| 955 | static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) { return -ENODEV; } | 920 | static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) { return -ENODEV; } |
| 956 | static void powernow_k8_cpu_exit_acpi(struct powernow_k8_data *data) { return; } | 921 | static void powernow_k8_cpu_exit_acpi(struct powernow_k8_data *data) { return; } |
| 957 | static void powernow_k8_acpi_pst_values(struct powernow_k8_data *data, unsigned int index) { return; } | 922 | static void powernow_k8_acpi_pst_values(struct powernow_k8_data *data, unsigned int index) { return; } |
| @@ -1136,7 +1101,7 @@ static int powernowk8_verify(struct cpufreq_policy *pol) | |||
| 1136 | static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol) | 1101 | static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol) |
| 1137 | { | 1102 | { |
| 1138 | struct powernow_k8_data *data; | 1103 | struct powernow_k8_data *data; |
| 1139 | cpumask_t oldmask = CPU_MASK_ALL; | 1104 | cpumask_t oldmask; |
| 1140 | int rc; | 1105 | int rc; |
| 1141 | 1106 | ||
| 1142 | if (!cpu_online(pol->cpu)) | 1107 | if (!cpu_online(pol->cpu)) |
| @@ -1209,7 +1174,10 @@ static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol) | |||
| 1209 | /* run on any CPU again */ | 1174 | /* run on any CPU again */ |
| 1210 | set_cpus_allowed_ptr(current, &oldmask); | 1175 | set_cpus_allowed_ptr(current, &oldmask); |
| 1211 | 1176 | ||
| 1212 | pol->cpus = data->starting_core_affinity; | 1177 | if (cpu_family == CPU_HW_PSTATE) |
| 1178 | pol->cpus = cpumask_of_cpu(pol->cpu); | ||
| 1179 | else | ||
| 1180 | pol->cpus = per_cpu(cpu_core_map, pol->cpu); | ||
| 1213 | data->available_cores = &(pol->cpus); | 1181 | data->available_cores = &(pol->cpus); |
| 1214 | 1182 | ||
| 1215 | /* Take a crude guess here. | 1183 | /* Take a crude guess here. |
| @@ -1332,7 +1300,6 @@ static int __cpuinit powernowk8_init(void) | |||
| 1332 | } | 1300 | } |
| 1333 | 1301 | ||
| 1334 | if (supported_cpus == num_online_cpus()) { | 1302 | if (supported_cpus == num_online_cpus()) { |
| 1335 | powernow_k8_cpu_preinit_acpi(); | ||
| 1336 | printk(KERN_INFO PFX "Found %d %s " | 1303 | printk(KERN_INFO PFX "Found %d %s " |
| 1337 | "processors (%d cpu cores) (" VERSION ")\n", | 1304 | "processors (%d cpu cores) (" VERSION ")\n", |
| 1338 | num_online_nodes(), | 1305 | num_online_nodes(), |
| @@ -1349,10 +1316,6 @@ static void __exit powernowk8_exit(void) | |||
| 1349 | dprintk("exit\n"); | 1316 | dprintk("exit\n"); |
| 1350 | 1317 | ||
| 1351 | cpufreq_unregister_driver(&cpufreq_amd64_driver); | 1318 | cpufreq_unregister_driver(&cpufreq_amd64_driver); |
| 1352 | |||
| 1353 | #ifdef CONFIG_X86_POWERNOW_K8_ACPI | ||
| 1354 | free_percpu(acpi_perf_data); | ||
| 1355 | #endif | ||
| 1356 | } | 1319 | } |
| 1357 | 1320 | ||
| 1358 | MODULE_AUTHOR("Paul Devriendt <paul.devriendt@amd.com> and Mark Langsdorf <mark.langsdorf@amd.com>"); | 1321 | MODULE_AUTHOR("Paul Devriendt <paul.devriendt@amd.com> and Mark Langsdorf <mark.langsdorf@amd.com>"); |
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.h b/arch/x86/kernel/cpu/cpufreq/powernow-k8.h index a62612cd4be8..ab48cfed4d96 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.h +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.h | |||
| @@ -33,13 +33,12 @@ struct powernow_k8_data { | |||
| 33 | #ifdef CONFIG_X86_POWERNOW_K8_ACPI | 33 | #ifdef CONFIG_X86_POWERNOW_K8_ACPI |
| 34 | /* the acpi table needs to be kept. it's only available if ACPI was | 34 | /* the acpi table needs to be kept. it's only available if ACPI was |
| 35 | * used to determine valid frequency/vid/fid states */ | 35 | * used to determine valid frequency/vid/fid states */ |
| 36 | struct acpi_processor_performance *acpi_data; | 36 | struct acpi_processor_performance acpi_data; |
| 37 | #endif | 37 | #endif |
| 38 | /* we need to keep track of associated cores, but let cpufreq | 38 | /* we need to keep track of associated cores, but let cpufreq |
| 39 | * handle hotplug events - so just point at cpufreq pol->cpus | 39 | * handle hotplug events - so just point at cpufreq pol->cpus |
| 40 | * structure */ | 40 | * structure */ |
| 41 | cpumask_t *available_cores; | 41 | cpumask_t *available_cores; |
| 42 | cpumask_t starting_core_affinity; | ||
| 43 | }; | 42 | }; |
| 44 | 43 | ||
| 45 | 44 | ||
diff --git a/arch/x86/kernel/cpu/cyrix.c b/arch/x86/kernel/cpu/cyrix.c index 3fd7a67bb06a..e710a21bb6e8 100644 --- a/arch/x86/kernel/cpu/cyrix.c +++ b/arch/x86/kernel/cpu/cyrix.c | |||
| @@ -134,23 +134,6 @@ static void __cpuinit set_cx86_memwb(void) | |||
| 134 | setCx86(CX86_CCR2, getCx86(CX86_CCR2) | 0x14); | 134 | setCx86(CX86_CCR2, getCx86(CX86_CCR2) | 0x14); |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | static void __cpuinit set_cx86_inc(void) | ||
| 138 | { | ||
| 139 | unsigned char ccr3; | ||
| 140 | |||
| 141 | printk(KERN_INFO "Enable Incrementor on Cyrix/NSC processor.\n"); | ||
| 142 | |||
| 143 | ccr3 = getCx86(CX86_CCR3); | ||
| 144 | setCx86(CX86_CCR3, (ccr3 & 0x0f) | 0x10); /* enable MAPEN */ | ||
| 145 | /* PCR1 -- Performance Control */ | ||
| 146 | /* Incrementor on, whatever that is */ | ||
| 147 | setCx86(CX86_PCR1, getCx86(CX86_PCR1) | 0x02); | ||
| 148 | /* PCR0 -- Performance Control */ | ||
| 149 | /* Incrementor Margin 10 */ | ||
| 150 | setCx86(CX86_PCR0, getCx86(CX86_PCR0) | 0x04); | ||
| 151 | setCx86(CX86_CCR3, ccr3); /* disable MAPEN */ | ||
| 152 | } | ||
| 153 | |||
| 154 | /* | 137 | /* |
| 155 | * Configure later MediaGX and/or Geode processor. | 138 | * Configure later MediaGX and/or Geode processor. |
| 156 | */ | 139 | */ |
| @@ -174,7 +157,6 @@ static void __cpuinit geode_configure(void) | |||
| 174 | 157 | ||
| 175 | set_cx86_memwb(); | 158 | set_cx86_memwb(); |
| 176 | set_cx86_reorder(); | 159 | set_cx86_reorder(); |
| 177 | set_cx86_inc(); | ||
| 178 | 160 | ||
| 179 | local_irq_restore(flags); | 161 | local_irq_restore(flags); |
| 180 | } | 162 | } |
diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c index 65a339678ece..726a5fcdf341 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_64.c +++ b/arch/x86/kernel/cpu/mcheck/mce_64.c | |||
| @@ -759,6 +759,7 @@ static struct sysdev_class mce_sysclass = { | |||
| 759 | }; | 759 | }; |
| 760 | 760 | ||
| 761 | DEFINE_PER_CPU(struct sys_device, device_mce); | 761 | DEFINE_PER_CPU(struct sys_device, device_mce); |
| 762 | void (*threshold_cpu_callback)(unsigned long action, unsigned int cpu) __cpuinitdata; | ||
| 762 | 763 | ||
| 763 | /* Why are there no generic functions for this? */ | 764 | /* Why are there no generic functions for this? */ |
| 764 | #define ACCESSOR(name, var, start) \ | 765 | #define ACCESSOR(name, var, start) \ |
| @@ -883,9 +884,13 @@ static int __cpuinit mce_cpu_callback(struct notifier_block *nfb, | |||
| 883 | case CPU_ONLINE: | 884 | case CPU_ONLINE: |
| 884 | case CPU_ONLINE_FROZEN: | 885 | case CPU_ONLINE_FROZEN: |
| 885 | mce_create_device(cpu); | 886 | mce_create_device(cpu); |
| 887 | if (threshold_cpu_callback) | ||
| 888 | threshold_cpu_callback(action, cpu); | ||
| 886 | break; | 889 | break; |
| 887 | case CPU_DEAD: | 890 | case CPU_DEAD: |
| 888 | case CPU_DEAD_FROZEN: | 891 | case CPU_DEAD_FROZEN: |
| 892 | if (threshold_cpu_callback) | ||
| 893 | threshold_cpu_callback(action, cpu); | ||
| 889 | mce_remove_device(cpu); | 894 | mce_remove_device(cpu); |
| 890 | break; | 895 | break; |
| 891 | } | 896 | } |
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd_64.c b/arch/x86/kernel/cpu/mcheck/mce_amd_64.c index 88736cadbaa6..5eb390a4b2e9 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd_64.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd_64.c | |||
| @@ -628,6 +628,7 @@ static void threshold_remove_bank(unsigned int cpu, int bank) | |||
| 628 | deallocate_threshold_block(cpu, bank); | 628 | deallocate_threshold_block(cpu, bank); |
| 629 | 629 | ||
| 630 | free_out: | 630 | free_out: |
| 631 | kobject_del(b->kobj); | ||
| 631 | kobject_put(b->kobj); | 632 | kobject_put(b->kobj); |
| 632 | kfree(b); | 633 | kfree(b); |
| 633 | per_cpu(threshold_banks, cpu)[bank] = NULL; | 634 | per_cpu(threshold_banks, cpu)[bank] = NULL; |
| @@ -645,14 +646,11 @@ static void threshold_remove_device(unsigned int cpu) | |||
| 645 | } | 646 | } |
| 646 | 647 | ||
| 647 | /* get notified when a cpu comes on/off */ | 648 | /* get notified when a cpu comes on/off */ |
| 648 | static int __cpuinit threshold_cpu_callback(struct notifier_block *nfb, | 649 | static void __cpuinit amd_64_threshold_cpu_callback(unsigned long action, |
| 649 | unsigned long action, void *hcpu) | 650 | unsigned int cpu) |
| 650 | { | 651 | { |
| 651 | /* cpu was unsigned int to begin with */ | ||
| 652 | unsigned int cpu = (unsigned long)hcpu; | ||
| 653 | |||
| 654 | if (cpu >= NR_CPUS) | 652 | if (cpu >= NR_CPUS) |
| 655 | goto out; | 653 | return; |
| 656 | 654 | ||
| 657 | switch (action) { | 655 | switch (action) { |
| 658 | case CPU_ONLINE: | 656 | case CPU_ONLINE: |
| @@ -666,14 +664,8 @@ static int __cpuinit threshold_cpu_callback(struct notifier_block *nfb, | |||
| 666 | default: | 664 | default: |
| 667 | break; | 665 | break; |
| 668 | } | 666 | } |
| 669 | out: | ||
| 670 | return NOTIFY_OK; | ||
| 671 | } | 667 | } |
| 672 | 668 | ||
| 673 | static struct notifier_block threshold_cpu_notifier __cpuinitdata = { | ||
| 674 | .notifier_call = threshold_cpu_callback, | ||
| 675 | }; | ||
| 676 | |||
| 677 | static __init int threshold_init_device(void) | 669 | static __init int threshold_init_device(void) |
| 678 | { | 670 | { |
| 679 | unsigned lcpu = 0; | 671 | unsigned lcpu = 0; |
| @@ -684,7 +676,7 @@ static __init int threshold_init_device(void) | |||
| 684 | if (err) | 676 | if (err) |
| 685 | return err; | 677 | return err; |
| 686 | } | 678 | } |
| 687 | register_hotcpu_notifier(&threshold_cpu_notifier); | 679 | threshold_cpu_callback = amd_64_threshold_cpu_callback; |
| 688 | return 0; | 680 | return 0; |
| 689 | } | 681 | } |
| 690 | 682 | ||
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index 509bd3d9eacd..cb7d3b6a80eb 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c | |||
| @@ -379,6 +379,7 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base, | |||
| 379 | unsigned long *size, mtrr_type *type) | 379 | unsigned long *size, mtrr_type *type) |
| 380 | { | 380 | { |
| 381 | unsigned int mask_lo, mask_hi, base_lo, base_hi; | 381 | unsigned int mask_lo, mask_hi, base_lo, base_hi; |
| 382 | unsigned int tmp, hi; | ||
| 382 | 383 | ||
| 383 | rdmsr(MTRRphysMask_MSR(reg), mask_lo, mask_hi); | 384 | rdmsr(MTRRphysMask_MSR(reg), mask_lo, mask_hi); |
| 384 | if ((mask_lo & 0x800) == 0) { | 385 | if ((mask_lo & 0x800) == 0) { |
| @@ -392,8 +393,23 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base, | |||
| 392 | rdmsr(MTRRphysBase_MSR(reg), base_lo, base_hi); | 393 | rdmsr(MTRRphysBase_MSR(reg), base_lo, base_hi); |
| 393 | 394 | ||
| 394 | /* Work out the shifted address mask. */ | 395 | /* Work out the shifted address mask. */ |
| 395 | mask_lo = size_or_mask | mask_hi << (32 - PAGE_SHIFT) | 396 | tmp = mask_hi << (32 - PAGE_SHIFT) | mask_lo >> PAGE_SHIFT; |
| 396 | | mask_lo >> PAGE_SHIFT; | 397 | mask_lo = size_or_mask | tmp; |
| 398 | /* Expand tmp with high bits to all 1s*/ | ||
| 399 | hi = fls(tmp); | ||
| 400 | if (hi > 0) { | ||
| 401 | tmp |= ~((1<<(hi - 1)) - 1); | ||
| 402 | |||
| 403 | if (tmp != mask_lo) { | ||
| 404 | static int once = 1; | ||
| 405 | |||
| 406 | if (once) { | ||
| 407 | printk(KERN_INFO "mtrr: your BIOS has set up an incorrect mask, fixing it up.\n"); | ||
| 408 | once = 0; | ||
| 409 | } | ||
| 410 | mask_lo = tmp; | ||
| 411 | } | ||
| 412 | } | ||
| 397 | 413 | ||
| 398 | /* This works correctly if size is a power of two, i.e. a | 414 | /* This works correctly if size is a power of two, i.e. a |
| 399 | contiguous range. */ | 415 | contiguous range. */ |
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c index 6f23969c8faf..b117d7f8a564 100644 --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c | |||
| @@ -1496,11 +1496,8 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn) | |||
| 1496 | 1496 | ||
| 1497 | /* kvm/qemu doesn't have mtrr set right, don't trim them all */ | 1497 | /* kvm/qemu doesn't have mtrr set right, don't trim them all */ |
| 1498 | if (!highest_pfn) { | 1498 | if (!highest_pfn) { |
| 1499 | if (!kvm_para_available()) { | 1499 | WARN(!kvm_para_available(), KERN_WARNING |
| 1500 | printk(KERN_WARNING | ||
| 1501 | "WARNING: strange, CPU MTRRs all blank?\n"); | 1500 | "WARNING: strange, CPU MTRRs all blank?\n"); |
| 1502 | WARN_ON(1); | ||
| 1503 | } | ||
| 1504 | return 0; | 1501 | return 0; |
| 1505 | } | 1502 | } |
| 1506 | 1503 | ||
diff --git a/arch/x86/kernel/cpu/perfctr-watchdog.c b/arch/x86/kernel/cpu/perfctr-watchdog.c index de7439f82b92..05cc22dbd4ff 100644 --- a/arch/x86/kernel/cpu/perfctr-watchdog.c +++ b/arch/x86/kernel/cpu/perfctr-watchdog.c | |||
| @@ -478,7 +478,13 @@ static int setup_p4_watchdog(unsigned nmi_hz) | |||
| 478 | perfctr_msr = MSR_P4_IQ_PERFCTR1; | 478 | perfctr_msr = MSR_P4_IQ_PERFCTR1; |
| 479 | evntsel_msr = MSR_P4_CRU_ESCR0; | 479 | evntsel_msr = MSR_P4_CRU_ESCR0; |
| 480 | cccr_msr = MSR_P4_IQ_CCCR1; | 480 | cccr_msr = MSR_P4_IQ_CCCR1; |
| 481 | cccr_val = P4_CCCR_OVF_PMI1 | P4_CCCR_ESCR_SELECT(4); | 481 | |
| 482 | /* Pentium 4 D processors don't support P4_CCCR_OVF_PMI1 */ | ||
| 483 | if (boot_cpu_data.x86_model == 4 && boot_cpu_data.x86_mask == 4) | ||
| 484 | cccr_val = P4_CCCR_OVF_PMI0; | ||
| 485 | else | ||
| 486 | cccr_val = P4_CCCR_OVF_PMI1; | ||
| 487 | cccr_val |= P4_CCCR_ESCR_SELECT(4); | ||
| 482 | } | 488 | } |
| 483 | 489 | ||
| 484 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) | 490 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) |
diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c index 14b11b3be31c..8e9cd6a8ec12 100644 --- a/arch/x86/kernel/cpuid.c +++ b/arch/x86/kernel/cpuid.c | |||
| @@ -89,6 +89,8 @@ static ssize_t cpuid_read(struct file *file, char __user *buf, | |||
| 89 | struct cpuid_regs cmd; | 89 | struct cpuid_regs cmd; |
| 90 | int cpu = iminor(file->f_path.dentry->d_inode); | 90 | int cpu = iminor(file->f_path.dentry->d_inode); |
| 91 | u64 pos = *ppos; | 91 | u64 pos = *ppos; |
| 92 | ssize_t bytes = 0; | ||
| 93 | int err = 0; | ||
| 92 | 94 | ||
| 93 | if (count % 16) | 95 | if (count % 16) |
| 94 | return -EINVAL; /* Invalid chunk size */ | 96 | return -EINVAL; /* Invalid chunk size */ |
| @@ -96,14 +98,19 @@ static ssize_t cpuid_read(struct file *file, char __user *buf, | |||
| 96 | for (; count; count -= 16) { | 98 | for (; count; count -= 16) { |
| 97 | cmd.eax = pos; | 99 | cmd.eax = pos; |
| 98 | cmd.ecx = pos >> 32; | 100 | cmd.ecx = pos >> 32; |
| 99 | smp_call_function_single(cpu, cpuid_smp_cpuid, &cmd, 1); | 101 | err = smp_call_function_single(cpu, cpuid_smp_cpuid, &cmd, 1); |
| 100 | if (copy_to_user(tmp, &cmd, 16)) | 102 | if (err) |
| 101 | return -EFAULT; | 103 | break; |
| 104 | if (copy_to_user(tmp, &cmd, 16)) { | ||
| 105 | err = -EFAULT; | ||
| 106 | break; | ||
| 107 | } | ||
| 102 | tmp += 16; | 108 | tmp += 16; |
| 109 | bytes += 16; | ||
| 103 | *ppos = ++pos; | 110 | *ppos = ++pos; |
| 104 | } | 111 | } |
| 105 | 112 | ||
| 106 | return tmp - buf; | 113 | return bytes ? bytes : err; |
| 107 | } | 114 | } |
| 108 | 115 | ||
| 109 | static int cpuid_open(struct inode *inode, struct file *file) | 116 | static int cpuid_open(struct inode *inode, struct file *file) |
diff --git a/arch/x86/kernel/efi_32.c b/arch/x86/kernel/efi_32.c index 4b63c8e1f13b..5cab48ee61a4 100644 --- a/arch/x86/kernel/efi_32.c +++ b/arch/x86/kernel/efi_32.c | |||
| @@ -53,7 +53,7 @@ void efi_call_phys_prelog(void) | |||
| 53 | * directory. If I have PAE, I just need to duplicate one entry in | 53 | * directory. If I have PAE, I just need to duplicate one entry in |
| 54 | * page directory. | 54 | * page directory. |
| 55 | */ | 55 | */ |
| 56 | cr4 = read_cr4(); | 56 | cr4 = read_cr4_safe(); |
| 57 | 57 | ||
| 58 | if (cr4 & X86_CR4_PAE) { | 58 | if (cr4 & X86_CR4_PAE) { |
| 59 | efi_bak_pg_dir_pointer[0].pgd = | 59 | efi_bak_pg_dir_pointer[0].pgd = |
| @@ -91,7 +91,7 @@ void efi_call_phys_epilog(void) | |||
| 91 | gdt_descr.size = GDT_SIZE - 1; | 91 | gdt_descr.size = GDT_SIZE - 1; |
| 92 | load_gdt(&gdt_descr); | 92 | load_gdt(&gdt_descr); |
| 93 | 93 | ||
| 94 | cr4 = read_cr4(); | 94 | cr4 = read_cr4_safe(); |
| 95 | 95 | ||
| 96 | if (cr4 & X86_CR4_PAE) { | 96 | if (cr4 & X86_CR4_PAE) { |
| 97 | swapper_pg_dir[pgd_index(0)].pgd = | 97 | swapper_pg_dir[pgd_index(0)].pgd = |
diff --git a/arch/x86/kernel/genx2apic_uv_x.c b/arch/x86/kernel/genx2apic_uv_x.c index 2cfcbded888a..bfa837cb16be 100644 --- a/arch/x86/kernel/genx2apic_uv_x.c +++ b/arch/x86/kernel/genx2apic_uv_x.c | |||
| @@ -222,7 +222,7 @@ static __init void map_low_mmrs(void) | |||
| 222 | 222 | ||
| 223 | enum map_type {map_wb, map_uc}; | 223 | enum map_type {map_wb, map_uc}; |
| 224 | 224 | ||
| 225 | static void map_high(char *id, unsigned long base, int shift, enum map_type map_type) | 225 | static __init void map_high(char *id, unsigned long base, int shift, enum map_type map_type) |
| 226 | { | 226 | { |
| 227 | unsigned long bytes, paddr; | 227 | unsigned long bytes, paddr; |
| 228 | 228 | ||
| @@ -293,7 +293,9 @@ static __init void uv_rtc_init(void) | |||
| 293 | sn_rtc_cycles_per_second = ticks_per_sec; | 293 | sn_rtc_cycles_per_second = ticks_per_sec; |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | static __init void uv_system_init(void) | 296 | static bool uv_system_inited; |
| 297 | |||
| 298 | void __init uv_system_init(void) | ||
| 297 | { | 299 | { |
| 298 | union uvh_si_addr_map_config_u m_n_config; | 300 | union uvh_si_addr_map_config_u m_n_config; |
| 299 | union uvh_node_id_u node_id; | 301 | union uvh_node_id_u node_id; |
| @@ -383,6 +385,7 @@ static __init void uv_system_init(void) | |||
| 383 | map_mmr_high(max_pnode); | 385 | map_mmr_high(max_pnode); |
| 384 | map_config_high(max_pnode); | 386 | map_config_high(max_pnode); |
| 385 | map_mmioh_high(max_pnode); | 387 | map_mmioh_high(max_pnode); |
| 388 | uv_system_inited = true; | ||
| 386 | } | 389 | } |
| 387 | 390 | ||
| 388 | /* | 391 | /* |
| @@ -391,8 +394,7 @@ static __init void uv_system_init(void) | |||
| 391 | */ | 394 | */ |
| 392 | void __cpuinit uv_cpu_init(void) | 395 | void __cpuinit uv_cpu_init(void) |
| 393 | { | 396 | { |
| 394 | if (!uv_node_to_blade) | 397 | BUG_ON(!uv_system_inited); |
| 395 | uv_system_init(); | ||
| 396 | 398 | ||
| 397 | uv_blade_info[uv_numa_blade_id()].nr_online_cpus++; | 399 | uv_blade_info[uv_numa_blade_id()].nr_online_cpus++; |
| 398 | 400 | ||
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 1b318e903bf6..9bfc4d72fb2e 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c | |||
| @@ -88,6 +88,7 @@ void __init x86_64_start_kernel(char * real_mode_data) | |||
| 88 | BUILD_BUG_ON(!(MODULES_VADDR > __START_KERNEL)); | 88 | BUILD_BUG_ON(!(MODULES_VADDR > __START_KERNEL)); |
| 89 | BUILD_BUG_ON(!(((MODULES_END - 1) & PGDIR_MASK) == | 89 | BUILD_BUG_ON(!(((MODULES_END - 1) & PGDIR_MASK) == |
| 90 | (__START_KERNEL & PGDIR_MASK))); | 90 | (__START_KERNEL & PGDIR_MASK))); |
| 91 | BUILD_BUG_ON(__fix_to_virt(__end_of_fixed_addresses) <= MODULES_END); | ||
| 91 | 92 | ||
| 92 | /* clear bss before set_intr_gate with early_idt_handler */ | 93 | /* clear bss before set_intr_gate with early_idt_handler */ |
| 93 | clear_bss(); | 94 | clear_bss(); |
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index ad2b15a1334d..59fd3b6b1303 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c | |||
| @@ -359,6 +359,7 @@ static int hpet_clocksource_register(void) | |||
| 359 | int __init hpet_enable(void) | 359 | int __init hpet_enable(void) |
| 360 | { | 360 | { |
| 361 | unsigned long id; | 361 | unsigned long id; |
| 362 | int i; | ||
| 362 | 363 | ||
| 363 | if (!is_hpet_capable()) | 364 | if (!is_hpet_capable()) |
| 364 | return 0; | 365 | return 0; |
| @@ -369,6 +370,29 @@ int __init hpet_enable(void) | |||
| 369 | * Read the period and check for a sane value: | 370 | * Read the period and check for a sane value: |
| 370 | */ | 371 | */ |
| 371 | hpet_period = hpet_readl(HPET_PERIOD); | 372 | hpet_period = hpet_readl(HPET_PERIOD); |
| 373 | |||
| 374 | /* | ||
| 375 | * AMD SB700 based systems with spread spectrum enabled use a | ||
| 376 | * SMM based HPET emulation to provide proper frequency | ||
| 377 | * setting. The SMM code is initialized with the first HPET | ||
| 378 | * register access and takes some time to complete. During | ||
| 379 | * this time the config register reads 0xffffffff. We check | ||
| 380 | * for max. 1000 loops whether the config register reads a non | ||
| 381 | * 0xffffffff value to make sure that HPET is up and running | ||
| 382 | * before we go further. A counting loop is safe, as the HPET | ||
| 383 | * access takes thousands of CPU cycles. On non SB700 based | ||
| 384 | * machines this check is only done once and has no side | ||
| 385 | * effects. | ||
| 386 | */ | ||
| 387 | for (i = 0; hpet_readl(HPET_CFG) == 0xFFFFFFFF; i++) { | ||
| 388 | if (i == 1000) { | ||
| 389 | printk(KERN_WARNING | ||
| 390 | "HPET config register value = 0xFFFFFFFF. " | ||
| 391 | "Disabling HPET\n"); | ||
| 392 | goto out_nohpet; | ||
| 393 | } | ||
| 394 | } | ||
| 395 | |||
| 372 | if (hpet_period < HPET_MIN_PERIOD || hpet_period > HPET_MAX_PERIOD) | 396 | if (hpet_period < HPET_MIN_PERIOD || hpet_period > HPET_MAX_PERIOD) |
| 373 | goto out_nohpet; | 397 | goto out_nohpet; |
| 374 | 398 | ||
diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c index de9aa0e3a9c5..09cddb57bec4 100644 --- a/arch/x86/kernel/io_apic_32.c +++ b/arch/x86/kernel/io_apic_32.c | |||
| @@ -57,7 +57,7 @@ atomic_t irq_mis_count; | |||
| 57 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; | 57 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; |
| 58 | 58 | ||
| 59 | static DEFINE_SPINLOCK(ioapic_lock); | 59 | static DEFINE_SPINLOCK(ioapic_lock); |
| 60 | static DEFINE_SPINLOCK(vector_lock); | 60 | DEFINE_SPINLOCK(vector_lock); |
| 61 | 61 | ||
| 62 | int timer_through_8259 __initdata; | 62 | int timer_through_8259 __initdata; |
| 63 | 63 | ||
| @@ -1209,10 +1209,6 @@ static int assign_irq_vector(int irq) | |||
| 1209 | return vector; | 1209 | return vector; |
| 1210 | } | 1210 | } |
| 1211 | 1211 | ||
| 1212 | void setup_vector_irq(int cpu) | ||
| 1213 | { | ||
| 1214 | } | ||
| 1215 | |||
| 1216 | static struct irq_chip ioapic_chip; | 1212 | static struct irq_chip ioapic_chip; |
| 1217 | 1213 | ||
| 1218 | #define IOAPIC_AUTO -1 | 1214 | #define IOAPIC_AUTO -1 |
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c index 8269434d1707..61a83b70c18f 100644 --- a/arch/x86/kernel/io_apic_64.c +++ b/arch/x86/kernel/io_apic_64.c | |||
| @@ -101,7 +101,7 @@ int timer_through_8259 __initdata; | |||
| 101 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; | 101 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; |
| 102 | 102 | ||
| 103 | static DEFINE_SPINLOCK(ioapic_lock); | 103 | static DEFINE_SPINLOCK(ioapic_lock); |
| 104 | DEFINE_SPINLOCK(vector_lock); | 104 | static DEFINE_SPINLOCK(vector_lock); |
| 105 | 105 | ||
| 106 | /* | 106 | /* |
| 107 | * # of IRQ routing registers | 107 | * # of IRQ routing registers |
| @@ -697,6 +697,19 @@ static int pin_2_irq(int idx, int apic, int pin) | |||
| 697 | return irq; | 697 | return irq; |
| 698 | } | 698 | } |
| 699 | 699 | ||
| 700 | void lock_vector_lock(void) | ||
| 701 | { | ||
| 702 | /* Used to the online set of cpus does not change | ||
| 703 | * during assign_irq_vector. | ||
| 704 | */ | ||
| 705 | spin_lock(&vector_lock); | ||
| 706 | } | ||
| 707 | |||
| 708 | void unlock_vector_lock(void) | ||
| 709 | { | ||
| 710 | spin_unlock(&vector_lock); | ||
| 711 | } | ||
| 712 | |||
| 700 | static int __assign_irq_vector(int irq, cpumask_t mask) | 713 | static int __assign_irq_vector(int irq, cpumask_t mask) |
| 701 | { | 714 | { |
| 702 | /* | 715 | /* |
| @@ -802,7 +815,7 @@ static void __clear_irq_vector(int irq) | |||
| 802 | cpus_clear(cfg->domain); | 815 | cpus_clear(cfg->domain); |
| 803 | } | 816 | } |
| 804 | 817 | ||
| 805 | static void __setup_vector_irq(int cpu) | 818 | void __setup_vector_irq(int cpu) |
| 806 | { | 819 | { |
| 807 | /* Initialize vector_irq on a new cpu */ | 820 | /* Initialize vector_irq on a new cpu */ |
| 808 | /* This function must be called with vector_lock held */ | 821 | /* This function must be called with vector_lock held */ |
| @@ -825,14 +838,6 @@ static void __setup_vector_irq(int cpu) | |||
| 825 | } | 838 | } |
| 826 | } | 839 | } |
| 827 | 840 | ||
| 828 | void setup_vector_irq(int cpu) | ||
| 829 | { | ||
| 830 | spin_lock(&vector_lock); | ||
| 831 | __setup_vector_irq(smp_processor_id()); | ||
| 832 | spin_unlock(&vector_lock); | ||
| 833 | } | ||
| 834 | |||
| 835 | |||
| 836 | static struct irq_chip ioapic_chip; | 841 | static struct irq_chip ioapic_chip; |
| 837 | 842 | ||
| 838 | static void ioapic_register_intr(int irq, unsigned long trigger) | 843 | static void ioapic_register_intr(int irq, unsigned long trigger) |
diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c index 9fe478d98406..0732adba05ca 100644 --- a/arch/x86/kernel/machine_kexec_32.c +++ b/arch/x86/kernel/machine_kexec_32.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/numa.h> | 13 | #include <linux/numa.h> |
| 14 | #include <linux/ftrace.h> | 14 | #include <linux/ftrace.h> |
| 15 | #include <linux/suspend.h> | ||
| 15 | 16 | ||
| 16 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
| 17 | #include <asm/pgalloc.h> | 18 | #include <asm/pgalloc.h> |
| @@ -78,7 +79,7 @@ static void load_segments(void) | |||
| 78 | /* | 79 | /* |
| 79 | * A architecture hook called to validate the | 80 | * A architecture hook called to validate the |
| 80 | * proposed image and prepare the control pages | 81 | * proposed image and prepare the control pages |
| 81 | * as needed. The pages for KEXEC_CONTROL_CODE_SIZE | 82 | * as needed. The pages for KEXEC_CONTROL_PAGE_SIZE |
| 82 | * have been allocated, but the segments have yet | 83 | * have been allocated, but the segments have yet |
| 83 | * been copied into the kernel. | 84 | * been copied into the kernel. |
| 84 | * | 85 | * |
| @@ -113,6 +114,7 @@ void machine_kexec(struct kimage *image) | |||
| 113 | { | 114 | { |
| 114 | unsigned long page_list[PAGES_NR]; | 115 | unsigned long page_list[PAGES_NR]; |
| 115 | void *control_page; | 116 | void *control_page; |
| 117 | int save_ftrace_enabled; | ||
| 116 | asmlinkage unsigned long | 118 | asmlinkage unsigned long |
| 117 | (*relocate_kernel_ptr)(unsigned long indirection_page, | 119 | (*relocate_kernel_ptr)(unsigned long indirection_page, |
| 118 | unsigned long control_page, | 120 | unsigned long control_page, |
| @@ -120,7 +122,12 @@ void machine_kexec(struct kimage *image) | |||
| 120 | unsigned int has_pae, | 122 | unsigned int has_pae, |
| 121 | unsigned int preserve_context); | 123 | unsigned int preserve_context); |
| 122 | 124 | ||
| 123 | tracer_disable(); | 125 | #ifdef CONFIG_KEXEC_JUMP |
| 126 | if (kexec_image->preserve_context) | ||
| 127 | save_processor_state(); | ||
| 128 | #endif | ||
| 129 | |||
| 130 | save_ftrace_enabled = __ftrace_enabled_save(); | ||
| 124 | 131 | ||
| 125 | /* Interrupts aren't acceptable while we reboot */ | 132 | /* Interrupts aren't acceptable while we reboot */ |
| 126 | local_irq_disable(); | 133 | local_irq_disable(); |
| @@ -138,7 +145,7 @@ void machine_kexec(struct kimage *image) | |||
| 138 | } | 145 | } |
| 139 | 146 | ||
| 140 | control_page = page_address(image->control_code_page); | 147 | control_page = page_address(image->control_code_page); |
| 141 | memcpy(control_page, relocate_kernel, PAGE_SIZE/2); | 148 | memcpy(control_page, relocate_kernel, KEXEC_CONTROL_CODE_MAX_SIZE); |
| 142 | 149 | ||
| 143 | relocate_kernel_ptr = control_page; | 150 | relocate_kernel_ptr = control_page; |
| 144 | page_list[PA_CONTROL_PAGE] = __pa(control_page); | 151 | page_list[PA_CONTROL_PAGE] = __pa(control_page); |
| @@ -178,6 +185,13 @@ void machine_kexec(struct kimage *image) | |||
| 178 | (unsigned long)page_list, | 185 | (unsigned long)page_list, |
| 179 | image->start, cpu_has_pae, | 186 | image->start, cpu_has_pae, |
| 180 | image->preserve_context); | 187 | image->preserve_context); |
| 188 | |||
| 189 | #ifdef CONFIG_KEXEC_JUMP | ||
| 190 | if (kexec_image->preserve_context) | ||
| 191 | restore_processor_state(); | ||
| 192 | #endif | ||
| 193 | |||
| 194 | __ftrace_enabled_restore(save_ftrace_enabled); | ||
| 181 | } | 195 | } |
| 182 | 196 | ||
| 183 | void arch_crash_save_vmcoreinfo(void) | 197 | void arch_crash_save_vmcoreinfo(void) |
diff --git a/arch/x86/kernel/mfgpt_32.c b/arch/x86/kernel/mfgpt_32.c index 07c0f828f488..3b599518c322 100644 --- a/arch/x86/kernel/mfgpt_32.c +++ b/arch/x86/kernel/mfgpt_32.c | |||
| @@ -33,6 +33,8 @@ | |||
| 33 | #include <linux/module.h> | 33 | #include <linux/module.h> |
| 34 | #include <asm/geode.h> | 34 | #include <asm/geode.h> |
| 35 | 35 | ||
| 36 | #define MFGPT_DEFAULT_IRQ 7 | ||
| 37 | |||
| 36 | static struct mfgpt_timer_t { | 38 | static struct mfgpt_timer_t { |
| 37 | unsigned int avail:1; | 39 | unsigned int avail:1; |
| 38 | } mfgpt_timers[MFGPT_MAX_TIMERS]; | 40 | } mfgpt_timers[MFGPT_MAX_TIMERS]; |
| @@ -157,29 +159,48 @@ int geode_mfgpt_toggle_event(int timer, int cmp, int event, int enable) | |||
| 157 | } | 159 | } |
| 158 | EXPORT_SYMBOL_GPL(geode_mfgpt_toggle_event); | 160 | EXPORT_SYMBOL_GPL(geode_mfgpt_toggle_event); |
| 159 | 161 | ||
| 160 | int geode_mfgpt_set_irq(int timer, int cmp, int irq, int enable) | 162 | int geode_mfgpt_set_irq(int timer, int cmp, int *irq, int enable) |
| 161 | { | 163 | { |
| 162 | u32 val, dummy; | 164 | u32 zsel, lpc, dummy; |
| 163 | int offset; | 165 | int shift; |
| 164 | 166 | ||
| 165 | if (timer < 0 || timer >= MFGPT_MAX_TIMERS) | 167 | if (timer < 0 || timer >= MFGPT_MAX_TIMERS) |
| 166 | return -EIO; | 168 | return -EIO; |
| 167 | 169 | ||
| 168 | if (geode_mfgpt_toggle_event(timer, cmp, MFGPT_EVENT_IRQ, enable)) | 170 | /* |
| 171 | * Unfortunately, MFGPTs come in pairs sharing their IRQ lines. If VSA | ||
| 172 | * is using the same CMP of the timer's Siamese twin, the IRQ is set to | ||
| 173 | * 2, and we mustn't use nor change it. | ||
| 174 | * XXX: Likewise, 2 Linux drivers might clash if the 2nd overwrites the | ||
| 175 | * IRQ of the 1st. This can only happen if forcing an IRQ, calling this | ||
| 176 | * with *irq==0 is safe. Currently there _are_ no 2 drivers. | ||
| 177 | */ | ||
| 178 | rdmsr(MSR_PIC_ZSEL_LOW, zsel, dummy); | ||
| 179 | shift = ((cmp == MFGPT_CMP1 ? 0 : 4) + timer % 4) * 4; | ||
| 180 | if (((zsel >> shift) & 0xF) == 2) | ||
| 169 | return -EIO; | 181 | return -EIO; |
| 170 | 182 | ||
| 171 | rdmsr(MSR_PIC_ZSEL_LOW, val, dummy); | 183 | /* Choose IRQ: if none supplied, keep IRQ already set or use default */ |
| 184 | if (!*irq) | ||
| 185 | *irq = (zsel >> shift) & 0xF; | ||
| 186 | if (!*irq) | ||
| 187 | *irq = MFGPT_DEFAULT_IRQ; | ||
| 172 | 188 | ||
| 173 | offset = (timer % 4) * 4; | 189 | /* Can't use IRQ if it's 0 (=disabled), 2, or routed to LPC */ |
| 174 | 190 | if (*irq < 1 || *irq == 2 || *irq > 15) | |
| 175 | val &= ~((0xF << offset) | (0xF << (offset + 16))); | 191 | return -EIO; |
| 192 | rdmsr(MSR_PIC_IRQM_LPC, lpc, dummy); | ||
| 193 | if (lpc & (1 << *irq)) | ||
| 194 | return -EIO; | ||
| 176 | 195 | ||
| 196 | /* All chosen and checked - go for it */ | ||
| 197 | if (geode_mfgpt_toggle_event(timer, cmp, MFGPT_EVENT_IRQ, enable)) | ||
| 198 | return -EIO; | ||
| 177 | if (enable) { | 199 | if (enable) { |
| 178 | val |= (irq & 0x0F) << (offset); | 200 | zsel = (zsel & ~(0xF << shift)) | (*irq << shift); |
| 179 | val |= (irq & 0x0F) << (offset + 16); | 201 | wrmsr(MSR_PIC_ZSEL_LOW, zsel, dummy); |
| 180 | } | 202 | } |
| 181 | 203 | ||
| 182 | wrmsr(MSR_PIC_ZSEL_LOW, val, dummy); | ||
| 183 | return 0; | 204 | return 0; |
| 184 | } | 205 | } |
| 185 | 206 | ||
| @@ -242,7 +263,7 @@ EXPORT_SYMBOL_GPL(geode_mfgpt_alloc_timer); | |||
| 242 | static unsigned int mfgpt_tick_mode = CLOCK_EVT_MODE_SHUTDOWN; | 263 | static unsigned int mfgpt_tick_mode = CLOCK_EVT_MODE_SHUTDOWN; |
| 243 | static u16 mfgpt_event_clock; | 264 | static u16 mfgpt_event_clock; |
| 244 | 265 | ||
| 245 | static int irq = 7; | 266 | static int irq; |
| 246 | static int __init mfgpt_setup(char *str) | 267 | static int __init mfgpt_setup(char *str) |
| 247 | { | 268 | { |
| 248 | get_option(&str, &irq); | 269 | get_option(&str, &irq); |
| @@ -346,7 +367,7 @@ int __init mfgpt_timer_setup(void) | |||
| 346 | mfgpt_event_clock = timer; | 367 | mfgpt_event_clock = timer; |
| 347 | 368 | ||
| 348 | /* Set up the IRQ on the MFGPT side */ | 369 | /* Set up the IRQ on the MFGPT side */ |
| 349 | if (geode_mfgpt_setup_irq(mfgpt_event_clock, MFGPT_CMP2, irq)) { | 370 | if (geode_mfgpt_setup_irq(mfgpt_event_clock, MFGPT_CMP2, &irq)) { |
| 350 | printk(KERN_ERR "mfgpt-timer: Could not set up IRQ %d\n", irq); | 371 | printk(KERN_ERR "mfgpt-timer: Could not set up IRQ %d\n", irq); |
| 351 | return -EIO; | 372 | return -EIO; |
| 352 | } | 373 | } |
| @@ -374,13 +395,14 @@ int __init mfgpt_timer_setup(void) | |||
| 374 | &mfgpt_clockevent); | 395 | &mfgpt_clockevent); |
| 375 | 396 | ||
| 376 | printk(KERN_INFO | 397 | printk(KERN_INFO |
| 377 | "mfgpt-timer: registering the MFGPT timer as a clock event.\n"); | 398 | "mfgpt-timer: Registering MFGPT timer %d as a clock event, using IRQ %d\n", |
| 399 | timer, irq); | ||
| 378 | clockevents_register_device(&mfgpt_clockevent); | 400 | clockevents_register_device(&mfgpt_clockevent); |
| 379 | 401 | ||
| 380 | return 0; | 402 | return 0; |
| 381 | 403 | ||
| 382 | err: | 404 | err: |
| 383 | geode_mfgpt_release_irq(mfgpt_event_clock, MFGPT_CMP2, irq); | 405 | geode_mfgpt_release_irq(mfgpt_event_clock, MFGPT_CMP2, &irq); |
| 384 | printk(KERN_ERR | 406 | printk(KERN_ERR |
| 385 | "mfgpt-timer: Unable to set up the MFGPT clock source\n"); | 407 | "mfgpt-timer: Unable to set up the MFGPT clock source\n"); |
| 386 | return -EIO; | 408 | return -EIO; |
diff --git a/arch/x86/kernel/mmconf-fam10h_64.c b/arch/x86/kernel/mmconf-fam10h_64.c index fdfdc550b366..efc2f361fe85 100644 --- a/arch/x86/kernel/mmconf-fam10h_64.c +++ b/arch/x86/kernel/mmconf-fam10h_64.c | |||
| @@ -238,7 +238,7 @@ static struct dmi_system_id __devinitdata mmconf_dmi_table[] = { | |||
| 238 | {} | 238 | {} |
| 239 | }; | 239 | }; |
| 240 | 240 | ||
| 241 | void __init check_enable_amd_mmconf_dmi(void) | 241 | void __cpuinit check_enable_amd_mmconf_dmi(void) |
| 242 | { | 242 | { |
| 243 | dmi_check_system(mmconf_dmi_table); | 243 | dmi_check_system(mmconf_dmi_table); |
| 244 | } | 244 | } |
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index 6ae005ccaed8..b3fb430725cb 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c | |||
| @@ -49,7 +49,7 @@ static int __init mpf_checksum(unsigned char *mp, int len) | |||
| 49 | return sum & 0xFF; | 49 | return sum & 0xFF; |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | static void __cpuinit MP_processor_info(struct mpc_config_processor *m) | 52 | static void __init MP_processor_info(struct mpc_config_processor *m) |
| 53 | { | 53 | { |
| 54 | int apicid; | 54 | int apicid; |
| 55 | char *bootup_cpu = ""; | 55 | char *bootup_cpu = ""; |
| @@ -83,7 +83,7 @@ static void __init MP_bus_info(struct mpc_config_bus *m) | |||
| 83 | if (x86_quirks->mpc_oem_bus_info) | 83 | if (x86_quirks->mpc_oem_bus_info) |
| 84 | x86_quirks->mpc_oem_bus_info(m, str); | 84 | x86_quirks->mpc_oem_bus_info(m, str); |
| 85 | else | 85 | else |
| 86 | printk(KERN_INFO "Bus #%d is %s\n", m->mpc_busid, str); | 86 | apic_printk(APIC_VERBOSE, "Bus #%d is %s\n", m->mpc_busid, str); |
| 87 | 87 | ||
| 88 | #if MAX_MP_BUSSES < 256 | 88 | #if MAX_MP_BUSSES < 256 |
| 89 | if (m->mpc_busid >= MAX_MP_BUSSES) { | 89 | if (m->mpc_busid >= MAX_MP_BUSSES) { |
| @@ -154,7 +154,7 @@ static void __init MP_ioapic_info(struct mpc_config_ioapic *m) | |||
| 154 | 154 | ||
| 155 | static void print_MP_intsrc_info(struct mpc_config_intsrc *m) | 155 | static void print_MP_intsrc_info(struct mpc_config_intsrc *m) |
| 156 | { | 156 | { |
| 157 | printk(KERN_CONT "Int: type %d, pol %d, trig %d, bus %02x," | 157 | apic_printk(APIC_VERBOSE, "Int: type %d, pol %d, trig %d, bus %02x," |
| 158 | " IRQ %02x, APIC ID %x, APIC INT %02x\n", | 158 | " IRQ %02x, APIC ID %x, APIC INT %02x\n", |
| 159 | m->mpc_irqtype, m->mpc_irqflag & 3, | 159 | m->mpc_irqtype, m->mpc_irqflag & 3, |
| 160 | (m->mpc_irqflag >> 2) & 3, m->mpc_srcbus, | 160 | (m->mpc_irqflag >> 2) & 3, m->mpc_srcbus, |
| @@ -163,7 +163,7 @@ static void print_MP_intsrc_info(struct mpc_config_intsrc *m) | |||
| 163 | 163 | ||
| 164 | static void __init print_mp_irq_info(struct mp_config_intsrc *mp_irq) | 164 | static void __init print_mp_irq_info(struct mp_config_intsrc *mp_irq) |
| 165 | { | 165 | { |
| 166 | printk(KERN_CONT "Int: type %d, pol %d, trig %d, bus %02x," | 166 | apic_printk(APIC_VERBOSE, "Int: type %d, pol %d, trig %d, bus %02x," |
| 167 | " IRQ %02x, APIC ID %x, APIC INT %02x\n", | 167 | " IRQ %02x, APIC ID %x, APIC INT %02x\n", |
| 168 | mp_irq->mp_irqtype, mp_irq->mp_irqflag & 3, | 168 | mp_irq->mp_irqtype, mp_irq->mp_irqflag & 3, |
| 169 | (mp_irq->mp_irqflag >> 2) & 3, mp_irq->mp_srcbus, | 169 | (mp_irq->mp_irqflag >> 2) & 3, mp_irq->mp_srcbus, |
| @@ -235,7 +235,7 @@ static void __init MP_intsrc_info(struct mpc_config_intsrc *m) | |||
| 235 | 235 | ||
| 236 | static void __init MP_lintsrc_info(struct mpc_config_lintsrc *m) | 236 | static void __init MP_lintsrc_info(struct mpc_config_lintsrc *m) |
| 237 | { | 237 | { |
| 238 | printk(KERN_INFO "Lint: type %d, pol %d, trig %d, bus %02x," | 238 | apic_printk(APIC_VERBOSE, "Lint: type %d, pol %d, trig %d, bus %02x," |
| 239 | " IRQ %02x, APIC ID %x, APIC LINT %02x\n", | 239 | " IRQ %02x, APIC ID %x, APIC LINT %02x\n", |
| 240 | m->mpc_irqtype, m->mpc_irqflag & 3, | 240 | m->mpc_irqtype, m->mpc_irqflag & 3, |
| 241 | (m->mpc_irqflag >> 2) & 3, m->mpc_srcbusid, | 241 | (m->mpc_irqflag >> 2) & 3, m->mpc_srcbusid, |
| @@ -484,7 +484,7 @@ static void __init construct_default_ioirq_mptable(int mpc_default_type) | |||
| 484 | } | 484 | } |
| 485 | 485 | ||
| 486 | 486 | ||
| 487 | static void construct_ioapic_table(int mpc_default_type) | 487 | static void __init construct_ioapic_table(int mpc_default_type) |
| 488 | { | 488 | { |
| 489 | struct mpc_config_ioapic ioapic; | 489 | struct mpc_config_ioapic ioapic; |
| 490 | struct mpc_config_bus bus; | 490 | struct mpc_config_bus bus; |
| @@ -529,7 +529,7 @@ static void construct_ioapic_table(int mpc_default_type) | |||
| 529 | construct_default_ioirq_mptable(mpc_default_type); | 529 | construct_default_ioirq_mptable(mpc_default_type); |
| 530 | } | 530 | } |
| 531 | #else | 531 | #else |
| 532 | static inline void construct_ioapic_table(int mpc_default_type) { } | 532 | static inline void __init construct_ioapic_table(int mpc_default_type) { } |
| 533 | #endif | 533 | #endif |
| 534 | 534 | ||
| 535 | static inline void __init construct_default_ISA_mptable(int mpc_default_type) | 535 | static inline void __init construct_default_ISA_mptable(int mpc_default_type) |
| @@ -695,7 +695,8 @@ static int __init smp_scan_config(unsigned long base, unsigned long length, | |||
| 695 | unsigned int *bp = phys_to_virt(base); | 695 | unsigned int *bp = phys_to_virt(base); |
| 696 | struct intel_mp_floating *mpf; | 696 | struct intel_mp_floating *mpf; |
| 697 | 697 | ||
| 698 | printk(KERN_DEBUG "Scan SMP from %p for %ld bytes.\n", bp, length); | 698 | apic_printk(APIC_VERBOSE, "Scan SMP from %p for %ld bytes.\n", |
| 699 | bp, length); | ||
| 699 | BUILD_BUG_ON(sizeof(*mpf) != 16); | 700 | BUILD_BUG_ON(sizeof(*mpf) != 16); |
| 700 | 701 | ||
| 701 | while (length > 0) { | 702 | while (length > 0) { |
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c index 9fd809552447..2e2af5d18191 100644 --- a/arch/x86/kernel/msr.c +++ b/arch/x86/kernel/msr.c | |||
| @@ -72,21 +72,28 @@ static ssize_t msr_read(struct file *file, char __user *buf, | |||
| 72 | u32 data[2]; | 72 | u32 data[2]; |
| 73 | u32 reg = *ppos; | 73 | u32 reg = *ppos; |
| 74 | int cpu = iminor(file->f_path.dentry->d_inode); | 74 | int cpu = iminor(file->f_path.dentry->d_inode); |
| 75 | int err; | 75 | int err = 0; |
| 76 | ssize_t bytes = 0; | ||
| 76 | 77 | ||
| 77 | if (count % 8) | 78 | if (count % 8) |
| 78 | return -EINVAL; /* Invalid chunk size */ | 79 | return -EINVAL; /* Invalid chunk size */ |
| 79 | 80 | ||
| 80 | for (; count; count -= 8) { | 81 | for (; count; count -= 8) { |
| 81 | err = rdmsr_safe_on_cpu(cpu, reg, &data[0], &data[1]); | 82 | err = rdmsr_safe_on_cpu(cpu, reg, &data[0], &data[1]); |
| 82 | if (err) | 83 | if (err) { |
| 83 | return -EIO; | 84 | if (err == -EFAULT) /* Fix idiotic error code */ |
| 84 | if (copy_to_user(tmp, &data, 8)) | 85 | err = -EIO; |
| 85 | return -EFAULT; | 86 | break; |
| 87 | } | ||
| 88 | if (copy_to_user(tmp, &data, 8)) { | ||
| 89 | err = -EFAULT; | ||
| 90 | break; | ||
| 91 | } | ||
| 86 | tmp += 2; | 92 | tmp += 2; |
| 93 | bytes += 8; | ||
| 87 | } | 94 | } |
| 88 | 95 | ||
| 89 | return ((char __user *)tmp) - buf; | 96 | return bytes ? bytes : err; |
| 90 | } | 97 | } |
| 91 | 98 | ||
| 92 | static ssize_t msr_write(struct file *file, const char __user *buf, | 99 | static ssize_t msr_write(struct file *file, const char __user *buf, |
| @@ -96,21 +103,28 @@ static ssize_t msr_write(struct file *file, const char __user *buf, | |||
| 96 | u32 data[2]; | 103 | u32 data[2]; |
| 97 | u32 reg = *ppos; | 104 | u32 reg = *ppos; |
| 98 | int cpu = iminor(file->f_path.dentry->d_inode); | 105 | int cpu = iminor(file->f_path.dentry->d_inode); |
| 99 | int err; | 106 | int err = 0; |
| 107 | ssize_t bytes = 0; | ||
| 100 | 108 | ||
| 101 | if (count % 8) | 109 | if (count % 8) |
| 102 | return -EINVAL; /* Invalid chunk size */ | 110 | return -EINVAL; /* Invalid chunk size */ |
| 103 | 111 | ||
| 104 | for (; count; count -= 8) { | 112 | for (; count; count -= 8) { |
| 105 | if (copy_from_user(&data, tmp, 8)) | 113 | if (copy_from_user(&data, tmp, 8)) { |
| 106 | return -EFAULT; | 114 | err = -EFAULT; |
| 115 | break; | ||
| 116 | } | ||
| 107 | err = wrmsr_safe_on_cpu(cpu, reg, data[0], data[1]); | 117 | err = wrmsr_safe_on_cpu(cpu, reg, data[0], data[1]); |
| 108 | if (err) | 118 | if (err) { |
| 109 | return -EIO; | 119 | if (err == -EFAULT) /* Fix idiotic error code */ |
| 120 | err = -EIO; | ||
| 121 | break; | ||
| 122 | } | ||
| 110 | tmp += 2; | 123 | tmp += 2; |
| 124 | bytes += 8; | ||
| 111 | } | 125 | } |
| 112 | 126 | ||
| 113 | return ((char __user *)tmp) - buf; | 127 | return bytes ? bytes : err; |
| 114 | } | 128 | } |
| 115 | 129 | ||
| 116 | static int msr_open(struct inode *inode, struct file *file) | 130 | static int msr_open(struct inode *inode, struct file *file) |
| @@ -131,7 +145,7 @@ static int msr_open(struct inode *inode, struct file *file) | |||
| 131 | ret = -EIO; /* MSR not supported */ | 145 | ret = -EIO; /* MSR not supported */ |
| 132 | out: | 146 | out: |
| 133 | unlock_kernel(); | 147 | unlock_kernel(); |
| 134 | return 0; | 148 | return ret; |
| 135 | } | 149 | } |
| 136 | 150 | ||
| 137 | /* | 151 | /* |
diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c index ac6d51222e7d..abb78a2cc4ad 100644 --- a/arch/x86/kernel/nmi.c +++ b/arch/x86/kernel/nmi.c | |||
| @@ -114,6 +114,23 @@ static __init void nmi_cpu_busy(void *data) | |||
| 114 | } | 114 | } |
| 115 | #endif | 115 | #endif |
| 116 | 116 | ||
| 117 | static void report_broken_nmi(int cpu, int *prev_nmi_count) | ||
| 118 | { | ||
| 119 | printk(KERN_CONT "\n"); | ||
| 120 | |||
| 121 | printk(KERN_WARNING | ||
| 122 | "WARNING: CPU#%d: NMI appears to be stuck (%d->%d)!\n", | ||
| 123 | cpu, prev_nmi_count[cpu], get_nmi_count(cpu)); | ||
| 124 | |||
| 125 | printk(KERN_WARNING | ||
| 126 | "Please report this to bugzilla.kernel.org,\n"); | ||
| 127 | printk(KERN_WARNING | ||
| 128 | "and attach the output of the 'dmesg' command.\n"); | ||
| 129 | |||
| 130 | per_cpu(wd_enabled, cpu) = 0; | ||
| 131 | atomic_dec(&nmi_active); | ||
| 132 | } | ||
| 133 | |||
| 117 | int __init check_nmi_watchdog(void) | 134 | int __init check_nmi_watchdog(void) |
| 118 | { | 135 | { |
| 119 | unsigned int *prev_nmi_count; | 136 | unsigned int *prev_nmi_count; |
| @@ -141,15 +158,8 @@ int __init check_nmi_watchdog(void) | |||
| 141 | for_each_online_cpu(cpu) { | 158 | for_each_online_cpu(cpu) { |
| 142 | if (!per_cpu(wd_enabled, cpu)) | 159 | if (!per_cpu(wd_enabled, cpu)) |
| 143 | continue; | 160 | continue; |
| 144 | if (get_nmi_count(cpu) - prev_nmi_count[cpu] <= 5) { | 161 | if (get_nmi_count(cpu) - prev_nmi_count[cpu] <= 5) |
| 145 | printk(KERN_WARNING "WARNING: CPU#%d: NMI " | 162 | report_broken_nmi(cpu, prev_nmi_count); |
| 146 | "appears to be stuck (%d->%d)!\n", | ||
| 147 | cpu, | ||
| 148 | prev_nmi_count[cpu], | ||
| 149 | get_nmi_count(cpu)); | ||
| 150 | per_cpu(wd_enabled, cpu) = 0; | ||
| 151 | atomic_dec(&nmi_active); | ||
| 152 | } | ||
| 153 | } | 163 | } |
| 154 | endflag = 1; | 164 | endflag = 1; |
| 155 | if (!atomic_read(&nmi_active)) { | 165 | if (!atomic_read(&nmi_active)) { |
diff --git a/arch/x86/kernel/numaq_32.c b/arch/x86/kernel/numaq_32.c index b8c45610b20a..eecc8c18f010 100644 --- a/arch/x86/kernel/numaq_32.c +++ b/arch/x86/kernel/numaq_32.c | |||
| @@ -73,7 +73,7 @@ static void __init smp_dump_qct(void) | |||
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | 75 | ||
| 76 | void __init numaq_tsc_disable(void) | 76 | void __cpuinit numaq_tsc_disable(void) |
| 77 | { | 77 | { |
| 78 | if (!found_numaq) | 78 | if (!found_numaq) |
| 79 | return; | 79 | return; |
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 94da4d52d798..300da17e61cb 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c | |||
| @@ -471,7 +471,7 @@ struct pv_lock_ops pv_lock_ops = { | |||
| 471 | .spin_unlock = __ticket_spin_unlock, | 471 | .spin_unlock = __ticket_spin_unlock, |
| 472 | #endif | 472 | #endif |
| 473 | }; | 473 | }; |
| 474 | EXPORT_SYMBOL_GPL(pv_lock_ops); | 474 | EXPORT_SYMBOL(pv_lock_ops); |
| 475 | 475 | ||
| 476 | EXPORT_SYMBOL_GPL(pv_time_ops); | 476 | EXPORT_SYMBOL_GPL(pv_time_ops); |
| 477 | EXPORT_SYMBOL (pv_cpu_ops); | 477 | EXPORT_SYMBOL (pv_cpu_ops); |
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c index b67a4b1d4eae..dcdac6c826e9 100644 --- a/arch/x86/kernel/pci-calgary_64.c +++ b/arch/x86/kernel/pci-calgary_64.c | |||
| @@ -343,9 +343,8 @@ static void iommu_free(struct iommu_table *tbl, dma_addr_t dma_addr, | |||
| 343 | /* were we called with bad_dma_address? */ | 343 | /* were we called with bad_dma_address? */ |
| 344 | badend = bad_dma_address + (EMERGENCY_PAGES * PAGE_SIZE); | 344 | badend = bad_dma_address + (EMERGENCY_PAGES * PAGE_SIZE); |
| 345 | if (unlikely((dma_addr >= bad_dma_address) && (dma_addr < badend))) { | 345 | if (unlikely((dma_addr >= bad_dma_address) && (dma_addr < badend))) { |
| 346 | printk(KERN_ERR "Calgary: driver tried unmapping bad DMA " | 346 | WARN(1, KERN_ERR "Calgary: driver tried unmapping bad DMA " |
| 347 | "address 0x%Lx\n", dma_addr); | 347 | "address 0x%Lx\n", dma_addr); |
| 348 | WARN_ON(1); | ||
| 349 | return; | 348 | return; |
| 350 | } | 349 | } |
| 351 | 350 | ||
| @@ -1269,13 +1268,15 @@ static inline int __init determine_tce_table_size(u64 ram) | |||
| 1269 | static int __init build_detail_arrays(void) | 1268 | static int __init build_detail_arrays(void) |
| 1270 | { | 1269 | { |
| 1271 | unsigned long ptr; | 1270 | unsigned long ptr; |
| 1272 | int i, scal_detail_size, rio_detail_size; | 1271 | unsigned numnodes, i; |
| 1272 | int scal_detail_size, rio_detail_size; | ||
| 1273 | 1273 | ||
| 1274 | if (rio_table_hdr->num_scal_dev > MAX_NUMNODES){ | 1274 | numnodes = rio_table_hdr->num_scal_dev; |
| 1275 | if (numnodes > MAX_NUMNODES){ | ||
| 1275 | printk(KERN_WARNING | 1276 | printk(KERN_WARNING |
| 1276 | "Calgary: MAX_NUMNODES too low! Defined as %d, " | 1277 | "Calgary: MAX_NUMNODES too low! Defined as %d, " |
| 1277 | "but system has %d nodes.\n", | 1278 | "but system has %d nodes.\n", |
| 1278 | MAX_NUMNODES, rio_table_hdr->num_scal_dev); | 1279 | MAX_NUMNODES, numnodes); |
| 1279 | return -ENODEV; | 1280 | return -ENODEV; |
| 1280 | } | 1281 | } |
| 1281 | 1282 | ||
| @@ -1296,8 +1297,7 @@ static int __init build_detail_arrays(void) | |||
| 1296 | } | 1297 | } |
| 1297 | 1298 | ||
| 1298 | ptr = ((unsigned long)rio_table_hdr) + 3; | 1299 | ptr = ((unsigned long)rio_table_hdr) + 3; |
| 1299 | for (i = 0; i < rio_table_hdr->num_scal_dev; | 1300 | for (i = 0; i < numnodes; i++, ptr += scal_detail_size) |
| 1300 | i++, ptr += scal_detail_size) | ||
| 1301 | scal_devs[i] = (struct scal_detail *)ptr; | 1301 | scal_devs[i] = (struct scal_detail *)ptr; |
| 1302 | 1302 | ||
| 1303 | for (i = 0; i < rio_table_hdr->num_rio_dev; | 1303 | for (i = 0; i < rio_table_hdr->num_rio_dev; |
| @@ -1350,7 +1350,7 @@ static void calgary_init_bitmap_from_tce_table(struct iommu_table *tbl) | |||
| 1350 | * Function for kdump case. Get the tce tables from first kernel | 1350 | * Function for kdump case. Get the tce tables from first kernel |
| 1351 | * by reading the contents of the base adress register of calgary iommu | 1351 | * by reading the contents of the base adress register of calgary iommu |
| 1352 | */ | 1352 | */ |
| 1353 | static void get_tce_space_from_tar() | 1353 | static void __init get_tce_space_from_tar(void) |
| 1354 | { | 1354 | { |
| 1355 | int bus; | 1355 | int bus; |
| 1356 | void __iomem *target; | 1356 | void __iomem *target; |
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 53bc653ed5ca..3b7a1ddcc0bc 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
| @@ -95,7 +95,6 @@ static inline void play_dead(void) | |||
| 95 | { | 95 | { |
| 96 | /* This must be done before dead CPU ack */ | 96 | /* This must be done before dead CPU ack */ |
| 97 | cpu_exit_clear(); | 97 | cpu_exit_clear(); |
| 98 | wbinvd(); | ||
| 99 | mb(); | 98 | mb(); |
| 100 | /* Ack it */ | 99 | /* Ack it */ |
| 101 | __get_cpu_var(cpu_state) = CPU_DEAD; | 100 | __get_cpu_var(cpu_state) = CPU_DEAD; |
| @@ -104,8 +103,8 @@ static inline void play_dead(void) | |||
| 104 | * With physical CPU hotplug, we should halt the cpu | 103 | * With physical CPU hotplug, we should halt the cpu |
| 105 | */ | 104 | */ |
| 106 | local_irq_disable(); | 105 | local_irq_disable(); |
| 107 | while (1) | 106 | /* mask all interrupts, flush any and all caches, and halt */ |
| 108 | halt(); | 107 | wbinvd_halt(); |
| 109 | } | 108 | } |
| 110 | #else | 109 | #else |
| 111 | static inline void play_dead(void) | 110 | static inline void play_dead(void) |
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 3fb62a7d9a16..71553b664e2a 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
| @@ -93,14 +93,13 @@ DECLARE_PER_CPU(int, cpu_state); | |||
| 93 | static inline void play_dead(void) | 93 | static inline void play_dead(void) |
| 94 | { | 94 | { |
| 95 | idle_task_exit(); | 95 | idle_task_exit(); |
| 96 | wbinvd(); | ||
| 97 | mb(); | 96 | mb(); |
| 98 | /* Ack it */ | 97 | /* Ack it */ |
| 99 | __get_cpu_var(cpu_state) = CPU_DEAD; | 98 | __get_cpu_var(cpu_state) = CPU_DEAD; |
| 100 | 99 | ||
| 101 | local_irq_disable(); | 100 | local_irq_disable(); |
| 102 | while (1) | 101 | /* mask all interrupts, flush any and all caches, and halt */ |
| 103 | halt(); | 102 | wbinvd_halt(); |
| 104 | } | 103 | } |
| 105 | #else | 104 | #else |
| 106 | static inline void play_dead(void) | 105 | static inline void play_dead(void) |
diff --git a/arch/x86/kernel/relocate_kernel_32.S b/arch/x86/kernel/relocate_kernel_32.S index 703310a99023..6f50664b2ba5 100644 --- a/arch/x86/kernel/relocate_kernel_32.S +++ b/arch/x86/kernel/relocate_kernel_32.S | |||
| @@ -20,10 +20,11 @@ | |||
| 20 | #define PAGE_ATTR (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY) | 20 | #define PAGE_ATTR (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY) |
| 21 | #define PAE_PGD_ATTR (_PAGE_PRESENT) | 21 | #define PAE_PGD_ATTR (_PAGE_PRESENT) |
| 22 | 22 | ||
| 23 | /* control_page + PAGE_SIZE/2 ~ control_page + PAGE_SIZE * 3/4 are | 23 | /* control_page + KEXEC_CONTROL_CODE_MAX_SIZE |
| 24 | * used to save some data for jumping back | 24 | * ~ control_page + PAGE_SIZE are used as data storage and stack for |
| 25 | * jumping back | ||
| 25 | */ | 26 | */ |
| 26 | #define DATA(offset) (PAGE_SIZE/2+(offset)) | 27 | #define DATA(offset) (KEXEC_CONTROL_CODE_MAX_SIZE+(offset)) |
| 27 | 28 | ||
| 28 | /* Minimal CPU state */ | 29 | /* Minimal CPU state */ |
| 29 | #define ESP DATA(0x0) | 30 | #define ESP DATA(0x0) |
| @@ -376,3 +377,6 @@ swap_pages: | |||
| 376 | popl %ebx | 377 | popl %ebx |
| 377 | popl %ebp | 378 | popl %ebp |
| 378 | ret | 379 | ret |
| 380 | |||
| 381 | .globl kexec_control_code_size | ||
| 382 | .set kexec_control_code_size, . - relocate_kernel | ||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 2d888586385d..362d4e7f2d38 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
| @@ -445,7 +445,7 @@ static void __init reserve_early_setup_data(void) | |||
| 445 | * @size: Size of the crashkernel memory to reserve. | 445 | * @size: Size of the crashkernel memory to reserve. |
| 446 | * Returns the base address on success, and -1ULL on failure. | 446 | * Returns the base address on success, and -1ULL on failure. |
| 447 | */ | 447 | */ |
| 448 | unsigned long long find_and_reserve_crashkernel(unsigned long long size) | 448 | unsigned long long __init find_and_reserve_crashkernel(unsigned long long size) |
| 449 | { | 449 | { |
| 450 | const unsigned long long alignment = 16<<20; /* 16M */ | 450 | const unsigned long long alignment = 16<<20; /* 16M */ |
| 451 | unsigned long long start = 0LL; | 451 | unsigned long long start = 0LL; |
| @@ -670,6 +670,14 @@ void __init setup_arch(char **cmdline_p) | |||
| 670 | 670 | ||
| 671 | parse_early_param(); | 671 | parse_early_param(); |
| 672 | 672 | ||
| 673 | #if defined(CONFIG_VMI) && defined(CONFIG_X86_32) | ||
| 674 | /* | ||
| 675 | * Must be before kernel pagetables are setup | ||
| 676 | * or fixmap area is touched. | ||
| 677 | */ | ||
| 678 | vmi_init(); | ||
| 679 | #endif | ||
| 680 | |||
| 673 | /* after early param, so could get panic from serial */ | 681 | /* after early param, so could get panic from serial */ |
| 674 | reserve_early_setup_data(); | 682 | reserve_early_setup_data(); |
| 675 | 683 | ||
| @@ -817,14 +825,6 @@ void __init setup_arch(char **cmdline_p) | |||
| 817 | kvmclock_init(); | 825 | kvmclock_init(); |
| 818 | #endif | 826 | #endif |
| 819 | 827 | ||
| 820 | #if defined(CONFIG_VMI) && defined(CONFIG_X86_32) | ||
| 821 | /* | ||
| 822 | * Must be after max_low_pfn is determined, and before kernel | ||
| 823 | * pagetables are setup. | ||
| 824 | */ | ||
| 825 | vmi_init(); | ||
| 826 | #endif | ||
| 827 | |||
| 828 | paravirt_pagetable_setup_start(swapper_pg_dir); | 828 | paravirt_pagetable_setup_start(swapper_pg_dir); |
| 829 | paging_init(); | 829 | paging_init(); |
| 830 | paravirt_pagetable_setup_done(swapper_pg_dir); | 830 | paravirt_pagetable_setup_done(swapper_pg_dir); |
| @@ -861,12 +861,6 @@ void __init setup_arch(char **cmdline_p) | |||
| 861 | init_apic_mappings(); | 861 | init_apic_mappings(); |
| 862 | ioapic_init_mappings(); | 862 | ioapic_init_mappings(); |
| 863 | 863 | ||
| 864 | #if defined(CONFIG_SMP) && defined(CONFIG_X86_PC) && defined(CONFIG_X86_32) | ||
| 865 | if (def_to_bigsmp) | ||
| 866 | printk(KERN_WARNING "More than 8 CPUs detected and " | ||
| 867 | "CONFIG_X86_PC cannot handle it.\nUse " | ||
| 868 | "CONFIG_X86_GENERICARCH or CONFIG_X86_BIGSMP.\n"); | ||
| 869 | #endif | ||
| 870 | kvm_guest_init(); | 864 | kvm_guest_init(); |
| 871 | 865 | ||
| 872 | e820_reserve_resources(); | 866 | e820_reserve_resources(); |
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c index b45ef8ddd651..ca316b5b742c 100644 --- a/arch/x86/kernel/signal_64.c +++ b/arch/x86/kernel/signal_64.c | |||
| @@ -104,7 +104,16 @@ static inline int restore_i387(struct _fpstate __user *buf) | |||
| 104 | clts(); | 104 | clts(); |
| 105 | task_thread_info(current)->status |= TS_USEDFPU; | 105 | task_thread_info(current)->status |= TS_USEDFPU; |
| 106 | } | 106 | } |
| 107 | return restore_fpu_checking((__force struct i387_fxsave_struct *)buf); | 107 | err = restore_fpu_checking((__force struct i387_fxsave_struct *)buf); |
| 108 | if (unlikely(err)) { | ||
| 109 | /* | ||
| 110 | * Encountered an error while doing the restore from the | ||
| 111 | * user buffer, clear the fpu state. | ||
| 112 | */ | ||
| 113 | clear_fpu(tsk); | ||
| 114 | clear_used_math(); | ||
| 115 | } | ||
| 116 | return err; | ||
| 108 | } | 117 | } |
| 109 | 118 | ||
| 110 | /* | 119 | /* |
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 332512767f4f..7985c5b3f916 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
| @@ -326,12 +326,16 @@ static void __cpuinit start_secondary(void *unused) | |||
| 326 | * for which cpus receive the IPI. Holding this | 326 | * for which cpus receive the IPI. Holding this |
| 327 | * lock helps us to not include this cpu in a currently in progress | 327 | * lock helps us to not include this cpu in a currently in progress |
| 328 | * smp_call_function(). | 328 | * smp_call_function(). |
| 329 | * | ||
| 330 | * We need to hold vector_lock so there the set of online cpus | ||
| 331 | * does not change while we are assigning vectors to cpus. Holding | ||
| 332 | * this lock ensures we don't half assign or remove an irq from a cpu. | ||
| 329 | */ | 333 | */ |
| 330 | ipi_call_lock_irq(); | 334 | ipi_call_lock_irq(); |
| 331 | #ifdef CONFIG_X86_IO_APIC | 335 | lock_vector_lock(); |
| 332 | setup_vector_irq(smp_processor_id()); | 336 | __setup_vector_irq(smp_processor_id()); |
| 333 | #endif | ||
| 334 | cpu_set(smp_processor_id(), cpu_online_map); | 337 | cpu_set(smp_processor_id(), cpu_online_map); |
| 338 | unlock_vector_lock(); | ||
| 335 | ipi_call_unlock_irq(); | 339 | ipi_call_unlock_irq(); |
| 336 | per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; | 340 | per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; |
| 337 | 341 | ||
| @@ -752,6 +756,14 @@ static void __cpuinit do_fork_idle(struct work_struct *work) | |||
| 752 | } | 756 | } |
| 753 | 757 | ||
| 754 | #ifdef CONFIG_X86_64 | 758 | #ifdef CONFIG_X86_64 |
| 759 | |||
| 760 | /* __ref because it's safe to call free_bootmem when after_bootmem == 0. */ | ||
| 761 | static void __ref free_bootmem_pda(struct x8664_pda *oldpda) | ||
| 762 | { | ||
| 763 | if (!after_bootmem) | ||
| 764 | free_bootmem((unsigned long)oldpda, sizeof(*oldpda)); | ||
| 765 | } | ||
| 766 | |||
| 755 | /* | 767 | /* |
| 756 | * Allocate node local memory for the AP pda. | 768 | * Allocate node local memory for the AP pda. |
| 757 | * | 769 | * |
| @@ -780,8 +792,7 @@ int __cpuinit get_local_pda(int cpu) | |||
| 780 | 792 | ||
| 781 | if (oldpda) { | 793 | if (oldpda) { |
| 782 | memcpy(newpda, oldpda, size); | 794 | memcpy(newpda, oldpda, size); |
| 783 | if (!after_bootmem) | 795 | free_bootmem_pda(oldpda); |
| 784 | free_bootmem((unsigned long)oldpda, size); | ||
| 785 | } | 796 | } |
| 786 | 797 | ||
| 787 | newpda->in_bootmem = 0; | 798 | newpda->in_bootmem = 0; |
| @@ -1044,6 +1055,34 @@ static __init void disable_smp(void) | |||
| 1044 | static int __init smp_sanity_check(unsigned max_cpus) | 1055 | static int __init smp_sanity_check(unsigned max_cpus) |
| 1045 | { | 1056 | { |
| 1046 | preempt_disable(); | 1057 | preempt_disable(); |
| 1058 | |||
| 1059 | #if defined(CONFIG_X86_PC) && defined(CONFIG_X86_32) | ||
| 1060 | if (def_to_bigsmp && nr_cpu_ids > 8) { | ||
| 1061 | unsigned int cpu; | ||
| 1062 | unsigned nr; | ||
| 1063 | |||
| 1064 | printk(KERN_WARNING | ||
| 1065 | "More than 8 CPUs detected - skipping them.\n" | ||
| 1066 | "Use CONFIG_X86_GENERICARCH and CONFIG_X86_BIGSMP.\n"); | ||
| 1067 | |||
| 1068 | nr = 0; | ||
| 1069 | for_each_present_cpu(cpu) { | ||
| 1070 | if (nr >= 8) | ||
| 1071 | cpu_clear(cpu, cpu_present_map); | ||
| 1072 | nr++; | ||
| 1073 | } | ||
| 1074 | |||
| 1075 | nr = 0; | ||
| 1076 | for_each_possible_cpu(cpu) { | ||
| 1077 | if (nr >= 8) | ||
| 1078 | cpu_clear(cpu, cpu_possible_map); | ||
| 1079 | nr++; | ||
| 1080 | } | ||
| 1081 | |||
| 1082 | nr_cpu_ids = 8; | ||
| 1083 | } | ||
| 1084 | #endif | ||
| 1085 | |||
| 1047 | if (!physid_isset(hard_smp_processor_id(), phys_cpu_present_map)) { | 1086 | if (!physid_isset(hard_smp_processor_id(), phys_cpu_present_map)) { |
| 1048 | printk(KERN_WARNING "weird, boot CPU (#%d) not listed" | 1087 | printk(KERN_WARNING "weird, boot CPU (#%d) not listed" |
| 1049 | "by the BIOS.\n", hard_smp_processor_id()); | 1088 | "by the BIOS.\n", hard_smp_processor_id()); |
| @@ -1182,6 +1221,9 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) | |||
| 1182 | printk(KERN_INFO "CPU%d: ", 0); | 1221 | printk(KERN_INFO "CPU%d: ", 0); |
| 1183 | print_cpu_info(&cpu_data(0)); | 1222 | print_cpu_info(&cpu_data(0)); |
| 1184 | setup_boot_clock(); | 1223 | setup_boot_clock(); |
| 1224 | |||
| 1225 | if (is_uv_system()) | ||
| 1226 | uv_system_init(); | ||
| 1185 | out: | 1227 | out: |
| 1186 | preempt_enable(); | 1228 | preempt_enable(); |
| 1187 | } | 1229 | } |
| @@ -1336,7 +1378,9 @@ int __cpu_disable(void) | |||
| 1336 | remove_siblinginfo(cpu); | 1378 | remove_siblinginfo(cpu); |
| 1337 | 1379 | ||
| 1338 | /* It's now safe to remove this processor from the online map */ | 1380 | /* It's now safe to remove this processor from the online map */ |
| 1381 | lock_vector_lock(); | ||
| 1339 | remove_cpu_from_maps(cpu); | 1382 | remove_cpu_from_maps(cpu); |
| 1383 | unlock_vector_lock(); | ||
| 1340 | fixup_irqs(cpu_online_map); | 1384 | fixup_irqs(cpu_online_map); |
| 1341 | return 0; | 1385 | return 0; |
| 1342 | } | 1386 | } |
| @@ -1370,17 +1414,3 @@ void __cpu_die(unsigned int cpu) | |||
| 1370 | BUG(); | 1414 | BUG(); |
| 1371 | } | 1415 | } |
| 1372 | #endif | 1416 | #endif |
| 1373 | |||
| 1374 | /* | ||
| 1375 | * If the BIOS enumerates physical processors before logical, | ||
| 1376 | * maxcpus=N at enumeration-time can be used to disable HT. | ||
| 1377 | */ | ||
| 1378 | static int __init parse_maxcpus(char *arg) | ||
| 1379 | { | ||
| 1380 | extern unsigned int maxcpus; | ||
| 1381 | |||
| 1382 | if (arg) | ||
| 1383 | maxcpus = simple_strtoul(arg, NULL, 0); | ||
| 1384 | return 0; | ||
| 1385 | } | ||
| 1386 | early_param("maxcpus", parse_maxcpus); | ||
diff --git a/arch/x86/kernel/smpcommon.c b/arch/x86/kernel/smpcommon.c index 99941b37eca0..397e309839dd 100644 --- a/arch/x86/kernel/smpcommon.c +++ b/arch/x86/kernel/smpcommon.c | |||
| @@ -8,18 +8,21 @@ | |||
| 8 | DEFINE_PER_CPU(unsigned long, this_cpu_off); | 8 | DEFINE_PER_CPU(unsigned long, this_cpu_off); |
| 9 | EXPORT_PER_CPU_SYMBOL(this_cpu_off); | 9 | EXPORT_PER_CPU_SYMBOL(this_cpu_off); |
| 10 | 10 | ||
| 11 | /* Initialize the CPU's GDT. This is either the boot CPU doing itself | 11 | /* |
| 12 | (still using the master per-cpu area), or a CPU doing it for a | 12 | * Initialize the CPU's GDT. This is either the boot CPU doing itself |
| 13 | secondary which will soon come up. */ | 13 | * (still using the master per-cpu area), or a CPU doing it for a |
| 14 | * secondary which will soon come up. | ||
| 15 | */ | ||
| 14 | __cpuinit void init_gdt(int cpu) | 16 | __cpuinit void init_gdt(int cpu) |
| 15 | { | 17 | { |
| 16 | struct desc_struct *gdt = get_cpu_gdt_table(cpu); | 18 | struct desc_struct gdt; |
| 17 | 19 | ||
| 18 | pack_descriptor(&gdt[GDT_ENTRY_PERCPU], | 20 | pack_descriptor(&gdt, __per_cpu_offset[cpu], 0xFFFFF, |
| 19 | __per_cpu_offset[cpu], 0xFFFFF, | ||
| 20 | 0x2 | DESCTYPE_S, 0x8); | 21 | 0x2 | DESCTYPE_S, 0x8); |
| 22 | gdt.s = 1; | ||
| 21 | 23 | ||
| 22 | gdt[GDT_ENTRY_PERCPU].s = 1; | 24 | write_gdt_entry(get_cpu_gdt_table(cpu), |
| 25 | GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S); | ||
| 23 | 26 | ||
| 24 | per_cpu(this_cpu_off, cpu) = __per_cpu_offset[cpu]; | 27 | per_cpu(this_cpu_off, cpu) = __per_cpu_offset[cpu]; |
| 25 | per_cpu(cpu_number, cpu) = cpu; | 28 | per_cpu(cpu_number, cpu) = cpu; |
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c index d0fbb7712ab0..8b8c0d6640fa 100644 --- a/arch/x86/kernel/tlb_uv.c +++ b/arch/x86/kernel/tlb_uv.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <asm/genapic.h> | 17 | #include <asm/genapic.h> |
| 18 | #include <asm/idle.h> | 18 | #include <asm/idle.h> |
| 19 | #include <asm/tsc.h> | 19 | #include <asm/tsc.h> |
| 20 | #include <asm/irq_vectors.h> | ||
| 20 | 21 | ||
| 21 | #include <mach_apic.h> | 22 | #include <mach_apic.h> |
| 22 | 23 | ||
| @@ -783,7 +784,7 @@ static int __init uv_bau_init(void) | |||
| 783 | uv_init_blade(blade, node, cur_cpu); | 784 | uv_init_blade(blade, node, cur_cpu); |
| 784 | cur_cpu += uv_blade_nr_possible_cpus(blade); | 785 | cur_cpu += uv_blade_nr_possible_cpus(blade); |
| 785 | } | 786 | } |
| 786 | set_intr_gate(UV_BAU_MESSAGE, uv_bau_message_intr1); | 787 | alloc_intr_gate(UV_BAU_MESSAGE, uv_bau_message_intr1); |
| 787 | uv_enable_timeouts(); | 788 | uv_enable_timeouts(); |
| 788 | 789 | ||
| 789 | return 0; | 790 | return 0; |
diff --git a/arch/x86/kernel/traps_64.c b/arch/x86/kernel/traps_64.c index 3f18d73f420c..513caaca7115 100644 --- a/arch/x86/kernel/traps_64.c +++ b/arch/x86/kernel/traps_64.c | |||
| @@ -1131,7 +1131,14 @@ asmlinkage void math_state_restore(void) | |||
| 1131 | } | 1131 | } |
| 1132 | 1132 | ||
| 1133 | clts(); /* Allow maths ops (or we recurse) */ | 1133 | clts(); /* Allow maths ops (or we recurse) */ |
| 1134 | restore_fpu_checking(&me->thread.xstate->fxsave); | 1134 | /* |
| 1135 | * Paranoid restore. send a SIGSEGV if we fail to restore the state. | ||
| 1136 | */ | ||
| 1137 | if (unlikely(restore_fpu_checking(&me->thread.xstate->fxsave))) { | ||
| 1138 | stts(); | ||
| 1139 | force_sig(SIGSEGV, me); | ||
| 1140 | return; | ||
| 1141 | } | ||
| 1135 | task_thread_info(me)->status |= TS_USEDFPU; | 1142 | task_thread_info(me)->status |= TS_USEDFPU; |
| 1136 | me->fpu_counter++; | 1143 | me->fpu_counter++; |
| 1137 | } | 1144 | } |
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 7603c0553909..8f98e9de1b82 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c | |||
| @@ -104,7 +104,7 @@ __setup("notsc", notsc_setup); | |||
| 104 | /* | 104 | /* |
| 105 | * Read TSC and the reference counters. Take care of SMI disturbance | 105 | * Read TSC and the reference counters. Take care of SMI disturbance |
| 106 | */ | 106 | */ |
| 107 | static u64 __init tsc_read_refs(u64 *pm, u64 *hpet) | 107 | static u64 tsc_read_refs(u64 *pm, u64 *hpet) |
| 108 | { | 108 | { |
| 109 | u64 t1, t2; | 109 | u64 t1, t2; |
| 110 | int i; | 110 | int i; |
| @@ -122,80 +122,216 @@ static u64 __init tsc_read_refs(u64 *pm, u64 *hpet) | |||
| 122 | return ULLONG_MAX; | 122 | return ULLONG_MAX; |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | /** | 125 | /* |
| 126 | * native_calibrate_tsc - calibrate the tsc on boot | 126 | * Try to calibrate the TSC against the Programmable |
| 127 | * Interrupt Timer and return the frequency of the TSC | ||
| 128 | * in kHz. | ||
| 129 | * | ||
| 130 | * Return ULONG_MAX on failure to calibrate. | ||
| 127 | */ | 131 | */ |
| 128 | unsigned long native_calibrate_tsc(void) | 132 | static unsigned long pit_calibrate_tsc(void) |
| 129 | { | 133 | { |
| 130 | unsigned long flags; | 134 | u64 tsc, t1, t2, delta; |
| 131 | u64 tsc1, tsc2, tr1, tr2, delta, pm1, pm2, hpet1, hpet2; | 135 | unsigned long tscmin, tscmax; |
| 132 | int hpet = is_hpet_enabled(); | 136 | int pitcnt; |
| 133 | unsigned int tsc_khz_val = 0; | ||
| 134 | |||
| 135 | local_irq_save(flags); | ||
| 136 | |||
| 137 | tsc1 = tsc_read_refs(&pm1, hpet ? &hpet1 : NULL); | ||
| 138 | 137 | ||
| 138 | /* Set the Gate high, disable speaker */ | ||
| 139 | outb((inb(0x61) & ~0x02) | 0x01, 0x61); | 139 | outb((inb(0x61) & ~0x02) | 0x01, 0x61); |
| 140 | 140 | ||
| 141 | /* | ||
| 142 | * Setup CTC channel 2* for mode 0, (interrupt on terminal | ||
| 143 | * count mode), binary count. Set the latch register to 50ms | ||
| 144 | * (LSB then MSB) to begin countdown. | ||
| 145 | */ | ||
| 141 | outb(0xb0, 0x43); | 146 | outb(0xb0, 0x43); |
| 142 | outb((CLOCK_TICK_RATE / (1000 / 50)) & 0xff, 0x42); | 147 | outb((CLOCK_TICK_RATE / (1000 / 50)) & 0xff, 0x42); |
| 143 | outb((CLOCK_TICK_RATE / (1000 / 50)) >> 8, 0x42); | 148 | outb((CLOCK_TICK_RATE / (1000 / 50)) >> 8, 0x42); |
| 144 | tr1 = get_cycles(); | ||
| 145 | while ((inb(0x61) & 0x20) == 0); | ||
| 146 | tr2 = get_cycles(); | ||
| 147 | 149 | ||
| 148 | tsc2 = tsc_read_refs(&pm2, hpet ? &hpet2 : NULL); | 150 | tsc = t1 = t2 = get_cycles(); |
| 149 | 151 | ||
| 150 | local_irq_restore(flags); | 152 | pitcnt = 0; |
| 153 | tscmax = 0; | ||
| 154 | tscmin = ULONG_MAX; | ||
| 155 | while ((inb(0x61) & 0x20) == 0) { | ||
| 156 | t2 = get_cycles(); | ||
| 157 | delta = t2 - tsc; | ||
| 158 | tsc = t2; | ||
| 159 | if ((unsigned long) delta < tscmin) | ||
| 160 | tscmin = (unsigned int) delta; | ||
| 161 | if ((unsigned long) delta > tscmax) | ||
| 162 | tscmax = (unsigned int) delta; | ||
| 163 | pitcnt++; | ||
| 164 | } | ||
| 151 | 165 | ||
| 152 | /* | 166 | /* |
| 153 | * Preset the result with the raw and inaccurate PIT | 167 | * Sanity checks: |
| 154 | * calibration value | 168 | * |
| 169 | * If we were not able to read the PIT more than 5000 | ||
| 170 | * times, then we have been hit by a massive SMI | ||
| 171 | * | ||
| 172 | * If the maximum is 10 times larger than the minimum, | ||
| 173 | * then we got hit by an SMI as well. | ||
| 155 | */ | 174 | */ |
| 156 | delta = (tr2 - tr1); | 175 | if (pitcnt < 5000 || tscmax > 10 * tscmin) |
| 176 | return ULONG_MAX; | ||
| 177 | |||
| 178 | /* Calculate the PIT value */ | ||
| 179 | delta = t2 - t1; | ||
| 157 | do_div(delta, 50); | 180 | do_div(delta, 50); |
| 158 | tsc_khz_val = delta; | 181 | return delta; |
| 182 | } | ||
| 183 | |||
| 184 | |||
| 185 | /** | ||
| 186 | * native_calibrate_tsc - calibrate the tsc on boot | ||
| 187 | */ | ||
| 188 | unsigned long native_calibrate_tsc(void) | ||
| 189 | { | ||
| 190 | u64 tsc1, tsc2, delta, pm1, pm2, hpet1, hpet2; | ||
| 191 | unsigned long tsc_pit_min = ULONG_MAX, tsc_ref_min = ULONG_MAX; | ||
| 192 | unsigned long flags; | ||
| 193 | int hpet = is_hpet_enabled(), i; | ||
| 194 | |||
| 195 | /* | ||
| 196 | * Run 5 calibration loops to get the lowest frequency value | ||
| 197 | * (the best estimate). We use two different calibration modes | ||
| 198 | * here: | ||
| 199 | * | ||
| 200 | * 1) PIT loop. We set the PIT Channel 2 to oneshot mode and | ||
| 201 | * load a timeout of 50ms. We read the time right after we | ||
| 202 | * started the timer and wait until the PIT count down reaches | ||
| 203 | * zero. In each wait loop iteration we read the TSC and check | ||
| 204 | * the delta to the previous read. We keep track of the min | ||
| 205 | * and max values of that delta. The delta is mostly defined | ||
| 206 | * by the IO time of the PIT access, so we can detect when a | ||
| 207 | * SMI/SMM disturbance happend between the two reads. If the | ||
| 208 | * maximum time is significantly larger than the minimum time, | ||
| 209 | * then we discard the result and have another try. | ||
| 210 | * | ||
| 211 | * 2) Reference counter. If available we use the HPET or the | ||
| 212 | * PMTIMER as a reference to check the sanity of that value. | ||
| 213 | * We use separate TSC readouts and check inside of the | ||
| 214 | * reference read for a SMI/SMM disturbance. We dicard | ||
| 215 | * disturbed values here as well. We do that around the PIT | ||
| 216 | * calibration delay loop as we have to wait for a certain | ||
| 217 | * amount of time anyway. | ||
| 218 | */ | ||
| 219 | for (i = 0; i < 5; i++) { | ||
| 220 | unsigned long tsc_pit_khz; | ||
| 221 | |||
| 222 | /* | ||
| 223 | * Read the start value and the reference count of | ||
| 224 | * hpet/pmtimer when available. Then do the PIT | ||
| 225 | * calibration, which will take at least 50ms, and | ||
| 226 | * read the end value. | ||
| 227 | */ | ||
| 228 | local_irq_save(flags); | ||
| 229 | tsc1 = tsc_read_refs(&pm1, hpet ? &hpet1 : NULL); | ||
| 230 | tsc_pit_khz = pit_calibrate_tsc(); | ||
| 231 | tsc2 = tsc_read_refs(&pm2, hpet ? &hpet2 : NULL); | ||
| 232 | local_irq_restore(flags); | ||
| 233 | |||
| 234 | /* Pick the lowest PIT TSC calibration so far */ | ||
| 235 | tsc_pit_min = min(tsc_pit_min, tsc_pit_khz); | ||
| 236 | |||
| 237 | /* hpet or pmtimer available ? */ | ||
| 238 | if (!hpet && !pm1 && !pm2) | ||
| 239 | continue; | ||
| 240 | |||
| 241 | /* Check, whether the sampling was disturbed by an SMI */ | ||
| 242 | if (tsc1 == ULLONG_MAX || tsc2 == ULLONG_MAX) | ||
| 243 | continue; | ||
| 244 | |||
| 245 | tsc2 = (tsc2 - tsc1) * 1000000LL; | ||
| 246 | |||
| 247 | if (hpet) { | ||
| 248 | if (hpet2 < hpet1) | ||
| 249 | hpet2 += 0x100000000ULL; | ||
| 250 | hpet2 -= hpet1; | ||
| 251 | tsc1 = ((u64)hpet2 * hpet_readl(HPET_PERIOD)); | ||
| 252 | do_div(tsc1, 1000000); | ||
| 253 | } else { | ||
| 254 | if (pm2 < pm1) | ||
| 255 | pm2 += (u64)ACPI_PM_OVRRUN; | ||
| 256 | pm2 -= pm1; | ||
| 257 | tsc1 = pm2 * 1000000000LL; | ||
| 258 | do_div(tsc1, PMTMR_TICKS_PER_SEC); | ||
| 259 | } | ||
| 260 | |||
| 261 | do_div(tsc2, tsc1); | ||
| 262 | tsc_ref_min = min(tsc_ref_min, (unsigned long) tsc2); | ||
| 263 | } | ||
| 264 | |||
| 265 | /* | ||
| 266 | * Now check the results. | ||
| 267 | */ | ||
| 268 | if (tsc_pit_min == ULONG_MAX) { | ||
| 269 | /* PIT gave no useful value */ | ||
| 270 | printk(KERN_WARNING "TSC: Unable to calibrate against PIT\n"); | ||
| 271 | |||
| 272 | /* We don't have an alternative source, disable TSC */ | ||
| 273 | if (!hpet && !pm1 && !pm2) { | ||
| 274 | printk("TSC: No reference (HPET/PMTIMER) available\n"); | ||
| 275 | return 0; | ||
| 276 | } | ||
| 277 | |||
| 278 | /* The alternative source failed as well, disable TSC */ | ||
| 279 | if (tsc_ref_min == ULONG_MAX) { | ||
| 280 | printk(KERN_WARNING "TSC: HPET/PMTIMER calibration " | ||
| 281 | "failed due to SMI disturbance.\n"); | ||
| 282 | return 0; | ||
| 283 | } | ||
| 284 | |||
| 285 | /* Use the alternative source */ | ||
| 286 | printk(KERN_INFO "TSC: using %s reference calibration\n", | ||
| 287 | hpet ? "HPET" : "PMTIMER"); | ||
| 288 | |||
| 289 | return tsc_ref_min; | ||
| 290 | } | ||
| 159 | 291 | ||
| 160 | /* hpet or pmtimer available ? */ | 292 | /* We don't have an alternative source, use the PIT calibration value */ |
| 161 | if (!hpet && !pm1 && !pm2) { | 293 | if (!hpet && !pm1 && !pm2) { |
| 162 | printk(KERN_INFO "TSC calibrated against PIT\n"); | 294 | printk(KERN_INFO "TSC: Using PIT calibration value\n"); |
| 163 | goto out; | 295 | return tsc_pit_min; |
| 164 | } | 296 | } |
| 165 | 297 | ||
| 166 | /* Check, whether the sampling was disturbed by an SMI */ | 298 | /* The alternative source failed, use the PIT calibration value */ |
| 167 | if (tsc1 == ULLONG_MAX || tsc2 == ULLONG_MAX) { | 299 | if (tsc_ref_min == ULONG_MAX) { |
| 168 | printk(KERN_WARNING "TSC calibration disturbed by SMI, " | 300 | printk(KERN_WARNING "TSC: HPET/PMTIMER calibration failed due " |
| 169 | "using PIT calibration result\n"); | 301 | "to SMI disturbance. Using PIT calibration\n"); |
| 170 | goto out; | 302 | return tsc_pit_min; |
| 171 | } | 303 | } |
| 172 | 304 | ||
| 173 | tsc2 = (tsc2 - tsc1) * 1000000LL; | 305 | /* Check the reference deviation */ |
| 174 | 306 | delta = ((u64) tsc_pit_min) * 100; | |
| 175 | if (hpet) { | 307 | do_div(delta, tsc_ref_min); |
| 176 | printk(KERN_INFO "TSC calibrated against HPET\n"); | 308 | |
| 177 | if (hpet2 < hpet1) | 309 | /* |
| 178 | hpet2 += 0x100000000ULL; | 310 | * If both calibration results are inside a 5% window, the we |
| 179 | hpet2 -= hpet1; | 311 | * use the lower frequency of those as it is probably the |
| 180 | tsc1 = ((u64)hpet2 * hpet_readl(HPET_PERIOD)); | 312 | * closest estimate. |
| 181 | do_div(tsc1, 1000000); | 313 | */ |
| 182 | } else { | 314 | if (delta >= 95 && delta <= 105) { |
| 183 | printk(KERN_INFO "TSC calibrated against PM_TIMER\n"); | 315 | printk(KERN_INFO "TSC: PIT calibration confirmed by %s.\n", |
| 184 | if (pm2 < pm1) | 316 | hpet ? "HPET" : "PMTIMER"); |
| 185 | pm2 += (u64)ACPI_PM_OVRRUN; | 317 | printk(KERN_INFO "TSC: using %s calibration value\n", |
| 186 | pm2 -= pm1; | 318 | tsc_pit_min <= tsc_ref_min ? "PIT" : |
| 187 | tsc1 = pm2 * 1000000000LL; | 319 | hpet ? "HPET" : "PMTIMER"); |
| 188 | do_div(tsc1, PMTMR_TICKS_PER_SEC); | 320 | return tsc_pit_min <= tsc_ref_min ? tsc_pit_min : tsc_ref_min; |
| 189 | } | 321 | } |
| 190 | 322 | ||
| 191 | do_div(tsc2, tsc1); | 323 | printk(KERN_WARNING "TSC: PIT calibration deviates from %s: %lu %lu.\n", |
| 192 | tsc_khz_val = tsc2; | 324 | hpet ? "HPET" : "PMTIMER", tsc_pit_min, tsc_ref_min); |
| 193 | 325 | ||
| 194 | out: | 326 | /* |
| 195 | return tsc_khz_val; | 327 | * The calibration values differ too much. In doubt, we use |
| 328 | * the PIT value as we know that there are PMTIMERs around | ||
| 329 | * running at double speed. | ||
| 330 | */ | ||
| 331 | printk(KERN_INFO "TSC: Using PIT calibration value\n"); | ||
| 332 | return tsc_pit_min; | ||
| 196 | } | 333 | } |
| 197 | 334 | ||
| 198 | |||
| 199 | #ifdef CONFIG_X86_32 | 335 | #ifdef CONFIG_X86_32 |
| 200 | /* Only called from the Powernow K7 cpu freq driver */ | 336 | /* Only called from the Powernow K7 cpu freq driver */ |
| 201 | int recalibrate_cpu_khz(void) | 337 | int recalibrate_cpu_khz(void) |
| @@ -314,7 +450,7 @@ static int time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, | |||
| 314 | mark_tsc_unstable("cpufreq changes"); | 450 | mark_tsc_unstable("cpufreq changes"); |
| 315 | } | 451 | } |
| 316 | 452 | ||
| 317 | set_cyc2ns_scale(tsc_khz_ref, freq->cpu); | 453 | set_cyc2ns_scale(tsc_khz, freq->cpu); |
| 318 | 454 | ||
| 319 | return 0; | 455 | return 0; |
| 320 | } | 456 | } |
| @@ -325,6 +461,10 @@ static struct notifier_block time_cpufreq_notifier_block = { | |||
| 325 | 461 | ||
| 326 | static int __init cpufreq_tsc(void) | 462 | static int __init cpufreq_tsc(void) |
| 327 | { | 463 | { |
| 464 | if (!cpu_has_tsc) | ||
| 465 | return 0; | ||
| 466 | if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC)) | ||
| 467 | return 0; | ||
| 328 | cpufreq_register_notifier(&time_cpufreq_notifier_block, | 468 | cpufreq_register_notifier(&time_cpufreq_notifier_block, |
| 329 | CPUFREQ_TRANSITION_NOTIFIER); | 469 | CPUFREQ_TRANSITION_NOTIFIER); |
| 330 | return 0; | 470 | return 0; |
diff --git a/arch/x86/kernel/tsc_sync.c b/arch/x86/kernel/tsc_sync.c index 0577825cf89b..9ffb01c31c40 100644 --- a/arch/x86/kernel/tsc_sync.c +++ b/arch/x86/kernel/tsc_sync.c | |||
| @@ -88,11 +88,9 @@ static __cpuinit void check_tsc_warp(void) | |||
| 88 | __raw_spin_unlock(&sync_lock); | 88 | __raw_spin_unlock(&sync_lock); |
| 89 | } | 89 | } |
| 90 | } | 90 | } |
| 91 | if (!(now-start)) { | 91 | WARN(!(now-start), |
| 92 | printk("Warning: zero tsc calibration delta: %Ld [max: %Ld]\n", | 92 | "Warning: zero tsc calibration delta: %Ld [max: %Ld]\n", |
| 93 | now-start, end-start); | 93 | now-start, end-start); |
| 94 | WARN_ON(1); | ||
| 95 | } | ||
| 96 | } | 94 | } |
| 97 | 95 | ||
| 98 | /* | 96 | /* |
diff --git a/arch/x86/kernel/visws_quirks.c b/arch/x86/kernel/visws_quirks.c index 41e01b145c48..594ef47f0a63 100644 --- a/arch/x86/kernel/visws_quirks.c +++ b/arch/x86/kernel/visws_quirks.c | |||
| @@ -184,8 +184,6 @@ static int __init visws_get_smp_config(unsigned int early) | |||
| 184 | return 1; | 184 | return 1; |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | extern unsigned int __cpuinitdata maxcpus; | ||
| 188 | |||
| 189 | /* | 187 | /* |
| 190 | * The Visual Workstation is Intel MP compliant in the hardware | 188 | * The Visual Workstation is Intel MP compliant in the hardware |
| 191 | * sense, but it doesn't have a BIOS(-configuration table). | 189 | * sense, but it doesn't have a BIOS(-configuration table). |
| @@ -244,8 +242,8 @@ static int __init visws_find_smp_config(unsigned int reserve) | |||
| 244 | ncpus = CO_CPU_MAX; | 242 | ncpus = CO_CPU_MAX; |
| 245 | } | 243 | } |
| 246 | 244 | ||
| 247 | if (ncpus > maxcpus) | 245 | if (ncpus > setup_max_cpus) |
| 248 | ncpus = maxcpus; | 246 | ncpus = setup_max_cpus; |
| 249 | 247 | ||
| 250 | #ifdef CONFIG_X86_LOCAL_APIC | 248 | #ifdef CONFIG_X86_LOCAL_APIC |
| 251 | smp_found_config = 1; | 249 | smp_found_config = 1; |
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 0a1b1a9d922d..6ca515d6db54 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c | |||
| @@ -37,6 +37,7 @@ | |||
| 37 | #include <asm/timer.h> | 37 | #include <asm/timer.h> |
| 38 | #include <asm/vmi_time.h> | 38 | #include <asm/vmi_time.h> |
| 39 | #include <asm/kmap_types.h> | 39 | #include <asm/kmap_types.h> |
| 40 | #include <asm/setup.h> | ||
| 40 | 41 | ||
| 41 | /* Convenient for calling VMI functions indirectly in the ROM */ | 42 | /* Convenient for calling VMI functions indirectly in the ROM */ |
| 42 | typedef u32 __attribute__((regparm(1))) (VROMFUNC)(void); | 43 | typedef u32 __attribute__((regparm(1))) (VROMFUNC)(void); |
| @@ -683,7 +684,7 @@ void vmi_bringup(void) | |||
| 683 | { | 684 | { |
| 684 | /* We must establish the lowmem mapping for MMU ops to work */ | 685 | /* We must establish the lowmem mapping for MMU ops to work */ |
| 685 | if (vmi_ops.set_linear_mapping) | 686 | if (vmi_ops.set_linear_mapping) |
| 686 | vmi_ops.set_linear_mapping(0, (void *)__PAGE_OFFSET, max_low_pfn, 0); | 687 | vmi_ops.set_linear_mapping(0, (void *)__PAGE_OFFSET, MAXMEM_PFN, 0); |
| 687 | } | 688 | } |
| 688 | 689 | ||
| 689 | /* | 690 | /* |
diff --git a/arch/x86/kernel/vmlinux_32.lds.S b/arch/x86/kernel/vmlinux_32.lds.S index cdb2363697d2..af5bdad84604 100644 --- a/arch/x86/kernel/vmlinux_32.lds.S +++ b/arch/x86/kernel/vmlinux_32.lds.S | |||
| @@ -209,3 +209,11 @@ SECTIONS | |||
| 209 | 209 | ||
| 210 | DWARF_DEBUG | 210 | DWARF_DEBUG |
| 211 | } | 211 | } |
| 212 | |||
| 213 | #ifdef CONFIG_KEXEC | ||
| 214 | /* Link time checks */ | ||
| 215 | #include <asm/kexec.h> | ||
| 216 | |||
| 217 | ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE, | ||
| 218 | "kexec control code size is too big") | ||
| 219 | #endif | ||
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index f72ac1fa35f0..4a814bff21f2 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h | |||
| @@ -345,7 +345,7 @@ static u64 *FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr, | |||
| 345 | shadow_addr = __pa(shadow_page->spt); | 345 | shadow_addr = __pa(shadow_page->spt); |
| 346 | shadow_pte = shadow_addr | PT_PRESENT_MASK | PT_ACCESSED_MASK | 346 | shadow_pte = shadow_addr | PT_PRESENT_MASK | PT_ACCESSED_MASK |
| 347 | | PT_WRITABLE_MASK | PT_USER_MASK; | 347 | | PT_WRITABLE_MASK | PT_USER_MASK; |
| 348 | *shadow_ent = shadow_pte; | 348 | set_shadow_pte(shadow_ent, shadow_pte); |
| 349 | } | 349 | } |
| 350 | 350 | ||
| 351 | mmu_set_spte(vcpu, shadow_ent, access, walker->pte_access & access, | 351 | mmu_set_spte(vcpu, shadow_ent, access, walker->pte_access & access, |
diff --git a/arch/x86/lib/msr-on-cpu.c b/arch/x86/lib/msr-on-cpu.c index d5a2b39f882b..01b868ba82f8 100644 --- a/arch/x86/lib/msr-on-cpu.c +++ b/arch/x86/lib/msr-on-cpu.c | |||
| @@ -30,10 +30,11 @@ static int _rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h, int safe) | |||
| 30 | 30 | ||
| 31 | rv.msr_no = msr_no; | 31 | rv.msr_no = msr_no; |
| 32 | if (safe) { | 32 | if (safe) { |
| 33 | smp_call_function_single(cpu, __rdmsr_safe_on_cpu, &rv, 1); | 33 | err = smp_call_function_single(cpu, __rdmsr_safe_on_cpu, |
| 34 | err = rv.err; | 34 | &rv, 1); |
| 35 | err = err ? err : rv.err; | ||
| 35 | } else { | 36 | } else { |
| 36 | smp_call_function_single(cpu, __rdmsr_on_cpu, &rv, 1); | 37 | err = smp_call_function_single(cpu, __rdmsr_on_cpu, &rv, 1); |
| 37 | } | 38 | } |
| 38 | *l = rv.l; | 39 | *l = rv.l; |
| 39 | *h = rv.h; | 40 | *h = rv.h; |
| @@ -64,23 +65,24 @@ static int _wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h, int safe) | |||
| 64 | rv.l = l; | 65 | rv.l = l; |
| 65 | rv.h = h; | 66 | rv.h = h; |
| 66 | if (safe) { | 67 | if (safe) { |
| 67 | smp_call_function_single(cpu, __wrmsr_safe_on_cpu, &rv, 1); | 68 | err = smp_call_function_single(cpu, __wrmsr_safe_on_cpu, |
| 68 | err = rv.err; | 69 | &rv, 1); |
| 70 | err = err ? err : rv.err; | ||
| 69 | } else { | 71 | } else { |
| 70 | smp_call_function_single(cpu, __wrmsr_on_cpu, &rv, 1); | 72 | err = smp_call_function_single(cpu, __wrmsr_on_cpu, &rv, 1); |
| 71 | } | 73 | } |
| 72 | 74 | ||
| 73 | return err; | 75 | return err; |
| 74 | } | 76 | } |
| 75 | 77 | ||
| 76 | void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h) | 78 | int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h) |
| 77 | { | 79 | { |
| 78 | _wrmsr_on_cpu(cpu, msr_no, l, h, 0); | 80 | return _wrmsr_on_cpu(cpu, msr_no, l, h, 0); |
| 79 | } | 81 | } |
| 80 | 82 | ||
| 81 | void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h) | 83 | int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h) |
| 82 | { | 84 | { |
| 83 | _rdmsr_on_cpu(cpu, msr_no, l, h, 0); | 85 | return _rdmsr_on_cpu(cpu, msr_no, l, h, 0); |
| 84 | } | 86 | } |
| 85 | 87 | ||
| 86 | /* These "safe" variants are slower and should be used when the target MSR | 88 | /* These "safe" variants are slower and should be used when the target MSR |
diff --git a/arch/x86/mach-rdc321x/platform.c b/arch/x86/mach-rdc321x/platform.c index a037041817c7..4f4e50c3ad3b 100644 --- a/arch/x86/mach-rdc321x/platform.c +++ b/arch/x86/mach-rdc321x/platform.c | |||
| @@ -25,7 +25,6 @@ | |||
| 25 | #include <linux/list.h> | 25 | #include <linux/list.h> |
| 26 | #include <linux/device.h> | 26 | #include <linux/device.h> |
| 27 | #include <linux/platform_device.h> | 27 | #include <linux/platform_device.h> |
| 28 | #include <linux/version.h> | ||
| 29 | #include <linux/leds.h> | 28 | #include <linux/leds.h> |
| 30 | 29 | ||
| 31 | #include <asm/gpio.h> | 30 | #include <asm/gpio.h> |
diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 2977ea37791f..dfb932dcf136 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | obj-y := init_$(BITS).o fault.o ioremap.o extable.o pageattr.o mmap.o \ | 1 | obj-y := init_$(BITS).o fault.o ioremap.o extable.o pageattr.o mmap.o \ |
| 2 | pat.o pgtable.o | 2 | pat.o pgtable.o gup.o |
| 3 | 3 | ||
| 4 | obj-$(CONFIG_HAVE_GET_USER_PAGES_FAST) += gup.o | ||
| 5 | obj-$(CONFIG_X86_32) += pgtable_32.o | 4 | obj-$(CONFIG_X86_32) += pgtable_32.o |
| 6 | 5 | ||
| 7 | obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o | 6 | obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 129618ca0ea2..d3746efb060d 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
| @@ -60,7 +60,7 @@ static unsigned long dma_reserve __initdata; | |||
| 60 | 60 | ||
| 61 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | 61 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); |
| 62 | 62 | ||
| 63 | int direct_gbpages __meminitdata | 63 | int direct_gbpages |
| 64 | #ifdef CONFIG_DIRECT_GBPAGES | 64 | #ifdef CONFIG_DIRECT_GBPAGES |
| 65 | = 1 | 65 | = 1 |
| 66 | #endif | 66 | #endif |
| @@ -88,7 +88,11 @@ early_param("gbpages", parse_direct_gbpages_on); | |||
| 88 | 88 | ||
| 89 | int after_bootmem; | 89 | int after_bootmem; |
| 90 | 90 | ||
| 91 | static __init void *spp_getpage(void) | 91 | /* |
| 92 | * NOTE: This function is marked __ref because it calls __init function | ||
| 93 | * (alloc_bootmem_pages). It's safe to do it ONLY when after_bootmem == 0. | ||
| 94 | */ | ||
| 95 | static __ref void *spp_getpage(void) | ||
| 92 | { | 96 | { |
| 93 | void *ptr; | 97 | void *ptr; |
| 94 | 98 | ||
| @@ -237,7 +241,7 @@ static unsigned long __initdata table_start; | |||
| 237 | static unsigned long __meminitdata table_end; | 241 | static unsigned long __meminitdata table_end; |
| 238 | static unsigned long __meminitdata table_top; | 242 | static unsigned long __meminitdata table_top; |
| 239 | 243 | ||
| 240 | static __meminit void *alloc_low_page(unsigned long *phys) | 244 | static __ref void *alloc_low_page(unsigned long *phys) |
| 241 | { | 245 | { |
| 242 | unsigned long pfn = table_end++; | 246 | unsigned long pfn = table_end++; |
| 243 | void *adr; | 247 | void *adr; |
| @@ -258,7 +262,7 @@ static __meminit void *alloc_low_page(unsigned long *phys) | |||
| 258 | return adr; | 262 | return adr; |
| 259 | } | 263 | } |
| 260 | 264 | ||
| 261 | static __meminit void unmap_low_page(void *adr) | 265 | static __ref void unmap_low_page(void *adr) |
| 262 | { | 266 | { |
| 263 | if (after_bootmem) | 267 | if (after_bootmem) |
| 264 | return; | 268 | return; |
| @@ -314,6 +318,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end, | |||
| 314 | { | 318 | { |
| 315 | unsigned long pages = 0; | 319 | unsigned long pages = 0; |
| 316 | unsigned long last_map_addr = end; | 320 | unsigned long last_map_addr = end; |
| 321 | unsigned long start = address; | ||
| 317 | 322 | ||
| 318 | int i = pmd_index(address); | 323 | int i = pmd_index(address); |
| 319 | 324 | ||
| @@ -331,16 +336,24 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end, | |||
| 331 | } | 336 | } |
| 332 | 337 | ||
| 333 | if (pmd_val(*pmd)) { | 338 | if (pmd_val(*pmd)) { |
| 334 | if (!pmd_large(*pmd)) | 339 | if (!pmd_large(*pmd)) { |
| 340 | spin_lock(&init_mm.page_table_lock); | ||
| 335 | last_map_addr = phys_pte_update(pmd, address, | 341 | last_map_addr = phys_pte_update(pmd, address, |
| 336 | end); | 342 | end); |
| 343 | spin_unlock(&init_mm.page_table_lock); | ||
| 344 | } | ||
| 345 | /* Count entries we're using from level2_ident_pgt */ | ||
| 346 | if (start == 0) | ||
| 347 | pages++; | ||
| 337 | continue; | 348 | continue; |
| 338 | } | 349 | } |
| 339 | 350 | ||
| 340 | if (page_size_mask & (1<<PG_LEVEL_2M)) { | 351 | if (page_size_mask & (1<<PG_LEVEL_2M)) { |
| 341 | pages++; | 352 | pages++; |
| 353 | spin_lock(&init_mm.page_table_lock); | ||
| 342 | set_pte((pte_t *)pmd, | 354 | set_pte((pte_t *)pmd, |
| 343 | pfn_pte(address >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); | 355 | pfn_pte(address >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); |
| 356 | spin_unlock(&init_mm.page_table_lock); | ||
| 344 | last_map_addr = (address & PMD_MASK) + PMD_SIZE; | 357 | last_map_addr = (address & PMD_MASK) + PMD_SIZE; |
| 345 | continue; | 358 | continue; |
| 346 | } | 359 | } |
| @@ -349,7 +362,9 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end, | |||
| 349 | last_map_addr = phys_pte_init(pte, address, end); | 362 | last_map_addr = phys_pte_init(pte, address, end); |
| 350 | unmap_low_page(pte); | 363 | unmap_low_page(pte); |
| 351 | 364 | ||
| 365 | spin_lock(&init_mm.page_table_lock); | ||
| 352 | pmd_populate_kernel(&init_mm, pmd, __va(pte_phys)); | 366 | pmd_populate_kernel(&init_mm, pmd, __va(pte_phys)); |
| 367 | spin_unlock(&init_mm.page_table_lock); | ||
| 353 | } | 368 | } |
| 354 | update_page_count(PG_LEVEL_2M, pages); | 369 | update_page_count(PG_LEVEL_2M, pages); |
| 355 | return last_map_addr; | 370 | return last_map_addr; |
| @@ -362,9 +377,7 @@ phys_pmd_update(pud_t *pud, unsigned long address, unsigned long end, | |||
| 362 | pmd_t *pmd = pmd_offset(pud, 0); | 377 | pmd_t *pmd = pmd_offset(pud, 0); |
| 363 | unsigned long last_map_addr; | 378 | unsigned long last_map_addr; |
| 364 | 379 | ||
| 365 | spin_lock(&init_mm.page_table_lock); | ||
| 366 | last_map_addr = phys_pmd_init(pmd, address, end, page_size_mask); | 380 | last_map_addr = phys_pmd_init(pmd, address, end, page_size_mask); |
| 367 | spin_unlock(&init_mm.page_table_lock); | ||
| 368 | __flush_tlb_all(); | 381 | __flush_tlb_all(); |
| 369 | return last_map_addr; | 382 | return last_map_addr; |
| 370 | } | 383 | } |
| @@ -400,20 +413,21 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, | |||
| 400 | 413 | ||
| 401 | if (page_size_mask & (1<<PG_LEVEL_1G)) { | 414 | if (page_size_mask & (1<<PG_LEVEL_1G)) { |
| 402 | pages++; | 415 | pages++; |
| 416 | spin_lock(&init_mm.page_table_lock); | ||
| 403 | set_pte((pte_t *)pud, | 417 | set_pte((pte_t *)pud, |
| 404 | pfn_pte(addr >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); | 418 | pfn_pte(addr >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); |
| 419 | spin_unlock(&init_mm.page_table_lock); | ||
| 405 | last_map_addr = (addr & PUD_MASK) + PUD_SIZE; | 420 | last_map_addr = (addr & PUD_MASK) + PUD_SIZE; |
| 406 | continue; | 421 | continue; |
| 407 | } | 422 | } |
| 408 | 423 | ||
| 409 | pmd = alloc_low_page(&pmd_phys); | 424 | pmd = alloc_low_page(&pmd_phys); |
| 410 | |||
| 411 | spin_lock(&init_mm.page_table_lock); | ||
| 412 | last_map_addr = phys_pmd_init(pmd, addr, end, page_size_mask); | 425 | last_map_addr = phys_pmd_init(pmd, addr, end, page_size_mask); |
| 413 | unmap_low_page(pmd); | 426 | unmap_low_page(pmd); |
| 427 | |||
| 428 | spin_lock(&init_mm.page_table_lock); | ||
| 414 | pud_populate(&init_mm, pud, __va(pmd_phys)); | 429 | pud_populate(&init_mm, pud, __va(pmd_phys)); |
| 415 | spin_unlock(&init_mm.page_table_lock); | 430 | spin_unlock(&init_mm.page_table_lock); |
| 416 | |||
| 417 | } | 431 | } |
| 418 | __flush_tlb_all(); | 432 | __flush_tlb_all(); |
| 419 | update_page_count(PG_LEVEL_1G, pages); | 433 | update_page_count(PG_LEVEL_1G, pages); |
| @@ -505,16 +519,14 @@ static unsigned long __init kernel_physical_mapping_init(unsigned long start, | |||
| 505 | continue; | 519 | continue; |
| 506 | } | 520 | } |
| 507 | 521 | ||
| 508 | if (after_bootmem) | 522 | pud = alloc_low_page(&pud_phys); |
| 509 | pud = pud_offset(pgd, start & PGDIR_MASK); | ||
| 510 | else | ||
| 511 | pud = alloc_low_page(&pud_phys); | ||
| 512 | |||
| 513 | last_map_addr = phys_pud_init(pud, __pa(start), __pa(next), | 523 | last_map_addr = phys_pud_init(pud, __pa(start), __pa(next), |
| 514 | page_size_mask); | 524 | page_size_mask); |
| 515 | unmap_low_page(pud); | 525 | unmap_low_page(pud); |
| 516 | pgd_populate(&init_mm, pgd_offset_k(start), | 526 | |
| 517 | __va(pud_phys)); | 527 | spin_lock(&init_mm.page_table_lock); |
| 528 | pgd_populate(&init_mm, pgd, __va(pud_phys)); | ||
| 529 | spin_unlock(&init_mm.page_table_lock); | ||
| 518 | } | 530 | } |
| 519 | 531 | ||
| 520 | return last_map_addr; | 532 | return last_map_addr; |
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 016f335bbeea..d4b6e6a29ae3 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
| @@ -170,7 +170,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, | |||
| 170 | phys_addr &= PAGE_MASK; | 170 | phys_addr &= PAGE_MASK; |
| 171 | size = PAGE_ALIGN(last_addr+1) - phys_addr; | 171 | size = PAGE_ALIGN(last_addr+1) - phys_addr; |
| 172 | 172 | ||
| 173 | retval = reserve_memtype(phys_addr, phys_addr + size, | 173 | retval = reserve_memtype(phys_addr, (u64)phys_addr + size, |
| 174 | prot_val, &new_prot_val); | 174 | prot_val, &new_prot_val); |
| 175 | if (retval) { | 175 | if (retval) { |
| 176 | pr_debug("Warning: reserve_memtype returned %d\n", retval); | 176 | pr_debug("Warning: reserve_memtype returned %d\n", retval); |
| @@ -553,13 +553,11 @@ static int __init check_early_ioremap_leak(void) | |||
| 553 | { | 553 | { |
| 554 | if (!early_ioremap_nested) | 554 | if (!early_ioremap_nested) |
| 555 | return 0; | 555 | return 0; |
| 556 | 556 | WARN(1, KERN_WARNING | |
| 557 | printk(KERN_WARNING | ||
| 558 | "Debug warning: early ioremap leak of %d areas detected.\n", | 557 | "Debug warning: early ioremap leak of %d areas detected.\n", |
| 559 | early_ioremap_nested); | 558 | early_ioremap_nested); |
| 560 | printk(KERN_WARNING | 559 | printk(KERN_WARNING |
| 561 | "please boot with early_ioremap_debug and report the dmesg.\n"); | 560 | "please boot with early_ioremap_debug and report the dmesg.\n"); |
| 562 | WARN_ON(1); | ||
| 563 | 561 | ||
| 564 | return 1; | 562 | return 1; |
| 565 | } | 563 | } |
diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c index e7397e108beb..635b50e85581 100644 --- a/arch/x86/mm/mmio-mod.c +++ b/arch/x86/mm/mmio-mod.c | |||
| @@ -430,7 +430,9 @@ static void enter_uniprocessor(void) | |||
| 430 | "may miss events.\n"); | 430 | "may miss events.\n"); |
| 431 | } | 431 | } |
| 432 | 432 | ||
| 433 | static void leave_uniprocessor(void) | 433 | /* __ref because leave_uniprocessor calls cpu_up which is __cpuinit, |
| 434 | but this whole function is ifdefed CONFIG_HOTPLUG_CPU */ | ||
| 435 | static void __ref leave_uniprocessor(void) | ||
| 434 | { | 436 | { |
| 435 | int cpu; | 437 | int cpu; |
| 436 | int err; | 438 | int err; |
diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c index 0dcd42eb94e6..d4aa503caaa2 100644 --- a/arch/x86/mm/pageattr-test.c +++ b/arch/x86/mm/pageattr-test.c | |||
| @@ -221,8 +221,7 @@ static int pageattr_test(void) | |||
| 221 | failed += print_split(&sc); | 221 | failed += print_split(&sc); |
| 222 | 222 | ||
| 223 | if (failed) { | 223 | if (failed) { |
| 224 | printk(KERN_ERR "NOT PASSED. Please report.\n"); | 224 | WARN(1, KERN_ERR "NOT PASSED. Please report.\n"); |
| 225 | WARN_ON(1); | ||
| 226 | return -EINVAL; | 225 | return -EINVAL; |
| 227 | } else { | 226 | } else { |
| 228 | if (print) | 227 | if (print) |
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 65c6e46bf059..43e2f8483e4f 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
| @@ -55,13 +55,19 @@ static void split_page_count(int level) | |||
| 55 | 55 | ||
| 56 | int arch_report_meminfo(char *page) | 56 | int arch_report_meminfo(char *page) |
| 57 | { | 57 | { |
| 58 | int n = sprintf(page, "DirectMap4k: %8lu\n" | 58 | int n = sprintf(page, "DirectMap4k: %8lu kB\n", |
| 59 | "DirectMap2M: %8lu\n", | 59 | direct_pages_count[PG_LEVEL_4K] << 2); |
| 60 | direct_pages_count[PG_LEVEL_4K], | 60 | #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) |
| 61 | direct_pages_count[PG_LEVEL_2M]); | 61 | n += sprintf(page + n, "DirectMap2M: %8lu kB\n", |
| 62 | direct_pages_count[PG_LEVEL_2M] << 11); | ||
| 63 | #else | ||
| 64 | n += sprintf(page + n, "DirectMap4M: %8lu kB\n", | ||
| 65 | direct_pages_count[PG_LEVEL_2M] << 12); | ||
| 66 | #endif | ||
| 62 | #ifdef CONFIG_X86_64 | 67 | #ifdef CONFIG_X86_64 |
| 63 | n += sprintf(page + n, "DirectMap1G: %8lu\n", | 68 | if (direct_gbpages) |
| 64 | direct_pages_count[PG_LEVEL_1G]); | 69 | n += sprintf(page + n, "DirectMap1G: %8lu kB\n", |
| 70 | direct_pages_count[PG_LEVEL_1G] << 20); | ||
| 65 | #endif | 71 | #endif |
| 66 | return n; | 72 | return n; |
| 67 | } | 73 | } |
| @@ -592,10 +598,9 @@ repeat: | |||
| 592 | if (!pte_val(old_pte)) { | 598 | if (!pte_val(old_pte)) { |
| 593 | if (!primary) | 599 | if (!primary) |
| 594 | return 0; | 600 | return 0; |
| 595 | printk(KERN_WARNING "CPA: called for zero pte. " | 601 | WARN(1, KERN_WARNING "CPA: called for zero pte. " |
| 596 | "vaddr = %lx cpa->vaddr = %lx\n", address, | 602 | "vaddr = %lx cpa->vaddr = %lx\n", address, |
| 597 | cpa->vaddr); | 603 | cpa->vaddr); |
| 598 | WARN_ON(1); | ||
| 599 | return -EINVAL; | 604 | return -EINVAL; |
| 600 | } | 605 | } |
| 601 | 606 | ||
| @@ -844,7 +849,7 @@ int set_memory_uc(unsigned long addr, int numpages) | |||
| 844 | /* | 849 | /* |
| 845 | * for now UC MINUS. see comments in ioremap_nocache() | 850 | * for now UC MINUS. see comments in ioremap_nocache() |
| 846 | */ | 851 | */ |
| 847 | if (reserve_memtype(addr, addr + numpages * PAGE_SIZE, | 852 | if (reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, |
| 848 | _PAGE_CACHE_UC_MINUS, NULL)) | 853 | _PAGE_CACHE_UC_MINUS, NULL)) |
| 849 | return -EINVAL; | 854 | return -EINVAL; |
| 850 | 855 | ||
| @@ -863,7 +868,7 @@ int set_memory_wc(unsigned long addr, int numpages) | |||
| 863 | if (!pat_enabled) | 868 | if (!pat_enabled) |
| 864 | return set_memory_uc(addr, numpages); | 869 | return set_memory_uc(addr, numpages); |
| 865 | 870 | ||
| 866 | if (reserve_memtype(addr, addr + numpages * PAGE_SIZE, | 871 | if (reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, |
| 867 | _PAGE_CACHE_WC, NULL)) | 872 | _PAGE_CACHE_WC, NULL)) |
| 868 | return -EINVAL; | 873 | return -EINVAL; |
| 869 | 874 | ||
| @@ -879,7 +884,7 @@ int _set_memory_wb(unsigned long addr, int numpages) | |||
| 879 | 884 | ||
| 880 | int set_memory_wb(unsigned long addr, int numpages) | 885 | int set_memory_wb(unsigned long addr, int numpages) |
| 881 | { | 886 | { |
| 882 | free_memtype(addr, addr + numpages * PAGE_SIZE); | 887 | free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE); |
| 883 | 888 | ||
| 884 | return _set_memory_wb(addr, numpages); | 889 | return _set_memory_wb(addr, numpages); |
| 885 | } | 890 | } |
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index 2fe30916d4b6..2a50e0fa64a5 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
| @@ -207,6 +207,9 @@ static int chk_conflict(struct memtype *new, struct memtype *entry, | |||
| 207 | return -EBUSY; | 207 | return -EBUSY; |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | static struct memtype *cached_entry; | ||
| 211 | static u64 cached_start; | ||
| 212 | |||
| 210 | /* | 213 | /* |
| 211 | * req_type typically has one of the: | 214 | * req_type typically has one of the: |
| 212 | * - _PAGE_CACHE_WB | 215 | * - _PAGE_CACHE_WB |
| @@ -280,11 +283,17 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 280 | 283 | ||
| 281 | spin_lock(&memtype_lock); | 284 | spin_lock(&memtype_lock); |
| 282 | 285 | ||
| 286 | if (cached_entry && start >= cached_start) | ||
| 287 | entry = cached_entry; | ||
| 288 | else | ||
| 289 | entry = list_entry(&memtype_list, struct memtype, nd); | ||
| 290 | |||
| 283 | /* Search for existing mapping that overlaps the current range */ | 291 | /* Search for existing mapping that overlaps the current range */ |
| 284 | where = NULL; | 292 | where = NULL; |
| 285 | list_for_each_entry(entry, &memtype_list, nd) { | 293 | list_for_each_entry_continue(entry, &memtype_list, nd) { |
| 286 | if (end <= entry->start) { | 294 | if (end <= entry->start) { |
| 287 | where = entry->nd.prev; | 295 | where = entry->nd.prev; |
| 296 | cached_entry = list_entry(where, struct memtype, nd); | ||
| 288 | break; | 297 | break; |
| 289 | } else if (start <= entry->start) { /* end > entry->start */ | 298 | } else if (start <= entry->start) { /* end > entry->start */ |
| 290 | err = chk_conflict(new, entry, new_type); | 299 | err = chk_conflict(new, entry, new_type); |
| @@ -292,6 +301,8 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 292 | dprintk("Overlap at 0x%Lx-0x%Lx\n", | 301 | dprintk("Overlap at 0x%Lx-0x%Lx\n", |
| 293 | entry->start, entry->end); | 302 | entry->start, entry->end); |
| 294 | where = entry->nd.prev; | 303 | where = entry->nd.prev; |
| 304 | cached_entry = list_entry(where, | ||
| 305 | struct memtype, nd); | ||
| 295 | } | 306 | } |
| 296 | break; | 307 | break; |
| 297 | } else if (start < entry->end) { /* start > entry->start */ | 308 | } else if (start < entry->end) { /* start > entry->start */ |
| @@ -299,7 +310,20 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 299 | if (!err) { | 310 | if (!err) { |
| 300 | dprintk("Overlap at 0x%Lx-0x%Lx\n", | 311 | dprintk("Overlap at 0x%Lx-0x%Lx\n", |
| 301 | entry->start, entry->end); | 312 | entry->start, entry->end); |
| 302 | where = &entry->nd; | 313 | cached_entry = list_entry(entry->nd.prev, |
| 314 | struct memtype, nd); | ||
| 315 | |||
| 316 | /* | ||
| 317 | * Move to right position in the linked | ||
| 318 | * list to add this new entry | ||
| 319 | */ | ||
| 320 | list_for_each_entry_continue(entry, | ||
| 321 | &memtype_list, nd) { | ||
| 322 | if (start <= entry->start) { | ||
| 323 | where = entry->nd.prev; | ||
| 324 | break; | ||
| 325 | } | ||
| 326 | } | ||
| 303 | } | 327 | } |
| 304 | break; | 328 | break; |
| 305 | } | 329 | } |
| @@ -314,6 +338,8 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 314 | return err; | 338 | return err; |
| 315 | } | 339 | } |
| 316 | 340 | ||
| 341 | cached_start = start; | ||
| 342 | |||
| 317 | if (where) | 343 | if (where) |
| 318 | list_add(&new->nd, where); | 344 | list_add(&new->nd, where); |
| 319 | else | 345 | else |
| @@ -343,6 +369,9 @@ int free_memtype(u64 start, u64 end) | |||
| 343 | spin_lock(&memtype_lock); | 369 | spin_lock(&memtype_lock); |
| 344 | list_for_each_entry(entry, &memtype_list, nd) { | 370 | list_for_each_entry(entry, &memtype_list, nd) { |
| 345 | if (entry->start == start && entry->end == end) { | 371 | if (entry->start == start && entry->end == end) { |
| 372 | if (cached_entry == entry || cached_start == start) | ||
| 373 | cached_entry = NULL; | ||
| 374 | |||
| 346 | list_del(&entry->nd); | 375 | list_del(&entry->nd); |
| 347 | kfree(entry); | 376 | kfree(entry); |
| 348 | err = 0; | 377 | err = 0; |
| @@ -361,14 +390,6 @@ int free_memtype(u64 start, u64 end) | |||
| 361 | } | 390 | } |
| 362 | 391 | ||
| 363 | 392 | ||
| 364 | /* | ||
| 365 | * /dev/mem mmap interface. The memtype used for mapping varies: | ||
| 366 | * - Use UC for mappings with O_SYNC flag | ||
| 367 | * - Without O_SYNC flag, if there is any conflict in reserve_memtype, | ||
| 368 | * inherit the memtype from existing mapping. | ||
| 369 | * - Else use UC_MINUS memtype (for backward compatibility with existing | ||
| 370 | * X drivers. | ||
| 371 | */ | ||
| 372 | pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, | 393 | pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, |
| 373 | unsigned long size, pgprot_t vma_prot) | 394 | unsigned long size, pgprot_t vma_prot) |
| 374 | { | 395 | { |
| @@ -406,14 +427,14 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, | |||
| 406 | unsigned long size, pgprot_t *vma_prot) | 427 | unsigned long size, pgprot_t *vma_prot) |
| 407 | { | 428 | { |
| 408 | u64 offset = ((u64) pfn) << PAGE_SHIFT; | 429 | u64 offset = ((u64) pfn) << PAGE_SHIFT; |
| 409 | unsigned long flags = _PAGE_CACHE_UC_MINUS; | 430 | unsigned long flags = -1; |
| 410 | int retval; | 431 | int retval; |
| 411 | 432 | ||
| 412 | if (!range_is_allowed(pfn, size)) | 433 | if (!range_is_allowed(pfn, size)) |
| 413 | return 0; | 434 | return 0; |
| 414 | 435 | ||
| 415 | if (file->f_flags & O_SYNC) { | 436 | if (file->f_flags & O_SYNC) { |
| 416 | flags = _PAGE_CACHE_UC; | 437 | flags = _PAGE_CACHE_UC_MINUS; |
| 417 | } | 438 | } |
| 418 | 439 | ||
| 419 | #ifdef CONFIG_X86_32 | 440 | #ifdef CONFIG_X86_32 |
| @@ -436,13 +457,14 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, | |||
| 436 | #endif | 457 | #endif |
| 437 | 458 | ||
| 438 | /* | 459 | /* |
| 439 | * With O_SYNC, we can only take UC mapping. Fail if we cannot. | 460 | * With O_SYNC, we can only take UC_MINUS mapping. Fail if we cannot. |
| 461 | * | ||
| 440 | * Without O_SYNC, we want to get | 462 | * Without O_SYNC, we want to get |
| 441 | * - WB for WB-able memory and no other conflicting mappings | 463 | * - WB for WB-able memory and no other conflicting mappings |
| 442 | * - UC_MINUS for non-WB-able memory with no other conflicting mappings | 464 | * - UC_MINUS for non-WB-able memory with no other conflicting mappings |
| 443 | * - Inherit from confliting mappings otherwise | 465 | * - Inherit from confliting mappings otherwise |
| 444 | */ | 466 | */ |
| 445 | if (flags != _PAGE_CACHE_UC_MINUS) { | 467 | if (flags != -1) { |
| 446 | retval = reserve_memtype(offset, offset + size, flags, NULL); | 468 | retval = reserve_memtype(offset, offset + size, flags, NULL); |
| 447 | } else { | 469 | } else { |
| 448 | retval = reserve_memtype(offset, offset + size, -1, &flags); | 470 | retval = reserve_memtype(offset, offset + size, -1, &flags); |
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index 557b2abceef8..d50302774fe2 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c | |||
| @@ -207,6 +207,9 @@ static void pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmds[]) | |||
| 207 | unsigned long addr; | 207 | unsigned long addr; |
| 208 | int i; | 208 | int i; |
| 209 | 209 | ||
| 210 | if (PREALLOCATED_PMDS == 0) /* Work around gcc-3.4.x bug */ | ||
| 211 | return; | ||
| 212 | |||
| 210 | pud = pud_offset(pgd, 0); | 213 | pud = pud_offset(pgd, 0); |
| 211 | 214 | ||
| 212 | for (addr = i = 0; i < PREALLOCATED_PMDS; | 215 | for (addr = i = 0; i < PREALLOCATED_PMDS; |
diff --git a/arch/x86/mm/srat_32.c b/arch/x86/mm/srat_32.c index 1eb2973a301c..16ae70fc57e7 100644 --- a/arch/x86/mm/srat_32.c +++ b/arch/x86/mm/srat_32.c | |||
| @@ -178,7 +178,7 @@ void acpi_numa_arch_fixup(void) | |||
| 178 | * start of the node, and that the current "end" address is after | 178 | * start of the node, and that the current "end" address is after |
| 179 | * the previous one. | 179 | * the previous one. |
| 180 | */ | 180 | */ |
| 181 | static __init void node_read_chunk(int nid, struct node_memory_chunk_s *memory_chunk) | 181 | static __init int node_read_chunk(int nid, struct node_memory_chunk_s *memory_chunk) |
| 182 | { | 182 | { |
| 183 | /* | 183 | /* |
| 184 | * Only add present memory as told by the e820. | 184 | * Only add present memory as told by the e820. |
| @@ -189,10 +189,10 @@ static __init void node_read_chunk(int nid, struct node_memory_chunk_s *memory_c | |||
| 189 | if (memory_chunk->start_pfn >= max_pfn) { | 189 | if (memory_chunk->start_pfn >= max_pfn) { |
| 190 | printk(KERN_INFO "Ignoring SRAT pfns: %08lx - %08lx\n", | 190 | printk(KERN_INFO "Ignoring SRAT pfns: %08lx - %08lx\n", |
| 191 | memory_chunk->start_pfn, memory_chunk->end_pfn); | 191 | memory_chunk->start_pfn, memory_chunk->end_pfn); |
| 192 | return; | 192 | return -1; |
| 193 | } | 193 | } |
| 194 | if (memory_chunk->nid != nid) | 194 | if (memory_chunk->nid != nid) |
| 195 | return; | 195 | return -1; |
| 196 | 196 | ||
| 197 | if (!node_has_online_mem(nid)) | 197 | if (!node_has_online_mem(nid)) |
| 198 | node_start_pfn[nid] = memory_chunk->start_pfn; | 198 | node_start_pfn[nid] = memory_chunk->start_pfn; |
| @@ -202,6 +202,8 @@ static __init void node_read_chunk(int nid, struct node_memory_chunk_s *memory_c | |||
| 202 | 202 | ||
| 203 | if (node_end_pfn[nid] < memory_chunk->end_pfn) | 203 | if (node_end_pfn[nid] < memory_chunk->end_pfn) |
| 204 | node_end_pfn[nid] = memory_chunk->end_pfn; | 204 | node_end_pfn[nid] = memory_chunk->end_pfn; |
| 205 | |||
| 206 | return 0; | ||
| 205 | } | 207 | } |
| 206 | 208 | ||
| 207 | int __init get_memcfg_from_srat(void) | 209 | int __init get_memcfg_from_srat(void) |
| @@ -259,7 +261,9 @@ int __init get_memcfg_from_srat(void) | |||
| 259 | printk(KERN_DEBUG | 261 | printk(KERN_DEBUG |
| 260 | "chunk %d nid %d start_pfn %08lx end_pfn %08lx\n", | 262 | "chunk %d nid %d start_pfn %08lx end_pfn %08lx\n", |
| 261 | j, chunk->nid, chunk->start_pfn, chunk->end_pfn); | 263 | j, chunk->nid, chunk->start_pfn, chunk->end_pfn); |
| 262 | node_read_chunk(chunk->nid, chunk); | 264 | if (node_read_chunk(chunk->nid, chunk)) |
| 265 | continue; | ||
| 266 | |||
| 263 | e820_register_active_regions(chunk->nid, chunk->start_pfn, | 267 | e820_register_active_regions(chunk->nid, chunk->start_pfn, |
| 264 | min(chunk->end_pfn, max_pfn)); | 268 | min(chunk->end_pfn, max_pfn)); |
| 265 | } | 269 | } |
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c index 3f90289410e6..0227694f7dab 100644 --- a/arch/x86/oprofile/nmi_int.c +++ b/arch/x86/oprofile/nmi_int.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
| 16 | #include <linux/moduleparam.h> | 16 | #include <linux/moduleparam.h> |
| 17 | #include <linux/kdebug.h> | 17 | #include <linux/kdebug.h> |
| 18 | #include <linux/cpu.h> | ||
| 18 | #include <asm/nmi.h> | 19 | #include <asm/nmi.h> |
| 19 | #include <asm/msr.h> | 20 | #include <asm/msr.h> |
| 20 | #include <asm/apic.h> | 21 | #include <asm/apic.h> |
| @@ -28,23 +29,48 @@ static DEFINE_PER_CPU(unsigned long, saved_lvtpc); | |||
| 28 | 29 | ||
| 29 | static int nmi_start(void); | 30 | static int nmi_start(void); |
| 30 | static void nmi_stop(void); | 31 | static void nmi_stop(void); |
| 32 | static void nmi_cpu_start(void *dummy); | ||
| 33 | static void nmi_cpu_stop(void *dummy); | ||
| 31 | 34 | ||
| 32 | /* 0 == registered but off, 1 == registered and on */ | 35 | /* 0 == registered but off, 1 == registered and on */ |
| 33 | static int nmi_enabled = 0; | 36 | static int nmi_enabled = 0; |
| 34 | 37 | ||
| 38 | #ifdef CONFIG_SMP | ||
| 39 | static int oprofile_cpu_notifier(struct notifier_block *b, unsigned long action, | ||
| 40 | void *data) | ||
| 41 | { | ||
| 42 | int cpu = (unsigned long)data; | ||
| 43 | switch (action) { | ||
| 44 | case CPU_DOWN_FAILED: | ||
| 45 | case CPU_ONLINE: | ||
| 46 | smp_call_function_single(cpu, nmi_cpu_start, NULL, 0); | ||
| 47 | break; | ||
| 48 | case CPU_DOWN_PREPARE: | ||
| 49 | smp_call_function_single(cpu, nmi_cpu_stop, NULL, 1); | ||
| 50 | break; | ||
| 51 | } | ||
| 52 | return NOTIFY_DONE; | ||
| 53 | } | ||
| 54 | |||
| 55 | static struct notifier_block oprofile_cpu_nb = { | ||
| 56 | .notifier_call = oprofile_cpu_notifier | ||
| 57 | }; | ||
| 58 | #endif | ||
| 59 | |||
| 35 | #ifdef CONFIG_PM | 60 | #ifdef CONFIG_PM |
| 36 | 61 | ||
| 37 | static int nmi_suspend(struct sys_device *dev, pm_message_t state) | 62 | static int nmi_suspend(struct sys_device *dev, pm_message_t state) |
| 38 | { | 63 | { |
| 64 | /* Only one CPU left, just stop that one */ | ||
| 39 | if (nmi_enabled == 1) | 65 | if (nmi_enabled == 1) |
| 40 | nmi_stop(); | 66 | nmi_cpu_stop(NULL); |
| 41 | return 0; | 67 | return 0; |
| 42 | } | 68 | } |
| 43 | 69 | ||
| 44 | static int nmi_resume(struct sys_device *dev) | 70 | static int nmi_resume(struct sys_device *dev) |
| 45 | { | 71 | { |
| 46 | if (nmi_enabled == 1) | 72 | if (nmi_enabled == 1) |
| 47 | nmi_start(); | 73 | nmi_cpu_start(NULL); |
| 48 | return 0; | 74 | return 0; |
| 49 | } | 75 | } |
| 50 | 76 | ||
| @@ -463,6 +489,9 @@ int __init op_nmi_init(struct oprofile_operations *ops) | |||
| 463 | } | 489 | } |
| 464 | 490 | ||
| 465 | init_sysfs(); | 491 | init_sysfs(); |
| 492 | #ifdef CONFIG_SMP | ||
| 493 | register_cpu_notifier(&oprofile_cpu_nb); | ||
| 494 | #endif | ||
| 466 | using_nmi = 1; | 495 | using_nmi = 1; |
| 467 | ops->create_files = nmi_create_files; | 496 | ops->create_files = nmi_create_files; |
| 468 | ops->setup = nmi_setup; | 497 | ops->setup = nmi_setup; |
| @@ -476,6 +505,10 @@ int __init op_nmi_init(struct oprofile_operations *ops) | |||
| 476 | 505 | ||
| 477 | void op_nmi_exit(void) | 506 | void op_nmi_exit(void) |
| 478 | { | 507 | { |
| 479 | if (using_nmi) | 508 | if (using_nmi) { |
| 480 | exit_sysfs(); | 509 | exit_sysfs(); |
| 510 | #ifdef CONFIG_SMP | ||
| 511 | unregister_cpu_notifier(&oprofile_cpu_nb); | ||
| 512 | #endif | ||
| 513 | } | ||
| 481 | } | 514 | } |
diff --git a/arch/x86/pci/amd_bus.c b/arch/x86/pci/amd_bus.c index dbf532369711..6a0fca78c362 100644 --- a/arch/x86/pci/amd_bus.c +++ b/arch/x86/pci/amd_bus.c | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #include <linux/init.h> | 1 | #include <linux/init.h> |
| 2 | #include <linux/pci.h> | 2 | #include <linux/pci.h> |
| 3 | #include <linux/topology.h> | 3 | #include <linux/topology.h> |
| 4 | #include <linux/cpu.h> | ||
| 4 | #include "pci.h" | 5 | #include "pci.h" |
| 5 | 6 | ||
| 6 | #ifdef CONFIG_X86_64 | 7 | #ifdef CONFIG_X86_64 |
| @@ -555,15 +556,17 @@ static int __init early_fill_mp_bus_info(void) | |||
| 555 | return 0; | 556 | return 0; |
| 556 | } | 557 | } |
| 557 | 558 | ||
| 558 | postcore_initcall(early_fill_mp_bus_info); | 559 | #else /* !CONFIG_X86_64 */ |
| 559 | 560 | ||
| 560 | #endif | 561 | static int __init early_fill_mp_bus_info(void) { return 0; } |
| 562 | |||
| 563 | #endif /* !CONFIG_X86_64 */ | ||
| 561 | 564 | ||
| 562 | /* common 32/64 bit code */ | 565 | /* common 32/64 bit code */ |
| 563 | 566 | ||
| 564 | #define ENABLE_CF8_EXT_CFG (1ULL << 46) | 567 | #define ENABLE_CF8_EXT_CFG (1ULL << 46) |
| 565 | 568 | ||
| 566 | static void enable_pci_io_ecs_per_cpu(void *unused) | 569 | static void enable_pci_io_ecs(void *unused) |
| 567 | { | 570 | { |
| 568 | u64 reg; | 571 | u64 reg; |
| 569 | rdmsrl(MSR_AMD64_NB_CFG, reg); | 572 | rdmsrl(MSR_AMD64_NB_CFG, reg); |
| @@ -573,14 +576,51 @@ static void enable_pci_io_ecs_per_cpu(void *unused) | |||
| 573 | } | 576 | } |
| 574 | } | 577 | } |
| 575 | 578 | ||
| 576 | static int __init enable_pci_io_ecs(void) | 579 | static int __cpuinit amd_cpu_notify(struct notifier_block *self, |
| 580 | unsigned long action, void *hcpu) | ||
| 577 | { | 581 | { |
| 582 | int cpu = (long)hcpu; | ||
| 583 | switch(action) { | ||
| 584 | case CPU_ONLINE: | ||
| 585 | case CPU_ONLINE_FROZEN: | ||
| 586 | smp_call_function_single(cpu, enable_pci_io_ecs, NULL, 0); | ||
| 587 | break; | ||
| 588 | default: | ||
| 589 | break; | ||
| 590 | } | ||
| 591 | return NOTIFY_OK; | ||
| 592 | } | ||
| 593 | |||
| 594 | static struct notifier_block __cpuinitdata amd_cpu_notifier = { | ||
| 595 | .notifier_call = amd_cpu_notify, | ||
| 596 | }; | ||
| 597 | |||
| 598 | static int __init pci_io_ecs_init(void) | ||
| 599 | { | ||
| 600 | int cpu; | ||
| 601 | |||
| 578 | /* assume all cpus from fam10h have IO ECS */ | 602 | /* assume all cpus from fam10h have IO ECS */ |
| 579 | if (boot_cpu_data.x86 < 0x10) | 603 | if (boot_cpu_data.x86 < 0x10) |
| 580 | return 0; | 604 | return 0; |
| 581 | on_each_cpu(enable_pci_io_ecs_per_cpu, NULL, 1); | 605 | |
| 606 | register_cpu_notifier(&amd_cpu_notifier); | ||
| 607 | for_each_online_cpu(cpu) | ||
| 608 | amd_cpu_notify(&amd_cpu_notifier, (unsigned long)CPU_ONLINE, | ||
| 609 | (void *)(long)cpu); | ||
| 582 | pci_probe |= PCI_HAS_IO_ECS; | 610 | pci_probe |= PCI_HAS_IO_ECS; |
| 611 | |||
| 612 | return 0; | ||
| 613 | } | ||
| 614 | |||
| 615 | static int __init amd_postcore_init(void) | ||
| 616 | { | ||
| 617 | if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) | ||
| 618 | return 0; | ||
| 619 | |||
| 620 | early_fill_mp_bus_info(); | ||
| 621 | pci_io_ecs_init(); | ||
| 622 | |||
| 583 | return 0; | 623 | return 0; |
| 584 | } | 624 | } |
| 585 | 625 | ||
| 586 | postcore_initcall(enable_pci_io_ecs); | 626 | postcore_initcall(amd_postcore_init); |
diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c index 5807d1bc73f7..8791fc55e715 100644 --- a/arch/x86/pci/i386.c +++ b/arch/x86/pci/i386.c | |||
| @@ -128,8 +128,7 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list) | |||
| 128 | pr = pci_find_parent_resource(dev, r); | 128 | pr = pci_find_parent_resource(dev, r); |
| 129 | if (!r->start || !pr || | 129 | if (!r->start || !pr || |
| 130 | request_resource(pr, r) < 0) { | 130 | request_resource(pr, r) < 0) { |
| 131 | dev_err(&dev->dev, "BAR %d: can't " | 131 | dev_err(&dev->dev, "BAR %d: can't allocate resource\n", idx); |
| 132 | "allocate resource\n", idx); | ||
| 133 | /* | 132 | /* |
| 134 | * Something is wrong with the region. | 133 | * Something is wrong with the region. |
| 135 | * Invalidate the resource to prevent | 134 | * Invalidate the resource to prevent |
| @@ -164,15 +163,13 @@ static void __init pcibios_allocate_resources(int pass) | |||
| 164 | else | 163 | else |
| 165 | disabled = !(command & PCI_COMMAND_MEMORY); | 164 | disabled = !(command & PCI_COMMAND_MEMORY); |
| 166 | if (pass == disabled) { | 165 | if (pass == disabled) { |
| 167 | dev_dbg(&dev->dev, "resource %#08llx-%#08llx " | 166 | dev_dbg(&dev->dev, "resource %#08llx-%#08llx (f=%lx, d=%d, p=%d)\n", |
| 168 | "(f=%lx, d=%d, p=%d)\n", | ||
| 169 | (unsigned long long) r->start, | 167 | (unsigned long long) r->start, |
| 170 | (unsigned long long) r->end, | 168 | (unsigned long long) r->end, |
| 171 | r->flags, disabled, pass); | 169 | r->flags, disabled, pass); |
| 172 | pr = pci_find_parent_resource(dev, r); | 170 | pr = pci_find_parent_resource(dev, r); |
| 173 | if (!pr || request_resource(pr, r) < 0) { | 171 | if (!pr || request_resource(pr, r) < 0) { |
| 174 | dev_err(&dev->dev, "BAR %d: can't " | 172 | dev_err(&dev->dev, "BAR %d: can't allocate resource\n", idx); |
| 175 | "allocate resource\n", idx); | ||
| 176 | /* We'll assign a new address later */ | 173 | /* We'll assign a new address later */ |
| 177 | r->end -= r->start; | 174 | r->end -= r->start; |
| 178 | r->start = 0; | 175 | r->start = 0; |
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c index fec0123b33a9..8e077185e185 100644 --- a/arch/x86/pci/irq.c +++ b/arch/x86/pci/irq.c | |||
| @@ -590,6 +590,8 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route | |||
| 590 | case PCI_DEVICE_ID_INTEL_ICH10_1: | 590 | case PCI_DEVICE_ID_INTEL_ICH10_1: |
| 591 | case PCI_DEVICE_ID_INTEL_ICH10_2: | 591 | case PCI_DEVICE_ID_INTEL_ICH10_2: |
| 592 | case PCI_DEVICE_ID_INTEL_ICH10_3: | 592 | case PCI_DEVICE_ID_INTEL_ICH10_3: |
| 593 | case PCI_DEVICE_ID_INTEL_PCH_0: | ||
| 594 | case PCI_DEVICE_ID_INTEL_PCH_1: | ||
| 593 | r->name = "PIIX/ICH"; | 595 | r->name = "PIIX/ICH"; |
| 594 | r->get = pirq_piix_get; | 596 | r->get = pirq_piix_get; |
| 595 | r->set = pirq_piix_set; | 597 | r->set = pirq_piix_set; |
diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c index ec9ce35e44d6..b722dd481b39 100644 --- a/arch/x86/pci/legacy.c +++ b/arch/x86/pci/legacy.c | |||
| @@ -14,7 +14,7 @@ static void __devinit pcibios_fixup_peer_bridges(void) | |||
| 14 | int n, devfn; | 14 | int n, devfn; |
| 15 | long node; | 15 | long node; |
| 16 | 16 | ||
| 17 | if (pcibios_last_bus <= 0 || pcibios_last_bus >= 0xff) | 17 | if (pcibios_last_bus <= 0 || pcibios_last_bus > 0xff) |
| 18 | return; | 18 | return; |
| 19 | DBG("PCI: Peer bridge fixup\n"); | 19 | DBG("PCI: Peer bridge fixup\n"); |
| 20 | 20 | ||
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c index 23faaa890ffc..d9635764ce3d 100644 --- a/arch/x86/pci/mmconfig-shared.c +++ b/arch/x86/pci/mmconfig-shared.c | |||
| @@ -293,7 +293,7 @@ static acpi_status __init find_mboard_resource(acpi_handle handle, u32 lvl, | |||
| 293 | return AE_OK; | 293 | return AE_OK; |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | static int __init is_acpi_reserved(unsigned long start, unsigned long end) | 296 | static int __init is_acpi_reserved(u64 start, u64 end, unsigned not_used) |
| 297 | { | 297 | { |
| 298 | struct resource mcfg_res; | 298 | struct resource mcfg_res; |
| 299 | 299 | ||
| @@ -310,6 +310,41 @@ static int __init is_acpi_reserved(unsigned long start, unsigned long end) | |||
| 310 | return mcfg_res.flags; | 310 | return mcfg_res.flags; |
| 311 | } | 311 | } |
| 312 | 312 | ||
| 313 | typedef int (*check_reserved_t)(u64 start, u64 end, unsigned type); | ||
| 314 | |||
| 315 | static int __init is_mmconf_reserved(check_reserved_t is_reserved, | ||
| 316 | u64 addr, u64 size, int i, | ||
| 317 | typeof(pci_mmcfg_config[0]) *cfg, int with_e820) | ||
| 318 | { | ||
| 319 | u64 old_size = size; | ||
| 320 | int valid = 0; | ||
| 321 | |||
| 322 | while (!is_reserved(addr, addr + size - 1, E820_RESERVED)) { | ||
| 323 | size >>= 1; | ||
| 324 | if (size < (16UL<<20)) | ||
| 325 | break; | ||
| 326 | } | ||
| 327 | |||
| 328 | if (size >= (16UL<<20) || size == old_size) { | ||
| 329 | printk(KERN_NOTICE | ||
| 330 | "PCI: MCFG area at %Lx reserved in %s\n", | ||
| 331 | addr, with_e820?"E820":"ACPI motherboard resources"); | ||
| 332 | valid = 1; | ||
| 333 | |||
| 334 | if (old_size != size) { | ||
| 335 | /* update end_bus_number */ | ||
| 336 | cfg->end_bus_number = cfg->start_bus_number + ((size>>20) - 1); | ||
| 337 | printk(KERN_NOTICE "PCI: updated MCFG configuration %d: base %lx " | ||
| 338 | "segment %hu buses %u - %u\n", | ||
| 339 | i, (unsigned long)cfg->address, cfg->pci_segment, | ||
| 340 | (unsigned int)cfg->start_bus_number, | ||
| 341 | (unsigned int)cfg->end_bus_number); | ||
| 342 | } | ||
| 343 | } | ||
| 344 | |||
| 345 | return valid; | ||
| 346 | } | ||
| 347 | |||
| 313 | static void __init pci_mmcfg_reject_broken(int early) | 348 | static void __init pci_mmcfg_reject_broken(int early) |
| 314 | { | 349 | { |
| 315 | typeof(pci_mmcfg_config[0]) *cfg; | 350 | typeof(pci_mmcfg_config[0]) *cfg; |
| @@ -324,21 +359,22 @@ static void __init pci_mmcfg_reject_broken(int early) | |||
| 324 | 359 | ||
| 325 | for (i = 0; i < pci_mmcfg_config_num; i++) { | 360 | for (i = 0; i < pci_mmcfg_config_num; i++) { |
| 326 | int valid = 0; | 361 | int valid = 0; |
| 327 | u32 size = (cfg->end_bus_number + 1) << 20; | 362 | u64 addr, size; |
| 363 | |||
| 328 | cfg = &pci_mmcfg_config[i]; | 364 | cfg = &pci_mmcfg_config[i]; |
| 365 | addr = cfg->start_bus_number; | ||
| 366 | addr <<= 20; | ||
| 367 | addr += cfg->address; | ||
| 368 | size = cfg->end_bus_number + 1 - cfg->start_bus_number; | ||
| 369 | size <<= 20; | ||
| 329 | printk(KERN_NOTICE "PCI: MCFG configuration %d: base %lx " | 370 | printk(KERN_NOTICE "PCI: MCFG configuration %d: base %lx " |
| 330 | "segment %hu buses %u - %u\n", | 371 | "segment %hu buses %u - %u\n", |
| 331 | i, (unsigned long)cfg->address, cfg->pci_segment, | 372 | i, (unsigned long)cfg->address, cfg->pci_segment, |
| 332 | (unsigned int)cfg->start_bus_number, | 373 | (unsigned int)cfg->start_bus_number, |
| 333 | (unsigned int)cfg->end_bus_number); | 374 | (unsigned int)cfg->end_bus_number); |
| 334 | 375 | ||
| 335 | if (!early && | 376 | if (!early) |
| 336 | is_acpi_reserved(cfg->address, cfg->address + size - 1)) { | 377 | valid = is_mmconf_reserved(is_acpi_reserved, addr, size, i, cfg, 0); |
| 337 | printk(KERN_NOTICE "PCI: MCFG area at %Lx reserved " | ||
| 338 | "in ACPI motherboard resources\n", | ||
| 339 | cfg->address); | ||
| 340 | valid = 1; | ||
| 341 | } | ||
| 342 | 378 | ||
| 343 | if (valid) | 379 | if (valid) |
| 344 | continue; | 380 | continue; |
| @@ -347,16 +383,11 @@ static void __init pci_mmcfg_reject_broken(int early) | |||
| 347 | printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %Lx is not" | 383 | printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %Lx is not" |
| 348 | " reserved in ACPI motherboard resources\n", | 384 | " reserved in ACPI motherboard resources\n", |
| 349 | cfg->address); | 385 | cfg->address); |
| 386 | |||
| 350 | /* Don't try to do this check unless configuration | 387 | /* Don't try to do this check unless configuration |
| 351 | type 1 is available. how about type 2 ?*/ | 388 | type 1 is available. how about type 2 ?*/ |
| 352 | if (raw_pci_ops && e820_all_mapped(cfg->address, | 389 | if (raw_pci_ops) |
| 353 | cfg->address + size - 1, | 390 | valid = is_mmconf_reserved(e820_all_mapped, addr, size, i, cfg, 1); |
| 354 | E820_RESERVED)) { | ||
| 355 | printk(KERN_NOTICE | ||
| 356 | "PCI: MCFG area at %Lx reserved in E820\n", | ||
| 357 | cfg->address); | ||
| 358 | valid = 1; | ||
| 359 | } | ||
| 360 | 391 | ||
| 361 | if (!valid) | 392 | if (!valid) |
| 362 | goto reject; | 393 | goto reject; |
| @@ -365,7 +396,7 @@ static void __init pci_mmcfg_reject_broken(int early) | |||
| 365 | return; | 396 | return; |
| 366 | 397 | ||
| 367 | reject: | 398 | reject: |
| 368 | printk(KERN_ERR "PCI: Not using MMCONFIG.\n"); | 399 | printk(KERN_INFO "PCI: Not using MMCONFIG.\n"); |
| 369 | pci_mmcfg_arch_free(); | 400 | pci_mmcfg_arch_free(); |
| 370 | kfree(pci_mmcfg_config); | 401 | kfree(pci_mmcfg_config); |
| 371 | pci_mmcfg_config = NULL; | 402 | pci_mmcfg_config = NULL; |
diff --git a/arch/x86/power/cpu_32.c b/arch/x86/power/cpu_32.c index 7dc5d5cf50a2..d3e083dea720 100644 --- a/arch/x86/power/cpu_32.c +++ b/arch/x86/power/cpu_32.c | |||
| @@ -45,7 +45,7 @@ static void __save_processor_state(struct saved_context *ctxt) | |||
| 45 | ctxt->cr0 = read_cr0(); | 45 | ctxt->cr0 = read_cr0(); |
| 46 | ctxt->cr2 = read_cr2(); | 46 | ctxt->cr2 = read_cr2(); |
| 47 | ctxt->cr3 = read_cr3(); | 47 | ctxt->cr3 = read_cr3(); |
| 48 | ctxt->cr4 = read_cr4(); | 48 | ctxt->cr4 = read_cr4_safe(); |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | /* Needed by apm.c */ | 51 | /* Needed by apm.c */ |
| @@ -98,7 +98,9 @@ static void __restore_processor_state(struct saved_context *ctxt) | |||
| 98 | /* | 98 | /* |
| 99 | * control registers | 99 | * control registers |
| 100 | */ | 100 | */ |
| 101 | write_cr4(ctxt->cr4); | 101 | /* cr4 was introduced in the Pentium CPU */ |
| 102 | if (ctxt->cr4) | ||
| 103 | write_cr4(ctxt->cr4); | ||
| 102 | write_cr3(ctxt->cr3); | 104 | write_cr3(ctxt->cr3); |
| 103 | write_cr2(ctxt->cr2); | 105 | write_cr2(ctxt->cr2); |
| 104 | write_cr0(ctxt->cr0); | 106 | write_cr0(ctxt->cr0); |
diff --git a/arch/x86/power/hibernate_asm_32.S b/arch/x86/power/hibernate_asm_32.S index b95aa6cfe3cb..4fc7e872c85e 100644 --- a/arch/x86/power/hibernate_asm_32.S +++ b/arch/x86/power/hibernate_asm_32.S | |||
| @@ -28,9 +28,9 @@ ENTRY(swsusp_arch_suspend) | |||
| 28 | ret | 28 | ret |
| 29 | 29 | ||
| 30 | ENTRY(restore_image) | 30 | ENTRY(restore_image) |
| 31 | movl resume_pg_dir, %ecx | 31 | movl resume_pg_dir, %eax |
| 32 | subl $__PAGE_OFFSET, %ecx | 32 | subl $__PAGE_OFFSET, %eax |
| 33 | movl %ecx, %cr3 | 33 | movl %eax, %cr3 |
| 34 | 34 | ||
| 35 | movl restore_pblist, %edx | 35 | movl restore_pblist, %edx |
| 36 | .p2align 4,,7 | 36 | .p2align 4,,7 |
| @@ -52,17 +52,21 @@ copy_loop: | |||
| 52 | 52 | ||
| 53 | done: | 53 | done: |
| 54 | /* go back to the original page tables */ | 54 | /* go back to the original page tables */ |
| 55 | movl $swapper_pg_dir, %ecx | 55 | movl $swapper_pg_dir, %eax |
| 56 | subl $__PAGE_OFFSET, %ecx | 56 | subl $__PAGE_OFFSET, %eax |
| 57 | movl %ecx, %cr3 | 57 | movl %eax, %cr3 |
| 58 | /* Flush TLB, including "global" things (vmalloc) */ | 58 | /* Flush TLB, including "global" things (vmalloc) */ |
| 59 | movl mmu_cr4_features, %eax | 59 | movl mmu_cr4_features, %ecx |
| 60 | movl %eax, %edx | 60 | jecxz 1f # cr4 Pentium and higher, skip if zero |
| 61 | movl %ecx, %edx | ||
| 61 | andl $~(1<<7), %edx; # PGE | 62 | andl $~(1<<7), %edx; # PGE |
| 62 | movl %edx, %cr4; # turn off PGE | 63 | movl %edx, %cr4; # turn off PGE |
| 63 | movl %cr3, %ecx; # flush TLB | 64 | 1: |
| 64 | movl %ecx, %cr3 | 65 | movl %cr3, %eax; # flush TLB |
| 65 | movl %eax, %cr4; # turn PGE back on | 66 | movl %eax, %cr3 |
| 67 | jecxz 1f # cr4 Pentium and higher, skip if zero | ||
| 68 | movl %ecx, %cr4; # turn PGE back on | ||
| 69 | 1: | ||
| 66 | 70 | ||
| 67 | movl saved_context_esp, %esp | 71 | movl saved_context_esp, %esp |
| 68 | movl saved_context_ebp, %ebp | 72 | movl saved_context_ebp, %ebp |
