diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-04 11:24:47 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-04 11:24:47 -0500 |
commit | 6895210e89df20520916c94a4dc148a43229053e (patch) | |
tree | 60b137cccd4a57bb98bbfed55a42859e4b60c8db /arch/sparc | |
parent | 4c10c937cc2eb197db565392db91d429eec71176 (diff) | |
parent | 8a4fd1e4922413cfdfa6c51a59efb720d904a5eb (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: Make prom entry spinlock NMI safe.
sparc64: Kill off old sys_perfctr system call and state.
sparc: Update defconfigs.
sparc: Provide io{read,write}{16,32}be().
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/configs/sparc32_defconfig | 56 | ||||
-rw-r--r-- | arch/sparc/configs/sparc64_defconfig | 34 | ||||
-rw-r--r-- | arch/sparc/include/asm/io_32.h | 4 | ||||
-rw-r--r-- | arch/sparc/include/asm/io_64.h | 4 | ||||
-rw-r--r-- | arch/sparc/include/asm/perfctr.h | 4 | ||||
-rw-r--r-- | arch/sparc/include/asm/system_64.h | 15 | ||||
-rw-r--r-- | arch/sparc/include/asm/thread_info_64.h | 25 | ||||
-rw-r--r-- | arch/sparc/kernel/entry.h | 1 | ||||
-rw-r--r-- | arch/sparc/kernel/process_64.c | 23 | ||||
-rw-r--r-- | arch/sparc/kernel/rtrap_64.S | 54 | ||||
-rw-r--r-- | arch/sparc/kernel/sys32.S | 1 | ||||
-rw-r--r-- | arch/sparc/kernel/sys_sparc_64.c | 104 | ||||
-rw-r--r-- | arch/sparc/kernel/syscalls.S | 23 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls.h | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_64.S | 4 | ||||
-rw-r--r-- | arch/sparc/kernel/traps_64.c | 9 | ||||
-rw-r--r-- | arch/sparc/prom/p1275.c | 12 |
17 files changed, 99 insertions, 276 deletions
diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/sparc32_defconfig index 99a1f191497b..6a8d078070ca 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.33-rc2 | 3 | # Linux kernel version: 2.6.33 |
4 | # Mon Jan 11 23:20:31 2010 | 4 | # Wed Mar 3 02:52:23 2010 |
5 | # | 5 | # |
6 | # CONFIG_64BIT is not set | 6 | # CONFIG_64BIT is not set |
7 | CONFIG_SPARC=y | 7 | CONFIG_SPARC=y |
@@ -9,6 +9,8 @@ CONFIG_SPARC32=y | |||
9 | # CONFIG_SPARC64 is not set | 9 | # CONFIG_SPARC64 is not set |
10 | CONFIG_ARCH_DEFCONFIG="arch/sparc/configs/sparc32_defconfig" | 10 | CONFIG_ARCH_DEFCONFIG="arch/sparc/configs/sparc32_defconfig" |
11 | CONFIG_BITS=32 | 11 | CONFIG_BITS=32 |
12 | CONFIG_GENERIC_TIME=y | ||
13 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
12 | CONFIG_AUDIT_ARCH=y | 14 | CONFIG_AUDIT_ARCH=y |
13 | CONFIG_MMU=y | 15 | CONFIG_MMU=y |
14 | CONFIG_HIGHMEM=y | 16 | CONFIG_HIGHMEM=y |
@@ -48,11 +50,6 @@ CONFIG_RCU_FANOUT=32 | |||
48 | # CONFIG_TREE_RCU_TRACE is not set | 50 | # CONFIG_TREE_RCU_TRACE is not set |
49 | # CONFIG_IKCONFIG is not set | 51 | # CONFIG_IKCONFIG is not set |
50 | CONFIG_LOG_BUF_SHIFT=14 | 52 | CONFIG_LOG_BUF_SHIFT=14 |
51 | CONFIG_GROUP_SCHED=y | ||
52 | CONFIG_FAIR_GROUP_SCHED=y | ||
53 | CONFIG_RT_GROUP_SCHED=y | ||
54 | CONFIG_USER_SCHED=y | ||
55 | # CONFIG_CGROUP_SCHED is not set | ||
56 | # CONFIG_CGROUPS is not set | 53 | # CONFIG_CGROUPS is not set |
57 | CONFIG_SYSFS_DEPRECATED=y | 54 | CONFIG_SYSFS_DEPRECATED=y |
58 | CONFIG_SYSFS_DEPRECATED_V2=y | 55 | CONFIG_SYSFS_DEPRECATED_V2=y |
@@ -68,6 +65,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
68 | CONFIG_RD_GZIP=y | 65 | CONFIG_RD_GZIP=y |
69 | CONFIG_RD_BZIP2=y | 66 | CONFIG_RD_BZIP2=y |
70 | CONFIG_RD_LZMA=y | 67 | CONFIG_RD_LZMA=y |
68 | CONFIG_RD_LZO=y | ||
71 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 69 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
72 | CONFIG_SYSCTL=y | 70 | CONFIG_SYSCTL=y |
73 | CONFIG_ANON_INODES=y | 71 | CONFIG_ANON_INODES=y |
@@ -211,7 +209,6 @@ CONFIG_SBUSCHAR=y | |||
211 | CONFIG_PCI=y | 209 | CONFIG_PCI=y |
212 | CONFIG_PCI_SYSCALL=y | 210 | CONFIG_PCI_SYSCALL=y |
213 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 211 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
214 | CONFIG_PCI_LEGACY=y | ||
215 | # CONFIG_PCI_DEBUG is not set | 212 | # CONFIG_PCI_DEBUG is not set |
216 | # CONFIG_PCI_STUB is not set | 213 | # CONFIG_PCI_STUB is not set |
217 | # CONFIG_PCI_IOV is not set | 214 | # CONFIG_PCI_IOV is not set |
@@ -232,7 +229,6 @@ CONFIG_NET=y | |||
232 | # Networking options | 229 | # Networking options |
233 | # | 230 | # |
234 | CONFIG_PACKET=y | 231 | CONFIG_PACKET=y |
235 | # CONFIG_PACKET_MMAP is not set | ||
236 | CONFIG_UNIX=y | 232 | CONFIG_UNIX=y |
237 | CONFIG_XFRM=y | 233 | CONFIG_XFRM=y |
238 | CONFIG_XFRM_USER=m | 234 | CONFIG_XFRM_USER=m |
@@ -379,11 +375,13 @@ CONFIG_MISC_DEVICES=y | |||
379 | # CONFIG_TIFM_CORE is not set | 375 | # CONFIG_TIFM_CORE is not set |
380 | # CONFIG_ENCLOSURE_SERVICES is not set | 376 | # CONFIG_ENCLOSURE_SERVICES is not set |
381 | # CONFIG_HP_ILO is not set | 377 | # CONFIG_HP_ILO is not set |
378 | # CONFIG_TI_DAC7512 is not set | ||
382 | # CONFIG_C2PORT is not set | 379 | # CONFIG_C2PORT is not set |
383 | 380 | ||
384 | # | 381 | # |
385 | # EEPROM support | 382 | # EEPROM support |
386 | # | 383 | # |
384 | # CONFIG_EEPROM_AT25 is not set | ||
387 | # CONFIG_EEPROM_93CX6 is not set | 385 | # CONFIG_EEPROM_93CX6 is not set |
388 | # CONFIG_CB710_CORE is not set | 386 | # CONFIG_CB710_CORE is not set |
389 | CONFIG_HAVE_IDE=y | 387 | CONFIG_HAVE_IDE=y |
@@ -507,7 +505,9 @@ CONFIG_SUNQE=m | |||
507 | # CONFIG_SUNGEM is not set | 505 | # CONFIG_SUNGEM is not set |
508 | # CONFIG_CASSINI is not set | 506 | # CONFIG_CASSINI is not set |
509 | # CONFIG_NET_VENDOR_3COM is not set | 507 | # CONFIG_NET_VENDOR_3COM is not set |
508 | # CONFIG_ENC28J60 is not set | ||
510 | # CONFIG_ETHOC is not set | 509 | # CONFIG_ETHOC is not set |
510 | # CONFIG_GRETH is not set | ||
511 | # CONFIG_DNET is not set | 511 | # CONFIG_DNET is not set |
512 | # CONFIG_NET_TULIP is not set | 512 | # CONFIG_NET_TULIP is not set |
513 | # CONFIG_HP100 is not set | 513 | # CONFIG_HP100 is not set |
@@ -521,6 +521,7 @@ CONFIG_SUNQE=m | |||
521 | # CONFIG_NET_PCI is not set | 521 | # CONFIG_NET_PCI is not set |
522 | # CONFIG_B44 is not set | 522 | # CONFIG_B44 is not set |
523 | # CONFIG_KS8842 is not set | 523 | # CONFIG_KS8842 is not set |
524 | # CONFIG_KS8851 is not set | ||
524 | # CONFIG_KS8851_MLL is not set | 525 | # CONFIG_KS8851_MLL is not set |
525 | # CONFIG_ATL2 is not set | 526 | # CONFIG_ATL2 is not set |
526 | CONFIG_NETDEV_1000=y | 527 | CONFIG_NETDEV_1000=y |
@@ -563,6 +564,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
563 | # CONFIG_MLX4_CORE is not set | 564 | # CONFIG_MLX4_CORE is not set |
564 | # CONFIG_TEHUTI is not set | 565 | # CONFIG_TEHUTI is not set |
565 | # CONFIG_BNX2X is not set | 566 | # CONFIG_BNX2X is not set |
567 | # CONFIG_QLCNIC is not set | ||
566 | # CONFIG_QLGE is not set | 568 | # CONFIG_QLGE is not set |
567 | # CONFIG_SFC is not set | 569 | # CONFIG_SFC is not set |
568 | # CONFIG_BE2NET is not set | 570 | # CONFIG_BE2NET is not set |
@@ -665,6 +667,7 @@ CONFIG_DEVKMEM=y | |||
665 | # | 667 | # |
666 | # Non-8250 serial port support | 668 | # Non-8250 serial port support |
667 | # | 669 | # |
670 | # CONFIG_SERIAL_MAX3100 is not set | ||
668 | CONFIG_SERIAL_SUNCORE=y | 671 | CONFIG_SERIAL_SUNCORE=y |
669 | CONFIG_SERIAL_SUNZILOG=y | 672 | CONFIG_SERIAL_SUNZILOG=y |
670 | CONFIG_SERIAL_SUNZILOG_CONSOLE=y | 673 | CONFIG_SERIAL_SUNZILOG_CONSOLE=y |
@@ -689,7 +692,23 @@ CONFIG_HW_RANDOM=m | |||
689 | # CONFIG_TCG_TPM is not set | 692 | # CONFIG_TCG_TPM is not set |
690 | CONFIG_DEVPORT=y | 693 | CONFIG_DEVPORT=y |
691 | # CONFIG_I2C is not set | 694 | # CONFIG_I2C is not set |
692 | # CONFIG_SPI is not set | 695 | CONFIG_SPI=y |
696 | # CONFIG_SPI_DEBUG is not set | ||
697 | CONFIG_SPI_MASTER=y | ||
698 | |||
699 | # | ||
700 | # SPI Master Controller Drivers | ||
701 | # | ||
702 | CONFIG_SPI_BITBANG=m | ||
703 | CONFIG_SPI_XILINX=m | ||
704 | CONFIG_SPI_XILINX_PLTFM=m | ||
705 | # CONFIG_SPI_DESIGNWARE is not set | ||
706 | |||
707 | # | ||
708 | # SPI Protocol Masters | ||
709 | # | ||
710 | # CONFIG_SPI_SPIDEV is not set | ||
711 | # CONFIG_SPI_TLE62X0 is not set | ||
693 | 712 | ||
694 | # | 713 | # |
695 | # PPS support | 714 | # PPS support |
@@ -706,10 +725,13 @@ CONFIG_HWMON=y | |||
706 | # | 725 | # |
707 | # Native drivers | 726 | # Native drivers |
708 | # | 727 | # |
728 | # CONFIG_SENSORS_ADCXX is not set | ||
709 | # CONFIG_SENSORS_I5K_AMB is not set | 729 | # CONFIG_SENSORS_I5K_AMB is not set |
710 | # CONFIG_SENSORS_F71805F is not set | 730 | # CONFIG_SENSORS_F71805F is not set |
711 | # CONFIG_SENSORS_F71882FG is not set | 731 | # CONFIG_SENSORS_F71882FG is not set |
712 | # CONFIG_SENSORS_IT87 is not set | 732 | # CONFIG_SENSORS_IT87 is not set |
733 | # CONFIG_SENSORS_LM70 is not set | ||
734 | # CONFIG_SENSORS_MAX1111 is not set | ||
713 | # CONFIG_SENSORS_PC87360 is not set | 735 | # CONFIG_SENSORS_PC87360 is not set |
714 | # CONFIG_SENSORS_PC87427 is not set | 736 | # CONFIG_SENSORS_PC87427 is not set |
715 | # CONFIG_SENSORS_SIS5595 is not set | 737 | # CONFIG_SENSORS_SIS5595 is not set |
@@ -720,6 +742,7 @@ CONFIG_HWMON=y | |||
720 | # CONFIG_SENSORS_VT8231 is not set | 742 | # CONFIG_SENSORS_VT8231 is not set |
721 | # CONFIG_SENSORS_W83627HF is not set | 743 | # CONFIG_SENSORS_W83627HF is not set |
722 | # CONFIG_SENSORS_W83627EHF is not set | 744 | # CONFIG_SENSORS_W83627EHF is not set |
745 | # CONFIG_SENSORS_LIS3_SPI is not set | ||
723 | # CONFIG_THERMAL is not set | 746 | # CONFIG_THERMAL is not set |
724 | # CONFIG_WATCHDOG is not set | 747 | # CONFIG_WATCHDOG is not set |
725 | CONFIG_SSB_POSSIBLE=y | 748 | CONFIG_SSB_POSSIBLE=y |
@@ -736,6 +759,8 @@ CONFIG_SSB_POSSIBLE=y | |||
736 | # CONFIG_MFD_SM501 is not set | 759 | # CONFIG_MFD_SM501 is not set |
737 | # CONFIG_HTC_PASIC3 is not set | 760 | # CONFIG_HTC_PASIC3 is not set |
738 | # CONFIG_MFD_TMIO is not set | 761 | # CONFIG_MFD_TMIO is not set |
762 | # CONFIG_MFD_MC13783 is not set | ||
763 | # CONFIG_AB4500_CORE is not set | ||
739 | # CONFIG_REGULATOR is not set | 764 | # CONFIG_REGULATOR is not set |
740 | # CONFIG_MEDIA_SUPPORT is not set | 765 | # CONFIG_MEDIA_SUPPORT is not set |
741 | 766 | ||
@@ -743,6 +768,7 @@ CONFIG_SSB_POSSIBLE=y | |||
743 | # Graphics support | 768 | # Graphics support |
744 | # | 769 | # |
745 | CONFIG_VGA_ARB=y | 770 | CONFIG_VGA_ARB=y |
771 | CONFIG_VGA_ARB_MAX_GPUS=16 | ||
746 | # CONFIG_VGASTATE is not set | 772 | # CONFIG_VGASTATE is not set |
747 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 773 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
748 | # CONFIG_FB is not set | 774 | # CONFIG_FB is not set |
@@ -808,6 +834,14 @@ CONFIG_RTC_INTF_DEV=y | |||
808 | # | 834 | # |
809 | # SPI RTC drivers | 835 | # SPI RTC drivers |
810 | # | 836 | # |
837 | # CONFIG_RTC_DRV_M41T94 is not set | ||
838 | # CONFIG_RTC_DRV_DS1305 is not set | ||
839 | # CONFIG_RTC_DRV_DS1390 is not set | ||
840 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
841 | # CONFIG_RTC_DRV_R9701 is not set | ||
842 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
843 | # CONFIG_RTC_DRV_DS3234 is not set | ||
844 | # CONFIG_RTC_DRV_PCF2123 is not set | ||
811 | 845 | ||
812 | # | 846 | # |
813 | # Platform RTC drivers | 847 | # Platform RTC drivers |
@@ -1180,9 +1214,11 @@ CONFIG_CRC32=y | |||
1180 | CONFIG_LIBCRC32C=m | 1214 | CONFIG_LIBCRC32C=m |
1181 | CONFIG_ZLIB_INFLATE=y | 1215 | CONFIG_ZLIB_INFLATE=y |
1182 | CONFIG_ZLIB_DEFLATE=y | 1216 | CONFIG_ZLIB_DEFLATE=y |
1217 | CONFIG_LZO_DECOMPRESS=y | ||
1183 | CONFIG_DECOMPRESS_GZIP=y | 1218 | CONFIG_DECOMPRESS_GZIP=y |
1184 | CONFIG_DECOMPRESS_BZIP2=y | 1219 | CONFIG_DECOMPRESS_BZIP2=y |
1185 | CONFIG_DECOMPRESS_LZMA=y | 1220 | CONFIG_DECOMPRESS_LZMA=y |
1221 | CONFIG_DECOMPRESS_LZO=y | ||
1186 | CONFIG_HAS_IOMEM=y | 1222 | CONFIG_HAS_IOMEM=y |
1187 | CONFIG_HAS_IOPORT=y | 1223 | CONFIG_HAS_IOPORT=y |
1188 | CONFIG_HAS_DMA=y | 1224 | CONFIG_HAS_DMA=y |
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig index 41c5a56aa6f2..56e3163673e3 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.33-rc2 | 3 | # Linux kernel version: 2.6.33 |
4 | # Wed Jan 20 16:31:47 2010 | 4 | # Wed Mar 3 02:54:29 2010 |
5 | # | 5 | # |
6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
7 | CONFIG_SPARC=y | 7 | CONFIG_SPARC=y |
@@ -55,14 +55,10 @@ CONFIG_TREE_RCU=y | |||
55 | # CONFIG_RCU_TRACE is not set | 55 | # CONFIG_RCU_TRACE is not set |
56 | CONFIG_RCU_FANOUT=64 | 56 | CONFIG_RCU_FANOUT=64 |
57 | # CONFIG_RCU_FANOUT_EXACT is not set | 57 | # CONFIG_RCU_FANOUT_EXACT is not set |
58 | # CONFIG_RCU_FAST_NO_HZ is not set | ||
58 | # CONFIG_TREE_RCU_TRACE is not set | 59 | # CONFIG_TREE_RCU_TRACE is not set |
59 | # CONFIG_IKCONFIG is not set | 60 | # CONFIG_IKCONFIG is not set |
60 | CONFIG_LOG_BUF_SHIFT=18 | 61 | CONFIG_LOG_BUF_SHIFT=18 |
61 | CONFIG_GROUP_SCHED=y | ||
62 | CONFIG_FAIR_GROUP_SCHED=y | ||
63 | CONFIG_RT_GROUP_SCHED=y | ||
64 | CONFIG_USER_SCHED=y | ||
65 | # CONFIG_CGROUP_SCHED is not set | ||
66 | # CONFIG_CGROUPS is not set | 62 | # CONFIG_CGROUPS is not set |
67 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | 63 | # CONFIG_SYSFS_DEPRECATED_V2 is not set |
68 | CONFIG_RELAY=y | 64 | CONFIG_RELAY=y |
@@ -77,6 +73,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
77 | CONFIG_RD_GZIP=y | 73 | CONFIG_RD_GZIP=y |
78 | CONFIG_RD_BZIP2=y | 74 | CONFIG_RD_BZIP2=y |
79 | CONFIG_RD_LZMA=y | 75 | CONFIG_RD_LZMA=y |
76 | CONFIG_RD_LZO=y | ||
80 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 77 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
81 | CONFIG_SYSCTL=y | 78 | CONFIG_SYSCTL=y |
82 | CONFIG_ANON_INODES=y | 79 | CONFIG_ANON_INODES=y |
@@ -105,7 +102,6 @@ CONFIG_PERF_USE_VMALLOC=y | |||
105 | # Kernel Performance Events And Counters | 102 | # Kernel Performance Events And Counters |
106 | # | 103 | # |
107 | CONFIG_PERF_EVENTS=y | 104 | CONFIG_PERF_EVENTS=y |
108 | CONFIG_EVENT_PROFILE=y | ||
109 | CONFIG_PERF_COUNTERS=y | 105 | CONFIG_PERF_COUNTERS=y |
110 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set | 106 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set |
111 | CONFIG_VM_EVENT_COUNTERS=y | 107 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -266,7 +262,6 @@ CONFIG_PCI_DOMAINS=y | |||
266 | CONFIG_PCI_SYSCALL=y | 262 | CONFIG_PCI_SYSCALL=y |
267 | CONFIG_ARCH_SUPPORTS_MSI=y | 263 | CONFIG_ARCH_SUPPORTS_MSI=y |
268 | CONFIG_PCI_MSI=y | 264 | CONFIG_PCI_MSI=y |
269 | # CONFIG_PCI_LEGACY is not set | ||
270 | # CONFIG_PCI_DEBUG is not set | 265 | # CONFIG_PCI_DEBUG is not set |
271 | # CONFIG_PCI_STUB is not set | 266 | # CONFIG_PCI_STUB is not set |
272 | # CONFIG_PCI_IOV is not set | 267 | # CONFIG_PCI_IOV is not set |
@@ -290,7 +285,6 @@ CONFIG_NET=y | |||
290 | # Networking options | 285 | # Networking options |
291 | # | 286 | # |
292 | CONFIG_PACKET=y | 287 | CONFIG_PACKET=y |
293 | CONFIG_PACKET_MMAP=y | ||
294 | CONFIG_UNIX=y | 288 | CONFIG_UNIX=y |
295 | CONFIG_XFRM=y | 289 | CONFIG_XFRM=y |
296 | CONFIG_XFRM_USER=m | 290 | CONFIG_XFRM_USER=m |
@@ -425,10 +419,6 @@ CONFIG_BLK_DEV=y | |||
425 | # CONFIG_BLK_DEV_COW_COMMON is not set | 419 | # CONFIG_BLK_DEV_COW_COMMON is not set |
426 | CONFIG_BLK_DEV_LOOP=m | 420 | CONFIG_BLK_DEV_LOOP=m |
427 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 421 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
428 | |||
429 | # | ||
430 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
431 | # | ||
432 | # CONFIG_BLK_DEV_DRBD is not set | 422 | # CONFIG_BLK_DEV_DRBD is not set |
433 | CONFIG_BLK_DEV_NBD=m | 423 | CONFIG_BLK_DEV_NBD=m |
434 | # CONFIG_BLK_DEV_SX8 is not set | 424 | # CONFIG_BLK_DEV_SX8 is not set |
@@ -677,6 +667,7 @@ CONFIG_SUNGEM=m | |||
677 | CONFIG_SUNVNET=m | 667 | CONFIG_SUNVNET=m |
678 | # CONFIG_NET_VENDOR_3COM is not set | 668 | # CONFIG_NET_VENDOR_3COM is not set |
679 | # CONFIG_ETHOC is not set | 669 | # CONFIG_ETHOC is not set |
670 | # CONFIG_GRETH is not set | ||
680 | # CONFIG_DNET is not set | 671 | # CONFIG_DNET is not set |
681 | # CONFIG_NET_TULIP is not set | 672 | # CONFIG_NET_TULIP is not set |
682 | # CONFIG_HP100 is not set | 673 | # CONFIG_HP100 is not set |
@@ -691,6 +682,7 @@ CONFIG_NET_PCI=y | |||
691 | # CONFIG_PCNET32 is not set | 682 | # CONFIG_PCNET32 is not set |
692 | # CONFIG_AMD8111_ETH is not set | 683 | # CONFIG_AMD8111_ETH is not set |
693 | # CONFIG_ADAPTEC_STARFIRE is not set | 684 | # CONFIG_ADAPTEC_STARFIRE is not set |
685 | # CONFIG_KSZ884X_PCI is not set | ||
694 | # CONFIG_B44 is not set | 686 | # CONFIG_B44 is not set |
695 | # CONFIG_FORCEDETH is not set | 687 | # CONFIG_FORCEDETH is not set |
696 | # CONFIG_E100 is not set | 688 | # CONFIG_E100 is not set |
@@ -741,6 +733,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
741 | # CONFIG_CHELSIO_T3 is not set | 733 | # CONFIG_CHELSIO_T3 is not set |
742 | # CONFIG_ENIC is not set | 734 | # CONFIG_ENIC is not set |
743 | # CONFIG_IXGBE is not set | 735 | # CONFIG_IXGBE is not set |
736 | # CONFIG_IXGBEVF is not set | ||
744 | # CONFIG_IXGB is not set | 737 | # CONFIG_IXGB is not set |
745 | # CONFIG_S2IO is not set | 738 | # CONFIG_S2IO is not set |
746 | # CONFIG_VXGE is not set | 739 | # CONFIG_VXGE is not set |
@@ -751,6 +744,7 @@ CONFIG_NIU=m | |||
751 | # CONFIG_MLX4_CORE is not set | 744 | # CONFIG_MLX4_CORE is not set |
752 | # CONFIG_TEHUTI is not set | 745 | # CONFIG_TEHUTI is not set |
753 | # CONFIG_BNX2X is not set | 746 | # CONFIG_BNX2X is not set |
747 | # CONFIG_QLCNIC is not set | ||
754 | # CONFIG_QLGE is not set | 748 | # CONFIG_QLGE is not set |
755 | # CONFIG_SFC is not set | 749 | # CONFIG_SFC is not set |
756 | # CONFIG_BE2NET is not set | 750 | # CONFIG_BE2NET is not set |
@@ -1028,6 +1022,7 @@ CONFIG_HWMON=y | |||
1028 | # CONFIG_SENSORS_SMSC47M192 is not set | 1022 | # CONFIG_SENSORS_SMSC47M192 is not set |
1029 | # CONFIG_SENSORS_SMSC47B397 is not set | 1023 | # CONFIG_SENSORS_SMSC47B397 is not set |
1030 | # CONFIG_SENSORS_ADS7828 is not set | 1024 | # CONFIG_SENSORS_ADS7828 is not set |
1025 | # CONFIG_SENSORS_AMC6821 is not set | ||
1031 | # CONFIG_SENSORS_THMC50 is not set | 1026 | # CONFIG_SENSORS_THMC50 is not set |
1032 | # CONFIG_SENSORS_TMP401 is not set | 1027 | # CONFIG_SENSORS_TMP401 is not set |
1033 | # CONFIG_SENSORS_TMP421 is not set | 1028 | # CONFIG_SENSORS_TMP421 is not set |
@@ -1076,6 +1071,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1076 | # Graphics support | 1071 | # Graphics support |
1077 | # | 1072 | # |
1078 | CONFIG_VGA_ARB=y | 1073 | CONFIG_VGA_ARB=y |
1074 | CONFIG_VGA_ARB_MAX_GPUS=16 | ||
1079 | # CONFIG_DRM is not set | 1075 | # CONFIG_DRM is not set |
1080 | # CONFIG_VGASTATE is not set | 1076 | # CONFIG_VGASTATE is not set |
1081 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 1077 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
@@ -1279,6 +1275,7 @@ CONFIG_SND_ALI5451=m | |||
1279 | # CONFIG_SND_YMFPCI is not set | 1275 | # CONFIG_SND_YMFPCI is not set |
1280 | CONFIG_SND_USB=y | 1276 | CONFIG_SND_USB=y |
1281 | # CONFIG_SND_USB_AUDIO is not set | 1277 | # CONFIG_SND_USB_AUDIO is not set |
1278 | # CONFIG_SND_USB_UA101 is not set | ||
1282 | # CONFIG_SND_USB_CAIAQ is not set | 1279 | # CONFIG_SND_USB_CAIAQ is not set |
1283 | CONFIG_SND_SPARC=y | 1280 | CONFIG_SND_SPARC=y |
1284 | # CONFIG_SND_SUN_AMD7930 is not set | 1281 | # CONFIG_SND_SUN_AMD7930 is not set |
@@ -1301,6 +1298,7 @@ CONFIG_USB_HIDDEV=y | |||
1301 | # | 1298 | # |
1302 | # Special HID drivers | 1299 | # Special HID drivers |
1303 | # | 1300 | # |
1301 | # CONFIG_HID_3M_PCT is not set | ||
1304 | CONFIG_HID_A4TECH=y | 1302 | CONFIG_HID_A4TECH=y |
1305 | CONFIG_HID_APPLE=y | 1303 | CONFIG_HID_APPLE=y |
1306 | CONFIG_HID_BELKIN=y | 1304 | CONFIG_HID_BELKIN=y |
@@ -1317,14 +1315,19 @@ CONFIG_HID_KENSINGTON=y | |||
1317 | CONFIG_HID_LOGITECH=y | 1315 | CONFIG_HID_LOGITECH=y |
1318 | # CONFIG_LOGITECH_FF is not set | 1316 | # CONFIG_LOGITECH_FF is not set |
1319 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 1317 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
1318 | # CONFIG_LOGIG940_FF is not set | ||
1320 | CONFIG_HID_MICROSOFT=y | 1319 | CONFIG_HID_MICROSOFT=y |
1320 | # CONFIG_HID_MOSART is not set | ||
1321 | CONFIG_HID_MONTEREY=y | 1321 | CONFIG_HID_MONTEREY=y |
1322 | CONFIG_HID_NTRIG=y | 1322 | CONFIG_HID_NTRIG=y |
1323 | CONFIG_HID_ORTEK=y | ||
1323 | CONFIG_HID_PANTHERLORD=y | 1324 | CONFIG_HID_PANTHERLORD=y |
1324 | # CONFIG_PANTHERLORD_FF is not set | 1325 | # CONFIG_PANTHERLORD_FF is not set |
1325 | CONFIG_HID_PETALYNX=y | 1326 | CONFIG_HID_PETALYNX=y |
1327 | # CONFIG_HID_QUANTA is not set | ||
1326 | CONFIG_HID_SAMSUNG=y | 1328 | CONFIG_HID_SAMSUNG=y |
1327 | CONFIG_HID_SONY=y | 1329 | CONFIG_HID_SONY=y |
1330 | # CONFIG_HID_STANTUM is not set | ||
1328 | CONFIG_HID_SUNPLUS=y | 1331 | CONFIG_HID_SUNPLUS=y |
1329 | CONFIG_HID_GREENASIA=y | 1332 | CONFIG_HID_GREENASIA=y |
1330 | # CONFIG_GREENASIA_FF is not set | 1333 | # CONFIG_GREENASIA_FF is not set |
@@ -1807,6 +1810,7 @@ CONFIG_CRYPTO_MANAGER=y | |||
1807 | CONFIG_CRYPTO_MANAGER2=y | 1810 | CONFIG_CRYPTO_MANAGER2=y |
1808 | CONFIG_CRYPTO_GF128MUL=m | 1811 | CONFIG_CRYPTO_GF128MUL=m |
1809 | CONFIG_CRYPTO_NULL=m | 1812 | CONFIG_CRYPTO_NULL=m |
1813 | # CONFIG_CRYPTO_PCRYPT is not set | ||
1810 | CONFIG_CRYPTO_WORKQUEUE=y | 1814 | CONFIG_CRYPTO_WORKQUEUE=y |
1811 | # CONFIG_CRYPTO_CRYPTD is not set | 1815 | # CONFIG_CRYPTO_CRYPTD is not set |
1812 | CONFIG_CRYPTO_AUTHENC=y | 1816 | CONFIG_CRYPTO_AUTHENC=y |
@@ -1904,9 +1908,11 @@ CONFIG_CRC32=y | |||
1904 | CONFIG_LIBCRC32C=m | 1908 | CONFIG_LIBCRC32C=m |
1905 | CONFIG_ZLIB_INFLATE=y | 1909 | CONFIG_ZLIB_INFLATE=y |
1906 | CONFIG_ZLIB_DEFLATE=y | 1910 | CONFIG_ZLIB_DEFLATE=y |
1911 | CONFIG_LZO_DECOMPRESS=y | ||
1907 | CONFIG_DECOMPRESS_GZIP=y | 1912 | CONFIG_DECOMPRESS_GZIP=y |
1908 | CONFIG_DECOMPRESS_BZIP2=y | 1913 | CONFIG_DECOMPRESS_BZIP2=y |
1909 | CONFIG_DECOMPRESS_LZMA=y | 1914 | CONFIG_DECOMPRESS_LZMA=y |
1915 | CONFIG_DECOMPRESS_LZO=y | ||
1910 | CONFIG_HAS_IOMEM=y | 1916 | CONFIG_HAS_IOMEM=y |
1911 | CONFIG_HAS_IOPORT=y | 1917 | CONFIG_HAS_IOPORT=y |
1912 | CONFIG_HAS_DMA=y | 1918 | CONFIG_HAS_DMA=y |
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h index 679c7504625a..2889574608db 100644 --- a/arch/sparc/include/asm/io_32.h +++ b/arch/sparc/include/asm/io_32.h | |||
@@ -249,10 +249,14 @@ extern void iounmap(volatile void __iomem *addr); | |||
249 | 249 | ||
250 | #define ioread8(X) readb(X) | 250 | #define ioread8(X) readb(X) |
251 | #define ioread16(X) readw(X) | 251 | #define ioread16(X) readw(X) |
252 | #define ioread16be(X) __raw_readw(X) | ||
252 | #define ioread32(X) readl(X) | 253 | #define ioread32(X) readl(X) |
254 | #define ioread32be(X) __raw_readl(X) | ||
253 | #define iowrite8(val,X) writeb(val,X) | 255 | #define iowrite8(val,X) writeb(val,X) |
254 | #define iowrite16(val,X) writew(val,X) | 256 | #define iowrite16(val,X) writew(val,X) |
257 | #define iowrite16be(val,X) __raw_writew(val,X) | ||
255 | #define iowrite32(val,X) writel(val,X) | 258 | #define iowrite32(val,X) writel(val,X) |
259 | #define iowrite32be(val,X) __raw_writel(val,X) | ||
256 | 260 | ||
257 | static inline void ioread8_rep(void __iomem *port, void *buf, unsigned long count) | 261 | static inline void ioread8_rep(void __iomem *port, void *buf, unsigned long count) |
258 | { | 262 | { |
diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h index 4aee21dc9c6f..9517d063c79c 100644 --- a/arch/sparc/include/asm/io_64.h +++ b/arch/sparc/include/asm/io_64.h | |||
@@ -468,10 +468,14 @@ static inline void iounmap(volatile void __iomem *addr) | |||
468 | 468 | ||
469 | #define ioread8(X) readb(X) | 469 | #define ioread8(X) readb(X) |
470 | #define ioread16(X) readw(X) | 470 | #define ioread16(X) readw(X) |
471 | #define ioread16be(X) __raw_readw(X) | ||
471 | #define ioread32(X) readl(X) | 472 | #define ioread32(X) readl(X) |
473 | #define ioread32be(X) __raw_readl(X) | ||
472 | #define iowrite8(val,X) writeb(val,X) | 474 | #define iowrite8(val,X) writeb(val,X) |
473 | #define iowrite16(val,X) writew(val,X) | 475 | #define iowrite16(val,X) writew(val,X) |
476 | #define iowrite16be(val,X) __raw_writew(val,X) | ||
474 | #define iowrite32(val,X) writel(val,X) | 477 | #define iowrite32(val,X) writel(val,X) |
478 | #define iowrite32be(val,X) __raw_writel(val,X) | ||
475 | 479 | ||
476 | /* Create a virtual mapping cookie for an IO port range */ | 480 | /* Create a virtual mapping cookie for an IO port range */ |
477 | extern void __iomem *ioport_map(unsigned long port, unsigned int nr); | 481 | extern void __iomem *ioport_map(unsigned long port, unsigned int nr); |
diff --git a/arch/sparc/include/asm/perfctr.h b/arch/sparc/include/asm/perfctr.h index 836873002b75..8d8720a8770d 100644 --- a/arch/sparc/include/asm/perfctr.h +++ b/arch/sparc/include/asm/perfctr.h | |||
@@ -10,8 +10,8 @@ | |||
10 | * from enumeration below. The meaning of further arguments | 10 | * from enumeration below. The meaning of further arguments |
11 | * are determined by the operation code. | 11 | * are determined by the operation code. |
12 | * | 12 | * |
13 | * int sys_perfctr(int opcode, unsigned long arg0, | 13 | * NOTE: This system call is no longer provided, use the perf_events |
14 | * unsigned long arg1, unsigned long arg2) | 14 | * infrastructure. |
15 | * | 15 | * |
16 | * Pointers which are passed by the user are pointers to 64-bit | 16 | * Pointers which are passed by the user are pointers to 64-bit |
17 | * integers. | 17 | * integers. |
diff --git a/arch/sparc/include/asm/system_64.h b/arch/sparc/include/asm/system_64.h index d47a98e66972..d24cfe16afc1 100644 --- a/arch/sparc/include/asm/system_64.h +++ b/arch/sparc/include/asm/system_64.h | |||
@@ -143,15 +143,7 @@ do { \ | |||
143 | * and 2 stores in this critical code path. -DaveM | 143 | * and 2 stores in this critical code path. -DaveM |
144 | */ | 144 | */ |
145 | #define switch_to(prev, next, last) \ | 145 | #define switch_to(prev, next, last) \ |
146 | do { if (test_thread_flag(TIF_PERFCTR)) { \ | 146 | do { flush_tlb_pending(); \ |
147 | unsigned long __tmp; \ | ||
148 | read_pcr(__tmp); \ | ||
149 | current_thread_info()->pcr_reg = __tmp; \ | ||
150 | read_pic(__tmp); \ | ||
151 | current_thread_info()->kernel_cntd0 += (unsigned int)(__tmp);\ | ||
152 | current_thread_info()->kernel_cntd1 += ((__tmp) >> 32); \ | ||
153 | } \ | ||
154 | flush_tlb_pending(); \ | ||
155 | save_and_clear_fpu(); \ | 147 | save_and_clear_fpu(); \ |
156 | /* If you are tempted to conditionalize the following */ \ | 148 | /* If you are tempted to conditionalize the following */ \ |
157 | /* so that ASI is only written if it changes, think again. */ \ | 149 | /* so that ASI is only written if it changes, think again. */ \ |
@@ -197,11 +189,6 @@ do { if (test_thread_flag(TIF_PERFCTR)) { \ | |||
197 | "l1", "l2", "l3", "l4", "l5", "l6", "l7", \ | 189 | "l1", "l2", "l3", "l4", "l5", "l6", "l7", \ |
198 | "i0", "i1", "i2", "i3", "i4", "i5", \ | 190 | "i0", "i1", "i2", "i3", "i4", "i5", \ |
199 | "o0", "o1", "o2", "o3", "o4", "o5", "o7"); \ | 191 | "o0", "o1", "o2", "o3", "o4", "o5", "o7"); \ |
200 | /* If you fuck with this, update ret_from_syscall code too. */ \ | ||
201 | if (test_thread_flag(TIF_PERFCTR)) { \ | ||
202 | write_pcr(current_thread_info()->pcr_reg); \ | ||
203 | reset_pic(); \ | ||
204 | } \ | ||
205 | } while(0) | 192 | } while(0) |
206 | 193 | ||
207 | static inline unsigned long xchg32(__volatile__ unsigned int *m, unsigned int val) | 194 | static inline unsigned long xchg32(__volatile__ unsigned int *m, unsigned int val) |
diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h index 39be9f256e5a..9e2d9447f2ad 100644 --- a/arch/sparc/include/asm/thread_info_64.h +++ b/arch/sparc/include/asm/thread_info_64.h | |||
@@ -58,11 +58,6 @@ struct thread_info { | |||
58 | unsigned long gsr[7]; | 58 | unsigned long gsr[7]; |
59 | unsigned long xfsr[7]; | 59 | unsigned long xfsr[7]; |
60 | 60 | ||
61 | __u64 __user *user_cntd0; | ||
62 | __u64 __user *user_cntd1; | ||
63 | __u64 kernel_cntd0, kernel_cntd1; | ||
64 | __u64 pcr_reg; | ||
65 | |||
66 | struct restart_block restart_block; | 61 | struct restart_block restart_block; |
67 | 62 | ||
68 | struct pt_regs *kern_una_regs; | 63 | struct pt_regs *kern_una_regs; |
@@ -96,15 +91,10 @@ struct thread_info { | |||
96 | #define TI_RWIN_SPTRS 0x000003c8 | 91 | #define TI_RWIN_SPTRS 0x000003c8 |
97 | #define TI_GSR 0x00000400 | 92 | #define TI_GSR 0x00000400 |
98 | #define TI_XFSR 0x00000438 | 93 | #define TI_XFSR 0x00000438 |
99 | #define TI_USER_CNTD0 0x00000470 | 94 | #define TI_RESTART_BLOCK 0x00000470 |
100 | #define TI_USER_CNTD1 0x00000478 | 95 | #define TI_KUNA_REGS 0x000004a0 |
101 | #define TI_KERN_CNTD0 0x00000480 | 96 | #define TI_KUNA_INSN 0x000004a8 |
102 | #define TI_KERN_CNTD1 0x00000488 | 97 | #define TI_FPREGS 0x000004c0 |
103 | #define TI_PCR 0x00000490 | ||
104 | #define TI_RESTART_BLOCK 0x00000498 | ||
105 | #define TI_KUNA_REGS 0x000004c8 | ||
106 | #define TI_KUNA_INSN 0x000004d0 | ||
107 | #define TI_FPREGS 0x00000500 | ||
108 | 98 | ||
109 | /* We embed this in the uppermost byte of thread_info->flags */ | 99 | /* We embed this in the uppermost byte of thread_info->flags */ |
110 | #define FAULT_CODE_WRITE 0x01 /* Write access, implies D-TLB */ | 100 | #define FAULT_CODE_WRITE 0x01 /* Write access, implies D-TLB */ |
@@ -199,7 +189,7 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
199 | * | 189 | * |
200 | * On trap return we need to test several values: | 190 | * On trap return we need to test several values: |
201 | * | 191 | * |
202 | * user: need_resched, notify_resume, sigpending, wsaved, perfctr | 192 | * user: need_resched, notify_resume, sigpending, wsaved |
203 | * kernel: fpdepth | 193 | * kernel: fpdepth |
204 | * | 194 | * |
205 | * So to check for work in the kernel case we simply load the fpdepth | 195 | * So to check for work in the kernel case we simply load the fpdepth |
@@ -220,7 +210,7 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
220 | #define TIF_NOTIFY_RESUME 1 /* callback before returning to user */ | 210 | #define TIF_NOTIFY_RESUME 1 /* callback before returning to user */ |
221 | #define TIF_SIGPENDING 2 /* signal pending */ | 211 | #define TIF_SIGPENDING 2 /* signal pending */ |
222 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ | 212 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ |
223 | #define TIF_PERFCTR 4 /* performance counters active */ | 213 | /* flag bit 4 is available */ |
224 | #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */ | 214 | #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */ |
225 | /* flag bit 6 is available */ | 215 | /* flag bit 6 is available */ |
226 | #define TIF_32BIT 7 /* 32-bit binary */ | 216 | #define TIF_32BIT 7 /* 32-bit binary */ |
@@ -241,7 +231,6 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
241 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 231 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
242 | #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) | 232 | #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) |
243 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) | 233 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) |
244 | #define _TIF_PERFCTR (1<<TIF_PERFCTR) | ||
245 | #define _TIF_UNALIGNED (1<<TIF_UNALIGNED) | 234 | #define _TIF_UNALIGNED (1<<TIF_UNALIGNED) |
246 | #define _TIF_32BIT (1<<TIF_32BIT) | 235 | #define _TIF_32BIT (1<<TIF_32BIT) |
247 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) | 236 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) |
@@ -252,7 +241,7 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
252 | 241 | ||
253 | #define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \ | 242 | #define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \ |
254 | _TIF_DO_NOTIFY_RESUME_MASK | \ | 243 | _TIF_DO_NOTIFY_RESUME_MASK | \ |
255 | _TIF_NEED_RESCHED | _TIF_PERFCTR) | 244 | _TIF_NEED_RESCHED) |
256 | #define _TIF_DO_NOTIFY_RESUME_MASK (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING) | 245 | #define _TIF_DO_NOTIFY_RESUME_MASK (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING) |
257 | 246 | ||
258 | /* | 247 | /* |
diff --git a/arch/sparc/kernel/entry.h b/arch/sparc/kernel/entry.h index 4f53a2395ac6..c011b932bb17 100644 --- a/arch/sparc/kernel/entry.h +++ b/arch/sparc/kernel/entry.h | |||
@@ -48,7 +48,6 @@ extern void __init boot_cpu_id_too_large(int cpu); | |||
48 | extern unsigned int dcache_parity_tl1_occurred; | 48 | extern unsigned int dcache_parity_tl1_occurred; |
49 | extern unsigned int icache_parity_tl1_occurred; | 49 | extern unsigned int icache_parity_tl1_occurred; |
50 | 50 | ||
51 | extern asmlinkage void update_perfctrs(void); | ||
52 | extern asmlinkage void sparc_breakpoint(struct pt_regs *regs); | 51 | extern asmlinkage void sparc_breakpoint(struct pt_regs *regs); |
53 | extern void timer_interrupt(int irq, struct pt_regs *regs); | 52 | extern void timer_interrupt(int irq, struct pt_regs *regs); |
54 | 53 | ||
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index cb70476bd8f5..a5cf3864b31f 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
@@ -352,12 +352,6 @@ void exit_thread(void) | |||
352 | else | 352 | else |
353 | t->utraps[0]--; | 353 | t->utraps[0]--; |
354 | } | 354 | } |
355 | |||
356 | if (test_and_clear_thread_flag(TIF_PERFCTR)) { | ||
357 | t->user_cntd0 = t->user_cntd1 = NULL; | ||
358 | t->pcr_reg = 0; | ||
359 | write_pcr(0); | ||
360 | } | ||
361 | } | 355 | } |
362 | 356 | ||
363 | void flush_thread(void) | 357 | void flush_thread(void) |
@@ -371,13 +365,6 @@ void flush_thread(void) | |||
371 | 365 | ||
372 | set_thread_wsaved(0); | 366 | set_thread_wsaved(0); |
373 | 367 | ||
374 | /* Turn off performance counters if on. */ | ||
375 | if (test_and_clear_thread_flag(TIF_PERFCTR)) { | ||
376 | t->user_cntd0 = t->user_cntd1 = NULL; | ||
377 | t->pcr_reg = 0; | ||
378 | write_pcr(0); | ||
379 | } | ||
380 | |||
381 | /* Clear FPU register state. */ | 368 | /* Clear FPU register state. */ |
382 | t->fpsaved[0] = 0; | 369 | t->fpsaved[0] = 0; |
383 | 370 | ||
@@ -591,16 +578,6 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
591 | t->kregs->u_regs[UREG_FP] = | 578 | t->kregs->u_regs[UREG_FP] = |
592 | ((unsigned long) child_sf) - STACK_BIAS; | 579 | ((unsigned long) child_sf) - STACK_BIAS; |
593 | 580 | ||
594 | /* Special case, if we are spawning a kernel thread from | ||
595 | * a userspace task (usermode helper, NFS or similar), we | ||
596 | * must disable performance counters in the child because | ||
597 | * the address space and protection realm are changing. | ||
598 | */ | ||
599 | if (t->flags & _TIF_PERFCTR) { | ||
600 | t->user_cntd0 = t->user_cntd1 = NULL; | ||
601 | t->pcr_reg = 0; | ||
602 | t->flags &= ~_TIF_PERFCTR; | ||
603 | } | ||
604 | t->flags |= ((long)ASI_P << TI_FLAG_CURRENT_DS_SHIFT); | 581 | t->flags |= ((long)ASI_P << TI_FLAG_CURRENT_DS_SHIFT); |
605 | t->kregs->u_regs[UREG_G6] = (unsigned long) t; | 582 | t->kregs->u_regs[UREG_G6] = (unsigned long) t; |
606 | t->kregs->u_regs[UREG_G4] = (unsigned long) t->task; | 583 | t->kregs->u_regs[UREG_G4] = (unsigned long) t->task; |
diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S index 1ddec403f512..83f1873c6c13 100644 --- a/arch/sparc/kernel/rtrap_64.S +++ b/arch/sparc/kernel/rtrap_64.S | |||
@@ -65,48 +65,6 @@ __handle_user_windows: | |||
65 | ba,pt %xcc, __handle_user_windows_continue | 65 | ba,pt %xcc, __handle_user_windows_continue |
66 | 66 | ||
67 | andn %l1, %l4, %l1 | 67 | andn %l1, %l4, %l1 |
68 | __handle_perfctrs: | ||
69 | call update_perfctrs | ||
70 | wrpr %g0, RTRAP_PSTATE, %pstate | ||
71 | wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate | ||
72 | ldub [%g6 + TI_WSAVED], %o2 | ||
73 | brz,pt %o2, 1f | ||
74 | nop | ||
75 | /* Redo userwin+sched+sig checks */ | ||
76 | call fault_in_user_windows | ||
77 | |||
78 | wrpr %g0, RTRAP_PSTATE, %pstate | ||
79 | wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate | ||
80 | ldx [%g6 + TI_FLAGS], %l0 | ||
81 | andcc %l0, _TIF_NEED_RESCHED, %g0 | ||
82 | be,pt %xcc, 1f | ||
83 | |||
84 | nop | ||
85 | call schedule | ||
86 | wrpr %g0, RTRAP_PSTATE, %pstate | ||
87 | wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate | ||
88 | ldx [%g6 + TI_FLAGS], %l0 | ||
89 | 1: andcc %l0, _TIF_DO_NOTIFY_RESUME_MASK, %g0 | ||
90 | |||
91 | be,pt %xcc, __handle_perfctrs_continue | ||
92 | sethi %hi(TSTATE_PEF), %o0 | ||
93 | mov %l5, %o1 | ||
94 | add %sp, PTREGS_OFF, %o0 | ||
95 | mov %l0, %o2 | ||
96 | call do_notify_resume | ||
97 | |||
98 | wrpr %g0, RTRAP_PSTATE, %pstate | ||
99 | wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate | ||
100 | /* Signal delivery can modify pt_regs tstate, so we must | ||
101 | * reload it. | ||
102 | */ | ||
103 | ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1 | ||
104 | sethi %hi(0xf << 20), %l4 | ||
105 | and %l1, %l4, %l4 | ||
106 | andn %l1, %l4, %l1 | ||
107 | ba,pt %xcc, __handle_perfctrs_continue | ||
108 | |||
109 | sethi %hi(TSTATE_PEF), %o0 | ||
110 | __handle_userfpu: | 68 | __handle_userfpu: |
111 | rd %fprs, %l5 | 69 | rd %fprs, %l5 |
112 | andcc %l5, FPRS_FEF, %g0 | 70 | andcc %l5, FPRS_FEF, %g0 |
@@ -191,9 +149,9 @@ rtrap_no_irq_enable: | |||
191 | * take until the next local IRQ before the signal/resched | 149 | * take until the next local IRQ before the signal/resched |
192 | * event would be handled. | 150 | * event would be handled. |
193 | * | 151 | * |
194 | * This also means that if we have to deal with performance | 152 | * This also means that if we have to deal with user |
195 | * counters or user windows, we have to redo all of these | 153 | * windows, we have to redo all of these sched+signal checks |
196 | * sched+signal checks with IRQs disabled. | 154 | * with IRQs disabled. |
197 | */ | 155 | */ |
198 | to_user: wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate | 156 | to_user: wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate |
199 | wrpr 0, %pil | 157 | wrpr 0, %pil |
@@ -214,12 +172,8 @@ __handle_signal_continue: | |||
214 | brnz,pn %o2, __handle_user_windows | 172 | brnz,pn %o2, __handle_user_windows |
215 | nop | 173 | nop |
216 | __handle_user_windows_continue: | 174 | __handle_user_windows_continue: |
217 | ldx [%g6 + TI_FLAGS], %l5 | ||
218 | andcc %l5, _TIF_PERFCTR, %g0 | ||
219 | sethi %hi(TSTATE_PEF), %o0 | 175 | sethi %hi(TSTATE_PEF), %o0 |
220 | bne,pn %xcc, __handle_perfctrs | 176 | andcc %l1, %o0, %g0 |
221 | __handle_perfctrs_continue: | ||
222 | andcc %l1, %o0, %g0 | ||
223 | 177 | ||
224 | /* This fpdepth clear is necessary for non-syscall rtraps only */ | 178 | /* This fpdepth clear is necessary for non-syscall rtraps only */ |
225 | user_nowork: | 179 | user_nowork: |
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S index e7061138c98a..46a76ba3fb4b 100644 --- a/arch/sparc/kernel/sys32.S +++ b/arch/sparc/kernel/sys32.S | |||
@@ -51,7 +51,6 @@ SIGN1(sys32_exit_group, sys_exit_group, %o0) | |||
51 | SIGN1(sys32_wait4, compat_sys_wait4, %o2) | 51 | SIGN1(sys32_wait4, compat_sys_wait4, %o2) |
52 | SIGN1(sys32_creat, sys_creat, %o1) | 52 | SIGN1(sys32_creat, sys_creat, %o1) |
53 | SIGN1(sys32_mknod, sys_mknod, %o1) | 53 | SIGN1(sys32_mknod, sys_mknod, %o1) |
54 | SIGN1(sys32_perfctr, sys_perfctr, %o0) | ||
55 | SIGN1(sys32_umount, sys_umount, %o1) | 54 | SIGN1(sys32_umount, sys_umount, %o1) |
56 | SIGN1(sys32_signal, sys_signal, %o0) | 55 | SIGN1(sys32_signal, sys_signal, %o0) |
57 | SIGN1(sys32_access, sys_access, %o1) | 56 | SIGN1(sys32_access, sys_access, %o1) |
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c index d77f54316948..cb1bef6f14b7 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c | |||
@@ -27,7 +27,6 @@ | |||
27 | 27 | ||
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | #include <asm/utrap.h> | 29 | #include <asm/utrap.h> |
30 | #include <asm/perfctr.h> | ||
31 | #include <asm/unistd.h> | 30 | #include <asm/unistd.h> |
32 | 31 | ||
33 | #include "entry.h" | 32 | #include "entry.h" |
@@ -766,109 +765,6 @@ SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act, | |||
766 | return ret; | 765 | return ret; |
767 | } | 766 | } |
768 | 767 | ||
769 | /* Invoked by rtrap code to update performance counters in | ||
770 | * user space. | ||
771 | */ | ||
772 | asmlinkage void update_perfctrs(void) | ||
773 | { | ||
774 | unsigned long pic, tmp; | ||
775 | |||
776 | read_pic(pic); | ||
777 | tmp = (current_thread_info()->kernel_cntd0 += (unsigned int)pic); | ||
778 | __put_user(tmp, current_thread_info()->user_cntd0); | ||
779 | tmp = (current_thread_info()->kernel_cntd1 += (pic >> 32)); | ||
780 | __put_user(tmp, current_thread_info()->user_cntd1); | ||
781 | reset_pic(); | ||
782 | } | ||
783 | |||
784 | SYSCALL_DEFINE4(perfctr, int, opcode, unsigned long, arg0, | ||
785 | unsigned long, arg1, unsigned long, arg2) | ||
786 | { | ||
787 | int err = 0; | ||
788 | |||
789 | switch(opcode) { | ||
790 | case PERFCTR_ON: | ||
791 | current_thread_info()->pcr_reg = arg2; | ||
792 | current_thread_info()->user_cntd0 = (u64 __user *) arg0; | ||
793 | current_thread_info()->user_cntd1 = (u64 __user *) arg1; | ||
794 | current_thread_info()->kernel_cntd0 = | ||
795 | current_thread_info()->kernel_cntd1 = 0; | ||
796 | write_pcr(arg2); | ||
797 | reset_pic(); | ||
798 | set_thread_flag(TIF_PERFCTR); | ||
799 | break; | ||
800 | |||
801 | case PERFCTR_OFF: | ||
802 | err = -EINVAL; | ||
803 | if (test_thread_flag(TIF_PERFCTR)) { | ||
804 | current_thread_info()->user_cntd0 = | ||
805 | current_thread_info()->user_cntd1 = NULL; | ||
806 | current_thread_info()->pcr_reg = 0; | ||
807 | write_pcr(0); | ||
808 | clear_thread_flag(TIF_PERFCTR); | ||
809 | err = 0; | ||
810 | } | ||
811 | break; | ||
812 | |||
813 | case PERFCTR_READ: { | ||
814 | unsigned long pic, tmp; | ||
815 | |||
816 | if (!test_thread_flag(TIF_PERFCTR)) { | ||
817 | err = -EINVAL; | ||
818 | break; | ||
819 | } | ||
820 | read_pic(pic); | ||
821 | tmp = (current_thread_info()->kernel_cntd0 += (unsigned int)pic); | ||
822 | err |= __put_user(tmp, current_thread_info()->user_cntd0); | ||
823 | tmp = (current_thread_info()->kernel_cntd1 += (pic >> 32)); | ||
824 | err |= __put_user(tmp, current_thread_info()->user_cntd1); | ||
825 | reset_pic(); | ||
826 | break; | ||
827 | } | ||
828 | |||
829 | case PERFCTR_CLRPIC: | ||
830 | if (!test_thread_flag(TIF_PERFCTR)) { | ||
831 | err = -EINVAL; | ||
832 | break; | ||
833 | } | ||
834 | current_thread_info()->kernel_cntd0 = | ||
835 | current_thread_info()->kernel_cntd1 = 0; | ||
836 | reset_pic(); | ||
837 | break; | ||
838 | |||
839 | case PERFCTR_SETPCR: { | ||
840 | u64 __user *user_pcr = (u64 __user *)arg0; | ||
841 | |||
842 | if (!test_thread_flag(TIF_PERFCTR)) { | ||
843 | err = -EINVAL; | ||
844 | break; | ||
845 | } | ||
846 | err |= __get_user(current_thread_info()->pcr_reg, user_pcr); | ||
847 | write_pcr(current_thread_info()->pcr_reg); | ||
848 | current_thread_info()->kernel_cntd0 = | ||
849 | current_thread_info()->kernel_cntd1 = 0; | ||
850 | reset_pic(); | ||
851 | break; | ||
852 | } | ||
853 | |||
854 | case PERFCTR_GETPCR: { | ||
855 | u64 __user *user_pcr = (u64 __user *)arg0; | ||
856 | |||
857 | if (!test_thread_flag(TIF_PERFCTR)) { | ||
858 | err = -EINVAL; | ||
859 | break; | ||
860 | } | ||
861 | err |= __put_user(current_thread_info()->pcr_reg, user_pcr); | ||
862 | break; | ||
863 | } | ||
864 | |||
865 | default: | ||
866 | err = -EINVAL; | ||
867 | break; | ||
868 | }; | ||
869 | return err; | ||
870 | } | ||
871 | |||
872 | /* | 768 | /* |
873 | * Do a system call from kernel instead of calling sys_execve so we | 769 | * Do a system call from kernel instead of calling sys_execve so we |
874 | * end up with proper pt_regs. | 770 | * end up with proper pt_regs. |
diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S index dc4a458f74dc..1d7e274f3f2b 100644 --- a/arch/sparc/kernel/syscalls.S +++ b/arch/sparc/kernel/syscalls.S | |||
@@ -110,31 +110,12 @@ sys_clone: | |||
110 | 110 | ||
111 | .globl ret_from_syscall | 111 | .globl ret_from_syscall |
112 | ret_from_syscall: | 112 | ret_from_syscall: |
113 | /* Clear current_thread_info()->new_child, and | 113 | /* Clear current_thread_info()->new_child. */ |
114 | * check performance counter stuff too. | ||
115 | */ | ||
116 | stb %g0, [%g6 + TI_NEW_CHILD] | 114 | stb %g0, [%g6 + TI_NEW_CHILD] |
117 | ldx [%g6 + TI_FLAGS], %l0 | 115 | ldx [%g6 + TI_FLAGS], %l0 |
118 | call schedule_tail | 116 | call schedule_tail |
119 | mov %g7, %o0 | 117 | mov %g7, %o0 |
120 | andcc %l0, _TIF_PERFCTR, %g0 | 118 | ba,pt %xcc, ret_sys_call |
121 | be,pt %icc, 1f | ||
122 | nop | ||
123 | ldx [%g6 + TI_PCR], %o7 | ||
124 | wr %g0, %o7, %pcr | ||
125 | |||
126 | /* Blackbird errata workaround. See commentary in | ||
127 | * smp.c:smp_percpu_timer_interrupt() for more | ||
128 | * information. | ||
129 | */ | ||
130 | ba,pt %xcc, 99f | ||
131 | nop | ||
132 | |||
133 | .align 64 | ||
134 | 99: wr %g0, %g0, %pic | ||
135 | rd %pic, %g0 | ||
136 | |||
137 | 1: ba,pt %xcc, ret_sys_call | ||
138 | ldx [%sp + PTREGS_OFF + PT_V9_I0], %o0 | 119 | ldx [%sp + PTREGS_OFF + PT_V9_I0], %o0 |
139 | 120 | ||
140 | .globl sparc_exit | 121 | .globl sparc_exit |
diff --git a/arch/sparc/kernel/systbls.h b/arch/sparc/kernel/systbls.h index d2f999ae2b85..68312fe8da74 100644 --- a/arch/sparc/kernel/systbls.h +++ b/arch/sparc/kernel/systbls.h | |||
@@ -36,8 +36,6 @@ extern asmlinkage long sys_rt_sigaction(int sig, | |||
36 | struct sigaction __user *oact, | 36 | struct sigaction __user *oact, |
37 | void __user *restorer, | 37 | void __user *restorer, |
38 | size_t sigsetsize); | 38 | size_t sigsetsize); |
39 | extern asmlinkage long sys_perfctr(int opcode, unsigned long arg0, | ||
40 | unsigned long arg1, unsigned long arg2); | ||
41 | 39 | ||
42 | extern asmlinkage void sparc64_set_context(struct pt_regs *regs); | 40 | extern asmlinkage void sparc64_set_context(struct pt_regs *regs); |
43 | extern asmlinkage void sparc64_get_context(struct pt_regs *regs); | 41 | extern asmlinkage void sparc64_get_context(struct pt_regs *regs); |
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index e575b46bd7a9..17614251fb6d 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S | |||
@@ -21,7 +21,7 @@ sys_call_table32: | |||
21 | /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write | 21 | /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write |
22 | /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link | 22 | /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link |
23 | /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod | 23 | /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod |
24 | /*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys32_perfctr, sys32_lseek | 24 | /*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys32_lseek |
25 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 | 25 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 |
26 | /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause | 26 | /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause |
27 | /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice | 27 | /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice |
@@ -96,7 +96,7 @@ sys_call_table: | |||
96 | /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write | 96 | /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write |
97 | /*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link | 97 | /*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link |
98 | /*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod | 98 | /*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod |
99 | /*15*/ .word sys_chmod, sys_lchown, sys_brk, sys_perfctr, sys_lseek | 99 | /*15*/ .word sys_chmod, sys_lchown, sys_brk, sys_nis_syscall, sys_lseek |
100 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid | 100 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid |
101 | /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall | 101 | /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall |
102 | /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice | 102 | /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice |
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c index 10f7bb9fc140..bdc05a21908b 100644 --- a/arch/sparc/kernel/traps_64.c +++ b/arch/sparc/kernel/traps_64.c | |||
@@ -2548,15 +2548,6 @@ void __init trap_init(void) | |||
2548 | rwbuf_stkptrs) || | 2548 | rwbuf_stkptrs) || |
2549 | TI_GSR != offsetof(struct thread_info, gsr) || | 2549 | TI_GSR != offsetof(struct thread_info, gsr) || |
2550 | TI_XFSR != offsetof(struct thread_info, xfsr) || | 2550 | TI_XFSR != offsetof(struct thread_info, xfsr) || |
2551 | TI_USER_CNTD0 != offsetof(struct thread_info, | ||
2552 | user_cntd0) || | ||
2553 | TI_USER_CNTD1 != offsetof(struct thread_info, | ||
2554 | user_cntd1) || | ||
2555 | TI_KERN_CNTD0 != offsetof(struct thread_info, | ||
2556 | kernel_cntd0) || | ||
2557 | TI_KERN_CNTD1 != offsetof(struct thread_info, | ||
2558 | kernel_cntd1) || | ||
2559 | TI_PCR != offsetof(struct thread_info, pcr_reg) || | ||
2560 | TI_PRE_COUNT != offsetof(struct thread_info, | 2551 | TI_PRE_COUNT != offsetof(struct thread_info, |
2561 | preempt_count) || | 2552 | preempt_count) || |
2562 | TI_NEW_CHILD != offsetof(struct thread_info, new_child) || | 2553 | TI_NEW_CHILD != offsetof(struct thread_info, new_child) || |
diff --git a/arch/sparc/prom/p1275.c b/arch/sparc/prom/p1275.c index 4b7c937bba61..2d8b70d397f1 100644 --- a/arch/sparc/prom/p1275.c +++ b/arch/sparc/prom/p1275.c | |||
@@ -32,10 +32,9 @@ extern void prom_cif_interface(void); | |||
32 | extern void prom_cif_callback(void); | 32 | extern void prom_cif_callback(void); |
33 | 33 | ||
34 | /* | 34 | /* |
35 | * This provides SMP safety on the p1275buf. prom_callback() drops this lock | 35 | * This provides SMP safety on the p1275buf. |
36 | * to allow recursuve acquisition. | ||
37 | */ | 36 | */ |
38 | DEFINE_SPINLOCK(prom_entry_lock); | 37 | DEFINE_RAW_SPINLOCK(prom_entry_lock); |
39 | 38 | ||
40 | long p1275_cmd(const char *service, long fmt, ...) | 39 | long p1275_cmd(const char *service, long fmt, ...) |
41 | { | 40 | { |
@@ -47,7 +46,9 @@ long p1275_cmd(const char *service, long fmt, ...) | |||
47 | 46 | ||
48 | p = p1275buf.prom_buffer; | 47 | p = p1275buf.prom_buffer; |
49 | 48 | ||
50 | spin_lock_irqsave(&prom_entry_lock, flags); | 49 | raw_local_save_flags(flags); |
50 | raw_local_irq_restore(PIL_NMI); | ||
51 | raw_spin_lock(&prom_entry_lock); | ||
51 | 52 | ||
52 | p1275buf.prom_args[0] = (unsigned long)p; /* service */ | 53 | p1275buf.prom_args[0] = (unsigned long)p; /* service */ |
53 | strcpy (p, service); | 54 | strcpy (p, service); |
@@ -139,7 +140,8 @@ long p1275_cmd(const char *service, long fmt, ...) | |||
139 | va_end(list); | 140 | va_end(list); |
140 | x = p1275buf.prom_args [nargs + 3]; | 141 | x = p1275buf.prom_args [nargs + 3]; |
141 | 142 | ||
142 | spin_unlock_irqrestore(&prom_entry_lock, flags); | 143 | raw_spin_unlock(&prom_entry_lock); |
144 | raw_local_irq_restore(flags); | ||
143 | 145 | ||
144 | return x; | 146 | return x; |
145 | } | 147 | } |