diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-07-23 05:43:48 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-07-23 05:43:48 -0400 |
commit | a3beddd0aa267986de7b13b6d9cd0e1869fcf1fc (patch) | |
tree | bfdc42183f5aac21f605a30a4a511298ab91e3c5 /arch | |
parent | 955c9863bb5855a994751843e7066017edc00410 (diff) | |
parent | 5bdef865eb358b6f3760e25e591ae115e9eeddef (diff) |
Merge branch 'sh/kfr2r09'
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/Makefile | 1 | ||||
-rw-r--r-- | arch/sh/boards/Kconfig | 7 | ||||
-rw-r--r-- | arch/sh/boards/mach-kfr2r09/Makefile | 1 | ||||
-rw-r--r-- | arch/sh/boards/mach-kfr2r09/setup.c | 153 | ||||
-rw-r--r-- | arch/sh/configs/kfr2r09_defconfig | 877 | ||||
-rw-r--r-- | arch/sh/tools/mach-types | 1 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/perf_counter.c | 253 |
7 files changed, 1273 insertions, 20 deletions
diff --git a/arch/sh/Makefile b/arch/sh/Makefile index 34ad114279bf..c46b3d508f22 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile | |||
@@ -136,6 +136,7 @@ machdir-$(CONFIG_SH_7751_SYSTEMH) += mach-systemh | |||
136 | machdir-$(CONFIG_SH_EDOSK7705) += mach-edosk7705 | 136 | machdir-$(CONFIG_SH_EDOSK7705) += mach-edosk7705 |
137 | machdir-$(CONFIG_SH_HIGHLANDER) += mach-highlander | 137 | machdir-$(CONFIG_SH_HIGHLANDER) += mach-highlander |
138 | machdir-$(CONFIG_SH_MIGOR) += mach-migor | 138 | machdir-$(CONFIG_SH_MIGOR) += mach-migor |
139 | machdir-$(CONFIG_SH_KFR2R09) += mach-kfr2r09 | ||
139 | machdir-$(CONFIG_SH_SDK7780) += mach-sdk7780 | 140 | machdir-$(CONFIG_SH_SDK7780) += mach-sdk7780 |
140 | machdir-$(CONFIG_SH_X3PROTO) += mach-x3proto | 141 | machdir-$(CONFIG_SH_X3PROTO) += mach-x3proto |
141 | machdir-$(CONFIG_SH_SH7763RDP) += mach-sh7763rdp | 142 | machdir-$(CONFIG_SH_SH7763RDP) += mach-sh7763rdp |
diff --git a/arch/sh/boards/Kconfig b/arch/sh/boards/Kconfig index 2b1af0eefa6a..db04c85971ad 100644 --- a/arch/sh/boards/Kconfig +++ b/arch/sh/boards/Kconfig | |||
@@ -193,6 +193,13 @@ config SH_AP325RXA | |||
193 | Renesas "AP-325RXA" support. | 193 | Renesas "AP-325RXA" support. |
194 | Compatible with ALGO SYSTEM CO.,LTD. "AP-320A" | 194 | Compatible with ALGO SYSTEM CO.,LTD. "AP-320A" |
195 | 195 | ||
196 | config SH_KFR2R09 | ||
197 | bool "KFR2R09" | ||
198 | depends on CPU_SUBTYPE_SH7724 | ||
199 | select ARCH_REQUIRE_GPIOLIB | ||
200 | help | ||
201 | "Kit For R2R for 2009" support. | ||
202 | |||
196 | config SH_SH7763RDP | 203 | config SH_SH7763RDP |
197 | bool "SH7763RDP" | 204 | bool "SH7763RDP" |
198 | depends on CPU_SUBTYPE_SH7763 | 205 | depends on CPU_SUBTYPE_SH7763 |
diff --git a/arch/sh/boards/mach-kfr2r09/Makefile b/arch/sh/boards/mach-kfr2r09/Makefile new file mode 100644 index 000000000000..77037567633b --- /dev/null +++ b/arch/sh/boards/mach-kfr2r09/Makefile | |||
@@ -0,0 +1 @@ | |||
obj-y := setup.o | |||
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c new file mode 100644 index 000000000000..bf5f8f8d3b5f --- /dev/null +++ b/arch/sh/boards/mach-kfr2r09/setup.c | |||
@@ -0,0 +1,153 @@ | |||
1 | /* | ||
2 | * KFR2R09 board support code | ||
3 | * | ||
4 | * Copyright (C) 2009 Magnus Damm | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #include <linux/init.h> | ||
11 | #include <linux/platform_device.h> | ||
12 | #include <linux/interrupt.h> | ||
13 | #include <linux/mtd/physmap.h> | ||
14 | #include <linux/delay.h> | ||
15 | #include <linux/clk.h> | ||
16 | #include <linux/gpio.h> | ||
17 | #include <linux/input.h> | ||
18 | #include <asm/clock.h> | ||
19 | #include <asm/machvec.h> | ||
20 | #include <asm/io.h> | ||
21 | #include <asm/sh_keysc.h> | ||
22 | #include <cpu/sh7724.h> | ||
23 | |||
24 | static struct mtd_partition kfr2r09_nor_flash_partitions[] = | ||
25 | { | ||
26 | { | ||
27 | .name = "boot", | ||
28 | .offset = 0, | ||
29 | .size = (4 * 1024 * 1024), | ||
30 | .mask_flags = MTD_WRITEABLE, /* Read-only */ | ||
31 | }, | ||
32 | { | ||
33 | .name = "other", | ||
34 | .offset = MTDPART_OFS_APPEND, | ||
35 | .size = MTDPART_SIZ_FULL, | ||
36 | }, | ||
37 | }; | ||
38 | |||
39 | static struct physmap_flash_data kfr2r09_nor_flash_data = { | ||
40 | .width = 2, | ||
41 | .parts = kfr2r09_nor_flash_partitions, | ||
42 | .nr_parts = ARRAY_SIZE(kfr2r09_nor_flash_partitions), | ||
43 | }; | ||
44 | |||
45 | static struct resource kfr2r09_nor_flash_resources[] = { | ||
46 | [0] = { | ||
47 | .name = "NOR Flash", | ||
48 | .start = 0x00000000, | ||
49 | .end = 0x03ffffff, | ||
50 | .flags = IORESOURCE_MEM, | ||
51 | } | ||
52 | }; | ||
53 | |||
54 | static struct platform_device kfr2r09_nor_flash_device = { | ||
55 | .name = "physmap-flash", | ||
56 | .resource = kfr2r09_nor_flash_resources, | ||
57 | .num_resources = ARRAY_SIZE(kfr2r09_nor_flash_resources), | ||
58 | .dev = { | ||
59 | .platform_data = &kfr2r09_nor_flash_data, | ||
60 | }, | ||
61 | }; | ||
62 | |||
63 | static struct sh_keysc_info kfr2r09_sh_keysc_info = { | ||
64 | .mode = SH_KEYSC_MODE_1, /* KEYOUT0->4, KEYIN0->4 */ | ||
65 | .scan_timing = 3, | ||
66 | .delay = 10, | ||
67 | .keycodes = { | ||
68 | KEY_PHONE, KEY_CLEAR, KEY_MAIL, KEY_WWW, KEY_ENTER, | ||
69 | KEY_1, KEY_2, KEY_3, 0, KEY_UP, | ||
70 | KEY_4, KEY_5, KEY_6, 0, KEY_LEFT, | ||
71 | KEY_7, KEY_8, KEY_9, KEY_PROG1, KEY_RIGHT, | ||
72 | KEY_S, KEY_0, KEY_P, KEY_PROG2, KEY_DOWN, | ||
73 | 0, 0, 0, 0, 0 | ||
74 | }, | ||
75 | }; | ||
76 | |||
77 | static struct resource kfr2r09_sh_keysc_resources[] = { | ||
78 | [0] = { | ||
79 | .name = "KEYSC", | ||
80 | .start = 0x044b0000, | ||
81 | .end = 0x044b000f, | ||
82 | .flags = IORESOURCE_MEM, | ||
83 | }, | ||
84 | [1] = { | ||
85 | .start = 79, | ||
86 | .flags = IORESOURCE_IRQ, | ||
87 | }, | ||
88 | }; | ||
89 | |||
90 | static struct platform_device kfr2r09_sh_keysc_device = { | ||
91 | .name = "sh_keysc", | ||
92 | .id = 0, /* "keysc0" clock */ | ||
93 | .num_resources = ARRAY_SIZE(kfr2r09_sh_keysc_resources), | ||
94 | .resource = kfr2r09_sh_keysc_resources, | ||
95 | .dev = { | ||
96 | .platform_data = &kfr2r09_sh_keysc_info, | ||
97 | }, | ||
98 | }; | ||
99 | |||
100 | static struct platform_device *kfr2r09_devices[] __initdata = { | ||
101 | &kfr2r09_nor_flash_device, | ||
102 | &kfr2r09_sh_keysc_device, | ||
103 | }; | ||
104 | |||
105 | #define BSC_CS0BCR 0xfec10004 | ||
106 | #define BSC_CS0WCR 0xfec10024 | ||
107 | |||
108 | static int __init kfr2r09_devices_setup(void) | ||
109 | { | ||
110 | /* enable SCIF1 serial port for YC401 console support */ | ||
111 | gpio_request(GPIO_FN_SCIF1_RXD, NULL); | ||
112 | gpio_request(GPIO_FN_SCIF1_TXD, NULL); | ||
113 | |||
114 | /* setup NOR flash at CS0 */ | ||
115 | ctrl_outl(0x36db0400, BSC_CS0BCR); | ||
116 | ctrl_outl(0x00000500, BSC_CS0WCR); | ||
117 | |||
118 | /* setup KEYSC pins */ | ||
119 | gpio_request(GPIO_FN_KEYOUT0, NULL); | ||
120 | gpio_request(GPIO_FN_KEYOUT1, NULL); | ||
121 | gpio_request(GPIO_FN_KEYOUT2, NULL); | ||
122 | gpio_request(GPIO_FN_KEYOUT3, NULL); | ||
123 | gpio_request(GPIO_FN_KEYOUT4_IN6, NULL); | ||
124 | gpio_request(GPIO_FN_KEYIN0, NULL); | ||
125 | gpio_request(GPIO_FN_KEYIN1, NULL); | ||
126 | gpio_request(GPIO_FN_KEYIN2, NULL); | ||
127 | gpio_request(GPIO_FN_KEYIN3, NULL); | ||
128 | gpio_request(GPIO_FN_KEYIN4, NULL); | ||
129 | gpio_request(GPIO_FN_KEYOUT5_IN5, NULL); | ||
130 | |||
131 | return platform_add_devices(kfr2r09_devices, | ||
132 | ARRAY_SIZE(kfr2r09_devices)); | ||
133 | } | ||
134 | device_initcall(kfr2r09_devices_setup); | ||
135 | |||
136 | /* Return the board specific boot mode pin configuration */ | ||
137 | static int kfr2r09_mode_pins(void) | ||
138 | { | ||
139 | /* MD0=1, MD1=1, MD2=0: Clock Mode 3 | ||
140 | * MD3=0: 16-bit Area0 Bus Width | ||
141 | * MD5=1: Little Endian | ||
142 | * MD8=1: Test Mode Disabled | ||
143 | */ | ||
144 | return MODE_PIN0 | MODE_PIN1 | MODE_PIN5 | MODE_PIN8; | ||
145 | } | ||
146 | |||
147 | /* | ||
148 | * The Machine Vector | ||
149 | */ | ||
150 | static struct sh_machine_vector mv_kfr2r09 __initmv = { | ||
151 | .mv_name = "kfr2r09", | ||
152 | .mv_mode_pins = kfr2r09_mode_pins, | ||
153 | }; | ||
diff --git a/arch/sh/configs/kfr2r09_defconfig b/arch/sh/configs/kfr2r09_defconfig new file mode 100644 index 000000000000..90e575c34d58 --- /dev/null +++ b/arch/sh/configs/kfr2r09_defconfig | |||
@@ -0,0 +1,877 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.31-rc3 | ||
4 | # Thu Jul 23 17:45:09 2009 | ||
5 | # | ||
6 | CONFIG_SUPERH=y | ||
7 | CONFIG_SUPERH32=y | ||
8 | # CONFIG_SUPERH64 is not set | ||
9 | CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig" | ||
10 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
11 | CONFIG_GENERIC_BUG=y | ||
12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
13 | CONFIG_GENERIC_HWEIGHT=y | ||
14 | CONFIG_GENERIC_HARDIRQS=y | ||
15 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
16 | CONFIG_GENERIC_IRQ_PROBE=y | ||
17 | CONFIG_IRQ_PER_CPU=y | ||
18 | CONFIG_GENERIC_GPIO=y | ||
19 | CONFIG_GENERIC_TIME=y | ||
20 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
21 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
22 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
23 | CONFIG_SYS_SUPPORTS_CMT=y | ||
24 | CONFIG_SYS_SUPPORTS_TMU=y | ||
25 | CONFIG_STACKTRACE_SUPPORT=y | ||
26 | CONFIG_LOCKDEP_SUPPORT=y | ||
27 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
28 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
29 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
30 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
31 | CONFIG_ARCH_HAS_DEFAULT_IDLE=y | ||
32 | CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y | ||
33 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
34 | CONFIG_CONSTRUCTORS=y | ||
35 | |||
36 | # | ||
37 | # General setup | ||
38 | # | ||
39 | CONFIG_EXPERIMENTAL=y | ||
40 | CONFIG_BROKEN_ON_SMP=y | ||
41 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
42 | CONFIG_LOCALVERSION="" | ||
43 | # CONFIG_LOCALVERSION_AUTO is not set | ||
44 | CONFIG_HAVE_KERNEL_GZIP=y | ||
45 | CONFIG_HAVE_KERNEL_BZIP2=y | ||
46 | CONFIG_HAVE_KERNEL_LZMA=y | ||
47 | CONFIG_KERNEL_GZIP=y | ||
48 | # CONFIG_KERNEL_BZIP2 is not set | ||
49 | # CONFIG_KERNEL_LZMA is not set | ||
50 | CONFIG_SWAP=y | ||
51 | CONFIG_SYSVIPC=y | ||
52 | CONFIG_SYSVIPC_SYSCTL=y | ||
53 | # CONFIG_POSIX_MQUEUE is not set | ||
54 | CONFIG_BSD_PROCESS_ACCT=y | ||
55 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
56 | # CONFIG_TASKSTATS is not set | ||
57 | # CONFIG_AUDIT is not set | ||
58 | |||
59 | # | ||
60 | # RCU Subsystem | ||
61 | # | ||
62 | CONFIG_CLASSIC_RCU=y | ||
63 | # CONFIG_TREE_RCU is not set | ||
64 | # CONFIG_PREEMPT_RCU is not set | ||
65 | # CONFIG_TREE_RCU_TRACE is not set | ||
66 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
67 | CONFIG_IKCONFIG=y | ||
68 | CONFIG_IKCONFIG_PROC=y | ||
69 | CONFIG_LOG_BUF_SHIFT=14 | ||
70 | CONFIG_GROUP_SCHED=y | ||
71 | CONFIG_FAIR_GROUP_SCHED=y | ||
72 | # CONFIG_RT_GROUP_SCHED is not set | ||
73 | CONFIG_USER_SCHED=y | ||
74 | # CONFIG_CGROUP_SCHED is not set | ||
75 | # CONFIG_CGROUPS is not set | ||
76 | CONFIG_SYSFS_DEPRECATED=y | ||
77 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
78 | # CONFIG_RELAY is not set | ||
79 | # CONFIG_NAMESPACES is not set | ||
80 | CONFIG_BLK_DEV_INITRD=y | ||
81 | CONFIG_INITRAMFS_SOURCE="" | ||
82 | CONFIG_RD_GZIP=y | ||
83 | # CONFIG_RD_BZIP2 is not set | ||
84 | # CONFIG_RD_LZMA is not set | ||
85 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
86 | CONFIG_SYSCTL=y | ||
87 | CONFIG_ANON_INODES=y | ||
88 | CONFIG_EMBEDDED=y | ||
89 | CONFIG_UID16=y | ||
90 | CONFIG_SYSCTL_SYSCALL=y | ||
91 | # CONFIG_KALLSYMS is not set | ||
92 | CONFIG_HOTPLUG=y | ||
93 | CONFIG_PRINTK=y | ||
94 | CONFIG_BUG=y | ||
95 | CONFIG_ELF_CORE=y | ||
96 | CONFIG_BASE_FULL=y | ||
97 | CONFIG_FUTEX=y | ||
98 | CONFIG_EPOLL=y | ||
99 | CONFIG_SIGNALFD=y | ||
100 | CONFIG_TIMERFD=y | ||
101 | CONFIG_EVENTFD=y | ||
102 | CONFIG_SHMEM=y | ||
103 | CONFIG_AIO=y | ||
104 | CONFIG_HAVE_PERF_COUNTERS=y | ||
105 | |||
106 | # | ||
107 | # Performance Counters | ||
108 | # | ||
109 | # CONFIG_PERF_COUNTERS is not set | ||
110 | CONFIG_VM_EVENT_COUNTERS=y | ||
111 | # CONFIG_STRIP_ASM_SYMS is not set | ||
112 | CONFIG_COMPAT_BRK=y | ||
113 | CONFIG_SLAB=y | ||
114 | # CONFIG_SLUB is not set | ||
115 | # CONFIG_SLOB is not set | ||
116 | # CONFIG_PROFILING is not set | ||
117 | # CONFIG_MARKERS is not set | ||
118 | CONFIG_HAVE_OPROFILE=y | ||
119 | CONFIG_HAVE_IOREMAP_PROT=y | ||
120 | CONFIG_HAVE_KPROBES=y | ||
121 | CONFIG_HAVE_KRETPROBES=y | ||
122 | CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
123 | CONFIG_HAVE_CLK=y | ||
124 | CONFIG_HAVE_DMA_API_DEBUG=y | ||
125 | |||
126 | # | ||
127 | # GCOV-based kernel profiling | ||
128 | # | ||
129 | # CONFIG_GCOV_KERNEL is not set | ||
130 | # CONFIG_SLOW_WORK is not set | ||
131 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
132 | CONFIG_SLABINFO=y | ||
133 | CONFIG_RT_MUTEXES=y | ||
134 | CONFIG_BASE_SMALL=0 | ||
135 | # CONFIG_MODULES is not set | ||
136 | CONFIG_BLOCK=y | ||
137 | CONFIG_LBDAF=y | ||
138 | # CONFIG_BLK_DEV_BSG is not set | ||
139 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
140 | |||
141 | # | ||
142 | # IO Schedulers | ||
143 | # | ||
144 | CONFIG_IOSCHED_NOOP=y | ||
145 | # CONFIG_IOSCHED_AS is not set | ||
146 | # CONFIG_IOSCHED_DEADLINE is not set | ||
147 | # CONFIG_IOSCHED_CFQ is not set | ||
148 | # CONFIG_DEFAULT_AS is not set | ||
149 | # CONFIG_DEFAULT_DEADLINE is not set | ||
150 | # CONFIG_DEFAULT_CFQ is not set | ||
151 | CONFIG_DEFAULT_NOOP=y | ||
152 | CONFIG_DEFAULT_IOSCHED="noop" | ||
153 | # CONFIG_FREEZER is not set | ||
154 | |||
155 | # | ||
156 | # System type | ||
157 | # | ||
158 | CONFIG_CPU_SH4=y | ||
159 | CONFIG_CPU_SH4A=y | ||
160 | CONFIG_CPU_SHX2=y | ||
161 | CONFIG_ARCH_SHMOBILE=y | ||
162 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | ||
163 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
164 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | ||
165 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | ||
166 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | ||
167 | # CONFIG_CPU_SUBTYPE_MXG is not set | ||
168 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | ||
169 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | ||
170 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | ||
171 | # CONFIG_CPU_SUBTYPE_SH7708 is not set | ||
172 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | ||
173 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | ||
174 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | ||
175 | # CONFIG_CPU_SUBTYPE_SH7720 is not set | ||
176 | # CONFIG_CPU_SUBTYPE_SH7721 is not set | ||
177 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | ||
178 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | ||
179 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | ||
180 | # CONFIG_CPU_SUBTYPE_SH7750S is not set | ||
181 | # CONFIG_CPU_SUBTYPE_SH7751 is not set | ||
182 | # CONFIG_CPU_SUBTYPE_SH7751R is not set | ||
183 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | ||
184 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | ||
185 | # CONFIG_CPU_SUBTYPE_SH7723 is not set | ||
186 | CONFIG_CPU_SUBTYPE_SH7724=y | ||
187 | # CONFIG_CPU_SUBTYPE_SH7763 is not set | ||
188 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | ||
189 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | ||
190 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | ||
191 | # CONFIG_CPU_SUBTYPE_SH7786 is not set | ||
192 | # CONFIG_CPU_SUBTYPE_SHX3 is not set | ||
193 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | ||
194 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | ||
195 | # CONFIG_CPU_SUBTYPE_SH7366 is not set | ||
196 | |||
197 | # | ||
198 | # Memory management options | ||
199 | # | ||
200 | CONFIG_QUICKLIST=y | ||
201 | CONFIG_MMU=y | ||
202 | CONFIG_PAGE_OFFSET=0x80000000 | ||
203 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
204 | CONFIG_MEMORY_START=0x08000000 | ||
205 | CONFIG_MEMORY_SIZE=0x08000000 | ||
206 | CONFIG_29BIT=y | ||
207 | # CONFIG_X2TLB is not set | ||
208 | CONFIG_VSYSCALL=y | ||
209 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
210 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
211 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | ||
212 | CONFIG_MAX_ACTIVE_REGIONS=1 | ||
213 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
214 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
215 | CONFIG_PAGE_SIZE_4KB=y | ||
216 | # CONFIG_PAGE_SIZE_8KB is not set | ||
217 | # CONFIG_PAGE_SIZE_16KB is not set | ||
218 | # CONFIG_PAGE_SIZE_64KB is not set | ||
219 | CONFIG_SELECT_MEMORY_MODEL=y | ||
220 | CONFIG_FLATMEM_MANUAL=y | ||
221 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
222 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
223 | CONFIG_FLATMEM=y | ||
224 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
225 | CONFIG_SPARSEMEM_STATIC=y | ||
226 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
227 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
228 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
229 | CONFIG_ZONE_DMA_FLAG=0 | ||
230 | CONFIG_NR_QUICK=2 | ||
231 | CONFIG_HAVE_MLOCK=y | ||
232 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
233 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
234 | |||
235 | # | ||
236 | # Cache configuration | ||
237 | # | ||
238 | CONFIG_CACHE_WRITEBACK=y | ||
239 | # CONFIG_CACHE_WRITETHROUGH is not set | ||
240 | # CONFIG_CACHE_OFF is not set | ||
241 | |||
242 | # | ||
243 | # Processor features | ||
244 | # | ||
245 | CONFIG_CPU_LITTLE_ENDIAN=y | ||
246 | # CONFIG_CPU_BIG_ENDIAN is not set | ||
247 | CONFIG_SH_FPU=y | ||
248 | # CONFIG_SH_STORE_QUEUES is not set | ||
249 | CONFIG_CPU_HAS_INTEVT=y | ||
250 | CONFIG_CPU_HAS_SR_RB=y | ||
251 | CONFIG_CPU_HAS_FPU=y | ||
252 | |||
253 | # | ||
254 | # Board support | ||
255 | # | ||
256 | # CONFIG_SH_7724_SOLUTION_ENGINE is not set | ||
257 | CONFIG_SH_KFR2R09=y | ||
258 | |||
259 | # | ||
260 | # Timer and clock configuration | ||
261 | # | ||
262 | # CONFIG_SH_TIMER_TMU is not set | ||
263 | CONFIG_SH_TIMER_CMT=y | ||
264 | CONFIG_SH_PCLK_FREQ=33333333 | ||
265 | CONFIG_SH_CLK_CPG=y | ||
266 | CONFIG_TICK_ONESHOT=y | ||
267 | CONFIG_NO_HZ=y | ||
268 | # CONFIG_HIGH_RES_TIMERS is not set | ||
269 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
270 | |||
271 | # | ||
272 | # CPU Frequency scaling | ||
273 | # | ||
274 | # CONFIG_CPU_FREQ is not set | ||
275 | |||
276 | # | ||
277 | # DMA support | ||
278 | # | ||
279 | # CONFIG_SH_DMA is not set | ||
280 | |||
281 | # | ||
282 | # Companion Chips | ||
283 | # | ||
284 | |||
285 | # | ||
286 | # Additional SuperH Device Drivers | ||
287 | # | ||
288 | # CONFIG_HEARTBEAT is not set | ||
289 | # CONFIG_PUSH_SWITCH is not set | ||
290 | |||
291 | # | ||
292 | # Kernel features | ||
293 | # | ||
294 | # CONFIG_HZ_100 is not set | ||
295 | # CONFIG_HZ_250 is not set | ||
296 | # CONFIG_HZ_300 is not set | ||
297 | CONFIG_HZ_1000=y | ||
298 | CONFIG_HZ=1000 | ||
299 | # CONFIG_SCHED_HRTICK is not set | ||
300 | CONFIG_KEXEC=y | ||
301 | # CONFIG_CRASH_DUMP is not set | ||
302 | # CONFIG_SECCOMP is not set | ||
303 | # CONFIG_PREEMPT_NONE is not set | ||
304 | CONFIG_PREEMPT_VOLUNTARY=y | ||
305 | # CONFIG_PREEMPT is not set | ||
306 | CONFIG_GUSA=y | ||
307 | # CONFIG_SPARSE_IRQ is not set | ||
308 | |||
309 | # | ||
310 | # Boot options | ||
311 | # | ||
312 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 | ||
313 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | ||
314 | CONFIG_ENTRY_OFFSET=0x00001000 | ||
315 | CONFIG_CMDLINE_BOOL=y | ||
316 | CONFIG_CMDLINE="console=ttySC1,115200" | ||
317 | |||
318 | # | ||
319 | # Bus options | ||
320 | # | ||
321 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
322 | # CONFIG_PCCARD is not set | ||
323 | |||
324 | # | ||
325 | # Executable file formats | ||
326 | # | ||
327 | CONFIG_BINFMT_ELF=y | ||
328 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
329 | # CONFIG_HAVE_AOUT is not set | ||
330 | # CONFIG_BINFMT_MISC is not set | ||
331 | |||
332 | # | ||
333 | # Power management options (EXPERIMENTAL) | ||
334 | # | ||
335 | CONFIG_PM=y | ||
336 | # CONFIG_PM_DEBUG is not set | ||
337 | # CONFIG_SUSPEND is not set | ||
338 | # CONFIG_HIBERNATION is not set | ||
339 | CONFIG_CPU_IDLE=y | ||
340 | CONFIG_CPU_IDLE_GOV_LADDER=y | ||
341 | CONFIG_CPU_IDLE_GOV_MENU=y | ||
342 | CONFIG_NET=y | ||
343 | |||
344 | # | ||
345 | # Networking options | ||
346 | # | ||
347 | CONFIG_PACKET=y | ||
348 | CONFIG_PACKET_MMAP=y | ||
349 | CONFIG_UNIX=y | ||
350 | # CONFIG_NET_KEY is not set | ||
351 | CONFIG_INET=y | ||
352 | # CONFIG_IP_MULTICAST is not set | ||
353 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
354 | CONFIG_IP_FIB_HASH=y | ||
355 | # CONFIG_IP_PNP is not set | ||
356 | # CONFIG_NET_IPIP is not set | ||
357 | # CONFIG_NET_IPGRE is not set | ||
358 | # CONFIG_ARPD is not set | ||
359 | # CONFIG_SYN_COOKIES is not set | ||
360 | # CONFIG_INET_AH is not set | ||
361 | # CONFIG_INET_ESP is not set | ||
362 | # CONFIG_INET_IPCOMP is not set | ||
363 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
364 | # CONFIG_INET_TUNNEL is not set | ||
365 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
366 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
367 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
368 | # CONFIG_INET_LRO is not set | ||
369 | # CONFIG_INET_DIAG is not set | ||
370 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
371 | CONFIG_TCP_CONG_CUBIC=y | ||
372 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
373 | # CONFIG_TCP_MD5SIG is not set | ||
374 | # CONFIG_IPV6 is not set | ||
375 | # CONFIG_NETWORK_SECMARK is not set | ||
376 | # CONFIG_NETFILTER is not set | ||
377 | # CONFIG_IP_DCCP is not set | ||
378 | # CONFIG_IP_SCTP is not set | ||
379 | # CONFIG_TIPC is not set | ||
380 | # CONFIG_ATM is not set | ||
381 | # CONFIG_BRIDGE is not set | ||
382 | # CONFIG_NET_DSA is not set | ||
383 | # CONFIG_VLAN_8021Q is not set | ||
384 | # CONFIG_DECNET is not set | ||
385 | # CONFIG_LLC2 is not set | ||
386 | # CONFIG_IPX is not set | ||
387 | # CONFIG_ATALK is not set | ||
388 | # CONFIG_X25 is not set | ||
389 | # CONFIG_LAPB is not set | ||
390 | # CONFIG_ECONET is not set | ||
391 | # CONFIG_WAN_ROUTER is not set | ||
392 | # CONFIG_PHONET is not set | ||
393 | # CONFIG_IEEE802154 is not set | ||
394 | # CONFIG_NET_SCHED is not set | ||
395 | # CONFIG_DCB is not set | ||
396 | |||
397 | # | ||
398 | # Network testing | ||
399 | # | ||
400 | # CONFIG_NET_PKTGEN is not set | ||
401 | # CONFIG_HAMRADIO is not set | ||
402 | # CONFIG_CAN is not set | ||
403 | # CONFIG_IRDA is not set | ||
404 | # CONFIG_BT is not set | ||
405 | # CONFIG_AF_RXRPC is not set | ||
406 | # CONFIG_WIRELESS is not set | ||
407 | # CONFIG_WIMAX is not set | ||
408 | # CONFIG_RFKILL is not set | ||
409 | # CONFIG_NET_9P is not set | ||
410 | |||
411 | # | ||
412 | # Device Drivers | ||
413 | # | ||
414 | |||
415 | # | ||
416 | # Generic Driver Options | ||
417 | # | ||
418 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
419 | CONFIG_STANDALONE=y | ||
420 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
421 | CONFIG_FW_LOADER=y | ||
422 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
423 | CONFIG_EXTRA_FIRMWARE="" | ||
424 | # CONFIG_SYS_HYPERVISOR is not set | ||
425 | # CONFIG_CONNECTOR is not set | ||
426 | CONFIG_MTD=y | ||
427 | # CONFIG_MTD_DEBUG is not set | ||
428 | CONFIG_MTD_CONCAT=y | ||
429 | CONFIG_MTD_PARTITIONS=y | ||
430 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
431 | CONFIG_MTD_CMDLINE_PARTS=y | ||
432 | # CONFIG_MTD_AR7_PARTS is not set | ||
433 | |||
434 | # | ||
435 | # User Modules And Translation Layers | ||
436 | # | ||
437 | CONFIG_MTD_CHAR=y | ||
438 | CONFIG_MTD_BLKDEVS=y | ||
439 | CONFIG_MTD_BLOCK=y | ||
440 | # CONFIG_FTL is not set | ||
441 | # CONFIG_NFTL is not set | ||
442 | # CONFIG_INFTL is not set | ||
443 | # CONFIG_RFD_FTL is not set | ||
444 | # CONFIG_SSFDC is not set | ||
445 | # CONFIG_MTD_OOPS is not set | ||
446 | |||
447 | # | ||
448 | # RAM/ROM/Flash chip drivers | ||
449 | # | ||
450 | CONFIG_MTD_CFI=y | ||
451 | # CONFIG_MTD_JEDECPROBE is not set | ||
452 | CONFIG_MTD_GEN_PROBE=y | ||
453 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
454 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
455 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
456 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
457 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
458 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
459 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
460 | CONFIG_MTD_CFI_I1=y | ||
461 | CONFIG_MTD_CFI_I2=y | ||
462 | # CONFIG_MTD_CFI_I4 is not set | ||
463 | # CONFIG_MTD_CFI_I8 is not set | ||
464 | CONFIG_MTD_CFI_INTELEXT=y | ||
465 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
466 | # CONFIG_MTD_CFI_STAA is not set | ||
467 | CONFIG_MTD_CFI_UTIL=y | ||
468 | # CONFIG_MTD_RAM is not set | ||
469 | # CONFIG_MTD_ROM is not set | ||
470 | # CONFIG_MTD_ABSENT is not set | ||
471 | |||
472 | # | ||
473 | # Mapping drivers for chip access | ||
474 | # | ||
475 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
476 | CONFIG_MTD_PHYSMAP=y | ||
477 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
478 | # CONFIG_MTD_PLATRAM is not set | ||
479 | |||
480 | # | ||
481 | # Self-contained MTD device drivers | ||
482 | # | ||
483 | # CONFIG_MTD_SLRAM is not set | ||
484 | # CONFIG_MTD_PHRAM is not set | ||
485 | # CONFIG_MTD_MTDRAM is not set | ||
486 | # CONFIG_MTD_BLOCK2MTD is not set | ||
487 | |||
488 | # | ||
489 | # Disk-On-Chip Device Drivers | ||
490 | # | ||
491 | # CONFIG_MTD_DOC2000 is not set | ||
492 | # CONFIG_MTD_DOC2001 is not set | ||
493 | # CONFIG_MTD_DOC2001PLUS is not set | ||
494 | # CONFIG_MTD_NAND is not set | ||
495 | # CONFIG_MTD_ONENAND is not set | ||
496 | |||
497 | # | ||
498 | # LPDDR flash memory drivers | ||
499 | # | ||
500 | # CONFIG_MTD_LPDDR is not set | ||
501 | |||
502 | # | ||
503 | # UBI - Unsorted block images | ||
504 | # | ||
505 | CONFIG_MTD_UBI=y | ||
506 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
507 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
508 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
509 | |||
510 | # | ||
511 | # UBI debugging options | ||
512 | # | ||
513 | # CONFIG_MTD_UBI_DEBUG is not set | ||
514 | # CONFIG_PARPORT is not set | ||
515 | CONFIG_BLK_DEV=y | ||
516 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
517 | # CONFIG_BLK_DEV_LOOP is not set | ||
518 | # CONFIG_BLK_DEV_NBD is not set | ||
519 | # CONFIG_BLK_DEV_RAM is not set | ||
520 | # CONFIG_CDROM_PKTCDVD is not set | ||
521 | # CONFIG_ATA_OVER_ETH is not set | ||
522 | # CONFIG_BLK_DEV_HD is not set | ||
523 | # CONFIG_MISC_DEVICES is not set | ||
524 | CONFIG_HAVE_IDE=y | ||
525 | # CONFIG_IDE is not set | ||
526 | |||
527 | # | ||
528 | # SCSI device support | ||
529 | # | ||
530 | # CONFIG_RAID_ATTRS is not set | ||
531 | # CONFIG_SCSI is not set | ||
532 | # CONFIG_SCSI_DMA is not set | ||
533 | # CONFIG_SCSI_NETLINK is not set | ||
534 | # CONFIG_ATA is not set | ||
535 | # CONFIG_MD is not set | ||
536 | # CONFIG_NETDEVICES is not set | ||
537 | # CONFIG_ISDN is not set | ||
538 | # CONFIG_PHONE is not set | ||
539 | |||
540 | # | ||
541 | # Input device support | ||
542 | # | ||
543 | CONFIG_INPUT=y | ||
544 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
545 | # CONFIG_INPUT_POLLDEV is not set | ||
546 | |||
547 | # | ||
548 | # Userland interfaces | ||
549 | # | ||
550 | # CONFIG_INPUT_MOUSEDEV is not set | ||
551 | # CONFIG_INPUT_JOYDEV is not set | ||
552 | CONFIG_INPUT_EVDEV=y | ||
553 | # CONFIG_INPUT_EVBUG is not set | ||
554 | |||
555 | # | ||
556 | # Input Device Drivers | ||
557 | # | ||
558 | CONFIG_INPUT_KEYBOARD=y | ||
559 | # CONFIG_KEYBOARD_ATKBD is not set | ||
560 | # CONFIG_KEYBOARD_LKKBD is not set | ||
561 | # CONFIG_KEYBOARD_GPIO is not set | ||
562 | # CONFIG_KEYBOARD_MATRIX is not set | ||
563 | # CONFIG_KEYBOARD_NEWTON is not set | ||
564 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
565 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
566 | CONFIG_KEYBOARD_SH_KEYSC=y | ||
567 | # CONFIG_KEYBOARD_XTKBD is not set | ||
568 | # CONFIG_INPUT_MOUSE is not set | ||
569 | # CONFIG_INPUT_JOYSTICK is not set | ||
570 | # CONFIG_INPUT_TABLET is not set | ||
571 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
572 | # CONFIG_INPUT_MISC is not set | ||
573 | |||
574 | # | ||
575 | # Hardware I/O ports | ||
576 | # | ||
577 | # CONFIG_SERIO is not set | ||
578 | # CONFIG_GAMEPORT is not set | ||
579 | |||
580 | # | ||
581 | # Character devices | ||
582 | # | ||
583 | CONFIG_VT=y | ||
584 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
585 | CONFIG_VT_CONSOLE=y | ||
586 | CONFIG_HW_CONSOLE=y | ||
587 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
588 | CONFIG_DEVKMEM=y | ||
589 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
590 | |||
591 | # | ||
592 | # Serial drivers | ||
593 | # | ||
594 | # CONFIG_SERIAL_8250 is not set | ||
595 | |||
596 | # | ||
597 | # Non-8250 serial port support | ||
598 | # | ||
599 | CONFIG_SERIAL_SH_SCI=y | ||
600 | CONFIG_SERIAL_SH_SCI_NR_UARTS=6 | ||
601 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
602 | CONFIG_SERIAL_CORE=y | ||
603 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
604 | CONFIG_UNIX98_PTYS=y | ||
605 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
606 | CONFIG_LEGACY_PTYS=y | ||
607 | CONFIG_LEGACY_PTY_COUNT=256 | ||
608 | # CONFIG_IPMI_HANDLER is not set | ||
609 | CONFIG_HW_RANDOM=y | ||
610 | # CONFIG_HW_RANDOM_TIMERIOMEM is not set | ||
611 | # CONFIG_R3964 is not set | ||
612 | # CONFIG_RAW_DRIVER is not set | ||
613 | # CONFIG_TCG_TPM is not set | ||
614 | CONFIG_I2C=y | ||
615 | CONFIG_I2C_BOARDINFO=y | ||
616 | # CONFIG_I2C_CHARDEV is not set | ||
617 | CONFIG_I2C_HELPER_AUTO=y | ||
618 | |||
619 | # | ||
620 | # I2C Hardware Bus support | ||
621 | # | ||
622 | |||
623 | # | ||
624 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
625 | # | ||
626 | # CONFIG_I2C_DESIGNWARE is not set | ||
627 | # CONFIG_I2C_GPIO is not set | ||
628 | # CONFIG_I2C_OCORES is not set | ||
629 | CONFIG_I2C_SH_MOBILE=y | ||
630 | # CONFIG_I2C_SIMTEC is not set | ||
631 | |||
632 | # | ||
633 | # External I2C/SMBus adapter drivers | ||
634 | # | ||
635 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
636 | # CONFIG_I2C_TAOS_EVM is not set | ||
637 | |||
638 | # | ||
639 | # Other I2C/SMBus bus drivers | ||
640 | # | ||
641 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
642 | |||
643 | # | ||
644 | # Miscellaneous I2C Chip support | ||
645 | # | ||
646 | # CONFIG_DS1682 is not set | ||
647 | # CONFIG_SENSORS_PCF8574 is not set | ||
648 | # CONFIG_PCF8575 is not set | ||
649 | # CONFIG_SENSORS_PCA9539 is not set | ||
650 | # CONFIG_SENSORS_TSL2550 is not set | ||
651 | # CONFIG_I2C_DEBUG_CORE is not set | ||
652 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
653 | # CONFIG_I2C_DEBUG_BUS is not set | ||
654 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
655 | # CONFIG_SPI is not set | ||
656 | |||
657 | # | ||
658 | # PPS support | ||
659 | # | ||
660 | # CONFIG_PPS is not set | ||
661 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
662 | CONFIG_GPIOLIB=y | ||
663 | CONFIG_GPIO_SYSFS=y | ||
664 | |||
665 | # | ||
666 | # Memory mapped GPIO expanders: | ||
667 | # | ||
668 | |||
669 | # | ||
670 | # I2C GPIO expanders: | ||
671 | # | ||
672 | # CONFIG_GPIO_MAX732X is not set | ||
673 | # CONFIG_GPIO_PCA953X is not set | ||
674 | # CONFIG_GPIO_PCF857X is not set | ||
675 | |||
676 | # | ||
677 | # PCI GPIO expanders: | ||
678 | # | ||
679 | |||
680 | # | ||
681 | # SPI GPIO expanders: | ||
682 | # | ||
683 | # CONFIG_W1 is not set | ||
684 | # CONFIG_POWER_SUPPLY is not set | ||
685 | # CONFIG_HWMON is not set | ||
686 | # CONFIG_THERMAL is not set | ||
687 | # CONFIG_THERMAL_HWMON is not set | ||
688 | # CONFIG_WATCHDOG is not set | ||
689 | CONFIG_SSB_POSSIBLE=y | ||
690 | |||
691 | # | ||
692 | # Sonics Silicon Backplane | ||
693 | # | ||
694 | # CONFIG_SSB is not set | ||
695 | |||
696 | # | ||
697 | # Multifunction device drivers | ||
698 | # | ||
699 | # CONFIG_MFD_CORE is not set | ||
700 | # CONFIG_MFD_SM501 is not set | ||
701 | # CONFIG_HTC_PASIC3 is not set | ||
702 | # CONFIG_TPS65010 is not set | ||
703 | # CONFIG_TWL4030_CORE is not set | ||
704 | # CONFIG_MFD_TMIO is not set | ||
705 | # CONFIG_PMIC_DA903X is not set | ||
706 | # CONFIG_MFD_WM8400 is not set | ||
707 | # CONFIG_MFD_WM8350_I2C is not set | ||
708 | # CONFIG_MFD_PCF50633 is not set | ||
709 | # CONFIG_AB3100_CORE is not set | ||
710 | # CONFIG_REGULATOR is not set | ||
711 | # CONFIG_MEDIA_SUPPORT is not set | ||
712 | |||
713 | # | ||
714 | # Graphics support | ||
715 | # | ||
716 | # CONFIG_VGASTATE is not set | ||
717 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
718 | # CONFIG_FB is not set | ||
719 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
720 | |||
721 | # | ||
722 | # Display device support | ||
723 | # | ||
724 | # CONFIG_DISPLAY_SUPPORT is not set | ||
725 | |||
726 | # | ||
727 | # Console display driver support | ||
728 | # | ||
729 | CONFIG_DUMMY_CONSOLE=y | ||
730 | # CONFIG_SOUND is not set | ||
731 | # CONFIG_HID_SUPPORT is not set | ||
732 | # CONFIG_USB_SUPPORT is not set | ||
733 | # CONFIG_MMC is not set | ||
734 | # CONFIG_MEMSTICK is not set | ||
735 | # CONFIG_NEW_LEDS is not set | ||
736 | # CONFIG_ACCESSIBILITY is not set | ||
737 | CONFIG_RTC_LIB=y | ||
738 | # CONFIG_RTC_CLASS is not set | ||
739 | # CONFIG_DMADEVICES is not set | ||
740 | # CONFIG_AUXDISPLAY is not set | ||
741 | CONFIG_UIO=y | ||
742 | # CONFIG_UIO_PDRV is not set | ||
743 | CONFIG_UIO_PDRV_GENIRQ=y | ||
744 | # CONFIG_UIO_SMX is not set | ||
745 | # CONFIG_UIO_SERCOS3 is not set | ||
746 | |||
747 | # | ||
748 | # TI VLYNQ | ||
749 | # | ||
750 | # CONFIG_STAGING is not set | ||
751 | |||
752 | # | ||
753 | # File systems | ||
754 | # | ||
755 | # CONFIG_EXT2_FS is not set | ||
756 | # CONFIG_EXT3_FS is not set | ||
757 | # CONFIG_EXT4_FS is not set | ||
758 | # CONFIG_REISERFS_FS is not set | ||
759 | # CONFIG_JFS_FS is not set | ||
760 | # CONFIG_FS_POSIX_ACL is not set | ||
761 | # CONFIG_XFS_FS is not set | ||
762 | # CONFIG_GFS2_FS is not set | ||
763 | # CONFIG_OCFS2_FS is not set | ||
764 | # CONFIG_BTRFS_FS is not set | ||
765 | CONFIG_FILE_LOCKING=y | ||
766 | # CONFIG_FSNOTIFY is not set | ||
767 | # CONFIG_INOTIFY is not set | ||
768 | # CONFIG_QUOTA is not set | ||
769 | # CONFIG_AUTOFS_FS is not set | ||
770 | # CONFIG_AUTOFS4_FS is not set | ||
771 | # CONFIG_FUSE_FS is not set | ||
772 | |||
773 | # | ||
774 | # Caches | ||
775 | # | ||
776 | # CONFIG_FSCACHE is not set | ||
777 | |||
778 | # | ||
779 | # CD-ROM/DVD Filesystems | ||
780 | # | ||
781 | # CONFIG_ISO9660_FS is not set | ||
782 | # CONFIG_UDF_FS is not set | ||
783 | |||
784 | # | ||
785 | # DOS/FAT/NT Filesystems | ||
786 | # | ||
787 | # CONFIG_MSDOS_FS is not set | ||
788 | # CONFIG_VFAT_FS is not set | ||
789 | # CONFIG_NTFS_FS is not set | ||
790 | |||
791 | # | ||
792 | # Pseudo filesystems | ||
793 | # | ||
794 | CONFIG_PROC_FS=y | ||
795 | CONFIG_PROC_KCORE=y | ||
796 | CONFIG_PROC_SYSCTL=y | ||
797 | CONFIG_PROC_PAGE_MONITOR=y | ||
798 | CONFIG_SYSFS=y | ||
799 | CONFIG_TMPFS=y | ||
800 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
801 | # CONFIG_HUGETLBFS is not set | ||
802 | # CONFIG_HUGETLB_PAGE is not set | ||
803 | # CONFIG_CONFIGFS_FS is not set | ||
804 | # CONFIG_MISC_FILESYSTEMS is not set | ||
805 | # CONFIG_NETWORK_FILESYSTEMS is not set | ||
806 | |||
807 | # | ||
808 | # Partition Types | ||
809 | # | ||
810 | # CONFIG_PARTITION_ADVANCED is not set | ||
811 | CONFIG_MSDOS_PARTITION=y | ||
812 | # CONFIG_NLS is not set | ||
813 | # CONFIG_DLM is not set | ||
814 | |||
815 | # | ||
816 | # Kernel hacking | ||
817 | # | ||
818 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
819 | # CONFIG_PRINTK_TIME is not set | ||
820 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
821 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
822 | CONFIG_FRAME_WARN=1024 | ||
823 | # CONFIG_MAGIC_SYSRQ is not set | ||
824 | # CONFIG_UNUSED_SYMBOLS is not set | ||
825 | CONFIG_DEBUG_FS=y | ||
826 | # CONFIG_HEADERS_CHECK is not set | ||
827 | # CONFIG_DEBUG_KERNEL is not set | ||
828 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
829 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
830 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
831 | # CONFIG_LATENCYTOP is not set | ||
832 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
833 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
834 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
835 | CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y | ||
836 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
837 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
838 | CONFIG_HAVE_FTRACE_SYSCALLS=y | ||
839 | CONFIG_TRACING_SUPPORT=y | ||
840 | # CONFIG_FTRACE is not set | ||
841 | # CONFIG_DYNAMIC_DEBUG is not set | ||
842 | # CONFIG_DMA_API_DEBUG is not set | ||
843 | # CONFIG_SAMPLES is not set | ||
844 | CONFIG_HAVE_ARCH_KGDB=y | ||
845 | # CONFIG_SH_STANDARD_BIOS is not set | ||
846 | # CONFIG_EARLY_SCIF_CONSOLE is not set | ||
847 | |||
848 | # | ||
849 | # Security options | ||
850 | # | ||
851 | # CONFIG_KEYS is not set | ||
852 | # CONFIG_SECURITY is not set | ||
853 | # CONFIG_SECURITYFS is not set | ||
854 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
855 | # CONFIG_CRYPTO is not set | ||
856 | # CONFIG_BINARY_PRINTF is not set | ||
857 | |||
858 | # | ||
859 | # Library routines | ||
860 | # | ||
861 | CONFIG_BITREVERSE=y | ||
862 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
863 | # CONFIG_CRC_CCITT is not set | ||
864 | # CONFIG_CRC16 is not set | ||
865 | CONFIG_CRC_T10DIF=y | ||
866 | CONFIG_CRC_ITU_T=y | ||
867 | CONFIG_CRC32=y | ||
868 | CONFIG_CRC7=y | ||
869 | # CONFIG_LIBCRC32C is not set | ||
870 | CONFIG_ZLIB_INFLATE=y | ||
871 | CONFIG_DECOMPRESS_GZIP=y | ||
872 | CONFIG_HAS_IOMEM=y | ||
873 | CONFIG_HAS_IOPORT=y | ||
874 | CONFIG_HAS_DMA=y | ||
875 | CONFIG_HAVE_LMB=y | ||
876 | CONFIG_NLATTR=y | ||
877 | CONFIG_GENERIC_ATOMIC64=y | ||
diff --git a/arch/sh/tools/mach-types b/arch/sh/tools/mach-types index fec3a53b8650..09eef360dde1 100644 --- a/arch/sh/tools/mach-types +++ b/arch/sh/tools/mach-types | |||
@@ -56,3 +56,4 @@ SH7785LCR SH_SH7785LCR | |||
56 | URQUELL SH_URQUELL | 56 | URQUELL SH_URQUELL |
57 | ESPT SH_ESPT | 57 | ESPT SH_ESPT |
58 | POLARIS SH_POLARIS | 58 | POLARIS SH_POLARIS |
59 | KFR2R09 SH_KFR2R09 | ||
diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c index 36c3dc7b8991..a7aa8f900954 100644 --- a/arch/x86/kernel/cpu/perf_counter.c +++ b/arch/x86/kernel/cpu/perf_counter.c | |||
@@ -66,6 +66,52 @@ static DEFINE_PER_CPU(struct cpu_hw_counters, cpu_hw_counters) = { | |||
66 | }; | 66 | }; |
67 | 67 | ||
68 | /* | 68 | /* |
69 | * Not sure about some of these | ||
70 | */ | ||
71 | static const u64 p6_perfmon_event_map[] = | ||
72 | { | ||
73 | [PERF_COUNT_HW_CPU_CYCLES] = 0x0079, | ||
74 | [PERF_COUNT_HW_INSTRUCTIONS] = 0x00c0, | ||
75 | [PERF_COUNT_HW_CACHE_REFERENCES] = 0x0000, | ||
76 | [PERF_COUNT_HW_CACHE_MISSES] = 0x0000, | ||
77 | [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = 0x00c4, | ||
78 | [PERF_COUNT_HW_BRANCH_MISSES] = 0x00c5, | ||
79 | [PERF_COUNT_HW_BUS_CYCLES] = 0x0062, | ||
80 | }; | ||
81 | |||
82 | static u64 p6_pmu_event_map(int event) | ||
83 | { | ||
84 | return p6_perfmon_event_map[event]; | ||
85 | } | ||
86 | |||
87 | /* | ||
88 | * Counter setting that is specified not to count anything. | ||
89 | * We use this to effectively disable a counter. | ||
90 | * | ||
91 | * L2_RQSTS with 0 MESI unit mask. | ||
92 | */ | ||
93 | #define P6_NOP_COUNTER 0x0000002EULL | ||
94 | |||
95 | static u64 p6_pmu_raw_event(u64 event) | ||
96 | { | ||
97 | #define P6_EVNTSEL_EVENT_MASK 0x000000FFULL | ||
98 | #define P6_EVNTSEL_UNIT_MASK 0x0000FF00ULL | ||
99 | #define P6_EVNTSEL_EDGE_MASK 0x00040000ULL | ||
100 | #define P6_EVNTSEL_INV_MASK 0x00800000ULL | ||
101 | #define P6_EVNTSEL_COUNTER_MASK 0xFF000000ULL | ||
102 | |||
103 | #define P6_EVNTSEL_MASK \ | ||
104 | (P6_EVNTSEL_EVENT_MASK | \ | ||
105 | P6_EVNTSEL_UNIT_MASK | \ | ||
106 | P6_EVNTSEL_EDGE_MASK | \ | ||
107 | P6_EVNTSEL_INV_MASK | \ | ||
108 | P6_EVNTSEL_COUNTER_MASK) | ||
109 | |||
110 | return event & P6_EVNTSEL_MASK; | ||
111 | } | ||
112 | |||
113 | |||
114 | /* | ||
69 | * Intel PerfMon v3. Used on Core2 and later. | 115 | * Intel PerfMon v3. Used on Core2 and later. |
70 | */ | 116 | */ |
71 | static const u64 intel_perfmon_event_map[] = | 117 | static const u64 intel_perfmon_event_map[] = |
@@ -666,6 +712,7 @@ static int __hw_perf_counter_init(struct perf_counter *counter) | |||
666 | { | 712 | { |
667 | struct perf_counter_attr *attr = &counter->attr; | 713 | struct perf_counter_attr *attr = &counter->attr; |
668 | struct hw_perf_counter *hwc = &counter->hw; | 714 | struct hw_perf_counter *hwc = &counter->hw; |
715 | u64 config; | ||
669 | int err; | 716 | int err; |
670 | 717 | ||
671 | if (!x86_pmu_initialized()) | 718 | if (!x86_pmu_initialized()) |
@@ -718,14 +765,40 @@ static int __hw_perf_counter_init(struct perf_counter *counter) | |||
718 | 765 | ||
719 | if (attr->config >= x86_pmu.max_events) | 766 | if (attr->config >= x86_pmu.max_events) |
720 | return -EINVAL; | 767 | return -EINVAL; |
768 | |||
721 | /* | 769 | /* |
722 | * The generic map: | 770 | * The generic map: |
723 | */ | 771 | */ |
724 | hwc->config |= x86_pmu.event_map(attr->config); | 772 | config = x86_pmu.event_map(attr->config); |
773 | |||
774 | if (config == 0) | ||
775 | return -ENOENT; | ||
776 | |||
777 | if (config == -1LL) | ||
778 | return -EINVAL; | ||
779 | |||
780 | hwc->config |= config; | ||
725 | 781 | ||
726 | return 0; | 782 | return 0; |
727 | } | 783 | } |
728 | 784 | ||
785 | static void p6_pmu_disable_all(void) | ||
786 | { | ||
787 | struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters); | ||
788 | u64 val; | ||
789 | |||
790 | if (!cpuc->enabled) | ||
791 | return; | ||
792 | |||
793 | cpuc->enabled = 0; | ||
794 | barrier(); | ||
795 | |||
796 | /* p6 only has one enable register */ | ||
797 | rdmsrl(MSR_P6_EVNTSEL0, val); | ||
798 | val &= ~ARCH_PERFMON_EVENTSEL0_ENABLE; | ||
799 | wrmsrl(MSR_P6_EVNTSEL0, val); | ||
800 | } | ||
801 | |||
729 | static void intel_pmu_disable_all(void) | 802 | static void intel_pmu_disable_all(void) |
730 | { | 803 | { |
731 | wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, 0); | 804 | wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, 0); |
@@ -767,6 +840,23 @@ void hw_perf_disable(void) | |||
767 | return x86_pmu.disable_all(); | 840 | return x86_pmu.disable_all(); |
768 | } | 841 | } |
769 | 842 | ||
843 | static void p6_pmu_enable_all(void) | ||
844 | { | ||
845 | struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters); | ||
846 | unsigned long val; | ||
847 | |||
848 | if (cpuc->enabled) | ||
849 | return; | ||
850 | |||
851 | cpuc->enabled = 1; | ||
852 | barrier(); | ||
853 | |||
854 | /* p6 only has one enable register */ | ||
855 | rdmsrl(MSR_P6_EVNTSEL0, val); | ||
856 | val |= ARCH_PERFMON_EVENTSEL0_ENABLE; | ||
857 | wrmsrl(MSR_P6_EVNTSEL0, val); | ||
858 | } | ||
859 | |||
770 | static void intel_pmu_enable_all(void) | 860 | static void intel_pmu_enable_all(void) |
771 | { | 861 | { |
772 | wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, x86_pmu.intel_ctrl); | 862 | wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, x86_pmu.intel_ctrl); |
@@ -784,13 +874,13 @@ static void amd_pmu_enable_all(void) | |||
784 | barrier(); | 874 | barrier(); |
785 | 875 | ||
786 | for (idx = 0; idx < x86_pmu.num_counters; idx++) { | 876 | for (idx = 0; idx < x86_pmu.num_counters; idx++) { |
877 | struct perf_counter *counter = cpuc->counters[idx]; | ||
787 | u64 val; | 878 | u64 val; |
788 | 879 | ||
789 | if (!test_bit(idx, cpuc->active_mask)) | 880 | if (!test_bit(idx, cpuc->active_mask)) |
790 | continue; | 881 | continue; |
791 | rdmsrl(MSR_K7_EVNTSEL0 + idx, val); | 882 | |
792 | if (val & ARCH_PERFMON_EVENTSEL0_ENABLE) | 883 | val = counter->hw.config; |
793 | continue; | ||
794 | val |= ARCH_PERFMON_EVENTSEL0_ENABLE; | 884 | val |= ARCH_PERFMON_EVENTSEL0_ENABLE; |
795 | wrmsrl(MSR_K7_EVNTSEL0 + idx, val); | 885 | wrmsrl(MSR_K7_EVNTSEL0 + idx, val); |
796 | } | 886 | } |
@@ -819,16 +909,13 @@ static inline void intel_pmu_ack_status(u64 ack) | |||
819 | 909 | ||
820 | static inline void x86_pmu_enable_counter(struct hw_perf_counter *hwc, int idx) | 910 | static inline void x86_pmu_enable_counter(struct hw_perf_counter *hwc, int idx) |
821 | { | 911 | { |
822 | int err; | 912 | (void)checking_wrmsrl(hwc->config_base + idx, |
823 | err = checking_wrmsrl(hwc->config_base + idx, | ||
824 | hwc->config | ARCH_PERFMON_EVENTSEL0_ENABLE); | 913 | hwc->config | ARCH_PERFMON_EVENTSEL0_ENABLE); |
825 | } | 914 | } |
826 | 915 | ||
827 | static inline void x86_pmu_disable_counter(struct hw_perf_counter *hwc, int idx) | 916 | static inline void x86_pmu_disable_counter(struct hw_perf_counter *hwc, int idx) |
828 | { | 917 | { |
829 | int err; | 918 | (void)checking_wrmsrl(hwc->config_base + idx, hwc->config); |
830 | err = checking_wrmsrl(hwc->config_base + idx, | ||
831 | hwc->config); | ||
832 | } | 919 | } |
833 | 920 | ||
834 | static inline void | 921 | static inline void |
@@ -836,13 +923,24 @@ intel_pmu_disable_fixed(struct hw_perf_counter *hwc, int __idx) | |||
836 | { | 923 | { |
837 | int idx = __idx - X86_PMC_IDX_FIXED; | 924 | int idx = __idx - X86_PMC_IDX_FIXED; |
838 | u64 ctrl_val, mask; | 925 | u64 ctrl_val, mask; |
839 | int err; | ||
840 | 926 | ||
841 | mask = 0xfULL << (idx * 4); | 927 | mask = 0xfULL << (idx * 4); |
842 | 928 | ||
843 | rdmsrl(hwc->config_base, ctrl_val); | 929 | rdmsrl(hwc->config_base, ctrl_val); |
844 | ctrl_val &= ~mask; | 930 | ctrl_val &= ~mask; |
845 | err = checking_wrmsrl(hwc->config_base, ctrl_val); | 931 | (void)checking_wrmsrl(hwc->config_base, ctrl_val); |
932 | } | ||
933 | |||
934 | static inline void | ||
935 | p6_pmu_disable_counter(struct hw_perf_counter *hwc, int idx) | ||
936 | { | ||
937 | struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters); | ||
938 | u64 val = P6_NOP_COUNTER; | ||
939 | |||
940 | if (cpuc->enabled) | ||
941 | val |= ARCH_PERFMON_EVENTSEL0_ENABLE; | ||
942 | |||
943 | (void)checking_wrmsrl(hwc->config_base + idx, val); | ||
846 | } | 944 | } |
847 | 945 | ||
848 | static inline void | 946 | static inline void |
@@ -943,6 +1041,19 @@ intel_pmu_enable_fixed(struct hw_perf_counter *hwc, int __idx) | |||
943 | err = checking_wrmsrl(hwc->config_base, ctrl_val); | 1041 | err = checking_wrmsrl(hwc->config_base, ctrl_val); |
944 | } | 1042 | } |
945 | 1043 | ||
1044 | static void p6_pmu_enable_counter(struct hw_perf_counter *hwc, int idx) | ||
1045 | { | ||
1046 | struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters); | ||
1047 | u64 val; | ||
1048 | |||
1049 | val = hwc->config; | ||
1050 | if (cpuc->enabled) | ||
1051 | val |= ARCH_PERFMON_EVENTSEL0_ENABLE; | ||
1052 | |||
1053 | (void)checking_wrmsrl(hwc->config_base + idx, val); | ||
1054 | } | ||
1055 | |||
1056 | |||
946 | static void intel_pmu_enable_counter(struct hw_perf_counter *hwc, int idx) | 1057 | static void intel_pmu_enable_counter(struct hw_perf_counter *hwc, int idx) |
947 | { | 1058 | { |
948 | if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) { | 1059 | if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) { |
@@ -959,8 +1070,6 @@ static void amd_pmu_enable_counter(struct hw_perf_counter *hwc, int idx) | |||
959 | 1070 | ||
960 | if (cpuc->enabled) | 1071 | if (cpuc->enabled) |
961 | x86_pmu_enable_counter(hwc, idx); | 1072 | x86_pmu_enable_counter(hwc, idx); |
962 | else | ||
963 | x86_pmu_disable_counter(hwc, idx); | ||
964 | } | 1073 | } |
965 | 1074 | ||
966 | static int | 1075 | static int |
@@ -1176,6 +1285,49 @@ static void intel_pmu_reset(void) | |||
1176 | local_irq_restore(flags); | 1285 | local_irq_restore(flags); |
1177 | } | 1286 | } |
1178 | 1287 | ||
1288 | static int p6_pmu_handle_irq(struct pt_regs *regs) | ||
1289 | { | ||
1290 | struct perf_sample_data data; | ||
1291 | struct cpu_hw_counters *cpuc; | ||
1292 | struct perf_counter *counter; | ||
1293 | struct hw_perf_counter *hwc; | ||
1294 | int idx, handled = 0; | ||
1295 | u64 val; | ||
1296 | |||
1297 | data.regs = regs; | ||
1298 | data.addr = 0; | ||
1299 | |||
1300 | cpuc = &__get_cpu_var(cpu_hw_counters); | ||
1301 | |||
1302 | for (idx = 0; idx < x86_pmu.num_counters; idx++) { | ||
1303 | if (!test_bit(idx, cpuc->active_mask)) | ||
1304 | continue; | ||
1305 | |||
1306 | counter = cpuc->counters[idx]; | ||
1307 | hwc = &counter->hw; | ||
1308 | |||
1309 | val = x86_perf_counter_update(counter, hwc, idx); | ||
1310 | if (val & (1ULL << (x86_pmu.counter_bits - 1))) | ||
1311 | continue; | ||
1312 | |||
1313 | /* | ||
1314 | * counter overflow | ||
1315 | */ | ||
1316 | handled = 1; | ||
1317 | data.period = counter->hw.last_period; | ||
1318 | |||
1319 | if (!x86_perf_counter_set_period(counter, hwc, idx)) | ||
1320 | continue; | ||
1321 | |||
1322 | if (perf_counter_overflow(counter, 1, &data)) | ||
1323 | p6_pmu_disable_counter(hwc, idx); | ||
1324 | } | ||
1325 | |||
1326 | if (handled) | ||
1327 | inc_irq_stat(apic_perf_irqs); | ||
1328 | |||
1329 | return handled; | ||
1330 | } | ||
1179 | 1331 | ||
1180 | /* | 1332 | /* |
1181 | * This handler is triggered by the local APIC, so the APIC IRQ handling | 1333 | * This handler is triggered by the local APIC, so the APIC IRQ handling |
@@ -1185,14 +1337,13 @@ static int intel_pmu_handle_irq(struct pt_regs *regs) | |||
1185 | { | 1337 | { |
1186 | struct perf_sample_data data; | 1338 | struct perf_sample_data data; |
1187 | struct cpu_hw_counters *cpuc; | 1339 | struct cpu_hw_counters *cpuc; |
1188 | int bit, cpu, loops; | 1340 | int bit, loops; |
1189 | u64 ack, status; | 1341 | u64 ack, status; |
1190 | 1342 | ||
1191 | data.regs = regs; | 1343 | data.regs = regs; |
1192 | data.addr = 0; | 1344 | data.addr = 0; |
1193 | 1345 | ||
1194 | cpu = smp_processor_id(); | 1346 | cpuc = &__get_cpu_var(cpu_hw_counters); |
1195 | cpuc = &per_cpu(cpu_hw_counters, cpu); | ||
1196 | 1347 | ||
1197 | perf_disable(); | 1348 | perf_disable(); |
1198 | status = intel_pmu_get_status(); | 1349 | status = intel_pmu_get_status(); |
@@ -1249,14 +1400,13 @@ static int amd_pmu_handle_irq(struct pt_regs *regs) | |||
1249 | struct cpu_hw_counters *cpuc; | 1400 | struct cpu_hw_counters *cpuc; |
1250 | struct perf_counter *counter; | 1401 | struct perf_counter *counter; |
1251 | struct hw_perf_counter *hwc; | 1402 | struct hw_perf_counter *hwc; |
1252 | int cpu, idx, handled = 0; | 1403 | int idx, handled = 0; |
1253 | u64 val; | 1404 | u64 val; |
1254 | 1405 | ||
1255 | data.regs = regs; | 1406 | data.regs = regs; |
1256 | data.addr = 0; | 1407 | data.addr = 0; |
1257 | 1408 | ||
1258 | cpu = smp_processor_id(); | 1409 | cpuc = &__get_cpu_var(cpu_hw_counters); |
1259 | cpuc = &per_cpu(cpu_hw_counters, cpu); | ||
1260 | 1410 | ||
1261 | for (idx = 0; idx < x86_pmu.num_counters; idx++) { | 1411 | for (idx = 0; idx < x86_pmu.num_counters; idx++) { |
1262 | if (!test_bit(idx, cpuc->active_mask)) | 1412 | if (!test_bit(idx, cpuc->active_mask)) |
@@ -1353,6 +1503,32 @@ static __read_mostly struct notifier_block perf_counter_nmi_notifier = { | |||
1353 | .priority = 1 | 1503 | .priority = 1 |
1354 | }; | 1504 | }; |
1355 | 1505 | ||
1506 | static struct x86_pmu p6_pmu = { | ||
1507 | .name = "p6", | ||
1508 | .handle_irq = p6_pmu_handle_irq, | ||
1509 | .disable_all = p6_pmu_disable_all, | ||
1510 | .enable_all = p6_pmu_enable_all, | ||
1511 | .enable = p6_pmu_enable_counter, | ||
1512 | .disable = p6_pmu_disable_counter, | ||
1513 | .eventsel = MSR_P6_EVNTSEL0, | ||
1514 | .perfctr = MSR_P6_PERFCTR0, | ||
1515 | .event_map = p6_pmu_event_map, | ||
1516 | .raw_event = p6_pmu_raw_event, | ||
1517 | .max_events = ARRAY_SIZE(p6_perfmon_event_map), | ||
1518 | .max_period = (1ULL << 31) - 1, | ||
1519 | .version = 0, | ||
1520 | .num_counters = 2, | ||
1521 | /* | ||
1522 | * Counters have 40 bits implemented. However they are designed such | ||
1523 | * that bits [32-39] are sign extensions of bit 31. As such the | ||
1524 | * effective width of a counter for P6-like PMU is 32 bits only. | ||
1525 | * | ||
1526 | * See IA-32 Intel Architecture Software developer manual Vol 3B | ||
1527 | */ | ||
1528 | .counter_bits = 32, | ||
1529 | .counter_mask = (1ULL << 32) - 1, | ||
1530 | }; | ||
1531 | |||
1356 | static struct x86_pmu intel_pmu = { | 1532 | static struct x86_pmu intel_pmu = { |
1357 | .name = "Intel", | 1533 | .name = "Intel", |
1358 | .handle_irq = intel_pmu_handle_irq, | 1534 | .handle_irq = intel_pmu_handle_irq, |
@@ -1392,6 +1568,37 @@ static struct x86_pmu amd_pmu = { | |||
1392 | .max_period = (1ULL << 47) - 1, | 1568 | .max_period = (1ULL << 47) - 1, |
1393 | }; | 1569 | }; |
1394 | 1570 | ||
1571 | static int p6_pmu_init(void) | ||
1572 | { | ||
1573 | switch (boot_cpu_data.x86_model) { | ||
1574 | case 1: | ||
1575 | case 3: /* Pentium Pro */ | ||
1576 | case 5: | ||
1577 | case 6: /* Pentium II */ | ||
1578 | case 7: | ||
1579 | case 8: | ||
1580 | case 11: /* Pentium III */ | ||
1581 | break; | ||
1582 | case 9: | ||
1583 | case 13: | ||
1584 | /* Pentium M */ | ||
1585 | break; | ||
1586 | default: | ||
1587 | pr_cont("unsupported p6 CPU model %d ", | ||
1588 | boot_cpu_data.x86_model); | ||
1589 | return -ENODEV; | ||
1590 | } | ||
1591 | |||
1592 | if (!cpu_has_apic) { | ||
1593 | pr_info("no Local APIC, try rebooting with lapic"); | ||
1594 | return -ENODEV; | ||
1595 | } | ||
1596 | |||
1597 | x86_pmu = p6_pmu; | ||
1598 | |||
1599 | return 0; | ||
1600 | } | ||
1601 | |||
1395 | static int intel_pmu_init(void) | 1602 | static int intel_pmu_init(void) |
1396 | { | 1603 | { |
1397 | union cpuid10_edx edx; | 1604 | union cpuid10_edx edx; |
@@ -1400,8 +1607,14 @@ static int intel_pmu_init(void) | |||
1400 | unsigned int ebx; | 1607 | unsigned int ebx; |
1401 | int version; | 1608 | int version; |
1402 | 1609 | ||
1403 | if (!cpu_has(&boot_cpu_data, X86_FEATURE_ARCH_PERFMON)) | 1610 | if (!cpu_has(&boot_cpu_data, X86_FEATURE_ARCH_PERFMON)) { |
1611 | /* check for P6 processor family */ | ||
1612 | if (boot_cpu_data.x86 == 6) { | ||
1613 | return p6_pmu_init(); | ||
1614 | } else { | ||
1404 | return -ENODEV; | 1615 | return -ENODEV; |
1616 | } | ||
1617 | } | ||
1405 | 1618 | ||
1406 | /* | 1619 | /* |
1407 | * Check whether the Architectural PerfMon supports | 1620 | * Check whether the Architectural PerfMon supports |