aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-08-26 00:24:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-08-26 00:24:26 -0400
commit4dc627d55edad85e26ae81f17634bd4590993ba0 (patch)
tree678da065a5d77f41ab33819ea970baf994ca50e8 /arch/sparc
parent9c9376886622b45c32f64c4444f5628dde77dfe6 (diff)
parentd8ed1d43e17898761c7221014a15a4c7501d2ff3 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: sparc64: Validate linear D-TLB misses. sparc64: Update defconfig. sparc32: Update defconfig. sparc32: Kill trap table freeing code. sparc: sys32.S incorrect compat-layer splice() system call sparc: Use page_fault_out_of_memory() for VM_FAULT_OOM. sparc64: Sign extend length arg to truncate syscalls when compat. sparc: Fix cleanup crash in bbc_envctrl_cleanup()
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/configs/sparc32_defconfig74
-rw-r--r--arch/sparc/configs/sparc64_defconfig59
-rw-r--r--arch/sparc/include/asm/pgtable_64.h12
-rw-r--r--arch/sparc/kernel/ktlb.S42
-rw-r--r--arch/sparc/kernel/sun4d_smp.c22
-rw-r--r--arch/sparc/kernel/sun4m_smp.c26
-rw-r--r--arch/sparc/kernel/sys32.S4
-rw-r--r--arch/sparc/kernel/systbls_64.S4
-rw-r--r--arch/sparc/mm/fault_32.c7
-rw-r--r--arch/sparc/mm/fault_64.c7
-rw-r--r--arch/sparc/mm/init_64.c43
-rw-r--r--arch/sparc/mm/init_64.h7
12 files changed, 167 insertions, 140 deletions
diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/sparc32_defconfig
index 8bcd27af724b..a0f62a808edb 100644
--- a/arch/sparc/configs/sparc32_defconfig
+++ b/arch/sparc/configs/sparc32_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.30-rc2 3# Linux kernel version: 2.6.31-rc1
4# Fri Apr 17 04:04:46 2009 4# Tue Aug 18 23:45:52 2009
5# 5#
6# CONFIG_64BIT is not set 6# CONFIG_64BIT is not set
7CONFIG_SPARC=y 7CONFIG_SPARC=y
@@ -17,6 +17,7 @@ CONFIG_GENERIC_ISA_DMA=y
17CONFIG_ARCH_NO_VIRT_TO_BUS=y 17CONFIG_ARCH_NO_VIRT_TO_BUS=y
18CONFIG_OF=y 18CONFIG_OF=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20CONFIG_CONSTRUCTORS=y
20 21
21# 22#
22# General setup 23# General setup
@@ -74,7 +75,6 @@ CONFIG_SYSCTL_SYSCALL=y
74CONFIG_KALLSYMS=y 75CONFIG_KALLSYMS=y
75# CONFIG_KALLSYMS_ALL is not set 76# CONFIG_KALLSYMS_ALL is not set
76# CONFIG_KALLSYMS_EXTRA_PASS is not set 77# CONFIG_KALLSYMS_EXTRA_PASS is not set
77# CONFIG_STRIP_ASM_SYMS is not set
78CONFIG_HOTPLUG=y 78CONFIG_HOTPLUG=y
79CONFIG_PRINTK=y 79CONFIG_PRINTK=y
80CONFIG_BUG=y 80CONFIG_BUG=y
@@ -87,8 +87,13 @@ CONFIG_TIMERFD=y
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_AIO=y 89CONFIG_AIO=y
90
91#
92# Performance Counters
93#
90CONFIG_VM_EVENT_COUNTERS=y 94CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_PCI_QUIRKS=y 95CONFIG_PCI_QUIRKS=y
96# CONFIG_STRIP_ASM_SYMS is not set
92CONFIG_COMPAT_BRK=y 97CONFIG_COMPAT_BRK=y
93CONFIG_SLAB=y 98CONFIG_SLAB=y
94# CONFIG_SLUB is not set 99# CONFIG_SLUB is not set
@@ -97,6 +102,10 @@ CONFIG_SLAB=y
97# CONFIG_MARKERS is not set 102# CONFIG_MARKERS is not set
98CONFIG_HAVE_OPROFILE=y 103CONFIG_HAVE_OPROFILE=y
99CONFIG_HAVE_ARCH_TRACEHOOK=y 104CONFIG_HAVE_ARCH_TRACEHOOK=y
105
106#
107# GCOV-based kernel profiling
108#
100# CONFIG_SLOW_WORK is not set 109# CONFIG_SLOW_WORK is not set
101# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 110# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
102CONFIG_SLABINFO=y 111CONFIG_SLABINFO=y
@@ -109,7 +118,7 @@ CONFIG_MODULE_UNLOAD=y
109# CONFIG_MODVERSIONS is not set 118# CONFIG_MODVERSIONS is not set
110# CONFIG_MODULE_SRCVERSION_ALL is not set 119# CONFIG_MODULE_SRCVERSION_ALL is not set
111CONFIG_BLOCK=y 120CONFIG_BLOCK=y
112# CONFIG_LBD is not set 121CONFIG_LBDAF=y
113# CONFIG_BLK_DEV_BSG is not set 122# CONFIG_BLK_DEV_BSG is not set
114# CONFIG_BLK_DEV_INTEGRITY is not set 123# CONFIG_BLK_DEV_INTEGRITY is not set
115 124
@@ -154,9 +163,9 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
154# CONFIG_PHYS_ADDR_T_64BIT is not set 163# CONFIG_PHYS_ADDR_T_64BIT is not set
155CONFIG_ZONE_DMA_FLAG=1 164CONFIG_ZONE_DMA_FLAG=1
156CONFIG_BOUNCE=y 165CONFIG_BOUNCE=y
157CONFIG_UNEVICTABLE_LRU=y
158CONFIG_HAVE_MLOCK=y 166CONFIG_HAVE_MLOCK=y
159CONFIG_HAVE_MLOCKED_PAGE_BIT=y 167CONFIG_HAVE_MLOCKED_PAGE_BIT=y
168CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
160CONFIG_SUN_PM=y 169CONFIG_SUN_PM=y
161# CONFIG_SPARC_LED is not set 170# CONFIG_SPARC_LED is not set
162CONFIG_SERIAL_CONSOLE=y 171CONFIG_SERIAL_CONSOLE=y
@@ -264,6 +273,7 @@ CONFIG_IPV6_TUNNEL=m
264# CONFIG_ECONET is not set 273# CONFIG_ECONET is not set
265# CONFIG_WAN_ROUTER is not set 274# CONFIG_WAN_ROUTER is not set
266# CONFIG_PHONET is not set 275# CONFIG_PHONET is not set
276# CONFIG_IEEE802154 is not set
267# CONFIG_NET_SCHED is not set 277# CONFIG_NET_SCHED is not set
268# CONFIG_DCB is not set 278# CONFIG_DCB is not set
269 279
@@ -281,7 +291,11 @@ CONFIG_WIRELESS=y
281CONFIG_WIRELESS_OLD_REGULATORY=y 291CONFIG_WIRELESS_OLD_REGULATORY=y
282# CONFIG_WIRELESS_EXT is not set 292# CONFIG_WIRELESS_EXT is not set
283# CONFIG_LIB80211 is not set 293# CONFIG_LIB80211 is not set
284# CONFIG_MAC80211 is not set 294
295#
296# CFG80211 needs to be enabled for MAC80211
297#
298CONFIG_MAC80211_DEFAULT_PS_VALUE=0
285# CONFIG_WIMAX is not set 299# CONFIG_WIMAX is not set
286# CONFIG_RFKILL is not set 300# CONFIG_RFKILL is not set
287# CONFIG_NET_9P is not set 301# CONFIG_NET_9P is not set
@@ -335,6 +349,7 @@ CONFIG_MISC_DEVICES=y
335# EEPROM support 349# EEPROM support
336# 350#
337# CONFIG_EEPROM_93CX6 is not set 351# CONFIG_EEPROM_93CX6 is not set
352# CONFIG_CB710_CORE is not set
338CONFIG_HAVE_IDE=y 353CONFIG_HAVE_IDE=y
339# CONFIG_IDE is not set 354# CONFIG_IDE is not set
340 355
@@ -358,10 +373,6 @@ CONFIG_BLK_DEV_SR=m
358# CONFIG_BLK_DEV_SR_VENDOR is not set 373# CONFIG_BLK_DEV_SR_VENDOR is not set
359CONFIG_CHR_DEV_SG=m 374CONFIG_CHR_DEV_SG=m
360# CONFIG_CHR_DEV_SCH is not set 375# CONFIG_CHR_DEV_SCH is not set
361
362#
363# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
364#
365# CONFIG_SCSI_MULTI_LUN is not set 376# CONFIG_SCSI_MULTI_LUN is not set
366# CONFIG_SCSI_CONSTANTS is not set 377# CONFIG_SCSI_CONSTANTS is not set
367# CONFIG_SCSI_LOGGING is not set 378# CONFIG_SCSI_LOGGING is not set
@@ -379,6 +390,7 @@ CONFIG_SCSI_SPI_ATTRS=y
379CONFIG_SCSI_LOWLEVEL=y 390CONFIG_SCSI_LOWLEVEL=y
380# CONFIG_ISCSI_TCP is not set 391# CONFIG_ISCSI_TCP is not set
381# CONFIG_SCSI_CXGB3_ISCSI is not set 392# CONFIG_SCSI_CXGB3_ISCSI is not set
393# CONFIG_SCSI_BNX2_ISCSI is not set
382# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 394# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
383# CONFIG_SCSI_3W_9XXX is not set 395# CONFIG_SCSI_3W_9XXX is not set
384# CONFIG_SCSI_ACARD is not set 396# CONFIG_SCSI_ACARD is not set
@@ -387,6 +399,7 @@ CONFIG_SCSI_LOWLEVEL=y
387# CONFIG_SCSI_AIC7XXX_OLD is not set 399# CONFIG_SCSI_AIC7XXX_OLD is not set
388# CONFIG_SCSI_AIC79XX is not set 400# CONFIG_SCSI_AIC79XX is not set
389# CONFIG_SCSI_AIC94XX is not set 401# CONFIG_SCSI_AIC94XX is not set
402# CONFIG_SCSI_MVSAS is not set
390# CONFIG_SCSI_ARCMSR is not set 403# CONFIG_SCSI_ARCMSR is not set
391# CONFIG_MEGARAID_NEWGEN is not set 404# CONFIG_MEGARAID_NEWGEN is not set
392# CONFIG_MEGARAID_LEGACY is not set 405# CONFIG_MEGARAID_LEGACY is not set
@@ -401,7 +414,6 @@ CONFIG_SCSI_LOWLEVEL=y
401# CONFIG_SCSI_IPS is not set 414# CONFIG_SCSI_IPS is not set
402# CONFIG_SCSI_INITIO is not set 415# CONFIG_SCSI_INITIO is not set
403# CONFIG_SCSI_INIA100 is not set 416# CONFIG_SCSI_INIA100 is not set
404# CONFIG_SCSI_MVSAS is not set
405# CONFIG_SCSI_STEX is not set 417# CONFIG_SCSI_STEX is not set
406# CONFIG_SCSI_SYM53C8XX_2 is not set 418# CONFIG_SCSI_SYM53C8XX_2 is not set
407# CONFIG_SCSI_QLOGIC_1280 is not set 419# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -426,13 +438,16 @@ CONFIG_SCSI_SUNESP=y
426# 438#
427 439
428# 440#
429# Enable only one of the two stacks, unless you know what you are doing 441# You can enable one or both FireWire driver stacks.
442#
443
444#
445# See the help texts for more information.
430# 446#
431# CONFIG_FIREWIRE is not set 447# CONFIG_FIREWIRE is not set
432# CONFIG_IEEE1394 is not set 448# CONFIG_IEEE1394 is not set
433# CONFIG_I2O is not set 449# CONFIG_I2O is not set
434CONFIG_NETDEVICES=y 450CONFIG_NETDEVICES=y
435CONFIG_COMPAT_NET_DEV_OPS=y
436CONFIG_DUMMY=m 451CONFIG_DUMMY=m
437# CONFIG_BONDING is not set 452# CONFIG_BONDING is not set
438# CONFIG_MACVLAN is not set 453# CONFIG_MACVLAN is not set
@@ -463,6 +478,7 @@ CONFIG_SUNQE=m
463# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 478# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
464# CONFIG_NET_PCI is not set 479# CONFIG_NET_PCI is not set
465# CONFIG_B44 is not set 480# CONFIG_B44 is not set
481# CONFIG_KS8842 is not set
466# CONFIG_ATL2 is not set 482# CONFIG_ATL2 is not set
467CONFIG_NETDEV_1000=y 483CONFIG_NETDEV_1000=y
468# CONFIG_ACENIC is not set 484# CONFIG_ACENIC is not set
@@ -482,6 +498,7 @@ CONFIG_NETDEV_1000=y
482# CONFIG_VIA_VELOCITY is not set 498# CONFIG_VIA_VELOCITY is not set
483# CONFIG_TIGON3 is not set 499# CONFIG_TIGON3 is not set
484# CONFIG_BNX2 is not set 500# CONFIG_BNX2 is not set
501# CONFIG_CNIC is not set
485# CONFIG_QLA3XXX is not set 502# CONFIG_QLA3XXX is not set
486# CONFIG_ATL1 is not set 503# CONFIG_ATL1 is not set
487# CONFIG_ATL1E is not set 504# CONFIG_ATL1E is not set
@@ -629,6 +646,11 @@ CONFIG_HW_RANDOM=m
629CONFIG_DEVPORT=y 646CONFIG_DEVPORT=y
630# CONFIG_I2C is not set 647# CONFIG_I2C is not set
631# CONFIG_SPI is not set 648# CONFIG_SPI is not set
649
650#
651# PPS support
652#
653# CONFIG_PPS is not set
632CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 654CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
633# CONFIG_GPIOLIB is not set 655# CONFIG_GPIOLIB is not set
634# CONFIG_W1 is not set 656# CONFIG_W1 is not set
@@ -668,22 +690,7 @@ CONFIG_SSB_POSSIBLE=y
668# CONFIG_HTC_PASIC3 is not set 690# CONFIG_HTC_PASIC3 is not set
669# CONFIG_MFD_TMIO is not set 691# CONFIG_MFD_TMIO is not set
670# CONFIG_REGULATOR is not set 692# CONFIG_REGULATOR is not set
671 693# CONFIG_MEDIA_SUPPORT is not set
672#
673# Multimedia devices
674#
675
676#
677# Multimedia core support
678#
679# CONFIG_VIDEO_DEV is not set
680# CONFIG_DVB_CORE is not set
681# CONFIG_VIDEO_MEDIA is not set
682
683#
684# Multimedia drivers
685#
686# CONFIG_DAB is not set
687 694
688# 695#
689# Graphics support 696# Graphics support
@@ -776,6 +783,10 @@ CONFIG_RTC_DRV_M48T59=y
776# CONFIG_DMADEVICES is not set 783# CONFIG_DMADEVICES is not set
777# CONFIG_AUXDISPLAY is not set 784# CONFIG_AUXDISPLAY is not set
778# CONFIG_UIO is not set 785# CONFIG_UIO is not set
786
787#
788# TI VLYNQ
789#
779# CONFIG_STAGING is not set 790# CONFIG_STAGING is not set
780 791
781# 792#
@@ -799,10 +810,12 @@ CONFIG_FS_MBCACHE=y
799# CONFIG_REISERFS_FS is not set 810# CONFIG_REISERFS_FS is not set
800# CONFIG_JFS_FS is not set 811# CONFIG_JFS_FS is not set
801CONFIG_FS_POSIX_ACL=y 812CONFIG_FS_POSIX_ACL=y
802CONFIG_FILE_LOCKING=y
803# CONFIG_XFS_FS is not set 813# CONFIG_XFS_FS is not set
814# CONFIG_GFS2_FS is not set
804# CONFIG_OCFS2_FS is not set 815# CONFIG_OCFS2_FS is not set
805# CONFIG_BTRFS_FS is not set 816# CONFIG_BTRFS_FS is not set
817CONFIG_FILE_LOCKING=y
818CONFIG_FSNOTIFY=y
806CONFIG_DNOTIFY=y 819CONFIG_DNOTIFY=y
807CONFIG_INOTIFY=y 820CONFIG_INOTIFY=y
808CONFIG_INOTIFY_USER=y 821CONFIG_INOTIFY_USER=y
@@ -985,6 +998,7 @@ CONFIG_KGDB=y
985CONFIG_KGDB_SERIAL_CONSOLE=y 998CONFIG_KGDB_SERIAL_CONSOLE=y
986CONFIG_KGDB_TESTS=y 999CONFIG_KGDB_TESTS=y
987# CONFIG_KGDB_TESTS_ON_BOOT is not set 1000# CONFIG_KGDB_TESTS_ON_BOOT is not set
1001# CONFIG_KMEMCHECK is not set
988# CONFIG_DEBUG_STACK_USAGE is not set 1002# CONFIG_DEBUG_STACK_USAGE is not set
989# CONFIG_STACK_DEBUG is not set 1003# CONFIG_STACK_DEBUG is not set
990 1004
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig
index 0123a4c596ce..fdddf7a6f725 100644
--- a/arch/sparc/configs/sparc64_defconfig
+++ b/arch/sparc/configs/sparc64_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.30 3# Linux kernel version: 2.6.31-rc1
4# Tue Jun 16 04:59:36 2009 4# Tue Aug 18 23:56:02 2009
5# 5#
6CONFIG_64BIT=y 6CONFIG_64BIT=y
7CONFIG_SPARC=y 7CONFIG_SPARC=y
@@ -26,6 +26,7 @@ CONFIG_ARCH_NO_VIRT_TO_BUS=y
26CONFIG_OF=y 26CONFIG_OF=y
27CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 27CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
29CONFIG_CONSTRUCTORS=y
29 30
30# 31#
31# General setup 32# General setup
@@ -119,6 +120,11 @@ CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 120CONFIG_HAVE_KRETPROBES=y
120CONFIG_HAVE_ARCH_TRACEHOOK=y 121CONFIG_HAVE_ARCH_TRACEHOOK=y
121CONFIG_USE_GENERIC_SMP_HELPERS=y 122CONFIG_USE_GENERIC_SMP_HELPERS=y
123
124#
125# GCOV-based kernel profiling
126#
127# CONFIG_GCOV_KERNEL is not set
122# CONFIG_SLOW_WORK is not set 128# CONFIG_SLOW_WORK is not set
123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 129# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
124CONFIG_SLABINFO=y 130CONFIG_SLABINFO=y
@@ -204,7 +210,6 @@ CONFIG_MIGRATION=y
204CONFIG_PHYS_ADDR_T_64BIT=y 210CONFIG_PHYS_ADDR_T_64BIT=y
205CONFIG_ZONE_DMA_FLAG=0 211CONFIG_ZONE_DMA_FLAG=0
206CONFIG_NR_QUICK=1 212CONFIG_NR_QUICK=1
207CONFIG_UNEVICTABLE_LRU=y
208CONFIG_HAVE_MLOCK=y 213CONFIG_HAVE_MLOCK=y
209CONFIG_HAVE_MLOCKED_PAGE_BIT=y 214CONFIG_HAVE_MLOCKED_PAGE_BIT=y
210CONFIG_DEFAULT_MMAP_MIN_ADDR=8192 215CONFIG_DEFAULT_MMAP_MIN_ADDR=8192
@@ -410,6 +415,7 @@ CONFIG_MISC_DEVICES=y
410# 415#
411# CONFIG_EEPROM_AT24 is not set 416# CONFIG_EEPROM_AT24 is not set
412# CONFIG_EEPROM_LEGACY is not set 417# CONFIG_EEPROM_LEGACY is not set
418# CONFIG_EEPROM_MAX6875 is not set
413# CONFIG_EEPROM_93CX6 is not set 419# CONFIG_EEPROM_93CX6 is not set
414# CONFIG_CB710_CORE is not set 420# CONFIG_CB710_CORE is not set
415CONFIG_HAVE_IDE=y 421CONFIG_HAVE_IDE=y
@@ -562,6 +568,7 @@ CONFIG_BLK_DEV_DM=m
562CONFIG_DM_CRYPT=m 568CONFIG_DM_CRYPT=m
563CONFIG_DM_SNAPSHOT=m 569CONFIG_DM_SNAPSHOT=m
564CONFIG_DM_MIRROR=m 570CONFIG_DM_MIRROR=m
571# CONFIG_DM_LOG_USERSPACE is not set
565CONFIG_DM_ZERO=m 572CONFIG_DM_ZERO=m
566# CONFIG_DM_MULTIPATH is not set 573# CONFIG_DM_MULTIPATH is not set
567# CONFIG_DM_DELAY is not set 574# CONFIG_DM_DELAY is not set
@@ -573,7 +580,11 @@ CONFIG_DM_ZERO=m
573# 580#
574 581
575# 582#
576# Enable only one of the two stacks, unless you know what you are doing 583# You can enable one or both FireWire driver stacks.
584#
585
586#
587# See the help texts for more information.
577# 588#
578# CONFIG_FIREWIRE is not set 589# CONFIG_FIREWIRE is not set
579# CONFIG_IEEE1394 is not set 590# CONFIG_IEEE1394 is not set
@@ -667,6 +678,7 @@ CONFIG_E1000E=m
667# CONFIG_VIA_VELOCITY is not set 678# CONFIG_VIA_VELOCITY is not set
668CONFIG_TIGON3=m 679CONFIG_TIGON3=m
669CONFIG_BNX2=m 680CONFIG_BNX2=m
681# CONFIG_CNIC is not set
670# CONFIG_QLA3XXX is not set 682# CONFIG_QLA3XXX is not set
671# CONFIG_ATL1 is not set 683# CONFIG_ATL1 is not set
672# CONFIG_ATL1E is not set 684# CONFIG_ATL1E is not set
@@ -773,6 +785,7 @@ CONFIG_MOUSE_SERIAL=y
773# CONFIG_MOUSE_APPLETOUCH is not set 785# CONFIG_MOUSE_APPLETOUCH is not set
774# CONFIG_MOUSE_BCM5974 is not set 786# CONFIG_MOUSE_BCM5974 is not set
775# CONFIG_MOUSE_VSXXXAA is not set 787# CONFIG_MOUSE_VSXXXAA is not set
788# CONFIG_MOUSE_SYNAPTICS_I2C is not set
776# CONFIG_INPUT_JOYSTICK is not set 789# CONFIG_INPUT_JOYSTICK is not set
777# CONFIG_INPUT_TABLET is not set 790# CONFIG_INPUT_TABLET is not set
778# CONFIG_INPUT_TOUCHSCREEN is not set 791# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -870,6 +883,7 @@ CONFIG_I2C_ALGOBIT=y
870# 883#
871# I2C system bus drivers (mostly embedded / system-on-chip) 884# I2C system bus drivers (mostly embedded / system-on-chip)
872# 885#
886# CONFIG_I2C_DESIGNWARE is not set
873# CONFIG_I2C_OCORES is not set 887# CONFIG_I2C_OCORES is not set
874# CONFIG_I2C_SIMTEC is not set 888# CONFIG_I2C_SIMTEC is not set
875 889
@@ -898,13 +912,17 @@ CONFIG_I2C_ALGOBIT=y
898# CONFIG_SENSORS_PCF8574 is not set 912# CONFIG_SENSORS_PCF8574 is not set
899# CONFIG_PCF8575 is not set 913# CONFIG_PCF8575 is not set
900# CONFIG_SENSORS_PCA9539 is not set 914# CONFIG_SENSORS_PCA9539 is not set
901# CONFIG_SENSORS_MAX6875 is not set
902# CONFIG_SENSORS_TSL2550 is not set 915# CONFIG_SENSORS_TSL2550 is not set
903# CONFIG_I2C_DEBUG_CORE is not set 916# CONFIG_I2C_DEBUG_CORE is not set
904# CONFIG_I2C_DEBUG_ALGO is not set 917# CONFIG_I2C_DEBUG_ALGO is not set
905# CONFIG_I2C_DEBUG_BUS is not set 918# CONFIG_I2C_DEBUG_BUS is not set
906# CONFIG_I2C_DEBUG_CHIP is not set 919# CONFIG_I2C_DEBUG_CHIP is not set
907# CONFIG_SPI is not set 920# CONFIG_SPI is not set
921
922#
923# PPS support
924#
925# CONFIG_PPS is not set
908CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 926CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
909# CONFIG_GPIOLIB is not set 927# CONFIG_GPIOLIB is not set
910# CONFIG_W1 is not set 928# CONFIG_W1 is not set
@@ -959,6 +977,7 @@ CONFIG_HWMON=y
959# CONFIG_SENSORS_SMSC47B397 is not set 977# CONFIG_SENSORS_SMSC47B397 is not set
960# CONFIG_SENSORS_ADS7828 is not set 978# CONFIG_SENSORS_ADS7828 is not set
961# CONFIG_SENSORS_THMC50 is not set 979# CONFIG_SENSORS_THMC50 is not set
980# CONFIG_SENSORS_TMP401 is not set
962# CONFIG_SENSORS_VIA686A is not set 981# CONFIG_SENSORS_VIA686A is not set
963# CONFIG_SENSORS_VT1211 is not set 982# CONFIG_SENSORS_VT1211 is not set
964# CONFIG_SENSORS_VT8231 is not set 983# CONFIG_SENSORS_VT8231 is not set
@@ -994,23 +1013,9 @@ CONFIG_SSB_POSSIBLE=y
994# CONFIG_MFD_WM8400 is not set 1013# CONFIG_MFD_WM8400 is not set
995# CONFIG_MFD_WM8350_I2C is not set 1014# CONFIG_MFD_WM8350_I2C is not set
996# CONFIG_MFD_PCF50633 is not set 1015# CONFIG_MFD_PCF50633 is not set
1016# CONFIG_AB3100_CORE is not set
997# CONFIG_REGULATOR is not set 1017# CONFIG_REGULATOR is not set
998 1018# CONFIG_MEDIA_SUPPORT is not set
999#
1000# Multimedia devices
1001#
1002
1003#
1004# Multimedia core support
1005#
1006# CONFIG_VIDEO_DEV is not set
1007# CONFIG_DVB_CORE is not set
1008# CONFIG_VIDEO_MEDIA is not set
1009
1010#
1011# Multimedia drivers
1012#
1013# CONFIG_DAB is not set
1014 1019
1015# 1020#
1016# Graphics support 1021# Graphics support
@@ -1284,7 +1289,6 @@ CONFIG_USB=y
1284# 1289#
1285# Miscellaneous USB options 1290# Miscellaneous USB options
1286# 1291#
1287CONFIG_USB_DEVICEFS=y
1288# CONFIG_USB_DEVICE_CLASS is not set 1292# CONFIG_USB_DEVICE_CLASS is not set
1289# CONFIG_USB_DYNAMIC_MINORS is not set 1293# CONFIG_USB_DYNAMIC_MINORS is not set
1290# CONFIG_USB_OTG is not set 1294# CONFIG_USB_OTG is not set
@@ -1296,6 +1300,7 @@ CONFIG_USB_DEVICEFS=y
1296# USB Host Controller Drivers 1300# USB Host Controller Drivers
1297# 1301#
1298# CONFIG_USB_C67X00_HCD is not set 1302# CONFIG_USB_C67X00_HCD is not set
1303# CONFIG_USB_XHCI_HCD is not set
1299CONFIG_USB_EHCI_HCD=m 1304CONFIG_USB_EHCI_HCD=m
1300# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1305# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1301# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1306# CONFIG_USB_EHCI_TT_NEWSCHED is not set
@@ -1374,7 +1379,6 @@ CONFIG_USB_STORAGE=m
1374# CONFIG_USB_LD is not set 1379# CONFIG_USB_LD is not set
1375# CONFIG_USB_TRANCEVIBRATOR is not set 1380# CONFIG_USB_TRANCEVIBRATOR is not set
1376# CONFIG_USB_IOWARRIOR is not set 1381# CONFIG_USB_IOWARRIOR is not set
1377# CONFIG_USB_TEST is not set
1378# CONFIG_USB_ISIGHTFW is not set 1382# CONFIG_USB_ISIGHTFW is not set
1379# CONFIG_USB_VST is not set 1383# CONFIG_USB_VST is not set
1380# CONFIG_USB_GADGET is not set 1384# CONFIG_USB_GADGET is not set
@@ -1420,6 +1424,7 @@ CONFIG_RTC_INTF_DEV=y
1420# CONFIG_RTC_DRV_S35390A is not set 1424# CONFIG_RTC_DRV_S35390A is not set
1421# CONFIG_RTC_DRV_FM3130 is not set 1425# CONFIG_RTC_DRV_FM3130 is not set
1422# CONFIG_RTC_DRV_RX8581 is not set 1426# CONFIG_RTC_DRV_RX8581 is not set
1427# CONFIG_RTC_DRV_RX8025 is not set
1423 1428
1424# 1429#
1425# SPI RTC drivers 1430# SPI RTC drivers
@@ -1448,6 +1453,10 @@ CONFIG_RTC_DRV_STARFIRE=y
1448# CONFIG_DMADEVICES is not set 1453# CONFIG_DMADEVICES is not set
1449# CONFIG_AUXDISPLAY is not set 1454# CONFIG_AUXDISPLAY is not set
1450# CONFIG_UIO is not set 1455# CONFIG_UIO is not set
1456
1457#
1458# TI VLYNQ
1459#
1451# CONFIG_STAGING is not set 1460# CONFIG_STAGING is not set
1452 1461
1453# 1462#
@@ -1480,11 +1489,11 @@ CONFIG_FS_MBCACHE=y
1480# CONFIG_REISERFS_FS is not set 1489# CONFIG_REISERFS_FS is not set
1481# CONFIG_JFS_FS is not set 1490# CONFIG_JFS_FS is not set
1482CONFIG_FS_POSIX_ACL=y 1491CONFIG_FS_POSIX_ACL=y
1483CONFIG_FILE_LOCKING=y
1484# CONFIG_XFS_FS is not set 1492# CONFIG_XFS_FS is not set
1485# CONFIG_GFS2_FS is not set 1493# CONFIG_GFS2_FS is not set
1486# CONFIG_OCFS2_FS is not set 1494# CONFIG_OCFS2_FS is not set
1487# CONFIG_BTRFS_FS is not set 1495# CONFIG_BTRFS_FS is not set
1496CONFIG_FILE_LOCKING=y
1488CONFIG_FSNOTIFY=y 1497CONFIG_FSNOTIFY=y
1489CONFIG_DNOTIFY=y 1498CONFIG_DNOTIFY=y
1490CONFIG_INOTIFY=y 1499CONFIG_INOTIFY=y
@@ -1560,7 +1569,7 @@ CONFIG_NETWORK_FILESYSTEMS=y
1560# CONFIG_PARTITION_ADVANCED is not set 1569# CONFIG_PARTITION_ADVANCED is not set
1561CONFIG_MSDOS_PARTITION=y 1570CONFIG_MSDOS_PARTITION=y
1562CONFIG_SUN_PARTITION=y 1571CONFIG_SUN_PARTITION=y
1563CONFIG_NLS=m 1572CONFIG_NLS=y
1564CONFIG_NLS_DEFAULT="iso8859-1" 1573CONFIG_NLS_DEFAULT="iso8859-1"
1565# CONFIG_NLS_CODEPAGE_437 is not set 1574# CONFIG_NLS_CODEPAGE_437 is not set
1566# CONFIG_NLS_CODEPAGE_737 is not set 1575# CONFIG_NLS_CODEPAGE_737 is not set
diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h
index b049abf9902f..0ff92fa22064 100644
--- a/arch/sparc/include/asm/pgtable_64.h
+++ b/arch/sparc/include/asm/pgtable_64.h
@@ -726,11 +726,17 @@ extern unsigned long pte_file(pte_t);
726extern pte_t pgoff_to_pte(unsigned long); 726extern pte_t pgoff_to_pte(unsigned long);
727#define PTE_FILE_MAX_BITS (64UL - PAGE_SHIFT - 1UL) 727#define PTE_FILE_MAX_BITS (64UL - PAGE_SHIFT - 1UL)
728 728
729extern unsigned long *sparc64_valid_addr_bitmap; 729extern unsigned long sparc64_valid_addr_bitmap[];
730 730
731/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ 731/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
732#define kern_addr_valid(addr) \ 732static inline bool kern_addr_valid(unsigned long addr)
733 (test_bit(__pa((unsigned long)(addr))>>22, sparc64_valid_addr_bitmap)) 733{
734 unsigned long paddr = __pa(addr);
735
736 if ((paddr >> 41UL) != 0UL)
737 return false;
738 return test_bit(paddr >> 22, sparc64_valid_addr_bitmap);
739}
734 740
735extern int page_in_phys_avail(unsigned long paddr); 741extern int page_in_phys_avail(unsigned long paddr);
736 742
diff --git a/arch/sparc/kernel/ktlb.S b/arch/sparc/kernel/ktlb.S
index cef8defcd7a9..3ea6e8cde8c5 100644
--- a/arch/sparc/kernel/ktlb.S
+++ b/arch/sparc/kernel/ktlb.S
@@ -151,12 +151,46 @@ kvmap_dtlb_4v:
151 * Must preserve %g1 and %g6 (TAG). 151 * Must preserve %g1 and %g6 (TAG).
152 */ 152 */
153kvmap_dtlb_tsb4m_miss: 153kvmap_dtlb_tsb4m_miss:
154 sethi %hi(kpte_linear_bitmap), %g2 154 /* Clear the PAGE_OFFSET top virtual bits, shift
155 or %g2, %lo(kpte_linear_bitmap), %g2 155 * down to get PFN, and make sure PFN is in range.
156 */
157 sllx %g4, 21, %g5
156 158
157 /* Clear the PAGE_OFFSET top virtual bits, then shift 159 /* Check to see if we know about valid memory at the 4MB
158 * down to get a 256MB physical address index. 160 * chunk this physical address will reside within.
159 */ 161 */
162 srlx %g5, 21 + 41, %g2
163 brnz,pn %g2, kvmap_dtlb_longpath
164 nop
165
166 /* This unconditional branch and delay-slot nop gets patched
167 * by the sethi sequence once the bitmap is properly setup.
168 */
169 .globl valid_addr_bitmap_insn
170valid_addr_bitmap_insn:
171 ba,pt %xcc, 2f
172 nop
173 .subsection 2
174 .globl valid_addr_bitmap_patch
175valid_addr_bitmap_patch:
176 sethi %hi(sparc64_valid_addr_bitmap), %g7
177 or %g7, %lo(sparc64_valid_addr_bitmap), %g7
178 .previous
179
180 srlx %g5, 21 + 22, %g2
181 srlx %g2, 6, %g5
182 and %g2, 63, %g2
183 sllx %g5, 3, %g5
184 ldx [%g7 + %g5], %g5
185 mov 1, %g7
186 sllx %g7, %g2, %g7
187 andcc %g5, %g7, %g0
188 be,pn %xcc, kvmap_dtlb_longpath
189
1902: sethi %hi(kpte_linear_bitmap), %g2
191 or %g2, %lo(kpte_linear_bitmap), %g2
192
193 /* Get the 256MB physical address index. */
160 sllx %g4, 21, %g5 194 sllx %g4, 21, %g5
161 mov 1, %g7 195 mov 1, %g7
162 srlx %g5, 21 + 28, %g5 196 srlx %g5, 21 + 28, %g5
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index 54fb02468f0d..68791cad7b74 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -162,9 +162,6 @@ extern void cpu_panic(void);
162 */ 162 */
163 163
164extern struct linux_prom_registers smp_penguin_ctable; 164extern struct linux_prom_registers smp_penguin_ctable;
165extern unsigned long trapbase_cpu1[];
166extern unsigned long trapbase_cpu2[];
167extern unsigned long trapbase_cpu3[];
168 165
169void __init smp4d_boot_cpus(void) 166void __init smp4d_boot_cpus(void)
170{ 167{
@@ -235,25 +232,6 @@ void __init smp4d_smp_done(void)
235 *prev = first; 232 *prev = first;
236 local_flush_cache_all(); 233 local_flush_cache_all();
237 234
238 /* Free unneeded trap tables */
239 ClearPageReserved(virt_to_page(trapbase_cpu1));
240 init_page_count(virt_to_page(trapbase_cpu1));
241 free_page((unsigned long)trapbase_cpu1);
242 totalram_pages++;
243 num_physpages++;
244
245 ClearPageReserved(virt_to_page(trapbase_cpu2));
246 init_page_count(virt_to_page(trapbase_cpu2));
247 free_page((unsigned long)trapbase_cpu2);
248 totalram_pages++;
249 num_physpages++;
250
251 ClearPageReserved(virt_to_page(trapbase_cpu3));
252 init_page_count(virt_to_page(trapbase_cpu3));
253 free_page((unsigned long)trapbase_cpu3);
254 totalram_pages++;
255 num_physpages++;
256
257 /* Ok, they are spinning and ready to go. */ 235 /* Ok, they are spinning and ready to go. */
258 smp_processors_ready = 1; 236 smp_processors_ready = 1;
259 sun4d_distribute_irqs(); 237 sun4d_distribute_irqs();
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 960b113d0006..762d6eedd944 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -121,9 +121,6 @@ void __cpuinit smp4m_callin(void)
121 */ 121 */
122 122
123extern struct linux_prom_registers smp_penguin_ctable; 123extern struct linux_prom_registers smp_penguin_ctable;
124extern unsigned long trapbase_cpu1[];
125extern unsigned long trapbase_cpu2[];
126extern unsigned long trapbase_cpu3[];
127 124
128void __init smp4m_boot_cpus(void) 125void __init smp4m_boot_cpus(void)
129{ 126{
@@ -193,29 +190,6 @@ void __init smp4m_smp_done(void)
193 *prev = first; 190 *prev = first;
194 local_flush_cache_all(); 191 local_flush_cache_all();
195 192
196 /* Free unneeded trap tables */
197 if (!cpu_isset(1, cpu_present_map)) {
198 ClearPageReserved(virt_to_page(trapbase_cpu1));
199 init_page_count(virt_to_page(trapbase_cpu1));
200 free_page((unsigned long)trapbase_cpu1);
201 totalram_pages++;
202 num_physpages++;
203 }
204 if (!cpu_isset(2, cpu_present_map)) {
205 ClearPageReserved(virt_to_page(trapbase_cpu2));
206 init_page_count(virt_to_page(trapbase_cpu2));
207 free_page((unsigned long)trapbase_cpu2);
208 totalram_pages++;
209 num_physpages++;
210 }
211 if (!cpu_isset(3, cpu_present_map)) {
212 ClearPageReserved(virt_to_page(trapbase_cpu3));
213 init_page_count(virt_to_page(trapbase_cpu3));
214 free_page((unsigned long)trapbase_cpu3);
215 totalram_pages++;
216 num_physpages++;
217 }
218
219 /* Ok, they are spinning and ready to go. */ 193 /* Ok, they are spinning and ready to go. */
220} 194}
221 195
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S
index f061c4dda9ef..aed94869ad6a 100644
--- a/arch/sparc/kernel/sys32.S
+++ b/arch/sparc/kernel/sys32.S
@@ -134,10 +134,12 @@ SIGN1(sys32_getpeername, sys_getpeername, %o0)
134SIGN1(sys32_getsockname, sys_getsockname, %o0) 134SIGN1(sys32_getsockname, sys_getsockname, %o0)
135SIGN2(sys32_ioprio_get, sys_ioprio_get, %o0, %o1) 135SIGN2(sys32_ioprio_get, sys_ioprio_get, %o0, %o1)
136SIGN3(sys32_ioprio_set, sys_ioprio_set, %o0, %o1, %o2) 136SIGN3(sys32_ioprio_set, sys_ioprio_set, %o0, %o1, %o2)
137SIGN2(sys32_splice, sys_splice, %o0, %o1) 137SIGN2(sys32_splice, sys_splice, %o0, %o2)
138SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5) 138SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5)
139SIGN2(sys32_tee, sys_tee, %o0, %o1) 139SIGN2(sys32_tee, sys_tee, %o0, %o1)
140SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0) 140SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0)
141SIGN1(sys32_truncate, sys_truncate, %o1)
142SIGN1(sys32_ftruncate, sys_ftruncate, %o1)
141 143
142 .globl sys32_mmap2 144 .globl sys32_mmap2
143sys32_mmap2: 145sys32_mmap2:
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index 6b3ee88e253c..2ee7250ba7ae 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -43,8 +43,8 @@ sys_call_table32:
43/*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall 43/*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall
44 .word sys32_getgroups, compat_sys_gettimeofday, sys32_getrusage, sys_nis_syscall, sys_getcwd 44 .word sys32_getgroups, compat_sys_gettimeofday, sys32_getrusage, sys_nis_syscall, sys_getcwd
45/*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod 45/*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod
46 .word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, sys_truncate 46 .word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, sys32_truncate
47/*130*/ .word sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall 47/*130*/ .word sys32_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall
48 .word sys_nis_syscall, sys32_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64 48 .word sys_nis_syscall, sys32_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64
49/*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit 49/*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit
50 .word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write 50 .word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
index a5e30c642ee3..b99f81c4906f 100644
--- a/arch/sparc/mm/fault_32.c
+++ b/arch/sparc/mm/fault_32.c
@@ -319,9 +319,10 @@ no_context:
319 */ 319 */
320out_of_memory: 320out_of_memory:
321 up_read(&mm->mmap_sem); 321 up_read(&mm->mmap_sem);
322 printk("VM: killing process %s\n", tsk->comm); 322 if (from_user) {
323 if (from_user) 323 pagefault_out_of_memory();
324 do_group_exit(SIGKILL); 324 return;
325 }
325 goto no_context; 326 goto no_context;
326 327
327do_sigbus: 328do_sigbus:
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
index e5620b27c8bf..43b0da96a4fb 100644
--- a/arch/sparc/mm/fault_64.c
+++ b/arch/sparc/mm/fault_64.c
@@ -447,9 +447,10 @@ handle_kernel_fault:
447out_of_memory: 447out_of_memory:
448 insn = get_fault_insn(regs, insn); 448 insn = get_fault_insn(regs, insn);
449 up_read(&mm->mmap_sem); 449 up_read(&mm->mmap_sem);
450 printk("VM: killing process %s\n", current->comm); 450 if (!(regs->tstate & TSTATE_PRIV)) {
451 if (!(regs->tstate & TSTATE_PRIV)) 451 pagefault_out_of_memory();
452 do_group_exit(SIGKILL); 452 return;
453 }
453 goto handle_kernel_fault; 454 goto handle_kernel_fault;
454 455
455intr_or_no_mm: 456intr_or_no_mm:
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index ed6be6ba2f4e..a70a5e1904d9 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -145,7 +145,8 @@ static void __init read_obp_memory(const char *property,
145 cmp_p64, NULL); 145 cmp_p64, NULL);
146} 146}
147 147
148unsigned long *sparc64_valid_addr_bitmap __read_mostly; 148unsigned long sparc64_valid_addr_bitmap[VALID_ADDR_BITMAP_BYTES /
149 sizeof(unsigned long)];
149EXPORT_SYMBOL(sparc64_valid_addr_bitmap); 150EXPORT_SYMBOL(sparc64_valid_addr_bitmap);
150 151
151/* Kernel physical address base and size in bytes. */ 152/* Kernel physical address base and size in bytes. */
@@ -1874,7 +1875,7 @@ static int pavail_rescan_ents __initdata;
1874 * memory list again, and make sure it provides at least as much 1875 * memory list again, and make sure it provides at least as much
1875 * memory as 'pavail' does. 1876 * memory as 'pavail' does.
1876 */ 1877 */
1877static void __init setup_valid_addr_bitmap_from_pavail(void) 1878static void __init setup_valid_addr_bitmap_from_pavail(unsigned long *bitmap)
1878{ 1879{
1879 int i; 1880 int i;
1880 1881
@@ -1897,8 +1898,7 @@ static void __init setup_valid_addr_bitmap_from_pavail(void)
1897 1898
1898 if (new_start <= old_start && 1899 if (new_start <= old_start &&
1899 new_end >= (old_start + PAGE_SIZE)) { 1900 new_end >= (old_start + PAGE_SIZE)) {
1900 set_bit(old_start >> 22, 1901 set_bit(old_start >> 22, bitmap);
1901 sparc64_valid_addr_bitmap);
1902 goto do_next_page; 1902 goto do_next_page;
1903 } 1903 }
1904 } 1904 }
@@ -1919,20 +1919,21 @@ static void __init setup_valid_addr_bitmap_from_pavail(void)
1919 } 1919 }
1920} 1920}
1921 1921
1922static void __init patch_tlb_miss_handler_bitmap(void)
1923{
1924 extern unsigned int valid_addr_bitmap_insn[];
1925 extern unsigned int valid_addr_bitmap_patch[];
1926
1927 valid_addr_bitmap_insn[1] = valid_addr_bitmap_patch[1];
1928 mb();
1929 valid_addr_bitmap_insn[0] = valid_addr_bitmap_patch[0];
1930 flushi(&valid_addr_bitmap_insn[0]);
1931}
1932
1922void __init mem_init(void) 1933void __init mem_init(void)
1923{ 1934{
1924 unsigned long codepages, datapages, initpages; 1935 unsigned long codepages, datapages, initpages;
1925 unsigned long addr, last; 1936 unsigned long addr, last;
1926 int i;
1927
1928 i = last_valid_pfn >> ((22 - PAGE_SHIFT) + 6);
1929 i += 1;
1930 sparc64_valid_addr_bitmap = (unsigned long *) alloc_bootmem(i << 3);
1931 if (sparc64_valid_addr_bitmap == NULL) {
1932 prom_printf("mem_init: Cannot alloc valid_addr_bitmap.\n");
1933 prom_halt();
1934 }
1935 memset(sparc64_valid_addr_bitmap, 0, i << 3);
1936 1937
1937 addr = PAGE_OFFSET + kern_base; 1938 addr = PAGE_OFFSET + kern_base;
1938 last = PAGE_ALIGN(kern_size) + addr; 1939 last = PAGE_ALIGN(kern_size) + addr;
@@ -1941,15 +1942,19 @@ void __init mem_init(void)
1941 addr += PAGE_SIZE; 1942 addr += PAGE_SIZE;
1942 } 1943 }
1943 1944
1944 setup_valid_addr_bitmap_from_pavail(); 1945 setup_valid_addr_bitmap_from_pavail(sparc64_valid_addr_bitmap);
1946 patch_tlb_miss_handler_bitmap();
1945 1947
1946 high_memory = __va(last_valid_pfn << PAGE_SHIFT); 1948 high_memory = __va(last_valid_pfn << PAGE_SHIFT);
1947 1949
1948#ifdef CONFIG_NEED_MULTIPLE_NODES 1950#ifdef CONFIG_NEED_MULTIPLE_NODES
1949 for_each_online_node(i) { 1951 {
1950 if (NODE_DATA(i)->node_spanned_pages != 0) { 1952 int i;
1951 totalram_pages += 1953 for_each_online_node(i) {
1952 free_all_bootmem_node(NODE_DATA(i)); 1954 if (NODE_DATA(i)->node_spanned_pages != 0) {
1955 totalram_pages +=
1956 free_all_bootmem_node(NODE_DATA(i));
1957 }
1953 } 1958 }
1954 } 1959 }
1955#else 1960#else
diff --git a/arch/sparc/mm/init_64.h b/arch/sparc/mm/init_64.h
index 16063870a489..c2f772dbd556 100644
--- a/arch/sparc/mm/init_64.h
+++ b/arch/sparc/mm/init_64.h
@@ -5,10 +5,13 @@
5 * marked non-static so that assembler code can get at them. 5 * marked non-static so that assembler code can get at them.
6 */ 6 */
7 7
8#define MAX_PHYS_ADDRESS (1UL << 42UL) 8#define MAX_PHYS_ADDRESS (1UL << 41UL)
9#define KPTE_BITMAP_CHUNK_SZ (256UL * 1024UL * 1024UL) 9#define KPTE_BITMAP_CHUNK_SZ (256UL * 1024UL * 1024UL)
10#define KPTE_BITMAP_BYTES \ 10#define KPTE_BITMAP_BYTES \
11 ((MAX_PHYS_ADDRESS / KPTE_BITMAP_CHUNK_SZ) / 8) 11 ((MAX_PHYS_ADDRESS / KPTE_BITMAP_CHUNK_SZ) / 8)
12#define VALID_ADDR_BITMAP_CHUNK_SZ (4UL * 1024UL * 1024UL)
13#define VALID_ADDR_BITMAP_BYTES \
14 ((MAX_PHYS_ADDRESS / VALID_ADDR_BITMAP_CHUNK_SZ) / 8)
12 15
13extern unsigned long kern_linear_pte_xor[2]; 16extern unsigned long kern_linear_pte_xor[2];
14extern unsigned long kpte_linear_bitmap[KPTE_BITMAP_BYTES / sizeof(unsigned long)]; 17extern unsigned long kpte_linear_bitmap[KPTE_BITMAP_BYTES / sizeof(unsigned long)];