diff options
Diffstat (limited to 'arch')
47 files changed, 1082 insertions, 581 deletions
diff --git a/arch/mips/configs/ip27_defconfig b/arch/mips/configs/ip27_defconfig index f2baea3039bb..0208723adf28 100644 --- a/arch/mips/configs/ip27_defconfig +++ b/arch/mips/configs/ip27_defconfig | |||
@@ -512,7 +512,7 @@ CONFIG_MD_LINEAR=m | |||
512 | CONFIG_MD_RAID0=y | 512 | CONFIG_MD_RAID0=y |
513 | CONFIG_MD_RAID1=y | 513 | CONFIG_MD_RAID1=y |
514 | CONFIG_MD_RAID10=m | 514 | CONFIG_MD_RAID10=m |
515 | CONFIG_MD_RAID456=m | 515 | CONFIG_MD_RAID456=y |
516 | CONFIG_MD_RAID5_RESHAPE=y | 516 | CONFIG_MD_RAID5_RESHAPE=y |
517 | CONFIG_MD_MULTIPATH=m | 517 | CONFIG_MD_MULTIPATH=m |
518 | CONFIG_MD_FAULTY=m | 518 | CONFIG_MD_FAULTY=m |
diff --git a/arch/mips/configs/jmr3927_defconfig b/arch/mips/configs/jmr3927_defconfig index 9d5bd2a0af3d..5380f1f582d9 100644 --- a/arch/mips/configs/jmr3927_defconfig +++ b/arch/mips/configs/jmr3927_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.26-rc9 | 3 | # Linux kernel version: 2.6.29-rc7 |
4 | # Fri Jul 11 23:01:36 2008 | 4 | # Wed Mar 4 23:07:16 2009 |
5 | # | 5 | # |
6 | CONFIG_MIPS=y | 6 | CONFIG_MIPS=y |
7 | 7 | ||
@@ -18,8 +18,10 @@ CONFIG_MIPS=y | |||
18 | # CONFIG_LEMOTE_FULONG is not set | 18 | # CONFIG_LEMOTE_FULONG is not set |
19 | # CONFIG_MIPS_MALTA is not set | 19 | # CONFIG_MIPS_MALTA is not set |
20 | # CONFIG_MIPS_SIM is not set | 20 | # CONFIG_MIPS_SIM is not set |
21 | # CONFIG_MARKEINS is not set | 21 | # CONFIG_MACH_EMMA is not set |
22 | # CONFIG_MACH_VR41XX is not set | 22 | # CONFIG_MACH_VR41XX is not set |
23 | # CONFIG_NXP_STB220 is not set | ||
24 | # CONFIG_NXP_STB225 is not set | ||
23 | # CONFIG_PNX8550_JBS is not set | 25 | # CONFIG_PNX8550_JBS is not set |
24 | # CONFIG_PNX8550_STB810 is not set | 26 | # CONFIG_PNX8550_STB810 is not set |
25 | # CONFIG_PMC_MSP is not set | 27 | # CONFIG_PMC_MSP is not set |
@@ -39,7 +41,11 @@ CONFIG_MIPS=y | |||
39 | # CONFIG_SNI_RM is not set | 41 | # CONFIG_SNI_RM is not set |
40 | CONFIG_MACH_TX39XX=y | 42 | CONFIG_MACH_TX39XX=y |
41 | # CONFIG_MACH_TX49XX is not set | 43 | # CONFIG_MACH_TX49XX is not set |
44 | # CONFIG_MIKROTIK_RB532 is not set | ||
42 | # CONFIG_WR_PPMC is not set | 45 | # CONFIG_WR_PPMC is not set |
46 | # CONFIG_CAVIUM_OCTEON_SIMULATOR is not set | ||
47 | # CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set | ||
48 | CONFIG_MACH_TXX9=y | ||
43 | CONFIG_TOSHIBA_JMR3927=y | 49 | CONFIG_TOSHIBA_JMR3927=y |
44 | CONFIG_SOC_TX3927=y | 50 | CONFIG_SOC_TX3927=y |
45 | # CONFIG_TOSHIBA_FPCIB0 is not set | 51 | # CONFIG_TOSHIBA_FPCIB0 is not set |
@@ -54,12 +60,14 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
54 | CONFIG_GENERIC_CLOCKEVENTS=y | 60 | CONFIG_GENERIC_CLOCKEVENTS=y |
55 | CONFIG_GENERIC_TIME=y | 61 | CONFIG_GENERIC_TIME=y |
56 | CONFIG_GENERIC_CMOS_UPDATE=y | 62 | CONFIG_GENERIC_CMOS_UPDATE=y |
57 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 63 | CONFIG_SCHED_OMIT_FRAME_POINTER=y |
58 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 64 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
59 | CONFIG_CEVT_TXX9=y | 65 | CONFIG_CEVT_TXX9=y |
60 | CONFIG_GPIO_TXX9=y | 66 | CONFIG_GPIO_TXX9=y |
61 | CONFIG_DMA_NONCOHERENT=y | 67 | CONFIG_DMA_NONCOHERENT=y |
62 | CONFIG_DMA_NEED_PCI_MAP_STATE=y | 68 | CONFIG_DMA_NEED_PCI_MAP_STATE=y |
69 | CONFIG_EARLY_PRINTK=y | ||
70 | CONFIG_SYS_HAS_EARLY_PRINTK=y | ||
63 | # CONFIG_HOTPLUG_CPU is not set | 71 | # CONFIG_HOTPLUG_CPU is not set |
64 | # CONFIG_NO_IOPORT is not set | 72 | # CONFIG_NO_IOPORT is not set |
65 | CONFIG_GENERIC_GPIO=y | 73 | CONFIG_GENERIC_GPIO=y |
@@ -87,6 +95,7 @@ CONFIG_CPU_TX39XX=y | |||
87 | # CONFIG_CPU_TX49XX is not set | 95 | # CONFIG_CPU_TX49XX is not set |
88 | # CONFIG_CPU_R5000 is not set | 96 | # CONFIG_CPU_R5000 is not set |
89 | # CONFIG_CPU_R5432 is not set | 97 | # CONFIG_CPU_R5432 is not set |
98 | # CONFIG_CPU_R5500 is not set | ||
90 | # CONFIG_CPU_R6000 is not set | 99 | # CONFIG_CPU_R6000 is not set |
91 | # CONFIG_CPU_NEVADA is not set | 100 | # CONFIG_CPU_NEVADA is not set |
92 | # CONFIG_CPU_R8000 is not set | 101 | # CONFIG_CPU_R8000 is not set |
@@ -94,6 +103,7 @@ CONFIG_CPU_TX39XX=y | |||
94 | # CONFIG_CPU_RM7000 is not set | 103 | # CONFIG_CPU_RM7000 is not set |
95 | # CONFIG_CPU_RM9000 is not set | 104 | # CONFIG_CPU_RM9000 is not set |
96 | # CONFIG_CPU_SB1 is not set | 105 | # CONFIG_CPU_SB1 is not set |
106 | # CONFIG_CPU_CAVIUM_OCTEON is not set | ||
97 | CONFIG_SYS_HAS_CPU_TX39XX=y | 107 | CONFIG_SYS_HAS_CPU_TX39XX=y |
98 | CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y | 108 | CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y |
99 | CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y | 109 | CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y |
@@ -117,14 +127,12 @@ CONFIG_ARCH_FLATMEM_ENABLE=y | |||
117 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 127 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
118 | CONFIG_FLATMEM=y | 128 | CONFIG_FLATMEM=y |
119 | CONFIG_FLAT_NODE_MEM_MAP=y | 129 | CONFIG_FLAT_NODE_MEM_MAP=y |
120 | # CONFIG_SPARSEMEM_STATIC is not set | ||
121 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
122 | CONFIG_PAGEFLAGS_EXTENDED=y | 130 | CONFIG_PAGEFLAGS_EXTENDED=y |
123 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 131 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
124 | # CONFIG_RESOURCES_64BIT is not set | 132 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
125 | CONFIG_ZONE_DMA_FLAG=0 | 133 | CONFIG_ZONE_DMA_FLAG=0 |
126 | CONFIG_VIRT_TO_BUS=y | 134 | CONFIG_VIRT_TO_BUS=y |
127 | # CONFIG_TICK_ONESHOT is not set | 135 | CONFIG_UNEVICTABLE_LRU=y |
128 | # CONFIG_NO_HZ is not set | 136 | # CONFIG_NO_HZ is not set |
129 | # CONFIG_HIGH_RES_TIMERS is not set | 137 | # CONFIG_HIGH_RES_TIMERS is not set |
130 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | 138 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |
@@ -159,6 +167,15 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
159 | # CONFIG_BSD_PROCESS_ACCT is not set | 167 | # CONFIG_BSD_PROCESS_ACCT is not set |
160 | # CONFIG_TASKSTATS is not set | 168 | # CONFIG_TASKSTATS is not set |
161 | # CONFIG_AUDIT is not set | 169 | # CONFIG_AUDIT is not set |
170 | |||
171 | # | ||
172 | # RCU Subsystem | ||
173 | # | ||
174 | CONFIG_CLASSIC_RCU=y | ||
175 | # CONFIG_TREE_RCU is not set | ||
176 | # CONFIG_PREEMPT_RCU is not set | ||
177 | # CONFIG_TREE_RCU_TRACE is not set | ||
178 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
162 | # CONFIG_IKCONFIG is not set | 179 | # CONFIG_IKCONFIG is not set |
163 | CONFIG_LOG_BUF_SHIFT=14 | 180 | CONFIG_LOG_BUF_SHIFT=14 |
164 | # CONFIG_CGROUPS is not set | 181 | # CONFIG_CGROUPS is not set |
@@ -171,7 +188,6 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
171 | CONFIG_SYSCTL=y | 188 | CONFIG_SYSCTL=y |
172 | CONFIG_EMBEDDED=y | 189 | CONFIG_EMBEDDED=y |
173 | CONFIG_SYSCTL_SYSCALL=y | 190 | CONFIG_SYSCTL_SYSCALL=y |
174 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
175 | CONFIG_KALLSYMS=y | 191 | CONFIG_KALLSYMS=y |
176 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 192 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
177 | # CONFIG_HOTPLUG is not set | 193 | # CONFIG_HOTPLUG is not set |
@@ -188,26 +204,23 @@ CONFIG_SIGNALFD=y | |||
188 | CONFIG_TIMERFD=y | 204 | CONFIG_TIMERFD=y |
189 | CONFIG_EVENTFD=y | 205 | CONFIG_EVENTFD=y |
190 | CONFIG_SHMEM=y | 206 | CONFIG_SHMEM=y |
207 | CONFIG_AIO=y | ||
191 | CONFIG_VM_EVENT_COUNTERS=y | 208 | CONFIG_VM_EVENT_COUNTERS=y |
209 | CONFIG_PCI_QUIRKS=y | ||
192 | CONFIG_SLAB=y | 210 | CONFIG_SLAB=y |
193 | # CONFIG_SLUB is not set | 211 | # CONFIG_SLUB is not set |
194 | # CONFIG_SLOB is not set | 212 | # CONFIG_SLOB is not set |
195 | # CONFIG_PROFILING is not set | 213 | # CONFIG_PROFILING is not set |
196 | # CONFIG_MARKERS is not set | ||
197 | CONFIG_HAVE_OPROFILE=y | 214 | CONFIG_HAVE_OPROFILE=y |
198 | # CONFIG_HAVE_KPROBES is not set | 215 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set |
199 | # CONFIG_HAVE_KRETPROBES is not set | ||
200 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
201 | CONFIG_PROC_PAGE_MONITOR=y | ||
202 | CONFIG_SLABINFO=y | 216 | CONFIG_SLABINFO=y |
203 | CONFIG_RT_MUTEXES=y | 217 | CONFIG_RT_MUTEXES=y |
204 | # CONFIG_TINY_SHMEM is not set | ||
205 | CONFIG_BASE_SMALL=0 | 218 | CONFIG_BASE_SMALL=0 |
206 | # CONFIG_MODULES is not set | 219 | # CONFIG_MODULES is not set |
207 | CONFIG_BLOCK=y | 220 | CONFIG_BLOCK=y |
208 | # CONFIG_LBD is not set | 221 | # CONFIG_LBD is not set |
209 | # CONFIG_BLK_DEV_IO_TRACE is not set | 222 | # CONFIG_BLK_DEV_IO_TRACE is not set |
210 | # CONFIG_LSF is not set | 223 | # CONFIG_BLK_DEV_INTEGRITY is not set |
211 | 224 | ||
212 | # | 225 | # |
213 | # IO Schedulers | 226 | # IO Schedulers |
@@ -221,7 +234,7 @@ CONFIG_IOSCHED_CFQ=y | |||
221 | CONFIG_DEFAULT_CFQ=y | 234 | CONFIG_DEFAULT_CFQ=y |
222 | # CONFIG_DEFAULT_NOOP is not set | 235 | # CONFIG_DEFAULT_NOOP is not set |
223 | CONFIG_DEFAULT_IOSCHED="cfq" | 236 | CONFIG_DEFAULT_IOSCHED="cfq" |
224 | CONFIG_CLASSIC_RCU=y | 237 | # CONFIG_FREEZER is not set |
225 | 238 | ||
226 | # | 239 | # |
227 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) | 240 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) |
@@ -231,12 +244,15 @@ CONFIG_PCI=y | |||
231 | CONFIG_PCI_DOMAINS=y | 244 | CONFIG_PCI_DOMAINS=y |
232 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 245 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
233 | CONFIG_PCI_LEGACY=y | 246 | CONFIG_PCI_LEGACY=y |
247 | # CONFIG_PCI_STUB is not set | ||
234 | CONFIG_MMU=y | 248 | CONFIG_MMU=y |
235 | 249 | ||
236 | # | 250 | # |
237 | # Executable file formats | 251 | # Executable file formats |
238 | # | 252 | # |
239 | CONFIG_BINFMT_ELF=y | 253 | CONFIG_BINFMT_ELF=y |
254 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
255 | # CONFIG_HAVE_AOUT is not set | ||
240 | # CONFIG_BINFMT_MISC is not set | 256 | # CONFIG_BINFMT_MISC is not set |
241 | CONFIG_TRAD_SIGNALS=y | 257 | CONFIG_TRAD_SIGNALS=y |
242 | 258 | ||
@@ -245,15 +261,12 @@ CONFIG_TRAD_SIGNALS=y | |||
245 | # | 261 | # |
246 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 262 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
247 | # CONFIG_PM is not set | 263 | # CONFIG_PM is not set |
248 | |||
249 | # | ||
250 | # Networking | ||
251 | # | ||
252 | CONFIG_NET=y | 264 | CONFIG_NET=y |
253 | 265 | ||
254 | # | 266 | # |
255 | # Networking options | 267 | # Networking options |
256 | # | 268 | # |
269 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
257 | CONFIG_PACKET=y | 270 | CONFIG_PACKET=y |
258 | # CONFIG_PACKET_MMAP is not set | 271 | # CONFIG_PACKET_MMAP is not set |
259 | CONFIG_UNIX=y | 272 | CONFIG_UNIX=y |
@@ -293,6 +306,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
293 | # CONFIG_IPX is not set | 306 | # CONFIG_IPX is not set |
294 | # CONFIG_ATALK is not set | 307 | # CONFIG_ATALK is not set |
295 | # CONFIG_NET_SCHED is not set | 308 | # CONFIG_NET_SCHED is not set |
309 | # CONFIG_DCB is not set | ||
296 | 310 | ||
297 | # | 311 | # |
298 | # Network testing | 312 | # Network testing |
@@ -302,14 +316,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
302 | # CONFIG_CAN is not set | 316 | # CONFIG_CAN is not set |
303 | # CONFIG_IRDA is not set | 317 | # CONFIG_IRDA is not set |
304 | # CONFIG_BT is not set | 318 | # CONFIG_BT is not set |
305 | 319 | # CONFIG_PHONET is not set | |
306 | # | 320 | # CONFIG_WIRELESS is not set |
307 | # Wireless | 321 | # CONFIG_WIMAX is not set |
308 | # | ||
309 | # CONFIG_CFG80211 is not set | ||
310 | # CONFIG_WIRELESS_EXT is not set | ||
311 | # CONFIG_MAC80211 is not set | ||
312 | # CONFIG_IEEE80211 is not set | ||
313 | # CONFIG_RFKILL is not set | 322 | # CONFIG_RFKILL is not set |
314 | 323 | ||
315 | # | 324 | # |
@@ -323,7 +332,89 @@ CONFIG_STANDALONE=y | |||
323 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 332 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
324 | # CONFIG_SYS_HYPERVISOR is not set | 333 | # CONFIG_SYS_HYPERVISOR is not set |
325 | # CONFIG_CONNECTOR is not set | 334 | # CONFIG_CONNECTOR is not set |
326 | # CONFIG_MTD is not set | 335 | CONFIG_MTD=y |
336 | # CONFIG_MTD_DEBUG is not set | ||
337 | # CONFIG_MTD_CONCAT is not set | ||
338 | CONFIG_MTD_PARTITIONS=y | ||
339 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
340 | CONFIG_MTD_CMDLINE_PARTS=y | ||
341 | # CONFIG_MTD_AR7_PARTS is not set | ||
342 | |||
343 | # | ||
344 | # User Modules And Translation Layers | ||
345 | # | ||
346 | CONFIG_MTD_CHAR=y | ||
347 | # CONFIG_MTD_BLKDEVS is not set | ||
348 | # CONFIG_MTD_BLOCK is not set | ||
349 | # CONFIG_MTD_BLOCK_RO is not set | ||
350 | # CONFIG_FTL is not set | ||
351 | # CONFIG_NFTL is not set | ||
352 | # CONFIG_INFTL is not set | ||
353 | # CONFIG_RFD_FTL is not set | ||
354 | # CONFIG_SSFDC is not set | ||
355 | # CONFIG_MTD_OOPS is not set | ||
356 | |||
357 | # | ||
358 | # RAM/ROM/Flash chip drivers | ||
359 | # | ||
360 | CONFIG_MTD_CFI=y | ||
361 | CONFIG_MTD_JEDECPROBE=y | ||
362 | CONFIG_MTD_GEN_PROBE=y | ||
363 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
364 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
365 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
366 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
367 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
368 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
369 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
370 | CONFIG_MTD_CFI_I1=y | ||
371 | CONFIG_MTD_CFI_I2=y | ||
372 | # CONFIG_MTD_CFI_I4 is not set | ||
373 | # CONFIG_MTD_CFI_I8 is not set | ||
374 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
375 | CONFIG_MTD_CFI_AMDSTD=y | ||
376 | # CONFIG_MTD_CFI_STAA is not set | ||
377 | CONFIG_MTD_CFI_UTIL=y | ||
378 | # CONFIG_MTD_RAM is not set | ||
379 | # CONFIG_MTD_ROM is not set | ||
380 | # CONFIG_MTD_ABSENT is not set | ||
381 | |||
382 | # | ||
383 | # Mapping drivers for chip access | ||
384 | # | ||
385 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
386 | CONFIG_MTD_PHYSMAP=y | ||
387 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
388 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
389 | # CONFIG_MTD_PLATRAM is not set | ||
390 | |||
391 | # | ||
392 | # Self-contained MTD device drivers | ||
393 | # | ||
394 | # CONFIG_MTD_PMC551 is not set | ||
395 | # CONFIG_MTD_SLRAM is not set | ||
396 | # CONFIG_MTD_PHRAM is not set | ||
397 | # CONFIG_MTD_MTDRAM is not set | ||
398 | # CONFIG_MTD_BLOCK2MTD is not set | ||
399 | |||
400 | # | ||
401 | # Disk-On-Chip Device Drivers | ||
402 | # | ||
403 | # CONFIG_MTD_DOC2000 is not set | ||
404 | # CONFIG_MTD_DOC2001 is not set | ||
405 | # CONFIG_MTD_DOC2001PLUS is not set | ||
406 | # CONFIG_MTD_NAND is not set | ||
407 | # CONFIG_MTD_ONENAND is not set | ||
408 | |||
409 | # | ||
410 | # LPDDR flash memory drivers | ||
411 | # | ||
412 | # CONFIG_MTD_LPDDR is not set | ||
413 | |||
414 | # | ||
415 | # UBI - Unsorted block images | ||
416 | # | ||
417 | # CONFIG_MTD_UBI is not set | ||
327 | # CONFIG_PARPORT is not set | 418 | # CONFIG_PARPORT is not set |
328 | CONFIG_BLK_DEV=y | 419 | CONFIG_BLK_DEV=y |
329 | # CONFIG_BLK_CPQ_DA is not set | 420 | # CONFIG_BLK_CPQ_DA is not set |
@@ -336,6 +427,7 @@ CONFIG_BLK_DEV=y | |||
336 | # CONFIG_BLK_DEV_RAM is not set | 427 | # CONFIG_BLK_DEV_RAM is not set |
337 | # CONFIG_CDROM_PKTCDVD is not set | 428 | # CONFIG_CDROM_PKTCDVD is not set |
338 | # CONFIG_ATA_OVER_ETH is not set | 429 | # CONFIG_ATA_OVER_ETH is not set |
430 | # CONFIG_BLK_DEV_HD is not set | ||
339 | # CONFIG_MISC_DEVICES is not set | 431 | # CONFIG_MISC_DEVICES is not set |
340 | CONFIG_HAVE_IDE=y | 432 | CONFIG_HAVE_IDE=y |
341 | # CONFIG_IDE is not set | 433 | # CONFIG_IDE is not set |
@@ -361,7 +453,6 @@ CONFIG_HAVE_IDE=y | |||
361 | # CONFIG_IEEE1394 is not set | 453 | # CONFIG_IEEE1394 is not set |
362 | # CONFIG_I2O is not set | 454 | # CONFIG_I2O is not set |
363 | CONFIG_NETDEVICES=y | 455 | CONFIG_NETDEVICES=y |
364 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
365 | # CONFIG_DUMMY is not set | 456 | # CONFIG_DUMMY is not set |
366 | # CONFIG_BONDING is not set | 457 | # CONFIG_BONDING is not set |
367 | # CONFIG_EQUALIZER is not set | 458 | # CONFIG_EQUALIZER is not set |
@@ -383,6 +474,9 @@ CONFIG_PHYLIB=y | |||
383 | # CONFIG_BROADCOM_PHY is not set | 474 | # CONFIG_BROADCOM_PHY is not set |
384 | # CONFIG_ICPLUS_PHY is not set | 475 | # CONFIG_ICPLUS_PHY is not set |
385 | # CONFIG_REALTEK_PHY is not set | 476 | # CONFIG_REALTEK_PHY is not set |
477 | # CONFIG_NATIONAL_PHY is not set | ||
478 | # CONFIG_STE10XP is not set | ||
479 | # CONFIG_LSI_ET1011C_PHY is not set | ||
386 | # CONFIG_FIXED_PHY is not set | 480 | # CONFIG_FIXED_PHY is not set |
387 | # CONFIG_MDIO_BITBANG is not set | 481 | # CONFIG_MDIO_BITBANG is not set |
388 | CONFIG_NET_ETHERNET=y | 482 | CONFIG_NET_ETHERNET=y |
@@ -392,6 +486,7 @@ CONFIG_NET_ETHERNET=y | |||
392 | # CONFIG_SUNGEM is not set | 486 | # CONFIG_SUNGEM is not set |
393 | # CONFIG_CASSINI is not set | 487 | # CONFIG_CASSINI is not set |
394 | # CONFIG_NET_VENDOR_3COM is not set | 488 | # CONFIG_NET_VENDOR_3COM is not set |
489 | # CONFIG_SMC91X is not set | ||
395 | # CONFIG_DM9000 is not set | 490 | # CONFIG_DM9000 is not set |
396 | # CONFIG_NET_TULIP is not set | 491 | # CONFIG_NET_TULIP is not set |
397 | # CONFIG_HP100 is not set | 492 | # CONFIG_HP100 is not set |
@@ -399,6 +494,9 @@ CONFIG_NET_ETHERNET=y | |||
399 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 494 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
400 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 495 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
401 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 496 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
497 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
498 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
499 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
402 | CONFIG_NET_PCI=y | 500 | CONFIG_NET_PCI=y |
403 | # CONFIG_PCNET32 is not set | 501 | # CONFIG_PCNET32 is not set |
404 | # CONFIG_AMD8111_ETH is not set | 502 | # CONFIG_AMD8111_ETH is not set |
@@ -406,7 +504,6 @@ CONFIG_NET_PCI=y | |||
406 | # CONFIG_B44 is not set | 504 | # CONFIG_B44 is not set |
407 | # CONFIG_FORCEDETH is not set | 505 | # CONFIG_FORCEDETH is not set |
408 | CONFIG_TC35815=y | 506 | CONFIG_TC35815=y |
409 | # CONFIG_EEPRO100 is not set | ||
410 | # CONFIG_E100 is not set | 507 | # CONFIG_E100 is not set |
411 | # CONFIG_FEALNX is not set | 508 | # CONFIG_FEALNX is not set |
412 | # CONFIG_NATSEMI is not set | 509 | # CONFIG_NATSEMI is not set |
@@ -415,9 +512,11 @@ CONFIG_TC35815=y | |||
415 | # CONFIG_R6040 is not set | 512 | # CONFIG_R6040 is not set |
416 | # CONFIG_SIS900 is not set | 513 | # CONFIG_SIS900 is not set |
417 | # CONFIG_EPIC100 is not set | 514 | # CONFIG_EPIC100 is not set |
515 | # CONFIG_SMSC9420 is not set | ||
418 | # CONFIG_SUNDANCE is not set | 516 | # CONFIG_SUNDANCE is not set |
419 | # CONFIG_TLAN is not set | 517 | # CONFIG_TLAN is not set |
420 | # CONFIG_VIA_RHINE is not set | 518 | # CONFIG_VIA_RHINE is not set |
519 | # CONFIG_ATL2 is not set | ||
421 | # CONFIG_NETDEV_1000 is not set | 520 | # CONFIG_NETDEV_1000 is not set |
422 | # CONFIG_NETDEV_10000 is not set | 521 | # CONFIG_NETDEV_10000 is not set |
423 | # CONFIG_TR is not set | 522 | # CONFIG_TR is not set |
@@ -428,6 +527,10 @@ CONFIG_TC35815=y | |||
428 | # CONFIG_WLAN_PRE80211 is not set | 527 | # CONFIG_WLAN_PRE80211 is not set |
429 | # CONFIG_WLAN_80211 is not set | 528 | # CONFIG_WLAN_80211 is not set |
430 | # CONFIG_IWLWIFI_LEDS is not set | 529 | # CONFIG_IWLWIFI_LEDS is not set |
530 | |||
531 | # | ||
532 | # Enable WiMAX (Networking options) to see the WiMAX drivers | ||
533 | # | ||
431 | # CONFIG_WAN is not set | 534 | # CONFIG_WAN is not set |
432 | # CONFIG_FDDI is not set | 535 | # CONFIG_FDDI is not set |
433 | # CONFIG_PPP is not set | 536 | # CONFIG_PPP is not set |
@@ -440,27 +543,7 @@ CONFIG_TC35815=y | |||
440 | # | 543 | # |
441 | # Input device support | 544 | # Input device support |
442 | # | 545 | # |
443 | CONFIG_INPUT=y | 546 | # CONFIG_INPUT is not set |
444 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
445 | # CONFIG_INPUT_POLLDEV is not set | ||
446 | |||
447 | # | ||
448 | # Userland interfaces | ||
449 | # | ||
450 | # CONFIG_INPUT_MOUSEDEV is not set | ||
451 | # CONFIG_INPUT_JOYDEV is not set | ||
452 | # CONFIG_INPUT_EVDEV is not set | ||
453 | # CONFIG_INPUT_EVBUG is not set | ||
454 | |||
455 | # | ||
456 | # Input Device Drivers | ||
457 | # | ||
458 | # CONFIG_INPUT_KEYBOARD is not set | ||
459 | # CONFIG_INPUT_MOUSE is not set | ||
460 | # CONFIG_INPUT_JOYSTICK is not set | ||
461 | # CONFIG_INPUT_TABLET is not set | ||
462 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
463 | # CONFIG_INPUT_MISC is not set | ||
464 | 547 | ||
465 | # | 548 | # |
466 | # Hardware I/O ports | 549 | # Hardware I/O ports |
@@ -517,10 +600,11 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
517 | CONFIG_DEVPORT=y | 600 | CONFIG_DEVPORT=y |
518 | # CONFIG_I2C is not set | 601 | # CONFIG_I2C is not set |
519 | # CONFIG_SPI is not set | 602 | # CONFIG_SPI is not set |
520 | CONFIG_HAVE_GPIO_LIB=y | 603 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
604 | CONFIG_GPIOLIB=y | ||
521 | 605 | ||
522 | # | 606 | # |
523 | # GPIO Support | 607 | # Memory mapped GPIO expanders: |
524 | # | 608 | # |
525 | 609 | ||
526 | # | 610 | # |
@@ -528,6 +612,11 @@ CONFIG_HAVE_GPIO_LIB=y | |||
528 | # | 612 | # |
529 | 613 | ||
530 | # | 614 | # |
615 | # PCI GPIO expanders: | ||
616 | # | ||
617 | # CONFIG_GPIO_BT8XX is not set | ||
618 | |||
619 | # | ||
531 | # SPI GPIO expanders: | 620 | # SPI GPIO expanders: |
532 | # | 621 | # |
533 | # CONFIG_W1 is not set | 622 | # CONFIG_W1 is not set |
@@ -542,6 +631,7 @@ CONFIG_WATCHDOG=y | |||
542 | # Watchdog Device Drivers | 631 | # Watchdog Device Drivers |
543 | # | 632 | # |
544 | # CONFIG_SOFT_WATCHDOG is not set | 633 | # CONFIG_SOFT_WATCHDOG is not set |
634 | # CONFIG_ALIM7101_WDT is not set | ||
545 | CONFIG_TXX9_WDT=y | 635 | CONFIG_TXX9_WDT=y |
546 | 636 | ||
547 | # | 637 | # |
@@ -549,18 +639,21 @@ CONFIG_TXX9_WDT=y | |||
549 | # | 639 | # |
550 | # CONFIG_PCIPCWATCHDOG is not set | 640 | # CONFIG_PCIPCWATCHDOG is not set |
551 | # CONFIG_WDTPCI is not set | 641 | # CONFIG_WDTPCI is not set |
642 | CONFIG_SSB_POSSIBLE=y | ||
552 | 643 | ||
553 | # | 644 | # |
554 | # Sonics Silicon Backplane | 645 | # Sonics Silicon Backplane |
555 | # | 646 | # |
556 | CONFIG_SSB_POSSIBLE=y | ||
557 | # CONFIG_SSB is not set | 647 | # CONFIG_SSB is not set |
558 | 648 | ||
559 | # | 649 | # |
560 | # Multifunction device drivers | 650 | # Multifunction device drivers |
561 | # | 651 | # |
652 | # CONFIG_MFD_CORE is not set | ||
562 | # CONFIG_MFD_SM501 is not set | 653 | # CONFIG_MFD_SM501 is not set |
563 | # CONFIG_HTC_PASIC3 is not set | 654 | # CONFIG_HTC_PASIC3 is not set |
655 | # CONFIG_MFD_TMIO is not set | ||
656 | # CONFIG_REGULATOR is not set | ||
564 | 657 | ||
565 | # | 658 | # |
566 | # Multimedia devices | 659 | # Multimedia devices |
@@ -591,16 +684,26 @@ CONFIG_SSB_POSSIBLE=y | |||
591 | # Display device support | 684 | # Display device support |
592 | # | 685 | # |
593 | # CONFIG_DISPLAY_SUPPORT is not set | 686 | # CONFIG_DISPLAY_SUPPORT is not set |
594 | |||
595 | # | ||
596 | # Sound | ||
597 | # | ||
598 | # CONFIG_SOUND is not set | 687 | # CONFIG_SOUND is not set |
599 | # CONFIG_HID_SUPPORT is not set | ||
600 | # CONFIG_USB_SUPPORT is not set | 688 | # CONFIG_USB_SUPPORT is not set |
601 | # CONFIG_MMC is not set | 689 | # CONFIG_MMC is not set |
602 | # CONFIG_MEMSTICK is not set | 690 | # CONFIG_MEMSTICK is not set |
603 | # CONFIG_NEW_LEDS is not set | 691 | CONFIG_NEW_LEDS=y |
692 | CONFIG_LEDS_CLASS=y | ||
693 | |||
694 | # | ||
695 | # LED drivers | ||
696 | # | ||
697 | CONFIG_LEDS_GPIO=y | ||
698 | |||
699 | # | ||
700 | # LED Triggers | ||
701 | # | ||
702 | CONFIG_LEDS_TRIGGERS=y | ||
703 | # CONFIG_LEDS_TRIGGER_TIMER is not set | ||
704 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
705 | # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set | ||
706 | # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set | ||
604 | # CONFIG_ACCESSIBILITY is not set | 707 | # CONFIG_ACCESSIBILITY is not set |
605 | # CONFIG_INFINIBAND is not set | 708 | # CONFIG_INFINIBAND is not set |
606 | CONFIG_RTC_LIB=y | 709 | CONFIG_RTC_LIB=y |
@@ -626,27 +729,34 @@ CONFIG_RTC_INTF_DEV=y | |||
626 | # Platform RTC drivers | 729 | # Platform RTC drivers |
627 | # | 730 | # |
628 | # CONFIG_RTC_DRV_CMOS is not set | 731 | # CONFIG_RTC_DRV_CMOS is not set |
732 | # CONFIG_RTC_DRV_DS1286 is not set | ||
629 | # CONFIG_RTC_DRV_DS1511 is not set | 733 | # CONFIG_RTC_DRV_DS1511 is not set |
630 | # CONFIG_RTC_DRV_DS1553 is not set | 734 | # CONFIG_RTC_DRV_DS1553 is not set |
631 | CONFIG_RTC_DRV_DS1742=y | 735 | CONFIG_RTC_DRV_DS1742=y |
632 | # CONFIG_RTC_DRV_STK17TA8 is not set | 736 | # CONFIG_RTC_DRV_STK17TA8 is not set |
633 | # CONFIG_RTC_DRV_M48T86 is not set | 737 | # CONFIG_RTC_DRV_M48T86 is not set |
738 | # CONFIG_RTC_DRV_M48T35 is not set | ||
634 | # CONFIG_RTC_DRV_M48T59 is not set | 739 | # CONFIG_RTC_DRV_M48T59 is not set |
740 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
635 | # CONFIG_RTC_DRV_V3020 is not set | 741 | # CONFIG_RTC_DRV_V3020 is not set |
636 | 742 | ||
637 | # | 743 | # |
638 | # on-CPU RTC drivers | 744 | # on-CPU RTC drivers |
639 | # | 745 | # |
746 | # CONFIG_DMADEVICES is not set | ||
640 | # CONFIG_UIO is not set | 747 | # CONFIG_UIO is not set |
748 | # CONFIG_STAGING is not set | ||
641 | 749 | ||
642 | # | 750 | # |
643 | # File systems | 751 | # File systems |
644 | # | 752 | # |
645 | # CONFIG_EXT2_FS is not set | 753 | # CONFIG_EXT2_FS is not set |
646 | # CONFIG_EXT3_FS is not set | 754 | # CONFIG_EXT3_FS is not set |
755 | # CONFIG_EXT4_FS is not set | ||
647 | # CONFIG_REISERFS_FS is not set | 756 | # CONFIG_REISERFS_FS is not set |
648 | # CONFIG_JFS_FS is not set | 757 | # CONFIG_JFS_FS is not set |
649 | # CONFIG_FS_POSIX_ACL is not set | 758 | # CONFIG_FS_POSIX_ACL is not set |
759 | CONFIG_FILE_LOCKING=y | ||
650 | # CONFIG_XFS_FS is not set | 760 | # CONFIG_XFS_FS is not set |
651 | # CONFIG_OCFS2_FS is not set | 761 | # CONFIG_OCFS2_FS is not set |
652 | CONFIG_DNOTIFY=y | 762 | CONFIG_DNOTIFY=y |
@@ -676,28 +786,17 @@ CONFIG_INOTIFY_USER=y | |||
676 | CONFIG_PROC_FS=y | 786 | CONFIG_PROC_FS=y |
677 | CONFIG_PROC_KCORE=y | 787 | CONFIG_PROC_KCORE=y |
678 | CONFIG_PROC_SYSCTL=y | 788 | CONFIG_PROC_SYSCTL=y |
789 | CONFIG_PROC_PAGE_MONITOR=y | ||
679 | CONFIG_SYSFS=y | 790 | CONFIG_SYSFS=y |
680 | # CONFIG_TMPFS is not set | 791 | # CONFIG_TMPFS is not set |
681 | # CONFIG_HUGETLB_PAGE is not set | 792 | # CONFIG_HUGETLB_PAGE is not set |
682 | # CONFIG_CONFIGFS_FS is not set | 793 | # CONFIG_CONFIGFS_FS is not set |
683 | 794 | # CONFIG_MISC_FILESYSTEMS is not set | |
684 | # | ||
685 | # Miscellaneous filesystems | ||
686 | # | ||
687 | # CONFIG_HFSPLUS_FS is not set | ||
688 | # CONFIG_CRAMFS is not set | ||
689 | # CONFIG_VXFS_FS is not set | ||
690 | # CONFIG_MINIX_FS is not set | ||
691 | # CONFIG_HPFS_FS is not set | ||
692 | # CONFIG_QNX4FS_FS is not set | ||
693 | # CONFIG_ROMFS_FS is not set | ||
694 | # CONFIG_SYSV_FS is not set | ||
695 | # CONFIG_UFS_FS is not set | ||
696 | CONFIG_NETWORK_FILESYSTEMS=y | 795 | CONFIG_NETWORK_FILESYSTEMS=y |
697 | CONFIG_NFS_FS=y | 796 | CONFIG_NFS_FS=y |
698 | # CONFIG_NFS_V3 is not set | 797 | # CONFIG_NFS_V3 is not set |
699 | # CONFIG_NFSD is not set | ||
700 | CONFIG_ROOT_NFS=y | 798 | CONFIG_ROOT_NFS=y |
799 | # CONFIG_NFSD is not set | ||
701 | CONFIG_LOCKD=y | 800 | CONFIG_LOCKD=y |
702 | CONFIG_NFS_COMMON=y | 801 | CONFIG_NFS_COMMON=y |
703 | CONFIG_SUNRPC=y | 802 | CONFIG_SUNRPC=y |
@@ -726,7 +825,16 @@ CONFIG_FRAME_WARN=1024 | |||
726 | # CONFIG_DEBUG_FS is not set | 825 | # CONFIG_DEBUG_FS is not set |
727 | # CONFIG_HEADERS_CHECK is not set | 826 | # CONFIG_HEADERS_CHECK is not set |
728 | # CONFIG_DEBUG_KERNEL is not set | 827 | # CONFIG_DEBUG_KERNEL is not set |
828 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
829 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
830 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
831 | |||
832 | # | ||
833 | # Tracers | ||
834 | # | ||
835 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | ||
729 | # CONFIG_SAMPLES is not set | 836 | # CONFIG_SAMPLES is not set |
837 | CONFIG_HAVE_ARCH_KGDB=y | ||
730 | CONFIG_CMDLINE="" | 838 | CONFIG_CMDLINE="" |
731 | 839 | ||
732 | # | 840 | # |
@@ -734,15 +842,18 @@ CONFIG_CMDLINE="" | |||
734 | # | 842 | # |
735 | # CONFIG_KEYS is not set | 843 | # CONFIG_KEYS is not set |
736 | # CONFIG_SECURITY is not set | 844 | # CONFIG_SECURITY is not set |
845 | # CONFIG_SECURITYFS is not set | ||
846 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
737 | # CONFIG_CRYPTO is not set | 847 | # CONFIG_CRYPTO is not set |
738 | 848 | ||
739 | # | 849 | # |
740 | # Library routines | 850 | # Library routines |
741 | # | 851 | # |
742 | CONFIG_BITREVERSE=y | 852 | CONFIG_BITREVERSE=y |
743 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | 853 | CONFIG_GENERIC_FIND_LAST_BIT=y |
744 | # CONFIG_CRC_CCITT is not set | 854 | # CONFIG_CRC_CCITT is not set |
745 | # CONFIG_CRC16 is not set | 855 | # CONFIG_CRC16 is not set |
856 | # CONFIG_CRC_T10DIF is not set | ||
746 | # CONFIG_CRC_ITU_T is not set | 857 | # CONFIG_CRC_ITU_T is not set |
747 | CONFIG_CRC32=y | 858 | CONFIG_CRC32=y |
748 | # CONFIG_CRC7 is not set | 859 | # CONFIG_CRC7 is not set |
diff --git a/arch/mips/configs/rbtx49xx_defconfig b/arch/mips/configs/rbtx49xx_defconfig index 83d5c58662c8..1efe977497dd 100644 --- a/arch/mips/configs/rbtx49xx_defconfig +++ b/arch/mips/configs/rbtx49xx_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.26-rc9 | 3 | # Linux kernel version: 2.6.29-rc7 |
4 | # Fri Jul 11 23:03:21 2008 | 4 | # Wed Mar 4 23:08:06 2009 |
5 | # | 5 | # |
6 | CONFIG_MIPS=y | 6 | CONFIG_MIPS=y |
7 | 7 | ||
@@ -18,8 +18,10 @@ CONFIG_MIPS=y | |||
18 | # CONFIG_LEMOTE_FULONG is not set | 18 | # CONFIG_LEMOTE_FULONG is not set |
19 | # CONFIG_MIPS_MALTA is not set | 19 | # CONFIG_MIPS_MALTA is not set |
20 | # CONFIG_MIPS_SIM is not set | 20 | # CONFIG_MIPS_SIM is not set |
21 | # CONFIG_MARKEINS is not set | 21 | # CONFIG_MACH_EMMA is not set |
22 | # CONFIG_MACH_VR41XX is not set | 22 | # CONFIG_MACH_VR41XX is not set |
23 | # CONFIG_NXP_STB220 is not set | ||
24 | # CONFIG_NXP_STB225 is not set | ||
23 | # CONFIG_PNX8550_JBS is not set | 25 | # CONFIG_PNX8550_JBS is not set |
24 | # CONFIG_PNX8550_STB810 is not set | 26 | # CONFIG_PNX8550_STB810 is not set |
25 | # CONFIG_PMC_MSP is not set | 27 | # CONFIG_PMC_MSP is not set |
@@ -39,20 +41,28 @@ CONFIG_MIPS=y | |||
39 | # CONFIG_SNI_RM is not set | 41 | # CONFIG_SNI_RM is not set |
40 | # CONFIG_MACH_TX39XX is not set | 42 | # CONFIG_MACH_TX39XX is not set |
41 | CONFIG_MACH_TX49XX=y | 43 | CONFIG_MACH_TX49XX=y |
44 | # CONFIG_MIKROTIK_RB532 is not set | ||
42 | # CONFIG_WR_PPMC is not set | 45 | # CONFIG_WR_PPMC is not set |
46 | # CONFIG_CAVIUM_OCTEON_SIMULATOR is not set | ||
47 | # CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set | ||
48 | CONFIG_MACH_TXX9=y | ||
43 | CONFIG_TOSHIBA_RBTX4927=y | 49 | CONFIG_TOSHIBA_RBTX4927=y |
44 | CONFIG_TOSHIBA_RBTX4938=y | 50 | CONFIG_TOSHIBA_RBTX4938=y |
51 | CONFIG_TOSHIBA_RBTX4939=y | ||
45 | CONFIG_SOC_TX4927=y | 52 | CONFIG_SOC_TX4927=y |
46 | CONFIG_SOC_TX4938=y | 53 | CONFIG_SOC_TX4938=y |
54 | CONFIG_SOC_TX4939=y | ||
55 | CONFIG_TXX9_7SEGLED=y | ||
47 | # CONFIG_TOSHIBA_FPCIB0 is not set | 56 | # CONFIG_TOSHIBA_FPCIB0 is not set |
48 | CONFIG_PICMG_PCI_BACKPLANE_DEFAULT=y | 57 | CONFIG_PICMG_PCI_BACKPLANE_DEFAULT=y |
49 | 58 | ||
50 | # | 59 | # |
51 | # Multiplex Pin Select | 60 | # Multiplex Pin Select |
52 | # | 61 | # |
53 | CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61=y | 62 | # CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61 is not set |
54 | # CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND is not set | 63 | # CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND is not set |
55 | # CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA is not set | 64 | # CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA is not set |
65 | CONFIG_TOSHIBA_RBTX4938_MPLEX_KEEP=y | ||
56 | CONFIG_PCI_TX4927=y | 66 | CONFIG_PCI_TX4927=y |
57 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 67 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
58 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 68 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
@@ -64,14 +74,18 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
64 | CONFIG_GENERIC_CLOCKEVENTS=y | 74 | CONFIG_GENERIC_CLOCKEVENTS=y |
65 | CONFIG_GENERIC_TIME=y | 75 | CONFIG_GENERIC_TIME=y |
66 | CONFIG_GENERIC_CMOS_UPDATE=y | 76 | CONFIG_GENERIC_CMOS_UPDATE=y |
67 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 77 | CONFIG_SCHED_OMIT_FRAME_POINTER=y |
68 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 78 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
79 | CONFIG_CEVT_R4K_LIB=y | ||
69 | CONFIG_CEVT_R4K=y | 80 | CONFIG_CEVT_R4K=y |
70 | CONFIG_CEVT_TXX9=y | 81 | CONFIG_CEVT_TXX9=y |
82 | CONFIG_CSRC_R4K_LIB=y | ||
71 | CONFIG_CSRC_R4K=y | 83 | CONFIG_CSRC_R4K=y |
72 | CONFIG_GPIO_TXX9=y | 84 | CONFIG_GPIO_TXX9=y |
73 | CONFIG_DMA_NONCOHERENT=y | 85 | CONFIG_DMA_NONCOHERENT=y |
74 | CONFIG_DMA_NEED_PCI_MAP_STATE=y | 86 | CONFIG_DMA_NEED_PCI_MAP_STATE=y |
87 | CONFIG_EARLY_PRINTK=y | ||
88 | CONFIG_SYS_HAS_EARLY_PRINTK=y | ||
75 | # CONFIG_HOTPLUG_CPU is not set | 89 | # CONFIG_HOTPLUG_CPU is not set |
76 | # CONFIG_NO_IOPORT is not set | 90 | # CONFIG_NO_IOPORT is not set |
77 | CONFIG_GENERIC_GPIO=y | 91 | CONFIG_GENERIC_GPIO=y |
@@ -100,6 +114,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5 | |||
100 | CONFIG_CPU_TX49XX=y | 114 | CONFIG_CPU_TX49XX=y |
101 | # CONFIG_CPU_R5000 is not set | 115 | # CONFIG_CPU_R5000 is not set |
102 | # CONFIG_CPU_R5432 is not set | 116 | # CONFIG_CPU_R5432 is not set |
117 | # CONFIG_CPU_R5500 is not set | ||
103 | # CONFIG_CPU_R6000 is not set | 118 | # CONFIG_CPU_R6000 is not set |
104 | # CONFIG_CPU_NEVADA is not set | 119 | # CONFIG_CPU_NEVADA is not set |
105 | # CONFIG_CPU_R8000 is not set | 120 | # CONFIG_CPU_R8000 is not set |
@@ -107,6 +122,7 @@ CONFIG_CPU_TX49XX=y | |||
107 | # CONFIG_CPU_RM7000 is not set | 122 | # CONFIG_CPU_RM7000 is not set |
108 | # CONFIG_CPU_RM9000 is not set | 123 | # CONFIG_CPU_RM9000 is not set |
109 | # CONFIG_CPU_SB1 is not set | 124 | # CONFIG_CPU_SB1 is not set |
125 | # CONFIG_CPU_CAVIUM_OCTEON is not set | ||
110 | CONFIG_SYS_HAS_CPU_TX49XX=y | 126 | CONFIG_SYS_HAS_CPU_TX49XX=y |
111 | CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y | 127 | CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y |
112 | CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y | 128 | CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y |
@@ -134,13 +150,12 @@ CONFIG_ARCH_FLATMEM_ENABLE=y | |||
134 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 150 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
135 | CONFIG_FLATMEM=y | 151 | CONFIG_FLATMEM=y |
136 | CONFIG_FLAT_NODE_MEM_MAP=y | 152 | CONFIG_FLAT_NODE_MEM_MAP=y |
137 | # CONFIG_SPARSEMEM_STATIC is not set | ||
138 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
139 | CONFIG_PAGEFLAGS_EXTENDED=y | 153 | CONFIG_PAGEFLAGS_EXTENDED=y |
140 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 154 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
141 | # CONFIG_RESOURCES_64BIT is not set | 155 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
142 | CONFIG_ZONE_DMA_FLAG=0 | 156 | CONFIG_ZONE_DMA_FLAG=0 |
143 | CONFIG_VIRT_TO_BUS=y | 157 | CONFIG_VIRT_TO_BUS=y |
158 | CONFIG_UNEVICTABLE_LRU=y | ||
144 | CONFIG_TICK_ONESHOT=y | 159 | CONFIG_TICK_ONESHOT=y |
145 | CONFIG_NO_HZ=y | 160 | CONFIG_NO_HZ=y |
146 | CONFIG_HIGH_RES_TIMERS=y | 161 | CONFIG_HIGH_RES_TIMERS=y |
@@ -176,6 +191,15 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
176 | # CONFIG_BSD_PROCESS_ACCT is not set | 191 | # CONFIG_BSD_PROCESS_ACCT is not set |
177 | # CONFIG_TASKSTATS is not set | 192 | # CONFIG_TASKSTATS is not set |
178 | # CONFIG_AUDIT is not set | 193 | # CONFIG_AUDIT is not set |
194 | |||
195 | # | ||
196 | # RCU Subsystem | ||
197 | # | ||
198 | CONFIG_CLASSIC_RCU=y | ||
199 | # CONFIG_TREE_RCU is not set | ||
200 | # CONFIG_PREEMPT_RCU is not set | ||
201 | # CONFIG_TREE_RCU_TRACE is not set | ||
202 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
179 | CONFIG_IKCONFIG=y | 203 | CONFIG_IKCONFIG=y |
180 | CONFIG_IKCONFIG_PROC=y | 204 | CONFIG_IKCONFIG_PROC=y |
181 | CONFIG_LOG_BUF_SHIFT=14 | 205 | CONFIG_LOG_BUF_SHIFT=14 |
@@ -190,7 +214,6 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
190 | CONFIG_SYSCTL=y | 214 | CONFIG_SYSCTL=y |
191 | CONFIG_EMBEDDED=y | 215 | CONFIG_EMBEDDED=y |
192 | CONFIG_SYSCTL_SYSCALL=y | 216 | CONFIG_SYSCTL_SYSCALL=y |
193 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
194 | CONFIG_KALLSYMS=y | 217 | CONFIG_KALLSYMS=y |
195 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 218 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
196 | # CONFIG_HOTPLUG is not set | 219 | # CONFIG_HOTPLUG is not set |
@@ -207,30 +230,26 @@ CONFIG_SIGNALFD=y | |||
207 | CONFIG_TIMERFD=y | 230 | CONFIG_TIMERFD=y |
208 | CONFIG_EVENTFD=y | 231 | CONFIG_EVENTFD=y |
209 | CONFIG_SHMEM=y | 232 | CONFIG_SHMEM=y |
233 | CONFIG_AIO=y | ||
210 | CONFIG_VM_EVENT_COUNTERS=y | 234 | CONFIG_VM_EVENT_COUNTERS=y |
235 | CONFIG_PCI_QUIRKS=y | ||
211 | CONFIG_SLAB=y | 236 | CONFIG_SLAB=y |
212 | # CONFIG_SLUB is not set | 237 | # CONFIG_SLUB is not set |
213 | # CONFIG_SLOB is not set | 238 | # CONFIG_SLOB is not set |
214 | # CONFIG_PROFILING is not set | 239 | # CONFIG_PROFILING is not set |
215 | # CONFIG_MARKERS is not set | ||
216 | CONFIG_HAVE_OPROFILE=y | 240 | CONFIG_HAVE_OPROFILE=y |
217 | # CONFIG_HAVE_KPROBES is not set | 241 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set |
218 | # CONFIG_HAVE_KRETPROBES is not set | ||
219 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
220 | CONFIG_PROC_PAGE_MONITOR=y | ||
221 | CONFIG_SLABINFO=y | 242 | CONFIG_SLABINFO=y |
222 | # CONFIG_TINY_SHMEM is not set | ||
223 | CONFIG_BASE_SMALL=0 | 243 | CONFIG_BASE_SMALL=0 |
224 | CONFIG_MODULES=y | 244 | CONFIG_MODULES=y |
225 | # CONFIG_MODULE_FORCE_LOAD is not set | 245 | # CONFIG_MODULE_FORCE_LOAD is not set |
226 | # CONFIG_MODULE_UNLOAD is not set | 246 | CONFIG_MODULE_UNLOAD=y |
227 | # CONFIG_MODVERSIONS is not set | 247 | # CONFIG_MODVERSIONS is not set |
228 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 248 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
229 | CONFIG_KMOD=y | ||
230 | CONFIG_BLOCK=y | 249 | CONFIG_BLOCK=y |
231 | # CONFIG_LBD is not set | 250 | # CONFIG_LBD is not set |
232 | # CONFIG_BLK_DEV_IO_TRACE is not set | 251 | # CONFIG_BLK_DEV_IO_TRACE is not set |
233 | # CONFIG_LSF is not set | 252 | # CONFIG_BLK_DEV_INTEGRITY is not set |
234 | 253 | ||
235 | # | 254 | # |
236 | # IO Schedulers | 255 | # IO Schedulers |
@@ -244,7 +263,8 @@ CONFIG_DEFAULT_AS=y | |||
244 | # CONFIG_DEFAULT_CFQ is not set | 263 | # CONFIG_DEFAULT_CFQ is not set |
245 | # CONFIG_DEFAULT_NOOP is not set | 264 | # CONFIG_DEFAULT_NOOP is not set |
246 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 265 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
247 | CONFIG_CLASSIC_RCU=y | 266 | # CONFIG_PROBE_INITRD_HEADER is not set |
267 | # CONFIG_FREEZER is not set | ||
248 | 268 | ||
249 | # | 269 | # |
250 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) | 270 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) |
@@ -254,12 +274,15 @@ CONFIG_PCI=y | |||
254 | CONFIG_PCI_DOMAINS=y | 274 | CONFIG_PCI_DOMAINS=y |
255 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 275 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
256 | # CONFIG_PCI_LEGACY is not set | 276 | # CONFIG_PCI_LEGACY is not set |
277 | # CONFIG_PCI_STUB is not set | ||
257 | CONFIG_MMU=y | 278 | CONFIG_MMU=y |
258 | 279 | ||
259 | # | 280 | # |
260 | # Executable file formats | 281 | # Executable file formats |
261 | # | 282 | # |
262 | CONFIG_BINFMT_ELF=y | 283 | CONFIG_BINFMT_ELF=y |
284 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
285 | # CONFIG_HAVE_AOUT is not set | ||
263 | # CONFIG_BINFMT_MISC is not set | 286 | # CONFIG_BINFMT_MISC is not set |
264 | CONFIG_TRAD_SIGNALS=y | 287 | CONFIG_TRAD_SIGNALS=y |
265 | 288 | ||
@@ -268,15 +291,12 @@ CONFIG_TRAD_SIGNALS=y | |||
268 | # | 291 | # |
269 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 292 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
270 | # CONFIG_PM is not set | 293 | # CONFIG_PM is not set |
271 | |||
272 | # | ||
273 | # Networking | ||
274 | # | ||
275 | CONFIG_NET=y | 294 | CONFIG_NET=y |
276 | 295 | ||
277 | # | 296 | # |
278 | # Networking options | 297 | # Networking options |
279 | # | 298 | # |
299 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
280 | CONFIG_PACKET=y | 300 | CONFIG_PACKET=y |
281 | # CONFIG_PACKET_MMAP is not set | 301 | # CONFIG_PACKET_MMAP is not set |
282 | CONFIG_UNIX=y | 302 | CONFIG_UNIX=y |
@@ -318,6 +338,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
318 | # CONFIG_IPX is not set | 338 | # CONFIG_IPX is not set |
319 | # CONFIG_ATALK is not set | 339 | # CONFIG_ATALK is not set |
320 | # CONFIG_NET_SCHED is not set | 340 | # CONFIG_NET_SCHED is not set |
341 | # CONFIG_DCB is not set | ||
321 | 342 | ||
322 | # | 343 | # |
323 | # Network testing | 344 | # Network testing |
@@ -327,14 +348,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
327 | # CONFIG_CAN is not set | 348 | # CONFIG_CAN is not set |
328 | # CONFIG_IRDA is not set | 349 | # CONFIG_IRDA is not set |
329 | # CONFIG_BT is not set | 350 | # CONFIG_BT is not set |
330 | 351 | # CONFIG_PHONET is not set | |
331 | # | 352 | # CONFIG_WIRELESS is not set |
332 | # Wireless | 353 | # CONFIG_WIMAX is not set |
333 | # | ||
334 | # CONFIG_CFG80211 is not set | ||
335 | # CONFIG_WIRELESS_EXT is not set | ||
336 | # CONFIG_MAC80211 is not set | ||
337 | # CONFIG_IEEE80211 is not set | ||
338 | # CONFIG_RFKILL is not set | 354 | # CONFIG_RFKILL is not set |
339 | 355 | ||
340 | # | 356 | # |
@@ -348,7 +364,90 @@ CONFIG_STANDALONE=y | |||
348 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 364 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
349 | # CONFIG_SYS_HYPERVISOR is not set | 365 | # CONFIG_SYS_HYPERVISOR is not set |
350 | # CONFIG_CONNECTOR is not set | 366 | # CONFIG_CONNECTOR is not set |
351 | # CONFIG_MTD is not set | 367 | CONFIG_MTD=y |
368 | # CONFIG_MTD_DEBUG is not set | ||
369 | # CONFIG_MTD_CONCAT is not set | ||
370 | CONFIG_MTD_PARTITIONS=y | ||
371 | # CONFIG_MTD_TESTS is not set | ||
372 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
373 | CONFIG_MTD_CMDLINE_PARTS=y | ||
374 | # CONFIG_MTD_AR7_PARTS is not set | ||
375 | |||
376 | # | ||
377 | # User Modules And Translation Layers | ||
378 | # | ||
379 | CONFIG_MTD_CHAR=y | ||
380 | # CONFIG_MTD_BLKDEVS is not set | ||
381 | # CONFIG_MTD_BLOCK is not set | ||
382 | # CONFIG_MTD_BLOCK_RO is not set | ||
383 | # CONFIG_FTL is not set | ||
384 | # CONFIG_NFTL is not set | ||
385 | # CONFIG_INFTL is not set | ||
386 | # CONFIG_RFD_FTL is not set | ||
387 | # CONFIG_SSFDC is not set | ||
388 | # CONFIG_MTD_OOPS is not set | ||
389 | |||
390 | # | ||
391 | # RAM/ROM/Flash chip drivers | ||
392 | # | ||
393 | CONFIG_MTD_CFI=y | ||
394 | CONFIG_MTD_JEDECPROBE=y | ||
395 | CONFIG_MTD_GEN_PROBE=y | ||
396 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
397 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
398 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
399 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
400 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
401 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
402 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
403 | CONFIG_MTD_CFI_I1=y | ||
404 | CONFIG_MTD_CFI_I2=y | ||
405 | # CONFIG_MTD_CFI_I4 is not set | ||
406 | # CONFIG_MTD_CFI_I8 is not set | ||
407 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
408 | CONFIG_MTD_CFI_AMDSTD=y | ||
409 | # CONFIG_MTD_CFI_STAA is not set | ||
410 | CONFIG_MTD_CFI_UTIL=y | ||
411 | # CONFIG_MTD_RAM is not set | ||
412 | # CONFIG_MTD_ROM is not set | ||
413 | # CONFIG_MTD_ABSENT is not set | ||
414 | |||
415 | # | ||
416 | # Mapping drivers for chip access | ||
417 | # | ||
418 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
419 | CONFIG_MTD_PHYSMAP=y | ||
420 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
421 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
422 | # CONFIG_MTD_PLATRAM is not set | ||
423 | |||
424 | # | ||
425 | # Self-contained MTD device drivers | ||
426 | # | ||
427 | # CONFIG_MTD_PMC551 is not set | ||
428 | # CONFIG_MTD_SLRAM is not set | ||
429 | # CONFIG_MTD_PHRAM is not set | ||
430 | # CONFIG_MTD_MTDRAM is not set | ||
431 | # CONFIG_MTD_BLOCK2MTD is not set | ||
432 | |||
433 | # | ||
434 | # Disk-On-Chip Device Drivers | ||
435 | # | ||
436 | # CONFIG_MTD_DOC2000 is not set | ||
437 | # CONFIG_MTD_DOC2001 is not set | ||
438 | # CONFIG_MTD_DOC2001PLUS is not set | ||
439 | # CONFIG_MTD_NAND is not set | ||
440 | # CONFIG_MTD_ONENAND is not set | ||
441 | |||
442 | # | ||
443 | # LPDDR flash memory drivers | ||
444 | # | ||
445 | # CONFIG_MTD_LPDDR is not set | ||
446 | |||
447 | # | ||
448 | # UBI - Unsorted block images | ||
449 | # | ||
450 | # CONFIG_MTD_UBI is not set | ||
352 | # CONFIG_PARPORT is not set | 451 | # CONFIG_PARPORT is not set |
353 | CONFIG_BLK_DEV=y | 452 | CONFIG_BLK_DEV=y |
354 | # CONFIG_BLK_CPQ_DA is not set | 453 | # CONFIG_BLK_CPQ_DA is not set |
@@ -365,9 +464,60 @@ CONFIG_BLK_DEV_RAM_SIZE=8192 | |||
365 | # CONFIG_BLK_DEV_XIP is not set | 464 | # CONFIG_BLK_DEV_XIP is not set |
366 | # CONFIG_CDROM_PKTCDVD is not set | 465 | # CONFIG_CDROM_PKTCDVD is not set |
367 | # CONFIG_ATA_OVER_ETH is not set | 466 | # CONFIG_ATA_OVER_ETH is not set |
467 | # CONFIG_BLK_DEV_HD is not set | ||
368 | # CONFIG_MISC_DEVICES is not set | 468 | # CONFIG_MISC_DEVICES is not set |
369 | CONFIG_HAVE_IDE=y | 469 | CONFIG_HAVE_IDE=y |
370 | # CONFIG_IDE is not set | 470 | CONFIG_IDE=y |
471 | |||
472 | # | ||
473 | # Please see Documentation/ide/ide.txt for help/info on IDE drives | ||
474 | # | ||
475 | CONFIG_IDE_TIMINGS=y | ||
476 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
477 | CONFIG_IDE_GD=y | ||
478 | CONFIG_IDE_GD_ATA=y | ||
479 | # CONFIG_IDE_GD_ATAPI is not set | ||
480 | # CONFIG_BLK_DEV_IDECD is not set | ||
481 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
482 | # CONFIG_IDE_TASK_IOCTL is not set | ||
483 | CONFIG_IDE_PROC_FS=y | ||
484 | |||
485 | # | ||
486 | # IDE chipset support/bugfixes | ||
487 | # | ||
488 | # CONFIG_IDE_GENERIC is not set | ||
489 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
490 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
491 | |||
492 | # | ||
493 | # PCI IDE chipsets support | ||
494 | # | ||
495 | # CONFIG_BLK_DEV_GENERIC is not set | ||
496 | # CONFIG_BLK_DEV_AEC62XX is not set | ||
497 | # CONFIG_BLK_DEV_ALI15X3 is not set | ||
498 | # CONFIG_BLK_DEV_AMD74XX is not set | ||
499 | # CONFIG_BLK_DEV_CMD64X is not set | ||
500 | # CONFIG_BLK_DEV_TRIFLEX is not set | ||
501 | # CONFIG_BLK_DEV_CS5530 is not set | ||
502 | # CONFIG_BLK_DEV_HPT366 is not set | ||
503 | # CONFIG_BLK_DEV_JMICRON is not set | ||
504 | # CONFIG_BLK_DEV_SC1200 is not set | ||
505 | # CONFIG_BLK_DEV_PIIX is not set | ||
506 | # CONFIG_BLK_DEV_IT8172 is not set | ||
507 | # CONFIG_BLK_DEV_IT8213 is not set | ||
508 | # CONFIG_BLK_DEV_IT821X is not set | ||
509 | # CONFIG_BLK_DEV_NS87415 is not set | ||
510 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | ||
511 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | ||
512 | # CONFIG_BLK_DEV_SVWKS is not set | ||
513 | # CONFIG_BLK_DEV_SIIMAGE is not set | ||
514 | # CONFIG_BLK_DEV_SLC90E66 is not set | ||
515 | # CONFIG_BLK_DEV_TRM290 is not set | ||
516 | # CONFIG_BLK_DEV_VIA82CXXX is not set | ||
517 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
518 | CONFIG_BLK_DEV_IDE_TX4938=y | ||
519 | CONFIG_BLK_DEV_IDE_TX4939=y | ||
520 | CONFIG_BLK_DEV_IDEDMA=y | ||
371 | 521 | ||
372 | # | 522 | # |
373 | # SCSI device support | 523 | # SCSI device support |
@@ -390,7 +540,6 @@ CONFIG_HAVE_IDE=y | |||
390 | # CONFIG_IEEE1394 is not set | 540 | # CONFIG_IEEE1394 is not set |
391 | # CONFIG_I2O is not set | 541 | # CONFIG_I2O is not set |
392 | CONFIG_NETDEVICES=y | 542 | CONFIG_NETDEVICES=y |
393 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
394 | # CONFIG_DUMMY is not set | 543 | # CONFIG_DUMMY is not set |
395 | # CONFIG_BONDING is not set | 544 | # CONFIG_BONDING is not set |
396 | # CONFIG_EQUALIZER is not set | 545 | # CONFIG_EQUALIZER is not set |
@@ -412,15 +561,19 @@ CONFIG_PHYLIB=y | |||
412 | # CONFIG_BROADCOM_PHY is not set | 561 | # CONFIG_BROADCOM_PHY is not set |
413 | # CONFIG_ICPLUS_PHY is not set | 562 | # CONFIG_ICPLUS_PHY is not set |
414 | # CONFIG_REALTEK_PHY is not set | 563 | # CONFIG_REALTEK_PHY is not set |
564 | # CONFIG_NATIONAL_PHY is not set | ||
565 | # CONFIG_STE10XP is not set | ||
566 | # CONFIG_LSI_ET1011C_PHY is not set | ||
415 | # CONFIG_FIXED_PHY is not set | 567 | # CONFIG_FIXED_PHY is not set |
416 | # CONFIG_MDIO_BITBANG is not set | 568 | # CONFIG_MDIO_BITBANG is not set |
417 | CONFIG_NET_ETHERNET=y | 569 | CONFIG_NET_ETHERNET=y |
418 | # CONFIG_MII is not set | 570 | CONFIG_MII=y |
419 | # CONFIG_AX88796 is not set | 571 | # CONFIG_AX88796 is not set |
420 | # CONFIG_HAPPYMEAL is not set | 572 | # CONFIG_HAPPYMEAL is not set |
421 | # CONFIG_SUNGEM is not set | 573 | # CONFIG_SUNGEM is not set |
422 | # CONFIG_CASSINI is not set | 574 | # CONFIG_CASSINI is not set |
423 | # CONFIG_NET_VENDOR_3COM is not set | 575 | # CONFIG_NET_VENDOR_3COM is not set |
576 | CONFIG_SMC91X=y | ||
424 | # CONFIG_DM9000 is not set | 577 | # CONFIG_DM9000 is not set |
425 | # CONFIG_NET_TULIP is not set | 578 | # CONFIG_NET_TULIP is not set |
426 | # CONFIG_HP100 is not set | 579 | # CONFIG_HP100 is not set |
@@ -429,6 +582,9 @@ CONFIG_NE2000=y | |||
429 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 582 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
430 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 583 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
431 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 584 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
585 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
586 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
587 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
432 | CONFIG_NET_PCI=y | 588 | CONFIG_NET_PCI=y |
433 | # CONFIG_PCNET32 is not set | 589 | # CONFIG_PCNET32 is not set |
434 | # CONFIG_AMD8111_ETH is not set | 590 | # CONFIG_AMD8111_ETH is not set |
@@ -436,7 +592,6 @@ CONFIG_NET_PCI=y | |||
436 | # CONFIG_B44 is not set | 592 | # CONFIG_B44 is not set |
437 | # CONFIG_FORCEDETH is not set | 593 | # CONFIG_FORCEDETH is not set |
438 | CONFIG_TC35815=y | 594 | CONFIG_TC35815=y |
439 | # CONFIG_EEPRO100 is not set | ||
440 | # CONFIG_E100 is not set | 595 | # CONFIG_E100 is not set |
441 | # CONFIG_FEALNX is not set | 596 | # CONFIG_FEALNX is not set |
442 | # CONFIG_NATSEMI is not set | 597 | # CONFIG_NATSEMI is not set |
@@ -445,9 +600,11 @@ CONFIG_TC35815=y | |||
445 | # CONFIG_R6040 is not set | 600 | # CONFIG_R6040 is not set |
446 | # CONFIG_SIS900 is not set | 601 | # CONFIG_SIS900 is not set |
447 | # CONFIG_EPIC100 is not set | 602 | # CONFIG_EPIC100 is not set |
603 | # CONFIG_SMSC9420 is not set | ||
448 | # CONFIG_SUNDANCE is not set | 604 | # CONFIG_SUNDANCE is not set |
449 | # CONFIG_TLAN is not set | 605 | # CONFIG_TLAN is not set |
450 | # CONFIG_VIA_RHINE is not set | 606 | # CONFIG_VIA_RHINE is not set |
607 | # CONFIG_ATL2 is not set | ||
451 | # CONFIG_NETDEV_1000 is not set | 608 | # CONFIG_NETDEV_1000 is not set |
452 | # CONFIG_NETDEV_10000 is not set | 609 | # CONFIG_NETDEV_10000 is not set |
453 | # CONFIG_TR is not set | 610 | # CONFIG_TR is not set |
@@ -458,6 +615,10 @@ CONFIG_TC35815=y | |||
458 | # CONFIG_WLAN_PRE80211 is not set | 615 | # CONFIG_WLAN_PRE80211 is not set |
459 | # CONFIG_WLAN_80211 is not set | 616 | # CONFIG_WLAN_80211 is not set |
460 | # CONFIG_IWLWIFI_LEDS is not set | 617 | # CONFIG_IWLWIFI_LEDS is not set |
618 | |||
619 | # | ||
620 | # Enable WiMAX (Networking options) to see the WiMAX drivers | ||
621 | # | ||
461 | # CONFIG_WAN is not set | 622 | # CONFIG_WAN is not set |
462 | # CONFIG_FDDI is not set | 623 | # CONFIG_FDDI is not set |
463 | # CONFIG_PPP is not set | 624 | # CONFIG_PPP is not set |
@@ -502,6 +663,7 @@ CONFIG_SERIAL_TXX9_CONSOLE=y | |||
502 | CONFIG_SERIAL_TXX9_STDSERIAL=y | 663 | CONFIG_SERIAL_TXX9_STDSERIAL=y |
503 | # CONFIG_SERIAL_JSM is not set | 664 | # CONFIG_SERIAL_JSM is not set |
504 | CONFIG_UNIX98_PTYS=y | 665 | CONFIG_UNIX98_PTYS=y |
666 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
505 | CONFIG_LEGACY_PTYS=y | 667 | CONFIG_LEGACY_PTYS=y |
506 | CONFIG_LEGACY_PTY_COUNT=256 | 668 | CONFIG_LEGACY_PTY_COUNT=256 |
507 | # CONFIG_IPMI_HANDLER is not set | 669 | # CONFIG_IPMI_HANDLER is not set |
@@ -517,17 +679,19 @@ CONFIG_SPI_MASTER=y | |||
517 | # | 679 | # |
518 | # SPI Master Controller Drivers | 680 | # SPI Master Controller Drivers |
519 | # | 681 | # |
682 | # CONFIG_SPI_BITBANG is not set | ||
683 | # CONFIG_SPI_GPIO is not set | ||
520 | CONFIG_SPI_TXX9=y | 684 | CONFIG_SPI_TXX9=y |
521 | 685 | ||
522 | # | 686 | # |
523 | # SPI Protocol Masters | 687 | # SPI Protocol Masters |
524 | # | 688 | # |
525 | CONFIG_EEPROM_AT25=y | ||
526 | # CONFIG_SPI_TLE62X0 is not set | 689 | # CONFIG_SPI_TLE62X0 is not set |
527 | CONFIG_HAVE_GPIO_LIB=y | 690 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
691 | CONFIG_GPIOLIB=y | ||
528 | 692 | ||
529 | # | 693 | # |
530 | # GPIO Support | 694 | # Memory mapped GPIO expanders: |
531 | # | 695 | # |
532 | 696 | ||
533 | # | 697 | # |
@@ -535,8 +699,14 @@ CONFIG_HAVE_GPIO_LIB=y | |||
535 | # | 699 | # |
536 | 700 | ||
537 | # | 701 | # |
702 | # PCI GPIO expanders: | ||
703 | # | ||
704 | # CONFIG_GPIO_BT8XX is not set | ||
705 | |||
706 | # | ||
538 | # SPI GPIO expanders: | 707 | # SPI GPIO expanders: |
539 | # | 708 | # |
709 | # CONFIG_GPIO_MAX7301 is not set | ||
540 | # CONFIG_GPIO_MCP23S08 is not set | 710 | # CONFIG_GPIO_MCP23S08 is not set |
541 | # CONFIG_W1 is not set | 711 | # CONFIG_W1 is not set |
542 | # CONFIG_POWER_SUPPLY is not set | 712 | # CONFIG_POWER_SUPPLY is not set |
@@ -550,6 +720,7 @@ CONFIG_WATCHDOG=y | |||
550 | # Watchdog Device Drivers | 720 | # Watchdog Device Drivers |
551 | # | 721 | # |
552 | # CONFIG_SOFT_WATCHDOG is not set | 722 | # CONFIG_SOFT_WATCHDOG is not set |
723 | # CONFIG_ALIM7101_WDT is not set | ||
553 | CONFIG_TXX9_WDT=m | 724 | CONFIG_TXX9_WDT=m |
554 | 725 | ||
555 | # | 726 | # |
@@ -557,18 +728,21 @@ CONFIG_TXX9_WDT=m | |||
557 | # | 728 | # |
558 | # CONFIG_PCIPCWATCHDOG is not set | 729 | # CONFIG_PCIPCWATCHDOG is not set |
559 | # CONFIG_WDTPCI is not set | 730 | # CONFIG_WDTPCI is not set |
731 | CONFIG_SSB_POSSIBLE=y | ||
560 | 732 | ||
561 | # | 733 | # |
562 | # Sonics Silicon Backplane | 734 | # Sonics Silicon Backplane |
563 | # | 735 | # |
564 | CONFIG_SSB_POSSIBLE=y | ||
565 | # CONFIG_SSB is not set | 736 | # CONFIG_SSB is not set |
566 | 737 | ||
567 | # | 738 | # |
568 | # Multifunction device drivers | 739 | # Multifunction device drivers |
569 | # | 740 | # |
741 | # CONFIG_MFD_CORE is not set | ||
570 | # CONFIG_MFD_SM501 is not set | 742 | # CONFIG_MFD_SM501 is not set |
571 | # CONFIG_HTC_PASIC3 is not set | 743 | # CONFIG_HTC_PASIC3 is not set |
744 | # CONFIG_MFD_TMIO is not set | ||
745 | # CONFIG_REGULATOR is not set | ||
572 | 746 | ||
573 | # | 747 | # |
574 | # Multimedia devices | 748 | # Multimedia devices |
@@ -599,15 +773,27 @@ CONFIG_SSB_POSSIBLE=y | |||
599 | # Display device support | 773 | # Display device support |
600 | # | 774 | # |
601 | # CONFIG_DISPLAY_SUPPORT is not set | 775 | # CONFIG_DISPLAY_SUPPORT is not set |
602 | |||
603 | # | ||
604 | # Sound | ||
605 | # | ||
606 | # CONFIG_SOUND is not set | 776 | # CONFIG_SOUND is not set |
607 | # CONFIG_USB_SUPPORT is not set | 777 | # CONFIG_USB_SUPPORT is not set |
608 | # CONFIG_MMC is not set | 778 | # CONFIG_MMC is not set |
609 | # CONFIG_MEMSTICK is not set | 779 | # CONFIG_MEMSTICK is not set |
610 | # CONFIG_NEW_LEDS is not set | 780 | CONFIG_NEW_LEDS=y |
781 | CONFIG_LEDS_CLASS=y | ||
782 | |||
783 | # | ||
784 | # LED drivers | ||
785 | # | ||
786 | CONFIG_LEDS_GPIO=y | ||
787 | |||
788 | # | ||
789 | # LED Triggers | ||
790 | # | ||
791 | CONFIG_LEDS_TRIGGERS=y | ||
792 | # CONFIG_LEDS_TRIGGER_TIMER is not set | ||
793 | CONFIG_LEDS_TRIGGER_IDE_DISK=y | ||
794 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
795 | # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set | ||
796 | # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set | ||
611 | # CONFIG_ACCESSIBILITY is not set | 797 | # CONFIG_ACCESSIBILITY is not set |
612 | # CONFIG_INFINIBAND is not set | 798 | # CONFIG_INFINIBAND is not set |
613 | CONFIG_RTC_LIB=y | 799 | CONFIG_RTC_LIB=y |
@@ -628,35 +814,47 @@ CONFIG_RTC_INTF_DEV_UIE_EMUL=y | |||
628 | # | 814 | # |
629 | # SPI RTC drivers | 815 | # SPI RTC drivers |
630 | # | 816 | # |
817 | # CONFIG_RTC_DRV_M41T94 is not set | ||
818 | # CONFIG_RTC_DRV_DS1305 is not set | ||
819 | # CONFIG_RTC_DRV_DS1390 is not set | ||
631 | # CONFIG_RTC_DRV_MAX6902 is not set | 820 | # CONFIG_RTC_DRV_MAX6902 is not set |
632 | # CONFIG_RTC_DRV_R9701 is not set | 821 | # CONFIG_RTC_DRV_R9701 is not set |
633 | CONFIG_RTC_DRV_RS5C348=y | 822 | CONFIG_RTC_DRV_RS5C348=y |
823 | # CONFIG_RTC_DRV_DS3234 is not set | ||
634 | 824 | ||
635 | # | 825 | # |
636 | # Platform RTC drivers | 826 | # Platform RTC drivers |
637 | # | 827 | # |
638 | # CONFIG_RTC_DRV_CMOS is not set | 828 | # CONFIG_RTC_DRV_CMOS is not set |
829 | # CONFIG_RTC_DRV_DS1286 is not set | ||
639 | # CONFIG_RTC_DRV_DS1511 is not set | 830 | # CONFIG_RTC_DRV_DS1511 is not set |
640 | # CONFIG_RTC_DRV_DS1553 is not set | 831 | # CONFIG_RTC_DRV_DS1553 is not set |
641 | CONFIG_RTC_DRV_DS1742=y | 832 | CONFIG_RTC_DRV_DS1742=y |
642 | # CONFIG_RTC_DRV_STK17TA8 is not set | 833 | # CONFIG_RTC_DRV_STK17TA8 is not set |
643 | # CONFIG_RTC_DRV_M48T86 is not set | 834 | # CONFIG_RTC_DRV_M48T86 is not set |
835 | # CONFIG_RTC_DRV_M48T35 is not set | ||
644 | # CONFIG_RTC_DRV_M48T59 is not set | 836 | # CONFIG_RTC_DRV_M48T59 is not set |
837 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
645 | # CONFIG_RTC_DRV_V3020 is not set | 838 | # CONFIG_RTC_DRV_V3020 is not set |
646 | 839 | ||
647 | # | 840 | # |
648 | # on-CPU RTC drivers | 841 | # on-CPU RTC drivers |
649 | # | 842 | # |
843 | CONFIG_RTC_DRV_TX4939=y | ||
844 | # CONFIG_DMADEVICES is not set | ||
650 | # CONFIG_UIO is not set | 845 | # CONFIG_UIO is not set |
846 | # CONFIG_STAGING is not set | ||
651 | 847 | ||
652 | # | 848 | # |
653 | # File systems | 849 | # File systems |
654 | # | 850 | # |
655 | # CONFIG_EXT2_FS is not set | 851 | # CONFIG_EXT2_FS is not set |
656 | # CONFIG_EXT3_FS is not set | 852 | # CONFIG_EXT3_FS is not set |
853 | # CONFIG_EXT4_FS is not set | ||
657 | # CONFIG_REISERFS_FS is not set | 854 | # CONFIG_REISERFS_FS is not set |
658 | # CONFIG_JFS_FS is not set | 855 | # CONFIG_JFS_FS is not set |
659 | CONFIG_FS_POSIX_ACL=y | 856 | CONFIG_FS_POSIX_ACL=y |
857 | CONFIG_FILE_LOCKING=y | ||
660 | # CONFIG_XFS_FS is not set | 858 | # CONFIG_XFS_FS is not set |
661 | # CONFIG_OCFS2_FS is not set | 859 | # CONFIG_OCFS2_FS is not set |
662 | # CONFIG_DNOTIFY is not set | 860 | # CONFIG_DNOTIFY is not set |
@@ -687,30 +885,19 @@ CONFIG_GENERIC_ACL=y | |||
687 | CONFIG_PROC_FS=y | 885 | CONFIG_PROC_FS=y |
688 | # CONFIG_PROC_KCORE is not set | 886 | # CONFIG_PROC_KCORE is not set |
689 | CONFIG_PROC_SYSCTL=y | 887 | CONFIG_PROC_SYSCTL=y |
888 | CONFIG_PROC_PAGE_MONITOR=y | ||
690 | CONFIG_SYSFS=y | 889 | CONFIG_SYSFS=y |
691 | CONFIG_TMPFS=y | 890 | CONFIG_TMPFS=y |
692 | CONFIG_TMPFS_POSIX_ACL=y | 891 | CONFIG_TMPFS_POSIX_ACL=y |
693 | # CONFIG_HUGETLB_PAGE is not set | 892 | # CONFIG_HUGETLB_PAGE is not set |
694 | # CONFIG_CONFIGFS_FS is not set | 893 | # CONFIG_CONFIGFS_FS is not set |
695 | 894 | # CONFIG_MISC_FILESYSTEMS is not set | |
696 | # | ||
697 | # Miscellaneous filesystems | ||
698 | # | ||
699 | # CONFIG_HFSPLUS_FS is not set | ||
700 | # CONFIG_CRAMFS is not set | ||
701 | # CONFIG_VXFS_FS is not set | ||
702 | # CONFIG_MINIX_FS is not set | ||
703 | # CONFIG_HPFS_FS is not set | ||
704 | # CONFIG_QNX4FS_FS is not set | ||
705 | # CONFIG_ROMFS_FS is not set | ||
706 | # CONFIG_SYSV_FS is not set | ||
707 | # CONFIG_UFS_FS is not set | ||
708 | CONFIG_NETWORK_FILESYSTEMS=y | 895 | CONFIG_NETWORK_FILESYSTEMS=y |
709 | CONFIG_NFS_FS=y | 896 | CONFIG_NFS_FS=y |
710 | CONFIG_NFS_V3=y | 897 | CONFIG_NFS_V3=y |
711 | # CONFIG_NFS_V3_ACL is not set | 898 | # CONFIG_NFS_V3_ACL is not set |
712 | # CONFIG_NFSD is not set | ||
713 | CONFIG_ROOT_NFS=y | 899 | CONFIG_ROOT_NFS=y |
900 | # CONFIG_NFSD is not set | ||
714 | CONFIG_LOCKD=y | 901 | CONFIG_LOCKD=y |
715 | CONFIG_LOCKD_V4=y | 902 | CONFIG_LOCKD_V4=y |
716 | CONFIG_NFS_COMMON=y | 903 | CONFIG_NFS_COMMON=y |
@@ -740,7 +927,16 @@ CONFIG_FRAME_WARN=1024 | |||
740 | CONFIG_DEBUG_FS=y | 927 | CONFIG_DEBUG_FS=y |
741 | # CONFIG_HEADERS_CHECK is not set | 928 | # CONFIG_HEADERS_CHECK is not set |
742 | # CONFIG_DEBUG_KERNEL is not set | 929 | # CONFIG_DEBUG_KERNEL is not set |
930 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
931 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
932 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
933 | |||
934 | # | ||
935 | # Tracers | ||
936 | # | ||
937 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | ||
743 | # CONFIG_SAMPLES is not set | 938 | # CONFIG_SAMPLES is not set |
939 | CONFIG_HAVE_ARCH_KGDB=y | ||
744 | CONFIG_CMDLINE="" | 940 | CONFIG_CMDLINE="" |
745 | 941 | ||
746 | # | 942 | # |
@@ -748,15 +944,18 @@ CONFIG_CMDLINE="" | |||
748 | # | 944 | # |
749 | # CONFIG_KEYS is not set | 945 | # CONFIG_KEYS is not set |
750 | # CONFIG_SECURITY is not set | 946 | # CONFIG_SECURITY is not set |
947 | # CONFIG_SECURITYFS is not set | ||
948 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
751 | # CONFIG_CRYPTO is not set | 949 | # CONFIG_CRYPTO is not set |
752 | 950 | ||
753 | # | 951 | # |
754 | # Library routines | 952 | # Library routines |
755 | # | 953 | # |
756 | CONFIG_BITREVERSE=y | 954 | CONFIG_BITREVERSE=y |
757 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | 955 | CONFIG_GENERIC_FIND_LAST_BIT=y |
758 | # CONFIG_CRC_CCITT is not set | 956 | # CONFIG_CRC_CCITT is not set |
759 | # CONFIG_CRC16 is not set | 957 | # CONFIG_CRC16 is not set |
958 | # CONFIG_CRC_T10DIF is not set | ||
760 | # CONFIG_CRC_ITU_T is not set | 959 | # CONFIG_CRC_ITU_T is not set |
761 | CONFIG_CRC32=y | 960 | CONFIG_CRC32=y |
762 | # CONFIG_CRC7 is not set | 961 | # CONFIG_CRC7 is not set |
diff --git a/arch/mips/include/asm/hazards.h b/arch/mips/include/asm/hazards.h index 43baed16a109..134e1fc8f4d6 100644 --- a/arch/mips/include/asm/hazards.h +++ b/arch/mips/include/asm/hazards.h | |||
@@ -138,7 +138,8 @@ do { \ | |||
138 | __instruction_hazard(); \ | 138 | __instruction_hazard(); \ |
139 | } while (0) | 139 | } while (0) |
140 | 140 | ||
141 | #elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_CAVIUM_OCTEON) | 141 | #elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \ |
142 | defined(CONFIG_CPU_R5500) | ||
142 | 143 | ||
143 | /* | 144 | /* |
144 | * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer. | 145 | * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer. |
diff --git a/arch/mips/include/asm/prefetch.h b/arch/mips/include/asm/prefetch.h index 17850834ccb0..a56594f360ee 100644 --- a/arch/mips/include/asm/prefetch.h +++ b/arch/mips/include/asm/prefetch.h | |||
@@ -26,7 +26,7 @@ | |||
26 | * Pref_WriteBackInvalidate is a nop and Pref_PrepareForStore is broken in | 26 | * Pref_WriteBackInvalidate is a nop and Pref_PrepareForStore is broken in |
27 | * current versions due to erratum G105. | 27 | * current versions due to erratum G105. |
28 | * | 28 | * |
29 | * VR7701 only implements the Load prefetch. | 29 | * VR5500 (including VR5701 and VR7701) only implement load prefetch. |
30 | * | 30 | * |
31 | * Finally MIPS32 and MIPS64 implement all of the following hints. | 31 | * Finally MIPS32 and MIPS64 implement all of the following hints. |
32 | */ | 32 | */ |
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index a7162a4484cf..1bdbcad3bb74 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -149,6 +149,7 @@ void __init check_wait(void) | |||
149 | case CPU_R4650: | 149 | case CPU_R4650: |
150 | case CPU_R4700: | 150 | case CPU_R4700: |
151 | case CPU_R5000: | 151 | case CPU_R5000: |
152 | case CPU_R5500: | ||
152 | case CPU_NEVADA: | 153 | case CPU_NEVADA: |
153 | case CPU_4KC: | 154 | case CPU_4KC: |
154 | case CPU_4KEC: | 155 | case CPU_4KEC: |
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index 2f8452b404c7..1a86f84fa947 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c | |||
@@ -235,7 +235,7 @@ SYSCALL_DEFINE6(32_ipc, u32, call, long, first, long, second, long, third, | |||
235 | #else | 235 | #else |
236 | 236 | ||
237 | SYSCALL_DEFINE6(32_ipc, u32, call, int, first, int, second, int, third, | 237 | SYSCALL_DEFINE6(32_ipc, u32, call, int, first, int, second, int, third, |
238 | u32, ptr, u32 fifth) | 238 | u32, ptr, u32, fifth) |
239 | { | 239 | { |
240 | return -ENOSYS; | 240 | return -ENOSYS; |
241 | } | 241 | } |
diff --git a/arch/mips/mm/page.c b/arch/mips/mm/page.c index 1417c6494858..48060c635acd 100644 --- a/arch/mips/mm/page.c +++ b/arch/mips/mm/page.c | |||
@@ -172,8 +172,9 @@ static void __cpuinit set_prefetch_parameters(void) | |||
172 | */ | 172 | */ |
173 | cache_line_size = cpu_dcache_line_size(); | 173 | cache_line_size = cpu_dcache_line_size(); |
174 | switch (current_cpu_type()) { | 174 | switch (current_cpu_type()) { |
175 | case CPU_R5500: | ||
175 | case CPU_TX49XX: | 176 | case CPU_TX49XX: |
176 | /* TX49 supports only Pref_Load */ | 177 | /* These processors only support the Pref_Load. */ |
177 | pref_bias_copy_load = 256; | 178 | pref_bias_copy_load = 256; |
178 | break; | 179 | break; |
179 | 180 | ||
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c index 42942038d0fd..f335cf6cdd78 100644 --- a/arch/mips/mm/tlbex.c +++ b/arch/mips/mm/tlbex.c | |||
@@ -318,6 +318,7 @@ static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l, | |||
318 | case CPU_BCM4710: | 318 | case CPU_BCM4710: |
319 | case CPU_LOONGSON2: | 319 | case CPU_LOONGSON2: |
320 | case CPU_CAVIUM_OCTEON: | 320 | case CPU_CAVIUM_OCTEON: |
321 | case CPU_R5500: | ||
321 | if (m4kc_tlbp_war()) | 322 | if (m4kc_tlbp_war()) |
322 | uasm_i_nop(p); | 323 | uasm_i_nop(p); |
323 | tlbw(p); | 324 | tlbw(p); |
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c index 3d2c6baae96b..233bd87a9637 100644 --- a/arch/sparc/kernel/irq_64.c +++ b/arch/sparc/kernel/irq_64.c | |||
@@ -324,17 +324,25 @@ static void sun4u_set_affinity(unsigned int virt_irq, | |||
324 | sun4u_irq_enable(virt_irq); | 324 | sun4u_irq_enable(virt_irq); |
325 | } | 325 | } |
326 | 326 | ||
327 | /* Don't do anything. The desc->status check for IRQ_DISABLED in | ||
328 | * handler_irq() will skip the handler call and that will leave the | ||
329 | * interrupt in the sent state. The next ->enable() call will hit the | ||
330 | * ICLR register to reset the state machine. | ||
331 | * | ||
332 | * This scheme is necessary, instead of clearing the Valid bit in the | ||
333 | * IMAP register, to handle the case of IMAP registers being shared by | ||
334 | * multiple INOs (and thus ICLR registers). Since we use a different | ||
335 | * virtual IRQ for each shared IMAP instance, the generic code thinks | ||
336 | * there is only one user so it prematurely calls ->disable() on | ||
337 | * free_irq(). | ||
338 | * | ||
339 | * We have to provide an explicit ->disable() method instead of using | ||
340 | * NULL to get the default. The reason is that if the generic code | ||
341 | * sees that, it also hooks up a default ->shutdown method which | ||
342 | * invokes ->mask() which we do not want. See irq_chip_set_defaults(). | ||
343 | */ | ||
327 | static void sun4u_irq_disable(unsigned int virt_irq) | 344 | static void sun4u_irq_disable(unsigned int virt_irq) |
328 | { | 345 | { |
329 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); | ||
330 | |||
331 | if (likely(data)) { | ||
332 | unsigned long imap = data->imap; | ||
333 | unsigned long tmp = upa_readq(imap); | ||
334 | |||
335 | tmp &= ~IMAP_VALID; | ||
336 | upa_writeq(tmp, imap); | ||
337 | } | ||
338 | } | 346 | } |
339 | 347 | ||
340 | static void sun4u_irq_eoi(unsigned int virt_irq) | 348 | static void sun4u_irq_eoi(unsigned int virt_irq) |
@@ -747,7 +755,8 @@ void handler_irq(int irq, struct pt_regs *regs) | |||
747 | 755 | ||
748 | desc = irq_desc + virt_irq; | 756 | desc = irq_desc + virt_irq; |
749 | 757 | ||
750 | desc->handle_irq(virt_irq, desc); | 758 | if (!(desc->status & IRQ_DISABLED)) |
759 | desc->handle_irq(virt_irq, desc); | ||
751 | 760 | ||
752 | bucket_pa = next_pa; | 761 | bucket_pa = next_pa; |
753 | } | 762 | } |
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c index 15e8b7c4de13..8e3d69e4fcb5 100644 --- a/arch/um/kernel/ptrace.c +++ b/arch/um/kernel/ptrace.c | |||
@@ -64,6 +64,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
64 | ret = poke_user(child, addr, data); | 64 | ret = poke_user(child, addr, data); |
65 | break; | 65 | break; |
66 | 66 | ||
67 | case PTRACE_SYSEMU: | ||
68 | case PTRACE_SYSEMU_SINGLESTEP: | ||
69 | ret = -EIO; | ||
70 | break; | ||
71 | |||
67 | /* continue and stop at next (return from) syscall */ | 72 | /* continue and stop at next (return from) syscall */ |
68 | case PTRACE_SYSCALL: | 73 | case PTRACE_SYSCALL: |
69 | /* restart after signal. */ | 74 | /* restart after signal. */ |
diff --git a/arch/um/os-Linux/user_syms.c b/arch/um/os-Linux/user_syms.c index 74f49bb9b125..89b48a116a89 100644 --- a/arch/um/os-Linux/user_syms.c +++ b/arch/um/os-Linux/user_syms.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #undef memset | 14 | #undef memset |
15 | 15 | ||
16 | extern size_t strlen(const char *); | 16 | extern size_t strlen(const char *); |
17 | extern void *memcpy(void *, const void *, size_t); | ||
18 | extern void *memmove(void *, const void *, size_t); | 17 | extern void *memmove(void *, const void *, size_t); |
19 | extern void *memset(void *, int, size_t); | 18 | extern void *memset(void *, int, size_t); |
20 | extern int printf(const char *, ...); | 19 | extern int printf(const char *, ...); |
@@ -24,7 +23,11 @@ extern int printf(const char *, ...); | |||
24 | EXPORT_SYMBOL(strstr); | 23 | EXPORT_SYMBOL(strstr); |
25 | #endif | 24 | #endif |
26 | 25 | ||
26 | #ifndef __x86_64__ | ||
27 | extern void *memcpy(void *, const void *, size_t); | ||
27 | EXPORT_SYMBOL(memcpy); | 28 | EXPORT_SYMBOL(memcpy); |
29 | #endif | ||
30 | |||
28 | EXPORT_SYMBOL(memmove); | 31 | EXPORT_SYMBOL(memmove); |
29 | EXPORT_SYMBOL(memset); | 32 | EXPORT_SYMBOL(memset); |
30 | EXPORT_SYMBOL(printf); | 33 | EXPORT_SYMBOL(printf); |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 7fcf85182681..34bc3a89228b 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -169,6 +169,9 @@ config GENERIC_HARDIRQS | |||
169 | bool | 169 | bool |
170 | default y | 170 | default y |
171 | 171 | ||
172 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
173 | def_bool y | ||
174 | |||
172 | config GENERIC_IRQ_PROBE | 175 | config GENERIC_IRQ_PROBE |
173 | bool | 176 | bool |
174 | default y | 177 | default y |
@@ -1129,7 +1132,7 @@ config NUMA_EMU | |||
1129 | 1132 | ||
1130 | config NODES_SHIFT | 1133 | config NODES_SHIFT |
1131 | int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP | 1134 | int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP |
1132 | range 1 9 if X86_64 | 1135 | range 1 9 |
1133 | default "9" if MAXSMP | 1136 | default "9" if MAXSMP |
1134 | default "6" if X86_64 | 1137 | default "6" if X86_64 |
1135 | default "4" if X86_NUMAQ | 1138 | default "4" if X86_NUMAQ |
diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 1836191839ee..f05d8c91d9e5 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile | |||
@@ -153,34 +153,23 @@ endif | |||
153 | 153 | ||
154 | boot := arch/x86/boot | 154 | boot := arch/x86/boot |
155 | 155 | ||
156 | PHONY += zImage bzImage compressed zlilo bzlilo \ | 156 | BOOT_TARGETS = bzlilo bzdisk fdimage fdimage144 fdimage288 isoimage install |
157 | zdisk bzdisk fdimage fdimage144 fdimage288 isoimage install | 157 | |
158 | PHONY += bzImage $(BOOT_TARGETS) | ||
158 | 159 | ||
159 | # Default kernel to build | 160 | # Default kernel to build |
160 | all: bzImage | 161 | all: bzImage |
161 | 162 | ||
162 | # KBUILD_IMAGE specify target image being built | 163 | # KBUILD_IMAGE specify target image being built |
163 | KBUILD_IMAGE := $(boot)/bzImage | 164 | KBUILD_IMAGE := $(boot)/bzImage |
164 | zImage zlilo zdisk: KBUILD_IMAGE := $(boot)/zImage | ||
165 | 165 | ||
166 | zImage bzImage: vmlinux | 166 | bzImage: vmlinux |
167 | $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE) | 167 | $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE) |
168 | $(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot | 168 | $(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot |
169 | $(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@ | 169 | $(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@ |
170 | 170 | ||
171 | compressed: zImage | 171 | $(BOOT_TARGETS): vmlinux |
172 | 172 | $(Q)$(MAKE) $(build)=$(boot) $@ | |
173 | zlilo bzlilo: vmlinux | ||
174 | $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zlilo | ||
175 | |||
176 | zdisk bzdisk: vmlinux | ||
177 | $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zdisk | ||
178 | |||
179 | fdimage fdimage144 fdimage288 isoimage: vmlinux | ||
180 | $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@ | ||
181 | |||
182 | install: | ||
183 | $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install | ||
184 | 173 | ||
185 | PHONY += vdso_install | 174 | PHONY += vdso_install |
186 | vdso_install: | 175 | vdso_install: |
@@ -205,7 +194,3 @@ define archhelp | |||
205 | echo ' FDARGS="..." arguments for the booted kernel' | 194 | echo ' FDARGS="..." arguments for the booted kernel' |
206 | echo ' FDINITRD=file initrd for the booted kernel' | 195 | echo ' FDINITRD=file initrd for the booted kernel' |
207 | endef | 196 | endef |
208 | |||
209 | CLEAN_FILES += arch/x86/boot/fdimage \ | ||
210 | arch/x86/boot/image.iso \ | ||
211 | arch/x86/boot/mtools.conf | ||
diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index 57a29fecf6bb..fb737ce5888d 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile | |||
@@ -23,6 +23,7 @@ ROOT_DEV := CURRENT | |||
23 | SVGA_MODE := -DSVGA_MODE=NORMAL_VGA | 23 | SVGA_MODE := -DSVGA_MODE=NORMAL_VGA |
24 | 24 | ||
25 | targets := vmlinux.bin setup.bin setup.elf bzImage | 25 | targets := vmlinux.bin setup.bin setup.elf bzImage |
26 | targets += fdimage fdimage144 fdimage288 image.iso mtools.conf | ||
26 | subdir- := compressed | 27 | subdir- := compressed |
27 | 28 | ||
28 | setup-y += a20.o cmdline.o copy.o cpu.o cpucheck.o edd.o | 29 | setup-y += a20.o cmdline.o copy.o cpu.o cpucheck.o edd.o |
@@ -109,9 +110,11 @@ $(obj)/setup.bin: $(obj)/setup.elf FORCE | |||
109 | $(obj)/compressed/vmlinux: FORCE | 110 | $(obj)/compressed/vmlinux: FORCE |
110 | $(Q)$(MAKE) $(build)=$(obj)/compressed $@ | 111 | $(Q)$(MAKE) $(build)=$(obj)/compressed $@ |
111 | 112 | ||
112 | # Set this if you want to pass append arguments to the zdisk/fdimage/isoimage kernel | 113 | # Set this if you want to pass append arguments to the |
114 | # bzdisk/fdimage/isoimage kernel | ||
113 | FDARGS = | 115 | FDARGS = |
114 | # Set this if you want an initrd included with the zdisk/fdimage/isoimage kernel | 116 | # Set this if you want an initrd included with the |
117 | # bzdisk/fdimage/isoimage kernel | ||
115 | FDINITRD = | 118 | FDINITRD = |
116 | 119 | ||
117 | image_cmdline = default linux $(FDARGS) $(if $(FDINITRD),initrd=initrd.img,) | 120 | image_cmdline = default linux $(FDARGS) $(if $(FDINITRD),initrd=initrd.img,) |
@@ -120,7 +123,7 @@ $(obj)/mtools.conf: $(src)/mtools.conf.in | |||
120 | sed -e 's|@OBJ@|$(obj)|g' < $< > $@ | 123 | sed -e 's|@OBJ@|$(obj)|g' < $< > $@ |
121 | 124 | ||
122 | # This requires write access to /dev/fd0 | 125 | # This requires write access to /dev/fd0 |
123 | zdisk: $(BOOTIMAGE) $(obj)/mtools.conf | 126 | bzdisk: $(obj)/bzImage $(obj)/mtools.conf |
124 | MTOOLSRC=$(obj)/mtools.conf mformat a: ; sync | 127 | MTOOLSRC=$(obj)/mtools.conf mformat a: ; sync |
125 | syslinux /dev/fd0 ; sync | 128 | syslinux /dev/fd0 ; sync |
126 | echo '$(image_cmdline)' | \ | 129 | echo '$(image_cmdline)' | \ |
@@ -128,10 +131,10 @@ zdisk: $(BOOTIMAGE) $(obj)/mtools.conf | |||
128 | if [ -f '$(FDINITRD)' ] ; then \ | 131 | if [ -f '$(FDINITRD)' ] ; then \ |
129 | MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' a:initrd.img ; \ | 132 | MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' a:initrd.img ; \ |
130 | fi | 133 | fi |
131 | MTOOLSRC=$(obj)/mtools.conf mcopy $(BOOTIMAGE) a:linux ; sync | 134 | MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage a:linux ; sync |
132 | 135 | ||
133 | # These require being root or having syslinux 2.02 or higher installed | 136 | # These require being root or having syslinux 2.02 or higher installed |
134 | fdimage fdimage144: $(BOOTIMAGE) $(obj)/mtools.conf | 137 | fdimage fdimage144: $(obj)/bzImage $(obj)/mtools.conf |
135 | dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=1440 | 138 | dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=1440 |
136 | MTOOLSRC=$(obj)/mtools.conf mformat v: ; sync | 139 | MTOOLSRC=$(obj)/mtools.conf mformat v: ; sync |
137 | syslinux $(obj)/fdimage ; sync | 140 | syslinux $(obj)/fdimage ; sync |
@@ -140,9 +143,9 @@ fdimage fdimage144: $(BOOTIMAGE) $(obj)/mtools.conf | |||
140 | if [ -f '$(FDINITRD)' ] ; then \ | 143 | if [ -f '$(FDINITRD)' ] ; then \ |
141 | MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' v:initrd.img ; \ | 144 | MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' v:initrd.img ; \ |
142 | fi | 145 | fi |
143 | MTOOLSRC=$(obj)/mtools.conf mcopy $(BOOTIMAGE) v:linux ; sync | 146 | MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage v:linux ; sync |
144 | 147 | ||
145 | fdimage288: $(BOOTIMAGE) $(obj)/mtools.conf | 148 | fdimage288: $(obj)/bzImage $(obj)/mtools.conf |
146 | dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=2880 | 149 | dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=2880 |
147 | MTOOLSRC=$(obj)/mtools.conf mformat w: ; sync | 150 | MTOOLSRC=$(obj)/mtools.conf mformat w: ; sync |
148 | syslinux $(obj)/fdimage ; sync | 151 | syslinux $(obj)/fdimage ; sync |
@@ -151,9 +154,9 @@ fdimage288: $(BOOTIMAGE) $(obj)/mtools.conf | |||
151 | if [ -f '$(FDINITRD)' ] ; then \ | 154 | if [ -f '$(FDINITRD)' ] ; then \ |
152 | MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' w:initrd.img ; \ | 155 | MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' w:initrd.img ; \ |
153 | fi | 156 | fi |
154 | MTOOLSRC=$(obj)/mtools.conf mcopy $(BOOTIMAGE) w:linux ; sync | 157 | MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage w:linux ; sync |
155 | 158 | ||
156 | isoimage: $(BOOTIMAGE) | 159 | isoimage: $(obj)/bzImage |
157 | -rm -rf $(obj)/isoimage | 160 | -rm -rf $(obj)/isoimage |
158 | mkdir $(obj)/isoimage | 161 | mkdir $(obj)/isoimage |
159 | for i in lib lib64 share end ; do \ | 162 | for i in lib lib64 share end ; do \ |
@@ -163,7 +166,7 @@ isoimage: $(BOOTIMAGE) | |||
163 | fi ; \ | 166 | fi ; \ |
164 | if [ $$i = end ] ; then exit 1 ; fi ; \ | 167 | if [ $$i = end ] ; then exit 1 ; fi ; \ |
165 | done | 168 | done |
166 | cp $(BOOTIMAGE) $(obj)/isoimage/linux | 169 | cp $(obj)/bzImage $(obj)/isoimage/linux |
167 | echo '$(image_cmdline)' > $(obj)/isoimage/isolinux.cfg | 170 | echo '$(image_cmdline)' > $(obj)/isoimage/isolinux.cfg |
168 | if [ -f '$(FDINITRD)' ] ; then \ | 171 | if [ -f '$(FDINITRD)' ] ; then \ |
169 | cp '$(FDINITRD)' $(obj)/isoimage/initrd.img ; \ | 172 | cp '$(FDINITRD)' $(obj)/isoimage/initrd.img ; \ |
@@ -174,12 +177,13 @@ isoimage: $(BOOTIMAGE) | |||
174 | isohybrid $(obj)/image.iso 2>/dev/null || true | 177 | isohybrid $(obj)/image.iso 2>/dev/null || true |
175 | rm -rf $(obj)/isoimage | 178 | rm -rf $(obj)/isoimage |
176 | 179 | ||
177 | zlilo: $(BOOTIMAGE) | 180 | bzlilo: $(obj)/bzImage |
178 | if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi | 181 | if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi |
179 | if [ -f $(INSTALL_PATH)/System.map ]; then mv $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi | 182 | if [ -f $(INSTALL_PATH)/System.map ]; then mv $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi |
180 | cat $(BOOTIMAGE) > $(INSTALL_PATH)/vmlinuz | 183 | cat $(obj)/bzImage > $(INSTALL_PATH)/vmlinuz |
181 | cp System.map $(INSTALL_PATH)/ | 184 | cp System.map $(INSTALL_PATH)/ |
182 | if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi | 185 | if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi |
183 | 186 | ||
184 | install: | 187 | install: |
185 | sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)" | 188 | sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/bzImage \ |
189 | System.map "$(INSTALL_PATH)" | ||
diff --git a/arch/x86/include/asm/cpu_debug.h b/arch/x86/include/asm/cpu_debug.h index d24d64fcee04..56f1635e4617 100755 --- a/arch/x86/include/asm/cpu_debug.h +++ b/arch/x86/include/asm/cpu_debug.h | |||
@@ -171,16 +171,22 @@ struct cpu_private { | |||
171 | struct cpu_debug_base { | 171 | struct cpu_debug_base { |
172 | char *name; /* Register name */ | 172 | char *name; /* Register name */ |
173 | unsigned flag; /* Register flag */ | 173 | unsigned flag; /* Register flag */ |
174 | unsigned write; /* Register write flag */ | ||
174 | }; | 175 | }; |
175 | 176 | ||
176 | struct cpu_cpuX_base { | 177 | /* |
177 | struct dentry *dentry; /* Register dentry */ | 178 | * Currently it looks similar to cpu_debug_base but once we add more files |
178 | int init; /* Register index file */ | 179 | * cpu_file_base will go in different direction |
179 | }; | 180 | */ |
180 | |||
181 | struct cpu_file_base { | 181 | struct cpu_file_base { |
182 | char *name; /* Register file name */ | 182 | char *name; /* Register file name */ |
183 | unsigned flag; /* Register file flag */ | 183 | unsigned flag; /* Register file flag */ |
184 | unsigned write; /* Register write flag */ | ||
185 | }; | ||
186 | |||
187 | struct cpu_cpuX_base { | ||
188 | struct dentry *dentry; /* Register dentry */ | ||
189 | int init; /* Register index file */ | ||
184 | }; | 190 | }; |
185 | 191 | ||
186 | struct cpu_debug_range { | 192 | struct cpu_debug_range { |
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 76139506c3e4..ae85a8d66a30 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h | |||
@@ -75,9 +75,9 @@ struct cpuinfo_x86 { | |||
75 | #else | 75 | #else |
76 | /* Number of 4K pages in DTLB/ITLB combined(in pages): */ | 76 | /* Number of 4K pages in DTLB/ITLB combined(in pages): */ |
77 | int x86_tlbsize; | 77 | int x86_tlbsize; |
78 | #endif | ||
78 | __u8 x86_virt_bits; | 79 | __u8 x86_virt_bits; |
79 | __u8 x86_phys_bits; | 80 | __u8 x86_phys_bits; |
80 | #endif | ||
81 | /* CPUID returned core id bits: */ | 81 | /* CPUID returned core id bits: */ |
82 | __u8 x86_coreid_bits; | 82 | __u8 x86_coreid_bits; |
83 | /* Max extended CPUID function supported: */ | 83 | /* Max extended CPUID function supported: */ |
@@ -391,6 +391,9 @@ DECLARE_PER_CPU(union irq_stack_union, irq_stack_union); | |||
391 | DECLARE_INIT_PER_CPU(irq_stack_union); | 391 | DECLARE_INIT_PER_CPU(irq_stack_union); |
392 | 392 | ||
393 | DECLARE_PER_CPU(char *, irq_stack_ptr); | 393 | DECLARE_PER_CPU(char *, irq_stack_ptr); |
394 | DECLARE_PER_CPU(unsigned int, irq_count); | ||
395 | extern unsigned long kernel_eflags; | ||
396 | extern asmlinkage void ignore_sysret(void); | ||
394 | #else /* X86_64 */ | 397 | #else /* X86_64 */ |
395 | #ifdef CONFIG_CC_STACKPROTECTOR | 398 | #ifdef CONFIG_CC_STACKPROTECTOR |
396 | DECLARE_PER_CPU(unsigned long, stack_canary); | 399 | DECLARE_PER_CPU(unsigned long, stack_canary); |
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h index 5e79ca694326..9c371e4a9fa6 100644 --- a/arch/x86/include/asm/xen/hypercall.h +++ b/arch/x86/include/asm/xen/hypercall.h | |||
@@ -296,6 +296,8 @@ HYPERVISOR_get_debugreg(int reg) | |||
296 | static inline int | 296 | static inline int |
297 | HYPERVISOR_update_descriptor(u64 ma, u64 desc) | 297 | HYPERVISOR_update_descriptor(u64 ma, u64 desc) |
298 | { | 298 | { |
299 | if (sizeof(u64) == sizeof(long)) | ||
300 | return _hypercall2(int, update_descriptor, ma, desc); | ||
299 | return _hypercall4(int, update_descriptor, ma, ma>>32, desc, desc>>32); | 301 | return _hypercall4(int, update_descriptor, ma, ma>>32, desc, desc>>32); |
300 | } | 302 | } |
301 | 303 | ||
diff --git a/arch/x86/kernel/check.c b/arch/x86/kernel/check.c index 2ac0ab71412a..b617b1164f1e 100644 --- a/arch/x86/kernel/check.c +++ b/arch/x86/kernel/check.c | |||
@@ -83,7 +83,7 @@ void __init setup_bios_corruption_check(void) | |||
83 | u64 size; | 83 | u64 size; |
84 | addr = find_e820_area_size(addr, &size, PAGE_SIZE); | 84 | addr = find_e820_area_size(addr, &size, PAGE_SIZE); |
85 | 85 | ||
86 | if (addr == 0) | 86 | if (!(addr + 1)) |
87 | break; | 87 | break; |
88 | 88 | ||
89 | if ((addr + size) > corruption_check_size) | 89 | if ((addr + size) > corruption_check_size) |
diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c index 6882a735d9c0..8220ae69849d 100644 --- a/arch/x86/kernel/cpu/addon_cpuid_features.c +++ b/arch/x86/kernel/cpu/addon_cpuid_features.c | |||
@@ -29,7 +29,7 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c) | |||
29 | u32 regs[4]; | 29 | u32 regs[4]; |
30 | const struct cpuid_bit *cb; | 30 | const struct cpuid_bit *cb; |
31 | 31 | ||
32 | static const struct cpuid_bit cpuid_bits[] = { | 32 | static const struct cpuid_bit __cpuinitconst cpuid_bits[] = { |
33 | { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006 }, | 33 | { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006 }, |
34 | { 0, 0, 0, 0 } | 34 | { 0, 0, 0, 0 } |
35 | }; | 35 | }; |
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index f47df59016c5..7e4a459daa64 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -502,7 +502,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c, unsigned int | |||
502 | } | 502 | } |
503 | #endif | 503 | #endif |
504 | 504 | ||
505 | static struct cpu_dev amd_cpu_dev __cpuinitdata = { | 505 | static const struct cpu_dev __cpuinitconst amd_cpu_dev = { |
506 | .c_vendor = "AMD", | 506 | .c_vendor = "AMD", |
507 | .c_ident = { "AuthenticAMD" }, | 507 | .c_ident = { "AuthenticAMD" }, |
508 | #ifdef CONFIG_X86_32 | 508 | #ifdef CONFIG_X86_32 |
diff --git a/arch/x86/kernel/cpu/centaur.c b/arch/x86/kernel/cpu/centaur.c index 89bfdd9cacc6..983e0830f0da 100644 --- a/arch/x86/kernel/cpu/centaur.c +++ b/arch/x86/kernel/cpu/centaur.c | |||
@@ -468,7 +468,7 @@ centaur_size_cache(struct cpuinfo_x86 *c, unsigned int size) | |||
468 | return size; | 468 | return size; |
469 | } | 469 | } |
470 | 470 | ||
471 | static struct cpu_dev centaur_cpu_dev __cpuinitdata = { | 471 | static const struct cpu_dev __cpuinitconst centaur_cpu_dev = { |
472 | .c_vendor = "Centaur", | 472 | .c_vendor = "Centaur", |
473 | .c_ident = { "CentaurHauls" }, | 473 | .c_ident = { "CentaurHauls" }, |
474 | .c_early_init = early_init_centaur, | 474 | .c_early_init = early_init_centaur, |
diff --git a/arch/x86/kernel/cpu/centaur_64.c b/arch/x86/kernel/cpu/centaur_64.c index a1625f5a1e78..51b09c48c9c7 100644 --- a/arch/x86/kernel/cpu/centaur_64.c +++ b/arch/x86/kernel/cpu/centaur_64.c | |||
@@ -25,7 +25,7 @@ static void __cpuinit init_centaur(struct cpuinfo_x86 *c) | |||
25 | set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); | 25 | set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); |
26 | } | 26 | } |
27 | 27 | ||
28 | static struct cpu_dev centaur_cpu_dev __cpuinitdata = { | 28 | static const struct cpu_dev centaur_cpu_dev __cpuinitconst = { |
29 | .c_vendor = "Centaur", | 29 | .c_vendor = "Centaur", |
30 | .c_ident = { "CentaurHauls" }, | 30 | .c_ident = { "CentaurHauls" }, |
31 | .c_early_init = early_init_centaur, | 31 | .c_early_init = early_init_centaur, |
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index f8869978bbb7..e2962cc1e27b 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -1,52 +1,52 @@ | |||
1 | #include <linux/init.h> | ||
2 | #include <linux/kernel.h> | ||
3 | #include <linux/sched.h> | ||
4 | #include <linux/string.h> | ||
5 | #include <linux/bootmem.h> | 1 | #include <linux/bootmem.h> |
2 | #include <linux/linkage.h> | ||
6 | #include <linux/bitops.h> | 3 | #include <linux/bitops.h> |
4 | #include <linux/kernel.h> | ||
7 | #include <linux/module.h> | 5 | #include <linux/module.h> |
8 | #include <linux/kgdb.h> | 6 | #include <linux/percpu.h> |
9 | #include <linux/topology.h> | 7 | #include <linux/string.h> |
10 | #include <linux/delay.h> | 8 | #include <linux/delay.h> |
9 | #include <linux/sched.h> | ||
10 | #include <linux/init.h> | ||
11 | #include <linux/kgdb.h> | ||
11 | #include <linux/smp.h> | 12 | #include <linux/smp.h> |
12 | #include <linux/percpu.h> | 13 | #include <linux/io.h> |
13 | #include <asm/i387.h> | 14 | |
14 | #include <asm/msr.h> | 15 | #include <asm/stackprotector.h> |
15 | #include <asm/io.h> | ||
16 | #include <asm/linkage.h> | ||
17 | #include <asm/mmu_context.h> | 16 | #include <asm/mmu_context.h> |
17 | #include <asm/hypervisor.h> | ||
18 | #include <asm/processor.h> | ||
19 | #include <asm/sections.h> | ||
20 | #include <asm/topology.h> | ||
21 | #include <asm/cpumask.h> | ||
22 | #include <asm/pgtable.h> | ||
23 | #include <asm/atomic.h> | ||
24 | #include <asm/proto.h> | ||
25 | #include <asm/setup.h> | ||
26 | #include <asm/apic.h> | ||
27 | #include <asm/desc.h> | ||
28 | #include <asm/i387.h> | ||
18 | #include <asm/mtrr.h> | 29 | #include <asm/mtrr.h> |
30 | #include <asm/numa.h> | ||
31 | #include <asm/asm.h> | ||
32 | #include <asm/cpu.h> | ||
19 | #include <asm/mce.h> | 33 | #include <asm/mce.h> |
34 | #include <asm/msr.h> | ||
20 | #include <asm/pat.h> | 35 | #include <asm/pat.h> |
21 | #include <asm/asm.h> | ||
22 | #include <asm/numa.h> | ||
23 | #include <asm/smp.h> | 36 | #include <asm/smp.h> |
24 | #include <asm/cpu.h> | ||
25 | #include <asm/cpumask.h> | ||
26 | #include <asm/apic.h> | ||
27 | 37 | ||
28 | #ifdef CONFIG_X86_LOCAL_APIC | 38 | #ifdef CONFIG_X86_LOCAL_APIC |
29 | #include <asm/uv/uv.h> | 39 | #include <asm/uv/uv.h> |
30 | #endif | 40 | #endif |
31 | 41 | ||
32 | #include <asm/pgtable.h> | ||
33 | #include <asm/processor.h> | ||
34 | #include <asm/desc.h> | ||
35 | #include <asm/atomic.h> | ||
36 | #include <asm/proto.h> | ||
37 | #include <asm/sections.h> | ||
38 | #include <asm/setup.h> | ||
39 | #include <asm/hypervisor.h> | ||
40 | #include <asm/stackprotector.h> | ||
41 | |||
42 | #include "cpu.h" | 42 | #include "cpu.h" |
43 | 43 | ||
44 | #ifdef CONFIG_X86_64 | 44 | #ifdef CONFIG_X86_64 |
45 | 45 | ||
46 | /* all of these masks are initialized in setup_cpu_local_masks() */ | 46 | /* all of these masks are initialized in setup_cpu_local_masks() */ |
47 | cpumask_var_t cpu_callin_mask; | ||
48 | cpumask_var_t cpu_callout_mask; | ||
49 | cpumask_var_t cpu_initialized_mask; | 47 | cpumask_var_t cpu_initialized_mask; |
48 | cpumask_var_t cpu_callout_mask; | ||
49 | cpumask_var_t cpu_callin_mask; | ||
50 | 50 | ||
51 | /* representing cpus for which sibling maps can be computed */ | 51 | /* representing cpus for which sibling maps can be computed */ |
52 | cpumask_var_t cpu_sibling_setup_mask; | 52 | cpumask_var_t cpu_sibling_setup_mask; |
@@ -62,15 +62,15 @@ void __init setup_cpu_local_masks(void) | |||
62 | 62 | ||
63 | #else /* CONFIG_X86_32 */ | 63 | #else /* CONFIG_X86_32 */ |
64 | 64 | ||
65 | cpumask_t cpu_callin_map; | 65 | cpumask_t cpu_sibling_setup_map; |
66 | cpumask_t cpu_callout_map; | 66 | cpumask_t cpu_callout_map; |
67 | cpumask_t cpu_initialized; | 67 | cpumask_t cpu_initialized; |
68 | cpumask_t cpu_sibling_setup_map; | 68 | cpumask_t cpu_callin_map; |
69 | 69 | ||
70 | #endif /* CONFIG_X86_32 */ | 70 | #endif /* CONFIG_X86_32 */ |
71 | 71 | ||
72 | 72 | ||
73 | static struct cpu_dev *this_cpu __cpuinitdata; | 73 | static const struct cpu_dev *this_cpu __cpuinitdata; |
74 | 74 | ||
75 | DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { | 75 | DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { |
76 | #ifdef CONFIG_X86_64 | 76 | #ifdef CONFIG_X86_64 |
@@ -79,48 +79,48 @@ DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { | |||
79 | * IRET will check the segment types kkeil 2000/10/28 | 79 | * IRET will check the segment types kkeil 2000/10/28 |
80 | * Also sysret mandates a special GDT layout | 80 | * Also sysret mandates a special GDT layout |
81 | * | 81 | * |
82 | * The TLS descriptors are currently at a different place compared to i386. | 82 | * TLS descriptors are currently at a different place compared to i386. |
83 | * Hopefully nobody expects them at a fixed place (Wine?) | 83 | * Hopefully nobody expects them at a fixed place (Wine?) |
84 | */ | 84 | */ |
85 | [GDT_ENTRY_KERNEL32_CS] = { { { 0x0000ffff, 0x00cf9b00 } } }, | 85 | [GDT_ENTRY_KERNEL32_CS] = { { { 0x0000ffff, 0x00cf9b00 } } }, |
86 | [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00af9b00 } } }, | 86 | [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00af9b00 } } }, |
87 | [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9300 } } }, | 87 | [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9300 } } }, |
88 | [GDT_ENTRY_DEFAULT_USER32_CS] = { { { 0x0000ffff, 0x00cffb00 } } }, | 88 | [GDT_ENTRY_DEFAULT_USER32_CS] = { { { 0x0000ffff, 0x00cffb00 } } }, |
89 | [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff300 } } }, | 89 | [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff300 } } }, |
90 | [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00affb00 } } }, | 90 | [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00affb00 } } }, |
91 | #else | 91 | #else |
92 | [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } }, | 92 | [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } }, |
93 | [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } }, | 93 | [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } }, |
94 | [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } }, | 94 | [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } }, |
95 | [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff200 } } }, | 95 | [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff200 } } }, |
96 | /* | 96 | /* |
97 | * Segments used for calling PnP BIOS have byte granularity. | 97 | * Segments used for calling PnP BIOS have byte granularity. |
98 | * They code segments and data segments have fixed 64k limits, | 98 | * They code segments and data segments have fixed 64k limits, |
99 | * the transfer segment sizes are set at run time. | 99 | * the transfer segment sizes are set at run time. |
100 | */ | 100 | */ |
101 | /* 32-bit code */ | 101 | /* 32-bit code */ |
102 | [GDT_ENTRY_PNPBIOS_CS32] = { { { 0x0000ffff, 0x00409a00 } } }, | 102 | [GDT_ENTRY_PNPBIOS_CS32] = { { { 0x0000ffff, 0x00409a00 } } }, |
103 | /* 16-bit code */ | 103 | /* 16-bit code */ |
104 | [GDT_ENTRY_PNPBIOS_CS16] = { { { 0x0000ffff, 0x00009a00 } } }, | 104 | [GDT_ENTRY_PNPBIOS_CS16] = { { { 0x0000ffff, 0x00009a00 } } }, |
105 | /* 16-bit data */ | 105 | /* 16-bit data */ |
106 | [GDT_ENTRY_PNPBIOS_DS] = { { { 0x0000ffff, 0x00009200 } } }, | 106 | [GDT_ENTRY_PNPBIOS_DS] = { { { 0x0000ffff, 0x00009200 } } }, |
107 | /* 16-bit data */ | 107 | /* 16-bit data */ |
108 | [GDT_ENTRY_PNPBIOS_TS1] = { { { 0x00000000, 0x00009200 } } }, | 108 | [GDT_ENTRY_PNPBIOS_TS1] = { { { 0x00000000, 0x00009200 } } }, |
109 | /* 16-bit data */ | 109 | /* 16-bit data */ |
110 | [GDT_ENTRY_PNPBIOS_TS2] = { { { 0x00000000, 0x00009200 } } }, | 110 | [GDT_ENTRY_PNPBIOS_TS2] = { { { 0x00000000, 0x00009200 } } }, |
111 | /* | 111 | /* |
112 | * The APM segments have byte granularity and their bases | 112 | * The APM segments have byte granularity and their bases |
113 | * are set at run time. All have 64k limits. | 113 | * are set at run time. All have 64k limits. |
114 | */ | 114 | */ |
115 | /* 32-bit code */ | 115 | /* 32-bit code */ |
116 | [GDT_ENTRY_APMBIOS_BASE] = { { { 0x0000ffff, 0x00409a00 } } }, | 116 | [GDT_ENTRY_APMBIOS_BASE] = { { { 0x0000ffff, 0x00409a00 } } }, |
117 | /* 16-bit code */ | 117 | /* 16-bit code */ |
118 | [GDT_ENTRY_APMBIOS_BASE+1] = { { { 0x0000ffff, 0x00009a00 } } }, | 118 | [GDT_ENTRY_APMBIOS_BASE+1] = { { { 0x0000ffff, 0x00009a00 } } }, |
119 | /* data */ | 119 | /* data */ |
120 | [GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } }, | 120 | [GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } }, |
121 | 121 | ||
122 | [GDT_ENTRY_ESPFIX_SS] = { { { 0x00000000, 0x00c09200 } } }, | 122 | [GDT_ENTRY_ESPFIX_SS] = { { { 0x00000000, 0x00c09200 } } }, |
123 | [GDT_ENTRY_PERCPU] = { { { 0x0000ffff, 0x00cf9200 } } }, | 123 | [GDT_ENTRY_PERCPU] = { { { 0x0000ffff, 0x00cf9200 } } }, |
124 | GDT_STACK_CANARY_INIT | 124 | GDT_STACK_CANARY_INIT |
125 | #endif | 125 | #endif |
126 | } }; | 126 | } }; |
@@ -164,16 +164,17 @@ static inline int flag_is_changeable_p(u32 flag) | |||
164 | * the CPUID. Add "volatile" to not allow gcc to | 164 | * the CPUID. Add "volatile" to not allow gcc to |
165 | * optimize the subsequent calls to this function. | 165 | * optimize the subsequent calls to this function. |
166 | */ | 166 | */ |
167 | asm volatile ("pushfl\n\t" | 167 | asm volatile ("pushfl \n\t" |
168 | "pushfl\n\t" | 168 | "pushfl \n\t" |
169 | "popl %0\n\t" | 169 | "popl %0 \n\t" |
170 | "movl %0,%1\n\t" | 170 | "movl %0, %1 \n\t" |
171 | "xorl %2,%0\n\t" | 171 | "xorl %2, %0 \n\t" |
172 | "pushl %0\n\t" | 172 | "pushl %0 \n\t" |
173 | "popfl\n\t" | 173 | "popfl \n\t" |
174 | "pushfl\n\t" | 174 | "pushfl \n\t" |
175 | "popl %0\n\t" | 175 | "popl %0 \n\t" |
176 | "popfl\n\t" | 176 | "popfl \n\t" |
177 | |||
177 | : "=&r" (f1), "=&r" (f2) | 178 | : "=&r" (f1), "=&r" (f2) |
178 | : "ir" (flag)); | 179 | : "ir" (flag)); |
179 | 180 | ||
@@ -188,18 +189,22 @@ static int __cpuinit have_cpuid_p(void) | |||
188 | 189 | ||
189 | static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) | 190 | static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) |
190 | { | 191 | { |
191 | if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr) { | 192 | unsigned long lo, hi; |
192 | /* Disable processor serial number */ | 193 | |
193 | unsigned long lo, hi; | 194 | if (!cpu_has(c, X86_FEATURE_PN) || !disable_x86_serial_nr) |
194 | rdmsr(MSR_IA32_BBL_CR_CTL, lo, hi); | 195 | return; |
195 | lo |= 0x200000; | 196 | |
196 | wrmsr(MSR_IA32_BBL_CR_CTL, lo, hi); | 197 | /* Disable processor serial number: */ |
197 | printk(KERN_NOTICE "CPU serial number disabled.\n"); | 198 | |
198 | clear_cpu_cap(c, X86_FEATURE_PN); | 199 | rdmsr(MSR_IA32_BBL_CR_CTL, lo, hi); |
199 | 200 | lo |= 0x200000; | |
200 | /* Disabling the serial number may affect the cpuid level */ | 201 | wrmsr(MSR_IA32_BBL_CR_CTL, lo, hi); |
201 | c->cpuid_level = cpuid_eax(0); | 202 | |
202 | } | 203 | printk(KERN_NOTICE "CPU serial number disabled.\n"); |
204 | clear_cpu_cap(c, X86_FEATURE_PN); | ||
205 | |||
206 | /* Disabling the serial number may affect the cpuid level */ | ||
207 | c->cpuid_level = cpuid_eax(0); | ||
203 | } | 208 | } |
204 | 209 | ||
205 | static int __init x86_serial_nr_setup(char *s) | 210 | static int __init x86_serial_nr_setup(char *s) |
@@ -232,6 +237,7 @@ struct cpuid_dependent_feature { | |||
232 | u32 feature; | 237 | u32 feature; |
233 | u32 level; | 238 | u32 level; |
234 | }; | 239 | }; |
240 | |||
235 | static const struct cpuid_dependent_feature __cpuinitconst | 241 | static const struct cpuid_dependent_feature __cpuinitconst |
236 | cpuid_dependent_features[] = { | 242 | cpuid_dependent_features[] = { |
237 | { X86_FEATURE_MWAIT, 0x00000005 }, | 243 | { X86_FEATURE_MWAIT, 0x00000005 }, |
@@ -243,7 +249,11 @@ cpuid_dependent_features[] = { | |||
243 | static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn) | 249 | static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn) |
244 | { | 250 | { |
245 | const struct cpuid_dependent_feature *df; | 251 | const struct cpuid_dependent_feature *df; |
252 | |||
246 | for (df = cpuid_dependent_features; df->feature; df++) { | 253 | for (df = cpuid_dependent_features; df->feature; df++) { |
254 | |||
255 | if (!cpu_has(c, df->feature)) | ||
256 | continue; | ||
247 | /* | 257 | /* |
248 | * Note: cpuid_level is set to -1 if unavailable, but | 258 | * Note: cpuid_level is set to -1 if unavailable, but |
249 | * extended_extended_level is set to 0 if unavailable | 259 | * extended_extended_level is set to 0 if unavailable |
@@ -251,32 +261,32 @@ static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn) | |||
251 | * when signed; hence the weird messing around with | 261 | * when signed; hence the weird messing around with |
252 | * signs here... | 262 | * signs here... |
253 | */ | 263 | */ |
254 | if (cpu_has(c, df->feature) && | 264 | if (!((s32)df->level < 0 ? |
255 | ((s32)df->level < 0 ? | ||
256 | (u32)df->level > (u32)c->extended_cpuid_level : | 265 | (u32)df->level > (u32)c->extended_cpuid_level : |
257 | (s32)df->level > (s32)c->cpuid_level)) { | 266 | (s32)df->level > (s32)c->cpuid_level)) |
258 | clear_cpu_cap(c, df->feature); | 267 | continue; |
259 | if (warn) | 268 | |
260 | printk(KERN_WARNING | 269 | clear_cpu_cap(c, df->feature); |
261 | "CPU: CPU feature %s disabled " | 270 | if (!warn) |
262 | "due to lack of CPUID level 0x%x\n", | 271 | continue; |
263 | x86_cap_flags[df->feature], | 272 | |
264 | df->level); | 273 | printk(KERN_WARNING |
265 | } | 274 | "CPU: CPU feature %s disabled, no CPUID level 0x%x\n", |
275 | x86_cap_flags[df->feature], df->level); | ||
266 | } | 276 | } |
267 | } | 277 | } |
268 | 278 | ||
269 | /* | 279 | /* |
270 | * Naming convention should be: <Name> [(<Codename>)] | 280 | * Naming convention should be: <Name> [(<Codename>)] |
271 | * This table only is used unless init_<vendor>() below doesn't set it; | 281 | * This table only is used unless init_<vendor>() below doesn't set it; |
272 | * in particular, if CPUID levels 0x80000002..4 are supported, this isn't used | 282 | * in particular, if CPUID levels 0x80000002..4 are supported, this |
273 | * | 283 | * isn't used |
274 | */ | 284 | */ |
275 | 285 | ||
276 | /* Look up CPU names by table lookup. */ | 286 | /* Look up CPU names by table lookup. */ |
277 | static char __cpuinit *table_lookup_model(struct cpuinfo_x86 *c) | 287 | static const char *__cpuinit table_lookup_model(struct cpuinfo_x86 *c) |
278 | { | 288 | { |
279 | struct cpu_model_info *info; | 289 | const struct cpu_model_info *info; |
280 | 290 | ||
281 | if (c->x86_model >= 16) | 291 | if (c->x86_model >= 16) |
282 | return NULL; /* Range check */ | 292 | return NULL; /* Range check */ |
@@ -307,8 +317,10 @@ void load_percpu_segment(int cpu) | |||
307 | load_stack_canary_segment(); | 317 | load_stack_canary_segment(); |
308 | } | 318 | } |
309 | 319 | ||
310 | /* Current gdt points %fs at the "master" per-cpu area: after this, | 320 | /* |
311 | * it's on the real one. */ | 321 | * Current gdt points %fs at the "master" per-cpu area: after this, |
322 | * it's on the real one. | ||
323 | */ | ||
312 | void switch_to_new_gdt(int cpu) | 324 | void switch_to_new_gdt(int cpu) |
313 | { | 325 | { |
314 | struct desc_ptr gdt_descr; | 326 | struct desc_ptr gdt_descr; |
@@ -321,7 +333,7 @@ void switch_to_new_gdt(int cpu) | |||
321 | load_percpu_segment(cpu); | 333 | load_percpu_segment(cpu); |
322 | } | 334 | } |
323 | 335 | ||
324 | static struct cpu_dev *cpu_devs[X86_VENDOR_NUM] = {}; | 336 | static const struct cpu_dev *__cpuinitdata cpu_devs[X86_VENDOR_NUM] = {}; |
325 | 337 | ||
326 | static void __cpuinit default_init(struct cpuinfo_x86 *c) | 338 | static void __cpuinit default_init(struct cpuinfo_x86 *c) |
327 | { | 339 | { |
@@ -340,7 +352,7 @@ static void __cpuinit default_init(struct cpuinfo_x86 *c) | |||
340 | #endif | 352 | #endif |
341 | } | 353 | } |
342 | 354 | ||
343 | static struct cpu_dev __cpuinitdata default_cpu = { | 355 | static const struct cpu_dev __cpuinitconst default_cpu = { |
344 | .c_init = default_init, | 356 | .c_init = default_init, |
345 | .c_vendor = "Unknown", | 357 | .c_vendor = "Unknown", |
346 | .c_x86_vendor = X86_VENDOR_UNKNOWN, | 358 | .c_x86_vendor = X86_VENDOR_UNKNOWN, |
@@ -354,22 +366,24 @@ static void __cpuinit get_model_name(struct cpuinfo_x86 *c) | |||
354 | if (c->extended_cpuid_level < 0x80000004) | 366 | if (c->extended_cpuid_level < 0x80000004) |
355 | return; | 367 | return; |
356 | 368 | ||
357 | v = (unsigned int *) c->x86_model_id; | 369 | v = (unsigned int *)c->x86_model_id; |
358 | cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]); | 370 | cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]); |
359 | cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]); | 371 | cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]); |
360 | cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]); | 372 | cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]); |
361 | c->x86_model_id[48] = 0; | 373 | c->x86_model_id[48] = 0; |
362 | 374 | ||
363 | /* Intel chips right-justify this string for some dumb reason; | 375 | /* |
364 | undo that brain damage */ | 376 | * Intel chips right-justify this string for some dumb reason; |
377 | * undo that brain damage: | ||
378 | */ | ||
365 | p = q = &c->x86_model_id[0]; | 379 | p = q = &c->x86_model_id[0]; |
366 | while (*p == ' ') | 380 | while (*p == ' ') |
367 | p++; | 381 | p++; |
368 | if (p != q) { | 382 | if (p != q) { |
369 | while (*p) | 383 | while (*p) |
370 | *q++ = *p++; | 384 | *q++ = *p++; |
371 | while (q <= &c->x86_model_id[48]) | 385 | while (q <= &c->x86_model_id[48]) |
372 | *q++ = '\0'; /* Zero-pad the rest */ | 386 | *q++ = '\0'; /* Zero-pad the rest */ |
373 | } | 387 | } |
374 | } | 388 | } |
375 | 389 | ||
@@ -438,27 +452,30 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
438 | 452 | ||
439 | if (smp_num_siblings == 1) { | 453 | if (smp_num_siblings == 1) { |
440 | printk(KERN_INFO "CPU: Hyper-Threading is disabled\n"); | 454 | printk(KERN_INFO "CPU: Hyper-Threading is disabled\n"); |
441 | } else if (smp_num_siblings > 1) { | 455 | goto out; |
456 | } | ||
442 | 457 | ||
443 | if (smp_num_siblings > nr_cpu_ids) { | 458 | if (smp_num_siblings <= 1) |
444 | printk(KERN_WARNING "CPU: Unsupported number of siblings %d", | 459 | goto out; |
445 | smp_num_siblings); | 460 | |
446 | smp_num_siblings = 1; | 461 | if (smp_num_siblings > nr_cpu_ids) { |
447 | return; | 462 | pr_warning("CPU: Unsupported number of siblings %d", |
448 | } | 463 | smp_num_siblings); |
464 | smp_num_siblings = 1; | ||
465 | return; | ||
466 | } | ||
449 | 467 | ||
450 | index_msb = get_count_order(smp_num_siblings); | 468 | index_msb = get_count_order(smp_num_siblings); |
451 | c->phys_proc_id = apic->phys_pkg_id(c->initial_apicid, index_msb); | 469 | c->phys_proc_id = apic->phys_pkg_id(c->initial_apicid, index_msb); |
452 | 470 | ||
453 | smp_num_siblings = smp_num_siblings / c->x86_max_cores; | 471 | smp_num_siblings = smp_num_siblings / c->x86_max_cores; |
454 | 472 | ||
455 | index_msb = get_count_order(smp_num_siblings); | 473 | index_msb = get_count_order(smp_num_siblings); |
456 | 474 | ||
457 | core_bits = get_count_order(c->x86_max_cores); | 475 | core_bits = get_count_order(c->x86_max_cores); |
458 | 476 | ||
459 | c->cpu_core_id = apic->phys_pkg_id(c->initial_apicid, index_msb) & | 477 | c->cpu_core_id = apic->phys_pkg_id(c->initial_apicid, index_msb) & |
460 | ((1 << core_bits) - 1); | 478 | ((1 << core_bits) - 1); |
461 | } | ||
462 | 479 | ||
463 | out: | 480 | out: |
464 | if ((c->x86_max_cores * smp_num_siblings) > 1) { | 481 | if ((c->x86_max_cores * smp_num_siblings) > 1) { |
@@ -473,8 +490,8 @@ out: | |||
473 | static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c) | 490 | static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c) |
474 | { | 491 | { |
475 | char *v = c->x86_vendor_id; | 492 | char *v = c->x86_vendor_id; |
476 | int i; | ||
477 | static int printed; | 493 | static int printed; |
494 | int i; | ||
478 | 495 | ||
479 | for (i = 0; i < X86_VENDOR_NUM; i++) { | 496 | for (i = 0; i < X86_VENDOR_NUM; i++) { |
480 | if (!cpu_devs[i]) | 497 | if (!cpu_devs[i]) |
@@ -483,6 +500,7 @@ static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c) | |||
483 | if (!strcmp(v, cpu_devs[i]->c_ident[0]) || | 500 | if (!strcmp(v, cpu_devs[i]->c_ident[0]) || |
484 | (cpu_devs[i]->c_ident[1] && | 501 | (cpu_devs[i]->c_ident[1] && |
485 | !strcmp(v, cpu_devs[i]->c_ident[1]))) { | 502 | !strcmp(v, cpu_devs[i]->c_ident[1]))) { |
503 | |||
486 | this_cpu = cpu_devs[i]; | 504 | this_cpu = cpu_devs[i]; |
487 | c->x86_vendor = this_cpu->c_x86_vendor; | 505 | c->x86_vendor = this_cpu->c_x86_vendor; |
488 | return; | 506 | return; |
@@ -491,7 +509,9 @@ static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c) | |||
491 | 509 | ||
492 | if (!printed) { | 510 | if (!printed) { |
493 | printed++; | 511 | printed++; |
494 | printk(KERN_ERR "CPU: vendor_id '%s' unknown, using generic init.\n", v); | 512 | printk(KERN_ERR |
513 | "CPU: vendor_id '%s' unknown, using generic init.\n", v); | ||
514 | |||
495 | printk(KERN_ERR "CPU: Your system may be unstable.\n"); | 515 | printk(KERN_ERR "CPU: Your system may be unstable.\n"); |
496 | } | 516 | } |
497 | 517 | ||
@@ -511,14 +531,17 @@ void __cpuinit cpu_detect(struct cpuinfo_x86 *c) | |||
511 | /* Intel-defined flags: level 0x00000001 */ | 531 | /* Intel-defined flags: level 0x00000001 */ |
512 | if (c->cpuid_level >= 0x00000001) { | 532 | if (c->cpuid_level >= 0x00000001) { |
513 | u32 junk, tfms, cap0, misc; | 533 | u32 junk, tfms, cap0, misc; |
534 | |||
514 | cpuid(0x00000001, &tfms, &misc, &junk, &cap0); | 535 | cpuid(0x00000001, &tfms, &misc, &junk, &cap0); |
515 | c->x86 = (tfms >> 8) & 0xf; | 536 | c->x86 = (tfms >> 8) & 0xf; |
516 | c->x86_model = (tfms >> 4) & 0xf; | 537 | c->x86_model = (tfms >> 4) & 0xf; |
517 | c->x86_mask = tfms & 0xf; | 538 | c->x86_mask = tfms & 0xf; |
539 | |||
518 | if (c->x86 == 0xf) | 540 | if (c->x86 == 0xf) |
519 | c->x86 += (tfms >> 20) & 0xff; | 541 | c->x86 += (tfms >> 20) & 0xff; |
520 | if (c->x86 >= 0x6) | 542 | if (c->x86 >= 0x6) |
521 | c->x86_model += ((tfms >> 16) & 0xf) << 4; | 543 | c->x86_model += ((tfms >> 16) & 0xf) << 4; |
544 | |||
522 | if (cap0 & (1<<19)) { | 545 | if (cap0 & (1<<19)) { |
523 | c->x86_clflush_size = ((misc >> 8) & 0xff) * 8; | 546 | c->x86_clflush_size = ((misc >> 8) & 0xff) * 8; |
524 | c->x86_cache_alignment = c->x86_clflush_size; | 547 | c->x86_cache_alignment = c->x86_clflush_size; |
@@ -534,6 +557,7 @@ static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c) | |||
534 | /* Intel-defined flags: level 0x00000001 */ | 557 | /* Intel-defined flags: level 0x00000001 */ |
535 | if (c->cpuid_level >= 0x00000001) { | 558 | if (c->cpuid_level >= 0x00000001) { |
536 | u32 capability, excap; | 559 | u32 capability, excap; |
560 | |||
537 | cpuid(0x00000001, &tfms, &ebx, &excap, &capability); | 561 | cpuid(0x00000001, &tfms, &ebx, &excap, &capability); |
538 | c->x86_capability[0] = capability; | 562 | c->x86_capability[0] = capability; |
539 | c->x86_capability[4] = excap; | 563 | c->x86_capability[4] = excap; |
@@ -542,6 +566,7 @@ static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c) | |||
542 | /* AMD-defined flags: level 0x80000001 */ | 566 | /* AMD-defined flags: level 0x80000001 */ |
543 | xlvl = cpuid_eax(0x80000000); | 567 | xlvl = cpuid_eax(0x80000000); |
544 | c->extended_cpuid_level = xlvl; | 568 | c->extended_cpuid_level = xlvl; |
569 | |||
545 | if ((xlvl & 0xffff0000) == 0x80000000) { | 570 | if ((xlvl & 0xffff0000) == 0x80000000) { |
546 | if (xlvl >= 0x80000001) { | 571 | if (xlvl >= 0x80000001) { |
547 | c->x86_capability[1] = cpuid_edx(0x80000001); | 572 | c->x86_capability[1] = cpuid_edx(0x80000001); |
@@ -549,13 +574,15 @@ static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c) | |||
549 | } | 574 | } |
550 | } | 575 | } |
551 | 576 | ||
552 | #ifdef CONFIG_X86_64 | ||
553 | if (c->extended_cpuid_level >= 0x80000008) { | 577 | if (c->extended_cpuid_level >= 0x80000008) { |
554 | u32 eax = cpuid_eax(0x80000008); | 578 | u32 eax = cpuid_eax(0x80000008); |
555 | 579 | ||
556 | c->x86_virt_bits = (eax >> 8) & 0xff; | 580 | c->x86_virt_bits = (eax >> 8) & 0xff; |
557 | c->x86_phys_bits = eax & 0xff; | 581 | c->x86_phys_bits = eax & 0xff; |
558 | } | 582 | } |
583 | #ifdef CONFIG_X86_32 | ||
584 | else if (cpu_has(c, X86_FEATURE_PAE) || cpu_has(c, X86_FEATURE_PSE36)) | ||
585 | c->x86_phys_bits = 36; | ||
559 | #endif | 586 | #endif |
560 | 587 | ||
561 | if (c->extended_cpuid_level >= 0x80000007) | 588 | if (c->extended_cpuid_level >= 0x80000007) |
@@ -602,8 +629,12 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) | |||
602 | { | 629 | { |
603 | #ifdef CONFIG_X86_64 | 630 | #ifdef CONFIG_X86_64 |
604 | c->x86_clflush_size = 64; | 631 | c->x86_clflush_size = 64; |
632 | c->x86_phys_bits = 36; | ||
633 | c->x86_virt_bits = 48; | ||
605 | #else | 634 | #else |
606 | c->x86_clflush_size = 32; | 635 | c->x86_clflush_size = 32; |
636 | c->x86_phys_bits = 32; | ||
637 | c->x86_virt_bits = 32; | ||
607 | #endif | 638 | #endif |
608 | c->x86_cache_alignment = c->x86_clflush_size; | 639 | c->x86_cache_alignment = c->x86_clflush_size; |
609 | 640 | ||
@@ -634,12 +665,12 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) | |||
634 | 665 | ||
635 | void __init early_cpu_init(void) | 666 | void __init early_cpu_init(void) |
636 | { | 667 | { |
637 | struct cpu_dev **cdev; | 668 | const struct cpu_dev *const *cdev; |
638 | int count = 0; | 669 | int count = 0; |
639 | 670 | ||
640 | printk("KERNEL supported cpus:\n"); | 671 | printk(KERN_INFO "KERNEL supported cpus:\n"); |
641 | for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) { | 672 | for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) { |
642 | struct cpu_dev *cpudev = *cdev; | 673 | const struct cpu_dev *cpudev = *cdev; |
643 | unsigned int j; | 674 | unsigned int j; |
644 | 675 | ||
645 | if (count >= X86_VENDOR_NUM) | 676 | if (count >= X86_VENDOR_NUM) |
@@ -650,7 +681,7 @@ void __init early_cpu_init(void) | |||
650 | for (j = 0; j < 2; j++) { | 681 | for (j = 0; j < 2; j++) { |
651 | if (!cpudev->c_ident[j]) | 682 | if (!cpudev->c_ident[j]) |
652 | continue; | 683 | continue; |
653 | printk(" %s %s\n", cpudev->c_vendor, | 684 | printk(KERN_INFO " %s %s\n", cpudev->c_vendor, |
654 | cpudev->c_ident[j]); | 685 | cpudev->c_ident[j]); |
655 | } | 686 | } |
656 | } | 687 | } |
@@ -726,9 +757,13 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c) | |||
726 | c->x86_coreid_bits = 0; | 757 | c->x86_coreid_bits = 0; |
727 | #ifdef CONFIG_X86_64 | 758 | #ifdef CONFIG_X86_64 |
728 | c->x86_clflush_size = 64; | 759 | c->x86_clflush_size = 64; |
760 | c->x86_phys_bits = 36; | ||
761 | c->x86_virt_bits = 48; | ||
729 | #else | 762 | #else |
730 | c->cpuid_level = -1; /* CPUID not detected */ | 763 | c->cpuid_level = -1; /* CPUID not detected */ |
731 | c->x86_clflush_size = 32; | 764 | c->x86_clflush_size = 32; |
765 | c->x86_phys_bits = 32; | ||
766 | c->x86_virt_bits = 32; | ||
732 | #endif | 767 | #endif |
733 | c->x86_cache_alignment = c->x86_clflush_size; | 768 | c->x86_cache_alignment = c->x86_clflush_size; |
734 | memset(&c->x86_capability, 0, sizeof c->x86_capability); | 769 | memset(&c->x86_capability, 0, sizeof c->x86_capability); |
@@ -759,8 +794,8 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c) | |||
759 | squash_the_stupid_serial_number(c); | 794 | squash_the_stupid_serial_number(c); |
760 | 795 | ||
761 | /* | 796 | /* |
762 | * The vendor-specific functions might have changed features. Now | 797 | * The vendor-specific functions might have changed features. |
763 | * we do "generic changes." | 798 | * Now we do "generic changes." |
764 | */ | 799 | */ |
765 | 800 | ||
766 | /* Filter out anything that depends on CPUID levels we don't have */ | 801 | /* Filter out anything that depends on CPUID levels we don't have */ |
@@ -768,7 +803,7 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c) | |||
768 | 803 | ||
769 | /* If the model name is still unset, do table lookup. */ | 804 | /* If the model name is still unset, do table lookup. */ |
770 | if (!c->x86_model_id[0]) { | 805 | if (!c->x86_model_id[0]) { |
771 | char *p; | 806 | const char *p; |
772 | p = table_lookup_model(c); | 807 | p = table_lookup_model(c); |
773 | if (p) | 808 | if (p) |
774 | strcpy(c->x86_model_id, p); | 809 | strcpy(c->x86_model_id, p); |
@@ -843,11 +878,11 @@ void __cpuinit identify_secondary_cpu(struct cpuinfo_x86 *c) | |||
843 | } | 878 | } |
844 | 879 | ||
845 | struct msr_range { | 880 | struct msr_range { |
846 | unsigned min; | 881 | unsigned min; |
847 | unsigned max; | 882 | unsigned max; |
848 | }; | 883 | }; |
849 | 884 | ||
850 | static struct msr_range msr_range_array[] __cpuinitdata = { | 885 | static const struct msr_range msr_range_array[] __cpuinitconst = { |
851 | { 0x00000000, 0x00000418}, | 886 | { 0x00000000, 0x00000418}, |
852 | { 0xc0000000, 0xc000040b}, | 887 | { 0xc0000000, 0xc000040b}, |
853 | { 0xc0010000, 0xc0010142}, | 888 | { 0xc0010000, 0xc0010142}, |
@@ -856,14 +891,15 @@ static struct msr_range msr_range_array[] __cpuinitdata = { | |||
856 | 891 | ||
857 | static void __cpuinit print_cpu_msr(void) | 892 | static void __cpuinit print_cpu_msr(void) |
858 | { | 893 | { |
894 | unsigned index_min, index_max; | ||
859 | unsigned index; | 895 | unsigned index; |
860 | u64 val; | 896 | u64 val; |
861 | int i; | 897 | int i; |
862 | unsigned index_min, index_max; | ||
863 | 898 | ||
864 | for (i = 0; i < ARRAY_SIZE(msr_range_array); i++) { | 899 | for (i = 0; i < ARRAY_SIZE(msr_range_array); i++) { |
865 | index_min = msr_range_array[i].min; | 900 | index_min = msr_range_array[i].min; |
866 | index_max = msr_range_array[i].max; | 901 | index_max = msr_range_array[i].max; |
902 | |||
867 | for (index = index_min; index < index_max; index++) { | 903 | for (index = index_min; index < index_max; index++) { |
868 | if (rdmsrl_amd_safe(index, &val)) | 904 | if (rdmsrl_amd_safe(index, &val)) |
869 | continue; | 905 | continue; |
@@ -873,6 +909,7 @@ static void __cpuinit print_cpu_msr(void) | |||
873 | } | 909 | } |
874 | 910 | ||
875 | static int show_msr __cpuinitdata; | 911 | static int show_msr __cpuinitdata; |
912 | |||
876 | static __init int setup_show_msr(char *arg) | 913 | static __init int setup_show_msr(char *arg) |
877 | { | 914 | { |
878 | int num; | 915 | int num; |
@@ -894,12 +931,14 @@ __setup("noclflush", setup_noclflush); | |||
894 | 931 | ||
895 | void __cpuinit print_cpu_info(struct cpuinfo_x86 *c) | 932 | void __cpuinit print_cpu_info(struct cpuinfo_x86 *c) |
896 | { | 933 | { |
897 | char *vendor = NULL; | 934 | const char *vendor = NULL; |
898 | 935 | ||
899 | if (c->x86_vendor < X86_VENDOR_NUM) | 936 | if (c->x86_vendor < X86_VENDOR_NUM) { |
900 | vendor = this_cpu->c_vendor; | 937 | vendor = this_cpu->c_vendor; |
901 | else if (c->cpuid_level >= 0) | 938 | } else { |
902 | vendor = c->x86_vendor_id; | 939 | if (c->cpuid_level >= 0) |
940 | vendor = c->x86_vendor_id; | ||
941 | } | ||
903 | 942 | ||
904 | if (vendor && !strstr(c->x86_model_id, vendor)) | 943 | if (vendor && !strstr(c->x86_model_id, vendor)) |
905 | printk(KERN_CONT "%s ", vendor); | 944 | printk(KERN_CONT "%s ", vendor); |
@@ -926,10 +965,12 @@ void __cpuinit print_cpu_info(struct cpuinfo_x86 *c) | |||
926 | static __init int setup_disablecpuid(char *arg) | 965 | static __init int setup_disablecpuid(char *arg) |
927 | { | 966 | { |
928 | int bit; | 967 | int bit; |
968 | |||
929 | if (get_option(&arg, &bit) && bit < NCAPINTS*32) | 969 | if (get_option(&arg, &bit) && bit < NCAPINTS*32) |
930 | setup_clear_cpu_cap(bit); | 970 | setup_clear_cpu_cap(bit); |
931 | else | 971 | else |
932 | return 0; | 972 | return 0; |
973 | |||
933 | return 1; | 974 | return 1; |
934 | } | 975 | } |
935 | __setup("clearcpuid=", setup_disablecpuid); | 976 | __setup("clearcpuid=", setup_disablecpuid); |
@@ -939,6 +980,7 @@ struct desc_ptr idt_descr = { 256 * 16 - 1, (unsigned long) idt_table }; | |||
939 | 980 | ||
940 | DEFINE_PER_CPU_FIRST(union irq_stack_union, | 981 | DEFINE_PER_CPU_FIRST(union irq_stack_union, |
941 | irq_stack_union) __aligned(PAGE_SIZE); | 982 | irq_stack_union) __aligned(PAGE_SIZE); |
983 | |||
942 | DEFINE_PER_CPU(char *, irq_stack_ptr) = | 984 | DEFINE_PER_CPU(char *, irq_stack_ptr) = |
943 | init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64; | 985 | init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64; |
944 | 986 | ||
@@ -948,12 +990,21 @@ EXPORT_PER_CPU_SYMBOL(kernel_stack); | |||
948 | 990 | ||
949 | DEFINE_PER_CPU(unsigned int, irq_count) = -1; | 991 | DEFINE_PER_CPU(unsigned int, irq_count) = -1; |
950 | 992 | ||
993 | /* | ||
994 | * Special IST stacks which the CPU switches to when it calls | ||
995 | * an IST-marked descriptor entry. Up to 7 stacks (hardware | ||
996 | * limit), all of them are 4K, except the debug stack which | ||
997 | * is 8K. | ||
998 | */ | ||
999 | static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = { | ||
1000 | [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ, | ||
1001 | [DEBUG_STACK - 1] = DEBUG_STKSZ | ||
1002 | }; | ||
1003 | |||
951 | static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks | 1004 | static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks |
952 | [(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ]) | 1005 | [(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ]) |
953 | __aligned(PAGE_SIZE); | 1006 | __aligned(PAGE_SIZE); |
954 | 1007 | ||
955 | extern asmlinkage void ignore_sysret(void); | ||
956 | |||
957 | /* May not be marked __init: used by software suspend */ | 1008 | /* May not be marked __init: used by software suspend */ |
958 | void syscall_init(void) | 1009 | void syscall_init(void) |
959 | { | 1010 | { |
@@ -983,7 +1034,7 @@ unsigned long kernel_eflags; | |||
983 | */ | 1034 | */ |
984 | DEFINE_PER_CPU(struct orig_ist, orig_ist); | 1035 | DEFINE_PER_CPU(struct orig_ist, orig_ist); |
985 | 1036 | ||
986 | #else /* x86_64 */ | 1037 | #else /* CONFIG_X86_64 */ |
987 | 1038 | ||
988 | #ifdef CONFIG_CC_STACKPROTECTOR | 1039 | #ifdef CONFIG_CC_STACKPROTECTOR |
989 | DEFINE_PER_CPU(unsigned long, stack_canary); | 1040 | DEFINE_PER_CPU(unsigned long, stack_canary); |
@@ -995,9 +1046,26 @@ struct pt_regs * __cpuinit idle_regs(struct pt_regs *regs) | |||
995 | memset(regs, 0, sizeof(struct pt_regs)); | 1046 | memset(regs, 0, sizeof(struct pt_regs)); |
996 | regs->fs = __KERNEL_PERCPU; | 1047 | regs->fs = __KERNEL_PERCPU; |
997 | regs->gs = __KERNEL_STACK_CANARY; | 1048 | regs->gs = __KERNEL_STACK_CANARY; |
1049 | |||
998 | return regs; | 1050 | return regs; |
999 | } | 1051 | } |
1000 | #endif /* x86_64 */ | 1052 | #endif /* CONFIG_X86_64 */ |
1053 | |||
1054 | /* | ||
1055 | * Clear all 6 debug registers: | ||
1056 | */ | ||
1057 | static void clear_all_debug_regs(void) | ||
1058 | { | ||
1059 | int i; | ||
1060 | |||
1061 | for (i = 0; i < 8; i++) { | ||
1062 | /* Ignore db4, db5 */ | ||
1063 | if ((i == 4) || (i == 5)) | ||
1064 | continue; | ||
1065 | |||
1066 | set_debugreg(0, i); | ||
1067 | } | ||
1068 | } | ||
1001 | 1069 | ||
1002 | /* | 1070 | /* |
1003 | * cpu_init() initializes state that is per-CPU. Some data is already | 1071 | * cpu_init() initializes state that is per-CPU. Some data is already |
@@ -1007,15 +1075,20 @@ struct pt_regs * __cpuinit idle_regs(struct pt_regs *regs) | |||
1007 | * A lot of state is already set up in PDA init for 64 bit | 1075 | * A lot of state is already set up in PDA init for 64 bit |
1008 | */ | 1076 | */ |
1009 | #ifdef CONFIG_X86_64 | 1077 | #ifdef CONFIG_X86_64 |
1078 | |||
1010 | void __cpuinit cpu_init(void) | 1079 | void __cpuinit cpu_init(void) |
1011 | { | 1080 | { |
1012 | int cpu = stack_smp_processor_id(); | 1081 | struct orig_ist *orig_ist; |
1013 | struct tss_struct *t = &per_cpu(init_tss, cpu); | ||
1014 | struct orig_ist *orig_ist = &per_cpu(orig_ist, cpu); | ||
1015 | unsigned long v; | ||
1016 | struct task_struct *me; | 1082 | struct task_struct *me; |
1083 | struct tss_struct *t; | ||
1084 | unsigned long v; | ||
1085 | int cpu; | ||
1017 | int i; | 1086 | int i; |
1018 | 1087 | ||
1088 | cpu = stack_smp_processor_id(); | ||
1089 | t = &per_cpu(init_tss, cpu); | ||
1090 | orig_ist = &per_cpu(orig_ist, cpu); | ||
1091 | |||
1019 | #ifdef CONFIG_NUMA | 1092 | #ifdef CONFIG_NUMA |
1020 | if (cpu != 0 && percpu_read(node_number) == 0 && | 1093 | if (cpu != 0 && percpu_read(node_number) == 0 && |
1021 | cpu_to_node(cpu) != NUMA_NO_NODE) | 1094 | cpu_to_node(cpu) != NUMA_NO_NODE) |
@@ -1056,19 +1129,17 @@ void __cpuinit cpu_init(void) | |||
1056 | * set up and load the per-CPU TSS | 1129 | * set up and load the per-CPU TSS |
1057 | */ | 1130 | */ |
1058 | if (!orig_ist->ist[0]) { | 1131 | if (!orig_ist->ist[0]) { |
1059 | static const unsigned int sizes[N_EXCEPTION_STACKS] = { | ||
1060 | [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ, | ||
1061 | [DEBUG_STACK - 1] = DEBUG_STKSZ | ||
1062 | }; | ||
1063 | char *estacks = per_cpu(exception_stacks, cpu); | 1132 | char *estacks = per_cpu(exception_stacks, cpu); |
1133 | |||
1064 | for (v = 0; v < N_EXCEPTION_STACKS; v++) { | 1134 | for (v = 0; v < N_EXCEPTION_STACKS; v++) { |
1065 | estacks += sizes[v]; | 1135 | estacks += exception_stack_sizes[v]; |
1066 | orig_ist->ist[v] = t->x86_tss.ist[v] = | 1136 | orig_ist->ist[v] = t->x86_tss.ist[v] = |
1067 | (unsigned long)estacks; | 1137 | (unsigned long)estacks; |
1068 | } | 1138 | } |
1069 | } | 1139 | } |
1070 | 1140 | ||
1071 | t->x86_tss.io_bitmap_base = offsetof(struct tss_struct, io_bitmap); | 1141 | t->x86_tss.io_bitmap_base = offsetof(struct tss_struct, io_bitmap); |
1142 | |||
1072 | /* | 1143 | /* |
1073 | * <= is required because the CPU will access up to | 1144 | * <= is required because the CPU will access up to |
1074 | * 8 bits beyond the end of the IO permission bitmap. | 1145 | * 8 bits beyond the end of the IO permission bitmap. |
@@ -1097,17 +1168,7 @@ void __cpuinit cpu_init(void) | |||
1097 | arch_kgdb_ops.correct_hw_break(); | 1168 | arch_kgdb_ops.correct_hw_break(); |
1098 | else | 1169 | else |
1099 | #endif | 1170 | #endif |
1100 | { | 1171 | clear_all_debug_regs(); |
1101 | /* | ||
1102 | * Clear all 6 debug registers: | ||
1103 | */ | ||
1104 | set_debugreg(0UL, 0); | ||
1105 | set_debugreg(0UL, 1); | ||
1106 | set_debugreg(0UL, 2); | ||
1107 | set_debugreg(0UL, 3); | ||
1108 | set_debugreg(0UL, 6); | ||
1109 | set_debugreg(0UL, 7); | ||
1110 | } | ||
1111 | 1172 | ||
1112 | fpu_init(); | 1173 | fpu_init(); |
1113 | 1174 | ||
@@ -1128,7 +1189,8 @@ void __cpuinit cpu_init(void) | |||
1128 | 1189 | ||
1129 | if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) { | 1190 | if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) { |
1130 | printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); | 1191 | printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); |
1131 | for (;;) local_irq_enable(); | 1192 | for (;;) |
1193 | local_irq_enable(); | ||
1132 | } | 1194 | } |
1133 | 1195 | ||
1134 | printk(KERN_INFO "Initializing CPU#%d\n", cpu); | 1196 | printk(KERN_INFO "Initializing CPU#%d\n", cpu); |
@@ -1157,13 +1219,7 @@ void __cpuinit cpu_init(void) | |||
1157 | __set_tss_desc(cpu, GDT_ENTRY_DOUBLEFAULT_TSS, &doublefault_tss); | 1219 | __set_tss_desc(cpu, GDT_ENTRY_DOUBLEFAULT_TSS, &doublefault_tss); |
1158 | #endif | 1220 | #endif |
1159 | 1221 | ||
1160 | /* Clear all 6 debug registers: */ | 1222 | clear_all_debug_regs(); |
1161 | set_debugreg(0, 0); | ||
1162 | set_debugreg(0, 1); | ||
1163 | set_debugreg(0, 2); | ||
1164 | set_debugreg(0, 3); | ||
1165 | set_debugreg(0, 6); | ||
1166 | set_debugreg(0, 7); | ||
1167 | 1223 | ||
1168 | /* | 1224 | /* |
1169 | * Force FPU initialization: | 1225 | * Force FPU initialization: |
@@ -1183,6 +1239,4 @@ void __cpuinit cpu_init(void) | |||
1183 | 1239 | ||
1184 | xsave_init(); | 1240 | xsave_init(); |
1185 | } | 1241 | } |
1186 | |||
1187 | |||
1188 | #endif | 1242 | #endif |
diff --git a/arch/x86/kernel/cpu/cpu.h b/arch/x86/kernel/cpu/cpu.h index de4094a39210..9469ecb5aeb8 100644 --- a/arch/x86/kernel/cpu/cpu.h +++ b/arch/x86/kernel/cpu/cpu.h | |||
@@ -5,15 +5,15 @@ | |||
5 | struct cpu_model_info { | 5 | struct cpu_model_info { |
6 | int vendor; | 6 | int vendor; |
7 | int family; | 7 | int family; |
8 | char *model_names[16]; | 8 | const char *model_names[16]; |
9 | }; | 9 | }; |
10 | 10 | ||
11 | /* attempt to consolidate cpu attributes */ | 11 | /* attempt to consolidate cpu attributes */ |
12 | struct cpu_dev { | 12 | struct cpu_dev { |
13 | char * c_vendor; | 13 | const char * c_vendor; |
14 | 14 | ||
15 | /* some have two possibilities for cpuid string */ | 15 | /* some have two possibilities for cpuid string */ |
16 | char * c_ident[2]; | 16 | const char * c_ident[2]; |
17 | 17 | ||
18 | struct cpu_model_info c_models[4]; | 18 | struct cpu_model_info c_models[4]; |
19 | 19 | ||
@@ -25,11 +25,12 @@ struct cpu_dev { | |||
25 | }; | 25 | }; |
26 | 26 | ||
27 | #define cpu_dev_register(cpu_devX) \ | 27 | #define cpu_dev_register(cpu_devX) \ |
28 | static struct cpu_dev *__cpu_dev_##cpu_devX __used \ | 28 | static const struct cpu_dev *const __cpu_dev_##cpu_devX __used \ |
29 | __attribute__((__section__(".x86_cpu_dev.init"))) = \ | 29 | __attribute__((__section__(".x86_cpu_dev.init"))) = \ |
30 | &cpu_devX; | 30 | &cpu_devX; |
31 | 31 | ||
32 | extern struct cpu_dev *__x86_cpu_dev_start[], *__x86_cpu_dev_end[]; | 32 | extern const struct cpu_dev *const __x86_cpu_dev_start[], |
33 | *const __x86_cpu_dev_end[]; | ||
33 | 34 | ||
34 | extern void display_cacheinfo(struct cpuinfo_x86 *c); | 35 | extern void display_cacheinfo(struct cpuinfo_x86 *c); |
35 | 36 | ||
diff --git a/arch/x86/kernel/cpu/cpu_debug.c b/arch/x86/kernel/cpu/cpu_debug.c index 9abbcbd933cc..21c0cf8ced18 100755 --- a/arch/x86/kernel/cpu/cpu_debug.c +++ b/arch/x86/kernel/cpu/cpu_debug.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/seq_file.h> | 11 | #include <linux/seq_file.h> |
12 | #include <linux/debugfs.h> | 12 | #include <linux/debugfs.h> |
13 | #include <linux/kprobes.h> | 13 | #include <linux/kprobes.h> |
14 | #include <linux/uaccess.h> | ||
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
15 | #include <linux/module.h> | 16 | #include <linux/module.h> |
16 | #include <linux/percpu.h> | 17 | #include <linux/percpu.h> |
@@ -40,41 +41,41 @@ static DEFINE_MUTEX(cpu_debug_lock); | |||
40 | static struct dentry *cpu_debugfs_dir; | 41 | static struct dentry *cpu_debugfs_dir; |
41 | 42 | ||
42 | static struct cpu_debug_base cpu_base[] = { | 43 | static struct cpu_debug_base cpu_base[] = { |
43 | { "mc", CPU_MC }, /* Machine Check */ | 44 | { "mc", CPU_MC, 0 }, |
44 | { "monitor", CPU_MONITOR }, /* Monitor */ | 45 | { "monitor", CPU_MONITOR, 0 }, |
45 | { "time", CPU_TIME }, /* Time */ | 46 | { "time", CPU_TIME, 0 }, |
46 | { "pmc", CPU_PMC }, /* Performance Monitor */ | 47 | { "pmc", CPU_PMC, 1 }, |
47 | { "platform", CPU_PLATFORM }, /* Platform */ | 48 | { "platform", CPU_PLATFORM, 0 }, |
48 | { "apic", CPU_APIC }, /* APIC */ | 49 | { "apic", CPU_APIC, 0 }, |
49 | { "poweron", CPU_POWERON }, /* Power-on */ | 50 | { "poweron", CPU_POWERON, 0 }, |
50 | { "control", CPU_CONTROL }, /* Control */ | 51 | { "control", CPU_CONTROL, 0 }, |
51 | { "features", CPU_FEATURES }, /* Features control */ | 52 | { "features", CPU_FEATURES, 0 }, |
52 | { "lastbranch", CPU_LBRANCH }, /* Last Branch */ | 53 | { "lastbranch", CPU_LBRANCH, 0 }, |
53 | { "bios", CPU_BIOS }, /* BIOS */ | 54 | { "bios", CPU_BIOS, 0 }, |
54 | { "freq", CPU_FREQ }, /* Frequency */ | 55 | { "freq", CPU_FREQ, 0 }, |
55 | { "mtrr", CPU_MTRR }, /* MTRR */ | 56 | { "mtrr", CPU_MTRR, 0 }, |
56 | { "perf", CPU_PERF }, /* Performance */ | 57 | { "perf", CPU_PERF, 0 }, |
57 | { "cache", CPU_CACHE }, /* Cache */ | 58 | { "cache", CPU_CACHE, 0 }, |
58 | { "sysenter", CPU_SYSENTER }, /* Sysenter */ | 59 | { "sysenter", CPU_SYSENTER, 0 }, |
59 | { "therm", CPU_THERM }, /* Thermal */ | 60 | { "therm", CPU_THERM, 0 }, |
60 | { "misc", CPU_MISC }, /* Miscellaneous */ | 61 | { "misc", CPU_MISC, 0 }, |
61 | { "debug", CPU_DEBUG }, /* Debug */ | 62 | { "debug", CPU_DEBUG, 0 }, |
62 | { "pat", CPU_PAT }, /* PAT */ | 63 | { "pat", CPU_PAT, 0 }, |
63 | { "vmx", CPU_VMX }, /* VMX */ | 64 | { "vmx", CPU_VMX, 0 }, |
64 | { "call", CPU_CALL }, /* System Call */ | 65 | { "call", CPU_CALL, 0 }, |
65 | { "base", CPU_BASE }, /* BASE Address */ | 66 | { "base", CPU_BASE, 0 }, |
66 | { "smm", CPU_SMM }, /* System mgmt mode */ | 67 | { "smm", CPU_SMM, 0 }, |
67 | { "svm", CPU_SVM }, /*Secure Virtial Machine*/ | 68 | { "svm", CPU_SVM, 0 }, |
68 | { "osvm", CPU_OSVM }, /* OS-Visible Workaround*/ | 69 | { "osvm", CPU_OSVM, 0 }, |
69 | { "tss", CPU_TSS }, /* Task Stack Segment */ | 70 | { "tss", CPU_TSS, 0 }, |
70 | { "cr", CPU_CR }, /* Control Registers */ | 71 | { "cr", CPU_CR, 0 }, |
71 | { "dt", CPU_DT }, /* Descriptor Table */ | 72 | { "dt", CPU_DT, 0 }, |
72 | { "registers", CPU_REG_ALL }, /* Select all Registers */ | 73 | { "registers", CPU_REG_ALL, 0 }, |
73 | }; | 74 | }; |
74 | 75 | ||
75 | static struct cpu_file_base cpu_file[] = { | 76 | static struct cpu_file_base cpu_file[] = { |
76 | { "index", CPU_REG_ALL }, /* index */ | 77 | { "index", CPU_REG_ALL, 0 }, |
77 | { "value", CPU_REG_ALL }, /* value */ | 78 | { "value", CPU_REG_ALL, 1 }, |
78 | }; | 79 | }; |
79 | 80 | ||
80 | /* Intel Registers Range */ | 81 | /* Intel Registers Range */ |
@@ -608,9 +609,62 @@ static int cpu_seq_open(struct inode *inode, struct file *file) | |||
608 | return err; | 609 | return err; |
609 | } | 610 | } |
610 | 611 | ||
612 | static int write_msr(struct cpu_private *priv, u64 val) | ||
613 | { | ||
614 | u32 low, high; | ||
615 | |||
616 | high = (val >> 32) & 0xffffffff; | ||
617 | low = val & 0xffffffff; | ||
618 | |||
619 | if (!wrmsr_safe_on_cpu(priv->cpu, priv->reg, low, high)) | ||
620 | return 0; | ||
621 | |||
622 | return -EPERM; | ||
623 | } | ||
624 | |||
625 | static int write_cpu_register(struct cpu_private *priv, const char *buf) | ||
626 | { | ||
627 | int ret = -EPERM; | ||
628 | u64 val; | ||
629 | |||
630 | ret = strict_strtoull(buf, 0, &val); | ||
631 | if (ret < 0) | ||
632 | return ret; | ||
633 | |||
634 | /* Supporting only MSRs */ | ||
635 | if (priv->type < CPU_TSS_BIT) | ||
636 | return write_msr(priv, val); | ||
637 | |||
638 | return ret; | ||
639 | } | ||
640 | |||
641 | static ssize_t cpu_write(struct file *file, const char __user *ubuf, | ||
642 | size_t count, loff_t *off) | ||
643 | { | ||
644 | struct seq_file *seq = file->private_data; | ||
645 | struct cpu_private *priv = seq->private; | ||
646 | char buf[19]; | ||
647 | |||
648 | if ((priv == NULL) || (count >= sizeof(buf))) | ||
649 | return -EINVAL; | ||
650 | |||
651 | if (copy_from_user(&buf, ubuf, count)) | ||
652 | return -EFAULT; | ||
653 | |||
654 | buf[count] = 0; | ||
655 | |||
656 | if ((cpu_base[priv->type].write) && (cpu_file[priv->file].write)) | ||
657 | if (!write_cpu_register(priv, buf)) | ||
658 | return count; | ||
659 | |||
660 | return -EACCES; | ||
661 | } | ||
662 | |||
611 | static const struct file_operations cpu_fops = { | 663 | static const struct file_operations cpu_fops = { |
664 | .owner = THIS_MODULE, | ||
612 | .open = cpu_seq_open, | 665 | .open = cpu_seq_open, |
613 | .read = seq_read, | 666 | .read = seq_read, |
667 | .write = cpu_write, | ||
614 | .llseek = seq_lseek, | 668 | .llseek = seq_lseek, |
615 | .release = seq_release, | 669 | .release = seq_release, |
616 | }; | 670 | }; |
diff --git a/arch/x86/kernel/cpu/cyrix.c b/arch/x86/kernel/cpu/cyrix.c index ffd0f5ed071a..593171e967ef 100644 --- a/arch/x86/kernel/cpu/cyrix.c +++ b/arch/x86/kernel/cpu/cyrix.c | |||
@@ -61,23 +61,23 @@ static void __cpuinit do_cyrix_devid(unsigned char *dir0, unsigned char *dir1) | |||
61 | */ | 61 | */ |
62 | static unsigned char Cx86_dir0_msb __cpuinitdata = 0; | 62 | static unsigned char Cx86_dir0_msb __cpuinitdata = 0; |
63 | 63 | ||
64 | static char Cx86_model[][9] __cpuinitdata = { | 64 | static const char __cpuinitconst Cx86_model[][9] = { |
65 | "Cx486", "Cx486", "5x86 ", "6x86", "MediaGX ", "6x86MX ", | 65 | "Cx486", "Cx486", "5x86 ", "6x86", "MediaGX ", "6x86MX ", |
66 | "M II ", "Unknown" | 66 | "M II ", "Unknown" |
67 | }; | 67 | }; |
68 | static char Cx486_name[][5] __cpuinitdata = { | 68 | static const char __cpuinitconst Cx486_name[][5] = { |
69 | "SLC", "DLC", "SLC2", "DLC2", "SRx", "DRx", | 69 | "SLC", "DLC", "SLC2", "DLC2", "SRx", "DRx", |
70 | "SRx2", "DRx2" | 70 | "SRx2", "DRx2" |
71 | }; | 71 | }; |
72 | static char Cx486S_name[][4] __cpuinitdata = { | 72 | static const char __cpuinitconst Cx486S_name[][4] = { |
73 | "S", "S2", "Se", "S2e" | 73 | "S", "S2", "Se", "S2e" |
74 | }; | 74 | }; |
75 | static char Cx486D_name[][4] __cpuinitdata = { | 75 | static const char __cpuinitconst Cx486D_name[][4] = { |
76 | "DX", "DX2", "?", "?", "?", "DX4" | 76 | "DX", "DX2", "?", "?", "?", "DX4" |
77 | }; | 77 | }; |
78 | static char Cx86_cb[] __cpuinitdata = "?.5x Core/Bus Clock"; | 78 | static char Cx86_cb[] __cpuinitdata = "?.5x Core/Bus Clock"; |
79 | static char cyrix_model_mult1[] __cpuinitdata = "12??43"; | 79 | static const char __cpuinitconst cyrix_model_mult1[] = "12??43"; |
80 | static char cyrix_model_mult2[] __cpuinitdata = "12233445"; | 80 | static const char __cpuinitconst cyrix_model_mult2[] = "12233445"; |
81 | 81 | ||
82 | /* | 82 | /* |
83 | * Reset the slow-loop (SLOP) bit on the 686(L) which is set by some old | 83 | * Reset the slow-loop (SLOP) bit on the 686(L) which is set by some old |
@@ -435,7 +435,7 @@ static void __cpuinit cyrix_identify(struct cpuinfo_x86 *c) | |||
435 | } | 435 | } |
436 | } | 436 | } |
437 | 437 | ||
438 | static struct cpu_dev cyrix_cpu_dev __cpuinitdata = { | 438 | static const struct cpu_dev __cpuinitconst cyrix_cpu_dev = { |
439 | .c_vendor = "Cyrix", | 439 | .c_vendor = "Cyrix", |
440 | .c_ident = { "CyrixInstead" }, | 440 | .c_ident = { "CyrixInstead" }, |
441 | .c_early_init = early_init_cyrix, | 441 | .c_early_init = early_init_cyrix, |
@@ -446,7 +446,7 @@ static struct cpu_dev cyrix_cpu_dev __cpuinitdata = { | |||
446 | 446 | ||
447 | cpu_dev_register(cyrix_cpu_dev); | 447 | cpu_dev_register(cyrix_cpu_dev); |
448 | 448 | ||
449 | static struct cpu_dev nsc_cpu_dev __cpuinitdata = { | 449 | static const struct cpu_dev __cpuinitconst nsc_cpu_dev = { |
450 | .c_vendor = "NSC", | 450 | .c_vendor = "NSC", |
451 | .c_ident = { "Geode by NSC" }, | 451 | .c_ident = { "Geode by NSC" }, |
452 | .c_init = init_nsc, | 452 | .c_init = init_nsc, |
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 191117f1ad51..b09d4eb52bb9 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
@@ -54,6 +54,11 @@ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c) | |||
54 | c->x86_cache_alignment = 128; | 54 | c->x86_cache_alignment = 128; |
55 | #endif | 55 | #endif |
56 | 56 | ||
57 | /* CPUID workaround for 0F33/0F34 CPU */ | ||
58 | if (c->x86 == 0xF && c->x86_model == 0x3 | ||
59 | && (c->x86_mask == 0x3 || c->x86_mask == 0x4)) | ||
60 | c->x86_phys_bits = 36; | ||
61 | |||
57 | /* | 62 | /* |
58 | * c->x86_power is 8000_0007 edx. Bit 8 is TSC runs at constant rate | 63 | * c->x86_power is 8000_0007 edx. Bit 8 is TSC runs at constant rate |
59 | * with P/T states and does not stop in deep C-states | 64 | * with P/T states and does not stop in deep C-states |
@@ -410,7 +415,7 @@ static unsigned int __cpuinit intel_size_cache(struct cpuinfo_x86 *c, unsigned i | |||
410 | } | 415 | } |
411 | #endif | 416 | #endif |
412 | 417 | ||
413 | static struct cpu_dev intel_cpu_dev __cpuinitdata = { | 418 | static const struct cpu_dev __cpuinitconst intel_cpu_dev = { |
414 | .c_vendor = "Intel", | 419 | .c_vendor = "Intel", |
415 | .c_ident = { "GenuineIntel" }, | 420 | .c_ident = { "GenuineIntel" }, |
416 | #ifdef CONFIG_X86_32 | 421 | #ifdef CONFIG_X86_32 |
diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c index 7293508d8f5c..c471eb1a389c 100644 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c | |||
@@ -32,7 +32,7 @@ struct _cache_table | |||
32 | }; | 32 | }; |
33 | 33 | ||
34 | /* all the cache descriptor types we care about (no TLB or trace cache entries) */ | 34 | /* all the cache descriptor types we care about (no TLB or trace cache entries) */ |
35 | static struct _cache_table cache_table[] __cpuinitdata = | 35 | static const struct _cache_table __cpuinitconst cache_table[] = |
36 | { | 36 | { |
37 | { 0x06, LVL_1_INST, 8 }, /* 4-way set assoc, 32 byte line size */ | 37 | { 0x06, LVL_1_INST, 8 }, /* 4-way set assoc, 32 byte line size */ |
38 | { 0x08, LVL_1_INST, 16 }, /* 4-way set assoc, 32 byte line size */ | 38 | { 0x08, LVL_1_INST, 16 }, /* 4-way set assoc, 32 byte line size */ |
@@ -206,15 +206,15 @@ union l3_cache { | |||
206 | unsigned val; | 206 | unsigned val; |
207 | }; | 207 | }; |
208 | 208 | ||
209 | static unsigned short assocs[] __cpuinitdata = { | 209 | static const unsigned short __cpuinitconst assocs[] = { |
210 | [1] = 1, [2] = 2, [4] = 4, [6] = 8, | 210 | [1] = 1, [2] = 2, [4] = 4, [6] = 8, |
211 | [8] = 16, [0xa] = 32, [0xb] = 48, | 211 | [8] = 16, [0xa] = 32, [0xb] = 48, |
212 | [0xc] = 64, | 212 | [0xc] = 64, |
213 | [0xf] = 0xffff // ?? | 213 | [0xf] = 0xffff // ?? |
214 | }; | 214 | }; |
215 | 215 | ||
216 | static unsigned char levels[] __cpuinitdata = { 1, 1, 2, 3 }; | 216 | static const unsigned char __cpuinitconst levels[] = { 1, 1, 2, 3 }; |
217 | static unsigned char types[] __cpuinitdata = { 1, 2, 3, 3 }; | 217 | static const unsigned char __cpuinitconst types[] = { 1, 2, 3, 3 }; |
218 | 218 | ||
219 | static void __cpuinit | 219 | static void __cpuinit |
220 | amd_cpuid4(int leaf, union _cpuid4_leaf_eax *eax, | 220 | amd_cpuid4(int leaf, union _cpuid4_leaf_eax *eax, |
diff --git a/arch/x86/kernel/cpu/transmeta.c b/arch/x86/kernel/cpu/transmeta.c index 52b3fefbd5af..bb62b3e5caad 100644 --- a/arch/x86/kernel/cpu/transmeta.c +++ b/arch/x86/kernel/cpu/transmeta.c | |||
@@ -98,7 +98,7 @@ static void __cpuinit init_transmeta(struct cpuinfo_x86 *c) | |||
98 | #endif | 98 | #endif |
99 | } | 99 | } |
100 | 100 | ||
101 | static struct cpu_dev transmeta_cpu_dev __cpuinitdata = { | 101 | static const struct cpu_dev __cpuinitconst transmeta_cpu_dev = { |
102 | .c_vendor = "Transmeta", | 102 | .c_vendor = "Transmeta", |
103 | .c_ident = { "GenuineTMx86", "TransmetaCPU" }, | 103 | .c_ident = { "GenuineTMx86", "TransmetaCPU" }, |
104 | .c_early_init = early_init_transmeta, | 104 | .c_early_init = early_init_transmeta, |
diff --git a/arch/x86/kernel/cpu/umc.c b/arch/x86/kernel/cpu/umc.c index e777f79e0960..fd2c37bf7acb 100644 --- a/arch/x86/kernel/cpu/umc.c +++ b/arch/x86/kernel/cpu/umc.c | |||
@@ -8,7 +8,7 @@ | |||
8 | * so no special init takes place. | 8 | * so no special init takes place. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | static struct cpu_dev umc_cpu_dev __cpuinitdata = { | 11 | static const struct cpu_dev __cpuinitconst umc_cpu_dev = { |
12 | .c_vendor = "UMC", | 12 | .c_vendor = "UMC", |
13 | .c_ident = { "UMC UMC UMC" }, | 13 | .c_ident = { "UMC UMC UMC" }, |
14 | .c_models = { | 14 | .c_models = { |
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 508bec1cee27..95b81c18b6bc 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -110,19 +110,25 @@ int __init e820_all_mapped(u64 start, u64 end, unsigned type) | |||
110 | /* | 110 | /* |
111 | * Add a memory region to the kernel e820 map. | 111 | * Add a memory region to the kernel e820 map. |
112 | */ | 112 | */ |
113 | void __init e820_add_region(u64 start, u64 size, int type) | 113 | static void __init __e820_add_region(struct e820map *e820x, u64 start, u64 size, |
114 | int type) | ||
114 | { | 115 | { |
115 | int x = e820.nr_map; | 116 | int x = e820x->nr_map; |
116 | 117 | ||
117 | if (x == ARRAY_SIZE(e820.map)) { | 118 | if (x == ARRAY_SIZE(e820x->map)) { |
118 | printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); | 119 | printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); |
119 | return; | 120 | return; |
120 | } | 121 | } |
121 | 122 | ||
122 | e820.map[x].addr = start; | 123 | e820x->map[x].addr = start; |
123 | e820.map[x].size = size; | 124 | e820x->map[x].size = size; |
124 | e820.map[x].type = type; | 125 | e820x->map[x].type = type; |
125 | e820.nr_map++; | 126 | e820x->nr_map++; |
127 | } | ||
128 | |||
129 | void __init e820_add_region(u64 start, u64 size, int type) | ||
130 | { | ||
131 | __e820_add_region(&e820, start, size, type); | ||
126 | } | 132 | } |
127 | 133 | ||
128 | void __init e820_print_map(char *who) | 134 | void __init e820_print_map(char *who) |
@@ -417,11 +423,11 @@ static int __init append_e820_map(struct e820entry *biosmap, int nr_map) | |||
417 | return __append_e820_map(biosmap, nr_map); | 423 | return __append_e820_map(biosmap, nr_map); |
418 | } | 424 | } |
419 | 425 | ||
420 | static u64 __init e820_update_range_map(struct e820map *e820x, u64 start, | 426 | static u64 __init __e820_update_range(struct e820map *e820x, u64 start, |
421 | u64 size, unsigned old_type, | 427 | u64 size, unsigned old_type, |
422 | unsigned new_type) | 428 | unsigned new_type) |
423 | { | 429 | { |
424 | int i; | 430 | unsigned int i; |
425 | u64 real_updated_size = 0; | 431 | u64 real_updated_size = 0; |
426 | 432 | ||
427 | BUG_ON(old_type == new_type); | 433 | BUG_ON(old_type == new_type); |
@@ -429,7 +435,7 @@ static u64 __init e820_update_range_map(struct e820map *e820x, u64 start, | |||
429 | if (size > (ULLONG_MAX - start)) | 435 | if (size > (ULLONG_MAX - start)) |
430 | size = ULLONG_MAX - start; | 436 | size = ULLONG_MAX - start; |
431 | 437 | ||
432 | for (i = 0; i < e820.nr_map; i++) { | 438 | for (i = 0; i < e820x->nr_map; i++) { |
433 | struct e820entry *ei = &e820x->map[i]; | 439 | struct e820entry *ei = &e820x->map[i]; |
434 | u64 final_start, final_end; | 440 | u64 final_start, final_end; |
435 | if (ei->type != old_type) | 441 | if (ei->type != old_type) |
@@ -446,10 +452,16 @@ static u64 __init e820_update_range_map(struct e820map *e820x, u64 start, | |||
446 | final_end = min(start + size, ei->addr + ei->size); | 452 | final_end = min(start + size, ei->addr + ei->size); |
447 | if (final_start >= final_end) | 453 | if (final_start >= final_end) |
448 | continue; | 454 | continue; |
449 | e820_add_region(final_start, final_end - final_start, | 455 | |
450 | new_type); | 456 | __e820_add_region(e820x, final_start, final_end - final_start, |
457 | new_type); | ||
458 | |||
451 | real_updated_size += final_end - final_start; | 459 | real_updated_size += final_end - final_start; |
452 | 460 | ||
461 | /* | ||
462 | * left range could be head or tail, so need to update | ||
463 | * size at first. | ||
464 | */ | ||
453 | ei->size -= final_end - final_start; | 465 | ei->size -= final_end - final_start; |
454 | if (ei->addr < final_start) | 466 | if (ei->addr < final_start) |
455 | continue; | 467 | continue; |
@@ -461,13 +473,13 @@ static u64 __init e820_update_range_map(struct e820map *e820x, u64 start, | |||
461 | u64 __init e820_update_range(u64 start, u64 size, unsigned old_type, | 473 | u64 __init e820_update_range(u64 start, u64 size, unsigned old_type, |
462 | unsigned new_type) | 474 | unsigned new_type) |
463 | { | 475 | { |
464 | return e820_update_range_map(&e820, start, size, old_type, new_type); | 476 | return __e820_update_range(&e820, start, size, old_type, new_type); |
465 | } | 477 | } |
466 | 478 | ||
467 | static u64 __init e820_update_range_saved(u64 start, u64 size, | 479 | static u64 __init e820_update_range_saved(u64 start, u64 size, |
468 | unsigned old_type, unsigned new_type) | 480 | unsigned old_type, unsigned new_type) |
469 | { | 481 | { |
470 | return e820_update_range_map(&e820_saved, start, size, old_type, | 482 | return __e820_update_range(&e820_saved, start, size, old_type, |
471 | new_type); | 483 | new_type); |
472 | } | 484 | } |
473 | 485 | ||
@@ -1020,8 +1032,8 @@ u64 __init find_e820_area_size(u64 start, u64 *sizep, u64 align) | |||
1020 | continue; | 1032 | continue; |
1021 | return addr; | 1033 | return addr; |
1022 | } | 1034 | } |
1023 | return -1UL; | ||
1024 | 1035 | ||
1036 | return -1ULL; | ||
1025 | } | 1037 | } |
1026 | 1038 | ||
1027 | /* | 1039 | /* |
@@ -1034,13 +1046,22 @@ u64 __init early_reserve_e820(u64 startt, u64 sizet, u64 align) | |||
1034 | u64 start; | 1046 | u64 start; |
1035 | 1047 | ||
1036 | start = startt; | 1048 | start = startt; |
1037 | while (size < sizet) | 1049 | while (size < sizet && (start + 1)) |
1038 | start = find_e820_area_size(start, &size, align); | 1050 | start = find_e820_area_size(start, &size, align); |
1039 | 1051 | ||
1040 | if (size < sizet) | 1052 | if (size < sizet) |
1041 | return 0; | 1053 | return 0; |
1042 | 1054 | ||
1055 | #ifdef CONFIG_X86_32 | ||
1056 | if (start >= MAXMEM) | ||
1057 | return 0; | ||
1058 | if (start + size > MAXMEM) | ||
1059 | size = MAXMEM - start; | ||
1060 | #endif | ||
1061 | |||
1043 | addr = round_down(start + size - sizet, align); | 1062 | addr = round_down(start + size - sizet, align); |
1063 | if (addr < start) | ||
1064 | return 0; | ||
1044 | e820_update_range(addr, sizet, E820_RAM, E820_RESERVED); | 1065 | e820_update_range(addr, sizet, E820_RAM, E820_RESERVED); |
1045 | e820_update_range_saved(addr, sizet, E820_RAM, E820_RESERVED); | 1066 | e820_update_range_saved(addr, sizet, E820_RAM, E820_RESERVED); |
1046 | printk(KERN_INFO "update e820 for early_reserve_e820\n"); | 1067 | printk(KERN_INFO "update e820 for early_reserve_e820\n"); |
diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c index 639ad98238a2..335f049d110f 100644 --- a/arch/x86/kernel/early_printk.c +++ b/arch/x86/kernel/early_printk.c | |||
@@ -250,7 +250,7 @@ static int dbgp_wait_until_complete(void) | |||
250 | return (ctrl & DBGP_ERROR) ? -DBGP_ERRCODE(ctrl) : DBGP_LEN(ctrl); | 250 | return (ctrl & DBGP_ERROR) ? -DBGP_ERRCODE(ctrl) : DBGP_LEN(ctrl); |
251 | } | 251 | } |
252 | 252 | ||
253 | static void dbgp_mdelay(int ms) | 253 | static void __init dbgp_mdelay(int ms) |
254 | { | 254 | { |
255 | int i; | 255 | int i; |
256 | 256 | ||
@@ -311,7 +311,7 @@ static void dbgp_set_data(const void *buf, int size) | |||
311 | writel(hi, &ehci_debug->data47); | 311 | writel(hi, &ehci_debug->data47); |
312 | } | 312 | } |
313 | 313 | ||
314 | static void dbgp_get_data(void *buf, int size) | 314 | static void __init dbgp_get_data(void *buf, int size) |
315 | { | 315 | { |
316 | unsigned char *bytes = buf; | 316 | unsigned char *bytes = buf; |
317 | u32 lo, hi; | 317 | u32 lo, hi; |
@@ -355,7 +355,7 @@ static int dbgp_bulk_write(unsigned devnum, unsigned endpoint, | |||
355 | return ret; | 355 | return ret; |
356 | } | 356 | } |
357 | 357 | ||
358 | static int dbgp_bulk_read(unsigned devnum, unsigned endpoint, void *data, | 358 | static int __init dbgp_bulk_read(unsigned devnum, unsigned endpoint, void *data, |
359 | int size) | 359 | int size) |
360 | { | 360 | { |
361 | u32 pids, addr, ctrl; | 361 | u32 pids, addr, ctrl; |
@@ -386,8 +386,8 @@ static int dbgp_bulk_read(unsigned devnum, unsigned endpoint, void *data, | |||
386 | return ret; | 386 | return ret; |
387 | } | 387 | } |
388 | 388 | ||
389 | static int dbgp_control_msg(unsigned devnum, int requesttype, int request, | 389 | static int __init dbgp_control_msg(unsigned devnum, int requesttype, |
390 | int value, int index, void *data, int size) | 390 | int request, int value, int index, void *data, int size) |
391 | { | 391 | { |
392 | u32 pids, addr, ctrl; | 392 | u32 pids, addr, ctrl; |
393 | struct usb_ctrlrequest req; | 393 | struct usb_ctrlrequest req; |
@@ -489,7 +489,7 @@ static u32 __init find_dbgp(int ehci_num, u32 *rbus, u32 *rslot, u32 *rfunc) | |||
489 | return 0; | 489 | return 0; |
490 | } | 490 | } |
491 | 491 | ||
492 | static int ehci_reset_port(int port) | 492 | static int __init ehci_reset_port(int port) |
493 | { | 493 | { |
494 | u32 portsc; | 494 | u32 portsc; |
495 | u32 delay_time, delay; | 495 | u32 delay_time, delay; |
@@ -532,7 +532,7 @@ static int ehci_reset_port(int port) | |||
532 | return -EBUSY; | 532 | return -EBUSY; |
533 | } | 533 | } |
534 | 534 | ||
535 | static int ehci_wait_for_port(int port) | 535 | static int __init ehci_wait_for_port(int port) |
536 | { | 536 | { |
537 | u32 status; | 537 | u32 status; |
538 | int ret, reps; | 538 | int ret, reps; |
@@ -557,13 +557,13 @@ static inline void dbgp_printk(const char *fmt, ...) { } | |||
557 | 557 | ||
558 | typedef void (*set_debug_port_t)(int port); | 558 | typedef void (*set_debug_port_t)(int port); |
559 | 559 | ||
560 | static void default_set_debug_port(int port) | 560 | static void __init default_set_debug_port(int port) |
561 | { | 561 | { |
562 | } | 562 | } |
563 | 563 | ||
564 | static set_debug_port_t set_debug_port = default_set_debug_port; | 564 | static set_debug_port_t __initdata set_debug_port = default_set_debug_port; |
565 | 565 | ||
566 | static void nvidia_set_debug_port(int port) | 566 | static void __init nvidia_set_debug_port(int port) |
567 | { | 567 | { |
568 | u32 dword; | 568 | u32 dword; |
569 | dword = read_pci_config(ehci_dev.bus, ehci_dev.slot, ehci_dev.func, | 569 | dword = read_pci_config(ehci_dev.bus, ehci_dev.slot, ehci_dev.func, |
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 899e8938e79f..c929add475c9 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
@@ -442,8 +442,7 @@ sysenter_past_esp: | |||
442 | 442 | ||
443 | GET_THREAD_INFO(%ebp) | 443 | GET_THREAD_INFO(%ebp) |
444 | 444 | ||
445 | /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ | 445 | testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) |
446 | testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) | ||
447 | jnz sysenter_audit | 446 | jnz sysenter_audit |
448 | sysenter_do_call: | 447 | sysenter_do_call: |
449 | cmpl $(nr_syscalls), %eax | 448 | cmpl $(nr_syscalls), %eax |
@@ -454,7 +453,7 @@ sysenter_do_call: | |||
454 | DISABLE_INTERRUPTS(CLBR_ANY) | 453 | DISABLE_INTERRUPTS(CLBR_ANY) |
455 | TRACE_IRQS_OFF | 454 | TRACE_IRQS_OFF |
456 | movl TI_flags(%ebp), %ecx | 455 | movl TI_flags(%ebp), %ecx |
457 | testw $_TIF_ALLWORK_MASK, %cx | 456 | testl $_TIF_ALLWORK_MASK, %ecx |
458 | jne sysexit_audit | 457 | jne sysexit_audit |
459 | sysenter_exit: | 458 | sysenter_exit: |
460 | /* if something modifies registers it must also disable sysexit */ | 459 | /* if something modifies registers it must also disable sysexit */ |
@@ -468,7 +467,7 @@ sysenter_exit: | |||
468 | 467 | ||
469 | #ifdef CONFIG_AUDITSYSCALL | 468 | #ifdef CONFIG_AUDITSYSCALL |
470 | sysenter_audit: | 469 | sysenter_audit: |
471 | testw $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp) | 470 | testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp) |
472 | jnz syscall_trace_entry | 471 | jnz syscall_trace_entry |
473 | addl $4,%esp | 472 | addl $4,%esp |
474 | CFI_ADJUST_CFA_OFFSET -4 | 473 | CFI_ADJUST_CFA_OFFSET -4 |
@@ -485,7 +484,7 @@ sysenter_audit: | |||
485 | jmp sysenter_do_call | 484 | jmp sysenter_do_call |
486 | 485 | ||
487 | sysexit_audit: | 486 | sysexit_audit: |
488 | testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx | 487 | testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx |
489 | jne syscall_exit_work | 488 | jne syscall_exit_work |
490 | TRACE_IRQS_ON | 489 | TRACE_IRQS_ON |
491 | ENABLE_INTERRUPTS(CLBR_ANY) | 490 | ENABLE_INTERRUPTS(CLBR_ANY) |
@@ -498,7 +497,7 @@ sysexit_audit: | |||
498 | DISABLE_INTERRUPTS(CLBR_ANY) | 497 | DISABLE_INTERRUPTS(CLBR_ANY) |
499 | TRACE_IRQS_OFF | 498 | TRACE_IRQS_OFF |
500 | movl TI_flags(%ebp), %ecx | 499 | movl TI_flags(%ebp), %ecx |
501 | testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx | 500 | testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx |
502 | jne syscall_exit_work | 501 | jne syscall_exit_work |
503 | movl PT_EAX(%esp),%eax /* reload syscall return value */ | 502 | movl PT_EAX(%esp),%eax /* reload syscall return value */ |
504 | jmp sysenter_exit | 503 | jmp sysenter_exit |
@@ -523,8 +522,7 @@ ENTRY(system_call) | |||
523 | SAVE_ALL | 522 | SAVE_ALL |
524 | GET_THREAD_INFO(%ebp) | 523 | GET_THREAD_INFO(%ebp) |
525 | # system call tracing in operation / emulation | 524 | # system call tracing in operation / emulation |
526 | /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ | 525 | testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) |
527 | testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) | ||
528 | jnz syscall_trace_entry | 526 | jnz syscall_trace_entry |
529 | cmpl $(nr_syscalls), %eax | 527 | cmpl $(nr_syscalls), %eax |
530 | jae syscall_badsys | 528 | jae syscall_badsys |
@@ -538,7 +536,7 @@ syscall_exit: | |||
538 | # between sampling and the iret | 536 | # between sampling and the iret |
539 | TRACE_IRQS_OFF | 537 | TRACE_IRQS_OFF |
540 | movl TI_flags(%ebp), %ecx | 538 | movl TI_flags(%ebp), %ecx |
541 | testw $_TIF_ALLWORK_MASK, %cx # current->work | 539 | testl $_TIF_ALLWORK_MASK, %ecx # current->work |
542 | jne syscall_exit_work | 540 | jne syscall_exit_work |
543 | 541 | ||
544 | restore_all: | 542 | restore_all: |
@@ -673,7 +671,7 @@ END(syscall_trace_entry) | |||
673 | # perform syscall exit tracing | 671 | # perform syscall exit tracing |
674 | ALIGN | 672 | ALIGN |
675 | syscall_exit_work: | 673 | syscall_exit_work: |
676 | testb $_TIF_WORK_SYSCALL_EXIT, %cl | 674 | testl $_TIF_WORK_SYSCALL_EXIT, %ecx |
677 | jz work_pending | 675 | jz work_pending |
678 | TRACE_IRQS_ON | 676 | TRACE_IRQS_ON |
679 | ENABLE_INTERRUPTS(CLBR_ANY) # could let syscall_trace_leave() call | 677 | ENABLE_INTERRUPTS(CLBR_ANY) # could let syscall_trace_leave() call |
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index 7ba4621c0dfa..a331ec38af9e 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -368,6 +368,7 @@ ENTRY(save_rest) | |||
368 | END(save_rest) | 368 | END(save_rest) |
369 | 369 | ||
370 | /* save complete stack frame */ | 370 | /* save complete stack frame */ |
371 | .pushsection .kprobes.text, "ax" | ||
371 | ENTRY(save_paranoid) | 372 | ENTRY(save_paranoid) |
372 | XCPT_FRAME 1 RDI+8 | 373 | XCPT_FRAME 1 RDI+8 |
373 | cld | 374 | cld |
@@ -396,6 +397,7 @@ ENTRY(save_paranoid) | |||
396 | 1: ret | 397 | 1: ret |
397 | CFI_ENDPROC | 398 | CFI_ENDPROC |
398 | END(save_paranoid) | 399 | END(save_paranoid) |
400 | .popsection | ||
399 | 401 | ||
400 | /* | 402 | /* |
401 | * A newly forked process directly context switches into this address. | 403 | * A newly forked process directly context switches into this address. |
@@ -416,7 +418,6 @@ ENTRY(ret_from_fork) | |||
416 | 418 | ||
417 | GET_THREAD_INFO(%rcx) | 419 | GET_THREAD_INFO(%rcx) |
418 | 420 | ||
419 | CFI_REMEMBER_STATE | ||
420 | RESTORE_REST | 421 | RESTORE_REST |
421 | 422 | ||
422 | testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread? | 423 | testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread? |
@@ -428,7 +429,6 @@ ENTRY(ret_from_fork) | |||
428 | RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET | 429 | RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET |
429 | jmp ret_from_sys_call # go to the SYSRET fastpath | 430 | jmp ret_from_sys_call # go to the SYSRET fastpath |
430 | 431 | ||
431 | CFI_RESTORE_STATE | ||
432 | CFI_ENDPROC | 432 | CFI_ENDPROC |
433 | END(ret_from_fork) | 433 | END(ret_from_fork) |
434 | 434 | ||
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index b864341dcc45..b8ac3b6cf776 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c | |||
@@ -45,16 +45,16 @@ void ack_bad_irq(unsigned int irq) | |||
45 | /* | 45 | /* |
46 | * /proc/interrupts printing: | 46 | * /proc/interrupts printing: |
47 | */ | 47 | */ |
48 | static int show_other_interrupts(struct seq_file *p) | 48 | static int show_other_interrupts(struct seq_file *p, int prec) |
49 | { | 49 | { |
50 | int j; | 50 | int j; |
51 | 51 | ||
52 | seq_printf(p, "NMI: "); | 52 | seq_printf(p, "%*s: ", prec, "NMI"); |
53 | for_each_online_cpu(j) | 53 | for_each_online_cpu(j) |
54 | seq_printf(p, "%10u ", irq_stats(j)->__nmi_count); | 54 | seq_printf(p, "%10u ", irq_stats(j)->__nmi_count); |
55 | seq_printf(p, " Non-maskable interrupts\n"); | 55 | seq_printf(p, " Non-maskable interrupts\n"); |
56 | #ifdef CONFIG_X86_LOCAL_APIC | 56 | #ifdef CONFIG_X86_LOCAL_APIC |
57 | seq_printf(p, "LOC: "); | 57 | seq_printf(p, "%*s: ", prec, "LOC"); |
58 | for_each_online_cpu(j) | 58 | for_each_online_cpu(j) |
59 | seq_printf(p, "%10u ", irq_stats(j)->apic_timer_irqs); | 59 | seq_printf(p, "%10u ", irq_stats(j)->apic_timer_irqs); |
60 | seq_printf(p, " Local timer interrupts\n"); | 60 | seq_printf(p, " Local timer interrupts\n"); |
@@ -66,40 +66,40 @@ static int show_other_interrupts(struct seq_file *p) | |||
66 | seq_printf(p, " Platform interrupts\n"); | 66 | seq_printf(p, " Platform interrupts\n"); |
67 | } | 67 | } |
68 | #ifdef CONFIG_SMP | 68 | #ifdef CONFIG_SMP |
69 | seq_printf(p, "RES: "); | 69 | seq_printf(p, "%*s: ", prec, "RES"); |
70 | for_each_online_cpu(j) | 70 | for_each_online_cpu(j) |
71 | seq_printf(p, "%10u ", irq_stats(j)->irq_resched_count); | 71 | seq_printf(p, "%10u ", irq_stats(j)->irq_resched_count); |
72 | seq_printf(p, " Rescheduling interrupts\n"); | 72 | seq_printf(p, " Rescheduling interrupts\n"); |
73 | seq_printf(p, "CAL: "); | 73 | seq_printf(p, "%*s: ", prec, "CAL"); |
74 | for_each_online_cpu(j) | 74 | for_each_online_cpu(j) |
75 | seq_printf(p, "%10u ", irq_stats(j)->irq_call_count); | 75 | seq_printf(p, "%10u ", irq_stats(j)->irq_call_count); |
76 | seq_printf(p, " Function call interrupts\n"); | 76 | seq_printf(p, " Function call interrupts\n"); |
77 | seq_printf(p, "TLB: "); | 77 | seq_printf(p, "%*s: ", prec, "TLB"); |
78 | for_each_online_cpu(j) | 78 | for_each_online_cpu(j) |
79 | seq_printf(p, "%10u ", irq_stats(j)->irq_tlb_count); | 79 | seq_printf(p, "%10u ", irq_stats(j)->irq_tlb_count); |
80 | seq_printf(p, " TLB shootdowns\n"); | 80 | seq_printf(p, " TLB shootdowns\n"); |
81 | #endif | 81 | #endif |
82 | #ifdef CONFIG_X86_MCE | 82 | #ifdef CONFIG_X86_MCE |
83 | seq_printf(p, "TRM: "); | 83 | seq_printf(p, "%*s: ", prec, "TRM"); |
84 | for_each_online_cpu(j) | 84 | for_each_online_cpu(j) |
85 | seq_printf(p, "%10u ", irq_stats(j)->irq_thermal_count); | 85 | seq_printf(p, "%10u ", irq_stats(j)->irq_thermal_count); |
86 | seq_printf(p, " Thermal event interrupts\n"); | 86 | seq_printf(p, " Thermal event interrupts\n"); |
87 | # ifdef CONFIG_X86_64 | 87 | # ifdef CONFIG_X86_64 |
88 | seq_printf(p, "THR: "); | 88 | seq_printf(p, "%*s: ", prec, "THR"); |
89 | for_each_online_cpu(j) | 89 | for_each_online_cpu(j) |
90 | seq_printf(p, "%10u ", irq_stats(j)->irq_threshold_count); | 90 | seq_printf(p, "%10u ", irq_stats(j)->irq_threshold_count); |
91 | seq_printf(p, " Threshold APIC interrupts\n"); | 91 | seq_printf(p, " Threshold APIC interrupts\n"); |
92 | # endif | 92 | # endif |
93 | #endif | 93 | #endif |
94 | #ifdef CONFIG_X86_LOCAL_APIC | 94 | #ifdef CONFIG_X86_LOCAL_APIC |
95 | seq_printf(p, "SPU: "); | 95 | seq_printf(p, "%*s: ", prec, "SPU"); |
96 | for_each_online_cpu(j) | 96 | for_each_online_cpu(j) |
97 | seq_printf(p, "%10u ", irq_stats(j)->irq_spurious_count); | 97 | seq_printf(p, "%10u ", irq_stats(j)->irq_spurious_count); |
98 | seq_printf(p, " Spurious interrupts\n"); | 98 | seq_printf(p, " Spurious interrupts\n"); |
99 | #endif | 99 | #endif |
100 | seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); | 100 | seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count)); |
101 | #if defined(CONFIG_X86_IO_APIC) | 101 | #if defined(CONFIG_X86_IO_APIC) |
102 | seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count)); | 102 | seq_printf(p, "%*s: %10u\n", prec, "MIS", atomic_read(&irq_mis_count)); |
103 | #endif | 103 | #endif |
104 | return 0; | 104 | return 0; |
105 | } | 105 | } |
@@ -107,19 +107,22 @@ static int show_other_interrupts(struct seq_file *p) | |||
107 | int show_interrupts(struct seq_file *p, void *v) | 107 | int show_interrupts(struct seq_file *p, void *v) |
108 | { | 108 | { |
109 | unsigned long flags, any_count = 0; | 109 | unsigned long flags, any_count = 0; |
110 | int i = *(loff_t *) v, j; | 110 | int i = *(loff_t *) v, j, prec; |
111 | struct irqaction *action; | 111 | struct irqaction *action; |
112 | struct irq_desc *desc; | 112 | struct irq_desc *desc; |
113 | 113 | ||
114 | if (i > nr_irqs) | 114 | if (i > nr_irqs) |
115 | return 0; | 115 | return 0; |
116 | 116 | ||
117 | for (prec = 3, j = 1000; prec < 10 && j <= nr_irqs; ++prec) | ||
118 | j *= 10; | ||
119 | |||
117 | if (i == nr_irqs) | 120 | if (i == nr_irqs) |
118 | return show_other_interrupts(p); | 121 | return show_other_interrupts(p, prec); |
119 | 122 | ||
120 | /* print header */ | 123 | /* print header */ |
121 | if (i == 0) { | 124 | if (i == 0) { |
122 | seq_printf(p, " "); | 125 | seq_printf(p, "%*s", prec + 8, ""); |
123 | for_each_online_cpu(j) | 126 | for_each_online_cpu(j) |
124 | seq_printf(p, "CPU%-8d", j); | 127 | seq_printf(p, "CPU%-8d", j); |
125 | seq_putc(p, '\n'); | 128 | seq_putc(p, '\n'); |
@@ -140,7 +143,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
140 | if (!action && !any_count) | 143 | if (!action && !any_count) |
141 | goto out; | 144 | goto out; |
142 | 145 | ||
143 | seq_printf(p, "%3d: ", i); | 146 | seq_printf(p, "%*d: ", prec, i); |
144 | #ifndef CONFIG_SMP | 147 | #ifndef CONFIG_SMP |
145 | seq_printf(p, "%10u ", kstat_irqs(i)); | 148 | seq_printf(p, "%10u ", kstat_irqs(i)); |
146 | #else | 149 | #else |
diff --git a/arch/x86/kernel/mmconf-fam10h_64.c b/arch/x86/kernel/mmconf-fam10h_64.c index 666e43df51f9..712d15fdc416 100644 --- a/arch/x86/kernel/mmconf-fam10h_64.c +++ b/arch/x86/kernel/mmconf-fam10h_64.c | |||
@@ -226,7 +226,7 @@ static int __devinit set_check_enable_amd_mmconf(const struct dmi_system_id *d) | |||
226 | return 0; | 226 | return 0; |
227 | } | 227 | } |
228 | 228 | ||
229 | static struct dmi_system_id __devinitdata mmconf_dmi_table[] = { | 229 | static const struct dmi_system_id __cpuinitconst mmconf_dmi_table[] = { |
230 | { | 230 | { |
231 | .callback = set_check_enable_amd_mmconf, | 231 | .callback = set_check_enable_amd_mmconf, |
232 | .ident = "Sun Microsystems Machine", | 232 | .ident = "Sun Microsystems Machine", |
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index e8192401da47..47673e02ae58 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c | |||
@@ -890,12 +890,12 @@ static int __init replace_intsrc_all(struct mpc_table *mpc, | |||
890 | #ifdef CONFIG_X86_IO_APIC | 890 | #ifdef CONFIG_X86_IO_APIC |
891 | struct mpc_intsrc *m = (struct mpc_intsrc *)mpt; | 891 | struct mpc_intsrc *m = (struct mpc_intsrc *)mpt; |
892 | 892 | ||
893 | printk(KERN_INFO "OLD "); | 893 | apic_printk(APIC_VERBOSE, "OLD "); |
894 | print_MP_intsrc_info(m); | 894 | print_MP_intsrc_info(m); |
895 | i = get_MP_intsrc_index(m); | 895 | i = get_MP_intsrc_index(m); |
896 | if (i > 0) { | 896 | if (i > 0) { |
897 | assign_to_mpc_intsrc(&mp_irqs[i], m); | 897 | assign_to_mpc_intsrc(&mp_irqs[i], m); |
898 | printk(KERN_INFO "NEW "); | 898 | apic_printk(APIC_VERBOSE, "NEW "); |
899 | print_mp_irq_info(&mp_irqs[i]); | 899 | print_mp_irq_info(&mp_irqs[i]); |
900 | } else if (!i) { | 900 | } else if (!i) { |
901 | /* legacy, do nothing */ | 901 | /* legacy, do nothing */ |
@@ -943,7 +943,7 @@ static int __init replace_intsrc_all(struct mpc_table *mpc, | |||
943 | continue; | 943 | continue; |
944 | 944 | ||
945 | if (nr_m_spare > 0) { | 945 | if (nr_m_spare > 0) { |
946 | printk(KERN_INFO "*NEW* found "); | 946 | apic_printk(APIC_VERBOSE, "*NEW* found\n"); |
947 | nr_m_spare--; | 947 | nr_m_spare--; |
948 | assign_to_mpc_intsrc(&mp_irqs[i], m_spare[nr_m_spare]); | 948 | assign_to_mpc_intsrc(&mp_irqs[i], m_spare[nr_m_spare]); |
949 | m_spare[nr_m_spare] = NULL; | 949 | m_spare[nr_m_spare] = NULL; |
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 3d9672e59c16..19378715f415 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -685,9 +685,8 @@ static int ptrace_bts_config(struct task_struct *child, | |||
685 | if (!cfg.signal) | 685 | if (!cfg.signal) |
686 | return -EINVAL; | 686 | return -EINVAL; |
687 | 687 | ||
688 | return -EOPNOTSUPP; | ||
689 | |||
690 | child->thread.bts_ovfl_signal = cfg.signal; | 688 | child->thread.bts_ovfl_signal = cfg.signal; |
689 | return -EOPNOTSUPP; | ||
691 | } | 690 | } |
692 | 691 | ||
693 | if ((cfg.flags & PTRACE_BTS_O_ALLOC) && | 692 | if ((cfg.flags & PTRACE_BTS_O_ALLOC) && |
diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S index c22981fa2f3a..ad5441ed1b57 100644 --- a/arch/x86/lib/memcpy_64.S +++ b/arch/x86/lib/memcpy_64.S | |||
@@ -1,30 +1,38 @@ | |||
1 | /* Copyright 2002 Andi Kleen */ | 1 | /* Copyright 2002 Andi Kleen */ |
2 | 2 | ||
3 | #include <linux/linkage.h> | 3 | #include <linux/linkage.h> |
4 | #include <asm/dwarf2.h> | 4 | |
5 | #include <asm/cpufeature.h> | 5 | #include <asm/cpufeature.h> |
6 | #include <asm/dwarf2.h> | ||
6 | 7 | ||
7 | /* | 8 | /* |
8 | * memcpy - Copy a memory block. | 9 | * memcpy - Copy a memory block. |
9 | * | 10 | * |
10 | * Input: | 11 | * Input: |
11 | * rdi destination | 12 | * rdi destination |
12 | * rsi source | 13 | * rsi source |
13 | * rdx count | 14 | * rdx count |
14 | * | 15 | * |
15 | * Output: | 16 | * Output: |
16 | * rax original destination | 17 | * rax original destination |
17 | */ | 18 | */ |
18 | 19 | ||
20 | /* | ||
21 | * memcpy_c() - fast string ops (REP MOVSQ) based variant. | ||
22 | * | ||
23 | * Calls to this get patched into the kernel image via the | ||
24 | * alternative instructions framework: | ||
25 | */ | ||
19 | ALIGN | 26 | ALIGN |
20 | memcpy_c: | 27 | memcpy_c: |
21 | CFI_STARTPROC | 28 | CFI_STARTPROC |
22 | movq %rdi,%rax | 29 | movq %rdi, %rax |
23 | movl %edx,%ecx | 30 | |
24 | shrl $3,%ecx | 31 | movl %edx, %ecx |
25 | andl $7,%edx | 32 | shrl $3, %ecx |
33 | andl $7, %edx | ||
26 | rep movsq | 34 | rep movsq |
27 | movl %edx,%ecx | 35 | movl %edx, %ecx |
28 | rep movsb | 36 | rep movsb |
29 | ret | 37 | ret |
30 | CFI_ENDPROC | 38 | CFI_ENDPROC |
@@ -33,99 +41,110 @@ ENDPROC(memcpy_c) | |||
33 | ENTRY(__memcpy) | 41 | ENTRY(__memcpy) |
34 | ENTRY(memcpy) | 42 | ENTRY(memcpy) |
35 | CFI_STARTPROC | 43 | CFI_STARTPROC |
36 | pushq %rbx | ||
37 | CFI_ADJUST_CFA_OFFSET 8 | ||
38 | CFI_REL_OFFSET rbx, 0 | ||
39 | movq %rdi,%rax | ||
40 | 44 | ||
41 | movl %edx,%ecx | 45 | /* |
42 | shrl $6,%ecx | 46 | * Put the number of full 64-byte blocks into %ecx. |
47 | * Tail portion is handled at the end: | ||
48 | */ | ||
49 | movq %rdi, %rax | ||
50 | movl %edx, %ecx | ||
51 | shrl $6, %ecx | ||
43 | jz .Lhandle_tail | 52 | jz .Lhandle_tail |
44 | 53 | ||
45 | .p2align 4 | 54 | .p2align 4 |
46 | .Lloop_64: | 55 | .Lloop_64: |
56 | /* | ||
57 | * We decrement the loop index here - and the zero-flag is | ||
58 | * checked at the end of the loop (instructions inbetween do | ||
59 | * not change the zero flag): | ||
60 | */ | ||
47 | decl %ecx | 61 | decl %ecx |
48 | 62 | ||
49 | movq (%rsi),%r11 | 63 | /* |
50 | movq 8(%rsi),%r8 | 64 | * Move in blocks of 4x16 bytes: |
65 | */ | ||
66 | movq 0*8(%rsi), %r11 | ||
67 | movq 1*8(%rsi), %r8 | ||
68 | movq %r11, 0*8(%rdi) | ||
69 | movq %r8, 1*8(%rdi) | ||
51 | 70 | ||
52 | movq %r11,(%rdi) | 71 | movq 2*8(%rsi), %r9 |
53 | movq %r8,1*8(%rdi) | 72 | movq 3*8(%rsi), %r10 |
73 | movq %r9, 2*8(%rdi) | ||
74 | movq %r10, 3*8(%rdi) | ||
54 | 75 | ||
55 | movq 2*8(%rsi),%r9 | 76 | movq 4*8(%rsi), %r11 |
56 | movq 3*8(%rsi),%r10 | 77 | movq 5*8(%rsi), %r8 |
78 | movq %r11, 4*8(%rdi) | ||
79 | movq %r8, 5*8(%rdi) | ||
57 | 80 | ||
58 | movq %r9,2*8(%rdi) | 81 | movq 6*8(%rsi), %r9 |
59 | movq %r10,3*8(%rdi) | 82 | movq 7*8(%rsi), %r10 |
83 | movq %r9, 6*8(%rdi) | ||
84 | movq %r10, 7*8(%rdi) | ||
60 | 85 | ||
61 | movq 4*8(%rsi),%r11 | 86 | leaq 64(%rsi), %rsi |
62 | movq 5*8(%rsi),%r8 | 87 | leaq 64(%rdi), %rdi |
63 | 88 | ||
64 | movq %r11,4*8(%rdi) | ||
65 | movq %r8,5*8(%rdi) | ||
66 | |||
67 | movq 6*8(%rsi),%r9 | ||
68 | movq 7*8(%rsi),%r10 | ||
69 | |||
70 | movq %r9,6*8(%rdi) | ||
71 | movq %r10,7*8(%rdi) | ||
72 | |||
73 | leaq 64(%rsi),%rsi | ||
74 | leaq 64(%rdi),%rdi | ||
75 | jnz .Lloop_64 | 89 | jnz .Lloop_64 |
76 | 90 | ||
77 | .Lhandle_tail: | 91 | .Lhandle_tail: |
78 | movl %edx,%ecx | 92 | movl %edx, %ecx |
79 | andl $63,%ecx | 93 | andl $63, %ecx |
80 | shrl $3,%ecx | 94 | shrl $3, %ecx |
81 | jz .Lhandle_7 | 95 | jz .Lhandle_7 |
96 | |||
82 | .p2align 4 | 97 | .p2align 4 |
83 | .Lloop_8: | 98 | .Lloop_8: |
84 | decl %ecx | 99 | decl %ecx |
85 | movq (%rsi),%r8 | 100 | movq (%rsi), %r8 |
86 | movq %r8,(%rdi) | 101 | movq %r8, (%rdi) |
87 | leaq 8(%rdi),%rdi | 102 | leaq 8(%rdi), %rdi |
88 | leaq 8(%rsi),%rsi | 103 | leaq 8(%rsi), %rsi |
89 | jnz .Lloop_8 | 104 | jnz .Lloop_8 |
90 | 105 | ||
91 | .Lhandle_7: | 106 | .Lhandle_7: |
92 | movl %edx,%ecx | 107 | movl %edx, %ecx |
93 | andl $7,%ecx | 108 | andl $7, %ecx |
94 | jz .Lende | 109 | jz .Lend |
110 | |||
95 | .p2align 4 | 111 | .p2align 4 |
96 | .Lloop_1: | 112 | .Lloop_1: |
97 | movb (%rsi),%r8b | 113 | movb (%rsi), %r8b |
98 | movb %r8b,(%rdi) | 114 | movb %r8b, (%rdi) |
99 | incq %rdi | 115 | incq %rdi |
100 | incq %rsi | 116 | incq %rsi |
101 | decl %ecx | 117 | decl %ecx |
102 | jnz .Lloop_1 | 118 | jnz .Lloop_1 |
103 | 119 | ||
104 | .Lende: | 120 | .Lend: |
105 | popq %rbx | ||
106 | CFI_ADJUST_CFA_OFFSET -8 | ||
107 | CFI_RESTORE rbx | ||
108 | ret | 121 | ret |
109 | .Lfinal: | ||
110 | CFI_ENDPROC | 122 | CFI_ENDPROC |
111 | ENDPROC(memcpy) | 123 | ENDPROC(memcpy) |
112 | ENDPROC(__memcpy) | 124 | ENDPROC(__memcpy) |
113 | 125 | ||
114 | /* Some CPUs run faster using the string copy instructions. | 126 | /* |
115 | It is also a lot simpler. Use this when possible */ | 127 | * Some CPUs run faster using the string copy instructions. |
128 | * It is also a lot simpler. Use this when possible: | ||
129 | */ | ||
116 | 130 | ||
117 | .section .altinstr_replacement,"ax" | 131 | .section .altinstr_replacement, "ax" |
118 | 1: .byte 0xeb /* jmp <disp8> */ | 132 | 1: .byte 0xeb /* jmp <disp8> */ |
119 | .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */ | 133 | .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */ |
120 | 2: | 134 | 2: |
121 | .previous | 135 | .previous |
122 | .section .altinstructions,"a" | 136 | |
137 | .section .altinstructions, "a" | ||
123 | .align 8 | 138 | .align 8 |
124 | .quad memcpy | 139 | .quad memcpy |
125 | .quad 1b | 140 | .quad 1b |
126 | .byte X86_FEATURE_REP_GOOD | 141 | .byte X86_FEATURE_REP_GOOD |
127 | /* Replace only beginning, memcpy is used to apply alternatives, so it | 142 | |
128 | * is silly to overwrite itself with nops - reboot is only outcome... */ | 143 | /* |
144 | * Replace only beginning, memcpy is used to apply alternatives, | ||
145 | * so it is silly to overwrite itself with nops - reboot is the | ||
146 | * only outcome... | ||
147 | */ | ||
129 | .byte 2b - 1b | 148 | .byte 2b - 1b |
130 | .byte 2b - 1b | 149 | .byte 2b - 1b |
131 | .previous | 150 | .previous |
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c index f256e73542d7..522db5e3d0bf 100644 --- a/arch/x86/mm/highmem_32.c +++ b/arch/x86/mm/highmem_32.c | |||
@@ -121,24 +121,8 @@ void kunmap_atomic(void *kvaddr, enum km_type type) | |||
121 | pagefault_enable(); | 121 | pagefault_enable(); |
122 | } | 122 | } |
123 | 123 | ||
124 | void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) | 124 | /* |
125 | { | 125 | * This is the same as kmap_atomic() but can map memory that doesn't |
126 | enum fixed_addresses idx; | ||
127 | unsigned long vaddr; | ||
128 | |||
129 | pagefault_disable(); | ||
130 | |||
131 | debug_kmap_atomic_prot(type); | ||
132 | |||
133 | idx = type + KM_TYPE_NR * smp_processor_id(); | ||
134 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | ||
135 | set_pte(kmap_pte - idx, pfn_pte(pfn, prot)); | ||
136 | arch_flush_lazy_mmu_mode(); | ||
137 | |||
138 | return (void*) vaddr; | ||
139 | } | ||
140 | |||
141 | /* This is the same as kmap_atomic() but can map memory that doesn't | ||
142 | * have a struct page associated with it. | 126 | * have a struct page associated with it. |
143 | */ | 127 | */ |
144 | void *kmap_atomic_pfn(unsigned long pfn, enum km_type type) | 128 | void *kmap_atomic_pfn(unsigned long pfn, enum km_type type) |
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index 15219e0d1243..fd3da1dda1c9 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c | |||
@@ -94,9 +94,9 @@ struct map_range { | |||
94 | #define NR_RANGE_MR 5 | 94 | #define NR_RANGE_MR 5 |
95 | #endif | 95 | #endif |
96 | 96 | ||
97 | static int save_mr(struct map_range *mr, int nr_range, | 97 | static int __meminit save_mr(struct map_range *mr, int nr_range, |
98 | unsigned long start_pfn, unsigned long end_pfn, | 98 | unsigned long start_pfn, unsigned long end_pfn, |
99 | unsigned long page_size_mask) | 99 | unsigned long page_size_mask) |
100 | { | 100 | { |
101 | if (start_pfn < end_pfn) { | 101 | if (start_pfn < end_pfn) { |
102 | if (nr_range >= NR_RANGE_MR) | 102 | if (nr_range >= NR_RANGE_MR) |
diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c index 592984e5496b..6e60ba698cee 100644 --- a/arch/x86/mm/iomap_32.c +++ b/arch/x86/mm/iomap_32.c | |||
@@ -32,7 +32,23 @@ int is_io_mapping_possible(resource_size_t base, unsigned long size) | |||
32 | } | 32 | } |
33 | EXPORT_SYMBOL_GPL(is_io_mapping_possible); | 33 | EXPORT_SYMBOL_GPL(is_io_mapping_possible); |
34 | 34 | ||
35 | /* Map 'pfn' using fixed map 'type' and protections 'prot' | 35 | void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) |
36 | { | ||
37 | enum fixed_addresses idx; | ||
38 | unsigned long vaddr; | ||
39 | |||
40 | pagefault_disable(); | ||
41 | |||
42 | idx = type + KM_TYPE_NR * smp_processor_id(); | ||
43 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | ||
44 | set_pte(kmap_pte - idx, pfn_pte(pfn, prot)); | ||
45 | arch_flush_lazy_mmu_mode(); | ||
46 | |||
47 | return (void *)vaddr; | ||
48 | } | ||
49 | |||
50 | /* | ||
51 | * Map 'pfn' using fixed map 'type' and protections 'prot' | ||
36 | */ | 52 | */ |
37 | void * | 53 | void * |
38 | iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) | 54 | iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) |
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index aca924a30ee6..55e127f71ed9 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
@@ -22,13 +22,17 @@ | |||
22 | #include <asm/pgalloc.h> | 22 | #include <asm/pgalloc.h> |
23 | #include <asm/pat.h> | 23 | #include <asm/pat.h> |
24 | 24 | ||
25 | #ifdef CONFIG_X86_64 | 25 | static inline int phys_addr_valid(resource_size_t addr) |
26 | |||
27 | static inline int phys_addr_valid(unsigned long addr) | ||
28 | { | 26 | { |
29 | return addr < (1UL << boot_cpu_data.x86_phys_bits); | 27 | #ifdef CONFIG_PHYS_ADDR_T_64BIT |
28 | return !(addr >> boot_cpu_data.x86_phys_bits); | ||
29 | #else | ||
30 | return 1; | ||
31 | #endif | ||
30 | } | 32 | } |
31 | 33 | ||
34 | #ifdef CONFIG_X86_64 | ||
35 | |||
32 | unsigned long __phys_addr(unsigned long x) | 36 | unsigned long __phys_addr(unsigned long x) |
33 | { | 37 | { |
34 | if (x >= __START_KERNEL_map) { | 38 | if (x >= __START_KERNEL_map) { |
@@ -65,11 +69,6 @@ EXPORT_SYMBOL(__virt_addr_valid); | |||
65 | 69 | ||
66 | #else | 70 | #else |
67 | 71 | ||
68 | static inline int phys_addr_valid(unsigned long addr) | ||
69 | { | ||
70 | return 1; | ||
71 | } | ||
72 | |||
73 | #ifdef CONFIG_DEBUG_VIRTUAL | 72 | #ifdef CONFIG_DEBUG_VIRTUAL |
74 | unsigned long __phys_addr(unsigned long x) | 73 | unsigned long __phys_addr(unsigned long x) |
75 | { | 74 | { |
@@ -488,7 +487,12 @@ static int __init early_ioremap_debug_setup(char *str) | |||
488 | early_param("early_ioremap_debug", early_ioremap_debug_setup); | 487 | early_param("early_ioremap_debug", early_ioremap_debug_setup); |
489 | 488 | ||
490 | static __initdata int after_paging_init; | 489 | static __initdata int after_paging_init; |
491 | static pte_t bm_pte[PAGE_SIZE/sizeof(pte_t)] __page_aligned_bss; | 490 | #define __FIXADDR_TOP (-PAGE_SIZE) |
491 | static pte_t bm_pte[(__fix_to_virt(FIX_DBGP_BASE) | ||
492 | ^ __fix_to_virt(FIX_BTMAP_BEGIN)) >> PMD_SHIFT | ||
493 | ? PAGE_SIZE / sizeof(pte_t) : 0] __page_aligned_bss; | ||
494 | #undef __FIXADDR_TOP | ||
495 | static __initdata pte_t *bm_ptep; | ||
492 | 496 | ||
493 | static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) | 497 | static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) |
494 | { | 498 | { |
@@ -503,6 +507,8 @@ static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) | |||
503 | 507 | ||
504 | static inline pte_t * __init early_ioremap_pte(unsigned long addr) | 508 | static inline pte_t * __init early_ioremap_pte(unsigned long addr) |
505 | { | 509 | { |
510 | if (!sizeof(bm_pte)) | ||
511 | return &bm_ptep[pte_index(addr)]; | ||
506 | return &bm_pte[pte_index(addr)]; | 512 | return &bm_pte[pte_index(addr)]; |
507 | } | 513 | } |
508 | 514 | ||
@@ -520,8 +526,14 @@ void __init early_ioremap_init(void) | |||
520 | slot_virt[i] = fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i); | 526 | slot_virt[i] = fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i); |
521 | 527 | ||
522 | pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); | 528 | pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); |
523 | memset(bm_pte, 0, sizeof(bm_pte)); | 529 | if (sizeof(bm_pte)) { |
524 | pmd_populate_kernel(&init_mm, pmd, bm_pte); | 530 | memset(bm_pte, 0, sizeof(bm_pte)); |
531 | pmd_populate_kernel(&init_mm, pmd, bm_pte); | ||
532 | } else { | ||
533 | bm_ptep = pte_offset_kernel(pmd, 0); | ||
534 | if (early_ioremap_debug) | ||
535 | printk(KERN_INFO "bm_ptep=%p\n", bm_ptep); | ||
536 | } | ||
525 | 537 | ||
526 | /* | 538 | /* |
527 | * The boot-ioremap range spans multiple pmds, for which | 539 | * The boot-ioremap range spans multiple pmds, for which |
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index 2ed37158012d..640339ee4fb2 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -677,10 +677,11 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, | |||
677 | is_ram = pat_pagerange_is_ram(paddr, paddr + size); | 677 | is_ram = pat_pagerange_is_ram(paddr, paddr + size); |
678 | 678 | ||
679 | /* | 679 | /* |
680 | * reserve_pfn_range() doesn't support RAM pages. | 680 | * reserve_pfn_range() doesn't support RAM pages. Maintain the current |
681 | * behavior with RAM pages by returning success. | ||
681 | */ | 682 | */ |
682 | if (is_ram != 0) | 683 | if (is_ram != 0) |
683 | return -EINVAL; | 684 | return 0; |
684 | 685 | ||
685 | ret = reserve_memtype(paddr, paddr + size, want_flags, &flags); | 686 | ret = reserve_memtype(paddr, paddr + size, want_flags, &flags); |
686 | if (ret) | 687 | if (ret) |
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 82d22fc601ae..8c362b96b644 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
@@ -90,7 +90,7 @@ static int __devinit can_skip_ioresource_align(const struct dmi_system_id *d) | |||
90 | return 0; | 90 | return 0; |
91 | } | 91 | } |
92 | 92 | ||
93 | static struct dmi_system_id can_skip_pciprobe_dmi_table[] __devinitdata = { | 93 | static const struct dmi_system_id can_skip_pciprobe_dmi_table[] __devinitconst = { |
94 | /* | 94 | /* |
95 | * Systems where PCI IO resource ISA alignment can be skipped | 95 | * Systems where PCI IO resource ISA alignment can be skipped |
96 | * when the ISA enable bit in the bridge control is not set | 96 | * when the ISA enable bit in the bridge control is not set |
@@ -183,7 +183,7 @@ static int __devinit assign_all_busses(const struct dmi_system_id *d) | |||
183 | } | 183 | } |
184 | #endif | 184 | #endif |
185 | 185 | ||
186 | static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { | 186 | static const struct dmi_system_id __devinitconst pciprobe_dmi_table[] = { |
187 | #ifdef __i386__ | 187 | #ifdef __i386__ |
188 | /* | 188 | /* |
189 | * Laptops which need pci=assign-busses to see Cardbus cards | 189 | * Laptops which need pci=assign-busses to see Cardbus cards |
diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c index 7d388d5cf548..9c49919e4d1c 100644 --- a/arch/x86/pci/fixup.c +++ b/arch/x86/pci/fixup.c | |||
@@ -356,7 +356,7 @@ static void __devinit pci_fixup_video(struct pci_dev *pdev) | |||
356 | DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); | 356 | DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); |
357 | 357 | ||
358 | 358 | ||
359 | static struct dmi_system_id __devinitdata msi_k8t_dmi_table[] = { | 359 | static const struct dmi_system_id __devinitconst msi_k8t_dmi_table[] = { |
360 | { | 360 | { |
361 | .ident = "MSI-K8T-Neo2Fir", | 361 | .ident = "MSI-K8T-Neo2Fir", |
362 | .matches = { | 362 | .matches = { |
@@ -413,7 +413,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, | |||
413 | */ | 413 | */ |
414 | static u16 toshiba_line_size; | 414 | static u16 toshiba_line_size; |
415 | 415 | ||
416 | static struct dmi_system_id __devinitdata toshiba_ohci1394_dmi_table[] = { | 416 | static const struct dmi_system_id __devinitconst toshiba_ohci1394_dmi_table[] = { |
417 | { | 417 | { |
418 | .ident = "Toshiba PS5 based laptop", | 418 | .ident = "Toshiba PS5 based laptop", |
419 | .matches = { | 419 | .matches = { |