diff options
91 files changed, 1310 insertions, 689 deletions
diff --git a/Documentation/filesystems/ext2.txt b/Documentation/filesystems/ext2.txt index 4333e836c495..23448551cabe 100644 --- a/Documentation/filesystems/ext2.txt +++ b/Documentation/filesystems/ext2.txt | |||
| @@ -373,10 +373,10 @@ Filesystem Resizing http://ext2resize.sourceforge.net/ | |||
| 373 | Compression (*) http://e2compr.sourceforge.net/ | 373 | Compression (*) http://e2compr.sourceforge.net/ |
| 374 | 374 | ||
| 375 | Implementations for: | 375 | Implementations for: |
| 376 | Windows 95/98/NT/2000 http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.htm | 376 | Windows 95/98/NT/2000 http://www.chrysocome.net/explore2fs |
| 377 | Windows 95 (*) http://www.yipton.demon.co.uk/content.html#FSDEXT2 | 377 | Windows 95 (*) http://www.yipton.net/content.html#FSDEXT2 |
| 378 | DOS client (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ | 378 | DOS client (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ |
| 379 | OS/2 http://perso.wanadoo.fr/matthieu.willm/ext2-os2/ | 379 | OS/2 (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ |
| 380 | RISC OS client ftp://ftp.barnet.ac.uk/pub/acorn/armlinux/iscafs/ | 380 | RISC OS client http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/ |
| 381 | 381 | ||
| 382 | (*) no longer actively developed/supported (as of Apr 2001) | 382 | (*) no longer actively developed/supported (as of Mar 2009) |
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt index 9dd2a3bb2acc..e5f3833a6ef8 100644 --- a/Documentation/filesystems/ext3.txt +++ b/Documentation/filesystems/ext3.txt | |||
| @@ -198,5 +198,5 @@ kernel source: <file:fs/ext3/> | |||
| 198 | programs: http://e2fsprogs.sourceforge.net/ | 198 | programs: http://e2fsprogs.sourceforge.net/ |
| 199 | http://ext2resize.sourceforge.net | 199 | http://ext2resize.sourceforge.net |
| 200 | 200 | ||
| 201 | useful links: http://www-106.ibm.com/developerworks/linux/library/l-fs7/ | 201 | useful links: http://www.ibm.com/developerworks/library/l-fs7.html |
| 202 | http://www-106.ibm.com/developerworks/linux/library/l-fs8/ | 202 | http://www.ibm.com/developerworks/library/l-fs8.html |
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index 0e8411710238..93d8e3d55150 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
| @@ -42,6 +42,11 @@ Supported chips: | |||
| 42 | Addresses scanned: I2C 0x4e | 42 | Addresses scanned: I2C 0x4e |
| 43 | Datasheet: Publicly available at the Maxim website | 43 | Datasheet: Publicly available at the Maxim website |
| 44 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497 | 44 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497 |
| 45 | * Maxim MAX6648 | ||
| 46 | Prefix: 'max6646' | ||
| 47 | Addresses scanned: I2C 0x4c | ||
| 48 | Datasheet: Publicly available at the Maxim website | ||
| 49 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500 | ||
| 45 | * Maxim MAX6649 | 50 | * Maxim MAX6649 |
| 46 | Prefix: 'max6646' | 51 | Prefix: 'max6646' |
| 47 | Addresses scanned: I2C 0x4c | 52 | Addresses scanned: I2C 0x4c |
| @@ -74,6 +79,11 @@ Supported chips: | |||
| 74 | 0x4c, 0x4d and 0x4e | 79 | 0x4c, 0x4d and 0x4e |
| 75 | Datasheet: Publicly available at the Maxim website | 80 | Datasheet: Publicly available at the Maxim website |
| 76 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370 | 81 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370 |
| 82 | * Maxim MAX6692 | ||
| 83 | Prefix: 'max6646' | ||
| 84 | Addresses scanned: I2C 0x4c | ||
| 85 | Datasheet: Publicly available at the Maxim website | ||
| 86 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500 | ||
| 77 | 87 | ||
| 78 | 88 | ||
| 79 | Author: Jean Delvare <khali@linux-fr.org> | 89 | Author: Jean Delvare <khali@linux-fr.org> |
diff --git a/MAINTAINERS b/MAINTAINERS index 1c2ca1dc66f2..61aeb5aae244 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -1469,8 +1469,6 @@ L: linux-acpi@vger.kernel.org | |||
| 1469 | S: Supported | 1469 | S: Supported |
| 1470 | 1470 | ||
| 1471 | DOCUMENTATION (/Documentation directory) | 1471 | DOCUMENTATION (/Documentation directory) |
| 1472 | P: Michael Kerrisk | ||
| 1473 | M: mtk.manpages@gmail.com | ||
| 1474 | P: Randy Dunlap | 1472 | P: Randy Dunlap |
| 1475 | M: rdunlap@xenotime.net | 1473 | M: rdunlap@xenotime.net |
| 1476 | L: linux-doc@vger.kernel.org | 1474 | L: linux-doc@vger.kernel.org |
| @@ -2879,7 +2877,7 @@ P: Michael Kerrisk | |||
| 2879 | M: mtk.manpages@gmail.com | 2877 | M: mtk.manpages@gmail.com |
| 2880 | W: http://www.kernel.org/doc/man-pages | 2878 | W: http://www.kernel.org/doc/man-pages |
| 2881 | L: linux-man@vger.kernel.org | 2879 | L: linux-man@vger.kernel.org |
| 2882 | S: Supported | 2880 | S: Maintained |
| 2883 | 2881 | ||
| 2884 | MARVELL LIBERTAS WIRELESS DRIVER | 2882 | MARVELL LIBERTAS WIRELESS DRIVER |
| 2885 | P: Dan Williams | 2883 | P: Dan Williams |
| @@ -1,7 +1,7 @@ | |||
| 1 | VERSION = 2 | 1 | VERSION = 2 |
| 2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
| 3 | SUBLEVEL = 29 | 3 | SUBLEVEL = 29 |
| 4 | EXTRAVERSION = -rc7 | 4 | EXTRAVERSION = -rc8 |
| 5 | NAME = Erotic Pickled Herring | 5 | NAME = Erotic Pickled Herring |
| 6 | 6 | ||
| 7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
| @@ -905,12 +905,18 @@ localver = $(subst $(space),, $(string) \ | |||
| 905 | # and if the SCM is know a tag from the SCM is appended. | 905 | # and if the SCM is know a tag from the SCM is appended. |
| 906 | # The appended tag is determined by the SCM used. | 906 | # The appended tag is determined by the SCM used. |
| 907 | # | 907 | # |
| 908 | # Currently, only git is supported. | 908 | # .scmversion is used when generating rpm packages so we do not loose |
| 909 | # Other SCMs can edit scripts/setlocalversion and add the appropriate | 909 | # the version information from the SCM when we do the build of the kernel |
| 910 | # checks as needed. | 910 | # from the copied source |
| 911 | ifdef CONFIG_LOCALVERSION_AUTO | 911 | ifdef CONFIG_LOCALVERSION_AUTO |
| 912 | _localver-auto = $(shell $(CONFIG_SHELL) \ | 912 | |
| 913 | $(srctree)/scripts/setlocalversion $(srctree)) | 913 | ifeq ($(wildcard .scmversion),) |
| 914 | _localver-auto = $(shell $(CONFIG_SHELL) \ | ||
| 915 | $(srctree)/scripts/setlocalversion $(srctree)) | ||
| 916 | else | ||
| 917 | _localver-auto = $(shell cat .scmversion 2> /dev/null) | ||
| 918 | endif | ||
| 919 | |||
| 914 | localver-auto = $(LOCALVERSION)$(_localver-auto) | 920 | localver-auto = $(LOCALVERSION)$(_localver-auto) |
| 915 | endif | 921 | endif |
| 916 | 922 | ||
| @@ -1538,7 +1544,7 @@ quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) | |||
| 1538 | cmd_depmod = \ | 1544 | cmd_depmod = \ |
| 1539 | if [ -r System.map -a -x $(DEPMOD) ]; then \ | 1545 | if [ -r System.map -a -x $(DEPMOD) ]; then \ |
| 1540 | $(DEPMOD) -ae -F System.map \ | 1546 | $(DEPMOD) -ae -F System.map \ |
| 1541 | $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) -r) \ | 1547 | $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) ) \ |
| 1542 | $(KERNELRELEASE); \ | 1548 | $(KERNELRELEASE); \ |
| 1543 | fi | 1549 | fi |
| 1544 | 1550 | ||
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 = { |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index b84bf066879b..b4eea0292c1a 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
| @@ -543,8 +543,8 @@ config SENSORS_LM90 | |||
| 543 | help | 543 | help |
| 544 | If you say yes here you get support for National Semiconductor LM90, | 544 | If you say yes here you get support for National Semiconductor LM90, |
| 545 | LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim | 545 | LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim |
| 546 | MAX6646, MAX6647, MAX6649, MAX6657, MAX6658, MAX6659, MAX6680 and | 546 | MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, |
| 547 | MAX6681 sensor chips. | 547 | MAX6680, MAX6681 and MAX6692 sensor chips. |
| 548 | 548 | ||
| 549 | This driver can also be built as a module. If so, the module | 549 | This driver can also be built as a module. If so, the module |
| 550 | will be called lm90. | 550 | will be called lm90. |
diff --git a/drivers/hwmon/abituguru3.c b/drivers/hwmon/abituguru3.c index e52b38806d03..ad2b3431b725 100644 --- a/drivers/hwmon/abituguru3.c +++ b/drivers/hwmon/abituguru3.c | |||
| @@ -760,8 +760,11 @@ static int abituguru3_read_increment_offset(struct abituguru3_data *data, | |||
| 760 | 760 | ||
| 761 | for (i = 0; i < offset_count; i++) | 761 | for (i = 0; i < offset_count; i++) |
| 762 | if ((x = abituguru3_read(data, bank, offset + i, count, | 762 | if ((x = abituguru3_read(data, bank, offset + i, count, |
| 763 | buf + i * count)) != count) | 763 | buf + i * count)) != count) { |
| 764 | return i * count + (i && (x < 0)) ? 0 : x; | 764 | if (x < 0) |
| 765 | return x; | ||
| 766 | return i * count + x; | ||
| 767 | } | ||
| 765 | 768 | ||
| 766 | return i * count; | 769 | return i * count; |
| 767 | } | 770 | } |
diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c index 1692de369969..18a1ba888165 100644 --- a/drivers/hwmon/f75375s.c +++ b/drivers/hwmon/f75375s.c | |||
| @@ -617,7 +617,7 @@ static void f75375_init(struct i2c_client *client, struct f75375_data *data, | |||
| 617 | static int f75375_probe(struct i2c_client *client, | 617 | static int f75375_probe(struct i2c_client *client, |
| 618 | const struct i2c_device_id *id) | 618 | const struct i2c_device_id *id) |
| 619 | { | 619 | { |
| 620 | struct f75375_data *data = i2c_get_clientdata(client); | 620 | struct f75375_data *data; |
| 621 | struct f75375s_platform_data *f75375s_pdata = client->dev.platform_data; | 621 | struct f75375s_platform_data *f75375s_pdata = client->dev.platform_data; |
| 622 | int err; | 622 | int err; |
| 623 | 623 | ||
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index 95a99c590da2..9157247fed8e 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c | |||
| @@ -213,7 +213,7 @@ static inline u16 FAN16_TO_REG(long rpm) | |||
| 213 | 213 | ||
| 214 | #define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\ | 214 | #define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\ |
| 215 | ((val)+500)/1000),-128,127)) | 215 | ((val)+500)/1000),-128,127)) |
| 216 | #define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*1000) | 216 | #define TEMP_FROM_REG(val) ((val) * 1000) |
| 217 | 217 | ||
| 218 | #define PWM_TO_REG(val) ((val) >> 1) | 218 | #define PWM_TO_REG(val) ((val) >> 1) |
| 219 | #define PWM_FROM_REG(val) (((val)&0x7f) << 1) | 219 | #define PWM_FROM_REG(val) (((val)&0x7f) << 1) |
| @@ -267,9 +267,9 @@ struct it87_data { | |||
| 267 | u8 has_fan; /* Bitfield, fans enabled */ | 267 | u8 has_fan; /* Bitfield, fans enabled */ |
| 268 | u16 fan[5]; /* Register values, possibly combined */ | 268 | u16 fan[5]; /* Register values, possibly combined */ |
| 269 | u16 fan_min[5]; /* Register values, possibly combined */ | 269 | u16 fan_min[5]; /* Register values, possibly combined */ |
| 270 | u8 temp[3]; /* Register value */ | 270 | s8 temp[3]; /* Register value */ |
| 271 | u8 temp_high[3]; /* Register value */ | 271 | s8 temp_high[3]; /* Register value */ |
| 272 | u8 temp_low[3]; /* Register value */ | 272 | s8 temp_low[3]; /* Register value */ |
| 273 | u8 sensor; /* Register value */ | 273 | u8 sensor; /* Register value */ |
| 274 | u8 fan_div[3]; /* Register encoding, shifted right */ | 274 | u8 fan_div[3]; /* Register encoding, shifted right */ |
| 275 | u8 vid; /* Register encoding, combined */ | 275 | u8 vid; /* Register encoding, combined */ |
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c index 96a701866726..1aff7575799d 100644 --- a/drivers/hwmon/lm90.c +++ b/drivers/hwmon/lm90.c | |||
| @@ -32,10 +32,10 @@ | |||
| 32 | * supported by this driver. These chips lack the remote temperature | 32 | * supported by this driver. These chips lack the remote temperature |
| 33 | * offset feature. | 33 | * offset feature. |
| 34 | * | 34 | * |
| 35 | * This driver also supports the MAX6646, MAX6647 and MAX6649 chips | 35 | * This driver also supports the MAX6646, MAX6647, MAX6648, MAX6649 and |
| 36 | * made by Maxim. These are again similar to the LM86, but they use | 36 | * MAX6692 chips made by Maxim. These are again similar to the LM86, |
| 37 | * unsigned temperature values and can report temperatures from 0 to | 37 | * but they use unsigned temperature values and can report temperatures |
| 38 | * 145 degrees. | 38 | * from 0 to 145 degrees. |
| 39 | * | 39 | * |
| 40 | * This driver also supports the MAX6680 and MAX6681, two other sensor | 40 | * This driver also supports the MAX6680 and MAX6681, two other sensor |
| 41 | * chips made by Maxim. These are quite similar to the other Maxim | 41 | * chips made by Maxim. These are quite similar to the other Maxim |
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c index a01b4488208b..4a65b96db2c8 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c | |||
| @@ -2490,12 +2490,14 @@ static int nes_disconnect(struct nes_qp *nesqp, int abrupt) | |||
| 2490 | int ret = 0; | 2490 | int ret = 0; |
| 2491 | struct nes_vnic *nesvnic; | 2491 | struct nes_vnic *nesvnic; |
| 2492 | struct nes_device *nesdev; | 2492 | struct nes_device *nesdev; |
| 2493 | struct nes_ib_device *nesibdev; | ||
| 2493 | 2494 | ||
| 2494 | nesvnic = to_nesvnic(nesqp->ibqp.device); | 2495 | nesvnic = to_nesvnic(nesqp->ibqp.device); |
| 2495 | if (!nesvnic) | 2496 | if (!nesvnic) |
| 2496 | return -EINVAL; | 2497 | return -EINVAL; |
| 2497 | 2498 | ||
| 2498 | nesdev = nesvnic->nesdev; | 2499 | nesdev = nesvnic->nesdev; |
| 2500 | nesibdev = nesvnic->nesibdev; | ||
| 2499 | 2501 | ||
| 2500 | nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n", | 2502 | nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n", |
| 2501 | atomic_read(&nesvnic->netdev->refcnt)); | 2503 | atomic_read(&nesvnic->netdev->refcnt)); |
| @@ -2507,6 +2509,8 @@ static int nes_disconnect(struct nes_qp *nesqp, int abrupt) | |||
| 2507 | } else { | 2509 | } else { |
| 2508 | /* Need to free the Last Streaming Mode Message */ | 2510 | /* Need to free the Last Streaming Mode Message */ |
| 2509 | if (nesqp->ietf_frame) { | 2511 | if (nesqp->ietf_frame) { |
| 2512 | if (nesqp->lsmm_mr) | ||
| 2513 | nesibdev->ibdev.dereg_mr(nesqp->lsmm_mr); | ||
| 2510 | pci_free_consistent(nesdev->pcidev, | 2514 | pci_free_consistent(nesdev->pcidev, |
| 2511 | nesqp->private_data_len+sizeof(struct ietf_mpa_frame), | 2515 | nesqp->private_data_len+sizeof(struct ietf_mpa_frame), |
| 2512 | nesqp->ietf_frame, nesqp->ietf_frame_pbase); | 2516 | nesqp->ietf_frame, nesqp->ietf_frame_pbase); |
| @@ -2543,6 +2547,12 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2543 | u32 crc_value; | 2547 | u32 crc_value; |
| 2544 | int ret; | 2548 | int ret; |
| 2545 | int passive_state; | 2549 | int passive_state; |
| 2550 | struct nes_ib_device *nesibdev; | ||
| 2551 | struct ib_mr *ibmr = NULL; | ||
| 2552 | struct ib_phys_buf ibphysbuf; | ||
| 2553 | struct nes_pd *nespd; | ||
| 2554 | |||
| 2555 | |||
| 2546 | 2556 | ||
| 2547 | ibqp = nes_get_qp(cm_id->device, conn_param->qpn); | 2557 | ibqp = nes_get_qp(cm_id->device, conn_param->qpn); |
| 2548 | if (!ibqp) | 2558 | if (!ibqp) |
| @@ -2601,6 +2611,26 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2601 | if (cm_id->remote_addr.sin_addr.s_addr != | 2611 | if (cm_id->remote_addr.sin_addr.s_addr != |
| 2602 | cm_id->local_addr.sin_addr.s_addr) { | 2612 | cm_id->local_addr.sin_addr.s_addr) { |
| 2603 | u64temp = (unsigned long)nesqp; | 2613 | u64temp = (unsigned long)nesqp; |
| 2614 | nesibdev = nesvnic->nesibdev; | ||
| 2615 | nespd = nesqp->nespd; | ||
| 2616 | ibphysbuf.addr = nesqp->ietf_frame_pbase; | ||
| 2617 | ibphysbuf.size = conn_param->private_data_len + | ||
| 2618 | sizeof(struct ietf_mpa_frame); | ||
| 2619 | ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd, | ||
| 2620 | &ibphysbuf, 1, | ||
| 2621 | IB_ACCESS_LOCAL_WRITE, | ||
| 2622 | (u64 *)&nesqp->ietf_frame); | ||
| 2623 | if (!ibmr) { | ||
| 2624 | nes_debug(NES_DBG_CM, "Unable to register memory region" | ||
| 2625 | "for lSMM for cm_node = %p \n", | ||
| 2626 | cm_node); | ||
| 2627 | return -ENOMEM; | ||
| 2628 | } | ||
| 2629 | |||
| 2630 | ibmr->pd = &nespd->ibpd; | ||
| 2631 | ibmr->device = nespd->ibpd.device; | ||
| 2632 | nesqp->lsmm_mr = ibmr; | ||
| 2633 | |||
| 2604 | u64temp |= NES_SW_CONTEXT_ALIGN>>1; | 2634 | u64temp |= NES_SW_CONTEXT_ALIGN>>1; |
| 2605 | set_wqe_64bit_value(wqe->wqe_words, | 2635 | set_wqe_64bit_value(wqe->wqe_words, |
| 2606 | NES_IWARP_SQ_WQE_COMP_CTX_LOW_IDX, | 2636 | NES_IWARP_SQ_WQE_COMP_CTX_LOW_IDX, |
| @@ -2611,14 +2641,13 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2611 | wqe->wqe_words[NES_IWARP_SQ_WQE_TOTAL_PAYLOAD_IDX] = | 2641 | wqe->wqe_words[NES_IWARP_SQ_WQE_TOTAL_PAYLOAD_IDX] = |
| 2612 | cpu_to_le32(conn_param->private_data_len + | 2642 | cpu_to_le32(conn_param->private_data_len + |
| 2613 | sizeof(struct ietf_mpa_frame)); | 2643 | sizeof(struct ietf_mpa_frame)); |
| 2614 | wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_LOW_IDX] = | 2644 | set_wqe_64bit_value(wqe->wqe_words, |
| 2615 | cpu_to_le32((u32)nesqp->ietf_frame_pbase); | 2645 | NES_IWARP_SQ_WQE_FRAG0_LOW_IDX, |
| 2616 | wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_HIGH_IDX] = | 2646 | (u64)nesqp->ietf_frame); |
| 2617 | cpu_to_le32((u32)((u64)nesqp->ietf_frame_pbase >> 32)); | ||
| 2618 | wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] = | 2647 | wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] = |
| 2619 | cpu_to_le32(conn_param->private_data_len + | 2648 | cpu_to_le32(conn_param->private_data_len + |
| 2620 | sizeof(struct ietf_mpa_frame)); | 2649 | sizeof(struct ietf_mpa_frame)); |
| 2621 | wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = 0; | 2650 | wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = ibmr->lkey; |
| 2622 | 2651 | ||
| 2623 | nesqp->nesqp_context->ird_ord_sizes |= | 2652 | nesqp->nesqp_context->ird_ord_sizes |= |
| 2624 | cpu_to_le32(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT | | 2653 | cpu_to_le32(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT | |
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c index 4fdb72454f94..d93a6562817c 100644 --- a/drivers/infiniband/hw/nes/nes_verbs.c +++ b/drivers/infiniband/hw/nes/nes_verbs.c | |||
| @@ -1360,8 +1360,10 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd, | |||
| 1360 | NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT); | 1360 | NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT); |
| 1361 | nesqp->nesqp_context->misc |= cpu_to_le32((u32)nesqp->hwqp.sq_encoded_size << | 1361 | nesqp->nesqp_context->misc |= cpu_to_le32((u32)nesqp->hwqp.sq_encoded_size << |
| 1362 | NES_QPCONTEXT_MISC_SQ_SIZE_SHIFT); | 1362 | NES_QPCONTEXT_MISC_SQ_SIZE_SHIFT); |
| 1363 | if (!udata) { | ||
| 1363 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_PRIV_EN); | 1364 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_PRIV_EN); |
| 1364 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_FAST_REGISTER_EN); | 1365 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_FAST_REGISTER_EN); |
| 1366 | } | ||
| 1365 | nesqp->nesqp_context->cqs = cpu_to_le32(nesqp->nesscq->hw_cq.cq_number + | 1367 | nesqp->nesqp_context->cqs = cpu_to_le32(nesqp->nesscq->hw_cq.cq_number + |
| 1366 | ((u32)nesqp->nesrcq->hw_cq.cq_number << 16)); | 1368 | ((u32)nesqp->nesrcq->hw_cq.cq_number << 16)); |
| 1367 | u64temp = (u64)nesqp->hwqp.sq_pbase; | 1369 | u64temp = (u64)nesqp->hwqp.sq_pbase; |
diff --git a/drivers/infiniband/hw/nes/nes_verbs.h b/drivers/infiniband/hw/nes/nes_verbs.h index 6c6b4da5184f..ae0ca9bc83bd 100644 --- a/drivers/infiniband/hw/nes/nes_verbs.h +++ b/drivers/infiniband/hw/nes/nes_verbs.h | |||
| @@ -134,6 +134,7 @@ struct nes_qp { | |||
| 134 | struct ietf_mpa_frame *ietf_frame; | 134 | struct ietf_mpa_frame *ietf_frame; |
| 135 | dma_addr_t ietf_frame_pbase; | 135 | dma_addr_t ietf_frame_pbase; |
| 136 | wait_queue_head_t state_waitq; | 136 | wait_queue_head_t state_waitq; |
| 137 | struct ib_mr *lsmm_mr; | ||
| 137 | unsigned long socket; | 138 | unsigned long socket; |
| 138 | struct nes_hw_qp hwqp; | 139 | struct nes_hw_qp hwqp; |
| 139 | struct work_struct work; | 140 | struct work_struct work; |
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index 84d5ea1ec171..b457a05b28d9 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
| @@ -1383,6 +1383,11 @@ int wm8350_device_init(struct wm8350 *wm8350, int irq, | |||
| 1383 | wm8350->power.rev_g_coeff = 1; | 1383 | wm8350->power.rev_g_coeff = 1; |
| 1384 | break; | 1384 | break; |
| 1385 | 1385 | ||
| 1386 | case 1: | ||
| 1387 | dev_info(wm8350->dev, "WM8351 Rev B\n"); | ||
| 1388 | wm8350->power.rev_g_coeff = 1; | ||
| 1389 | break; | ||
| 1390 | |||
| 1386 | default: | 1391 | default: |
| 1387 | dev_err(wm8350->dev, "Unknown WM8351 CHIP_REV\n"); | 1392 | dev_err(wm8350->dev, "Unknown WM8351 CHIP_REV\n"); |
| 1388 | ret = -ENODEV; | 1393 | ret = -ENODEV; |
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c index f4a67c65d301..2db166b7096f 100644 --- a/drivers/mmc/host/s3cmci.c +++ b/drivers/mmc/host/s3cmci.c | |||
| @@ -793,8 +793,7 @@ static void s3cmci_dma_setup(struct s3cmci_host *host, | |||
| 793 | host->mem->start + host->sdidata); | 793 | host->mem->start + host->sdidata); |
| 794 | 794 | ||
| 795 | if (!setup_ok) { | 795 | if (!setup_ok) { |
| 796 | s3c2410_dma_config(host->dma, 4, | 796 | s3c2410_dma_config(host->dma, 4, 0); |
| 797 | (S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI)); | ||
| 798 | s3c2410_dma_set_buffdone_fn(host->dma, | 797 | s3c2410_dma_set_buffdone_fn(host->dma, |
| 799 | s3cmci_dma_done_callback); | 798 | s3cmci_dma_done_callback); |
| 800 | s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART); | 799 | s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART); |
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c index d4fb4acdbebd..4e9bd380a5c2 100644 --- a/drivers/net/sunhme.c +++ b/drivers/net/sunhme.c | |||
| @@ -2649,8 +2649,6 @@ static int __devinit happy_meal_sbus_probe_one(struct of_device *op, int is_qfe) | |||
| 2649 | int err = -ENODEV; | 2649 | int err = -ENODEV; |
| 2650 | 2650 | ||
| 2651 | sbus_dp = to_of_device(op->dev.parent)->node; | 2651 | sbus_dp = to_of_device(op->dev.parent)->node; |
| 2652 | if (is_qfe) | ||
| 2653 | sbus_dp = to_of_device(op->dev.parent->parent)->node; | ||
| 2654 | 2652 | ||
| 2655 | /* We can match PCI devices too, do not accept those here. */ | 2653 | /* We can match PCI devices too, do not accept those here. */ |
| 2656 | if (strcmp(sbus_dp->name, "sbus")) | 2654 | if (strcmp(sbus_dp->name, "sbus")) |
diff --git a/drivers/pci/hotplug/Kconfig b/drivers/pci/hotplug/Kconfig index eacfb13998bb..9aa4fe100a0d 100644 --- a/drivers/pci/hotplug/Kconfig +++ b/drivers/pci/hotplug/Kconfig | |||
| @@ -143,7 +143,7 @@ config HOTPLUG_PCI_SHPC | |||
| 143 | 143 | ||
| 144 | config HOTPLUG_PCI_RPA | 144 | config HOTPLUG_PCI_RPA |
| 145 | tristate "RPA PCI Hotplug driver" | 145 | tristate "RPA PCI Hotplug driver" |
| 146 | depends on PPC_PSERIES && PPC64 && !HOTPLUG_PCI_FAKE | 146 | depends on PPC_PSERIES && EEH && !HOTPLUG_PCI_FAKE |
| 147 | help | 147 | help |
| 148 | Say Y here if you have a RPA system that supports PCI Hotplug. | 148 | Say Y here if you have a RPA system that supports PCI Hotplug. |
| 149 | 149 | ||
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index d0c973685868..382575007382 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c | |||
| @@ -133,6 +133,9 @@ static void set_downstream_devices_error_reporting(struct pci_dev *dev, | |||
| 133 | bool enable) | 133 | bool enable) |
| 134 | { | 134 | { |
| 135 | set_device_error_reporting(dev, &enable); | 135 | set_device_error_reporting(dev, &enable); |
| 136 | |||
| 137 | if (!dev->subordinate) | ||
| 138 | return; | ||
| 136 | pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable); | 139 | pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable); |
| 137 | } | 140 | } |
| 138 | 141 | ||
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c index 248b4db91552..5ea566e20b37 100644 --- a/drivers/pci/pcie/portdrv_pci.c +++ b/drivers/pci/pcie/portdrv_pci.c | |||
| @@ -103,6 +103,7 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev, | |||
| 103 | static void pcie_portdrv_remove (struct pci_dev *dev) | 103 | static void pcie_portdrv_remove (struct pci_dev *dev) |
| 104 | { | 104 | { |
| 105 | pcie_port_device_remove(dev); | 105 | pcie_port_device_remove(dev); |
| 106 | pci_disable_device(dev); | ||
| 106 | kfree(pci_get_drvdata(dev)); | 107 | kfree(pci_get_drvdata(dev)); |
| 107 | } | 108 | } |
| 108 | 109 | ||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index f20d55368edb..92b9efe9bcaf 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/acpi.h> | 23 | #include <linux/acpi.h> |
| 24 | #include <linux/kallsyms.h> | 24 | #include <linux/kallsyms.h> |
| 25 | #include <linux/dmi.h> | 25 | #include <linux/dmi.h> |
| 26 | #include <linux/pci-aspm.h> | ||
| 26 | #include "pci.h" | 27 | #include "pci.h" |
| 27 | 28 | ||
| 28 | int isa_dma_bridge_buggy; | 29 | int isa_dma_bridge_buggy; |
| @@ -1749,6 +1750,30 @@ static void __devinit quirk_e100_interrupt(struct pci_dev *dev) | |||
| 1749 | } | 1750 | } |
| 1750 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt); | 1751 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt); |
| 1751 | 1752 | ||
| 1753 | /* | ||
| 1754 | * The 82575 and 82598 may experience data corruption issues when transitioning | ||
| 1755 | * out of L0S. To prevent this we need to disable L0S on the pci-e link | ||
| 1756 | */ | ||
| 1757 | static void __devinit quirk_disable_aspm_l0s(struct pci_dev *dev) | ||
| 1758 | { | ||
| 1759 | dev_info(&dev->dev, "Disabling L0s\n"); | ||
| 1760 | pci_disable_link_state(dev, PCIE_LINK_STATE_L0S); | ||
| 1761 | } | ||
| 1762 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a7, quirk_disable_aspm_l0s); | ||
| 1763 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a9, quirk_disable_aspm_l0s); | ||
| 1764 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10b6, quirk_disable_aspm_l0s); | ||
| 1765 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c6, quirk_disable_aspm_l0s); | ||
| 1766 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c7, quirk_disable_aspm_l0s); | ||
| 1767 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c8, quirk_disable_aspm_l0s); | ||
| 1768 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10d6, quirk_disable_aspm_l0s); | ||
| 1769 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10db, quirk_disable_aspm_l0s); | ||
| 1770 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10dd, quirk_disable_aspm_l0s); | ||
| 1771 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10e1, quirk_disable_aspm_l0s); | ||
| 1772 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10ec, quirk_disable_aspm_l0s); | ||
| 1773 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f1, quirk_disable_aspm_l0s); | ||
| 1774 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f4, quirk_disable_aspm_l0s); | ||
| 1775 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1508, quirk_disable_aspm_l0s); | ||
| 1776 | |||
| 1752 | static void __devinit fixup_rev1_53c810(struct pci_dev* dev) | 1777 | static void __devinit fixup_rev1_53c810(struct pci_dev* dev) |
| 1753 | { | 1778 | { |
| 1754 | /* rev 1 ncr53c810 chips don't set the class at all which means | 1779 | /* rev 1 ncr53c810 chips don't set the class at all which means |
| @@ -2097,7 +2122,7 @@ static void __devinit ht_disable_msi_mapping(struct pci_dev *dev) | |||
| 2097 | 2122 | ||
| 2098 | if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS, | 2123 | if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS, |
| 2099 | &flags) == 0) { | 2124 | &flags) == 0) { |
| 2100 | dev_info(&dev->dev, "Enabling HT MSI Mapping\n"); | 2125 | dev_info(&dev->dev, "Disabling HT MSI Mapping\n"); |
| 2101 | 2126 | ||
| 2102 | pci_write_config_byte(dev, pos + HT_MSI_FLAGS, | 2127 | pci_write_config_byte(dev, pos + HT_MSI_FLAGS, |
| 2103 | flags & ~HT_MSI_FLAGS_ENABLE); | 2128 | flags & ~HT_MSI_FLAGS_ENABLE); |
| @@ -2141,6 +2166,10 @@ static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev) | |||
| 2141 | int pos; | 2166 | int pos; |
| 2142 | int found; | 2167 | int found; |
| 2143 | 2168 | ||
| 2169 | /* Enabling HT MSI mapping on this device breaks MCP51 */ | ||
| 2170 | if (dev->device == 0x270) | ||
| 2171 | return; | ||
| 2172 | |||
| 2144 | /* check if there is HT MSI cap or enabled on this device */ | 2173 | /* check if there is HT MSI cap or enabled on this device */ |
| 2145 | found = ht_check_msi_mapping(dev); | 2174 | found = ht_check_msi_mapping(dev); |
| 2146 | 2175 | ||
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index 94c9f911824e..6bcca616a704 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c | |||
| @@ -1297,7 +1297,7 @@ static int __init acer_wmi_init(void) | |||
| 1297 | 1297 | ||
| 1298 | set_quirks(); | 1298 | set_quirks(); |
| 1299 | 1299 | ||
| 1300 | if (!acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) { | 1300 | if (acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) { |
| 1301 | interface->capability &= ~ACER_CAP_BRIGHTNESS; | 1301 | interface->capability &= ~ACER_CAP_BRIGHTNESS; |
| 1302 | printk(ACER_INFO "Brightness must be controlled by " | 1302 | printk(ACER_INFO "Brightness must be controlled by " |
| 1303 | "generic video driver\n"); | 1303 | "generic video driver\n"); |
diff --git a/drivers/power/ds2760_battery.c b/drivers/power/ds2760_battery.c index 1d768928e0bb..a52d4a11652d 100644 --- a/drivers/power/ds2760_battery.c +++ b/drivers/power/ds2760_battery.c | |||
| @@ -180,10 +180,13 @@ static int ds2760_battery_read_status(struct ds2760_device_info *di) | |||
| 180 | di->empty_uAh = battery_interpolate(scale, di->temp_C / 10); | 180 | di->empty_uAh = battery_interpolate(scale, di->temp_C / 10); |
| 181 | di->empty_uAh *= 1000; /* convert to µAh */ | 181 | di->empty_uAh *= 1000; /* convert to µAh */ |
| 182 | 182 | ||
| 183 | /* From Maxim Application Note 131: remaining capacity = | 183 | if (di->full_active_uAh == di->empty_uAh) |
| 184 | * ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */ | 184 | di->rem_capacity = 0; |
| 185 | di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) / | 185 | else |
| 186 | (di->full_active_uAh - di->empty_uAh); | 186 | /* From Maxim Application Note 131: remaining capacity = |
| 187 | * ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */ | ||
| 188 | di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) / | ||
| 189 | (di->full_active_uAh - di->empty_uAh); | ||
| 187 | 190 | ||
| 188 | if (di->rem_capacity < 0) | 191 | if (di->rem_capacity < 0) |
| 189 | di->rem_capacity = 0; | 192 | di->rem_capacity = 0; |
diff --git a/drivers/sbus/char/bbc_i2c.c b/drivers/sbus/char/bbc_i2c.c index f08e169ba1b5..7e30e5f6e032 100644 --- a/drivers/sbus/char/bbc_i2c.c +++ b/drivers/sbus/char/bbc_i2c.c | |||
| @@ -129,7 +129,7 @@ static int wait_for_pin(struct bbc_i2c_bus *bp, u8 *status) | |||
| 129 | bp->waiting = 1; | 129 | bp->waiting = 1; |
| 130 | add_wait_queue(&bp->wq, &wait); | 130 | add_wait_queue(&bp->wq, &wait); |
| 131 | while (limit-- > 0) { | 131 | while (limit-- > 0) { |
| 132 | unsigned long val; | 132 | long val; |
| 133 | 133 | ||
| 134 | val = wait_event_interruptible_timeout( | 134 | val = wait_event_interruptible_timeout( |
| 135 | bp->wq, | 135 | bp->wq, |
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c index a9a9893a5f95..e6d1fc8c54f1 100644 --- a/drivers/sbus/char/jsflash.c +++ b/drivers/sbus/char/jsflash.c | |||
| @@ -38,9 +38,6 @@ | |||
| 38 | #include <linux/string.h> | 38 | #include <linux/string.h> |
| 39 | #include <linux/genhd.h> | 39 | #include <linux/genhd.h> |
| 40 | #include <linux/blkdev.h> | 40 | #include <linux/blkdev.h> |
| 41 | |||
| 42 | #define MAJOR_NR JSFD_MAJOR | ||
| 43 | |||
| 44 | #include <asm/uaccess.h> | 41 | #include <asm/uaccess.h> |
| 45 | #include <asm/pgtable.h> | 42 | #include <asm/pgtable.h> |
| 46 | #include <asm/io.h> | 43 | #include <asm/io.h> |
diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c index 9e1138a75e8b..a411702413d6 100644 --- a/drivers/w1/masters/w1-gpio.c +++ b/drivers/w1/masters/w1-gpio.c | |||
| @@ -39,7 +39,7 @@ static u8 w1_gpio_read_bit(void *data) | |||
| 39 | { | 39 | { |
| 40 | struct w1_gpio_platform_data *pdata = data; | 40 | struct w1_gpio_platform_data *pdata = data; |
| 41 | 41 | ||
| 42 | return gpio_get_value(pdata->pin); | 42 | return gpio_get_value(pdata->pin) ? 1 : 0; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | static int __init w1_gpio_probe(struct platform_device *pdev) | 45 | static int __init w1_gpio_probe(struct platform_device *pdev) |
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index e5eaa62fd17f..e3fe9918faaf 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
| @@ -274,6 +274,7 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc) | |||
| 274 | int ret; | 274 | int ret; |
| 275 | 275 | ||
| 276 | BUG_ON(inode->i_state & I_SYNC); | 276 | BUG_ON(inode->i_state & I_SYNC); |
| 277 | WARN_ON(inode->i_state & I_NEW); | ||
| 277 | 278 | ||
| 278 | /* Set I_SYNC, reset I_DIRTY */ | 279 | /* Set I_SYNC, reset I_DIRTY */ |
| 279 | dirty = inode->i_state & I_DIRTY; | 280 | dirty = inode->i_state & I_DIRTY; |
| @@ -298,6 +299,7 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc) | |||
| 298 | } | 299 | } |
| 299 | 300 | ||
| 300 | spin_lock(&inode_lock); | 301 | spin_lock(&inode_lock); |
| 302 | WARN_ON(inode->i_state & I_NEW); | ||
| 301 | inode->i_state &= ~I_SYNC; | 303 | inode->i_state &= ~I_SYNC; |
| 302 | if (!(inode->i_state & I_FREEING)) { | 304 | if (!(inode->i_state & I_FREEING)) { |
| 303 | if (!(inode->i_state & I_DIRTY) && | 305 | if (!(inode->i_state & I_DIRTY) && |
| @@ -470,6 +472,11 @@ void generic_sync_sb_inodes(struct super_block *sb, | |||
| 470 | break; | 472 | break; |
| 471 | } | 473 | } |
| 472 | 474 | ||
| 475 | if (inode->i_state & I_NEW) { | ||
| 476 | requeue_io(inode); | ||
| 477 | continue; | ||
| 478 | } | ||
| 479 | |||
| 473 | if (wbc->nonblocking && bdi_write_congested(bdi)) { | 480 | if (wbc->nonblocking && bdi_write_congested(bdi)) { |
| 474 | wbc->encountered_congestion = 1; | 481 | wbc->encountered_congestion = 1; |
| 475 | if (!sb_is_blkdev_sb(sb)) | 482 | if (!sb_is_blkdev_sb(sb)) |
| @@ -531,7 +538,7 @@ void generic_sync_sb_inodes(struct super_block *sb, | |||
| 531 | list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { | 538 | list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { |
| 532 | struct address_space *mapping; | 539 | struct address_space *mapping; |
| 533 | 540 | ||
| 534 | if (inode->i_state & (I_FREEING|I_WILL_FREE)) | 541 | if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) |
| 535 | continue; | 542 | continue; |
| 536 | mapping = inode->i_mapping; | 543 | mapping = inode->i_mapping; |
| 537 | if (mapping->nrpages == 0) | 544 | if (mapping->nrpages == 0) |
diff --git a/fs/inode.c b/fs/inode.c index 913ab2d9a5d1..826fb0b9d1c3 100644 --- a/fs/inode.c +++ b/fs/inode.c | |||
| @@ -359,6 +359,7 @@ static int invalidate_list(struct list_head *head, struct list_head *dispose) | |||
| 359 | invalidate_inode_buffers(inode); | 359 | invalidate_inode_buffers(inode); |
| 360 | if (!atomic_read(&inode->i_count)) { | 360 | if (!atomic_read(&inode->i_count)) { |
| 361 | list_move(&inode->i_list, dispose); | 361 | list_move(&inode->i_list, dispose); |
| 362 | WARN_ON(inode->i_state & I_NEW); | ||
| 362 | inode->i_state |= I_FREEING; | 363 | inode->i_state |= I_FREEING; |
| 363 | count++; | 364 | count++; |
| 364 | continue; | 365 | continue; |
| @@ -460,6 +461,7 @@ static void prune_icache(int nr_to_scan) | |||
| 460 | continue; | 461 | continue; |
| 461 | } | 462 | } |
| 462 | list_move(&inode->i_list, &freeable); | 463 | list_move(&inode->i_list, &freeable); |
| 464 | WARN_ON(inode->i_state & I_NEW); | ||
| 463 | inode->i_state |= I_FREEING; | 465 | inode->i_state |= I_FREEING; |
| 464 | nr_pruned++; | 466 | nr_pruned++; |
| 465 | } | 467 | } |
| @@ -656,6 +658,7 @@ void unlock_new_inode(struct inode *inode) | |||
| 656 | * just created it (so there can be no old holders | 658 | * just created it (so there can be no old holders |
| 657 | * that haven't tested I_LOCK). | 659 | * that haven't tested I_LOCK). |
| 658 | */ | 660 | */ |
| 661 | WARN_ON((inode->i_state & (I_LOCK|I_NEW)) != (I_LOCK|I_NEW)); | ||
| 659 | inode->i_state &= ~(I_LOCK|I_NEW); | 662 | inode->i_state &= ~(I_LOCK|I_NEW); |
| 660 | wake_up_inode(inode); | 663 | wake_up_inode(inode); |
| 661 | } | 664 | } |
| @@ -1145,6 +1148,7 @@ void generic_delete_inode(struct inode *inode) | |||
| 1145 | 1148 | ||
| 1146 | list_del_init(&inode->i_list); | 1149 | list_del_init(&inode->i_list); |
| 1147 | list_del_init(&inode->i_sb_list); | 1150 | list_del_init(&inode->i_sb_list); |
| 1151 | WARN_ON(inode->i_state & I_NEW); | ||
| 1148 | inode->i_state |= I_FREEING; | 1152 | inode->i_state |= I_FREEING; |
| 1149 | inodes_stat.nr_inodes--; | 1153 | inodes_stat.nr_inodes--; |
| 1150 | spin_unlock(&inode_lock); | 1154 | spin_unlock(&inode_lock); |
| @@ -1186,16 +1190,19 @@ static void generic_forget_inode(struct inode *inode) | |||
| 1186 | spin_unlock(&inode_lock); | 1190 | spin_unlock(&inode_lock); |
| 1187 | return; | 1191 | return; |
| 1188 | } | 1192 | } |
| 1193 | WARN_ON(inode->i_state & I_NEW); | ||
| 1189 | inode->i_state |= I_WILL_FREE; | 1194 | inode->i_state |= I_WILL_FREE; |
| 1190 | spin_unlock(&inode_lock); | 1195 | spin_unlock(&inode_lock); |
| 1191 | write_inode_now(inode, 1); | 1196 | write_inode_now(inode, 1); |
| 1192 | spin_lock(&inode_lock); | 1197 | spin_lock(&inode_lock); |
| 1198 | WARN_ON(inode->i_state & I_NEW); | ||
| 1193 | inode->i_state &= ~I_WILL_FREE; | 1199 | inode->i_state &= ~I_WILL_FREE; |
| 1194 | inodes_stat.nr_unused--; | 1200 | inodes_stat.nr_unused--; |
| 1195 | hlist_del_init(&inode->i_hash); | 1201 | hlist_del_init(&inode->i_hash); |
| 1196 | } | 1202 | } |
| 1197 | list_del_init(&inode->i_list); | 1203 | list_del_init(&inode->i_list); |
| 1198 | list_del_init(&inode->i_sb_list); | 1204 | list_del_init(&inode->i_sb_list); |
| 1205 | WARN_ON(inode->i_state & I_NEW); | ||
| 1199 | inode->i_state |= I_FREEING; | 1206 | inode->i_state |= I_FREEING; |
| 1200 | inodes_stat.nr_inodes--; | 1207 | inodes_stat.nr_inodes--; |
| 1201 | spin_unlock(&inode_lock); | 1208 | spin_unlock(&inode_lock); |
| @@ -699,12 +699,12 @@ pipe_rdwr_fasync(int fd, struct file *filp, int on) | |||
| 699 | int retval; | 699 | int retval; |
| 700 | 700 | ||
| 701 | mutex_lock(&inode->i_mutex); | 701 | mutex_lock(&inode->i_mutex); |
| 702 | |||
| 703 | retval = fasync_helper(fd, filp, on, &pipe->fasync_readers); | 702 | retval = fasync_helper(fd, filp, on, &pipe->fasync_readers); |
| 704 | 703 | if (retval >= 0) { | |
| 705 | if (retval >= 0) | ||
| 706 | retval = fasync_helper(fd, filp, on, &pipe->fasync_writers); | 704 | retval = fasync_helper(fd, filp, on, &pipe->fasync_writers); |
| 707 | 705 | if (retval < 0) /* this can happen only if on == T */ | |
| 706 | fasync_helper(-1, filp, 0, &pipe->fasync_readers); | ||
| 707 | } | ||
| 708 | mutex_unlock(&inode->i_mutex); | 708 | mutex_unlock(&inode->i_mutex); |
| 709 | 709 | ||
| 710 | if (retval < 0) | 710 | if (retval < 0) |
diff --git a/fs/squashfs/block.c b/fs/squashfs/block.c index 321728f48f2d..2a7960310349 100644 --- a/fs/squashfs/block.c +++ b/fs/squashfs/block.c | |||
| @@ -184,15 +184,7 @@ int squashfs_read_data(struct super_block *sb, void **buffer, u64 index, | |||
| 184 | offset = 0; | 184 | offset = 0; |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | if (msblk->stream.avail_out == 0) { | 187 | if (msblk->stream.avail_out == 0 && page < pages) { |
| 188 | if (page == pages) { | ||
| 189 | ERROR("zlib_inflate tried to " | ||
| 190 | "decompress too much data, " | ||
| 191 | "expected %d bytes. Zlib " | ||
| 192 | "data probably corrupt\n", | ||
| 193 | srclength); | ||
| 194 | goto release_mutex; | ||
| 195 | } | ||
| 196 | msblk->stream.next_out = buffer[page++]; | 188 | msblk->stream.next_out = buffer[page++]; |
| 197 | msblk->stream.avail_out = PAGE_CACHE_SIZE; | 189 | msblk->stream.avail_out = PAGE_CACHE_SIZE; |
| 198 | } | 190 | } |
| @@ -209,25 +201,20 @@ int squashfs_read_data(struct super_block *sb, void **buffer, u64 index, | |||
| 209 | zlib_init = 1; | 201 | zlib_init = 1; |
| 210 | } | 202 | } |
| 211 | 203 | ||
| 212 | zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH); | 204 | zlib_err = zlib_inflate(&msblk->stream, Z_SYNC_FLUSH); |
| 213 | 205 | ||
| 214 | if (msblk->stream.avail_in == 0 && k < b) | 206 | if (msblk->stream.avail_in == 0 && k < b) |
| 215 | put_bh(bh[k++]); | 207 | put_bh(bh[k++]); |
| 216 | } while (zlib_err == Z_OK); | 208 | } while (zlib_err == Z_OK); |
| 217 | 209 | ||
| 218 | if (zlib_err != Z_STREAM_END) { | 210 | if (zlib_err != Z_STREAM_END) { |
| 219 | ERROR("zlib_inflate returned unexpected result" | 211 | ERROR("zlib_inflate error, data probably corrupt\n"); |
| 220 | " 0x%x, srclength %d, avail_in %d," | ||
| 221 | " avail_out %d\n", zlib_err, srclength, | ||
| 222 | msblk->stream.avail_in, | ||
| 223 | msblk->stream.avail_out); | ||
| 224 | goto release_mutex; | 212 | goto release_mutex; |
| 225 | } | 213 | } |
| 226 | 214 | ||
| 227 | zlib_err = zlib_inflateEnd(&msblk->stream); | 215 | zlib_err = zlib_inflateEnd(&msblk->stream); |
| 228 | if (zlib_err != Z_OK) { | 216 | if (zlib_err != Z_OK) { |
| 229 | ERROR("zlib_inflateEnd returned unexpected result 0x%x," | 217 | ERROR("zlib_inflate error, data probably corrupt\n"); |
| 230 | " srclength %d\n", zlib_err, srclength); | ||
| 231 | goto release_mutex; | 218 | goto release_mutex; |
| 232 | } | 219 | } |
| 233 | length = msblk->stream.total_out; | 220 | length = msblk->stream.total_out; |
diff --git a/fs/super.c b/fs/super.c index 8349ed6b1412..6ce501447ada 100644 --- a/fs/super.c +++ b/fs/super.c | |||
| @@ -371,8 +371,10 @@ retry: | |||
| 371 | continue; | 371 | continue; |
| 372 | if (!grab_super(old)) | 372 | if (!grab_super(old)) |
| 373 | goto retry; | 373 | goto retry; |
| 374 | if (s) | 374 | if (s) { |
| 375 | up_write(&s->s_umount); | ||
| 375 | destroy_super(s); | 376 | destroy_super(s); |
| 377 | } | ||
| 376 | return old; | 378 | return old; |
| 377 | } | 379 | } |
| 378 | } | 380 | } |
| @@ -387,6 +389,7 @@ retry: | |||
| 387 | err = set(s, data); | 389 | err = set(s, data); |
| 388 | if (err) { | 390 | if (err) { |
| 389 | spin_unlock(&sb_lock); | 391 | spin_unlock(&sb_lock); |
| 392 | up_write(&s->s_umount); | ||
| 390 | destroy_super(s); | 393 | destroy_super(s); |
| 391 | return ERR_PTR(err); | 394 | return ERR_PTR(err); |
| 392 | } | 395 | } |
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index cb329edc925b..aa1016bb9134 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c | |||
| @@ -34,6 +34,12 @@ | |||
| 34 | #include <linux/backing-dev.h> | 34 | #include <linux/backing-dev.h> |
| 35 | #include <linux/freezer.h> | 35 | #include <linux/freezer.h> |
| 36 | 36 | ||
| 37 | #include "xfs_sb.h" | ||
| 38 | #include "xfs_inum.h" | ||
| 39 | #include "xfs_ag.h" | ||
| 40 | #include "xfs_dmapi.h" | ||
| 41 | #include "xfs_mount.h" | ||
| 42 | |||
| 37 | static kmem_zone_t *xfs_buf_zone; | 43 | static kmem_zone_t *xfs_buf_zone; |
| 38 | STATIC int xfsbufd(void *); | 44 | STATIC int xfsbufd(void *); |
| 39 | STATIC int xfsbufd_wakeup(int, gfp_t); | 45 | STATIC int xfsbufd_wakeup(int, gfp_t); |
| @@ -1435,10 +1441,12 @@ xfs_unregister_buftarg( | |||
| 1435 | 1441 | ||
| 1436 | void | 1442 | void |
| 1437 | xfs_free_buftarg( | 1443 | xfs_free_buftarg( |
| 1438 | xfs_buftarg_t *btp) | 1444 | struct xfs_mount *mp, |
| 1445 | struct xfs_buftarg *btp) | ||
| 1439 | { | 1446 | { |
| 1440 | xfs_flush_buftarg(btp, 1); | 1447 | xfs_flush_buftarg(btp, 1); |
| 1441 | xfs_blkdev_issue_flush(btp); | 1448 | if (mp->m_flags & XFS_MOUNT_BARRIER) |
| 1449 | xfs_blkdev_issue_flush(btp); | ||
| 1442 | xfs_free_bufhash(btp); | 1450 | xfs_free_bufhash(btp); |
| 1443 | iput(btp->bt_mapping->host); | 1451 | iput(btp->bt_mapping->host); |
| 1444 | 1452 | ||
diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index 288ae7c4c800..9b4d666ad31f 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h | |||
| @@ -413,7 +413,7 @@ static inline int XFS_bwrite(xfs_buf_t *bp) | |||
| 413 | * Handling of buftargs. | 413 | * Handling of buftargs. |
| 414 | */ | 414 | */ |
| 415 | extern xfs_buftarg_t *xfs_alloc_buftarg(struct block_device *, int); | 415 | extern xfs_buftarg_t *xfs_alloc_buftarg(struct block_device *, int); |
| 416 | extern void xfs_free_buftarg(xfs_buftarg_t *); | 416 | extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *); |
| 417 | extern void xfs_wait_buftarg(xfs_buftarg_t *); | 417 | extern void xfs_wait_buftarg(xfs_buftarg_t *); |
| 418 | extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int); | 418 | extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int); |
| 419 | extern int xfs_flush_buftarg(xfs_buftarg_t *, int); | 419 | extern int xfs_flush_buftarg(xfs_buftarg_t *, int); |
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index c71e226da7f5..32ae5028e96b 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
| @@ -734,15 +734,15 @@ xfs_close_devices( | |||
| 734 | { | 734 | { |
| 735 | if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) { | 735 | if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) { |
| 736 | struct block_device *logdev = mp->m_logdev_targp->bt_bdev; | 736 | struct block_device *logdev = mp->m_logdev_targp->bt_bdev; |
| 737 | xfs_free_buftarg(mp->m_logdev_targp); | 737 | xfs_free_buftarg(mp, mp->m_logdev_targp); |
| 738 | xfs_blkdev_put(logdev); | 738 | xfs_blkdev_put(logdev); |
| 739 | } | 739 | } |
| 740 | if (mp->m_rtdev_targp) { | 740 | if (mp->m_rtdev_targp) { |
| 741 | struct block_device *rtdev = mp->m_rtdev_targp->bt_bdev; | 741 | struct block_device *rtdev = mp->m_rtdev_targp->bt_bdev; |
| 742 | xfs_free_buftarg(mp->m_rtdev_targp); | 742 | xfs_free_buftarg(mp, mp->m_rtdev_targp); |
| 743 | xfs_blkdev_put(rtdev); | 743 | xfs_blkdev_put(rtdev); |
| 744 | } | 744 | } |
| 745 | xfs_free_buftarg(mp->m_ddev_targp); | 745 | xfs_free_buftarg(mp, mp->m_ddev_targp); |
| 746 | } | 746 | } |
| 747 | 747 | ||
| 748 | /* | 748 | /* |
| @@ -811,9 +811,9 @@ xfs_open_devices( | |||
| 811 | 811 | ||
| 812 | out_free_rtdev_targ: | 812 | out_free_rtdev_targ: |
| 813 | if (mp->m_rtdev_targp) | 813 | if (mp->m_rtdev_targp) |
| 814 | xfs_free_buftarg(mp->m_rtdev_targp); | 814 | xfs_free_buftarg(mp, mp->m_rtdev_targp); |
| 815 | out_free_ddev_targ: | 815 | out_free_ddev_targ: |
| 816 | xfs_free_buftarg(mp->m_ddev_targp); | 816 | xfs_free_buftarg(mp, mp->m_ddev_targp); |
| 817 | out_close_rtdev: | 817 | out_close_rtdev: |
| 818 | if (rtdev) | 818 | if (rtdev) |
| 819 | xfs_blkdev_put(rtdev); | 819 | xfs_blkdev_put(rtdev); |
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index e2fb6210d4c5..478e587087fe 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c | |||
| @@ -246,9 +246,6 @@ xfs_iget_cache_miss( | |||
| 246 | goto out_destroy; | 246 | goto out_destroy; |
| 247 | } | 247 | } |
| 248 | 248 | ||
| 249 | if (lock_flags) | ||
| 250 | xfs_ilock(ip, lock_flags); | ||
| 251 | |||
| 252 | /* | 249 | /* |
| 253 | * Preload the radix tree so we can insert safely under the | 250 | * Preload the radix tree so we can insert safely under the |
| 254 | * write spinlock. Note that we cannot sleep inside the preload | 251 | * write spinlock. Note that we cannot sleep inside the preload |
| @@ -256,7 +253,16 @@ xfs_iget_cache_miss( | |||
| 256 | */ | 253 | */ |
| 257 | if (radix_tree_preload(GFP_KERNEL)) { | 254 | if (radix_tree_preload(GFP_KERNEL)) { |
| 258 | error = EAGAIN; | 255 | error = EAGAIN; |
| 259 | goto out_unlock; | 256 | goto out_destroy; |
| 257 | } | ||
| 258 | |||
| 259 | /* | ||
| 260 | * Because the inode hasn't been added to the radix-tree yet it can't | ||
| 261 | * be found by another thread, so we can do the non-sleeping lock here. | ||
| 262 | */ | ||
| 263 | if (lock_flags) { | ||
| 264 | if (!xfs_ilock_nowait(ip, lock_flags)) | ||
| 265 | BUG(); | ||
| 260 | } | 266 | } |
| 261 | 267 | ||
| 262 | mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1); | 268 | mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1); |
| @@ -284,7 +290,6 @@ xfs_iget_cache_miss( | |||
| 284 | out_preload_end: | 290 | out_preload_end: |
| 285 | write_unlock(&pag->pag_ici_lock); | 291 | write_unlock(&pag->pag_ici_lock); |
| 286 | radix_tree_preload_end(); | 292 | radix_tree_preload_end(); |
| 287 | out_unlock: | ||
| 288 | if (lock_flags) | 293 | if (lock_flags) |
| 289 | xfs_iunlock(ip, lock_flags); | 294 | xfs_iunlock(ip, lock_flags); |
| 290 | out_destroy: | 295 | out_destroy: |
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index b1047de2fffd..61af610d79b3 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c | |||
| @@ -1455,10 +1455,19 @@ xlog_recover_add_to_trans( | |||
| 1455 | item = item->ri_prev; | 1455 | item = item->ri_prev; |
| 1456 | 1456 | ||
| 1457 | if (item->ri_total == 0) { /* first region to be added */ | 1457 | if (item->ri_total == 0) { /* first region to be added */ |
| 1458 | item->ri_total = in_f->ilf_size; | 1458 | if (in_f->ilf_size == 0 || |
| 1459 | ASSERT(item->ri_total <= XLOG_MAX_REGIONS_IN_ITEM); | 1459 | in_f->ilf_size > XLOG_MAX_REGIONS_IN_ITEM) { |
| 1460 | item->ri_buf = kmem_zalloc((item->ri_total * | 1460 | xlog_warn( |
| 1461 | sizeof(xfs_log_iovec_t)), KM_SLEEP); | 1461 | "XFS: bad number of regions (%d) in inode log format", |
| 1462 | in_f->ilf_size); | ||
| 1463 | ASSERT(0); | ||
| 1464 | return XFS_ERROR(EIO); | ||
| 1465 | } | ||
| 1466 | |||
| 1467 | item->ri_total = in_f->ilf_size; | ||
| 1468 | item->ri_buf = | ||
| 1469 | kmem_zalloc(item->ri_total * sizeof(xfs_log_iovec_t), | ||
| 1470 | KM_SLEEP); | ||
| 1462 | } | 1471 | } |
| 1463 | ASSERT(item->ri_total > item->ri_cnt); | 1472 | ASSERT(item->ri_total > item->ri_cnt); |
| 1464 | /* Description region is ri_buf[0] */ | 1473 | /* Description region is ri_buf[0] */ |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 065cdf8c09fb..b1ea37fc7a24 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -104,6 +104,7 @@ extern unsigned int kobjsize(const void *objp); | |||
| 104 | #define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */ | 104 | #define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */ |
| 105 | #define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */ | 105 | #define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */ |
| 106 | #define VM_SAO 0x20000000 /* Strong Access Ordering (powerpc) */ | 106 | #define VM_SAO 0x20000000 /* Strong Access Ordering (powerpc) */ |
| 107 | #define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */ | ||
| 107 | 108 | ||
| 108 | #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ | 109 | #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ |
| 109 | #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS | 110 | #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS |
| @@ -145,7 +146,7 @@ extern pgprot_t protection_map[16]; | |||
| 145 | */ | 146 | */ |
| 146 | static inline int is_linear_pfn_mapping(struct vm_area_struct *vma) | 147 | static inline int is_linear_pfn_mapping(struct vm_area_struct *vma) |
| 147 | { | 148 | { |
| 148 | return ((vma->vm_flags & VM_PFNMAP) && vma->vm_pgoff); | 149 | return (vma->vm_flags & VM_PFN_AT_MMAP); |
| 149 | } | 150 | } |
| 150 | 151 | ||
| 151 | static inline int is_pfn_mapping(struct vm_area_struct *vma) | 152 | static inline int is_pfn_mapping(struct vm_area_struct *vma) |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 92915e81443f..d84feb7bdbf0 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
| @@ -276,4 +276,7 @@ struct mm_struct { | |||
| 276 | #endif | 276 | #endif |
| 277 | }; | 277 | }; |
| 278 | 278 | ||
| 279 | /* Future-safe accessor for struct mm_struct's cpu_vm_mask. */ | ||
| 280 | #define mm_cpumask(mm) (&(mm)->cpu_vm_mask) | ||
| 281 | |||
| 279 | #endif /* _LINUX_MM_TYPES_H */ | 282 | #endif /* _LINUX_MM_TYPES_H */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index a7c7698583bb..46d680643f89 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1418,6 +1418,9 @@ struct task_struct { | |||
| 1418 | #endif | 1418 | #endif |
| 1419 | }; | 1419 | }; |
| 1420 | 1420 | ||
| 1421 | /* Future-safe accessor for struct task_struct's cpus_allowed. */ | ||
| 1422 | #define tsk_cpumask(tsk) (&(tsk)->cpus_allowed) | ||
| 1423 | |||
| 1421 | /* | 1424 | /* |
| 1422 | * Priority of a process goes from 0..MAX_PRIO-1, valid RT | 1425 | * Priority of a process goes from 0..MAX_PRIO-1, valid RT |
| 1423 | * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH | 1426 | * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH |
diff --git a/lib/bitmap.c b/lib/bitmap.c index 1338469ac849..35a1f7ff4149 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c | |||
| @@ -948,15 +948,15 @@ done: | |||
| 948 | */ | 948 | */ |
| 949 | int bitmap_find_free_region(unsigned long *bitmap, int bits, int order) | 949 | int bitmap_find_free_region(unsigned long *bitmap, int bits, int order) |
| 950 | { | 950 | { |
| 951 | int pos; /* scans bitmap by regions of size order */ | 951 | int pos, end; /* scans bitmap by regions of size order */ |
| 952 | 952 | ||
| 953 | for (pos = 0; pos < bits; pos += (1 << order)) | 953 | for (pos = 0 ; (end = pos + (1 << order)) <= bits; pos = end) { |
| 954 | if (__reg_op(bitmap, pos, order, REG_OP_ISFREE)) | 954 | if (!__reg_op(bitmap, pos, order, REG_OP_ISFREE)) |
| 955 | break; | 955 | continue; |
| 956 | if (pos == bits) | 956 | __reg_op(bitmap, pos, order, REG_OP_ALLOC); |
| 957 | return -ENOMEM; | 957 | return pos; |
| 958 | __reg_op(bitmap, pos, order, REG_OP_ALLOC); | 958 | } |
| 959 | return pos; | 959 | return -ENOMEM; |
| 960 | } | 960 | } |
| 961 | EXPORT_SYMBOL(bitmap_find_free_region); | 961 | EXPORT_SYMBOL(bitmap_find_free_region); |
| 962 | 962 | ||
diff --git a/mm/memory.c b/mm/memory.c index baa999e87cd2..2032ad2fc34b 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
| @@ -1665,9 +1665,10 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, | |||
| 1665 | * behaviour that some programs depend on. We mark the "original" | 1665 | * behaviour that some programs depend on. We mark the "original" |
| 1666 | * un-COW'ed pages by matching them up with "vma->vm_pgoff". | 1666 | * un-COW'ed pages by matching them up with "vma->vm_pgoff". |
| 1667 | */ | 1667 | */ |
| 1668 | if (addr == vma->vm_start && end == vma->vm_end) | 1668 | if (addr == vma->vm_start && end == vma->vm_end) { |
| 1669 | vma->vm_pgoff = pfn; | 1669 | vma->vm_pgoff = pfn; |
| 1670 | else if (is_cow_mapping(vma->vm_flags)) | 1670 | vma->vm_flags |= VM_PFN_AT_MMAP; |
| 1671 | } else if (is_cow_mapping(vma->vm_flags)) | ||
| 1671 | return -EINVAL; | 1672 | return -EINVAL; |
| 1672 | 1673 | ||
| 1673 | vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP; | 1674 | vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP; |
| @@ -1679,6 +1680,7 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, | |||
| 1679 | * needed from higher level routine calling unmap_vmas | 1680 | * needed from higher level routine calling unmap_vmas |
| 1680 | */ | 1681 | */ |
| 1681 | vma->vm_flags &= ~(VM_IO | VM_RESERVED | VM_PFNMAP); | 1682 | vma->vm_flags &= ~(VM_IO | VM_RESERVED | VM_PFNMAP); |
| 1683 | vma->vm_flags &= ~VM_PFN_AT_MMAP; | ||
| 1682 | return -EINVAL; | 1684 | return -EINVAL; |
| 1683 | } | 1685 | } |
| 1684 | 1686 | ||
diff --git a/mm/vmscan.c b/mm/vmscan.c index 6177e3bcd66b..e89517141657 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
| @@ -1469,7 +1469,7 @@ static void shrink_zone(int priority, struct zone *zone, | |||
| 1469 | int file = is_file_lru(l); | 1469 | int file = is_file_lru(l); |
| 1470 | int scan; | 1470 | int scan; |
| 1471 | 1471 | ||
| 1472 | scan = zone_page_state(zone, NR_LRU_BASE + l); | 1472 | scan = zone_nr_pages(zone, sc, l); |
| 1473 | if (priority) { | 1473 | if (priority) { |
| 1474 | scan >>= priority; | 1474 | scan >>= priority; |
| 1475 | scan = (scan * percent[file]) / 100; | 1475 | scan = (scan * percent[file]) / 100; |
diff --git a/scripts/package/Makefile b/scripts/package/Makefile index 8c6b7b09606a..fa4a0a17b7e0 100644 --- a/scripts/package/Makefile +++ b/scripts/package/Makefile | |||
| @@ -35,9 +35,10 @@ $(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile | |||
| 35 | rpm-pkg rpm: $(objtree)/kernel.spec FORCE | 35 | rpm-pkg rpm: $(objtree)/kernel.spec FORCE |
| 36 | $(MAKE) clean | 36 | $(MAKE) clean |
| 37 | $(PREV) ln -sf $(srctree) $(KERNELPATH) | 37 | $(PREV) ln -sf $(srctree) $(KERNELPATH) |
| 38 | $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion > $(objtree)/.scmversion | ||
| 38 | $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/. | 39 | $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/. |
| 39 | $(PREV) rm $(KERNELPATH) | 40 | $(PREV) rm $(KERNELPATH) |
| 40 | 41 | rm -f $(objtree)/.scmversion | |
| 41 | set -e; \ | 42 | set -e; \ |
| 42 | $(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version | 43 | $(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version |
| 43 | set -e; \ | 44 | set -e; \ |
diff --git a/scripts/package/mkspec b/scripts/package/mkspec index ee448cdc6a2b..3d93f8c81252 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec | |||
| @@ -96,7 +96,7 @@ echo "%endif" | |||
| 96 | 96 | ||
| 97 | echo "" | 97 | echo "" |
| 98 | echo "%clean" | 98 | echo "%clean" |
| 99 | echo '#echo -rf $RPM_BUILD_ROOT' | 99 | echo 'rm -rf $RPM_BUILD_ROOT' |
| 100 | echo "" | 100 | echo "" |
| 101 | echo "%files" | 101 | echo "%files" |
| 102 | echo '%defattr (-, root, root)' | 102 | echo '%defattr (-, root, root)' |
diff --git a/scripts/unifdef.c b/scripts/unifdef.c index 552025e72acb..05a31a6c7e1b 100644 --- a/scripts/unifdef.c +++ b/scripts/unifdef.c | |||
| @@ -206,7 +206,7 @@ static void done(void); | |||
| 206 | static void error(const char *); | 206 | static void error(const char *); |
| 207 | static int findsym(const char *); | 207 | static int findsym(const char *); |
| 208 | static void flushline(bool); | 208 | static void flushline(bool); |
| 209 | static Linetype getline(void); | 209 | static Linetype get_line(void); |
| 210 | static Linetype ifeval(const char **); | 210 | static Linetype ifeval(const char **); |
| 211 | static void ignoreoff(void); | 211 | static void ignoreoff(void); |
| 212 | static void ignoreon(void); | 212 | static void ignoreon(void); |
| @@ -512,7 +512,7 @@ process(void) | |||
| 512 | 512 | ||
| 513 | for (;;) { | 513 | for (;;) { |
| 514 | linenum++; | 514 | linenum++; |
| 515 | lineval = getline(); | 515 | lineval = get_line(); |
| 516 | trans_table[ifstate[depth]][lineval](); | 516 | trans_table[ifstate[depth]][lineval](); |
| 517 | debug("process %s -> %s depth %d", | 517 | debug("process %s -> %s depth %d", |
| 518 | linetype_name[lineval], | 518 | linetype_name[lineval], |
| @@ -526,7 +526,7 @@ process(void) | |||
| 526 | * help from skipcomment(). | 526 | * help from skipcomment(). |
| 527 | */ | 527 | */ |
| 528 | static Linetype | 528 | static Linetype |
| 529 | getline(void) | 529 | get_line(void) |
| 530 | { | 530 | { |
| 531 | const char *cp; | 531 | const char *cp; |
| 532 | int cursym; | 532 | int cursym; |
