diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 |
| commit | 1ebbe2b20091d306453a5cf480a87e6cd28ae76f (patch) | |
| tree | f5cd7a0fa69b8b1938cb5a0faed2e7b0628072a5 /arch/i386 | |
| parent | ac58c9059da8886b5e8cde012a80266b18ca146e (diff) | |
| parent | 674a396c6d2ba0341ebdd7c1c9950f32f018e2dd (diff) | |
Merge branch 'linus'
Diffstat (limited to 'arch/i386')
49 files changed, 1564 insertions, 833 deletions
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 5b1a7d46d1d9..bfea1bedcbf2 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
| @@ -80,6 +80,7 @@ config X86_VOYAGER | |||
| 80 | 80 | ||
| 81 | config X86_NUMAQ | 81 | config X86_NUMAQ |
| 82 | bool "NUMAQ (IBM/Sequent)" | 82 | bool "NUMAQ (IBM/Sequent)" |
| 83 | select SMP | ||
| 83 | select NUMA | 84 | select NUMA |
| 84 | help | 85 | help |
| 85 | This option is used for getting Linux to run on a (IBM/Sequent) NUMA | 86 | This option is used for getting Linux to run on a (IBM/Sequent) NUMA |
| @@ -400,6 +401,7 @@ choice | |||
| 400 | 401 | ||
| 401 | config NOHIGHMEM | 402 | config NOHIGHMEM |
| 402 | bool "off" | 403 | bool "off" |
| 404 | depends on !X86_NUMAQ | ||
| 403 | ---help--- | 405 | ---help--- |
| 404 | Linux can use up to 64 Gigabytes of physical memory on x86 systems. | 406 | Linux can use up to 64 Gigabytes of physical memory on x86 systems. |
| 405 | However, the address space of 32-bit x86 processors is only 4 | 407 | However, the address space of 32-bit x86 processors is only 4 |
| @@ -436,6 +438,7 @@ config NOHIGHMEM | |||
| 436 | 438 | ||
| 437 | config HIGHMEM4G | 439 | config HIGHMEM4G |
| 438 | bool "4GB" | 440 | bool "4GB" |
| 441 | depends on !X86_NUMAQ | ||
| 439 | help | 442 | help |
| 440 | Select this if you have a 32-bit processor and between 1 and 4 | 443 | Select this if you have a 32-bit processor and between 1 and 4 |
| 441 | gigabytes of physical RAM. | 444 | gigabytes of physical RAM. |
| @@ -503,10 +506,6 @@ config NUMA | |||
| 503 | default n if X86_PC | 506 | default n if X86_PC |
| 504 | default y if (X86_NUMAQ || X86_SUMMIT) | 507 | default y if (X86_NUMAQ || X86_SUMMIT) |
| 505 | 508 | ||
| 506 | # Need comments to help the hapless user trying to turn on NUMA support | ||
| 507 | comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support" | ||
| 508 | depends on X86_NUMAQ && (!HIGHMEM64G || !SMP) | ||
| 509 | |||
| 510 | comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" | 509 | comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" |
| 511 | depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI) | 510 | depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI) |
| 512 | 511 | ||
| @@ -660,13 +659,18 @@ config BOOT_IOREMAP | |||
| 660 | default y | 659 | default y |
| 661 | 660 | ||
| 662 | config REGPARM | 661 | config REGPARM |
| 663 | bool "Use register arguments (EXPERIMENTAL)" | 662 | bool "Use register arguments" |
| 664 | depends on EXPERIMENTAL | 663 | default y |
| 665 | default n | ||
| 666 | help | 664 | help |
| 667 | Compile the kernel with -mregparm=3. This uses a different ABI | 665 | Compile the kernel with -mregparm=3. This instructs gcc to use |
| 668 | and passes the first three arguments of a function call in registers. | 666 | a more efficient function call ABI which passes the first three |
| 669 | This will probably break binary only modules. | 667 | arguments of a function call via registers, which results in denser |
| 668 | and faster code. | ||
| 669 | |||
| 670 | If this option is disabled, then the default ABI of passing | ||
| 671 | arguments via the stack is used. | ||
| 672 | |||
| 673 | If unsure, say Y. | ||
| 670 | 674 | ||
| 671 | config SECCOMP | 675 | config SECCOMP |
| 672 | bool "Enable seccomp to safely compute untrusted bytecode" | 676 | bool "Enable seccomp to safely compute untrusted bytecode" |
diff --git a/arch/i386/Kconfig.debug b/arch/i386/Kconfig.debug index bf32ecc9ad04..00108ba9a78d 100644 --- a/arch/i386/Kconfig.debug +++ b/arch/i386/Kconfig.debug | |||
| @@ -31,6 +31,15 @@ config DEBUG_STACK_USAGE | |||
| 31 | 31 | ||
| 32 | This option will slow down process creation somewhat. | 32 | This option will slow down process creation somewhat. |
| 33 | 33 | ||
| 34 | config STACK_BACKTRACE_COLS | ||
| 35 | int "Stack backtraces per line" if DEBUG_KERNEL | ||
| 36 | range 1 3 | ||
| 37 | default 2 | ||
| 38 | help | ||
| 39 | Selects how many stack backtrace entries per line to display. | ||
| 40 | |||
| 41 | This can save screen space when displaying traces. | ||
| 42 | |||
| 34 | comment "Page alloc debug is incompatible with Software Suspend on i386" | 43 | comment "Page alloc debug is incompatible with Software Suspend on i386" |
| 35 | depends on DEBUG_KERNEL && SOFTWARE_SUSPEND | 44 | depends on DEBUG_KERNEL && SOFTWARE_SUSPEND |
| 36 | 45 | ||
diff --git a/arch/i386/defconfig b/arch/i386/defconfig index 3cbe6e9cb9fc..1629c3ac9bee 100644 --- a/arch/i386/defconfig +++ b/arch/i386/defconfig | |||
| @@ -1,49 +1,87 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # | 3 | # |
| 4 | CONFIG_X86_32=y | ||
| 5 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 4 | CONFIG_X86=y | 6 | CONFIG_X86=y |
| 5 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 6 | CONFIG_UID16=y | ||
| 7 | CONFIG_GENERIC_ISA_DMA=y | 8 | CONFIG_GENERIC_ISA_DMA=y |
| 9 | CONFIG_GENERIC_IOMAP=y | ||
| 10 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 11 | CONFIG_DMI=y | ||
| 8 | 12 | ||
| 9 | # | 13 | # |
| 10 | # Code maturity level options | 14 | # Code maturity level options |
| 11 | # | 15 | # |
| 12 | CONFIG_EXPERIMENTAL=y | 16 | CONFIG_EXPERIMENTAL=y |
| 13 | CONFIG_CLEAN_COMPILE=y | 17 | CONFIG_BROKEN_ON_SMP=y |
| 14 | CONFIG_STANDALONE=y | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 15 | 19 | ||
| 16 | # | 20 | # |
| 17 | # General setup | 21 | # General setup |
| 18 | # | 22 | # |
| 23 | CONFIG_LOCALVERSION="" | ||
| 24 | # CONFIG_LOCALVERSION_AUTO is not set | ||
| 19 | CONFIG_SWAP=y | 25 | CONFIG_SWAP=y |
| 20 | CONFIG_SYSVIPC=y | 26 | CONFIG_SYSVIPC=y |
| 21 | CONFIG_POSIX_MQUEUE=y | 27 | # CONFIG_POSIX_MQUEUE is not set |
| 22 | # CONFIG_BSD_PROCESS_ACCT is not set | 28 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 23 | CONFIG_SYSCTL=y | 29 | CONFIG_SYSCTL=y |
| 24 | CONFIG_AUDIT=y | 30 | # CONFIG_AUDIT is not set |
| 25 | CONFIG_AUDITSYSCALL=y | 31 | CONFIG_IKCONFIG=y |
| 26 | CONFIG_LOG_BUF_SHIFT=15 | 32 | CONFIG_IKCONFIG_PROC=y |
| 27 | CONFIG_HOTPLUG=y | 33 | CONFIG_INITRAMFS_SOURCE="" |
| 28 | # CONFIG_IKCONFIG is not set | 34 | CONFIG_UID16=y |
| 35 | CONFIG_VM86=y | ||
| 36 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 29 | # CONFIG_EMBEDDED is not set | 37 | # CONFIG_EMBEDDED is not set |
| 30 | CONFIG_KALLSYMS=y | 38 | CONFIG_KALLSYMS=y |
| 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 40 | CONFIG_HOTPLUG=y | ||
| 41 | CONFIG_PRINTK=y | ||
| 42 | CONFIG_BUG=y | ||
| 43 | CONFIG_ELF_CORE=y | ||
| 44 | CONFIG_BASE_FULL=y | ||
| 31 | CONFIG_FUTEX=y | 45 | CONFIG_FUTEX=y |
| 32 | CONFIG_EPOLL=y | 46 | CONFIG_EPOLL=y |
| 33 | CONFIG_IOSCHED_NOOP=y | 47 | CONFIG_SHMEM=y |
| 34 | CONFIG_IOSCHED_AS=y | 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
| 35 | CONFIG_IOSCHED_DEADLINE=y | 49 | CONFIG_CC_ALIGN_LABELS=0 |
| 36 | CONFIG_IOSCHED_CFQ=y | 50 | CONFIG_CC_ALIGN_LOOPS=0 |
| 37 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 51 | CONFIG_CC_ALIGN_JUMPS=0 |
| 52 | CONFIG_SLAB=y | ||
| 53 | # CONFIG_TINY_SHMEM is not set | ||
| 54 | CONFIG_BASE_SMALL=0 | ||
| 55 | # CONFIG_SLOB is not set | ||
| 38 | 56 | ||
| 39 | # | 57 | # |
| 40 | # Loadable module support | 58 | # Loadable module support |
| 41 | # | 59 | # |
| 42 | CONFIG_MODULES=y | 60 | CONFIG_MODULES=y |
| 43 | # CONFIG_MODULE_UNLOAD is not set | 61 | CONFIG_MODULE_UNLOAD=y |
| 62 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 44 | CONFIG_OBSOLETE_MODPARM=y | 63 | CONFIG_OBSOLETE_MODPARM=y |
| 45 | # CONFIG_MODVERSIONS is not set | 64 | # CONFIG_MODVERSIONS is not set |
| 46 | CONFIG_KMOD=y | 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 66 | # CONFIG_KMOD is not set | ||
| 67 | |||
| 68 | # | ||
| 69 | # Block layer | ||
| 70 | # | ||
| 71 | # CONFIG_LBD is not set | ||
| 72 | |||
| 73 | # | ||
| 74 | # IO Schedulers | ||
| 75 | # | ||
| 76 | CONFIG_IOSCHED_NOOP=y | ||
| 77 | # CONFIG_IOSCHED_AS is not set | ||
| 78 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 79 | CONFIG_IOSCHED_CFQ=y | ||
| 80 | # CONFIG_DEFAULT_AS is not set | ||
| 81 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 82 | CONFIG_DEFAULT_CFQ=y | ||
| 83 | # CONFIG_DEFAULT_NOOP is not set | ||
| 84 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 47 | 85 | ||
| 48 | # | 86 | # |
| 49 | # Processor type and features | 87 | # Processor type and features |
| @@ -66,43 +104,50 @@ CONFIG_X86_PC=y | |||
| 66 | # CONFIG_MPENTIUMII is not set | 104 | # CONFIG_MPENTIUMII is not set |
| 67 | # CONFIG_MPENTIUMIII is not set | 105 | # CONFIG_MPENTIUMIII is not set |
| 68 | # CONFIG_MPENTIUMM is not set | 106 | # CONFIG_MPENTIUMM is not set |
| 69 | CONFIG_MPENTIUM4=y | 107 | # CONFIG_MPENTIUM4 is not set |
| 70 | # CONFIG_MK6 is not set | 108 | # CONFIG_MK6 is not set |
| 71 | # CONFIG_MK7 is not set | 109 | CONFIG_MK7=y |
| 72 | # CONFIG_MK8 is not set | 110 | # CONFIG_MK8 is not set |
| 73 | # CONFIG_MCRUSOE is not set | 111 | # CONFIG_MCRUSOE is not set |
| 74 | # CONFIG_MEFFICEON is not set | 112 | # CONFIG_MEFFICEON is not set |
| 75 | # CONFIG_MWINCHIPC6 is not set | 113 | # CONFIG_MWINCHIPC6 is not set |
| 76 | # CONFIG_MWINCHIP2 is not set | 114 | # CONFIG_MWINCHIP2 is not set |
| 77 | # CONFIG_MWINCHIP3D is not set | 115 | # CONFIG_MWINCHIP3D is not set |
| 116 | # CONFIG_MGEODEGX1 is not set | ||
| 117 | # CONFIG_MGEODE_LX is not set | ||
| 78 | # CONFIG_MCYRIXIII is not set | 118 | # CONFIG_MCYRIXIII is not set |
| 79 | # CONFIG_MVIAC3_2 is not set | 119 | # CONFIG_MVIAC3_2 is not set |
| 80 | # CONFIG_X86_GENERIC is not set | 120 | # CONFIG_X86_GENERIC is not set |
| 81 | CONFIG_X86_CMPXCHG=y | 121 | CONFIG_X86_CMPXCHG=y |
| 82 | CONFIG_X86_XADD=y | 122 | CONFIG_X86_XADD=y |
| 83 | CONFIG_X86_L1_CACHE_SHIFT=7 | 123 | CONFIG_X86_L1_CACHE_SHIFT=6 |
| 84 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 124 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 125 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 85 | CONFIG_X86_WP_WORKS_OK=y | 126 | CONFIG_X86_WP_WORKS_OK=y |
| 86 | CONFIG_X86_INVLPG=y | 127 | CONFIG_X86_INVLPG=y |
| 87 | CONFIG_X86_BSWAP=y | 128 | CONFIG_X86_BSWAP=y |
| 88 | CONFIG_X86_POPAD_OK=y | 129 | CONFIG_X86_POPAD_OK=y |
| 130 | CONFIG_X86_CMPXCHG64=y | ||
| 89 | CONFIG_X86_GOOD_APIC=y | 131 | CONFIG_X86_GOOD_APIC=y |
| 90 | CONFIG_X86_INTEL_USERCOPY=y | 132 | CONFIG_X86_INTEL_USERCOPY=y |
| 91 | CONFIG_X86_USE_PPRO_CHECKSUM=y | 133 | CONFIG_X86_USE_PPRO_CHECKSUM=y |
| 134 | CONFIG_X86_USE_3DNOW=y | ||
| 135 | CONFIG_X86_TSC=y | ||
| 92 | # CONFIG_HPET_TIMER is not set | 136 | # CONFIG_HPET_TIMER is not set |
| 93 | # CONFIG_HPET_EMULATE_RTC is not set | 137 | # CONFIG_SMP is not set |
| 94 | CONFIG_SMP=y | 138 | CONFIG_PREEMPT_NONE=y |
| 95 | CONFIG_NR_CPUS=8 | 139 | # CONFIG_PREEMPT_VOLUNTARY is not set |
| 96 | CONFIG_SCHED_SMT=y | 140 | # CONFIG_PREEMPT is not set |
| 97 | CONFIG_PREEMPT=y | 141 | CONFIG_X86_UP_APIC=y |
| 142 | CONFIG_X86_UP_IOAPIC=y | ||
| 98 | CONFIG_X86_LOCAL_APIC=y | 143 | CONFIG_X86_LOCAL_APIC=y |
| 99 | CONFIG_X86_IO_APIC=y | 144 | CONFIG_X86_IO_APIC=y |
| 100 | CONFIG_X86_TSC=y | ||
| 101 | CONFIG_X86_MCE=y | 145 | CONFIG_X86_MCE=y |
| 102 | CONFIG_X86_MCE_NONFATAL=y | 146 | CONFIG_X86_MCE_NONFATAL=y |
| 103 | CONFIG_X86_MCE_P4THERMAL=y | 147 | # CONFIG_X86_MCE_P4THERMAL is not set |
| 104 | # CONFIG_TOSHIBA is not set | 148 | # CONFIG_TOSHIBA is not set |
| 105 | # CONFIG_I8K is not set | 149 | # CONFIG_I8K is not set |
| 150 | # CONFIG_X86_REBOOTFIXUPS is not set | ||
| 106 | # CONFIG_MICROCODE is not set | 151 | # CONFIG_MICROCODE is not set |
| 107 | # CONFIG_X86_MSR is not set | 152 | # CONFIG_X86_MSR is not set |
| 108 | # CONFIG_X86_CPUID is not set | 153 | # CONFIG_X86_CPUID is not set |
| @@ -111,41 +156,71 @@ CONFIG_X86_MCE_P4THERMAL=y | |||
| 111 | # Firmware Drivers | 156 | # Firmware Drivers |
| 112 | # | 157 | # |
| 113 | # CONFIG_EDD is not set | 158 | # CONFIG_EDD is not set |
| 159 | # CONFIG_DELL_RBU is not set | ||
| 160 | # CONFIG_DCDBAS is not set | ||
| 114 | CONFIG_NOHIGHMEM=y | 161 | CONFIG_NOHIGHMEM=y |
| 115 | # CONFIG_HIGHMEM4G is not set | 162 | # CONFIG_HIGHMEM4G is not set |
| 116 | # CONFIG_HIGHMEM64G is not set | 163 | # CONFIG_HIGHMEM64G is not set |
| 164 | CONFIG_VMSPLIT_3G=y | ||
| 165 | # CONFIG_VMSPLIT_3G_OPT is not set | ||
| 166 | # CONFIG_VMSPLIT_2G is not set | ||
| 167 | # CONFIG_VMSPLIT_1G is not set | ||
| 168 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
| 169 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 170 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
| 171 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
| 172 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 173 | CONFIG_FLATMEM_MANUAL=y | ||
| 174 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 175 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 176 | CONFIG_FLATMEM=y | ||
| 177 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 178 | CONFIG_SPARSEMEM_STATIC=y | ||
| 179 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 117 | # CONFIG_MATH_EMULATION is not set | 180 | # CONFIG_MATH_EMULATION is not set |
| 118 | CONFIG_MTRR=y | 181 | CONFIG_MTRR=y |
| 119 | # CONFIG_EFI is not set | 182 | # CONFIG_EFI is not set |
| 120 | CONFIG_IRQBALANCE=y | 183 | CONFIG_REGPARM=y |
| 121 | CONFIG_HAVE_DEC_LOCK=y | 184 | # CONFIG_SECCOMP is not set |
| 122 | # CONFIG_REGPARM is not set | 185 | CONFIG_HZ_100=y |
| 186 | # CONFIG_HZ_250 is not set | ||
| 187 | # CONFIG_HZ_1000 is not set | ||
| 188 | CONFIG_HZ=100 | ||
| 189 | # CONFIG_KEXEC is not set | ||
| 190 | CONFIG_PHYSICAL_START=0x100000 | ||
| 191 | CONFIG_DOUBLEFAULT=y | ||
| 123 | 192 | ||
| 124 | # | 193 | # |
| 125 | # Power management options (ACPI, APM) | 194 | # Power management options (ACPI, APM) |
| 126 | # | 195 | # |
| 127 | CONFIG_PM=y | 196 | CONFIG_PM=y |
| 197 | # CONFIG_PM_LEGACY is not set | ||
| 198 | # CONFIG_PM_DEBUG is not set | ||
| 128 | CONFIG_SOFTWARE_SUSPEND=y | 199 | CONFIG_SOFTWARE_SUSPEND=y |
| 200 | CONFIG_PM_STD_PARTITION="/dev/hda2" | ||
| 129 | 201 | ||
| 130 | # | 202 | # |
| 131 | # ACPI (Advanced Configuration and Power Interface) Support | 203 | # ACPI (Advanced Configuration and Power Interface) Support |
| 132 | # | 204 | # |
| 133 | CONFIG_ACPI=y | 205 | CONFIG_ACPI=y |
| 134 | CONFIG_ACPI_SLEEP=y | 206 | # CONFIG_ACPI_SLEEP is not set |
| 135 | CONFIG_ACPI_SLEEP_PROC_FS=y | 207 | # CONFIG_ACPI_AC is not set |
| 136 | CONFIG_ACPI_AC=y | 208 | # CONFIG_ACPI_BATTERY is not set |
| 137 | CONFIG_ACPI_BATTERY=y | 209 | # CONFIG_ACPI_BUTTON is not set |
| 138 | CONFIG_ACPI_BUTTON=y | 210 | # CONFIG_ACPI_VIDEO is not set |
| 139 | CONFIG_ACPI_FAN=y | 211 | # CONFIG_ACPI_HOTKEY is not set |
| 140 | CONFIG_ACPI_PROCESSOR=y | 212 | # CONFIG_ACPI_FAN is not set |
| 141 | CONFIG_ACPI_THERMAL=y | 213 | # CONFIG_ACPI_PROCESSOR is not set |
| 142 | # CONFIG_ACPI_ASUS is not set | 214 | # CONFIG_ACPI_ASUS is not set |
| 215 | # CONFIG_ACPI_IBM is not set | ||
| 143 | # CONFIG_ACPI_TOSHIBA is not set | 216 | # CONFIG_ACPI_TOSHIBA is not set |
| 217 | CONFIG_ACPI_BLACKLIST_YEAR=0 | ||
| 144 | # CONFIG_ACPI_DEBUG is not set | 218 | # CONFIG_ACPI_DEBUG is not set |
| 145 | CONFIG_ACPI_EC=y | 219 | CONFIG_ACPI_EC=y |
| 146 | CONFIG_ACPI_POWER=y | 220 | CONFIG_ACPI_POWER=y |
| 147 | CONFIG_ACPI_SYSTEM=y | 221 | CONFIG_ACPI_SYSTEM=y |
| 148 | # CONFIG_X86_PM_TIMER is not set | 222 | # CONFIG_X86_PM_TIMER is not set |
| 223 | # CONFIG_ACPI_CONTAINER is not set | ||
| 149 | 224 | ||
| 150 | # | 225 | # |
| 151 | # APM (Advanced Power Management) BIOS Support | 226 | # APM (Advanced Power Management) BIOS Support |
| @@ -168,19 +243,18 @@ CONFIG_PCI_GOANY=y | |||
| 168 | CONFIG_PCI_BIOS=y | 243 | CONFIG_PCI_BIOS=y |
| 169 | CONFIG_PCI_DIRECT=y | 244 | CONFIG_PCI_DIRECT=y |
| 170 | CONFIG_PCI_MMCONFIG=y | 245 | CONFIG_PCI_MMCONFIG=y |
| 171 | # CONFIG_PCI_USE_VECTOR is not set | 246 | # CONFIG_PCIEPORTBUS is not set |
| 172 | CONFIG_PCI_LEGACY_PROC=y | 247 | # CONFIG_PCI_MSI is not set |
| 173 | CONFIG_PCI_NAMES=y | 248 | # CONFIG_PCI_LEGACY_PROC is not set |
| 174 | CONFIG_ISA=y | 249 | CONFIG_ISA_DMA_API=y |
| 175 | # CONFIG_EISA is not set | 250 | # CONFIG_ISA is not set |
| 176 | # CONFIG_MCA is not set | 251 | # CONFIG_MCA is not set |
| 177 | # CONFIG_SCx200 is not set | 252 | # CONFIG_SCx200 is not set |
| 178 | 253 | ||
| 179 | # | 254 | # |
| 180 | # PCMCIA/CardBus support | 255 | # PCCARD (PCMCIA/CardBus) support |
| 181 | # | 256 | # |
| 182 | # CONFIG_PCMCIA is not set | 257 | # CONFIG_PCCARD is not set |
| 183 | CONFIG_PCMCIA_PROBE=y | ||
| 184 | 258 | ||
| 185 | # | 259 | # |
| 186 | # PCI Hotplug Support | 260 | # PCI Hotplug Support |
| @@ -191,8 +265,147 @@ CONFIG_PCMCIA_PROBE=y | |||
| 191 | # Executable file formats | 265 | # Executable file formats |
| 192 | # | 266 | # |
| 193 | CONFIG_BINFMT_ELF=y | 267 | CONFIG_BINFMT_ELF=y |
| 194 | CONFIG_BINFMT_AOUT=y | 268 | # CONFIG_BINFMT_AOUT is not set |
| 195 | CONFIG_BINFMT_MISC=y | 269 | # CONFIG_BINFMT_MISC is not set |
| 270 | |||
| 271 | # | ||
| 272 | # Networking | ||
| 273 | # | ||
| 274 | CONFIG_NET=y | ||
| 275 | |||
| 276 | # | ||
| 277 | # Networking options | ||
| 278 | # | ||
| 279 | # CONFIG_NETDEBUG is not set | ||
| 280 | CONFIG_PACKET=y | ||
| 281 | CONFIG_PACKET_MMAP=y | ||
| 282 | CONFIG_UNIX=y | ||
| 283 | # CONFIG_NET_KEY is not set | ||
| 284 | CONFIG_INET=y | ||
| 285 | # CONFIG_IP_MULTICAST is not set | ||
| 286 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 287 | CONFIG_IP_FIB_HASH=y | ||
| 288 | # CONFIG_IP_PNP is not set | ||
| 289 | # CONFIG_NET_IPIP is not set | ||
| 290 | # CONFIG_NET_IPGRE is not set | ||
| 291 | # CONFIG_ARPD is not set | ||
| 292 | # CONFIG_SYN_COOKIES is not set | ||
| 293 | # CONFIG_INET_AH is not set | ||
| 294 | # CONFIG_INET_ESP is not set | ||
| 295 | # CONFIG_INET_IPCOMP is not set | ||
| 296 | # CONFIG_INET_TUNNEL is not set | ||
| 297 | # CONFIG_INET_DIAG is not set | ||
| 298 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 299 | CONFIG_TCP_CONG_BIC=y | ||
| 300 | |||
| 301 | # | ||
| 302 | # IP: Virtual Server Configuration | ||
| 303 | # | ||
| 304 | # CONFIG_IP_VS is not set | ||
| 305 | # CONFIG_IPV6 is not set | ||
| 306 | CONFIG_NETFILTER=y | ||
| 307 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 308 | |||
| 309 | # | ||
| 310 | # Core Netfilter Configuration | ||
| 311 | # | ||
| 312 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 313 | CONFIG_NETFILTER_XTABLES=y | ||
| 314 | # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set | ||
| 315 | # CONFIG_NETFILTER_XT_TARGET_MARK is not set | ||
| 316 | # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set | ||
| 317 | # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set | ||
| 318 | # CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set | ||
| 319 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | ||
| 320 | # CONFIG_NETFILTER_XT_MATCH_HELPER is not set | ||
| 321 | # CONFIG_NETFILTER_XT_MATCH_LENGTH is not set | ||
| 322 | CONFIG_NETFILTER_XT_MATCH_LIMIT=y | ||
| 323 | CONFIG_NETFILTER_XT_MATCH_MAC=y | ||
| 324 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set | ||
| 325 | # CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set | ||
| 326 | # CONFIG_NETFILTER_XT_MATCH_REALM is not set | ||
| 327 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set | ||
| 328 | CONFIG_NETFILTER_XT_MATCH_STATE=y | ||
| 329 | # CONFIG_NETFILTER_XT_MATCH_STRING is not set | ||
| 330 | # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set | ||
| 331 | |||
| 332 | # | ||
| 333 | # IP: Netfilter Configuration | ||
| 334 | # | ||
| 335 | CONFIG_IP_NF_CONNTRACK=y | ||
| 336 | # CONFIG_IP_NF_CT_ACCT is not set | ||
| 337 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
| 338 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 339 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
| 340 | CONFIG_IP_NF_FTP=y | ||
| 341 | # CONFIG_IP_NF_IRC is not set | ||
| 342 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 343 | # CONFIG_IP_NF_TFTP is not set | ||
| 344 | # CONFIG_IP_NF_AMANDA is not set | ||
| 345 | # CONFIG_IP_NF_PPTP is not set | ||
| 346 | # CONFIG_IP_NF_QUEUE is not set | ||
| 347 | CONFIG_IP_NF_IPTABLES=y | ||
| 348 | # CONFIG_IP_NF_MATCH_IPRANGE is not set | ||
| 349 | # CONFIG_IP_NF_MATCH_MULTIPORT is not set | ||
| 350 | # CONFIG_IP_NF_MATCH_TOS is not set | ||
| 351 | # CONFIG_IP_NF_MATCH_RECENT is not set | ||
| 352 | # CONFIG_IP_NF_MATCH_ECN is not set | ||
| 353 | # CONFIG_IP_NF_MATCH_DSCP is not set | ||
| 354 | # CONFIG_IP_NF_MATCH_AH_ESP is not set | ||
| 355 | # CONFIG_IP_NF_MATCH_TTL is not set | ||
| 356 | # CONFIG_IP_NF_MATCH_OWNER is not set | ||
| 357 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
| 358 | # CONFIG_IP_NF_MATCH_HASHLIMIT is not set | ||
| 359 | CONFIG_IP_NF_FILTER=y | ||
| 360 | # CONFIG_IP_NF_TARGET_REJECT is not set | ||
| 361 | CONFIG_IP_NF_TARGET_LOG=y | ||
| 362 | # CONFIG_IP_NF_TARGET_ULOG is not set | ||
| 363 | # CONFIG_IP_NF_TARGET_TCPMSS is not set | ||
| 364 | # CONFIG_IP_NF_NAT is not set | ||
| 365 | # CONFIG_IP_NF_MANGLE is not set | ||
| 366 | # CONFIG_IP_NF_RAW is not set | ||
| 367 | # CONFIG_IP_NF_ARPTABLES is not set | ||
| 368 | |||
| 369 | # | ||
| 370 | # DCCP Configuration (EXPERIMENTAL) | ||
| 371 | # | ||
| 372 | # CONFIG_IP_DCCP is not set | ||
| 373 | |||
| 374 | # | ||
| 375 | # SCTP Configuration (EXPERIMENTAL) | ||
| 376 | # | ||
| 377 | # CONFIG_IP_SCTP is not set | ||
| 378 | |||
| 379 | # | ||
| 380 | # TIPC Configuration (EXPERIMENTAL) | ||
| 381 | # | ||
| 382 | # CONFIG_TIPC is not set | ||
| 383 | # CONFIG_ATM is not set | ||
| 384 | # CONFIG_BRIDGE is not set | ||
| 385 | # CONFIG_VLAN_8021Q is not set | ||
| 386 | # CONFIG_DECNET is not set | ||
| 387 | # CONFIG_LLC2 is not set | ||
| 388 | # CONFIG_IPX is not set | ||
| 389 | # CONFIG_ATALK is not set | ||
| 390 | # CONFIG_X25 is not set | ||
| 391 | # CONFIG_LAPB is not set | ||
| 392 | # CONFIG_NET_DIVERT is not set | ||
| 393 | # CONFIG_ECONET is not set | ||
| 394 | # CONFIG_WAN_ROUTER is not set | ||
| 395 | |||
| 396 | # | ||
| 397 | # QoS and/or fair queueing | ||
| 398 | # | ||
| 399 | # CONFIG_NET_SCHED is not set | ||
| 400 | |||
| 401 | # | ||
| 402 | # Network testing | ||
| 403 | # | ||
| 404 | # CONFIG_NET_PKTGEN is not set | ||
| 405 | # CONFIG_HAMRADIO is not set | ||
| 406 | # CONFIG_IRDA is not set | ||
| 407 | # CONFIG_BT is not set | ||
| 408 | # CONFIG_IEEE80211 is not set | ||
| 196 | 409 | ||
| 197 | # | 410 | # |
| 198 | # Device Drivers | 411 | # Device Drivers |
| @@ -201,7 +414,14 @@ CONFIG_BINFMT_MISC=y | |||
| 201 | # | 414 | # |
| 202 | # Generic Driver Options | 415 | # Generic Driver Options |
| 203 | # | 416 | # |
| 204 | CONFIG_FW_LOADER=m | 417 | CONFIG_STANDALONE=y |
| 418 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 419 | # CONFIG_FW_LOADER is not set | ||
| 420 | |||
| 421 | # | ||
| 422 | # Connector - unified userspace <-> kernelspace linker | ||
| 423 | # | ||
| 424 | # CONFIG_CONNECTOR is not set | ||
| 205 | 425 | ||
| 206 | # | 426 | # |
| 207 | # Memory Technology Devices (MTD) | 427 | # Memory Technology Devices (MTD) |
| @@ -213,40 +433,36 @@ CONFIG_FW_LOADER=m | |||
| 213 | # | 433 | # |
| 214 | CONFIG_PARPORT=y | 434 | CONFIG_PARPORT=y |
| 215 | CONFIG_PARPORT_PC=y | 435 | CONFIG_PARPORT_PC=y |
| 216 | CONFIG_PARPORT_PC_CML1=y | ||
| 217 | # CONFIG_PARPORT_SERIAL is not set | 436 | # CONFIG_PARPORT_SERIAL is not set |
| 218 | # CONFIG_PARPORT_PC_FIFO is not set | 437 | # CONFIG_PARPORT_PC_FIFO is not set |
| 219 | # CONFIG_PARPORT_PC_SUPERIO is not set | 438 | # CONFIG_PARPORT_PC_SUPERIO is not set |
| 220 | # CONFIG_PARPORT_OTHER is not set | 439 | # CONFIG_PARPORT_GSC is not set |
| 221 | # CONFIG_PARPORT_1284 is not set | 440 | CONFIG_PARPORT_1284=y |
| 222 | 441 | ||
| 223 | # | 442 | # |
| 224 | # Plug and Play support | 443 | # Plug and Play support |
| 225 | # | 444 | # |
| 226 | CONFIG_PNP=y | 445 | # CONFIG_PNP is not set |
| 227 | # CONFIG_PNP_DEBUG is not set | ||
| 228 | |||
| 229 | # | ||
| 230 | # Protocols | ||
| 231 | # | ||
| 232 | # CONFIG_ISAPNP is not set | ||
| 233 | # CONFIG_PNPBIOS is not set | ||
| 234 | 446 | ||
| 235 | # | 447 | # |
| 236 | # Block devices | 448 | # Block devices |
| 237 | # | 449 | # |
| 238 | CONFIG_BLK_DEV_FD=y | 450 | # CONFIG_BLK_DEV_FD is not set |
| 239 | # CONFIG_BLK_DEV_XD is not set | ||
| 240 | # CONFIG_PARIDE is not set | 451 | # CONFIG_PARIDE is not set |
| 241 | # CONFIG_BLK_CPQ_DA is not set | 452 | # CONFIG_BLK_CPQ_DA is not set |
| 242 | # CONFIG_BLK_CPQ_CISS_DA is not set | 453 | # CONFIG_BLK_CPQ_CISS_DA is not set |
| 243 | # CONFIG_BLK_DEV_DAC960 is not set | 454 | # CONFIG_BLK_DEV_DAC960 is not set |
| 244 | # CONFIG_BLK_DEV_UMEM is not set | 455 | # CONFIG_BLK_DEV_UMEM is not set |
| 245 | # CONFIG_BLK_DEV_LOOP is not set | 456 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| 457 | CONFIG_BLK_DEV_LOOP=y | ||
| 458 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 246 | # CONFIG_BLK_DEV_NBD is not set | 459 | # CONFIG_BLK_DEV_NBD is not set |
| 247 | # CONFIG_BLK_DEV_CARMEL is not set | 460 | # CONFIG_BLK_DEV_SX8 is not set |
| 461 | # CONFIG_BLK_DEV_UB is not set | ||
| 248 | # CONFIG_BLK_DEV_RAM is not set | 462 | # CONFIG_BLK_DEV_RAM is not set |
| 249 | CONFIG_LBD=y | 463 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 464 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 465 | # CONFIG_ATA_OVER_ETH is not set | ||
| 250 | 466 | ||
| 251 | # | 467 | # |
| 252 | # ATA/ATAPI/MFM/RLL support | 468 | # ATA/ATAPI/MFM/RLL support |
| @@ -257,34 +473,31 @@ CONFIG_BLK_DEV_IDE=y | |||
| 257 | # | 473 | # |
| 258 | # Please see Documentation/ide.txt for help/info on IDE drives | 474 | # Please see Documentation/ide.txt for help/info on IDE drives |
| 259 | # | 475 | # |
| 476 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 260 | # CONFIG_BLK_DEV_HD_IDE is not set | 477 | # CONFIG_BLK_DEV_HD_IDE is not set |
| 261 | CONFIG_BLK_DEV_IDEDISK=y | 478 | CONFIG_BLK_DEV_IDEDISK=y |
| 262 | CONFIG_IDEDISK_MULTI_MODE=y | 479 | # CONFIG_IDEDISK_MULTI_MODE is not set |
| 263 | CONFIG_BLK_DEV_IDECD=y | 480 | CONFIG_BLK_DEV_IDECD=y |
| 264 | # CONFIG_BLK_DEV_IDETAPE is not set | 481 | # CONFIG_BLK_DEV_IDETAPE is not set |
| 265 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 482 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
| 266 | # CONFIG_BLK_DEV_IDESCSI is not set | 483 | # CONFIG_BLK_DEV_IDESCSI is not set |
| 267 | # CONFIG_IDE_TASK_IOCTL is not set | 484 | # CONFIG_IDE_TASK_IOCTL is not set |
| 268 | CONFIG_IDE_TASKFILE_IO=y | ||
| 269 | 485 | ||
| 270 | # | 486 | # |
| 271 | # IDE chipset support/bugfixes | 487 | # IDE chipset support/bugfixes |
| 272 | # | 488 | # |
| 273 | CONFIG_IDE_GENERIC=y | 489 | # CONFIG_IDE_GENERIC is not set |
| 274 | CONFIG_BLK_DEV_CMD640=y | 490 | # CONFIG_BLK_DEV_CMD640 is not set |
| 275 | # CONFIG_BLK_DEV_CMD640_ENHANCED is not set | ||
| 276 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
| 277 | CONFIG_BLK_DEV_IDEPCI=y | 491 | CONFIG_BLK_DEV_IDEPCI=y |
| 278 | CONFIG_IDEPCI_SHARE_IRQ=y | 492 | CONFIG_IDEPCI_SHARE_IRQ=y |
| 279 | # CONFIG_BLK_DEV_OFFBOARD is not set | 493 | # CONFIG_BLK_DEV_OFFBOARD is not set |
| 280 | CONFIG_BLK_DEV_GENERIC=y | 494 | # CONFIG_BLK_DEV_GENERIC is not set |
| 281 | # CONFIG_BLK_DEV_OPTI621 is not set | 495 | # CONFIG_BLK_DEV_OPTI621 is not set |
| 282 | CONFIG_BLK_DEV_RZ1000=y | 496 | # CONFIG_BLK_DEV_RZ1000 is not set |
| 283 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 497 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
| 284 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 498 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
| 285 | CONFIG_IDEDMA_PCI_AUTO=y | 499 | CONFIG_IDEDMA_PCI_AUTO=y |
| 286 | # CONFIG_IDEDMA_ONLYDISK is not set | 500 | # CONFIG_IDEDMA_ONLYDISK is not set |
| 287 | CONFIG_BLK_DEV_ADMA=y | ||
| 288 | # CONFIG_BLK_DEV_AEC62XX is not set | 501 | # CONFIG_BLK_DEV_AEC62XX is not set |
| 289 | # CONFIG_BLK_DEV_ALI15X3 is not set | 502 | # CONFIG_BLK_DEV_ALI15X3 is not set |
| 290 | # CONFIG_BLK_DEV_AMD74XX is not set | 503 | # CONFIG_BLK_DEV_AMD74XX is not set |
| @@ -294,10 +507,12 @@ CONFIG_BLK_DEV_ADMA=y | |||
| 294 | # CONFIG_BLK_DEV_CY82C693 is not set | 507 | # CONFIG_BLK_DEV_CY82C693 is not set |
| 295 | # CONFIG_BLK_DEV_CS5520 is not set | 508 | # CONFIG_BLK_DEV_CS5520 is not set |
| 296 | # CONFIG_BLK_DEV_CS5530 is not set | 509 | # CONFIG_BLK_DEV_CS5530 is not set |
| 510 | # CONFIG_BLK_DEV_CS5535 is not set | ||
| 297 | # CONFIG_BLK_DEV_HPT34X is not set | 511 | # CONFIG_BLK_DEV_HPT34X is not set |
| 298 | # CONFIG_BLK_DEV_HPT366 is not set | 512 | # CONFIG_BLK_DEV_HPT366 is not set |
| 299 | # CONFIG_BLK_DEV_SC1200 is not set | 513 | # CONFIG_BLK_DEV_SC1200 is not set |
| 300 | CONFIG_BLK_DEV_PIIX=y | 514 | # CONFIG_BLK_DEV_PIIX is not set |
| 515 | # CONFIG_BLK_DEV_IT821X is not set | ||
| 301 | # CONFIG_BLK_DEV_NS87415 is not set | 516 | # CONFIG_BLK_DEV_NS87415 is not set |
| 302 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 517 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
| 303 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | 518 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set |
| @@ -306,9 +521,8 @@ CONFIG_BLK_DEV_PIIX=y | |||
| 306 | # CONFIG_BLK_DEV_SIS5513 is not set | 521 | # CONFIG_BLK_DEV_SIS5513 is not set |
| 307 | # CONFIG_BLK_DEV_SLC90E66 is not set | 522 | # CONFIG_BLK_DEV_SLC90E66 is not set |
| 308 | # CONFIG_BLK_DEV_TRM290 is not set | 523 | # CONFIG_BLK_DEV_TRM290 is not set |
| 309 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 524 | CONFIG_BLK_DEV_VIA82CXXX=y |
| 310 | # CONFIG_IDE_ARM is not set | 525 | # CONFIG_IDE_ARM is not set |
| 311 | # CONFIG_IDE_CHIPSETS is not set | ||
| 312 | CONFIG_BLK_DEV_IDEDMA=y | 526 | CONFIG_BLK_DEV_IDEDMA=y |
| 313 | # CONFIG_IDEDMA_IVB is not set | 527 | # CONFIG_IDEDMA_IVB is not set |
| 314 | CONFIG_IDEDMA_AUTO=y | 528 | CONFIG_IDEDMA_AUTO=y |
| @@ -317,8 +531,9 @@ CONFIG_IDEDMA_AUTO=y | |||
| 317 | # | 531 | # |
| 318 | # SCSI device support | 532 | # SCSI device support |
| 319 | # | 533 | # |
| 534 | # CONFIG_RAID_ATTRS is not set | ||
| 320 | CONFIG_SCSI=y | 535 | CONFIG_SCSI=y |
| 321 | CONFIG_SCSI_PROC_FS=y | 536 | # CONFIG_SCSI_PROC_FS is not set |
| 322 | 537 | ||
| 323 | # | 538 | # |
| 324 | # SCSI support type (disk, tape, CD-ROM) | 539 | # SCSI support type (disk, tape, CD-ROM) |
| @@ -327,7 +542,8 @@ CONFIG_BLK_DEV_SD=y | |||
| 327 | # CONFIG_CHR_DEV_ST is not set | 542 | # CONFIG_CHR_DEV_ST is not set |
| 328 | # CONFIG_CHR_DEV_OSST is not set | 543 | # CONFIG_CHR_DEV_OSST is not set |
| 329 | # CONFIG_BLK_DEV_SR is not set | 544 | # CONFIG_BLK_DEV_SR is not set |
| 330 | CONFIG_CHR_DEV_SG=y | 545 | # CONFIG_CHR_DEV_SG is not set |
| 546 | # CONFIG_CHR_DEV_SCH is not set | ||
| 331 | 547 | ||
| 332 | # | 548 | # |
| 333 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 549 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
| @@ -341,79 +557,47 @@ CONFIG_CHR_DEV_SG=y | |||
| 341 | # | 557 | # |
| 342 | # CONFIG_SCSI_SPI_ATTRS is not set | 558 | # CONFIG_SCSI_SPI_ATTRS is not set |
| 343 | # CONFIG_SCSI_FC_ATTRS is not set | 559 | # CONFIG_SCSI_FC_ATTRS is not set |
| 560 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 561 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 344 | 562 | ||
| 345 | # | 563 | # |
| 346 | # SCSI low-level drivers | 564 | # SCSI low-level drivers |
| 347 | # | 565 | # |
| 566 | # CONFIG_ISCSI_TCP is not set | ||
| 348 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 567 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
| 349 | # CONFIG_SCSI_7000FASST is not set | 568 | # CONFIG_SCSI_3W_9XXX is not set |
| 350 | # CONFIG_SCSI_ACARD is not set | 569 | # CONFIG_SCSI_ACARD is not set |
| 351 | # CONFIG_SCSI_AHA152X is not set | ||
| 352 | # CONFIG_SCSI_AHA1542 is not set | ||
| 353 | # CONFIG_SCSI_AACRAID is not set | 570 | # CONFIG_SCSI_AACRAID is not set |
| 354 | # CONFIG_SCSI_AIC7XXX is not set | 571 | # CONFIG_SCSI_AIC7XXX is not set |
| 355 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 572 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
| 356 | # CONFIG_SCSI_AIC79XX is not set | 573 | # CONFIG_SCSI_AIC79XX is not set |
| 357 | CONFIG_SCSI_DPT_I2O=m | 574 | # CONFIG_SCSI_DPT_I2O is not set |
| 358 | # CONFIG_SCSI_ADVANSYS is not set | 575 | # CONFIG_MEGARAID_NEWGEN is not set |
| 359 | # CONFIG_SCSI_IN2000 is not set | 576 | # CONFIG_MEGARAID_LEGACY is not set |
| 360 | # CONFIG_SCSI_MEGARAID is not set | 577 | # CONFIG_MEGARAID_SAS is not set |
| 361 | CONFIG_SCSI_SATA=y | 578 | # CONFIG_SCSI_SATA is not set |
| 362 | # CONFIG_SCSI_SATA_SVW is not set | ||
| 363 | CONFIG_SCSI_ATA_PIIX=y | ||
| 364 | # CONFIG_SCSI_SATA_PROMISE is not set | ||
| 365 | CONFIG_SCSI_SATA_SX4=m | ||
| 366 | # CONFIG_SCSI_SATA_SIL is not set | ||
| 367 | CONFIG_SCSI_SATA_SIS=m | ||
| 368 | # CONFIG_SCSI_SATA_VIA is not set | ||
| 369 | # CONFIG_SCSI_SATA_VITESSE is not set | ||
| 370 | # CONFIG_SCSI_BUSLOGIC is not set | 579 | # CONFIG_SCSI_BUSLOGIC is not set |
| 371 | # CONFIG_SCSI_CPQFCTS is not set | ||
| 372 | # CONFIG_SCSI_DMX3191D is not set | 580 | # CONFIG_SCSI_DMX3191D is not set |
| 373 | # CONFIG_SCSI_DTC3280 is not set | ||
| 374 | # CONFIG_SCSI_EATA is not set | 581 | # CONFIG_SCSI_EATA is not set |
| 375 | # CONFIG_SCSI_EATA_PIO is not set | ||
| 376 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 582 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 377 | # CONFIG_SCSI_GDTH is not set | 583 | # CONFIG_SCSI_GDTH is not set |
| 378 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | ||
| 379 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | ||
| 380 | # CONFIG_SCSI_IPS is not set | 584 | # CONFIG_SCSI_IPS is not set |
| 585 | # CONFIG_SCSI_INITIO is not set | ||
| 381 | # CONFIG_SCSI_INIA100 is not set | 586 | # CONFIG_SCSI_INIA100 is not set |
| 382 | # CONFIG_SCSI_PPA is not set | 587 | # CONFIG_SCSI_PPA is not set |
| 383 | # CONFIG_SCSI_IMM is not set | 588 | # CONFIG_SCSI_IMM is not set |
| 384 | # CONFIG_SCSI_NCR53C406A is not set | ||
| 385 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 589 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
| 386 | CONFIG_SCSI_IPR=m | 590 | # CONFIG_SCSI_IPR is not set |
| 387 | # CONFIG_SCSI_IPR_TRACE is not set | ||
| 388 | # CONFIG_SCSI_IPR_DUMP is not set | ||
| 389 | # CONFIG_SCSI_PAS16 is not set | ||
| 390 | # CONFIG_SCSI_PSI240I is not set | ||
| 391 | # CONFIG_SCSI_QLOGIC_FAS is not set | ||
| 392 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
| 393 | # CONFIG_SCSI_QLOGIC_FC is not set | 591 | # CONFIG_SCSI_QLOGIC_FC is not set |
| 394 | # CONFIG_SCSI_QLOGIC_1280 is not set | 592 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 395 | CONFIG_SCSI_QLA2XXX=y | 593 | # CONFIG_SCSI_QLA_FC is not set |
| 396 | # CONFIG_SCSI_QLA21XX is not set | 594 | # CONFIG_SCSI_LPFC is not set |
| 397 | # CONFIG_SCSI_QLA22XX is not set | ||
| 398 | # CONFIG_SCSI_QLA2300 is not set | ||
| 399 | # CONFIG_SCSI_QLA2322 is not set | ||
| 400 | # CONFIG_SCSI_QLA6312 is not set | ||
| 401 | # CONFIG_SCSI_QLA6322 is not set | ||
| 402 | # CONFIG_SCSI_SYM53C416 is not set | ||
| 403 | # CONFIG_SCSI_DC395x is not set | 595 | # CONFIG_SCSI_DC395x is not set |
| 404 | # CONFIG_SCSI_DC390T is not set | 596 | # CONFIG_SCSI_DC390T is not set |
| 405 | # CONFIG_SCSI_T128 is not set | ||
| 406 | # CONFIG_SCSI_U14_34F is not set | ||
| 407 | # CONFIG_SCSI_ULTRASTOR is not set | ||
| 408 | # CONFIG_SCSI_NSP32 is not set | 597 | # CONFIG_SCSI_NSP32 is not set |
| 409 | # CONFIG_SCSI_DEBUG is not set | 598 | # CONFIG_SCSI_DEBUG is not set |
| 410 | 599 | ||
| 411 | # | 600 | # |
| 412 | # Old CD-ROM drivers (not SCSI, not IDE) | ||
| 413 | # | ||
| 414 | # CONFIG_CD_NO_IDESCSI is not set | ||
| 415 | |||
| 416 | # | ||
| 417 | # Multi-device support (RAID and LVM) | 601 | # Multi-device support (RAID and LVM) |
| 418 | # | 602 | # |
| 419 | # CONFIG_MD is not set | 603 | # CONFIG_MD is not set |
| @@ -422,37 +606,14 @@ CONFIG_SCSI_QLA2XXX=y | |||
| 422 | # Fusion MPT device support | 606 | # Fusion MPT device support |
| 423 | # | 607 | # |
| 424 | # CONFIG_FUSION is not set | 608 | # CONFIG_FUSION is not set |
| 609 | # CONFIG_FUSION_SPI is not set | ||
| 610 | # CONFIG_FUSION_FC is not set | ||
| 611 | # CONFIG_FUSION_SAS is not set | ||
| 425 | 612 | ||
| 426 | # | 613 | # |
| 427 | # IEEE 1394 (FireWire) support | 614 | # IEEE 1394 (FireWire) support |
| 428 | # | 615 | # |
| 429 | CONFIG_IEEE1394=y | 616 | # CONFIG_IEEE1394 is not set |
| 430 | |||
| 431 | # | ||
| 432 | # Subsystem Options | ||
| 433 | # | ||
| 434 | # CONFIG_IEEE1394_VERBOSEDEBUG is not set | ||
| 435 | # CONFIG_IEEE1394_OUI_DB is not set | ||
| 436 | # CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set | ||
| 437 | |||
| 438 | # | ||
| 439 | # Device Drivers | ||
| 440 | # | ||
| 441 | |||
| 442 | # | ||
| 443 | # Texas Instruments PCILynx requires I2C | ||
| 444 | # | ||
| 445 | CONFIG_IEEE1394_OHCI1394=y | ||
| 446 | |||
| 447 | # | ||
| 448 | # Protocol Drivers | ||
| 449 | # | ||
| 450 | # CONFIG_IEEE1394_VIDEO1394 is not set | ||
| 451 | # CONFIG_IEEE1394_SBP2 is not set | ||
| 452 | # CONFIG_IEEE1394_ETH1394 is not set | ||
| 453 | # CONFIG_IEEE1394_DV1394 is not set | ||
| 454 | CONFIG_IEEE1394_RAWIO=y | ||
| 455 | # CONFIG_IEEE1394_CMP is not set | ||
| 456 | 617 | ||
| 457 | # | 618 | # |
| 458 | # I2O device support | 619 | # I2O device support |
| @@ -460,130 +621,13 @@ CONFIG_IEEE1394_RAWIO=y | |||
| 460 | # CONFIG_I2O is not set | 621 | # CONFIG_I2O is not set |
| 461 | 622 | ||
| 462 | # | 623 | # |
| 463 | # Networking support | 624 | # Network device support |
| 464 | # | ||
| 465 | CONFIG_NET=y | ||
| 466 | |||
| 467 | # | ||
| 468 | # Networking options | ||
| 469 | # | ||
| 470 | CONFIG_PACKET=y | ||
| 471 | # CONFIG_PACKET_MMAP is not set | ||
| 472 | # CONFIG_NETLINK_DEV is not set | ||
| 473 | CONFIG_UNIX=y | ||
| 474 | # CONFIG_NET_KEY is not set | ||
| 475 | CONFIG_INET=y | ||
| 476 | CONFIG_IP_MULTICAST=y | ||
| 477 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 478 | # CONFIG_IP_PNP is not set | ||
| 479 | # CONFIG_NET_IPIP is not set | ||
| 480 | # CONFIG_NET_IPGRE is not set | ||
| 481 | # CONFIG_IP_MROUTE is not set | ||
| 482 | # CONFIG_ARPD is not set | ||
| 483 | # CONFIG_SYN_COOKIES is not set | ||
| 484 | # CONFIG_INET_AH is not set | ||
| 485 | # CONFIG_INET_ESP is not set | ||
| 486 | # CONFIG_INET_IPCOMP is not set | ||
| 487 | |||
| 488 | # | ||
| 489 | # IP: Virtual Server Configuration | ||
| 490 | # | ||
| 491 | # CONFIG_IP_VS is not set | ||
| 492 | # CONFIG_IPV6 is not set | ||
| 493 | CONFIG_NETFILTER=y | ||
| 494 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 495 | |||
| 496 | # | ||
| 497 | # IP: Netfilter Configuration | ||
| 498 | # | 625 | # |
| 499 | CONFIG_IP_NF_CONNTRACK=y | ||
| 500 | # CONFIG_IP_NF_FTP is not set | ||
| 501 | # CONFIG_IP_NF_IRC is not set | ||
| 502 | # CONFIG_IP_NF_TFTP is not set | ||
| 503 | # CONFIG_IP_NF_AMANDA is not set | ||
| 504 | CONFIG_IP_NF_QUEUE=y | ||
| 505 | CONFIG_IP_NF_IPTABLES=y | ||
| 506 | CONFIG_IP_NF_MATCH_LIMIT=y | ||
| 507 | CONFIG_IP_NF_MATCH_IPRANGE=y | ||
| 508 | CONFIG_IP_NF_MATCH_MAC=y | ||
| 509 | CONFIG_IP_NF_MATCH_PKTTYPE=y | ||
| 510 | CONFIG_IP_NF_MATCH_MARK=y | ||
| 511 | CONFIG_IP_NF_MATCH_MULTIPORT=y | ||
| 512 | CONFIG_IP_NF_MATCH_TOS=y | ||
| 513 | CONFIG_IP_NF_MATCH_RECENT=y | ||
| 514 | CONFIG_IP_NF_MATCH_ECN=y | ||
| 515 | CONFIG_IP_NF_MATCH_DSCP=y | ||
| 516 | CONFIG_IP_NF_MATCH_AH_ESP=y | ||
| 517 | CONFIG_IP_NF_MATCH_LENGTH=y | ||
| 518 | CONFIG_IP_NF_MATCH_TTL=y | ||
| 519 | CONFIG_IP_NF_MATCH_TCPMSS=y | ||
| 520 | CONFIG_IP_NF_MATCH_HELPER=y | ||
| 521 | CONFIG_IP_NF_MATCH_STATE=y | ||
| 522 | CONFIG_IP_NF_MATCH_CONNTRACK=y | ||
| 523 | CONFIG_IP_NF_MATCH_OWNER=y | ||
| 524 | CONFIG_IP_NF_FILTER=y | ||
| 525 | CONFIG_IP_NF_TARGET_REJECT=y | ||
| 526 | CONFIG_IP_NF_NAT=y | ||
| 527 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 528 | CONFIG_IP_NF_TARGET_MASQUERADE=y | ||
| 529 | CONFIG_IP_NF_TARGET_REDIRECT=y | ||
| 530 | CONFIG_IP_NF_TARGET_NETMAP=y | ||
| 531 | CONFIG_IP_NF_TARGET_SAME=y | ||
| 532 | # CONFIG_IP_NF_NAT_SNMP_BASIC is not set | ||
| 533 | CONFIG_IP_NF_MANGLE=y | ||
| 534 | CONFIG_IP_NF_TARGET_TOS=y | ||
| 535 | CONFIG_IP_NF_TARGET_ECN=y | ||
| 536 | CONFIG_IP_NF_TARGET_DSCP=y | ||
| 537 | CONFIG_IP_NF_TARGET_MARK=y | ||
| 538 | CONFIG_IP_NF_TARGET_CLASSIFY=y | ||
| 539 | CONFIG_IP_NF_TARGET_LOG=y | ||
| 540 | CONFIG_IP_NF_TARGET_ULOG=y | ||
| 541 | CONFIG_IP_NF_TARGET_TCPMSS=y | ||
| 542 | CONFIG_IP_NF_ARPTABLES=y | ||
| 543 | CONFIG_IP_NF_ARPFILTER=y | ||
| 544 | CONFIG_IP_NF_ARP_MANGLE=y | ||
| 545 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
| 546 | CONFIG_IP_NF_RAW=m | ||
| 547 | |||
| 548 | # | ||
| 549 | # SCTP Configuration (EXPERIMENTAL) | ||
| 550 | # | ||
| 551 | # CONFIG_IP_SCTP is not set | ||
| 552 | # CONFIG_ATM is not set | ||
| 553 | # CONFIG_BRIDGE is not set | ||
| 554 | # CONFIG_VLAN_8021Q is not set | ||
| 555 | # CONFIG_DECNET is not set | ||
| 556 | # CONFIG_LLC2 is not set | ||
| 557 | # CONFIG_IPX is not set | ||
| 558 | # CONFIG_ATALK is not set | ||
| 559 | # CONFIG_X25 is not set | ||
| 560 | # CONFIG_LAPB is not set | ||
| 561 | # CONFIG_NET_DIVERT is not set | ||
| 562 | # CONFIG_ECONET is not set | ||
| 563 | # CONFIG_WAN_ROUTER is not set | ||
| 564 | # CONFIG_NET_FASTROUTE is not set | ||
| 565 | # CONFIG_NET_HW_FLOWCONTROL is not set | ||
| 566 | |||
| 567 | # | ||
| 568 | # QoS and/or fair queueing | ||
| 569 | # | ||
| 570 | # CONFIG_NET_SCHED is not set | ||
| 571 | |||
| 572 | # | ||
| 573 | # Network testing | ||
| 574 | # | ||
| 575 | # CONFIG_NET_PKTGEN is not set | ||
| 576 | # CONFIG_NETPOLL is not set | ||
| 577 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 578 | # CONFIG_HAMRADIO is not set | ||
| 579 | # CONFIG_IRDA is not set | ||
| 580 | # CONFIG_BT is not set | ||
| 581 | CONFIG_NETDEVICES=y | 626 | CONFIG_NETDEVICES=y |
| 582 | CONFIG_DUMMY=m | 627 | # CONFIG_DUMMY is not set |
| 583 | # CONFIG_BONDING is not set | 628 | # CONFIG_BONDING is not set |
| 584 | # CONFIG_EQUALIZER is not set | 629 | # CONFIG_EQUALIZER is not set |
| 585 | # CONFIG_TUN is not set | 630 | # CONFIG_TUN is not set |
| 586 | # CONFIG_NET_SB1000 is not set | ||
| 587 | 631 | ||
| 588 | # | 632 | # |
| 589 | # ARCnet devices | 633 | # ARCnet devices |
| @@ -591,46 +635,39 @@ CONFIG_DUMMY=m | |||
| 591 | # CONFIG_ARCNET is not set | 635 | # CONFIG_ARCNET is not set |
| 592 | 636 | ||
| 593 | # | 637 | # |
| 638 | # PHY device support | ||
| 639 | # | ||
| 640 | # CONFIG_PHYLIB is not set | ||
| 641 | |||
| 642 | # | ||
| 594 | # Ethernet (10 or 100Mbit) | 643 | # Ethernet (10 or 100Mbit) |
| 595 | # | 644 | # |
| 596 | CONFIG_NET_ETHERNET=y | 645 | CONFIG_NET_ETHERNET=y |
| 597 | CONFIG_MII=y | 646 | CONFIG_MII=y |
| 598 | # CONFIG_HAPPYMEAL is not set | 647 | # CONFIG_HAPPYMEAL is not set |
| 599 | # CONFIG_SUNGEM is not set | 648 | # CONFIG_SUNGEM is not set |
| 649 | # CONFIG_CASSINI is not set | ||
| 600 | # CONFIG_NET_VENDOR_3COM is not set | 650 | # CONFIG_NET_VENDOR_3COM is not set |
| 601 | # CONFIG_LANCE is not set | ||
| 602 | # CONFIG_NET_VENDOR_SMC is not set | ||
| 603 | # CONFIG_NET_VENDOR_RACAL is not set | ||
| 604 | 651 | ||
| 605 | # | 652 | # |
| 606 | # Tulip family network device support | 653 | # Tulip family network device support |
| 607 | # | 654 | # |
| 608 | # CONFIG_NET_TULIP is not set | 655 | # CONFIG_NET_TULIP is not set |
| 609 | # CONFIG_AT1700 is not set | ||
| 610 | # CONFIG_DEPCA is not set | ||
| 611 | # CONFIG_HP100 is not set | 656 | # CONFIG_HP100 is not set |
| 612 | # CONFIG_NET_ISA is not set | ||
| 613 | CONFIG_NET_PCI=y | 657 | CONFIG_NET_PCI=y |
| 614 | # CONFIG_PCNET32 is not set | 658 | # CONFIG_PCNET32 is not set |
| 615 | # CONFIG_AMD8111_ETH is not set | 659 | # CONFIG_AMD8111_ETH is not set |
| 616 | # CONFIG_ADAPTEC_STARFIRE is not set | 660 | # CONFIG_ADAPTEC_STARFIRE is not set |
| 617 | # CONFIG_AC3200 is not set | ||
| 618 | # CONFIG_APRICOT is not set | ||
| 619 | # CONFIG_B44 is not set | 661 | # CONFIG_B44 is not set |
| 620 | # CONFIG_FORCEDETH is not set | 662 | # CONFIG_FORCEDETH is not set |
| 621 | # CONFIG_CS89x0 is not set | ||
| 622 | # CONFIG_DGRS is not set | 663 | # CONFIG_DGRS is not set |
| 623 | # CONFIG_EEPRO100 is not set | 664 | # CONFIG_EEPRO100 is not set |
| 624 | # CONFIG_E100 is not set | 665 | CONFIG_E100=y |
| 625 | # CONFIG_FEALNX is not set | 666 | # CONFIG_FEALNX is not set |
| 626 | # CONFIG_NATSEMI is not set | 667 | # CONFIG_NATSEMI is not set |
| 627 | # CONFIG_NE2K_PCI is not set | 668 | # CONFIG_NE2K_PCI is not set |
| 628 | # CONFIG_8139CP is not set | 669 | # CONFIG_8139CP is not set |
| 629 | CONFIG_8139TOO=y | 670 | # CONFIG_8139TOO is not set |
| 630 | CONFIG_8139TOO_PIO=y | ||
| 631 | # CONFIG_8139TOO_TUNE_TWISTER is not set | ||
| 632 | # CONFIG_8139TOO_8129 is not set | ||
| 633 | # CONFIG_8139_OLD_RX_RESET is not set | ||
| 634 | # CONFIG_SIS900 is not set | 671 | # CONFIG_SIS900 is not set |
| 635 | # CONFIG_EPIC100 is not set | 672 | # CONFIG_EPIC100 is not set |
| 636 | # CONFIG_SUNDANCE is not set | 673 | # CONFIG_SUNDANCE is not set |
| @@ -644,21 +681,24 @@ CONFIG_8139TOO_PIO=y | |||
| 644 | # CONFIG_ACENIC is not set | 681 | # CONFIG_ACENIC is not set |
| 645 | # CONFIG_DL2K is not set | 682 | # CONFIG_DL2K is not set |
| 646 | # CONFIG_E1000 is not set | 683 | # CONFIG_E1000 is not set |
| 647 | # CONFIG_E1000_NAPI is not set | ||
| 648 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | ||
| 649 | # CONFIG_NS83820 is not set | 684 | # CONFIG_NS83820 is not set |
| 650 | # CONFIG_HAMACHI is not set | 685 | # CONFIG_HAMACHI is not set |
| 651 | # CONFIG_YELLOWFIN is not set | 686 | # CONFIG_YELLOWFIN is not set |
| 652 | # CONFIG_R8169 is not set | 687 | # CONFIG_R8169 is not set |
| 688 | # CONFIG_SIS190 is not set | ||
| 689 | # CONFIG_SKGE is not set | ||
| 690 | # CONFIG_SKY2 is not set | ||
| 653 | # CONFIG_SK98LIN is not set | 691 | # CONFIG_SK98LIN is not set |
| 692 | # CONFIG_VIA_VELOCITY is not set | ||
| 654 | # CONFIG_TIGON3 is not set | 693 | # CONFIG_TIGON3 is not set |
| 694 | # CONFIG_BNX2 is not set | ||
| 655 | 695 | ||
| 656 | # | 696 | # |
| 657 | # Ethernet (10000 Mbit) | 697 | # Ethernet (10000 Mbit) |
| 658 | # | 698 | # |
| 699 | # CONFIG_CHELSIO_T1 is not set | ||
| 659 | # CONFIG_IXGB is not set | 700 | # CONFIG_IXGB is not set |
| 660 | CONFIG_S2IO=m | 701 | # CONFIG_S2IO is not set |
| 661 | # CONFIG_S2IO_NAPI is not set | ||
| 662 | 702 | ||
| 663 | # | 703 | # |
| 664 | # Token Ring devices | 704 | # Token Ring devices |
| @@ -682,6 +722,8 @@ CONFIG_S2IO=m | |||
| 682 | # CONFIG_NET_FC is not set | 722 | # CONFIG_NET_FC is not set |
| 683 | # CONFIG_SHAPER is not set | 723 | # CONFIG_SHAPER is not set |
| 684 | # CONFIG_NETCONSOLE is not set | 724 | # CONFIG_NETCONSOLE is not set |
| 725 | # CONFIG_NETPOLL is not set | ||
| 726 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 685 | 727 | ||
| 686 | # | 728 | # |
| 687 | # ISDN subsystem | 729 | # ISDN subsystem |
| @@ -703,26 +745,14 @@ CONFIG_INPUT=y | |||
| 703 | # | 745 | # |
| 704 | CONFIG_INPUT_MOUSEDEV=y | 746 | CONFIG_INPUT_MOUSEDEV=y |
| 705 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | 747 | CONFIG_INPUT_MOUSEDEV_PSAUX=y |
| 706 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 748 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1280 |
| 707 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 749 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1024 |
| 708 | # CONFIG_INPUT_JOYDEV is not set | 750 | # CONFIG_INPUT_JOYDEV is not set |
| 709 | # CONFIG_INPUT_TSDEV is not set | 751 | # CONFIG_INPUT_TSDEV is not set |
| 710 | # CONFIG_INPUT_EVDEV is not set | 752 | CONFIG_INPUT_EVDEV=y |
| 711 | # CONFIG_INPUT_EVBUG is not set | 753 | # CONFIG_INPUT_EVBUG is not set |
| 712 | 754 | ||
| 713 | # | 755 | # |
| 714 | # Input I/O drivers | ||
| 715 | # | ||
| 716 | # CONFIG_GAMEPORT is not set | ||
| 717 | CONFIG_SOUND_GAMEPORT=y | ||
| 718 | CONFIG_SERIO=y | ||
| 719 | CONFIG_SERIO_I8042=y | ||
| 720 | # CONFIG_SERIO_SERPORT is not set | ||
| 721 | # CONFIG_SERIO_CT82C710 is not set | ||
| 722 | # CONFIG_SERIO_PARKBD is not set | ||
| 723 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 724 | |||
| 725 | # | ||
| 726 | # Input Device Drivers | 756 | # Input Device Drivers |
| 727 | # | 757 | # |
| 728 | CONFIG_INPUT_KEYBOARD=y | 758 | CONFIG_INPUT_KEYBOARD=y |
| @@ -734,15 +764,25 @@ CONFIG_KEYBOARD_ATKBD=y | |||
| 734 | CONFIG_INPUT_MOUSE=y | 764 | CONFIG_INPUT_MOUSE=y |
| 735 | CONFIG_MOUSE_PS2=y | 765 | CONFIG_MOUSE_PS2=y |
| 736 | # CONFIG_MOUSE_SERIAL is not set | 766 | # CONFIG_MOUSE_SERIAL is not set |
| 737 | # CONFIG_MOUSE_INPORT is not set | ||
| 738 | # CONFIG_MOUSE_LOGIBM is not set | ||
| 739 | # CONFIG_MOUSE_PC110PAD is not set | ||
| 740 | # CONFIG_MOUSE_VSXXXAA is not set | 767 | # CONFIG_MOUSE_VSXXXAA is not set |
| 741 | # CONFIG_INPUT_JOYSTICK is not set | 768 | # CONFIG_INPUT_JOYSTICK is not set |
| 742 | # CONFIG_INPUT_TOUCHSCREEN is not set | 769 | # CONFIG_INPUT_TOUCHSCREEN is not set |
| 743 | # CONFIG_INPUT_MISC is not set | 770 | # CONFIG_INPUT_MISC is not set |
| 744 | 771 | ||
| 745 | # | 772 | # |
| 773 | # Hardware I/O ports | ||
| 774 | # | ||
| 775 | CONFIG_SERIO=y | ||
| 776 | CONFIG_SERIO_I8042=y | ||
| 777 | # CONFIG_SERIO_SERPORT is not set | ||
| 778 | # CONFIG_SERIO_CT82C710 is not set | ||
| 779 | # CONFIG_SERIO_PARKBD is not set | ||
| 780 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 781 | CONFIG_SERIO_LIBPS2=y | ||
| 782 | # CONFIG_SERIO_RAW is not set | ||
| 783 | # CONFIG_GAMEPORT is not set | ||
| 784 | |||
| 785 | # | ||
| 746 | # Character devices | 786 | # Character devices |
| 747 | # | 787 | # |
| 748 | CONFIG_VT=y | 788 | CONFIG_VT=y |
| @@ -757,12 +797,14 @@ CONFIG_SERIAL_8250=y | |||
| 757 | # CONFIG_SERIAL_8250_CONSOLE is not set | 797 | # CONFIG_SERIAL_8250_CONSOLE is not set |
| 758 | # CONFIG_SERIAL_8250_ACPI is not set | 798 | # CONFIG_SERIAL_8250_ACPI is not set |
| 759 | CONFIG_SERIAL_8250_NR_UARTS=4 | 799 | CONFIG_SERIAL_8250_NR_UARTS=4 |
| 800 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
| 760 | # CONFIG_SERIAL_8250_EXTENDED is not set | 801 | # CONFIG_SERIAL_8250_EXTENDED is not set |
| 761 | 802 | ||
| 762 | # | 803 | # |
| 763 | # Non-8250 serial port support | 804 | # Non-8250 serial port support |
| 764 | # | 805 | # |
| 765 | CONFIG_SERIAL_CORE=y | 806 | CONFIG_SERIAL_CORE=y |
| 807 | # CONFIG_SERIAL_JSM is not set | ||
| 766 | CONFIG_UNIX98_PTYS=y | 808 | CONFIG_UNIX98_PTYS=y |
| 767 | CONFIG_LEGACY_PTYS=y | 809 | CONFIG_LEGACY_PTYS=y |
| 768 | CONFIG_LEGACY_PTY_COUNT=256 | 810 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -770,7 +812,6 @@ CONFIG_PRINTER=y | |||
| 770 | # CONFIG_LP_CONSOLE is not set | 812 | # CONFIG_LP_CONSOLE is not set |
| 771 | # CONFIG_PPDEV is not set | 813 | # CONFIG_PPDEV is not set |
| 772 | # CONFIG_TIPAR is not set | 814 | # CONFIG_TIPAR is not set |
| 773 | # CONFIG_QIC02_TAPE is not set | ||
| 774 | 815 | ||
| 775 | # | 816 | # |
| 776 | # IPMI | 817 | # IPMI |
| @@ -782,9 +823,8 @@ CONFIG_PRINTER=y | |||
| 782 | # | 823 | # |
| 783 | # CONFIG_WATCHDOG is not set | 824 | # CONFIG_WATCHDOG is not set |
| 784 | # CONFIG_HW_RANDOM is not set | 825 | # CONFIG_HW_RANDOM is not set |
| 785 | # CONFIG_NVRAM is not set | 826 | CONFIG_NVRAM=y |
| 786 | # CONFIG_RTC is not set | 827 | CONFIG_RTC=y |
| 787 | # CONFIG_GEN_RTC is not set | ||
| 788 | # CONFIG_DTLK is not set | 828 | # CONFIG_DTLK is not set |
| 789 | # CONFIG_R3964 is not set | 829 | # CONFIG_R3964 is not set |
| 790 | # CONFIG_APPLICOM is not set | 830 | # CONFIG_APPLICOM is not set |
| @@ -793,34 +833,149 @@ CONFIG_PRINTER=y | |||
| 793 | # | 833 | # |
| 794 | # Ftape, the floppy tape device driver | 834 | # Ftape, the floppy tape device driver |
| 795 | # | 835 | # |
| 836 | # CONFIG_FTAPE is not set | ||
| 796 | CONFIG_AGP=y | 837 | CONFIG_AGP=y |
| 797 | # CONFIG_AGP_ALI is not set | 838 | # CONFIG_AGP_ALI is not set |
| 798 | # CONFIG_AGP_ATI is not set | 839 | # CONFIG_AGP_ATI is not set |
| 799 | # CONFIG_AGP_AMD is not set | 840 | # CONFIG_AGP_AMD is not set |
| 800 | # CONFIG_AGP_AMD64 is not set | 841 | # CONFIG_AGP_AMD64 is not set |
| 801 | CONFIG_AGP_INTEL=y | 842 | # CONFIG_AGP_INTEL is not set |
| 802 | # CONFIG_AGP_NVIDIA is not set | 843 | # CONFIG_AGP_NVIDIA is not set |
| 803 | # CONFIG_AGP_SIS is not set | 844 | # CONFIG_AGP_SIS is not set |
| 804 | # CONFIG_AGP_SWORKS is not set | 845 | # CONFIG_AGP_SWORKS is not set |
| 805 | # CONFIG_AGP_VIA is not set | 846 | CONFIG_AGP_VIA=y |
| 806 | # CONFIG_AGP_EFFICEON is not set | 847 | # CONFIG_AGP_EFFICEON is not set |
| 807 | CONFIG_DRM=y | 848 | CONFIG_DRM=y |
| 808 | # CONFIG_DRM_TDFX is not set | 849 | # CONFIG_DRM_TDFX is not set |
| 809 | # CONFIG_DRM_GAMMA is not set | ||
| 810 | # CONFIG_DRM_R128 is not set | 850 | # CONFIG_DRM_R128 is not set |
| 811 | # CONFIG_DRM_RADEON is not set | 851 | CONFIG_DRM_RADEON=y |
| 812 | # CONFIG_DRM_I810 is not set | ||
| 813 | CONFIG_DRM_I830=y | ||
| 814 | # CONFIG_DRM_MGA is not set | 852 | # CONFIG_DRM_MGA is not set |
| 815 | # CONFIG_DRM_SIS is not set | 853 | # CONFIG_DRM_SIS is not set |
| 854 | # CONFIG_DRM_VIA is not set | ||
| 855 | # CONFIG_DRM_SAVAGE is not set | ||
| 816 | # CONFIG_MWAVE is not set | 856 | # CONFIG_MWAVE is not set |
| 857 | # CONFIG_CS5535_GPIO is not set | ||
| 817 | # CONFIG_RAW_DRIVER is not set | 858 | # CONFIG_RAW_DRIVER is not set |
| 859 | # CONFIG_HPET is not set | ||
| 818 | # CONFIG_HANGCHECK_TIMER is not set | 860 | # CONFIG_HANGCHECK_TIMER is not set |
| 819 | 861 | ||
| 820 | # | 862 | # |
| 863 | # TPM devices | ||
| 864 | # | ||
| 865 | # CONFIG_TCG_TPM is not set | ||
| 866 | # CONFIG_TELCLOCK is not set | ||
| 867 | |||
| 868 | # | ||
| 821 | # I2C support | 869 | # I2C support |
| 822 | # | 870 | # |
| 823 | # CONFIG_I2C is not set | 871 | CONFIG_I2C=y |
| 872 | CONFIG_I2C_CHARDEV=y | ||
| 873 | |||
| 874 | # | ||
| 875 | # I2C Algorithms | ||
| 876 | # | ||
| 877 | CONFIG_I2C_ALGOBIT=y | ||
| 878 | # CONFIG_I2C_ALGOPCF is not set | ||
| 879 | # CONFIG_I2C_ALGOPCA is not set | ||
| 880 | |||
| 881 | # | ||
| 882 | # I2C Hardware Bus support | ||
| 883 | # | ||
| 884 | # CONFIG_I2C_ALI1535 is not set | ||
| 885 | # CONFIG_I2C_ALI1563 is not set | ||
| 886 | # CONFIG_I2C_ALI15X3 is not set | ||
| 887 | # CONFIG_I2C_AMD756 is not set | ||
| 888 | # CONFIG_I2C_AMD8111 is not set | ||
| 889 | # CONFIG_I2C_I801 is not set | ||
| 890 | # CONFIG_I2C_I810 is not set | ||
| 891 | # CONFIG_I2C_PIIX4 is not set | ||
| 892 | CONFIG_I2C_ISA=y | ||
| 893 | # CONFIG_I2C_NFORCE2 is not set | ||
| 894 | # CONFIG_I2C_PARPORT is not set | ||
| 895 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 896 | # CONFIG_I2C_PROSAVAGE is not set | ||
| 897 | # CONFIG_I2C_SAVAGE4 is not set | ||
| 898 | # CONFIG_SCx200_ACB is not set | ||
| 899 | # CONFIG_I2C_SIS5595 is not set | ||
| 900 | # CONFIG_I2C_SIS630 is not set | ||
| 901 | # CONFIG_I2C_SIS96X is not set | ||
| 902 | # CONFIG_I2C_STUB is not set | ||
| 903 | # CONFIG_I2C_VIA is not set | ||
| 904 | CONFIG_I2C_VIAPRO=y | ||
| 905 | # CONFIG_I2C_VOODOO3 is not set | ||
| 906 | # CONFIG_I2C_PCA_ISA is not set | ||
| 907 | |||
| 908 | # | ||
| 909 | # Miscellaneous I2C Chip support | ||
| 910 | # | ||
| 911 | # CONFIG_SENSORS_DS1337 is not set | ||
| 912 | # CONFIG_SENSORS_DS1374 is not set | ||
| 913 | # CONFIG_SENSORS_EEPROM is not set | ||
| 914 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 915 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 916 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 917 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 918 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 919 | # CONFIG_RTC_X1205_I2C is not set | ||
| 920 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 921 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 922 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 923 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 924 | |||
| 925 | # | ||
| 926 | # SPI support | ||
| 927 | # | ||
| 928 | # CONFIG_SPI is not set | ||
| 929 | # CONFIG_SPI_MASTER is not set | ||
| 930 | |||
| 931 | # | ||
| 932 | # Dallas's 1-wire bus | ||
| 933 | # | ||
| 934 | # CONFIG_W1 is not set | ||
| 935 | |||
| 936 | # | ||
| 937 | # Hardware Monitoring support | ||
| 938 | # | ||
| 939 | CONFIG_HWMON=y | ||
| 940 | CONFIG_HWMON_VID=y | ||
| 941 | # CONFIG_SENSORS_ADM1021 is not set | ||
| 942 | # CONFIG_SENSORS_ADM1025 is not set | ||
| 943 | # CONFIG_SENSORS_ADM1026 is not set | ||
| 944 | # CONFIG_SENSORS_ADM1031 is not set | ||
| 945 | # CONFIG_SENSORS_ADM9240 is not set | ||
| 946 | # CONFIG_SENSORS_ASB100 is not set | ||
| 947 | # CONFIG_SENSORS_ATXP1 is not set | ||
| 948 | # CONFIG_SENSORS_DS1621 is not set | ||
| 949 | # CONFIG_SENSORS_F71805F is not set | ||
| 950 | # CONFIG_SENSORS_FSCHER is not set | ||
| 951 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 952 | # CONFIG_SENSORS_GL518SM is not set | ||
| 953 | # CONFIG_SENSORS_GL520SM is not set | ||
| 954 | CONFIG_SENSORS_IT87=y | ||
| 955 | # CONFIG_SENSORS_LM63 is not set | ||
| 956 | # CONFIG_SENSORS_LM75 is not set | ||
| 957 | # CONFIG_SENSORS_LM77 is not set | ||
| 958 | # CONFIG_SENSORS_LM78 is not set | ||
| 959 | # CONFIG_SENSORS_LM80 is not set | ||
| 960 | # CONFIG_SENSORS_LM83 is not set | ||
| 961 | # CONFIG_SENSORS_LM85 is not set | ||
| 962 | # CONFIG_SENSORS_LM87 is not set | ||
| 963 | # CONFIG_SENSORS_LM90 is not set | ||
| 964 | # CONFIG_SENSORS_LM92 is not set | ||
| 965 | # CONFIG_SENSORS_MAX1619 is not set | ||
| 966 | # CONFIG_SENSORS_PC87360 is not set | ||
| 967 | # CONFIG_SENSORS_SIS5595 is not set | ||
| 968 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
| 969 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
| 970 | # CONFIG_SENSORS_VIA686A is not set | ||
| 971 | # CONFIG_SENSORS_VT8231 is not set | ||
| 972 | # CONFIG_SENSORS_W83781D is not set | ||
| 973 | # CONFIG_SENSORS_W83792D is not set | ||
| 974 | # CONFIG_SENSORS_W83L785TS is not set | ||
| 975 | # CONFIG_SENSORS_W83627HF is not set | ||
| 976 | # CONFIG_SENSORS_W83627EHF is not set | ||
| 977 | # CONFIG_SENSORS_HDAPS is not set | ||
| 978 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 824 | 979 | ||
| 825 | # | 980 | # |
| 826 | # Misc devices | 981 | # Misc devices |
| @@ -828,27 +983,118 @@ CONFIG_DRM_I830=y | |||
| 828 | # CONFIG_IBM_ASM is not set | 983 | # CONFIG_IBM_ASM is not set |
| 829 | 984 | ||
| 830 | # | 985 | # |
| 986 | # Multimedia Capabilities Port drivers | ||
| 987 | # | ||
| 988 | |||
| 989 | # | ||
| 831 | # Multimedia devices | 990 | # Multimedia devices |
| 832 | # | 991 | # |
| 833 | # CONFIG_VIDEO_DEV is not set | 992 | CONFIG_VIDEO_DEV=y |
| 993 | |||
| 994 | # | ||
| 995 | # Video For Linux | ||
| 996 | # | ||
| 997 | |||
| 998 | # | ||
| 999 | # Video Adapters | ||
| 1000 | # | ||
| 1001 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
| 1002 | # CONFIG_VIDEO_BT848 is not set | ||
| 1003 | # CONFIG_VIDEO_BWQCAM is not set | ||
| 1004 | # CONFIG_VIDEO_CQCAM is not set | ||
| 1005 | # CONFIG_VIDEO_W9966 is not set | ||
| 1006 | # CONFIG_VIDEO_CPIA is not set | ||
| 1007 | # CONFIG_VIDEO_SAA5246A is not set | ||
| 1008 | # CONFIG_VIDEO_SAA5249 is not set | ||
| 1009 | # CONFIG_TUNER_3036 is not set | ||
| 1010 | # CONFIG_VIDEO_STRADIS is not set | ||
| 1011 | # CONFIG_VIDEO_ZORAN is not set | ||
| 1012 | CONFIG_VIDEO_SAA7134=y | ||
| 1013 | # CONFIG_VIDEO_SAA7134_ALSA is not set | ||
| 1014 | # CONFIG_VIDEO_MXB is not set | ||
| 1015 | # CONFIG_VIDEO_DPC is not set | ||
| 1016 | # CONFIG_VIDEO_HEXIUM_ORION is not set | ||
| 1017 | # CONFIG_VIDEO_HEXIUM_GEMINI is not set | ||
| 1018 | # CONFIG_VIDEO_CX88 is not set | ||
| 1019 | # CONFIG_VIDEO_EM28XX is not set | ||
| 1020 | # CONFIG_VIDEO_OVCAMCHIP is not set | ||
| 1021 | # CONFIG_VIDEO_AUDIO_DECODER is not set | ||
| 1022 | # CONFIG_VIDEO_DECODER is not set | ||
| 1023 | |||
| 1024 | # | ||
| 1025 | # Radio Adapters | ||
| 1026 | # | ||
| 1027 | # CONFIG_RADIO_GEMTEK_PCI is not set | ||
| 1028 | # CONFIG_RADIO_MAXIRADIO is not set | ||
| 1029 | # CONFIG_RADIO_MAESTRO is not set | ||
| 834 | 1030 | ||
| 835 | # | 1031 | # |
| 836 | # Digital Video Broadcasting Devices | 1032 | # Digital Video Broadcasting Devices |
| 837 | # | 1033 | # |
| 838 | # CONFIG_DVB is not set | 1034 | # CONFIG_DVB is not set |
| 1035 | CONFIG_VIDEO_TUNER=y | ||
| 1036 | CONFIG_VIDEO_BUF=y | ||
| 1037 | CONFIG_VIDEO_IR=y | ||
| 839 | 1038 | ||
| 840 | # | 1039 | # |
| 841 | # Graphics support | 1040 | # Graphics support |
| 842 | # | 1041 | # |
| 843 | # CONFIG_FB is not set | 1042 | CONFIG_FB=y |
| 844 | # CONFIG_VIDEO_SELECT is not set | 1043 | CONFIG_FB_CFB_FILLRECT=y |
| 1044 | CONFIG_FB_CFB_COPYAREA=y | ||
| 1045 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 1046 | # CONFIG_FB_MACMODES is not set | ||
| 1047 | CONFIG_FB_MODE_HELPERS=y | ||
| 1048 | # CONFIG_FB_TILEBLITTING is not set | ||
| 1049 | # CONFIG_FB_CIRRUS is not set | ||
| 1050 | # CONFIG_FB_PM2 is not set | ||
| 1051 | # CONFIG_FB_CYBER2000 is not set | ||
| 1052 | # CONFIG_FB_ARC is not set | ||
| 1053 | # CONFIG_FB_ASILIANT is not set | ||
| 1054 | # CONFIG_FB_IMSTT is not set | ||
| 1055 | # CONFIG_FB_VGA16 is not set | ||
| 1056 | # CONFIG_FB_VESA is not set | ||
| 1057 | CONFIG_VIDEO_SELECT=y | ||
| 1058 | # CONFIG_FB_HGA is not set | ||
| 1059 | # CONFIG_FB_S1D13XXX is not set | ||
| 1060 | # CONFIG_FB_NVIDIA is not set | ||
| 1061 | # CONFIG_FB_RIVA is not set | ||
| 1062 | # CONFIG_FB_I810 is not set | ||
| 1063 | # CONFIG_FB_INTEL is not set | ||
| 1064 | # CONFIG_FB_MATROX is not set | ||
| 1065 | # CONFIG_FB_RADEON_OLD is not set | ||
| 1066 | CONFIG_FB_RADEON=y | ||
| 1067 | CONFIG_FB_RADEON_I2C=y | ||
| 1068 | # CONFIG_FB_RADEON_DEBUG is not set | ||
| 1069 | # CONFIG_FB_ATY128 is not set | ||
| 1070 | # CONFIG_FB_ATY is not set | ||
| 1071 | # CONFIG_FB_SAVAGE is not set | ||
| 1072 | # CONFIG_FB_SIS is not set | ||
| 1073 | # CONFIG_FB_NEOMAGIC is not set | ||
| 1074 | # CONFIG_FB_KYRO is not set | ||
| 1075 | # CONFIG_FB_3DFX is not set | ||
| 1076 | # CONFIG_FB_VOODOO1 is not set | ||
| 1077 | # CONFIG_FB_CYBLA is not set | ||
| 1078 | # CONFIG_FB_TRIDENT is not set | ||
| 1079 | # CONFIG_FB_GEODE is not set | ||
| 1080 | # CONFIG_FB_VIRTUAL is not set | ||
| 845 | 1081 | ||
| 846 | # | 1082 | # |
| 847 | # Console display driver support | 1083 | # Console display driver support |
| 848 | # | 1084 | # |
| 849 | CONFIG_VGA_CONSOLE=y | 1085 | CONFIG_VGA_CONSOLE=y |
| 850 | # CONFIG_MDA_CONSOLE is not set | ||
| 851 | CONFIG_DUMMY_CONSOLE=y | 1086 | CONFIG_DUMMY_CONSOLE=y |
| 1087 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 1088 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
| 1089 | # CONFIG_FONTS is not set | ||
| 1090 | CONFIG_FONT_8x8=y | ||
| 1091 | CONFIG_FONT_8x16=y | ||
| 1092 | |||
| 1093 | # | ||
| 1094 | # Logo configuration | ||
| 1095 | # | ||
| 1096 | # CONFIG_LOGO is not set | ||
| 1097 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 852 | 1098 | ||
| 853 | # | 1099 | # |
| 854 | # Sound | 1100 | # Sound |
| @@ -864,10 +1110,13 @@ CONFIG_SND_PCM=y | |||
| 864 | CONFIG_SND_RAWMIDI=y | 1110 | CONFIG_SND_RAWMIDI=y |
| 865 | CONFIG_SND_SEQUENCER=y | 1111 | CONFIG_SND_SEQUENCER=y |
| 866 | # CONFIG_SND_SEQ_DUMMY is not set | 1112 | # CONFIG_SND_SEQ_DUMMY is not set |
| 867 | CONFIG_SND_OSSEMUL=y | 1113 | # CONFIG_SND_MIXER_OSS is not set |
| 868 | CONFIG_SND_MIXER_OSS=y | 1114 | # CONFIG_SND_PCM_OSS is not set |
| 869 | CONFIG_SND_PCM_OSS=y | 1115 | # CONFIG_SND_SEQUENCER_OSS is not set |
| 870 | CONFIG_SND_SEQUENCER_OSS=y | 1116 | CONFIG_SND_RTCTIMER=y |
| 1117 | CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y | ||
| 1118 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
| 1119 | # CONFIG_SND_SUPPORT_OLD_API is not set | ||
| 871 | # CONFIG_SND_VERBOSE_PRINTK is not set | 1120 | # CONFIG_SND_VERBOSE_PRINTK is not set |
| 872 | # CONFIG_SND_DEBUG is not set | 1121 | # CONFIG_SND_DEBUG is not set |
| 873 | 1122 | ||
| @@ -875,6 +1124,8 @@ CONFIG_SND_SEQUENCER_OSS=y | |||
| 875 | # Generic devices | 1124 | # Generic devices |
| 876 | # | 1125 | # |
| 877 | CONFIG_SND_MPU401_UART=y | 1126 | CONFIG_SND_MPU401_UART=y |
| 1127 | CONFIG_SND_AC97_CODEC=y | ||
| 1128 | CONFIG_SND_AC97_BUS=y | ||
| 878 | # CONFIG_SND_DUMMY is not set | 1129 | # CONFIG_SND_DUMMY is not set |
| 879 | # CONFIG_SND_VIRMIDI is not set | 1130 | # CONFIG_SND_VIRMIDI is not set |
| 880 | # CONFIG_SND_MTPAV is not set | 1131 | # CONFIG_SND_MTPAV is not set |
| @@ -882,74 +1133,57 @@ CONFIG_SND_MPU401_UART=y | |||
| 882 | # CONFIG_SND_MPU401 is not set | 1133 | # CONFIG_SND_MPU401 is not set |
| 883 | 1134 | ||
| 884 | # | 1135 | # |
| 885 | # ISA devices | ||
| 886 | # | ||
| 887 | # CONFIG_SND_AD1848 is not set | ||
| 888 | # CONFIG_SND_CS4231 is not set | ||
| 889 | # CONFIG_SND_CS4232 is not set | ||
| 890 | # CONFIG_SND_CS4236 is not set | ||
| 891 | # CONFIG_SND_ES1688 is not set | ||
| 892 | # CONFIG_SND_ES18XX is not set | ||
| 893 | # CONFIG_SND_GUSCLASSIC is not set | ||
| 894 | # CONFIG_SND_GUSEXTREME is not set | ||
| 895 | # CONFIG_SND_GUSMAX is not set | ||
| 896 | # CONFIG_SND_INTERWAVE is not set | ||
| 897 | # CONFIG_SND_INTERWAVE_STB is not set | ||
| 898 | # CONFIG_SND_OPTI92X_AD1848 is not set | ||
| 899 | # CONFIG_SND_OPTI92X_CS4231 is not set | ||
| 900 | # CONFIG_SND_OPTI93X is not set | ||
| 901 | # CONFIG_SND_SB8 is not set | ||
| 902 | # CONFIG_SND_SB16 is not set | ||
| 903 | # CONFIG_SND_SBAWE is not set | ||
| 904 | # CONFIG_SND_WAVEFRONT is not set | ||
| 905 | # CONFIG_SND_CMI8330 is not set | ||
| 906 | # CONFIG_SND_OPL3SA2 is not set | ||
| 907 | # CONFIG_SND_SGALAXY is not set | ||
| 908 | # CONFIG_SND_SSCAPE is not set | ||
| 909 | |||
| 910 | # | ||
| 911 | # PCI devices | 1136 | # PCI devices |
| 912 | # | 1137 | # |
| 913 | CONFIG_SND_AC97_CODEC=y | 1138 | # CONFIG_SND_AD1889 is not set |
| 1139 | # CONFIG_SND_ALS4000 is not set | ||
| 914 | # CONFIG_SND_ALI5451 is not set | 1140 | # CONFIG_SND_ALI5451 is not set |
| 915 | # CONFIG_SND_ATIIXP is not set | 1141 | # CONFIG_SND_ATIIXP is not set |
| 1142 | # CONFIG_SND_ATIIXP_MODEM is not set | ||
| 916 | # CONFIG_SND_AU8810 is not set | 1143 | # CONFIG_SND_AU8810 is not set |
| 917 | # CONFIG_SND_AU8820 is not set | 1144 | # CONFIG_SND_AU8820 is not set |
| 918 | # CONFIG_SND_AU8830 is not set | 1145 | # CONFIG_SND_AU8830 is not set |
| 919 | # CONFIG_SND_AZT3328 is not set | 1146 | # CONFIG_SND_AZT3328 is not set |
| 920 | # CONFIG_SND_BT87X is not set | 1147 | # CONFIG_SND_BT87X is not set |
| 921 | # CONFIG_SND_CS46XX is not set | 1148 | # CONFIG_SND_CA0106 is not set |
| 1149 | # CONFIG_SND_CMIPCI is not set | ||
| 922 | # CONFIG_SND_CS4281 is not set | 1150 | # CONFIG_SND_CS4281 is not set |
| 1151 | # CONFIG_SND_CS46XX is not set | ||
| 1152 | # CONFIG_SND_CS5535AUDIO is not set | ||
| 923 | # CONFIG_SND_EMU10K1 is not set | 1153 | # CONFIG_SND_EMU10K1 is not set |
| 924 | # CONFIG_SND_KORG1212 is not set | 1154 | # CONFIG_SND_EMU10K1X is not set |
| 925 | # CONFIG_SND_MIXART is not set | ||
| 926 | # CONFIG_SND_NM256 is not set | ||
| 927 | # CONFIG_SND_RME32 is not set | ||
| 928 | # CONFIG_SND_RME96 is not set | ||
| 929 | # CONFIG_SND_RME9652 is not set | ||
| 930 | # CONFIG_SND_HDSP is not set | ||
| 931 | # CONFIG_SND_TRIDENT is not set | ||
| 932 | # CONFIG_SND_YMFPCI is not set | ||
| 933 | # CONFIG_SND_ALS4000 is not set | ||
| 934 | # CONFIG_SND_CMIPCI is not set | ||
| 935 | # CONFIG_SND_ENS1370 is not set | 1155 | # CONFIG_SND_ENS1370 is not set |
| 936 | # CONFIG_SND_ENS1371 is not set | 1156 | # CONFIG_SND_ENS1371 is not set |
| 937 | # CONFIG_SND_ES1938 is not set | 1157 | # CONFIG_SND_ES1938 is not set |
| 938 | # CONFIG_SND_ES1968 is not set | 1158 | # CONFIG_SND_ES1968 is not set |
| 939 | # CONFIG_SND_MAESTRO3 is not set | ||
| 940 | # CONFIG_SND_FM801 is not set | 1159 | # CONFIG_SND_FM801 is not set |
| 1160 | # CONFIG_SND_HDA_INTEL is not set | ||
| 1161 | # CONFIG_SND_HDSP is not set | ||
| 1162 | # CONFIG_SND_HDSPM is not set | ||
| 941 | # CONFIG_SND_ICE1712 is not set | 1163 | # CONFIG_SND_ICE1712 is not set |
| 942 | # CONFIG_SND_ICE1724 is not set | 1164 | # CONFIG_SND_ICE1724 is not set |
| 943 | CONFIG_SND_INTEL8X0=y | 1165 | # CONFIG_SND_INTEL8X0 is not set |
| 944 | # CONFIG_SND_INTEL8X0M is not set | 1166 | # CONFIG_SND_INTEL8X0M is not set |
| 1167 | # CONFIG_SND_KORG1212 is not set | ||
| 1168 | # CONFIG_SND_MAESTRO3 is not set | ||
| 1169 | # CONFIG_SND_MIXART is not set | ||
| 1170 | # CONFIG_SND_NM256 is not set | ||
| 1171 | # CONFIG_SND_PCXHR is not set | ||
| 1172 | # CONFIG_SND_RME32 is not set | ||
| 1173 | # CONFIG_SND_RME96 is not set | ||
| 1174 | # CONFIG_SND_RME9652 is not set | ||
| 945 | # CONFIG_SND_SONICVIBES is not set | 1175 | # CONFIG_SND_SONICVIBES is not set |
| 946 | # CONFIG_SND_VIA82XX is not set | 1176 | # CONFIG_SND_TRIDENT is not set |
| 1177 | CONFIG_SND_VIA82XX=y | ||
| 1178 | # CONFIG_SND_VIA82XX_MODEM is not set | ||
| 947 | # CONFIG_SND_VX222 is not set | 1179 | # CONFIG_SND_VX222 is not set |
| 1180 | # CONFIG_SND_YMFPCI is not set | ||
| 948 | 1181 | ||
| 949 | # | 1182 | # |
| 950 | # ALSA USB devices | 1183 | # USB devices |
| 951 | # | 1184 | # |
| 952 | # CONFIG_SND_USB_AUDIO is not set | 1185 | # CONFIG_SND_USB_AUDIO is not set |
| 1186 | # CONFIG_SND_USB_USX2Y is not set | ||
| 953 | 1187 | ||
| 954 | # | 1188 | # |
| 955 | # Open Sound System | 1189 | # Open Sound System |
| @@ -959,6 +1193,8 @@ CONFIG_SND_INTEL8X0=y | |||
| 959 | # | 1193 | # |
| 960 | # USB support | 1194 | # USB support |
| 961 | # | 1195 | # |
| 1196 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 1197 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 962 | CONFIG_USB=y | 1198 | CONFIG_USB=y |
| 963 | # CONFIG_USB_DEBUG is not set | 1199 | # CONFIG_USB_DEBUG is not set |
| 964 | 1200 | ||
| @@ -968,6 +1204,8 @@ CONFIG_USB=y | |||
| 968 | CONFIG_USB_DEVICEFS=y | 1204 | CONFIG_USB_DEVICEFS=y |
| 969 | # CONFIG_USB_BANDWIDTH is not set | 1205 | # CONFIG_USB_BANDWIDTH is not set |
| 970 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1206 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 1207 | # CONFIG_USB_SUSPEND is not set | ||
| 1208 | # CONFIG_USB_OTG is not set | ||
| 971 | 1209 | ||
| 972 | # | 1210 | # |
| 973 | # USB Host Controller Drivers | 1211 | # USB Host Controller Drivers |
| @@ -975,68 +1213,93 @@ CONFIG_USB_DEVICEFS=y | |||
| 975 | CONFIG_USB_EHCI_HCD=y | 1213 | CONFIG_USB_EHCI_HCD=y |
| 976 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 1214 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
| 977 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1215 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
| 1216 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 978 | # CONFIG_USB_OHCI_HCD is not set | 1217 | # CONFIG_USB_OHCI_HCD is not set |
| 979 | CONFIG_USB_UHCI_HCD=y | 1218 | CONFIG_USB_UHCI_HCD=y |
| 1219 | # CONFIG_USB_SL811_HCD is not set | ||
| 980 | 1220 | ||
| 981 | # | 1221 | # |
| 982 | # USB Device Class drivers | 1222 | # USB Device Class drivers |
| 983 | # | 1223 | # |
| 984 | # CONFIG_USB_AUDIO is not set | 1224 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
| 985 | # CONFIG_USB_BLUETOOTH_TTY is not set | ||
| 986 | # CONFIG_USB_MIDI is not set | ||
| 987 | # CONFIG_USB_ACM is not set | 1225 | # CONFIG_USB_ACM is not set |
| 988 | CONFIG_USB_PRINTER=y | 1226 | # CONFIG_USB_PRINTER is not set |
| 1227 | |||
| 1228 | # | ||
| 1229 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
| 1230 | # | ||
| 1231 | |||
| 1232 | # | ||
| 1233 | # may also be needed; see USB_STORAGE Help for more information | ||
| 1234 | # | ||
| 989 | CONFIG_USB_STORAGE=y | 1235 | CONFIG_USB_STORAGE=y |
| 990 | # CONFIG_USB_STORAGE_DEBUG is not set | 1236 | # CONFIG_USB_STORAGE_DEBUG is not set |
| 991 | # CONFIG_USB_STORAGE_DATAFAB is not set | 1237 | # CONFIG_USB_STORAGE_DATAFAB is not set |
| 992 | # CONFIG_USB_STORAGE_FREECOM is not set | 1238 | # CONFIG_USB_STORAGE_FREECOM is not set |
| 993 | # CONFIG_USB_STORAGE_ISD200 is not set | 1239 | # CONFIG_USB_STORAGE_ISD200 is not set |
| 994 | # CONFIG_USB_STORAGE_DPCM is not set | 1240 | # CONFIG_USB_STORAGE_DPCM is not set |
| 995 | # CONFIG_USB_STORAGE_HP8200e is not set | 1241 | # CONFIG_USB_STORAGE_USBAT is not set |
| 996 | # CONFIG_USB_STORAGE_SDDR09 is not set | 1242 | # CONFIG_USB_STORAGE_SDDR09 is not set |
| 997 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1243 | # CONFIG_USB_STORAGE_SDDR55 is not set |
| 998 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1244 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
| 1245 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 1246 | # CONFIG_USB_LIBUSUAL is not set | ||
| 999 | 1247 | ||
| 1000 | # | 1248 | # |
| 1001 | # USB Human Interface Devices (HID) | 1249 | # USB Input Devices |
| 1250 | # | ||
| 1251 | # CONFIG_USB_HID is not set | ||
| 1252 | |||
| 1002 | # | 1253 | # |
| 1003 | CONFIG_USB_HID=y | 1254 | # USB HID Boot Protocol drivers |
| 1004 | CONFIG_USB_HIDINPUT=y | 1255 | # |
| 1005 | # CONFIG_HID_FF is not set | 1256 | # CONFIG_USB_KBD is not set |
| 1006 | # CONFIG_USB_HIDDEV is not set | 1257 | # CONFIG_USB_MOUSE is not set |
| 1007 | # CONFIG_USB_AIPTEK is not set | 1258 | # CONFIG_USB_AIPTEK is not set |
| 1008 | # CONFIG_USB_WACOM is not set | 1259 | # CONFIG_USB_WACOM is not set |
| 1260 | # CONFIG_USB_ACECAD is not set | ||
| 1009 | # CONFIG_USB_KBTAB is not set | 1261 | # CONFIG_USB_KBTAB is not set |
| 1010 | # CONFIG_USB_POWERMATE is not set | 1262 | # CONFIG_USB_POWERMATE is not set |
| 1011 | # CONFIG_USB_MTOUCH is not set | 1263 | # CONFIG_USB_MTOUCH is not set |
| 1012 | CONFIG_USB_EGALAX=m | 1264 | # CONFIG_USB_ITMTOUCH is not set |
| 1265 | # CONFIG_USB_EGALAX is not set | ||
| 1266 | # CONFIG_USB_YEALINK is not set | ||
| 1013 | # CONFIG_USB_XPAD is not set | 1267 | # CONFIG_USB_XPAD is not set |
| 1014 | # CONFIG_USB_ATI_REMOTE is not set | 1268 | # CONFIG_USB_ATI_REMOTE is not set |
| 1269 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
| 1270 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 1271 | # CONFIG_USB_APPLETOUCH is not set | ||
| 1015 | 1272 | ||
| 1016 | # | 1273 | # |
| 1017 | # USB Imaging devices | 1274 | # USB Imaging devices |
| 1018 | # | 1275 | # |
| 1019 | # CONFIG_USB_MDC800 is not set | 1276 | # CONFIG_USB_MDC800 is not set |
| 1020 | # CONFIG_USB_MICROTEK is not set | 1277 | # CONFIG_USB_MICROTEK is not set |
| 1021 | # CONFIG_USB_HPUSBSCSI is not set | ||
| 1022 | 1278 | ||
| 1023 | # | 1279 | # |
| 1024 | # USB Multimedia devices | 1280 | # USB Multimedia devices |
| 1025 | # | 1281 | # |
| 1026 | # CONFIG_USB_DABUSB is not set | 1282 | # CONFIG_USB_DABUSB is not set |
| 1283 | # CONFIG_USB_VICAM is not set | ||
| 1284 | # CONFIG_USB_DSBR is not set | ||
| 1285 | # CONFIG_USB_ET61X251 is not set | ||
| 1286 | # CONFIG_USB_IBMCAM is not set | ||
| 1287 | # CONFIG_USB_KONICAWC is not set | ||
| 1288 | # CONFIG_USB_OV511 is not set | ||
| 1289 | # CONFIG_USB_SE401 is not set | ||
| 1290 | # CONFIG_USB_SN9C102 is not set | ||
| 1291 | # CONFIG_USB_STV680 is not set | ||
| 1292 | # CONFIG_USB_PWC is not set | ||
| 1027 | 1293 | ||
| 1028 | # | 1294 | # |
| 1029 | # Video4Linux support is needed for USB Multimedia device support | 1295 | # USB Network Adapters |
| 1030 | # | ||
| 1031 | |||
| 1032 | # | ||
| 1033 | # USB Network adaptors | ||
| 1034 | # | 1296 | # |
| 1035 | # CONFIG_USB_CATC is not set | 1297 | # CONFIG_USB_CATC is not set |
| 1036 | # CONFIG_USB_KAWETH is not set | 1298 | # CONFIG_USB_KAWETH is not set |
| 1037 | # CONFIG_USB_PEGASUS is not set | 1299 | # CONFIG_USB_PEGASUS is not set |
| 1038 | # CONFIG_USB_RTL8150 is not set | 1300 | # CONFIG_USB_RTL8150 is not set |
| 1039 | # CONFIG_USB_USBNET is not set | 1301 | # CONFIG_USB_USBNET is not set |
| 1302 | # CONFIG_USB_MON is not set | ||
| 1040 | 1303 | ||
| 1041 | # | 1304 | # |
| 1042 | # USB port drivers | 1305 | # USB port drivers |
| @@ -1053,56 +1316,85 @@ CONFIG_USB_EGALAX=m | |||
| 1053 | # | 1316 | # |
| 1054 | # CONFIG_USB_EMI62 is not set | 1317 | # CONFIG_USB_EMI62 is not set |
| 1055 | # CONFIG_USB_EMI26 is not set | 1318 | # CONFIG_USB_EMI26 is not set |
| 1056 | # CONFIG_USB_TIGL is not set | ||
| 1057 | # CONFIG_USB_AUERSWALD is not set | 1319 | # CONFIG_USB_AUERSWALD is not set |
| 1058 | # CONFIG_USB_RIO500 is not set | 1320 | # CONFIG_USB_RIO500 is not set |
| 1059 | # CONFIG_USB_LEGOTOWER is not set | 1321 | # CONFIG_USB_LEGOTOWER is not set |
| 1060 | # CONFIG_USB_LCD is not set | 1322 | # CONFIG_USB_LCD is not set |
| 1061 | # CONFIG_USB_LED is not set | 1323 | # CONFIG_USB_LED is not set |
| 1062 | CONFIG_USB_CYTHERM=m | 1324 | # CONFIG_USB_CYTHERM is not set |
| 1063 | CONFIG_USB_PHIDGETSERVO=m | 1325 | # CONFIG_USB_PHIDGETKIT is not set |
| 1326 | # CONFIG_USB_PHIDGETSERVO is not set | ||
| 1327 | # CONFIG_USB_IDMOUSE is not set | ||
| 1328 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1329 | # CONFIG_USB_LD is not set | ||
| 1064 | # CONFIG_USB_TEST is not set | 1330 | # CONFIG_USB_TEST is not set |
| 1065 | 1331 | ||
| 1066 | # | 1332 | # |
| 1333 | # USB DSL modem support | ||
| 1334 | # | ||
| 1335 | |||
| 1336 | # | ||
| 1067 | # USB Gadget Support | 1337 | # USB Gadget Support |
| 1068 | # | 1338 | # |
| 1069 | # CONFIG_USB_GADGET is not set | 1339 | # CONFIG_USB_GADGET is not set |
| 1070 | 1340 | ||
| 1071 | # | 1341 | # |
| 1342 | # MMC/SD Card support | ||
| 1343 | # | ||
| 1344 | # CONFIG_MMC is not set | ||
| 1345 | |||
| 1346 | # | ||
| 1347 | # InfiniBand support | ||
| 1348 | # | ||
| 1349 | # CONFIG_INFINIBAND is not set | ||
| 1350 | |||
| 1351 | # | ||
| 1352 | # SN Devices | ||
| 1353 | # | ||
| 1354 | |||
| 1355 | # | ||
| 1356 | # EDAC - error detection and reporting (RAS) | ||
| 1357 | # | ||
| 1358 | # CONFIG_EDAC is not set | ||
| 1359 | |||
| 1360 | # | ||
| 1072 | # File systems | 1361 | # File systems |
| 1073 | # | 1362 | # |
| 1074 | CONFIG_EXT2_FS=y | 1363 | CONFIG_EXT2_FS=y |
| 1075 | # CONFIG_EXT2_FS_XATTR is not set | 1364 | # CONFIG_EXT2_FS_XATTR is not set |
| 1076 | CONFIG_EXT3_FS=y | 1365 | # CONFIG_EXT2_FS_XIP is not set |
| 1077 | CONFIG_EXT3_FS_XATTR=y | 1366 | # CONFIG_EXT3_FS is not set |
| 1078 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 1079 | # CONFIG_EXT3_FS_SECURITY is not set | ||
| 1080 | CONFIG_JBD=y | ||
| 1081 | # CONFIG_JBD_DEBUG is not set | ||
| 1082 | CONFIG_FS_MBCACHE=y | ||
| 1083 | # CONFIG_REISERFS_FS is not set | 1367 | # CONFIG_REISERFS_FS is not set |
| 1084 | # CONFIG_JFS_FS is not set | 1368 | # CONFIG_JFS_FS is not set |
| 1369 | # CONFIG_FS_POSIX_ACL is not set | ||
| 1085 | # CONFIG_XFS_FS is not set | 1370 | # CONFIG_XFS_FS is not set |
| 1371 | # CONFIG_OCFS2_FS is not set | ||
| 1086 | # CONFIG_MINIX_FS is not set | 1372 | # CONFIG_MINIX_FS is not set |
| 1087 | # CONFIG_ROMFS_FS is not set | 1373 | # CONFIG_ROMFS_FS is not set |
| 1374 | # CONFIG_INOTIFY is not set | ||
| 1088 | # CONFIG_QUOTA is not set | 1375 | # CONFIG_QUOTA is not set |
| 1376 | CONFIG_DNOTIFY=y | ||
| 1089 | # CONFIG_AUTOFS_FS is not set | 1377 | # CONFIG_AUTOFS_FS is not set |
| 1090 | CONFIG_AUTOFS4_FS=y | 1378 | # CONFIG_AUTOFS4_FS is not set |
| 1379 | # CONFIG_FUSE_FS is not set | ||
| 1091 | 1380 | ||
| 1092 | # | 1381 | # |
| 1093 | # CD-ROM/DVD Filesystems | 1382 | # CD-ROM/DVD Filesystems |
| 1094 | # | 1383 | # |
| 1095 | CONFIG_ISO9660_FS=y | 1384 | CONFIG_ISO9660_FS=y |
| 1096 | CONFIG_JOLIET=y | 1385 | CONFIG_JOLIET=y |
| 1097 | # CONFIG_ZISOFS is not set | 1386 | CONFIG_ZISOFS=y |
| 1098 | CONFIG_UDF_FS=y | 1387 | CONFIG_ZISOFS_FS=y |
| 1388 | # CONFIG_UDF_FS is not set | ||
| 1099 | 1389 | ||
| 1100 | # | 1390 | # |
| 1101 | # DOS/FAT/NT Filesystems | 1391 | # DOS/FAT/NT Filesystems |
| 1102 | # | 1392 | # |
| 1103 | CONFIG_FAT_FS=y | 1393 | CONFIG_FAT_FS=y |
| 1104 | CONFIG_MSDOS_FS=y | 1394 | # CONFIG_MSDOS_FS is not set |
| 1105 | CONFIG_VFAT_FS=y | 1395 | CONFIG_VFAT_FS=y |
| 1396 | CONFIG_FAT_DEFAULT_CODEPAGE=850 | ||
| 1397 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1106 | # CONFIG_NTFS_FS is not set | 1398 | # CONFIG_NTFS_FS is not set |
| 1107 | 1399 | ||
| 1108 | # | 1400 | # |
| @@ -1111,12 +1403,12 @@ CONFIG_VFAT_FS=y | |||
| 1111 | CONFIG_PROC_FS=y | 1403 | CONFIG_PROC_FS=y |
| 1112 | CONFIG_PROC_KCORE=y | 1404 | CONFIG_PROC_KCORE=y |
| 1113 | CONFIG_SYSFS=y | 1405 | CONFIG_SYSFS=y |
| 1114 | # CONFIG_DEVFS_FS is not set | ||
| 1115 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
| 1116 | CONFIG_TMPFS=y | 1406 | CONFIG_TMPFS=y |
| 1117 | # CONFIG_HUGETLBFS is not set | 1407 | # CONFIG_HUGETLBFS is not set |
| 1118 | # CONFIG_HUGETLB_PAGE is not set | 1408 | # CONFIG_HUGETLB_PAGE is not set |
| 1119 | CONFIG_RAMFS=y | 1409 | CONFIG_RAMFS=y |
| 1410 | # CONFIG_RELAYFS_FS is not set | ||
| 1411 | # CONFIG_CONFIGFS_FS is not set | ||
| 1120 | 1412 | ||
| 1121 | # | 1413 | # |
| 1122 | # Miscellaneous filesystems | 1414 | # Miscellaneous filesystems |
| @@ -1138,38 +1430,48 @@ CONFIG_RAMFS=y | |||
| 1138 | # | 1430 | # |
| 1139 | # Network File Systems | 1431 | # Network File Systems |
| 1140 | # | 1432 | # |
| 1141 | CONFIG_NFS_FS=y | 1433 | # CONFIG_NFS_FS is not set |
| 1142 | # CONFIG_NFS_V3 is not set | 1434 | # CONFIG_NFSD is not set |
| 1143 | # CONFIG_NFS_V4 is not set | ||
| 1144 | # CONFIG_NFS_DIRECTIO is not set | ||
| 1145 | CONFIG_NFSD=y | ||
| 1146 | # CONFIG_NFSD_V3 is not set | ||
| 1147 | CONFIG_NFSD_TCP=y | ||
| 1148 | CONFIG_LOCKD=y | ||
| 1149 | CONFIG_EXPORTFS=y | ||
| 1150 | CONFIG_SUNRPC=y | ||
| 1151 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
| 1152 | # CONFIG_SMB_FS is not set | 1435 | # CONFIG_SMB_FS is not set |
| 1153 | # CONFIG_CIFS is not set | 1436 | CONFIG_CIFS=y |
| 1437 | # CONFIG_CIFS_STATS is not set | ||
| 1438 | # CONFIG_CIFS_XATTR is not set | ||
| 1439 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 1154 | # CONFIG_NCP_FS is not set | 1440 | # CONFIG_NCP_FS is not set |
| 1155 | # CONFIG_CODA_FS is not set | 1441 | # CONFIG_CODA_FS is not set |
| 1156 | # CONFIG_AFS_FS is not set | 1442 | # CONFIG_AFS_FS is not set |
| 1443 | # CONFIG_9P_FS is not set | ||
| 1157 | 1444 | ||
| 1158 | # | 1445 | # |
| 1159 | # Partition Types | 1446 | # Partition Types |
| 1160 | # | 1447 | # |
| 1161 | # CONFIG_PARTITION_ADVANCED is not set | 1448 | CONFIG_PARTITION_ADVANCED=y |
| 1449 | # CONFIG_ACORN_PARTITION is not set | ||
| 1450 | # CONFIG_OSF_PARTITION is not set | ||
| 1451 | # CONFIG_AMIGA_PARTITION is not set | ||
| 1452 | # CONFIG_ATARI_PARTITION is not set | ||
| 1453 | # CONFIG_MAC_PARTITION is not set | ||
| 1162 | CONFIG_MSDOS_PARTITION=y | 1454 | CONFIG_MSDOS_PARTITION=y |
| 1455 | # CONFIG_BSD_DISKLABEL is not set | ||
| 1456 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 1457 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 1458 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 1459 | # CONFIG_LDM_PARTITION is not set | ||
| 1460 | # CONFIG_SGI_PARTITION is not set | ||
| 1461 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 1462 | # CONFIG_SUN_PARTITION is not set | ||
| 1463 | # CONFIG_KARMA_PARTITION is not set | ||
| 1464 | # CONFIG_EFI_PARTITION is not set | ||
| 1163 | 1465 | ||
| 1164 | # | 1466 | # |
| 1165 | # Native Language Support | 1467 | # Native Language Support |
| 1166 | # | 1468 | # |
| 1167 | CONFIG_NLS=y | 1469 | CONFIG_NLS=y |
| 1168 | CONFIG_NLS_DEFAULT="iso8859-1" | 1470 | CONFIG_NLS_DEFAULT="iso8859-15" |
| 1169 | CONFIG_NLS_CODEPAGE_437=y | 1471 | # CONFIG_NLS_CODEPAGE_437 is not set |
| 1170 | # CONFIG_NLS_CODEPAGE_737 is not set | 1472 | # CONFIG_NLS_CODEPAGE_737 is not set |
| 1171 | # CONFIG_NLS_CODEPAGE_775 is not set | 1473 | # CONFIG_NLS_CODEPAGE_775 is not set |
| 1172 | # CONFIG_NLS_CODEPAGE_850 is not set | 1474 | CONFIG_NLS_CODEPAGE_850=y |
| 1173 | # CONFIG_NLS_CODEPAGE_852 is not set | 1475 | # CONFIG_NLS_CODEPAGE_852 is not set |
| 1174 | # CONFIG_NLS_CODEPAGE_855 is not set | 1476 | # CONFIG_NLS_CODEPAGE_855 is not set |
| 1175 | # CONFIG_NLS_CODEPAGE_857 is not set | 1477 | # CONFIG_NLS_CODEPAGE_857 is not set |
| @@ -1189,6 +1491,7 @@ CONFIG_NLS_CODEPAGE_437=y | |||
| 1189 | # CONFIG_NLS_ISO8859_8 is not set | 1491 | # CONFIG_NLS_ISO8859_8 is not set |
| 1190 | # CONFIG_NLS_CODEPAGE_1250 is not set | 1492 | # CONFIG_NLS_CODEPAGE_1250 is not set |
| 1191 | # CONFIG_NLS_CODEPAGE_1251 is not set | 1493 | # CONFIG_NLS_CODEPAGE_1251 is not set |
| 1494 | # CONFIG_NLS_ASCII is not set | ||
| 1192 | CONFIG_NLS_ISO8859_1=y | 1495 | CONFIG_NLS_ISO8859_1=y |
| 1193 | # CONFIG_NLS_ISO8859_2 is not set | 1496 | # CONFIG_NLS_ISO8859_2 is not set |
| 1194 | # CONFIG_NLS_ISO8859_3 is not set | 1497 | # CONFIG_NLS_ISO8859_3 is not set |
| @@ -1199,31 +1502,33 @@ CONFIG_NLS_ISO8859_1=y | |||
| 1199 | # CONFIG_NLS_ISO8859_9 is not set | 1502 | # CONFIG_NLS_ISO8859_9 is not set |
| 1200 | # CONFIG_NLS_ISO8859_13 is not set | 1503 | # CONFIG_NLS_ISO8859_13 is not set |
| 1201 | # CONFIG_NLS_ISO8859_14 is not set | 1504 | # CONFIG_NLS_ISO8859_14 is not set |
| 1202 | # CONFIG_NLS_ISO8859_15 is not set | 1505 | CONFIG_NLS_ISO8859_15=y |
| 1203 | # CONFIG_NLS_KOI8_R is not set | 1506 | # CONFIG_NLS_KOI8_R is not set |
| 1204 | # CONFIG_NLS_KOI8_U is not set | 1507 | # CONFIG_NLS_KOI8_U is not set |
| 1205 | # CONFIG_NLS_UTF8 is not set | 1508 | CONFIG_NLS_UTF8=y |
| 1206 | 1509 | ||
| 1207 | # | 1510 | # |
| 1208 | # Profiling support | 1511 | # Instrumentation Support |
| 1209 | # | 1512 | # |
| 1210 | CONFIG_PROFILING=y | 1513 | # CONFIG_PROFILING is not set |
| 1211 | CONFIG_OPROFILE=y | 1514 | # CONFIG_KPROBES is not set |
| 1212 | 1515 | ||
| 1213 | # | 1516 | # |
| 1214 | # Kernel hacking | 1517 | # Kernel hacking |
| 1215 | # | 1518 | # |
| 1519 | # CONFIG_PRINTK_TIME is not set | ||
| 1520 | CONFIG_MAGIC_SYSRQ=y | ||
| 1216 | # CONFIG_DEBUG_KERNEL is not set | 1521 | # CONFIG_DEBUG_KERNEL is not set |
| 1522 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 1523 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 1217 | CONFIG_EARLY_PRINTK=y | 1524 | CONFIG_EARLY_PRINTK=y |
| 1218 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | ||
| 1219 | # CONFIG_FRAME_POINTER is not set | ||
| 1220 | CONFIG_4KSTACKS=y | ||
| 1221 | CONFIG_X86_FIND_SMP_CONFIG=y | 1525 | CONFIG_X86_FIND_SMP_CONFIG=y |
| 1222 | CONFIG_X86_MPPARSE=y | 1526 | CONFIG_X86_MPPARSE=y |
| 1223 | 1527 | ||
| 1224 | # | 1528 | # |
| 1225 | # Security options | 1529 | # Security options |
| 1226 | # | 1530 | # |
| 1531 | # CONFIG_KEYS is not set | ||
| 1227 | # CONFIG_SECURITY is not set | 1532 | # CONFIG_SECURITY is not set |
| 1228 | 1533 | ||
| 1229 | # | 1534 | # |
| @@ -1232,13 +1537,18 @@ CONFIG_X86_MPPARSE=y | |||
| 1232 | # CONFIG_CRYPTO is not set | 1537 | # CONFIG_CRYPTO is not set |
| 1233 | 1538 | ||
| 1234 | # | 1539 | # |
| 1540 | # Hardware crypto devices | ||
| 1541 | # | ||
| 1542 | |||
| 1543 | # | ||
| 1235 | # Library routines | 1544 | # Library routines |
| 1236 | # | 1545 | # |
| 1546 | # CONFIG_CRC_CCITT is not set | ||
| 1547 | # CONFIG_CRC16 is not set | ||
| 1237 | CONFIG_CRC32=y | 1548 | CONFIG_CRC32=y |
| 1238 | CONFIG_LIBCRC32C=m | 1549 | # CONFIG_LIBCRC32C is not set |
| 1239 | CONFIG_X86_SMP=y | 1550 | CONFIG_ZLIB_INFLATE=y |
| 1240 | CONFIG_X86_HT=y | 1551 | CONFIG_GENERIC_HARDIRQS=y |
| 1552 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 1241 | CONFIG_X86_BIOS_REBOOT=y | 1553 | CONFIG_X86_BIOS_REBOOT=y |
| 1242 | CONFIG_X86_TRAMPOLINE=y | 1554 | CONFIG_KTIME_SCALAR=y |
| 1243 | CONFIG_X86_STD_RESOURCES=y | ||
| 1244 | CONFIG_PC=y | ||
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile index 65656c033d70..5b9ed21216cf 100644 --- a/arch/i386/kernel/Makefile +++ b/arch/i386/kernel/Makefile | |||
| @@ -7,7 +7,7 @@ extra-y := head.o init_task.o vmlinux.lds | |||
| 7 | obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ | 7 | obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ |
| 8 | ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \ | 8 | ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \ |
| 9 | pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \ | 9 | pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \ |
| 10 | quirks.o i8237.o topology.o | 10 | quirks.o i8237.o topology.o alternative.o |
| 11 | 11 | ||
| 12 | obj-y += cpu/ | 12 | obj-y += cpu/ |
| 13 | obj-y += timers/ | 13 | obj-y += timers/ |
diff --git a/arch/i386/kernel/alternative.c b/arch/i386/kernel/alternative.c new file mode 100644 index 000000000000..5cbd6f99fb2a --- /dev/null +++ b/arch/i386/kernel/alternative.c | |||
| @@ -0,0 +1,321 @@ | |||
| 1 | #include <linux/module.h> | ||
| 2 | #include <linux/spinlock.h> | ||
| 3 | #include <linux/list.h> | ||
| 4 | #include <asm/alternative.h> | ||
| 5 | #include <asm/sections.h> | ||
| 6 | |||
| 7 | #define DEBUG 0 | ||
| 8 | #if DEBUG | ||
| 9 | # define DPRINTK(fmt, args...) printk(fmt, args) | ||
| 10 | #else | ||
| 11 | # define DPRINTK(fmt, args...) | ||
| 12 | #endif | ||
| 13 | |||
| 14 | /* Use inline assembly to define this because the nops are defined | ||
| 15 | as inline assembly strings in the include files and we cannot | ||
| 16 | get them easily into strings. */ | ||
| 17 | asm("\t.data\nintelnops: " | ||
| 18 | GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 | ||
| 19 | GENERIC_NOP7 GENERIC_NOP8); | ||
| 20 | asm("\t.data\nk8nops: " | ||
| 21 | K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 | ||
| 22 | K8_NOP7 K8_NOP8); | ||
| 23 | asm("\t.data\nk7nops: " | ||
| 24 | K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 | ||
| 25 | K7_NOP7 K7_NOP8); | ||
| 26 | |||
| 27 | extern unsigned char intelnops[], k8nops[], k7nops[]; | ||
| 28 | static unsigned char *intel_nops[ASM_NOP_MAX+1] = { | ||
| 29 | NULL, | ||
| 30 | intelnops, | ||
| 31 | intelnops + 1, | ||
| 32 | intelnops + 1 + 2, | ||
| 33 | intelnops + 1 + 2 + 3, | ||
| 34 | intelnops + 1 + 2 + 3 + 4, | ||
| 35 | intelnops + 1 + 2 + 3 + 4 + 5, | ||
| 36 | intelnops + 1 + 2 + 3 + 4 + 5 + 6, | ||
| 37 | intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7, | ||
| 38 | }; | ||
| 39 | static unsigned char *k8_nops[ASM_NOP_MAX+1] = { | ||
| 40 | NULL, | ||
| 41 | k8nops, | ||
| 42 | k8nops + 1, | ||
| 43 | k8nops + 1 + 2, | ||
| 44 | k8nops + 1 + 2 + 3, | ||
| 45 | k8nops + 1 + 2 + 3 + 4, | ||
| 46 | k8nops + 1 + 2 + 3 + 4 + 5, | ||
| 47 | k8nops + 1 + 2 + 3 + 4 + 5 + 6, | ||
| 48 | k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, | ||
| 49 | }; | ||
| 50 | static unsigned char *k7_nops[ASM_NOP_MAX+1] = { | ||
| 51 | NULL, | ||
| 52 | k7nops, | ||
| 53 | k7nops + 1, | ||
| 54 | k7nops + 1 + 2, | ||
| 55 | k7nops + 1 + 2 + 3, | ||
| 56 | k7nops + 1 + 2 + 3 + 4, | ||
| 57 | k7nops + 1 + 2 + 3 + 4 + 5, | ||
| 58 | k7nops + 1 + 2 + 3 + 4 + 5 + 6, | ||
| 59 | k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, | ||
| 60 | }; | ||
| 61 | static struct nop { | ||
| 62 | int cpuid; | ||
| 63 | unsigned char **noptable; | ||
| 64 | } noptypes[] = { | ||
| 65 | { X86_FEATURE_K8, k8_nops }, | ||
| 66 | { X86_FEATURE_K7, k7_nops }, | ||
| 67 | { -1, NULL } | ||
| 68 | }; | ||
| 69 | |||
| 70 | |||
| 71 | extern struct alt_instr __alt_instructions[], __alt_instructions_end[]; | ||
| 72 | extern struct alt_instr __smp_alt_instructions[], __smp_alt_instructions_end[]; | ||
| 73 | extern u8 *__smp_locks[], *__smp_locks_end[]; | ||
| 74 | |||
| 75 | extern u8 __smp_alt_begin[], __smp_alt_end[]; | ||
| 76 | |||
| 77 | |||
| 78 | static unsigned char** find_nop_table(void) | ||
| 79 | { | ||
| 80 | unsigned char **noptable = intel_nops; | ||
| 81 | int i; | ||
| 82 | |||
| 83 | for (i = 0; noptypes[i].cpuid >= 0; i++) { | ||
| 84 | if (boot_cpu_has(noptypes[i].cpuid)) { | ||
| 85 | noptable = noptypes[i].noptable; | ||
| 86 | break; | ||
| 87 | } | ||
| 88 | } | ||
| 89 | return noptable; | ||
| 90 | } | ||
| 91 | |||
| 92 | /* Replace instructions with better alternatives for this CPU type. | ||
| 93 | This runs before SMP is initialized to avoid SMP problems with | ||
| 94 | self modifying code. This implies that assymetric systems where | ||
| 95 | APs have less capabilities than the boot processor are not handled. | ||
| 96 | Tough. Make sure you disable such features by hand. */ | ||
| 97 | |||
| 98 | void apply_alternatives(struct alt_instr *start, struct alt_instr *end) | ||
| 99 | { | ||
| 100 | unsigned char **noptable = find_nop_table(); | ||
| 101 | struct alt_instr *a; | ||
| 102 | int diff, i, k; | ||
| 103 | |||
| 104 | DPRINTK("%s: alt table %p -> %p\n", __FUNCTION__, start, end); | ||
| 105 | for (a = start; a < end; a++) { | ||
| 106 | BUG_ON(a->replacementlen > a->instrlen); | ||
| 107 | if (!boot_cpu_has(a->cpuid)) | ||
| 108 | continue; | ||
| 109 | memcpy(a->instr, a->replacement, a->replacementlen); | ||
| 110 | diff = a->instrlen - a->replacementlen; | ||
| 111 | /* Pad the rest with nops */ | ||
| 112 | for (i = a->replacementlen; diff > 0; diff -= k, i += k) { | ||
| 113 | k = diff; | ||
| 114 | if (k > ASM_NOP_MAX) | ||
| 115 | k = ASM_NOP_MAX; | ||
| 116 | memcpy(a->instr + i, noptable[k], k); | ||
| 117 | } | ||
| 118 | } | ||
| 119 | } | ||
| 120 | |||
| 121 | static void alternatives_smp_save(struct alt_instr *start, struct alt_instr *end) | ||
| 122 | { | ||
| 123 | struct alt_instr *a; | ||
| 124 | |||
| 125 | DPRINTK("%s: alt table %p-%p\n", __FUNCTION__, start, end); | ||
| 126 | for (a = start; a < end; a++) { | ||
| 127 | memcpy(a->replacement + a->replacementlen, | ||
| 128 | a->instr, | ||
| 129 | a->instrlen); | ||
| 130 | } | ||
| 131 | } | ||
| 132 | |||
| 133 | static void alternatives_smp_apply(struct alt_instr *start, struct alt_instr *end) | ||
| 134 | { | ||
| 135 | struct alt_instr *a; | ||
| 136 | |||
| 137 | for (a = start; a < end; a++) { | ||
| 138 | memcpy(a->instr, | ||
| 139 | a->replacement + a->replacementlen, | ||
| 140 | a->instrlen); | ||
| 141 | } | ||
| 142 | } | ||
| 143 | |||
| 144 | static void alternatives_smp_lock(u8 **start, u8 **end, u8 *text, u8 *text_end) | ||
| 145 | { | ||
| 146 | u8 **ptr; | ||
| 147 | |||
| 148 | for (ptr = start; ptr < end; ptr++) { | ||
| 149 | if (*ptr < text) | ||
| 150 | continue; | ||
| 151 | if (*ptr > text_end) | ||
| 152 | continue; | ||
| 153 | **ptr = 0xf0; /* lock prefix */ | ||
| 154 | }; | ||
| 155 | } | ||
| 156 | |||
| 157 | static void alternatives_smp_unlock(u8 **start, u8 **end, u8 *text, u8 *text_end) | ||
| 158 | { | ||
| 159 | unsigned char **noptable = find_nop_table(); | ||
| 160 | u8 **ptr; | ||
| 161 | |||
| 162 | for (ptr = start; ptr < end; ptr++) { | ||
| 163 | if (*ptr < text) | ||
| 164 | continue; | ||
| 165 | if (*ptr > text_end) | ||
| 166 | continue; | ||
| 167 | **ptr = noptable[1][0]; | ||
| 168 | }; | ||
| 169 | } | ||
| 170 | |||
| 171 | struct smp_alt_module { | ||
| 172 | /* what is this ??? */ | ||
| 173 | struct module *mod; | ||
| 174 | char *name; | ||
| 175 | |||
| 176 | /* ptrs to lock prefixes */ | ||
| 177 | u8 **locks; | ||
| 178 | u8 **locks_end; | ||
| 179 | |||
| 180 | /* .text segment, needed to avoid patching init code ;) */ | ||
| 181 | u8 *text; | ||
| 182 | u8 *text_end; | ||
| 183 | |||
| 184 | struct list_head next; | ||
| 185 | }; | ||
| 186 | static LIST_HEAD(smp_alt_modules); | ||
| 187 | static DEFINE_SPINLOCK(smp_alt); | ||
| 188 | |||
| 189 | static int smp_alt_once = 0; | ||
| 190 | static int __init bootonly(char *str) | ||
| 191 | { | ||
| 192 | smp_alt_once = 1; | ||
| 193 | return 1; | ||
| 194 | } | ||
| 195 | __setup("smp-alt-boot", bootonly); | ||
| 196 | |||
| 197 | void alternatives_smp_module_add(struct module *mod, char *name, | ||
| 198 | void *locks, void *locks_end, | ||
| 199 | void *text, void *text_end) | ||
| 200 | { | ||
| 201 | struct smp_alt_module *smp; | ||
| 202 | unsigned long flags; | ||
| 203 | |||
| 204 | if (smp_alt_once) { | ||
| 205 | if (boot_cpu_has(X86_FEATURE_UP)) | ||
| 206 | alternatives_smp_unlock(locks, locks_end, | ||
| 207 | text, text_end); | ||
| 208 | return; | ||
| 209 | } | ||
| 210 | |||
| 211 | smp = kzalloc(sizeof(*smp), GFP_KERNEL); | ||
| 212 | if (NULL == smp) | ||
| 213 | return; /* we'll run the (safe but slow) SMP code then ... */ | ||
| 214 | |||
| 215 | smp->mod = mod; | ||
| 216 | smp->name = name; | ||
| 217 | smp->locks = locks; | ||
| 218 | smp->locks_end = locks_end; | ||
| 219 | smp->text = text; | ||
| 220 | smp->text_end = text_end; | ||
| 221 | DPRINTK("%s: locks %p -> %p, text %p -> %p, name %s\n", | ||
| 222 | __FUNCTION__, smp->locks, smp->locks_end, | ||
| 223 | smp->text, smp->text_end, smp->name); | ||
| 224 | |||
| 225 | spin_lock_irqsave(&smp_alt, flags); | ||
| 226 | list_add_tail(&smp->next, &smp_alt_modules); | ||
| 227 | if (boot_cpu_has(X86_FEATURE_UP)) | ||
| 228 | alternatives_smp_unlock(smp->locks, smp->locks_end, | ||
| 229 | smp->text, smp->text_end); | ||
| 230 | spin_unlock_irqrestore(&smp_alt, flags); | ||
| 231 | } | ||
| 232 | |||
| 233 | void alternatives_smp_module_del(struct module *mod) | ||
| 234 | { | ||
| 235 | struct smp_alt_module *item; | ||
| 236 | unsigned long flags; | ||
| 237 | |||
| 238 | if (smp_alt_once) | ||
| 239 | return; | ||
| 240 | |||
| 241 | spin_lock_irqsave(&smp_alt, flags); | ||
| 242 | list_for_each_entry(item, &smp_alt_modules, next) { | ||
| 243 | if (mod != item->mod) | ||
| 244 | continue; | ||
| 245 | list_del(&item->next); | ||
| 246 | spin_unlock_irqrestore(&smp_alt, flags); | ||
| 247 | DPRINTK("%s: %s\n", __FUNCTION__, item->name); | ||
| 248 | kfree(item); | ||
| 249 | return; | ||
| 250 | } | ||
| 251 | spin_unlock_irqrestore(&smp_alt, flags); | ||
| 252 | } | ||
| 253 | |||
| 254 | void alternatives_smp_switch(int smp) | ||
| 255 | { | ||
| 256 | struct smp_alt_module *mod; | ||
| 257 | unsigned long flags; | ||
| 258 | |||
| 259 | if (smp_alt_once) | ||
| 260 | return; | ||
| 261 | BUG_ON(!smp && (num_online_cpus() > 1)); | ||
| 262 | |||
| 263 | spin_lock_irqsave(&smp_alt, flags); | ||
| 264 | if (smp) { | ||
| 265 | printk(KERN_INFO "SMP alternatives: switching to SMP code\n"); | ||
| 266 | clear_bit(X86_FEATURE_UP, boot_cpu_data.x86_capability); | ||
| 267 | clear_bit(X86_FEATURE_UP, cpu_data[0].x86_capability); | ||
| 268 | alternatives_smp_apply(__smp_alt_instructions, | ||
| 269 | __smp_alt_instructions_end); | ||
| 270 | list_for_each_entry(mod, &smp_alt_modules, next) | ||
| 271 | alternatives_smp_lock(mod->locks, mod->locks_end, | ||
| 272 | mod->text, mod->text_end); | ||
| 273 | } else { | ||
| 274 | printk(KERN_INFO "SMP alternatives: switching to UP code\n"); | ||
| 275 | set_bit(X86_FEATURE_UP, boot_cpu_data.x86_capability); | ||
| 276 | set_bit(X86_FEATURE_UP, cpu_data[0].x86_capability); | ||
| 277 | apply_alternatives(__smp_alt_instructions, | ||
| 278 | __smp_alt_instructions_end); | ||
| 279 | list_for_each_entry(mod, &smp_alt_modules, next) | ||
| 280 | alternatives_smp_unlock(mod->locks, mod->locks_end, | ||
| 281 | mod->text, mod->text_end); | ||
| 282 | } | ||
| 283 | spin_unlock_irqrestore(&smp_alt, flags); | ||
| 284 | } | ||
| 285 | |||
| 286 | void __init alternative_instructions(void) | ||
| 287 | { | ||
| 288 | apply_alternatives(__alt_instructions, __alt_instructions_end); | ||
| 289 | |||
| 290 | /* switch to patch-once-at-boottime-only mode and free the | ||
| 291 | * tables in case we know the number of CPUs will never ever | ||
| 292 | * change */ | ||
| 293 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 294 | if (num_possible_cpus() < 2) | ||
| 295 | smp_alt_once = 1; | ||
| 296 | #else | ||
| 297 | smp_alt_once = 1; | ||
| 298 | #endif | ||
| 299 | |||
| 300 | if (smp_alt_once) { | ||
| 301 | if (1 == num_possible_cpus()) { | ||
| 302 | printk(KERN_INFO "SMP alternatives: switching to UP code\n"); | ||
| 303 | set_bit(X86_FEATURE_UP, boot_cpu_data.x86_capability); | ||
| 304 | set_bit(X86_FEATURE_UP, cpu_data[0].x86_capability); | ||
| 305 | apply_alternatives(__smp_alt_instructions, | ||
| 306 | __smp_alt_instructions_end); | ||
| 307 | alternatives_smp_unlock(__smp_locks, __smp_locks_end, | ||
| 308 | _text, _etext); | ||
| 309 | } | ||
| 310 | free_init_pages("SMP alternatives", | ||
| 311 | (unsigned long)__smp_alt_begin, | ||
| 312 | (unsigned long)__smp_alt_end); | ||
| 313 | } else { | ||
| 314 | alternatives_smp_save(__smp_alt_instructions, | ||
| 315 | __smp_alt_instructions_end); | ||
| 316 | alternatives_smp_module_add(NULL, "core kernel", | ||
| 317 | __smp_locks, __smp_locks_end, | ||
| 318 | _text, _etext); | ||
| 319 | alternatives_smp_switch(0); | ||
| 320 | } | ||
| 321 | } | ||
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 776c90989e06..eb5279d23b7f 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include <asm/i8253.h> | 38 | #include <asm/i8253.h> |
| 39 | 39 | ||
| 40 | #include <mach_apic.h> | 40 | #include <mach_apic.h> |
| 41 | #include <mach_apicdef.h> | ||
| 41 | #include <mach_ipi.h> | 42 | #include <mach_ipi.h> |
| 42 | 43 | ||
| 43 | #include "io_ports.h" | 44 | #include "io_ports.h" |
diff --git a/arch/i386/kernel/cpu/centaur.c b/arch/i386/kernel/cpu/centaur.c index f52669ecb93f..bd75629dd262 100644 --- a/arch/i386/kernel/cpu/centaur.c +++ b/arch/i386/kernel/cpu/centaur.c | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #include <asm/processor.h> | 4 | #include <asm/processor.h> |
| 5 | #include <asm/msr.h> | 5 | #include <asm/msr.h> |
| 6 | #include <asm/e820.h> | 6 | #include <asm/e820.h> |
| 7 | #include <asm/mtrr.h> | ||
| 7 | #include "cpu.h" | 8 | #include "cpu.h" |
| 8 | 9 | ||
| 9 | #ifdef CONFIG_X86_OOSTORE | 10 | #ifdef CONFIG_X86_OOSTORE |
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c index e6bd095ae108..7e3d6b6a4e96 100644 --- a/arch/i386/kernel/cpu/common.c +++ b/arch/i386/kernel/cpu/common.c | |||
| @@ -25,9 +25,10 @@ EXPORT_PER_CPU_SYMBOL(cpu_gdt_descr); | |||
| 25 | DEFINE_PER_CPU(unsigned char, cpu_16bit_stack[CPU_16BIT_STACK_SIZE]); | 25 | DEFINE_PER_CPU(unsigned char, cpu_16bit_stack[CPU_16BIT_STACK_SIZE]); |
| 26 | EXPORT_PER_CPU_SYMBOL(cpu_16bit_stack); | 26 | EXPORT_PER_CPU_SYMBOL(cpu_16bit_stack); |
| 27 | 27 | ||
| 28 | static int cachesize_override __devinitdata = -1; | 28 | static int cachesize_override __cpuinitdata = -1; |
| 29 | static int disable_x86_fxsr __devinitdata = 0; | 29 | static int disable_x86_fxsr __cpuinitdata; |
| 30 | static int disable_x86_serial_nr __devinitdata = 1; | 30 | static int disable_x86_serial_nr __cpuinitdata = 1; |
| 31 | static int disable_x86_sep __cpuinitdata; | ||
| 31 | 32 | ||
| 32 | struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {}; | 33 | struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {}; |
| 33 | 34 | ||
| @@ -59,7 +60,7 @@ static int __init cachesize_setup(char *str) | |||
| 59 | } | 60 | } |
| 60 | __setup("cachesize=", cachesize_setup); | 61 | __setup("cachesize=", cachesize_setup); |
| 61 | 62 | ||
| 62 | int __devinit get_model_name(struct cpuinfo_x86 *c) | 63 | int __cpuinit get_model_name(struct cpuinfo_x86 *c) |
| 63 | { | 64 | { |
| 64 | unsigned int *v; | 65 | unsigned int *v; |
| 65 | char *p, *q; | 66 | char *p, *q; |
| @@ -89,7 +90,7 @@ int __devinit get_model_name(struct cpuinfo_x86 *c) | |||
| 89 | } | 90 | } |
| 90 | 91 | ||
| 91 | 92 | ||
| 92 | void __devinit display_cacheinfo(struct cpuinfo_x86 *c) | 93 | void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c) |
| 93 | { | 94 | { |
| 94 | unsigned int n, dummy, ecx, edx, l2size; | 95 | unsigned int n, dummy, ecx, edx, l2size; |
| 95 | 96 | ||
| @@ -130,7 +131,7 @@ void __devinit display_cacheinfo(struct cpuinfo_x86 *c) | |||
| 130 | /* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used */ | 131 | /* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used */ |
| 131 | 132 | ||
| 132 | /* Look up CPU names by table lookup. */ | 133 | /* Look up CPU names by table lookup. */ |
| 133 | static char __devinit *table_lookup_model(struct cpuinfo_x86 *c) | 134 | static char __cpuinit *table_lookup_model(struct cpuinfo_x86 *c) |
| 134 | { | 135 | { |
| 135 | struct cpu_model_info *info; | 136 | struct cpu_model_info *info; |
| 136 | 137 | ||
| @@ -151,7 +152,7 @@ static char __devinit *table_lookup_model(struct cpuinfo_x86 *c) | |||
| 151 | } | 152 | } |
| 152 | 153 | ||
| 153 | 154 | ||
| 154 | static void __devinit get_cpu_vendor(struct cpuinfo_x86 *c, int early) | 155 | static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c, int early) |
| 155 | { | 156 | { |
| 156 | char *v = c->x86_vendor_id; | 157 | char *v = c->x86_vendor_id; |
| 157 | int i; | 158 | int i; |
| @@ -187,6 +188,14 @@ static int __init x86_fxsr_setup(char * s) | |||
| 187 | __setup("nofxsr", x86_fxsr_setup); | 188 | __setup("nofxsr", x86_fxsr_setup); |
| 188 | 189 | ||
| 189 | 190 | ||
| 191 | static int __init x86_sep_setup(char * s) | ||
| 192 | { | ||
| 193 | disable_x86_sep = 1; | ||
| 194 | return 1; | ||
| 195 | } | ||
| 196 | __setup("nosep", x86_sep_setup); | ||
| 197 | |||
| 198 | |||
| 190 | /* Standard macro to see if a specific flag is changeable */ | 199 | /* Standard macro to see if a specific flag is changeable */ |
| 191 | static inline int flag_is_changeable_p(u32 flag) | 200 | static inline int flag_is_changeable_p(u32 flag) |
| 192 | { | 201 | { |
| @@ -210,7 +219,7 @@ static inline int flag_is_changeable_p(u32 flag) | |||
| 210 | 219 | ||
| 211 | 220 | ||
| 212 | /* Probe for the CPUID instruction */ | 221 | /* Probe for the CPUID instruction */ |
| 213 | static int __devinit have_cpuid_p(void) | 222 | static int __cpuinit have_cpuid_p(void) |
| 214 | { | 223 | { |
| 215 | return flag_is_changeable_p(X86_EFLAGS_ID); | 224 | return flag_is_changeable_p(X86_EFLAGS_ID); |
| 216 | } | 225 | } |
| @@ -254,7 +263,7 @@ static void __init early_cpu_detect(void) | |||
| 254 | } | 263 | } |
| 255 | } | 264 | } |
| 256 | 265 | ||
| 257 | void __devinit generic_identify(struct cpuinfo_x86 * c) | 266 | void __cpuinit generic_identify(struct cpuinfo_x86 * c) |
| 258 | { | 267 | { |
| 259 | u32 tfms, xlvl; | 268 | u32 tfms, xlvl; |
| 260 | int junk; | 269 | int junk; |
| @@ -307,7 +316,7 @@ void __devinit generic_identify(struct cpuinfo_x86 * c) | |||
| 307 | #endif | 316 | #endif |
| 308 | } | 317 | } |
| 309 | 318 | ||
| 310 | static void __devinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) | 319 | static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) |
| 311 | { | 320 | { |
| 312 | if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr ) { | 321 | if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr ) { |
| 313 | /* Disable processor serial number */ | 322 | /* Disable processor serial number */ |
| @@ -335,7 +344,7 @@ __setup("serialnumber", x86_serial_nr_setup); | |||
| 335 | /* | 344 | /* |
| 336 | * This does the hard work of actually picking apart the CPU stuff... | 345 | * This does the hard work of actually picking apart the CPU stuff... |
| 337 | */ | 346 | */ |
| 338 | void __devinit identify_cpu(struct cpuinfo_x86 *c) | 347 | void __cpuinit identify_cpu(struct cpuinfo_x86 *c) |
| 339 | { | 348 | { |
| 340 | int i; | 349 | int i; |
| 341 | 350 | ||
| @@ -405,6 +414,10 @@ void __devinit identify_cpu(struct cpuinfo_x86 *c) | |||
| 405 | clear_bit(X86_FEATURE_XMM, c->x86_capability); | 414 | clear_bit(X86_FEATURE_XMM, c->x86_capability); |
| 406 | } | 415 | } |
| 407 | 416 | ||
| 417 | /* SEP disabled? */ | ||
| 418 | if (disable_x86_sep) | ||
| 419 | clear_bit(X86_FEATURE_SEP, c->x86_capability); | ||
| 420 | |||
| 408 | if (disable_pse) | 421 | if (disable_pse) |
| 409 | clear_bit(X86_FEATURE_PSE, c->x86_capability); | 422 | clear_bit(X86_FEATURE_PSE, c->x86_capability); |
| 410 | 423 | ||
| @@ -417,7 +430,7 @@ void __devinit identify_cpu(struct cpuinfo_x86 *c) | |||
| 417 | else | 430 | else |
| 418 | /* Last resort... */ | 431 | /* Last resort... */ |
| 419 | sprintf(c->x86_model_id, "%02x/%02x", | 432 | sprintf(c->x86_model_id, "%02x/%02x", |
| 420 | c->x86_vendor, c->x86_model); | 433 | c->x86, c->x86_model); |
| 421 | } | 434 | } |
| 422 | 435 | ||
| 423 | /* Now the feature flags better reflect actual CPU features! */ | 436 | /* Now the feature flags better reflect actual CPU features! */ |
| @@ -453,7 +466,7 @@ void __devinit identify_cpu(struct cpuinfo_x86 *c) | |||
| 453 | } | 466 | } |
| 454 | 467 | ||
| 455 | #ifdef CONFIG_X86_HT | 468 | #ifdef CONFIG_X86_HT |
| 456 | void __devinit detect_ht(struct cpuinfo_x86 *c) | 469 | void __cpuinit detect_ht(struct cpuinfo_x86 *c) |
| 457 | { | 470 | { |
| 458 | u32 eax, ebx, ecx, edx; | 471 | u32 eax, ebx, ecx, edx; |
| 459 | int index_msb, core_bits; | 472 | int index_msb, core_bits; |
| @@ -500,7 +513,7 @@ void __devinit detect_ht(struct cpuinfo_x86 *c) | |||
| 500 | } | 513 | } |
| 501 | #endif | 514 | #endif |
| 502 | 515 | ||
| 503 | void __devinit print_cpu_info(struct cpuinfo_x86 *c) | 516 | void __cpuinit print_cpu_info(struct cpuinfo_x86 *c) |
| 504 | { | 517 | { |
| 505 | char *vendor = NULL; | 518 | char *vendor = NULL; |
| 506 | 519 | ||
| @@ -523,7 +536,7 @@ void __devinit print_cpu_info(struct cpuinfo_x86 *c) | |||
| 523 | printk("\n"); | 536 | printk("\n"); |
| 524 | } | 537 | } |
| 525 | 538 | ||
| 526 | cpumask_t cpu_initialized __devinitdata = CPU_MASK_NONE; | 539 | cpumask_t cpu_initialized __cpuinitdata = CPU_MASK_NONE; |
| 527 | 540 | ||
| 528 | /* This is hacky. :) | 541 | /* This is hacky. :) |
| 529 | * We're emulating future behavior. | 542 | * We're emulating future behavior. |
| @@ -570,7 +583,7 @@ void __init early_cpu_init(void) | |||
| 570 | * and IDT. We reload them nevertheless, this function acts as a | 583 | * and IDT. We reload them nevertheless, this function acts as a |
| 571 | * 'CPU state barrier', nothing should get across. | 584 | * 'CPU state barrier', nothing should get across. |
| 572 | */ | 585 | */ |
| 573 | void __devinit cpu_init(void) | 586 | void __cpuinit cpu_init(void) |
| 574 | { | 587 | { |
| 575 | int cpu = smp_processor_id(); | 588 | int cpu = smp_processor_id(); |
| 576 | struct tss_struct * t = &per_cpu(init_tss, cpu); | 589 | struct tss_struct * t = &per_cpu(init_tss, cpu); |
| @@ -670,7 +683,7 @@ void __devinit cpu_init(void) | |||
| 670 | } | 683 | } |
| 671 | 684 | ||
| 672 | #ifdef CONFIG_HOTPLUG_CPU | 685 | #ifdef CONFIG_HOTPLUG_CPU |
| 673 | void __devinit cpu_uninit(void) | 686 | void __cpuinit cpu_uninit(void) |
| 674 | { | 687 | { |
| 675 | int cpu = raw_smp_processor_id(); | 688 | int cpu = raw_smp_processor_id(); |
| 676 | cpu_clear(cpu, cpu_initialized); | 689 | cpu_clear(cpu, cpu_initialized); |
diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c index e11a09207ec8..3d5110b65cc3 100644 --- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c | |||
| @@ -1145,9 +1145,7 @@ static int __cpuinit powernowk8_init(void) | |||
| 1145 | { | 1145 | { |
| 1146 | unsigned int i, supported_cpus = 0; | 1146 | unsigned int i, supported_cpus = 0; |
| 1147 | 1147 | ||
| 1148 | for (i=0; i<NR_CPUS; i++) { | 1148 | for_each_cpu(i) { |
| 1149 | if (!cpu_online(i)) | ||
| 1150 | continue; | ||
| 1151 | if (check_supported_cpu(i)) | 1149 | if (check_supported_cpu(i)) |
| 1152 | supported_cpus++; | 1150 | supported_cpus++; |
| 1153 | } | 1151 | } |
diff --git a/arch/i386/kernel/cpu/intel.c b/arch/i386/kernel/cpu/intel.c index 8c0120186b9f..5386b29bb5a5 100644 --- a/arch/i386/kernel/cpu/intel.c +++ b/arch/i386/kernel/cpu/intel.c | |||
| @@ -29,7 +29,7 @@ extern int trap_init_f00f_bug(void); | |||
| 29 | struct movsl_mask movsl_mask __read_mostly; | 29 | struct movsl_mask movsl_mask __read_mostly; |
| 30 | #endif | 30 | #endif |
| 31 | 31 | ||
| 32 | void __devinit early_intel_workaround(struct cpuinfo_x86 *c) | 32 | void __cpuinit early_intel_workaround(struct cpuinfo_x86 *c) |
| 33 | { | 33 | { |
| 34 | if (c->x86_vendor != X86_VENDOR_INTEL) | 34 | if (c->x86_vendor != X86_VENDOR_INTEL) |
| 35 | return; | 35 | return; |
| @@ -44,7 +44,7 @@ void __devinit early_intel_workaround(struct cpuinfo_x86 *c) | |||
| 44 | * This is called before we do cpu ident work | 44 | * This is called before we do cpu ident work |
| 45 | */ | 45 | */ |
| 46 | 46 | ||
| 47 | int __devinit ppro_with_ram_bug(void) | 47 | int __cpuinit ppro_with_ram_bug(void) |
| 48 | { | 48 | { |
| 49 | /* Uses data from early_cpu_detect now */ | 49 | /* Uses data from early_cpu_detect now */ |
| 50 | if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL && | 50 | if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL && |
| @@ -62,7 +62,7 @@ int __devinit ppro_with_ram_bug(void) | |||
| 62 | * P4 Xeon errata 037 workaround. | 62 | * P4 Xeon errata 037 workaround. |
| 63 | * Hardware prefetcher may cause stale data to be loaded into the cache. | 63 | * Hardware prefetcher may cause stale data to be loaded into the cache. |
| 64 | */ | 64 | */ |
| 65 | static void __devinit Intel_errata_workarounds(struct cpuinfo_x86 *c) | 65 | static void __cpuinit Intel_errata_workarounds(struct cpuinfo_x86 *c) |
| 66 | { | 66 | { |
| 67 | unsigned long lo, hi; | 67 | unsigned long lo, hi; |
| 68 | 68 | ||
| @@ -81,7 +81,7 @@ static void __devinit Intel_errata_workarounds(struct cpuinfo_x86 *c) | |||
| 81 | /* | 81 | /* |
| 82 | * find out the number of processor cores on the die | 82 | * find out the number of processor cores on the die |
| 83 | */ | 83 | */ |
| 84 | static int __devinit num_cpu_cores(struct cpuinfo_x86 *c) | 84 | static int __cpuinit num_cpu_cores(struct cpuinfo_x86 *c) |
| 85 | { | 85 | { |
| 86 | unsigned int eax, ebx, ecx, edx; | 86 | unsigned int eax, ebx, ecx, edx; |
| 87 | 87 | ||
| @@ -96,7 +96,7 @@ static int __devinit num_cpu_cores(struct cpuinfo_x86 *c) | |||
| 96 | return 1; | 96 | return 1; |
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | static void __devinit init_intel(struct cpuinfo_x86 *c) | 99 | static void __cpuinit init_intel(struct cpuinfo_x86 *c) |
| 100 | { | 100 | { |
| 101 | unsigned int l2 = 0; | 101 | unsigned int l2 = 0; |
| 102 | char *p = NULL; | 102 | char *p = NULL; |
| @@ -205,7 +205,7 @@ static unsigned int intel_size_cache(struct cpuinfo_x86 * c, unsigned int size) | |||
| 205 | return size; | 205 | return size; |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | static struct cpu_dev intel_cpu_dev __devinitdata = { | 208 | static struct cpu_dev intel_cpu_dev __cpuinitdata = { |
| 209 | .c_vendor = "Intel", | 209 | .c_vendor = "Intel", |
| 210 | .c_ident = { "GenuineIntel" }, | 210 | .c_ident = { "GenuineIntel" }, |
| 211 | .c_models = { | 211 | .c_models = { |
diff --git a/arch/i386/kernel/cpu/intel_cacheinfo.c b/arch/i386/kernel/cpu/intel_cacheinfo.c index ffe58cee0c48..ce61921369e5 100644 --- a/arch/i386/kernel/cpu/intel_cacheinfo.c +++ b/arch/i386/kernel/cpu/intel_cacheinfo.c | |||
| @@ -174,7 +174,7 @@ unsigned int __cpuinit init_intel_cacheinfo(struct cpuinfo_x86 *c) | |||
| 174 | unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */ | 174 | unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */ |
| 175 | unsigned int new_l2 = 0, new_l3 = 0, i; /* Cache sizes from cpuid(4) */ | 175 | unsigned int new_l2 = 0, new_l3 = 0, i; /* Cache sizes from cpuid(4) */ |
| 176 | 176 | ||
| 177 | if (c->cpuid_level > 4) { | 177 | if (c->cpuid_level > 3) { |
| 178 | static int is_initialized; | 178 | static int is_initialized; |
| 179 | 179 | ||
| 180 | if (is_initialized == 0) { | 180 | if (is_initialized == 0) { |
| @@ -330,7 +330,7 @@ static void __cpuinit cache_shared_cpu_map_setup(unsigned int cpu, int index) | |||
| 330 | } | 330 | } |
| 331 | } | 331 | } |
| 332 | } | 332 | } |
| 333 | static void __devinit cache_remove_shared_cpu_map(unsigned int cpu, int index) | 333 | static void __cpuinit cache_remove_shared_cpu_map(unsigned int cpu, int index) |
| 334 | { | 334 | { |
| 335 | struct _cpuid4_info *this_leaf, *sibling_leaf; | 335 | struct _cpuid4_info *this_leaf, *sibling_leaf; |
| 336 | int sibling; | 336 | int sibling; |
diff --git a/arch/i386/kernel/cpu/proc.c b/arch/i386/kernel/cpu/proc.c index 89a85af33d28..5cfbd8011698 100644 --- a/arch/i386/kernel/cpu/proc.c +++ b/arch/i386/kernel/cpu/proc.c | |||
| @@ -40,7 +40,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 40 | /* Other (Linux-defined) */ | 40 | /* Other (Linux-defined) */ |
| 41 | "cxmmx", "k6_mtrr", "cyrix_arr", "centaur_mcr", | 41 | "cxmmx", "k6_mtrr", "cyrix_arr", "centaur_mcr", |
| 42 | NULL, NULL, NULL, NULL, | 42 | NULL, NULL, NULL, NULL, |
| 43 | "constant_tsc", NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 43 | "constant_tsc", "up", NULL, NULL, NULL, NULL, NULL, NULL, |
| 44 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 44 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
| 45 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 45 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
| 46 | 46 | ||
diff --git a/arch/i386/kernel/crash.c b/arch/i386/kernel/crash.c index d49dbe8dc96b..e3c5fca0aa8a 100644 --- a/arch/i386/kernel/crash.c +++ b/arch/i386/kernel/crash.c | |||
| @@ -105,7 +105,7 @@ static int crash_nmi_callback(struct pt_regs *regs, int cpu) | |||
| 105 | return 1; | 105 | return 1; |
| 106 | local_irq_disable(); | 106 | local_irq_disable(); |
| 107 | 107 | ||
| 108 | if (!user_mode(regs)) { | 108 | if (!user_mode_vm(regs)) { |
| 109 | crash_fixup_ss_esp(&fixed_regs, regs); | 109 | crash_fixup_ss_esp(&fixed_regs, regs); |
| 110 | regs = &fixed_regs; | 110 | regs = &fixed_regs; |
| 111 | } | 111 | } |
diff --git a/arch/i386/kernel/efi.c b/arch/i386/kernel/efi.c index c9cad7ba0d2d..7ec6cfa01fb3 100644 --- a/arch/i386/kernel/efi.c +++ b/arch/i386/kernel/efi.c | |||
| @@ -115,7 +115,7 @@ static void efi_call_phys_epilog(void) | |||
| 115 | unsigned long cr4; | 115 | unsigned long cr4; |
| 116 | struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, 0); | 116 | struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, 0); |
| 117 | 117 | ||
| 118 | cpu_gdt_descr->address = __va(cpu_gdt_descr->address); | 118 | cpu_gdt_descr->address = (unsigned long)__va(cpu_gdt_descr->address); |
| 119 | load_gdt(cpu_gdt_descr); | 119 | load_gdt(cpu_gdt_descr); |
| 120 | 120 | ||
| 121 | cr4 = read_cr4(); | 121 | cr4 = read_cr4(); |
| @@ -543,7 +543,7 @@ efi_initialize_iomem_resources(struct resource *code_resource, | |||
| 543 | if ((md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT)) > | 543 | if ((md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT)) > |
| 544 | 0x100000000ULL) | 544 | 0x100000000ULL) |
| 545 | continue; | 545 | continue; |
| 546 | res = alloc_bootmem_low(sizeof(struct resource)); | 546 | res = kzalloc(sizeof(struct resource), GFP_ATOMIC); |
| 547 | switch (md->type) { | 547 | switch (md->type) { |
| 548 | case EFI_RESERVED_TYPE: | 548 | case EFI_RESERVED_TYPE: |
| 549 | res->name = "Reserved Memory"; | 549 | res->name = "Reserved Memory"; |
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S index 4d704724b2f5..cfc683f153b9 100644 --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S | |||
| @@ -226,6 +226,10 @@ ENTRY(system_call) | |||
| 226 | pushl %eax # save orig_eax | 226 | pushl %eax # save orig_eax |
| 227 | SAVE_ALL | 227 | SAVE_ALL |
| 228 | GET_THREAD_INFO(%ebp) | 228 | GET_THREAD_INFO(%ebp) |
| 229 | testl $TF_MASK,EFLAGS(%esp) | ||
| 230 | jz no_singlestep | ||
| 231 | orl $_TIF_SINGLESTEP,TI_flags(%ebp) | ||
| 232 | no_singlestep: | ||
| 229 | # system call tracing in operation / emulation | 233 | # system call tracing in operation / emulation |
| 230 | /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ | 234 | /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ |
| 231 | testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) | 235 | testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) |
diff --git a/arch/i386/kernel/head.S b/arch/i386/kernel/head.S index e0b7c632efbc..3debc2e26542 100644 --- a/arch/i386/kernel/head.S +++ b/arch/i386/kernel/head.S | |||
| @@ -450,7 +450,6 @@ int_msg: | |||
| 450 | 450 | ||
| 451 | .globl boot_gdt_descr | 451 | .globl boot_gdt_descr |
| 452 | .globl idt_descr | 452 | .globl idt_descr |
| 453 | .globl cpu_gdt_descr | ||
| 454 | 453 | ||
| 455 | ALIGN | 454 | ALIGN |
| 456 | # early boot GDT descriptor (must use 1:1 address mapping) | 455 | # early boot GDT descriptor (must use 1:1 address mapping) |
| @@ -470,8 +469,6 @@ cpu_gdt_descr: | |||
| 470 | .word GDT_ENTRIES*8-1 | 469 | .word GDT_ENTRIES*8-1 |
| 471 | .long cpu_gdt_table | 470 | .long cpu_gdt_table |
| 472 | 471 | ||
| 473 | .fill NR_CPUS-1,8,0 # space for the other GDT descriptors | ||
| 474 | |||
| 475 | /* | 472 | /* |
| 476 | * The boot_gdt_table must mirror the equivalent in setup.S and is | 473 | * The boot_gdt_table must mirror the equivalent in setup.S and is |
| 477 | * used only for booting. | 474 | * used only for booting. |
| @@ -485,7 +482,7 @@ ENTRY(boot_gdt_table) | |||
| 485 | /* | 482 | /* |
| 486 | * The Global Descriptor Table contains 28 quadwords, per-CPU. | 483 | * The Global Descriptor Table contains 28 quadwords, per-CPU. |
| 487 | */ | 484 | */ |
| 488 | .align PAGE_SIZE_asm | 485 | .align L1_CACHE_BYTES |
| 489 | ENTRY(cpu_gdt_table) | 486 | ENTRY(cpu_gdt_table) |
| 490 | .quad 0x0000000000000000 /* NULL descriptor */ | 487 | .quad 0x0000000000000000 /* NULL descriptor */ |
| 491 | .quad 0x0000000000000000 /* 0x0b reserved */ | 488 | .quad 0x0000000000000000 /* 0x0b reserved */ |
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index 39d9a5fa907e..311b4e7266f1 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
| @@ -351,8 +351,8 @@ static inline void rotate_irqs_among_cpus(unsigned long useful_load_threshold) | |||
| 351 | { | 351 | { |
| 352 | int i, j; | 352 | int i, j; |
| 353 | Dprintk("Rotating IRQs among CPUs.\n"); | 353 | Dprintk("Rotating IRQs among CPUs.\n"); |
| 354 | for (i = 0; i < NR_CPUS; i++) { | 354 | for_each_online_cpu(i) { |
| 355 | for (j = 0; cpu_online(i) && (j < NR_IRQS); j++) { | 355 | for (j = 0; j < NR_IRQS; j++) { |
| 356 | if (!irq_desc[j].action) | 356 | if (!irq_desc[j].action) |
| 357 | continue; | 357 | continue; |
| 358 | /* Is it a significant load ? */ | 358 | /* Is it a significant load ? */ |
| @@ -381,7 +381,7 @@ static void do_irq_balance(void) | |||
| 381 | unsigned long imbalance = 0; | 381 | unsigned long imbalance = 0; |
| 382 | cpumask_t allowed_mask, target_cpu_mask, tmp; | 382 | cpumask_t allowed_mask, target_cpu_mask, tmp; |
| 383 | 383 | ||
| 384 | for (i = 0; i < NR_CPUS; i++) { | 384 | for_each_cpu(i) { |
| 385 | int package_index; | 385 | int package_index; |
| 386 | CPU_IRQ(i) = 0; | 386 | CPU_IRQ(i) = 0; |
| 387 | if (!cpu_online(i)) | 387 | if (!cpu_online(i)) |
| @@ -422,9 +422,7 @@ static void do_irq_balance(void) | |||
| 422 | } | 422 | } |
| 423 | } | 423 | } |
| 424 | /* Find the least loaded processor package */ | 424 | /* Find the least loaded processor package */ |
| 425 | for (i = 0; i < NR_CPUS; i++) { | 425 | for_each_online_cpu(i) { |
| 426 | if (!cpu_online(i)) | ||
| 427 | continue; | ||
| 428 | if (i != CPU_TO_PACKAGEINDEX(i)) | 426 | if (i != CPU_TO_PACKAGEINDEX(i)) |
| 429 | continue; | 427 | continue; |
| 430 | if (min_cpu_irq > CPU_IRQ(i)) { | 428 | if (min_cpu_irq > CPU_IRQ(i)) { |
| @@ -441,9 +439,7 @@ tryanothercpu: | |||
| 441 | */ | 439 | */ |
| 442 | tmp_cpu_irq = 0; | 440 | tmp_cpu_irq = 0; |
| 443 | tmp_loaded = -1; | 441 | tmp_loaded = -1; |
| 444 | for (i = 0; i < NR_CPUS; i++) { | 442 | for_each_online_cpu(i) { |
| 445 | if (!cpu_online(i)) | ||
| 446 | continue; | ||
| 447 | if (i != CPU_TO_PACKAGEINDEX(i)) | 443 | if (i != CPU_TO_PACKAGEINDEX(i)) |
| 448 | continue; | 444 | continue; |
| 449 | if (max_cpu_irq <= CPU_IRQ(i)) | 445 | if (max_cpu_irq <= CPU_IRQ(i)) |
| @@ -619,9 +615,7 @@ static int __init balanced_irq_init(void) | |||
| 619 | if (smp_num_siblings > 1 && !cpus_empty(tmp)) | 615 | if (smp_num_siblings > 1 && !cpus_empty(tmp)) |
| 620 | physical_balance = 1; | 616 | physical_balance = 1; |
| 621 | 617 | ||
| 622 | for (i = 0; i < NR_CPUS; i++) { | 618 | for_each_online_cpu(i) { |
| 623 | if (!cpu_online(i)) | ||
| 624 | continue; | ||
| 625 | irq_cpu_data[i].irq_delta = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); | 619 | irq_cpu_data[i].irq_delta = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); |
| 626 | irq_cpu_data[i].last_irq = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); | 620 | irq_cpu_data[i].last_irq = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); |
| 627 | if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) { | 621 | if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) { |
| @@ -638,9 +632,11 @@ static int __init balanced_irq_init(void) | |||
| 638 | else | 632 | else |
| 639 | printk(KERN_ERR "balanced_irq_init: failed to spawn balanced_irq"); | 633 | printk(KERN_ERR "balanced_irq_init: failed to spawn balanced_irq"); |
| 640 | failed: | 634 | failed: |
| 641 | for (i = 0; i < NR_CPUS; i++) { | 635 | for_each_cpu(i) { |
| 642 | kfree(irq_cpu_data[i].irq_delta); | 636 | kfree(irq_cpu_data[i].irq_delta); |
| 637 | irq_cpu_data[i].irq_delta = NULL; | ||
| 643 | kfree(irq_cpu_data[i].last_irq); | 638 | kfree(irq_cpu_data[i].last_irq); |
| 639 | irq_cpu_data[i].last_irq = NULL; | ||
| 644 | } | 640 | } |
| 645 | return 0; | 641 | return 0; |
| 646 | } | 642 | } |
| @@ -1761,7 +1757,8 @@ static void __init setup_ioapic_ids_from_mpc(void) | |||
| 1761 | * Don't check I/O APIC IDs for xAPIC systems. They have | 1757 | * Don't check I/O APIC IDs for xAPIC systems. They have |
| 1762 | * no meaning without the serial APIC bus. | 1758 | * no meaning without the serial APIC bus. |
| 1763 | */ | 1759 | */ |
| 1764 | if (!(boot_cpu_data.x86_vendor == X86_VENDOR_INTEL && boot_cpu_data.x86 < 15)) | 1760 | if (!(boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) |
| 1761 | || APIC_XAPIC(apic_version[boot_cpu_physical_apicid])) | ||
| 1765 | return; | 1762 | return; |
| 1766 | /* | 1763 | /* |
| 1767 | * This is broken; anything with a real cpu count has to | 1764 | * This is broken; anything with a real cpu count has to |
diff --git a/arch/i386/kernel/kprobes.c b/arch/i386/kernel/kprobes.c index 694a13997637..7a59050242a7 100644 --- a/arch/i386/kernel/kprobes.c +++ b/arch/i386/kernel/kprobes.c | |||
| @@ -84,9 +84,9 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p) | |||
| 84 | 84 | ||
| 85 | void __kprobes arch_remove_kprobe(struct kprobe *p) | 85 | void __kprobes arch_remove_kprobe(struct kprobe *p) |
| 86 | { | 86 | { |
| 87 | down(&kprobe_mutex); | 87 | mutex_lock(&kprobe_mutex); |
| 88 | free_insn_slot(p->ainsn.insn); | 88 | free_insn_slot(p->ainsn.insn); |
| 89 | up(&kprobe_mutex); | 89 | mutex_unlock(&kprobe_mutex); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | static inline void save_previous_kprobe(struct kprobe_ctlblk *kcb) | 92 | static inline void save_previous_kprobe(struct kprobe_ctlblk *kcb) |
diff --git a/arch/i386/kernel/module.c b/arch/i386/kernel/module.c index 5149c8a621f0..470cf97e7cd3 100644 --- a/arch/i386/kernel/module.c +++ b/arch/i386/kernel/module.c | |||
| @@ -104,26 +104,38 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
| 104 | return -ENOEXEC; | 104 | return -ENOEXEC; |
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | extern void apply_alternatives(void *start, void *end); | ||
| 108 | |||
| 109 | int module_finalize(const Elf_Ehdr *hdr, | 107 | int module_finalize(const Elf_Ehdr *hdr, |
| 110 | const Elf_Shdr *sechdrs, | 108 | const Elf_Shdr *sechdrs, |
| 111 | struct module *me) | 109 | struct module *me) |
| 112 | { | 110 | { |
| 113 | const Elf_Shdr *s; | 111 | const Elf_Shdr *s, *text = NULL, *alt = NULL, *locks = NULL; |
| 114 | char *secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset; | 112 | char *secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset; |
| 115 | 113 | ||
| 116 | /* look for .altinstructions to patch */ | ||
| 117 | for (s = sechdrs; s < sechdrs + hdr->e_shnum; s++) { | 114 | for (s = sechdrs; s < sechdrs + hdr->e_shnum; s++) { |
| 118 | void *seg; | 115 | if (!strcmp(".text", secstrings + s->sh_name)) |
| 119 | if (strcmp(".altinstructions", secstrings + s->sh_name)) | 116 | text = s; |
| 120 | continue; | 117 | if (!strcmp(".altinstructions", secstrings + s->sh_name)) |
| 121 | seg = (void *)s->sh_addr; | 118 | alt = s; |
| 122 | apply_alternatives(seg, seg + s->sh_size); | 119 | if (!strcmp(".smp_locks", secstrings + s->sh_name)) |
| 123 | } | 120 | locks= s; |
| 121 | } | ||
| 122 | |||
| 123 | if (alt) { | ||
| 124 | /* patch .altinstructions */ | ||
| 125 | void *aseg = (void *)alt->sh_addr; | ||
| 126 | apply_alternatives(aseg, aseg + alt->sh_size); | ||
| 127 | } | ||
| 128 | if (locks && text) { | ||
| 129 | void *lseg = (void *)locks->sh_addr; | ||
| 130 | void *tseg = (void *)text->sh_addr; | ||
| 131 | alternatives_smp_module_add(me, me->name, | ||
| 132 | lseg, lseg + locks->sh_size, | ||
| 133 | tseg, tseg + text->sh_size); | ||
| 134 | } | ||
| 124 | return 0; | 135 | return 0; |
| 125 | } | 136 | } |
| 126 | 137 | ||
| 127 | void module_arch_cleanup(struct module *mod) | 138 | void module_arch_cleanup(struct module *mod) |
| 128 | { | 139 | { |
| 140 | alternatives_smp_module_del(mod); | ||
| 129 | } | 141 | } |
diff --git a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c index e6e2f43db85e..8d8aa9d1796d 100644 --- a/arch/i386/kernel/mpparse.c +++ b/arch/i386/kernel/mpparse.c | |||
| @@ -828,6 +828,8 @@ void __init find_smp_config (void) | |||
| 828 | smp_scan_config(address, 0x400); | 828 | smp_scan_config(address, 0x400); |
| 829 | } | 829 | } |
| 830 | 830 | ||
| 831 | int es7000_plat; | ||
| 832 | |||
| 831 | /* -------------------------------------------------------------------------- | 833 | /* -------------------------------------------------------------------------- |
| 832 | ACPI-based MP Configuration | 834 | ACPI-based MP Configuration |
| 833 | -------------------------------------------------------------------------- */ | 835 | -------------------------------------------------------------------------- */ |
| @@ -935,7 +937,8 @@ void __init mp_register_ioapic ( | |||
| 935 | mp_ioapics[idx].mpc_apicaddr = address; | 937 | mp_ioapics[idx].mpc_apicaddr = address; |
| 936 | 938 | ||
| 937 | set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address); | 939 | set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address); |
| 938 | if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 < 15)) | 940 | if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) |
| 941 | && !APIC_XAPIC(apic_version[boot_cpu_physical_apicid])) | ||
| 939 | tmpid = io_apic_get_unique_id(idx, id); | 942 | tmpid = io_apic_get_unique_id(idx, id); |
| 940 | else | 943 | else |
| 941 | tmpid = id; | 944 | tmpid = id; |
| @@ -1011,8 +1014,6 @@ void __init mp_override_legacy_irq ( | |||
| 1011 | return; | 1014 | return; |
| 1012 | } | 1015 | } |
| 1013 | 1016 | ||
| 1014 | int es7000_plat; | ||
| 1015 | |||
| 1016 | void __init mp_config_acpi_legacy_irqs (void) | 1017 | void __init mp_config_acpi_legacy_irqs (void) |
| 1017 | { | 1018 | { |
| 1018 | struct mpc_config_intsrc intsrc; | 1019 | struct mpc_config_intsrc intsrc; |
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c index be87c5e2ee95..9074818b9473 100644 --- a/arch/i386/kernel/nmi.c +++ b/arch/i386/kernel/nmi.c | |||
| @@ -143,7 +143,7 @@ static int __init check_nmi_watchdog(void) | |||
| 143 | local_irq_enable(); | 143 | local_irq_enable(); |
| 144 | mdelay((10*1000)/nmi_hz); // wait 10 ticks | 144 | mdelay((10*1000)/nmi_hz); // wait 10 ticks |
| 145 | 145 | ||
| 146 | for (cpu = 0; cpu < NR_CPUS; cpu++) { | 146 | for_each_cpu(cpu) { |
| 147 | #ifdef CONFIG_SMP | 147 | #ifdef CONFIG_SMP |
| 148 | /* Check cpu_callin_map here because that is set | 148 | /* Check cpu_callin_map here because that is set |
| 149 | after the timer is started. */ | 149 | after the timer is started. */ |
| @@ -510,7 +510,7 @@ void touch_nmi_watchdog (void) | |||
| 510 | * Just reset the alert counters, (other CPUs might be | 510 | * Just reset the alert counters, (other CPUs might be |
| 511 | * spinning on locks we hold): | 511 | * spinning on locks we hold): |
| 512 | */ | 512 | */ |
| 513 | for (i = 0; i < NR_CPUS; i++) | 513 | for_each_cpu(i) |
| 514 | alert_counter[i] = 0; | 514 | alert_counter[i] = 0; |
| 515 | 515 | ||
| 516 | /* | 516 | /* |
| @@ -543,7 +543,7 @@ void nmi_watchdog_tick (struct pt_regs * regs) | |||
| 543 | /* | 543 | /* |
| 544 | * die_nmi will return ONLY if NOTIFY_STOP happens.. | 544 | * die_nmi will return ONLY if NOTIFY_STOP happens.. |
| 545 | */ | 545 | */ |
| 546 | die_nmi(regs, "NMI Watchdog detected LOCKUP"); | 546 | die_nmi(regs, "BUG: NMI Watchdog detected LOCKUP"); |
| 547 | } else { | 547 | } else { |
| 548 | last_irq_sums[cpu] = sum; | 548 | last_irq_sums[cpu] = sum; |
| 549 | alert_counter[cpu] = 0; | 549 | alert_counter[cpu] = 0; |
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 0480454ebffa..299e61674084 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
| @@ -295,7 +295,7 @@ void show_regs(struct pt_regs * regs) | |||
| 295 | printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id()); | 295 | printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id()); |
| 296 | print_symbol("EIP is at %s\n", regs->eip); | 296 | print_symbol("EIP is at %s\n", regs->eip); |
| 297 | 297 | ||
| 298 | if (user_mode(regs)) | 298 | if (user_mode_vm(regs)) |
| 299 | printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp); | 299 | printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp); |
| 300 | printk(" EFLAGS: %08lx %s (%s %.*s)\n", | 300 | printk(" EFLAGS: %08lx %s (%s %.*s)\n", |
| 301 | regs->eflags, print_tainted(), system_utsname.release, | 301 | regs->eflags, print_tainted(), system_utsname.release, |
diff --git a/arch/i386/kernel/ptrace.c b/arch/i386/kernel/ptrace.c index 5c1fb6aada5b..506462ef36a0 100644 --- a/arch/i386/kernel/ptrace.c +++ b/arch/i386/kernel/ptrace.c | |||
| @@ -34,10 +34,10 @@ | |||
| 34 | 34 | ||
| 35 | /* | 35 | /* |
| 36 | * Determines which flags the user has access to [1 = access, 0 = no access]. | 36 | * Determines which flags the user has access to [1 = access, 0 = no access]. |
| 37 | * Prohibits changing ID(21), VIP(20), VIF(19), VM(17), IOPL(12-13), IF(9). | 37 | * Prohibits changing ID(21), VIP(20), VIF(19), VM(17), NT(14), IOPL(12-13), IF(9). |
| 38 | * Also masks reserved bits (31-22, 15, 5, 3, 1). | 38 | * Also masks reserved bits (31-22, 15, 5, 3, 1). |
| 39 | */ | 39 | */ |
| 40 | #define FLAG_MASK 0x00054dd5 | 40 | #define FLAG_MASK 0x00050dd5 |
| 41 | 41 | ||
| 42 | /* set's the trap flag. */ | 42 | /* set's the trap flag. */ |
| 43 | #define TRAP_FLAG 0x100 | 43 | #define TRAP_FLAG 0x100 |
diff --git a/arch/i386/kernel/semaphore.c b/arch/i386/kernel/semaphore.c index 7455ab643943..967dc74df9ee 100644 --- a/arch/i386/kernel/semaphore.c +++ b/arch/i386/kernel/semaphore.c | |||
| @@ -110,11 +110,11 @@ asm( | |||
| 110 | ".align 4\n" | 110 | ".align 4\n" |
| 111 | ".globl __write_lock_failed\n" | 111 | ".globl __write_lock_failed\n" |
| 112 | "__write_lock_failed:\n\t" | 112 | "__write_lock_failed:\n\t" |
| 113 | LOCK "addl $" RW_LOCK_BIAS_STR ",(%eax)\n" | 113 | LOCK_PREFIX "addl $" RW_LOCK_BIAS_STR ",(%eax)\n" |
| 114 | "1: rep; nop\n\t" | 114 | "1: rep; nop\n\t" |
| 115 | "cmpl $" RW_LOCK_BIAS_STR ",(%eax)\n\t" | 115 | "cmpl $" RW_LOCK_BIAS_STR ",(%eax)\n\t" |
| 116 | "jne 1b\n\t" | 116 | "jne 1b\n\t" |
| 117 | LOCK "subl $" RW_LOCK_BIAS_STR ",(%eax)\n\t" | 117 | LOCK_PREFIX "subl $" RW_LOCK_BIAS_STR ",(%eax)\n\t" |
| 118 | "jnz __write_lock_failed\n\t" | 118 | "jnz __write_lock_failed\n\t" |
| 119 | "ret" | 119 | "ret" |
| 120 | ); | 120 | ); |
| @@ -124,11 +124,11 @@ asm( | |||
| 124 | ".align 4\n" | 124 | ".align 4\n" |
| 125 | ".globl __read_lock_failed\n" | 125 | ".globl __read_lock_failed\n" |
| 126 | "__read_lock_failed:\n\t" | 126 | "__read_lock_failed:\n\t" |
| 127 | LOCK "incl (%eax)\n" | 127 | LOCK_PREFIX "incl (%eax)\n" |
| 128 | "1: rep; nop\n\t" | 128 | "1: rep; nop\n\t" |
| 129 | "cmpl $1,(%eax)\n\t" | 129 | "cmpl $1,(%eax)\n\t" |
| 130 | "js 1b\n\t" | 130 | "js 1b\n\t" |
| 131 | LOCK "decl (%eax)\n\t" | 131 | LOCK_PREFIX "decl (%eax)\n\t" |
| 132 | "js __read_lock_failed\n\t" | 132 | "js __read_lock_failed\n\t" |
| 133 | "ret" | 133 | "ret" |
| 134 | ); | 134 | ); |
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index ab62a9f4701e..d313a11acafa 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
| @@ -1288,7 +1288,7 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat | |||
| 1288 | struct resource *res; | 1288 | struct resource *res; |
| 1289 | if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL) | 1289 | if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL) |
| 1290 | continue; | 1290 | continue; |
| 1291 | res = alloc_bootmem_low(sizeof(struct resource)); | 1291 | res = kzalloc(sizeof(struct resource), GFP_ATOMIC); |
| 1292 | switch (e820.map[i].type) { | 1292 | switch (e820.map[i].type) { |
| 1293 | case E820_RAM: res->name = "System RAM"; break; | 1293 | case E820_RAM: res->name = "System RAM"; break; |
| 1294 | case E820_ACPI: res->name = "ACPI Tables"; break; | 1294 | case E820_ACPI: res->name = "ACPI Tables"; break; |
| @@ -1316,13 +1316,15 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat | |||
| 1316 | 1316 | ||
| 1317 | /* | 1317 | /* |
| 1318 | * Request address space for all standard resources | 1318 | * Request address space for all standard resources |
| 1319 | * | ||
| 1320 | * This is called just before pcibios_assign_resources(), which is also | ||
| 1321 | * an fs_initcall, but is linked in later (in arch/i386/pci/i386.c). | ||
| 1319 | */ | 1322 | */ |
| 1320 | static void __init register_memory(void) | 1323 | static int __init request_standard_resources(void) |
| 1321 | { | 1324 | { |
| 1322 | unsigned long gapstart, gapsize, round; | 1325 | int i; |
| 1323 | unsigned long long last; | ||
| 1324 | int i; | ||
| 1325 | 1326 | ||
| 1327 | printk("Setting up standard PCI resources\n"); | ||
| 1326 | if (efi_enabled) | 1328 | if (efi_enabled) |
| 1327 | efi_initialize_iomem_resources(&code_resource, &data_resource); | 1329 | efi_initialize_iomem_resources(&code_resource, &data_resource); |
| 1328 | else | 1330 | else |
| @@ -1334,6 +1336,16 @@ static void __init register_memory(void) | |||
| 1334 | /* request I/O space for devices used on all i[345]86 PCs */ | 1336 | /* request I/O space for devices used on all i[345]86 PCs */ |
| 1335 | for (i = 0; i < STANDARD_IO_RESOURCES; i++) | 1337 | for (i = 0; i < STANDARD_IO_RESOURCES; i++) |
| 1336 | request_resource(&ioport_resource, &standard_io_resources[i]); | 1338 | request_resource(&ioport_resource, &standard_io_resources[i]); |
| 1339 | return 0; | ||
| 1340 | } | ||
| 1341 | |||
| 1342 | fs_initcall(request_standard_resources); | ||
| 1343 | |||
| 1344 | static void __init register_memory(void) | ||
| 1345 | { | ||
| 1346 | unsigned long gapstart, gapsize, round; | ||
| 1347 | unsigned long long last; | ||
| 1348 | int i; | ||
| 1337 | 1349 | ||
| 1338 | /* | 1350 | /* |
| 1339 | * Search for the bigest gap in the low 32 bits of the e820 | 1351 | * Search for the bigest gap in the low 32 bits of the e820 |
| @@ -1377,101 +1389,6 @@ static void __init register_memory(void) | |||
| 1377 | pci_mem_start, gapstart, gapsize); | 1389 | pci_mem_start, gapstart, gapsize); |
| 1378 | } | 1390 | } |
| 1379 | 1391 | ||
| 1380 | /* Use inline assembly to define this because the nops are defined | ||
| 1381 | as inline assembly strings in the include files and we cannot | ||
| 1382 | get them easily into strings. */ | ||
| 1383 | asm("\t.data\nintelnops: " | ||
| 1384 | GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 | ||
| 1385 | GENERIC_NOP7 GENERIC_NOP8); | ||
| 1386 | asm("\t.data\nk8nops: " | ||
| 1387 | K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 | ||
| 1388 | K8_NOP7 K8_NOP8); | ||
| 1389 | asm("\t.data\nk7nops: " | ||
| 1390 | K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 | ||
| 1391 | K7_NOP7 K7_NOP8); | ||
| 1392 | |||
| 1393 | extern unsigned char intelnops[], k8nops[], k7nops[]; | ||
| 1394 | static unsigned char *intel_nops[ASM_NOP_MAX+1] = { | ||
| 1395 | NULL, | ||
| 1396 | intelnops, | ||
| 1397 | intelnops + 1, | ||
| 1398 | intelnops + 1 + 2, | ||
| 1399 | intelnops + 1 + 2 + 3, | ||
| 1400 | intelnops + 1 + 2 + 3 + 4, | ||
| 1401 | intelnops + 1 + 2 + 3 + 4 + 5, | ||
| 1402 | intelnops + 1 + 2 + 3 + 4 + 5 + 6, | ||
| 1403 | intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7, | ||
| 1404 | }; | ||
| 1405 | static unsigned char *k8_nops[ASM_NOP_MAX+1] = { | ||
| 1406 | NULL, | ||
| 1407 | k8nops, | ||
| 1408 | k8nops + 1, | ||
| 1409 | k8nops + 1 + 2, | ||
| 1410 | k8nops + 1 + 2 + 3, | ||
| 1411 | k8nops + 1 + 2 + 3 + 4, | ||
| 1412 | k8nops + 1 + 2 + 3 + 4 + 5, | ||
| 1413 | k8nops + 1 + 2 + 3 + 4 + 5 + 6, | ||
| 1414 | k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, | ||
| 1415 | }; | ||
| 1416 | static unsigned char *k7_nops[ASM_NOP_MAX+1] = { | ||
| 1417 | NULL, | ||
| 1418 | k7nops, | ||
| 1419 | k7nops + 1, | ||
| 1420 | k7nops + 1 + 2, | ||
| 1421 | k7nops + 1 + 2 + 3, | ||
| 1422 | k7nops + 1 + 2 + 3 + 4, | ||
| 1423 | k7nops + 1 + 2 + 3 + 4 + 5, | ||
| 1424 | k7nops + 1 + 2 + 3 + 4 + 5 + 6, | ||
| 1425 | k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, | ||
| 1426 | }; | ||
| 1427 | static struct nop { | ||
| 1428 | int cpuid; | ||
| 1429 | unsigned char **noptable; | ||
| 1430 | } noptypes[] = { | ||
| 1431 | { X86_FEATURE_K8, k8_nops }, | ||
| 1432 | { X86_FEATURE_K7, k7_nops }, | ||
| 1433 | { -1, NULL } | ||
| 1434 | }; | ||
| 1435 | |||
| 1436 | /* Replace instructions with better alternatives for this CPU type. | ||
| 1437 | |||
| 1438 | This runs before SMP is initialized to avoid SMP problems with | ||
| 1439 | self modifying code. This implies that assymetric systems where | ||
| 1440 | APs have less capabilities than the boot processor are not handled. | ||
| 1441 | Tough. Make sure you disable such features by hand. */ | ||
| 1442 | void apply_alternatives(void *start, void *end) | ||
| 1443 | { | ||
| 1444 | struct alt_instr *a; | ||
| 1445 | int diff, i, k; | ||
| 1446 | unsigned char **noptable = intel_nops; | ||
| 1447 | for (i = 0; noptypes[i].cpuid >= 0; i++) { | ||
| 1448 | if (boot_cpu_has(noptypes[i].cpuid)) { | ||
| 1449 | noptable = noptypes[i].noptable; | ||
| 1450 | break; | ||
| 1451 | } | ||
| 1452 | } | ||
| 1453 | for (a = start; (void *)a < end; a++) { | ||
| 1454 | if (!boot_cpu_has(a->cpuid)) | ||
| 1455 | continue; | ||
| 1456 | BUG_ON(a->replacementlen > a->instrlen); | ||
| 1457 | memcpy(a->instr, a->replacement, a->replacementlen); | ||
| 1458 | diff = a->instrlen - a->replacementlen; | ||
| 1459 | /* Pad the rest with nops */ | ||
| 1460 | for (i = a->replacementlen; diff > 0; diff -= k, i += k) { | ||
| 1461 | k = diff; | ||
| 1462 | if (k > ASM_NOP_MAX) | ||
| 1463 | k = ASM_NOP_MAX; | ||
| 1464 | memcpy(a->instr + i, noptable[k], k); | ||
| 1465 | } | ||
| 1466 | } | ||
| 1467 | } | ||
| 1468 | |||
| 1469 | void __init alternative_instructions(void) | ||
| 1470 | { | ||
| 1471 | extern struct alt_instr __alt_instructions[], __alt_instructions_end[]; | ||
| 1472 | apply_alternatives(__alt_instructions, __alt_instructions_end); | ||
| 1473 | } | ||
| 1474 | |||
| 1475 | static char * __init machine_specific_memory_setup(void); | 1392 | static char * __init machine_specific_memory_setup(void); |
| 1476 | 1393 | ||
| 1477 | #ifdef CONFIG_MCA | 1394 | #ifdef CONFIG_MCA |
| @@ -1554,6 +1471,16 @@ void __init setup_arch(char **cmdline_p) | |||
| 1554 | 1471 | ||
| 1555 | parse_cmdline_early(cmdline_p); | 1472 | parse_cmdline_early(cmdline_p); |
| 1556 | 1473 | ||
| 1474 | #ifdef CONFIG_EARLY_PRINTK | ||
| 1475 | { | ||
| 1476 | char *s = strstr(*cmdline_p, "earlyprintk="); | ||
| 1477 | if (s) { | ||
| 1478 | setup_early_printk(strchr(s, '=') + 1); | ||
| 1479 | printk("early console enabled\n"); | ||
| 1480 | } | ||
| 1481 | } | ||
| 1482 | #endif | ||
| 1483 | |||
| 1557 | max_low_pfn = setup_memory(); | 1484 | max_low_pfn = setup_memory(); |
| 1558 | 1485 | ||
| 1559 | /* | 1486 | /* |
| @@ -1578,19 +1505,6 @@ void __init setup_arch(char **cmdline_p) | |||
| 1578 | * NOTE: at this point the bootmem allocator is fully available. | 1505 | * NOTE: at this point the bootmem allocator is fully available. |
| 1579 | */ | 1506 | */ |
| 1580 | 1507 | ||
| 1581 | #ifdef CONFIG_EARLY_PRINTK | ||
| 1582 | { | ||
| 1583 | char *s = strstr(*cmdline_p, "earlyprintk="); | ||
| 1584 | if (s) { | ||
| 1585 | extern void setup_early_printk(char *); | ||
| 1586 | |||
| 1587 | setup_early_printk(strchr(s, '=') + 1); | ||
| 1588 | printk("early console enabled\n"); | ||
| 1589 | } | ||
| 1590 | } | ||
| 1591 | #endif | ||
| 1592 | |||
| 1593 | |||
| 1594 | dmi_scan_machine(); | 1508 | dmi_scan_machine(); |
| 1595 | 1509 | ||
| 1596 | #ifdef CONFIG_X86_GENERICARCH | 1510 | #ifdef CONFIG_X86_GENERICARCH |
diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c index 963616d364ec..5c352c3a9e7f 100644 --- a/arch/i386/kernel/signal.c +++ b/arch/i386/kernel/signal.c | |||
| @@ -123,7 +123,8 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *peax | |||
| 123 | err |= __get_user(tmp, &sc->seg); \ | 123 | err |= __get_user(tmp, &sc->seg); \ |
| 124 | loadsegment(seg,tmp); } | 124 | loadsegment(seg,tmp); } |
| 125 | 125 | ||
| 126 | #define FIX_EFLAGS (X86_EFLAGS_AC | X86_EFLAGS_OF | X86_EFLAGS_DF | \ | 126 | #define FIX_EFLAGS (X86_EFLAGS_AC | X86_EFLAGS_RF | \ |
| 127 | X86_EFLAGS_OF | X86_EFLAGS_DF | \ | ||
| 127 | X86_EFLAGS_TF | X86_EFLAGS_SF | X86_EFLAGS_ZF | \ | 128 | X86_EFLAGS_TF | X86_EFLAGS_SF | X86_EFLAGS_ZF | \ |
| 128 | X86_EFLAGS_AF | X86_EFLAGS_PF | X86_EFLAGS_CF) | 129 | X86_EFLAGS_AF | X86_EFLAGS_PF | X86_EFLAGS_CF) |
| 129 | 130 | ||
| @@ -582,9 +583,6 @@ static void fastcall do_signal(struct pt_regs *regs) | |||
| 582 | if (!user_mode(regs)) | 583 | if (!user_mode(regs)) |
| 583 | return; | 584 | return; |
| 584 | 585 | ||
| 585 | if (try_to_freeze()) | ||
| 586 | goto no_signal; | ||
| 587 | |||
| 588 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) | 586 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) |
| 589 | oldset = ¤t->saved_sigmask; | 587 | oldset = ¤t->saved_sigmask; |
| 590 | else | 588 | else |
| @@ -613,7 +611,6 @@ static void fastcall do_signal(struct pt_regs *regs) | |||
| 613 | return; | 611 | return; |
| 614 | } | 612 | } |
| 615 | 613 | ||
| 616 | no_signal: | ||
| 617 | /* Did we come from a system call? */ | 614 | /* Did we come from a system call? */ |
| 618 | if (regs->orig_eax >= 0) { | 615 | if (regs->orig_eax >= 0) { |
| 619 | /* Restart the system call - no handlers present */ | 616 | /* Restart the system call - no handlers present */ |
diff --git a/arch/i386/kernel/smp.c b/arch/i386/kernel/smp.c index 218d725a5a1e..d134e9643a58 100644 --- a/arch/i386/kernel/smp.c +++ b/arch/i386/kernel/smp.c | |||
| @@ -504,27 +504,23 @@ void unlock_ipi_call_lock(void) | |||
| 504 | spin_unlock_irq(&call_lock); | 504 | spin_unlock_irq(&call_lock); |
| 505 | } | 505 | } |
| 506 | 506 | ||
| 507 | static struct call_data_struct * call_data; | 507 | static struct call_data_struct *call_data; |
| 508 | 508 | ||
| 509 | /* | 509 | /** |
| 510 | * this function sends a 'generic call function' IPI to all other CPUs | 510 | * smp_call_function(): Run a function on all other CPUs. |
| 511 | * in the system. | 511 | * @func: The function to run. This must be fast and non-blocking. |
| 512 | */ | 512 | * @info: An arbitrary pointer to pass to the function. |
| 513 | 513 | * @nonatomic: currently unused. | |
| 514 | int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | 514 | * @wait: If true, wait (atomically) until function has completed on other CPUs. |
| 515 | int wait) | 515 | * |
| 516 | /* | 516 | * Returns 0 on success, else a negative status code. Does not return until |
| 517 | * [SUMMARY] Run a function on all other CPUs. | ||
| 518 | * <func> The function to run. This must be fast and non-blocking. | ||
| 519 | * <info> An arbitrary pointer to pass to the function. | ||
| 520 | * <nonatomic> currently unused. | ||
| 521 | * <wait> If true, wait (atomically) until function has completed on other CPUs. | ||
| 522 | * [RETURNS] 0 on success, else a negative status code. Does not return until | ||
| 523 | * remote CPUs are nearly ready to execute <<func>> or are or have executed. | 517 | * remote CPUs are nearly ready to execute <<func>> or are or have executed. |
| 524 | * | 518 | * |
| 525 | * You must not call this function with disabled interrupts or from a | 519 | * You must not call this function with disabled interrupts or from a |
| 526 | * hardware interrupt handler or from a bottom half handler. | 520 | * hardware interrupt handler or from a bottom half handler. |
| 527 | */ | 521 | */ |
| 522 | int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | ||
| 523 | int wait) | ||
| 528 | { | 524 | { |
| 529 | struct call_data_struct data; | 525 | struct call_data_struct data; |
| 530 | int cpus; | 526 | int cpus; |
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c index 7007e1783797..4c470e99a742 100644 --- a/arch/i386/kernel/smpboot.c +++ b/arch/i386/kernel/smpboot.c | |||
| @@ -899,6 +899,7 @@ static int __devinit do_boot_cpu(int apicid, int cpu) | |||
| 899 | unsigned short nmi_high = 0, nmi_low = 0; | 899 | unsigned short nmi_high = 0, nmi_low = 0; |
| 900 | 900 | ||
| 901 | ++cpucount; | 901 | ++cpucount; |
| 902 | alternatives_smp_switch(1); | ||
| 902 | 903 | ||
| 903 | /* | 904 | /* |
| 904 | * We can't use kernel_thread since we must avoid to | 905 | * We can't use kernel_thread since we must avoid to |
| @@ -1368,6 +1369,8 @@ void __cpu_die(unsigned int cpu) | |||
| 1368 | /* They ack this in play_dead by setting CPU_DEAD */ | 1369 | /* They ack this in play_dead by setting CPU_DEAD */ |
| 1369 | if (per_cpu(cpu_state, cpu) == CPU_DEAD) { | 1370 | if (per_cpu(cpu_state, cpu) == CPU_DEAD) { |
| 1370 | printk ("CPU %d is now offline\n", cpu); | 1371 | printk ("CPU %d is now offline\n", cpu); |
| 1372 | if (1 == num_online_cpus()) | ||
| 1373 | alternatives_smp_switch(0); | ||
| 1371 | return; | 1374 | return; |
| 1372 | } | 1375 | } |
| 1373 | msleep(100); | 1376 | msleep(100); |
diff --git a/arch/i386/kernel/sys_i386.c b/arch/i386/kernel/sys_i386.c index a4a61976ecb9..8fdb1fb17a5f 100644 --- a/arch/i386/kernel/sys_i386.c +++ b/arch/i386/kernel/sys_i386.c | |||
| @@ -40,14 +40,13 @@ asmlinkage int sys_pipe(unsigned long __user * fildes) | |||
| 40 | return error; | 40 | return error; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | /* common code for old and new mmaps */ | 43 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, |
| 44 | static inline long do_mmap2( | 44 | unsigned long prot, unsigned long flags, |
| 45 | unsigned long addr, unsigned long len, | 45 | unsigned long fd, unsigned long pgoff) |
| 46 | unsigned long prot, unsigned long flags, | ||
| 47 | unsigned long fd, unsigned long pgoff) | ||
| 48 | { | 46 | { |
| 49 | int error = -EBADF; | 47 | int error = -EBADF; |
| 50 | struct file * file = NULL; | 48 | struct file *file = NULL; |
| 49 | struct mm_struct *mm = current->mm; | ||
| 51 | 50 | ||
| 52 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | 51 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); |
| 53 | if (!(flags & MAP_ANONYMOUS)) { | 52 | if (!(flags & MAP_ANONYMOUS)) { |
| @@ -56,9 +55,9 @@ static inline long do_mmap2( | |||
| 56 | goto out; | 55 | goto out; |
| 57 | } | 56 | } |
| 58 | 57 | ||
| 59 | down_write(¤t->mm->mmap_sem); | 58 | down_write(&mm->mmap_sem); |
| 60 | error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); | 59 | error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); |
| 61 | up_write(¤t->mm->mmap_sem); | 60 | up_write(&mm->mmap_sem); |
| 62 | 61 | ||
| 63 | if (file) | 62 | if (file) |
| 64 | fput(file); | 63 | fput(file); |
| @@ -66,13 +65,6 @@ out: | |||
| 66 | return error; | 65 | return error; |
| 67 | } | 66 | } |
| 68 | 67 | ||
| 69 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
| 70 | unsigned long prot, unsigned long flags, | ||
| 71 | unsigned long fd, unsigned long pgoff) | ||
| 72 | { | ||
| 73 | return do_mmap2(addr, len, prot, flags, fd, pgoff); | ||
| 74 | } | ||
| 75 | |||
| 76 | /* | 68 | /* |
| 77 | * Perform the select(nd, in, out, ex, tv) and mmap() system | 69 | * Perform the select(nd, in, out, ex, tv) and mmap() system |
| 78 | * calls. Linux/i386 didn't use to be able to handle more than | 70 | * calls. Linux/i386 didn't use to be able to handle more than |
| @@ -101,7 +93,8 @@ asmlinkage int old_mmap(struct mmap_arg_struct __user *arg) | |||
| 101 | if (a.offset & ~PAGE_MASK) | 93 | if (a.offset & ~PAGE_MASK) |
| 102 | goto out; | 94 | goto out; |
| 103 | 95 | ||
| 104 | err = do_mmap2(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); | 96 | err = sys_mmap2(a.addr, a.len, a.prot, a.flags, |
| 97 | a.fd, a.offset >> PAGE_SHIFT); | ||
| 105 | out: | 98 | out: |
| 106 | return err; | 99 | return err; |
| 107 | } | 100 | } |
diff --git a/arch/i386/kernel/timers/timer_hpet.c b/arch/i386/kernel/timers/timer_hpet.c index be242723c339..17a6fe7166e7 100644 --- a/arch/i386/kernel/timers/timer_hpet.c +++ b/arch/i386/kernel/timers/timer_hpet.c | |||
| @@ -46,7 +46,7 @@ static seqlock_t monotonic_lock = SEQLOCK_UNLOCKED; | |||
| 46 | * | 46 | * |
| 47 | * -johnstul@us.ibm.com "math is hard, lets go shopping!" | 47 | * -johnstul@us.ibm.com "math is hard, lets go shopping!" |
| 48 | */ | 48 | */ |
| 49 | static unsigned long cyc2ns_scale; | 49 | static unsigned long cyc2ns_scale __read_mostly; |
| 50 | #define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ | 50 | #define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ |
| 51 | 51 | ||
| 52 | static inline void set_cyc2ns_scale(unsigned long cpu_khz) | 52 | static inline void set_cyc2ns_scale(unsigned long cpu_khz) |
diff --git a/arch/i386/kernel/timers/timer_tsc.c b/arch/i386/kernel/timers/timer_tsc.c index a7f5a2aceba2..5e41ee29c8cf 100644 --- a/arch/i386/kernel/timers/timer_tsc.c +++ b/arch/i386/kernel/timers/timer_tsc.c | |||
| @@ -74,7 +74,7 @@ late_initcall(start_lost_tick_compensation); | |||
| 74 | * | 74 | * |
| 75 | * -johnstul@us.ibm.com "math is hard, lets go shopping!" | 75 | * -johnstul@us.ibm.com "math is hard, lets go shopping!" |
| 76 | */ | 76 | */ |
| 77 | static unsigned long cyc2ns_scale; | 77 | static unsigned long cyc2ns_scale __read_mostly; |
| 78 | #define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ | 78 | #define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ |
| 79 | 79 | ||
| 80 | static inline void set_cyc2ns_scale(unsigned long cpu_khz) | 80 | static inline void set_cyc2ns_scale(unsigned long cpu_khz) |
diff --git a/arch/i386/kernel/topology.c b/arch/i386/kernel/topology.c index 67a0e1baa28b..296355292c7c 100644 --- a/arch/i386/kernel/topology.c +++ b/arch/i386/kernel/topology.c | |||
| @@ -41,6 +41,15 @@ int arch_register_cpu(int num){ | |||
| 41 | parent = &node_devices[node].node; | 41 | parent = &node_devices[node].node; |
| 42 | #endif /* CONFIG_NUMA */ | 42 | #endif /* CONFIG_NUMA */ |
| 43 | 43 | ||
| 44 | /* | ||
| 45 | * CPU0 cannot be offlined due to several | ||
| 46 | * restrictions and assumptions in kernel. This basically | ||
| 47 | * doesnt add a control file, one cannot attempt to offline | ||
| 48 | * BSP. | ||
| 49 | */ | ||
| 50 | if (!num) | ||
| 51 | cpu_devices[num].cpu.no_control = 1; | ||
| 52 | |||
| 44 | return register_cpu(&cpu_devices[num].cpu, num, parent); | 53 | return register_cpu(&cpu_devices[num].cpu, num, parent); |
| 45 | } | 54 | } |
| 46 | 55 | ||
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index b814dbdcc91e..de5386b01d38 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c | |||
| @@ -99,6 +99,8 @@ int register_die_notifier(struct notifier_block *nb) | |||
| 99 | { | 99 | { |
| 100 | int err = 0; | 100 | int err = 0; |
| 101 | unsigned long flags; | 101 | unsigned long flags; |
| 102 | |||
| 103 | vmalloc_sync_all(); | ||
| 102 | spin_lock_irqsave(&die_notifier_lock, flags); | 104 | spin_lock_irqsave(&die_notifier_lock, flags); |
| 103 | err = notifier_chain_register(&i386die_chain, nb); | 105 | err = notifier_chain_register(&i386die_chain, nb); |
| 104 | spin_unlock_irqrestore(&die_notifier_lock, flags); | 106 | spin_unlock_irqrestore(&die_notifier_lock, flags); |
| @@ -112,12 +114,30 @@ static inline int valid_stack_ptr(struct thread_info *tinfo, void *p) | |||
| 112 | p < (void *)tinfo + THREAD_SIZE - 3; | 114 | p < (void *)tinfo + THREAD_SIZE - 3; |
| 113 | } | 115 | } |
| 114 | 116 | ||
| 115 | static void print_addr_and_symbol(unsigned long addr, char *log_lvl) | 117 | /* |
| 118 | * Print CONFIG_STACK_BACKTRACE_COLS address/symbol entries per line. | ||
| 119 | */ | ||
| 120 | static inline int print_addr_and_symbol(unsigned long addr, char *log_lvl, | ||
| 121 | int printed) | ||
| 116 | { | 122 | { |
| 117 | printk(log_lvl); | 123 | if (!printed) |
| 124 | printk(log_lvl); | ||
| 125 | |||
| 126 | #if CONFIG_STACK_BACKTRACE_COLS == 1 | ||
| 118 | printk(" [<%08lx>] ", addr); | 127 | printk(" [<%08lx>] ", addr); |
| 128 | #else | ||
| 129 | printk(" <%08lx> ", addr); | ||
| 130 | #endif | ||
| 119 | print_symbol("%s", addr); | 131 | print_symbol("%s", addr); |
| 120 | printk("\n"); | 132 | |
| 133 | printed = (printed + 1) % CONFIG_STACK_BACKTRACE_COLS; | ||
| 134 | |||
| 135 | if (printed) | ||
| 136 | printk(" "); | ||
| 137 | else | ||
| 138 | printk("\n"); | ||
| 139 | |||
| 140 | return printed; | ||
| 121 | } | 141 | } |
| 122 | 142 | ||
| 123 | static inline unsigned long print_context_stack(struct thread_info *tinfo, | 143 | static inline unsigned long print_context_stack(struct thread_info *tinfo, |
| @@ -125,20 +145,24 @@ static inline unsigned long print_context_stack(struct thread_info *tinfo, | |||
| 125 | char *log_lvl) | 145 | char *log_lvl) |
| 126 | { | 146 | { |
| 127 | unsigned long addr; | 147 | unsigned long addr; |
| 148 | int printed = 0; /* nr of entries already printed on current line */ | ||
| 128 | 149 | ||
| 129 | #ifdef CONFIG_FRAME_POINTER | 150 | #ifdef CONFIG_FRAME_POINTER |
| 130 | while (valid_stack_ptr(tinfo, (void *)ebp)) { | 151 | while (valid_stack_ptr(tinfo, (void *)ebp)) { |
| 131 | addr = *(unsigned long *)(ebp + 4); | 152 | addr = *(unsigned long *)(ebp + 4); |
| 132 | print_addr_and_symbol(addr, log_lvl); | 153 | printed = print_addr_and_symbol(addr, log_lvl, printed); |
| 133 | ebp = *(unsigned long *)ebp; | 154 | ebp = *(unsigned long *)ebp; |
| 134 | } | 155 | } |
| 135 | #else | 156 | #else |
| 136 | while (valid_stack_ptr(tinfo, stack)) { | 157 | while (valid_stack_ptr(tinfo, stack)) { |
| 137 | addr = *stack++; | 158 | addr = *stack++; |
| 138 | if (__kernel_text_address(addr)) | 159 | if (__kernel_text_address(addr)) |
| 139 | print_addr_and_symbol(addr, log_lvl); | 160 | printed = print_addr_and_symbol(addr, log_lvl, printed); |
| 140 | } | 161 | } |
| 141 | #endif | 162 | #endif |
| 163 | if (printed) | ||
| 164 | printk("\n"); | ||
| 165 | |||
| 142 | return ebp; | 166 | return ebp; |
| 143 | } | 167 | } |
| 144 | 168 | ||
| @@ -166,8 +190,7 @@ static void show_trace_log_lvl(struct task_struct *task, | |||
| 166 | stack = (unsigned long*)context->previous_esp; | 190 | stack = (unsigned long*)context->previous_esp; |
| 167 | if (!stack) | 191 | if (!stack) |
| 168 | break; | 192 | break; |
| 169 | printk(log_lvl); | 193 | printk("%s =======================\n", log_lvl); |
| 170 | printk(" =======================\n"); | ||
| 171 | } | 194 | } |
| 172 | } | 195 | } |
| 173 | 196 | ||
| @@ -194,21 +217,17 @@ static void show_stack_log_lvl(struct task_struct *task, unsigned long *esp, | |||
| 194 | for(i = 0; i < kstack_depth_to_print; i++) { | 217 | for(i = 0; i < kstack_depth_to_print; i++) { |
| 195 | if (kstack_end(stack)) | 218 | if (kstack_end(stack)) |
| 196 | break; | 219 | break; |
| 197 | if (i && ((i % 8) == 0)) { | 220 | if (i && ((i % 8) == 0)) |
| 198 | printk("\n"); | 221 | printk("\n%s ", log_lvl); |
| 199 | printk(log_lvl); | ||
| 200 | printk(" "); | ||
| 201 | } | ||
| 202 | printk("%08lx ", *stack++); | 222 | printk("%08lx ", *stack++); |
| 203 | } | 223 | } |
| 204 | printk("\n"); | 224 | printk("\n%sCall Trace:\n", log_lvl); |
| 205 | printk(log_lvl); | ||
| 206 | printk("Call Trace:\n"); | ||
| 207 | show_trace_log_lvl(task, esp, log_lvl); | 225 | show_trace_log_lvl(task, esp, log_lvl); |
| 208 | } | 226 | } |
| 209 | 227 | ||
| 210 | void show_stack(struct task_struct *task, unsigned long *esp) | 228 | void show_stack(struct task_struct *task, unsigned long *esp) |
| 211 | { | 229 | { |
| 230 | printk(" "); | ||
| 212 | show_stack_log_lvl(task, esp, ""); | 231 | show_stack_log_lvl(task, esp, ""); |
| 213 | } | 232 | } |
| 214 | 233 | ||
| @@ -233,7 +252,7 @@ void show_registers(struct pt_regs *regs) | |||
| 233 | 252 | ||
| 234 | esp = (unsigned long) (®s->esp); | 253 | esp = (unsigned long) (®s->esp); |
| 235 | savesegment(ss, ss); | 254 | savesegment(ss, ss); |
| 236 | if (user_mode(regs)) { | 255 | if (user_mode_vm(regs)) { |
| 237 | in_kernel = 0; | 256 | in_kernel = 0; |
| 238 | esp = regs->esp; | 257 | esp = regs->esp; |
| 239 | ss = regs->xss & 0xffff; | 258 | ss = regs->xss & 0xffff; |
| @@ -333,6 +352,8 @@ void die(const char * str, struct pt_regs * regs, long err) | |||
| 333 | static int die_counter; | 352 | static int die_counter; |
| 334 | unsigned long flags; | 353 | unsigned long flags; |
| 335 | 354 | ||
| 355 | oops_enter(); | ||
| 356 | |||
| 336 | if (die.lock_owner != raw_smp_processor_id()) { | 357 | if (die.lock_owner != raw_smp_processor_id()) { |
| 337 | console_verbose(); | 358 | console_verbose(); |
| 338 | spin_lock_irqsave(&die.lock, flags); | 359 | spin_lock_irqsave(&die.lock, flags); |
| @@ -385,6 +406,7 @@ void die(const char * str, struct pt_regs * regs, long err) | |||
| 385 | ssleep(5); | 406 | ssleep(5); |
| 386 | panic("Fatal exception"); | 407 | panic("Fatal exception"); |
| 387 | } | 408 | } |
| 409 | oops_exit(); | ||
| 388 | do_exit(SIGSEGV); | 410 | do_exit(SIGSEGV); |
| 389 | } | 411 | } |
| 390 | 412 | ||
| @@ -623,7 +645,7 @@ void die_nmi (struct pt_regs *regs, const char *msg) | |||
| 623 | /* If we are in kernel we are probably nested up pretty bad | 645 | /* If we are in kernel we are probably nested up pretty bad |
| 624 | * and might aswell get out now while we still can. | 646 | * and might aswell get out now while we still can. |
| 625 | */ | 647 | */ |
| 626 | if (!user_mode(regs)) { | 648 | if (!user_mode_vm(regs)) { |
| 627 | current->thread.trap_no = 2; | 649 | current->thread.trap_no = 2; |
| 628 | crash_kexec(regs); | 650 | crash_kexec(regs); |
| 629 | } | 651 | } |
| @@ -694,6 +716,7 @@ fastcall void do_nmi(struct pt_regs * regs, long error_code) | |||
| 694 | 716 | ||
| 695 | void set_nmi_callback(nmi_callback_t callback) | 717 | void set_nmi_callback(nmi_callback_t callback) |
| 696 | { | 718 | { |
| 719 | vmalloc_sync_all(); | ||
| 697 | rcu_assign_pointer(nmi_callback, callback); | 720 | rcu_assign_pointer(nmi_callback, callback); |
| 698 | } | 721 | } |
| 699 | EXPORT_SYMBOL_GPL(set_nmi_callback); | 722 | EXPORT_SYMBOL_GPL(set_nmi_callback); |
diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S index 4710195b6b74..3f21c6f6466d 100644 --- a/arch/i386/kernel/vmlinux.lds.S +++ b/arch/i386/kernel/vmlinux.lds.S | |||
| @@ -68,6 +68,26 @@ SECTIONS | |||
| 68 | *(.data.init_task) | 68 | *(.data.init_task) |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | /* might get freed after init */ | ||
| 72 | . = ALIGN(4096); | ||
| 73 | __smp_alt_begin = .; | ||
| 74 | __smp_alt_instructions = .; | ||
| 75 | .smp_altinstructions : AT(ADDR(.smp_altinstructions) - LOAD_OFFSET) { | ||
| 76 | *(.smp_altinstructions) | ||
| 77 | } | ||
| 78 | __smp_alt_instructions_end = .; | ||
| 79 | . = ALIGN(4); | ||
| 80 | __smp_locks = .; | ||
| 81 | .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { | ||
| 82 | *(.smp_locks) | ||
| 83 | } | ||
| 84 | __smp_locks_end = .; | ||
| 85 | .smp_altinstr_replacement : AT(ADDR(.smp_altinstr_replacement) - LOAD_OFFSET) { | ||
| 86 | *(.smp_altinstr_replacement) | ||
| 87 | } | ||
| 88 | . = ALIGN(4096); | ||
| 89 | __smp_alt_end = .; | ||
| 90 | |||
| 71 | /* will be freed after init */ | 91 | /* will be freed after init */ |
| 72 | . = ALIGN(4096); /* Init code and data */ | 92 | . = ALIGN(4096); /* Init code and data */ |
| 73 | __init_begin = .; | 93 | __init_begin = .; |
diff --git a/arch/i386/kernel/vsyscall-sysenter.S b/arch/i386/kernel/vsyscall-sysenter.S index 76b728159403..3b62baa6a371 100644 --- a/arch/i386/kernel/vsyscall-sysenter.S +++ b/arch/i386/kernel/vsyscall-sysenter.S | |||
| @@ -21,6 +21,9 @@ | |||
| 21 | * instruction clobbers %esp, the user's %esp won't even survive entry | 21 | * instruction clobbers %esp, the user's %esp won't even survive entry |
| 22 | * into the kernel. We store %esp in %ebp. Code in entry.S must fetch | 22 | * into the kernel. We store %esp in %ebp. Code in entry.S must fetch |
| 23 | * arg6 from the stack. | 23 | * arg6 from the stack. |
| 24 | * | ||
| 25 | * You can not use this vsyscall for the clone() syscall because the | ||
| 26 | * three dwords on the parent stack do not get copied to the child. | ||
| 24 | */ | 27 | */ |
| 25 | .text | 28 | .text |
| 26 | .globl __kernel_vsyscall | 29 | .globl __kernel_vsyscall |
diff --git a/arch/i386/mach-es7000/es7000.h b/arch/i386/mach-es7000/es7000.h index f1e3204f5dec..80566ca4a80a 100644 --- a/arch/i386/mach-es7000/es7000.h +++ b/arch/i386/mach-es7000/es7000.h | |||
| @@ -83,6 +83,7 @@ struct es7000_oem_table { | |||
| 83 | struct psai psai; | 83 | struct psai psai; |
| 84 | }; | 84 | }; |
| 85 | 85 | ||
| 86 | #ifdef CONFIG_ACPI | ||
| 86 | struct acpi_table_sdt { | 87 | struct acpi_table_sdt { |
| 87 | unsigned long pa; | 88 | unsigned long pa; |
| 88 | unsigned long count; | 89 | unsigned long count; |
| @@ -99,6 +100,9 @@ struct oem_table { | |||
| 99 | u32 OEMTableSize; | 100 | u32 OEMTableSize; |
| 100 | }; | 101 | }; |
| 101 | 102 | ||
| 103 | extern int find_unisys_acpi_oem_table(unsigned long *oem_addr); | ||
| 104 | #endif | ||
| 105 | |||
| 102 | struct mip_reg { | 106 | struct mip_reg { |
| 103 | unsigned long long off_0; | 107 | unsigned long long off_0; |
| 104 | unsigned long long off_8; | 108 | unsigned long long off_8; |
| @@ -114,7 +118,6 @@ struct mip_reg { | |||
| 114 | #define MIP_FUNC(VALUE) (VALUE & 0xff) | 118 | #define MIP_FUNC(VALUE) (VALUE & 0xff) |
| 115 | 119 | ||
| 116 | extern int parse_unisys_oem (char *oemptr); | 120 | extern int parse_unisys_oem (char *oemptr); |
| 117 | extern int find_unisys_acpi_oem_table(unsigned long *oem_addr); | ||
| 118 | extern void setup_unisys(void); | 121 | extern void setup_unisys(void); |
| 119 | extern int es7000_start_cpu(int cpu, unsigned long eip); | 122 | extern int es7000_start_cpu(int cpu, unsigned long eip); |
| 120 | extern void es7000_sw_apic(void); | 123 | extern void es7000_sw_apic(void); |
diff --git a/arch/i386/mach-es7000/es7000plat.c b/arch/i386/mach-es7000/es7000plat.c index a9ab0644f403..3d0fc853516d 100644 --- a/arch/i386/mach-es7000/es7000plat.c +++ b/arch/i386/mach-es7000/es7000plat.c | |||
| @@ -51,8 +51,6 @@ struct mip_reg *host_reg; | |||
| 51 | int mip_port; | 51 | int mip_port; |
| 52 | unsigned long mip_addr, host_addr; | 52 | unsigned long mip_addr, host_addr; |
| 53 | 53 | ||
| 54 | #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI) | ||
| 55 | |||
| 56 | /* | 54 | /* |
| 57 | * GSI override for ES7000 platforms. | 55 | * GSI override for ES7000 platforms. |
| 58 | */ | 56 | */ |
| @@ -76,8 +74,6 @@ es7000_rename_gsi(int ioapic, int gsi) | |||
| 76 | return gsi; | 74 | return gsi; |
| 77 | } | 75 | } |
| 78 | 76 | ||
| 79 | #endif /* (CONFIG_X86_IO_APIC) && (CONFIG_ACPI) */ | ||
| 80 | |||
| 81 | void __init | 77 | void __init |
| 82 | setup_unisys(void) | 78 | setup_unisys(void) |
| 83 | { | 79 | { |
| @@ -160,6 +156,7 @@ parse_unisys_oem (char *oemptr) | |||
| 160 | return es7000_plat; | 156 | return es7000_plat; |
| 161 | } | 157 | } |
| 162 | 158 | ||
| 159 | #ifdef CONFIG_ACPI | ||
| 163 | int __init | 160 | int __init |
| 164 | find_unisys_acpi_oem_table(unsigned long *oem_addr) | 161 | find_unisys_acpi_oem_table(unsigned long *oem_addr) |
| 165 | { | 162 | { |
| @@ -212,6 +209,7 @@ find_unisys_acpi_oem_table(unsigned long *oem_addr) | |||
| 212 | } | 209 | } |
| 213 | return -1; | 210 | return -1; |
| 214 | } | 211 | } |
| 212 | #endif | ||
| 215 | 213 | ||
| 216 | static void | 214 | static void |
| 217 | es7000_spin(int n) | 215 | es7000_spin(int n) |
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c index cf572d9a3b6e..7f0fcf219a26 100644 --- a/arch/i386/mm/fault.c +++ b/arch/i386/mm/fault.c | |||
| @@ -214,6 +214,68 @@ static noinline void force_sig_info_fault(int si_signo, int si_code, | |||
| 214 | 214 | ||
| 215 | fastcall void do_invalid_op(struct pt_regs *, unsigned long); | 215 | fastcall void do_invalid_op(struct pt_regs *, unsigned long); |
| 216 | 216 | ||
| 217 | static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address) | ||
| 218 | { | ||
| 219 | unsigned index = pgd_index(address); | ||
| 220 | pgd_t *pgd_k; | ||
| 221 | pud_t *pud, *pud_k; | ||
| 222 | pmd_t *pmd, *pmd_k; | ||
| 223 | |||
| 224 | pgd += index; | ||
| 225 | pgd_k = init_mm.pgd + index; | ||
| 226 | |||
| 227 | if (!pgd_present(*pgd_k)) | ||
| 228 | return NULL; | ||
| 229 | |||
| 230 | /* | ||
| 231 | * set_pgd(pgd, *pgd_k); here would be useless on PAE | ||
| 232 | * and redundant with the set_pmd() on non-PAE. As would | ||
| 233 | * set_pud. | ||
| 234 | */ | ||
| 235 | |||
| 236 | pud = pud_offset(pgd, address); | ||
| 237 | pud_k = pud_offset(pgd_k, address); | ||
| 238 | if (!pud_present(*pud_k)) | ||
| 239 | return NULL; | ||
| 240 | |||
| 241 | pmd = pmd_offset(pud, address); | ||
| 242 | pmd_k = pmd_offset(pud_k, address); | ||
| 243 | if (!pmd_present(*pmd_k)) | ||
| 244 | return NULL; | ||
| 245 | if (!pmd_present(*pmd)) | ||
| 246 | set_pmd(pmd, *pmd_k); | ||
| 247 | else | ||
| 248 | BUG_ON(pmd_page(*pmd) != pmd_page(*pmd_k)); | ||
| 249 | return pmd_k; | ||
| 250 | } | ||
| 251 | |||
| 252 | /* | ||
| 253 | * Handle a fault on the vmalloc or module mapping area | ||
| 254 | * | ||
| 255 | * This assumes no large pages in there. | ||
| 256 | */ | ||
| 257 | static inline int vmalloc_fault(unsigned long address) | ||
| 258 | { | ||
| 259 | unsigned long pgd_paddr; | ||
| 260 | pmd_t *pmd_k; | ||
| 261 | pte_t *pte_k; | ||
| 262 | /* | ||
| 263 | * Synchronize this task's top level page-table | ||
| 264 | * with the 'reference' page table. | ||
| 265 | * | ||
| 266 | * Do _not_ use "current" here. We might be inside | ||
| 267 | * an interrupt in the middle of a task switch.. | ||
| 268 | */ | ||
| 269 | pgd_paddr = read_cr3(); | ||
| 270 | pmd_k = vmalloc_sync_one(__va(pgd_paddr), address); | ||
| 271 | if (!pmd_k) | ||
| 272 | return -1; | ||
| 273 | pte_k = pte_offset_kernel(pmd_k, address); | ||
| 274 | if (!pte_present(*pte_k)) | ||
| 275 | return -1; | ||
| 276 | return 0; | ||
| 277 | } | ||
| 278 | |||
| 217 | /* | 279 | /* |
| 218 | * This routine handles page faults. It determines the address, | 280 | * This routine handles page faults. It determines the address, |
| 219 | * and the problem, and then passes it off to one of the appropriate | 281 | * and the problem, and then passes it off to one of the appropriate |
| @@ -223,6 +285,8 @@ fastcall void do_invalid_op(struct pt_regs *, unsigned long); | |||
| 223 | * bit 0 == 0 means no page found, 1 means protection fault | 285 | * bit 0 == 0 means no page found, 1 means protection fault |
| 224 | * bit 1 == 0 means read, 1 means write | 286 | * bit 1 == 0 means read, 1 means write |
| 225 | * bit 2 == 0 means kernel, 1 means user-mode | 287 | * bit 2 == 0 means kernel, 1 means user-mode |
| 288 | * bit 3 == 1 means use of reserved bit detected | ||
| 289 | * bit 4 == 1 means fault was an instruction fetch | ||
| 226 | */ | 290 | */ |
| 227 | fastcall void __kprobes do_page_fault(struct pt_regs *regs, | 291 | fastcall void __kprobes do_page_fault(struct pt_regs *regs, |
| 228 | unsigned long error_code) | 292 | unsigned long error_code) |
| @@ -237,13 +301,6 @@ fastcall void __kprobes do_page_fault(struct pt_regs *regs, | |||
| 237 | /* get the address */ | 301 | /* get the address */ |
| 238 | address = read_cr2(); | 302 | address = read_cr2(); |
| 239 | 303 | ||
| 240 | if (notify_die(DIE_PAGE_FAULT, "page fault", regs, error_code, 14, | ||
| 241 | SIGSEGV) == NOTIFY_STOP) | ||
| 242 | return; | ||
| 243 | /* It's safe to allow irq's after cr2 has been saved */ | ||
| 244 | if (regs->eflags & (X86_EFLAGS_IF|VM_MASK)) | ||
| 245 | local_irq_enable(); | ||
| 246 | |||
| 247 | tsk = current; | 304 | tsk = current; |
| 248 | 305 | ||
| 249 | si_code = SEGV_MAPERR; | 306 | si_code = SEGV_MAPERR; |
| @@ -259,17 +316,29 @@ fastcall void __kprobes do_page_fault(struct pt_regs *regs, | |||
| 259 | * | 316 | * |
| 260 | * This verifies that the fault happens in kernel space | 317 | * This verifies that the fault happens in kernel space |
| 261 | * (error_code & 4) == 0, and that the fault was not a | 318 | * (error_code & 4) == 0, and that the fault was not a |
| 262 | * protection error (error_code & 1) == 0. | 319 | * protection error (error_code & 9) == 0. |
| 263 | */ | 320 | */ |
| 264 | if (unlikely(address >= TASK_SIZE)) { | 321 | if (unlikely(address >= TASK_SIZE)) { |
| 265 | if (!(error_code & 5)) | 322 | if (!(error_code & 0x0000000d) && vmalloc_fault(address) >= 0) |
| 266 | goto vmalloc_fault; | 323 | return; |
| 267 | /* | 324 | if (notify_die(DIE_PAGE_FAULT, "page fault", regs, error_code, 14, |
| 325 | SIGSEGV) == NOTIFY_STOP) | ||
| 326 | return; | ||
| 327 | /* | ||
| 268 | * Don't take the mm semaphore here. If we fixup a prefetch | 328 | * Don't take the mm semaphore here. If we fixup a prefetch |
| 269 | * fault we could otherwise deadlock. | 329 | * fault we could otherwise deadlock. |
| 270 | */ | 330 | */ |
| 271 | goto bad_area_nosemaphore; | 331 | goto bad_area_nosemaphore; |
| 272 | } | 332 | } |
| 333 | |||
| 334 | if (notify_die(DIE_PAGE_FAULT, "page fault", regs, error_code, 14, | ||
| 335 | SIGSEGV) == NOTIFY_STOP) | ||
| 336 | return; | ||
| 337 | |||
| 338 | /* It's safe to allow irq's after cr2 has been saved and the vmalloc | ||
| 339 | fault has been handled. */ | ||
| 340 | if (regs->eflags & (X86_EFLAGS_IF|VM_MASK)) | ||
| 341 | local_irq_enable(); | ||
| 273 | 342 | ||
| 274 | mm = tsk->mm; | 343 | mm = tsk->mm; |
| 275 | 344 | ||
| @@ -440,24 +509,31 @@ no_context: | |||
| 440 | 509 | ||
| 441 | bust_spinlocks(1); | 510 | bust_spinlocks(1); |
| 442 | 511 | ||
| 443 | #ifdef CONFIG_X86_PAE | 512 | if (oops_may_print()) { |
| 444 | if (error_code & 16) { | 513 | #ifdef CONFIG_X86_PAE |
| 445 | pte_t *pte = lookup_address(address); | 514 | if (error_code & 16) { |
| 515 | pte_t *pte = lookup_address(address); | ||
| 446 | 516 | ||
| 447 | if (pte && pte_present(*pte) && !pte_exec_kernel(*pte)) | 517 | if (pte && pte_present(*pte) && !pte_exec_kernel(*pte)) |
| 448 | printk(KERN_CRIT "kernel tried to execute NX-protected page - exploit attempt? (uid: %d)\n", current->uid); | 518 | printk(KERN_CRIT "kernel tried to execute " |
| 519 | "NX-protected page - exploit attempt? " | ||
| 520 | "(uid: %d)\n", current->uid); | ||
| 521 | } | ||
| 522 | #endif | ||
| 523 | if (address < PAGE_SIZE) | ||
| 524 | printk(KERN_ALERT "BUG: unable to handle kernel NULL " | ||
| 525 | "pointer dereference"); | ||
| 526 | else | ||
| 527 | printk(KERN_ALERT "BUG: unable to handle kernel paging" | ||
| 528 | " request"); | ||
| 529 | printk(" at virtual address %08lx\n",address); | ||
| 530 | printk(KERN_ALERT " printing eip:\n"); | ||
| 531 | printk("%08lx\n", regs->eip); | ||
| 449 | } | 532 | } |
| 450 | #endif | ||
| 451 | if (address < PAGE_SIZE) | ||
| 452 | printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference"); | ||
| 453 | else | ||
| 454 | printk(KERN_ALERT "Unable to handle kernel paging request"); | ||
| 455 | printk(" at virtual address %08lx\n",address); | ||
| 456 | printk(KERN_ALERT " printing eip:\n"); | ||
| 457 | printk("%08lx\n", regs->eip); | ||
| 458 | page = read_cr3(); | 533 | page = read_cr3(); |
| 459 | page = ((unsigned long *) __va(page))[address >> 22]; | 534 | page = ((unsigned long *) __va(page))[address >> 22]; |
| 460 | printk(KERN_ALERT "*pde = %08lx\n", page); | 535 | if (oops_may_print()) |
| 536 | printk(KERN_ALERT "*pde = %08lx\n", page); | ||
| 461 | /* | 537 | /* |
| 462 | * We must not directly access the pte in the highpte | 538 | * We must not directly access the pte in the highpte |
| 463 | * case, the page table might be allocated in highmem. | 539 | * case, the page table might be allocated in highmem. |
| @@ -465,7 +541,7 @@ no_context: | |||
| 465 | * it's allocated already. | 541 | * it's allocated already. |
| 466 | */ | 542 | */ |
| 467 | #ifndef CONFIG_HIGHPTE | 543 | #ifndef CONFIG_HIGHPTE |
| 468 | if (page & 1) { | 544 | if ((page & 1) && oops_may_print()) { |
| 469 | page &= PAGE_MASK; | 545 | page &= PAGE_MASK; |
| 470 | address &= 0x003ff000; | 546 | address &= 0x003ff000; |
| 471 | page = ((unsigned long *) __va(page))[address >> PAGE_SHIFT]; | 547 | page = ((unsigned long *) __va(page))[address >> PAGE_SHIFT]; |
| @@ -510,51 +586,41 @@ do_sigbus: | |||
| 510 | tsk->thread.error_code = error_code; | 586 | tsk->thread.error_code = error_code; |
| 511 | tsk->thread.trap_no = 14; | 587 | tsk->thread.trap_no = 14; |
| 512 | force_sig_info_fault(SIGBUS, BUS_ADRERR, address, tsk); | 588 | force_sig_info_fault(SIGBUS, BUS_ADRERR, address, tsk); |
| 513 | return; | 589 | } |
| 514 | |||
| 515 | vmalloc_fault: | ||
| 516 | { | ||
| 517 | /* | ||
| 518 | * Synchronize this task's top level page-table | ||
| 519 | * with the 'reference' page table. | ||
| 520 | * | ||
| 521 | * Do _not_ use "tsk" here. We might be inside | ||
| 522 | * an interrupt in the middle of a task switch.. | ||
| 523 | */ | ||
| 524 | int index = pgd_index(address); | ||
| 525 | unsigned long pgd_paddr; | ||
| 526 | pgd_t *pgd, *pgd_k; | ||
| 527 | pud_t *pud, *pud_k; | ||
| 528 | pmd_t *pmd, *pmd_k; | ||
| 529 | pte_t *pte_k; | ||
| 530 | |||
| 531 | pgd_paddr = read_cr3(); | ||
| 532 | pgd = index + (pgd_t *)__va(pgd_paddr); | ||
| 533 | pgd_k = init_mm.pgd + index; | ||
| 534 | |||
| 535 | if (!pgd_present(*pgd_k)) | ||
| 536 | goto no_context; | ||
| 537 | |||
| 538 | /* | ||
| 539 | * set_pgd(pgd, *pgd_k); here would be useless on PAE | ||
| 540 | * and redundant with the set_pmd() on non-PAE. As would | ||
| 541 | * set_pud. | ||
| 542 | */ | ||
| 543 | 590 | ||
| 544 | pud = pud_offset(pgd, address); | 591 | #ifndef CONFIG_X86_PAE |
| 545 | pud_k = pud_offset(pgd_k, address); | 592 | void vmalloc_sync_all(void) |
| 546 | if (!pud_present(*pud_k)) | 593 | { |
| 547 | goto no_context; | 594 | /* |
| 548 | 595 | * Note that races in the updates of insync and start aren't | |
| 549 | pmd = pmd_offset(pud, address); | 596 | * problematic: insync can only get set bits added, and updates to |
| 550 | pmd_k = pmd_offset(pud_k, address); | 597 | * start are only improving performance (without affecting correctness |
| 551 | if (!pmd_present(*pmd_k)) | 598 | * if undone). |
| 552 | goto no_context; | 599 | */ |
| 553 | set_pmd(pmd, *pmd_k); | 600 | static DECLARE_BITMAP(insync, PTRS_PER_PGD); |
| 601 | static unsigned long start = TASK_SIZE; | ||
| 602 | unsigned long address; | ||
| 554 | 603 | ||
| 555 | pte_k = pte_offset_kernel(pmd_k, address); | 604 | BUILD_BUG_ON(TASK_SIZE & ~PGDIR_MASK); |
| 556 | if (!pte_present(*pte_k)) | 605 | for (address = start; address >= TASK_SIZE; address += PGDIR_SIZE) { |
| 557 | goto no_context; | 606 | if (!test_bit(pgd_index(address), insync)) { |
| 558 | return; | 607 | unsigned long flags; |
| 608 | struct page *page; | ||
| 609 | |||
| 610 | spin_lock_irqsave(&pgd_lock, flags); | ||
| 611 | for (page = pgd_list; page; page = | ||
| 612 | (struct page *)page->index) | ||
| 613 | if (!vmalloc_sync_one(page_address(page), | ||
| 614 | address)) { | ||
| 615 | BUG_ON(page != pgd_list); | ||
| 616 | break; | ||
| 617 | } | ||
| 618 | spin_unlock_irqrestore(&pgd_lock, flags); | ||
| 619 | if (!page) | ||
| 620 | set_bit(pgd_index(address), insync); | ||
| 621 | } | ||
| 622 | if (address == start && test_bit(pgd_index(address), insync)) | ||
| 623 | start = address + PGDIR_SIZE; | ||
| 559 | } | 624 | } |
| 560 | } | 625 | } |
| 626 | #endif | ||
diff --git a/arch/i386/mm/hugetlbpage.c b/arch/i386/mm/hugetlbpage.c index d524127c9afc..a7d891585411 100644 --- a/arch/i386/mm/hugetlbpage.c +++ b/arch/i386/mm/hugetlbpage.c | |||
| @@ -48,18 +48,6 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) | |||
| 48 | return (pte_t *) pmd; | 48 | return (pte_t *) pmd; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | /* | ||
| 52 | * This function checks for proper alignment of input addr and len parameters. | ||
| 53 | */ | ||
| 54 | int is_aligned_hugepage_range(unsigned long addr, unsigned long len) | ||
| 55 | { | ||
| 56 | if (len & ~HPAGE_MASK) | ||
| 57 | return -EINVAL; | ||
| 58 | if (addr & ~HPAGE_MASK) | ||
| 59 | return -EINVAL; | ||
| 60 | return 0; | ||
| 61 | } | ||
| 62 | |||
| 63 | #if 0 /* This is just for testing */ | 51 | #if 0 /* This is just for testing */ |
| 64 | struct page * | 52 | struct page * |
| 65 | follow_huge_addr(struct mm_struct *mm, unsigned long address, int write) | 53 | follow_huge_addr(struct mm_struct *mm, unsigned long address, int write) |
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c index 2700f01994ba..9f66ac582a8b 100644 --- a/arch/i386/mm/init.c +++ b/arch/i386/mm/init.c | |||
| @@ -270,7 +270,7 @@ static void __init permanent_kmaps_init(pgd_t *pgd_base) | |||
| 270 | 270 | ||
| 271 | static void __meminit free_new_highpage(struct page *page) | 271 | static void __meminit free_new_highpage(struct page *page) |
| 272 | { | 272 | { |
| 273 | set_page_count(page, 1); | 273 | init_page_count(page); |
| 274 | __free_page(page); | 274 | __free_page(page); |
| 275 | totalhigh_pages++; | 275 | totalhigh_pages++; |
| 276 | } | 276 | } |
| @@ -720,21 +720,6 @@ static int noinline do_test_wp_bit(void) | |||
| 720 | return flag; | 720 | return flag; |
| 721 | } | 721 | } |
| 722 | 722 | ||
| 723 | void free_initmem(void) | ||
| 724 | { | ||
| 725 | unsigned long addr; | ||
| 726 | |||
| 727 | addr = (unsigned long)(&__init_begin); | ||
| 728 | for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) { | ||
| 729 | ClearPageReserved(virt_to_page(addr)); | ||
| 730 | set_page_count(virt_to_page(addr), 1); | ||
| 731 | memset((void *)addr, 0xcc, PAGE_SIZE); | ||
| 732 | free_page(addr); | ||
| 733 | totalram_pages++; | ||
| 734 | } | ||
| 735 | printk (KERN_INFO "Freeing unused kernel memory: %dk freed\n", (__init_end - __init_begin) >> 10); | ||
| 736 | } | ||
| 737 | |||
| 738 | #ifdef CONFIG_DEBUG_RODATA | 723 | #ifdef CONFIG_DEBUG_RODATA |
| 739 | 724 | ||
| 740 | extern char __start_rodata, __end_rodata; | 725 | extern char __start_rodata, __end_rodata; |
| @@ -758,17 +743,31 @@ void mark_rodata_ro(void) | |||
| 758 | } | 743 | } |
| 759 | #endif | 744 | #endif |
| 760 | 745 | ||
| 746 | void free_init_pages(char *what, unsigned long begin, unsigned long end) | ||
| 747 | { | ||
| 748 | unsigned long addr; | ||
| 749 | |||
| 750 | for (addr = begin; addr < end; addr += PAGE_SIZE) { | ||
| 751 | ClearPageReserved(virt_to_page(addr)); | ||
| 752 | init_page_count(virt_to_page(addr)); | ||
| 753 | memset((void *)addr, 0xcc, PAGE_SIZE); | ||
| 754 | free_page(addr); | ||
| 755 | totalram_pages++; | ||
| 756 | } | ||
| 757 | printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10); | ||
| 758 | } | ||
| 759 | |||
| 760 | void free_initmem(void) | ||
| 761 | { | ||
| 762 | free_init_pages("unused kernel memory", | ||
| 763 | (unsigned long)(&__init_begin), | ||
| 764 | (unsigned long)(&__init_end)); | ||
| 765 | } | ||
| 761 | 766 | ||
| 762 | #ifdef CONFIG_BLK_DEV_INITRD | 767 | #ifdef CONFIG_BLK_DEV_INITRD |
| 763 | void free_initrd_mem(unsigned long start, unsigned long end) | 768 | void free_initrd_mem(unsigned long start, unsigned long end) |
| 764 | { | 769 | { |
| 765 | if (start < end) | 770 | free_init_pages("initrd memory", start, end); |
| 766 | printk (KERN_INFO "Freeing initrd memory: %ldk freed\n", (end - start) >> 10); | ||
| 767 | for (; start < end; start += PAGE_SIZE) { | ||
| 768 | ClearPageReserved(virt_to_page(start)); | ||
| 769 | set_page_count(virt_to_page(start), 1); | ||
| 770 | free_page(start); | ||
| 771 | totalram_pages++; | ||
| 772 | } | ||
| 773 | } | 771 | } |
| 774 | #endif | 772 | #endif |
| 773 | |||
diff --git a/arch/i386/mm/pageattr.c b/arch/i386/mm/pageattr.c index d0cadb33b54c..92c3d9f0e731 100644 --- a/arch/i386/mm/pageattr.c +++ b/arch/i386/mm/pageattr.c | |||
| @@ -51,6 +51,13 @@ static struct page *split_large_page(unsigned long address, pgprot_t prot, | |||
| 51 | if (!base) | 51 | if (!base) |
| 52 | return NULL; | 52 | return NULL; |
| 53 | 53 | ||
| 54 | /* | ||
| 55 | * page_private is used to track the number of entries in | ||
| 56 | * the page table page that have non standard attributes. | ||
| 57 | */ | ||
| 58 | SetPagePrivate(base); | ||
| 59 | page_private(base) = 0; | ||
| 60 | |||
| 54 | address = __pa(address); | 61 | address = __pa(address); |
| 55 | addr = address & LARGE_PAGE_MASK; | 62 | addr = address & LARGE_PAGE_MASK; |
| 56 | pbase = (pte_t *)page_address(base); | 63 | pbase = (pte_t *)page_address(base); |
| @@ -143,11 +150,12 @@ __change_page_attr(struct page *page, pgprot_t prot) | |||
| 143 | return -ENOMEM; | 150 | return -ENOMEM; |
| 144 | set_pmd_pte(kpte,address,mk_pte(split, ref_prot)); | 151 | set_pmd_pte(kpte,address,mk_pte(split, ref_prot)); |
| 145 | kpte_page = split; | 152 | kpte_page = split; |
| 146 | } | 153 | } |
| 147 | get_page(kpte_page); | 154 | page_private(kpte_page)++; |
| 148 | } else if ((pte_val(*kpte) & _PAGE_PSE) == 0) { | 155 | } else if ((pte_val(*kpte) & _PAGE_PSE) == 0) { |
| 149 | set_pte_atomic(kpte, mk_pte(page, PAGE_KERNEL)); | 156 | set_pte_atomic(kpte, mk_pte(page, PAGE_KERNEL)); |
| 150 | __put_page(kpte_page); | 157 | BUG_ON(page_private(kpte_page) == 0); |
| 158 | page_private(kpte_page)--; | ||
| 151 | } else | 159 | } else |
| 152 | BUG(); | 160 | BUG(); |
| 153 | 161 | ||
| @@ -157,10 +165,8 @@ __change_page_attr(struct page *page, pgprot_t prot) | |||
| 157 | * replace it with a largepage. | 165 | * replace it with a largepage. |
| 158 | */ | 166 | */ |
| 159 | if (!PageReserved(kpte_page)) { | 167 | if (!PageReserved(kpte_page)) { |
| 160 | /* memleak and potential failed 2M page regeneration */ | 168 | if (cpu_has_pse && (page_private(kpte_page) == 0)) { |
| 161 | BUG_ON(!page_count(kpte_page)); | 169 | ClearPagePrivate(kpte_page); |
| 162 | |||
| 163 | if (cpu_has_pse && (page_count(kpte_page) == 1)) { | ||
| 164 | list_add(&kpte_page->lru, &df_list); | 170 | list_add(&kpte_page->lru, &df_list); |
| 165 | revert_page(kpte_page, address); | 171 | revert_page(kpte_page, address); |
| 166 | } | 172 | } |
diff --git a/arch/i386/oprofile/nmi_int.c b/arch/i386/oprofile/nmi_int.c index 0493e8b8ec49..1accce50c2c7 100644 --- a/arch/i386/oprofile/nmi_int.c +++ b/arch/i386/oprofile/nmi_int.c | |||
| @@ -122,7 +122,7 @@ static void nmi_save_registers(void * dummy) | |||
| 122 | static void free_msrs(void) | 122 | static void free_msrs(void) |
| 123 | { | 123 | { |
| 124 | int i; | 124 | int i; |
| 125 | for (i = 0; i < NR_CPUS; ++i) { | 125 | for_each_cpu(i) { |
| 126 | kfree(cpu_msrs[i].counters); | 126 | kfree(cpu_msrs[i].counters); |
| 127 | cpu_msrs[i].counters = NULL; | 127 | cpu_msrs[i].counters = NULL; |
| 128 | kfree(cpu_msrs[i].controls); | 128 | kfree(cpu_msrs[i].controls); |
| @@ -138,10 +138,7 @@ static int allocate_msrs(void) | |||
| 138 | size_t counters_size = sizeof(struct op_msr) * model->num_counters; | 138 | size_t counters_size = sizeof(struct op_msr) * model->num_counters; |
| 139 | 139 | ||
| 140 | int i; | 140 | int i; |
| 141 | for (i = 0; i < NR_CPUS; ++i) { | 141 | for_each_online_cpu(i) { |
| 142 | if (!cpu_online(i)) | ||
| 143 | continue; | ||
| 144 | |||
| 145 | cpu_msrs[i].counters = kmalloc(counters_size, GFP_KERNEL); | 142 | cpu_msrs[i].counters = kmalloc(counters_size, GFP_KERNEL); |
| 146 | if (!cpu_msrs[i].counters) { | 143 | if (!cpu_msrs[i].counters) { |
| 147 | success = 0; | 144 | success = 0; |
diff --git a/arch/i386/pci/Makefile b/arch/i386/pci/Makefile index 5461d4d5ea1e..62ad75c57e6a 100644 --- a/arch/i386/pci/Makefile +++ b/arch/i386/pci/Makefile | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | obj-y := i386.o | 1 | obj-y := i386.o init.o |
| 2 | 2 | ||
| 3 | obj-$(CONFIG_PCI_BIOS) += pcbios.o | 3 | obj-$(CONFIG_PCI_BIOS) += pcbios.o |
| 4 | obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o | 4 | obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o |
diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c index f6bc48da4d2a..dbece776c5b2 100644 --- a/arch/i386/pci/common.c +++ b/arch/i386/pci/common.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <linux/pci.h> | 8 | #include <linux/pci.h> |
| 9 | #include <linux/ioport.h> | 9 | #include <linux/ioport.h> |
| 10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
| 11 | #include <linux/dmi.h> | ||
| 11 | 12 | ||
| 12 | #include <asm/acpi.h> | 13 | #include <asm/acpi.h> |
| 13 | #include <asm/segment.h> | 14 | #include <asm/segment.h> |
| @@ -120,11 +121,42 @@ void __devinit pcibios_fixup_bus(struct pci_bus *b) | |||
| 120 | pci_read_bridge_bases(b); | 121 | pci_read_bridge_bases(b); |
| 121 | } | 122 | } |
| 122 | 123 | ||
| 124 | /* | ||
| 125 | * Enable renumbering of PCI bus# ranges to reach all PCI busses (Cardbus) | ||
| 126 | */ | ||
| 127 | #ifdef __i386__ | ||
| 128 | static int __devinit assign_all_busses(struct dmi_system_id *d) | ||
| 129 | { | ||
| 130 | pci_probe |= PCI_ASSIGN_ALL_BUSSES; | ||
| 131 | printk(KERN_INFO "%s detected: enabling PCI bus# renumbering" | ||
| 132 | " (pci=assign-busses)\n", d->ident); | ||
| 133 | return 0; | ||
| 134 | } | ||
| 135 | #endif | ||
| 136 | |||
| 137 | /* | ||
| 138 | * Laptops which need pci=assign-busses to see Cardbus cards | ||
| 139 | */ | ||
| 140 | static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { | ||
| 141 | #ifdef __i386__ | ||
| 142 | { | ||
| 143 | .callback = assign_all_busses, | ||
| 144 | .ident = "Samsung X20 Laptop", | ||
| 145 | .matches = { | ||
| 146 | DMI_MATCH(DMI_SYS_VENDOR, "Samsung Electronics"), | ||
| 147 | DMI_MATCH(DMI_PRODUCT_NAME, "SX20S"), | ||
| 148 | }, | ||
| 149 | }, | ||
| 150 | #endif /* __i386__ */ | ||
| 151 | {} | ||
| 152 | }; | ||
| 123 | 153 | ||
| 124 | struct pci_bus * __devinit pcibios_scan_root(int busnum) | 154 | struct pci_bus * __devinit pcibios_scan_root(int busnum) |
| 125 | { | 155 | { |
| 126 | struct pci_bus *bus = NULL; | 156 | struct pci_bus *bus = NULL; |
| 127 | 157 | ||
| 158 | dmi_check_system(pciprobe_dmi_table); | ||
| 159 | |||
| 128 | while ((bus = pci_find_next_bus(bus)) != NULL) { | 160 | while ((bus = pci_find_next_bus(bus)) != NULL) { |
| 129 | if (bus->number == busnum) { | 161 | if (bus->number == busnum) { |
| 130 | /* Already scanned */ | 162 | /* Already scanned */ |
diff --git a/arch/i386/pci/direct.c b/arch/i386/pci/direct.c index e3ac502bf2fb..99012b93bd12 100644 --- a/arch/i386/pci/direct.c +++ b/arch/i386/pci/direct.c | |||
| @@ -245,7 +245,7 @@ static int __init pci_check_type2(void) | |||
| 245 | return works; | 245 | return works; |
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | static int __init pci_direct_init(void) | 248 | void __init pci_direct_init(void) |
| 249 | { | 249 | { |
| 250 | struct resource *region, *region2; | 250 | struct resource *region, *region2; |
| 251 | 251 | ||
| @@ -258,16 +258,16 @@ static int __init pci_direct_init(void) | |||
| 258 | if (pci_check_type1()) { | 258 | if (pci_check_type1()) { |
| 259 | printk(KERN_INFO "PCI: Using configuration type 1\n"); | 259 | printk(KERN_INFO "PCI: Using configuration type 1\n"); |
| 260 | raw_pci_ops = &pci_direct_conf1; | 260 | raw_pci_ops = &pci_direct_conf1; |
| 261 | return 0; | 261 | return; |
| 262 | } | 262 | } |
| 263 | release_resource(region); | 263 | release_resource(region); |
| 264 | 264 | ||
| 265 | type2: | 265 | type2: |
| 266 | if ((pci_probe & PCI_PROBE_CONF2) == 0) | 266 | if ((pci_probe & PCI_PROBE_CONF2) == 0) |
| 267 | goto out; | 267 | return; |
| 268 | region = request_region(0xCF8, 4, "PCI conf2"); | 268 | region = request_region(0xCF8, 4, "PCI conf2"); |
| 269 | if (!region) | 269 | if (!region) |
| 270 | goto out; | 270 | return; |
| 271 | region2 = request_region(0xC000, 0x1000, "PCI conf2"); | 271 | region2 = request_region(0xC000, 0x1000, "PCI conf2"); |
| 272 | if (!region2) | 272 | if (!region2) |
| 273 | goto fail2; | 273 | goto fail2; |
| @@ -275,15 +275,10 @@ static int __init pci_direct_init(void) | |||
| 275 | if (pci_check_type2()) { | 275 | if (pci_check_type2()) { |
| 276 | printk(KERN_INFO "PCI: Using configuration type 2\n"); | 276 | printk(KERN_INFO "PCI: Using configuration type 2\n"); |
| 277 | raw_pci_ops = &pci_direct_conf2; | 277 | raw_pci_ops = &pci_direct_conf2; |
| 278 | return 0; | 278 | return; |
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | release_resource(region2); | 281 | release_resource(region2); |
| 282 | fail2: | 282 | fail2: |
| 283 | release_resource(region); | 283 | release_resource(region); |
| 284 | |||
| 285 | out: | ||
| 286 | return 0; | ||
| 287 | } | 284 | } |
| 288 | |||
| 289 | arch_initcall(pci_direct_init); | ||
diff --git a/arch/i386/pci/init.c b/arch/i386/pci/init.c new file mode 100644 index 000000000000..f9156d3ac723 --- /dev/null +++ b/arch/i386/pci/init.c | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | #include <linux/config.h> | ||
| 2 | #include <linux/pci.h> | ||
| 3 | #include <linux/init.h> | ||
| 4 | #include "pci.h" | ||
| 5 | |||
| 6 | /* arch_initcall has too random ordering, so call the initializers | ||
| 7 | in the right sequence from here. */ | ||
| 8 | static __init int pci_access_init(void) | ||
| 9 | { | ||
| 10 | #ifdef CONFIG_PCI_MMCONFIG | ||
| 11 | pci_mmcfg_init(); | ||
| 12 | #endif | ||
| 13 | if (raw_pci_ops) | ||
| 14 | return 0; | ||
| 15 | #ifdef CONFIG_PCI_BIOS | ||
| 16 | pci_pcbios_init(); | ||
| 17 | #endif | ||
| 18 | if (raw_pci_ops) | ||
| 19 | return 0; | ||
| 20 | #ifdef CONFIG_PCI_DIRECT | ||
| 21 | pci_direct_init(); | ||
| 22 | #endif | ||
| 23 | return 0; | ||
| 24 | } | ||
| 25 | arch_initcall(pci_access_init); | ||
diff --git a/arch/i386/pci/mmconfig.c b/arch/i386/pci/mmconfig.c index 0ee8a983708c..613789071f30 100644 --- a/arch/i386/pci/mmconfig.c +++ b/arch/i386/pci/mmconfig.c | |||
| @@ -172,25 +172,20 @@ static __init void unreachable_devices(void) | |||
| 172 | } | 172 | } |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | static int __init pci_mmcfg_init(void) | 175 | void __init pci_mmcfg_init(void) |
| 176 | { | 176 | { |
| 177 | if ((pci_probe & PCI_PROBE_MMCONF) == 0) | 177 | if ((pci_probe & PCI_PROBE_MMCONF) == 0) |
| 178 | goto out; | 178 | return; |
| 179 | 179 | ||
| 180 | acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg); | 180 | acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg); |
| 181 | if ((pci_mmcfg_config_num == 0) || | 181 | if ((pci_mmcfg_config_num == 0) || |
| 182 | (pci_mmcfg_config == NULL) || | 182 | (pci_mmcfg_config == NULL) || |
| 183 | (pci_mmcfg_config[0].base_address == 0)) | 183 | (pci_mmcfg_config[0].base_address == 0)) |
| 184 | goto out; | 184 | return; |
| 185 | 185 | ||
| 186 | printk(KERN_INFO "PCI: Using MMCONFIG\n"); | 186 | printk(KERN_INFO "PCI: Using MMCONFIG\n"); |
| 187 | raw_pci_ops = &pci_mmcfg; | 187 | raw_pci_ops = &pci_mmcfg; |
| 188 | pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF; | 188 | pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF; |
| 189 | 189 | ||
| 190 | unreachable_devices(); | 190 | unreachable_devices(); |
| 191 | |||
| 192 | out: | ||
| 193 | return 0; | ||
| 194 | } | 191 | } |
| 195 | |||
| 196 | arch_initcall(pci_mmcfg_init); | ||
diff --git a/arch/i386/pci/pcbios.c b/arch/i386/pci/pcbios.c index b9d65f0bc2d1..1eec0868f4b3 100644 --- a/arch/i386/pci/pcbios.c +++ b/arch/i386/pci/pcbios.c | |||
| @@ -476,14 +476,12 @@ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq) | |||
| 476 | } | 476 | } |
| 477 | EXPORT_SYMBOL(pcibios_set_irq_routing); | 477 | EXPORT_SYMBOL(pcibios_set_irq_routing); |
| 478 | 478 | ||
| 479 | static int __init pci_pcbios_init(void) | 479 | void __init pci_pcbios_init(void) |
| 480 | { | 480 | { |
| 481 | if ((pci_probe & PCI_PROBE_BIOS) | 481 | if ((pci_probe & PCI_PROBE_BIOS) |
| 482 | && ((raw_pci_ops = pci_find_bios()))) { | 482 | && ((raw_pci_ops = pci_find_bios()))) { |
| 483 | pci_probe |= PCI_BIOS_SORT; | 483 | pci_probe |= PCI_BIOS_SORT; |
| 484 | pci_bios_present = 1; | 484 | pci_bios_present = 1; |
| 485 | } | 485 | } |
| 486 | return 0; | ||
| 487 | } | 486 | } |
| 488 | 487 | ||
| 489 | arch_initcall(pci_pcbios_init); | ||
diff --git a/arch/i386/pci/pci.h b/arch/i386/pci/pci.h index f550781ec310..12035e29108b 100644 --- a/arch/i386/pci/pci.h +++ b/arch/i386/pci/pci.h | |||
| @@ -80,4 +80,7 @@ extern int pci_conf1_write(unsigned int seg, unsigned int bus, | |||
| 80 | extern int pci_conf1_read(unsigned int seg, unsigned int bus, | 80 | extern int pci_conf1_read(unsigned int seg, unsigned int bus, |
| 81 | unsigned int devfn, int reg, int len, u32 *value); | 81 | unsigned int devfn, int reg, int len, u32 *value); |
| 82 | 82 | ||
| 83 | extern void pci_direct_init(void); | ||
| 84 | extern void pci_pcbios_init(void); | ||
| 85 | extern void pci_mmcfg_init(void); | ||
| 83 | 86 | ||
