diff options
Diffstat (limited to 'arch/powerpc')
23 files changed, 156 insertions, 53 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 17903f1f356b..e7fb8edb629b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -118,14 +118,12 @@ config PPC | |||
118 | select HAVE_SYSCALL_WRAPPERS if PPC64 | 118 | select HAVE_SYSCALL_WRAPPERS if PPC64 |
119 | select GENERIC_ATOMIC64 if PPC32 | 119 | select GENERIC_ATOMIC64 if PPC32 |
120 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 120 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
121 | select HAVE_IRQ_WORK | ||
122 | select HAVE_PERF_EVENTS | 121 | select HAVE_PERF_EVENTS |
123 | select HAVE_REGS_AND_STACK_ACCESS_API | 122 | select HAVE_REGS_AND_STACK_ACCESS_API |
124 | select HAVE_HW_BREAKPOINT if PERF_EVENTS && PPC_BOOK3S_64 | 123 | select HAVE_HW_BREAKPOINT if PERF_EVENTS && PPC_BOOK3S_64 |
125 | select HAVE_GENERIC_HARDIRQS | 124 | select HAVE_GENERIC_HARDIRQS |
126 | select ARCH_WANT_IPC_PARSE_VERSION | 125 | select ARCH_WANT_IPC_PARSE_VERSION |
127 | select SPARSE_IRQ | 126 | select SPARSE_IRQ |
128 | select IRQ_PER_CPU | ||
129 | select IRQ_DOMAIN | 127 | select IRQ_DOMAIN |
130 | select GENERIC_IRQ_SHOW | 128 | select GENERIC_IRQ_SHOW |
131 | select GENERIC_IRQ_SHOW_LEVEL | 129 | select GENERIC_IRQ_SHOW_LEVEL |
@@ -334,7 +332,7 @@ config SWIOTLB | |||
334 | 332 | ||
335 | config HOTPLUG_CPU | 333 | config HOTPLUG_CPU |
336 | bool "Support for enabling/disabling CPUs" | 334 | bool "Support for enabling/disabling CPUs" |
337 | depends on SMP && HOTPLUG && EXPERIMENTAL && (PPC_PSERIES || \ | 335 | depends on SMP && HOTPLUG && (PPC_PSERIES || \ |
338 | PPC_PMAC || PPC_POWERNV || (PPC_85xx && !PPC_E500MC)) | 336 | PPC_PMAC || PPC_POWERNV || (PPC_85xx && !PPC_E500MC)) |
339 | ---help--- | 337 | ---help--- |
340 | Say Y here to be able to disable and re-enable individual | 338 | Say Y here to be able to disable and re-enable individual |
@@ -356,8 +354,8 @@ config ARCH_ENABLE_MEMORY_HOTREMOVE | |||
356 | def_bool y | 354 | def_bool y |
357 | 355 | ||
358 | config KEXEC | 356 | config KEXEC |
359 | bool "kexec system call (EXPERIMENTAL)" | 357 | bool "kexec system call" |
360 | depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) && EXPERIMENTAL | 358 | depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) |
361 | help | 359 | help |
362 | kexec is a system call that implements the ability to shutdown your | 360 | kexec is a system call that implements the ability to shutdown your |
363 | current kernel, and to start another kernel. It is like a reboot | 361 | current kernel, and to start another kernel. It is like a reboot |
@@ -852,8 +850,8 @@ config LOWMEM_CAM_NUM | |||
852 | default 3 | 850 | default 3 |
853 | 851 | ||
854 | config DYNAMIC_MEMSTART | 852 | config DYNAMIC_MEMSTART |
855 | bool "Enable page aligned dynamic load address for kernel (EXPERIMENTAL)" | 853 | bool "Enable page aligned dynamic load address for kernel" |
856 | depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x) | 854 | depends on ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x) |
857 | select NONSTATIC_KERNEL | 855 | select NONSTATIC_KERNEL |
858 | help | 856 | help |
859 | This option enables the kernel to be loaded at any page aligned | 857 | This option enables the kernel to be loaded at any page aligned |
@@ -870,8 +868,8 @@ config DYNAMIC_MEMSTART | |||
870 | This option is overridden by CONFIG_RELOCATABLE | 868 | This option is overridden by CONFIG_RELOCATABLE |
871 | 869 | ||
872 | config RELOCATABLE | 870 | config RELOCATABLE |
873 | bool "Build a relocatable kernel (EXPERIMENTAL)" | 871 | bool "Build a relocatable kernel" |
874 | depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && 44x | 872 | depends on ADVANCED_OPTIONS && FLATMEM && 44x |
875 | select NONSTATIC_KERNEL | 873 | select NONSTATIC_KERNEL |
876 | help | 874 | help |
877 | This builds a kernel image that is capable of running at the | 875 | This builds a kernel image that is capable of running at the |
diff --git a/arch/powerpc/configs/chroma_defconfig b/arch/powerpc/configs/chroma_defconfig index 29bb11ec6c64..4f35fc462385 100644 --- a/arch/powerpc/configs/chroma_defconfig +++ b/arch/powerpc/configs/chroma_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | CONFIG_PPC64=y | 1 | CONFIG_PPC64=y |
2 | CONFIG_PPC_BOOK3E_64=y | 2 | CONFIG_PPC_BOOK3E_64=y |
3 | # CONFIG_VIRT_CPU_ACCOUNTING is not set | 3 | # CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set |
4 | CONFIG_SMP=y | 4 | CONFIG_SMP=y |
5 | CONFIG_NR_CPUS=256 | 5 | CONFIG_NR_CPUS=256 |
6 | CONFIG_EXPERIMENTAL=y | 6 | CONFIG_EXPERIMENTAL=y |
diff --git a/arch/powerpc/configs/corenet64_smp_defconfig b/arch/powerpc/configs/corenet64_smp_defconfig index 88fa5c46f66f..f7df8362911f 100644 --- a/arch/powerpc/configs/corenet64_smp_defconfig +++ b/arch/powerpc/configs/corenet64_smp_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | CONFIG_PPC64=y | 1 | CONFIG_PPC64=y |
2 | CONFIG_PPC_BOOK3E_64=y | 2 | CONFIG_PPC_BOOK3E_64=y |
3 | # CONFIG_VIRT_CPU_ACCOUNTING is not set | 3 | # CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set |
4 | CONFIG_SMP=y | 4 | CONFIG_SMP=y |
5 | CONFIG_NR_CPUS=2 | 5 | CONFIG_NR_CPUS=2 |
6 | CONFIG_EXPERIMENTAL=y | 6 | CONFIG_EXPERIMENTAL=y |
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig index 840a2c2d0430..bcedeea0df89 100644 --- a/arch/powerpc/configs/pasemi_defconfig +++ b/arch/powerpc/configs/pasemi_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | CONFIG_PPC64=y | 1 | CONFIG_PPC64=y |
2 | CONFIG_ALTIVEC=y | 2 | CONFIG_ALTIVEC=y |
3 | # CONFIG_VIRT_CPU_ACCOUNTING is not set | 3 | # CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set |
4 | CONFIG_SMP=y | 4 | CONFIG_SMP=y |
5 | CONFIG_NR_CPUS=2 | 5 | CONFIG_NR_CPUS=2 |
6 | CONFIG_EXPERIMENTAL=y | 6 | CONFIG_EXPERIMENTAL=y |
diff --git a/arch/powerpc/include/asm/cputime.h b/arch/powerpc/include/asm/cputime.h index 483733bd06d4..607559ab271f 100644 --- a/arch/powerpc/include/asm/cputime.h +++ b/arch/powerpc/include/asm/cputime.h | |||
@@ -8,7 +8,7 @@ | |||
8 | * as published by the Free Software Foundation; either version | 8 | * as published by the Free Software Foundation; either version |
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | * | 10 | * |
11 | * If we have CONFIG_VIRT_CPU_ACCOUNTING, we measure cpu time in | 11 | * If we have CONFIG_VIRT_CPU_ACCOUNTING_NATIVE, we measure cpu time in |
12 | * the same units as the timebase. Otherwise we measure cpu time | 12 | * the same units as the timebase. Otherwise we measure cpu time |
13 | * in jiffies using the generic definitions. | 13 | * in jiffies using the generic definitions. |
14 | */ | 14 | */ |
@@ -16,7 +16,7 @@ | |||
16 | #ifndef __POWERPC_CPUTIME_H | 16 | #ifndef __POWERPC_CPUTIME_H |
17 | #define __POWERPC_CPUTIME_H | 17 | #define __POWERPC_CPUTIME_H |
18 | 18 | ||
19 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING | 19 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE |
20 | #include <asm-generic/cputime.h> | 20 | #include <asm-generic/cputime.h> |
21 | #ifdef __KERNEL__ | 21 | #ifdef __KERNEL__ |
22 | static inline void setup_cputime_one_jiffy(void) { } | 22 | static inline void setup_cputime_one_jiffy(void) { } |
@@ -231,5 +231,5 @@ static inline cputime_t clock_t_to_cputime(const unsigned long clk) | |||
231 | static inline void arch_vtime_task_switch(struct task_struct *tsk) { } | 231 | static inline void arch_vtime_task_switch(struct task_struct *tsk) { } |
232 | 232 | ||
233 | #endif /* __KERNEL__ */ | 233 | #endif /* __KERNEL__ */ |
234 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING */ | 234 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
235 | #endif /* __POWERPC_CPUTIME_H */ | 235 | #endif /* __POWERPC_CPUTIME_H */ |
diff --git a/arch/powerpc/include/asm/lppaca.h b/arch/powerpc/include/asm/lppaca.h index 531fe0c3108f..b1e7f2af1016 100644 --- a/arch/powerpc/include/asm/lppaca.h +++ b/arch/powerpc/include/asm/lppaca.h | |||
@@ -145,7 +145,7 @@ struct dtl_entry { | |||
145 | extern struct kmem_cache *dtl_cache; | 145 | extern struct kmem_cache *dtl_cache; |
146 | 146 | ||
147 | /* | 147 | /* |
148 | * When CONFIG_VIRT_CPU_ACCOUNTING = y, the cpu accounting code controls | 148 | * When CONFIG_VIRT_CPU_ACCOUNTING_NATIVE = y, the cpu accounting code controls |
149 | * reading from the dispatch trace log. If other code wants to consume | 149 | * reading from the dispatch trace log. If other code wants to consume |
150 | * DTL entries, it can set this pointer to a function that will get | 150 | * DTL entries, it can set this pointer to a function that will get |
151 | * called once for each DTL entry that gets processed. | 151 | * called once for each DTL entry that gets processed. |
diff --git a/arch/powerpc/include/asm/perf_event_server.h b/arch/powerpc/include/asm/perf_event_server.h index 9710be3a2d17..136bba62efa4 100644 --- a/arch/powerpc/include/asm/perf_event_server.h +++ b/arch/powerpc/include/asm/perf_event_server.h | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <asm/hw_irq.h> | 13 | #include <asm/hw_irq.h> |
14 | #include <linux/device.h> | ||
14 | 15 | ||
15 | #define MAX_HWEVENTS 8 | 16 | #define MAX_HWEVENTS 8 |
16 | #define MAX_EVENT_ALTERNATIVES 8 | 17 | #define MAX_EVENT_ALTERNATIVES 8 |
@@ -35,6 +36,7 @@ struct power_pmu { | |||
35 | void (*disable_pmc)(unsigned int pmc, unsigned long mmcr[]); | 36 | void (*disable_pmc)(unsigned int pmc, unsigned long mmcr[]); |
36 | int (*limited_pmc_event)(u64 event_id); | 37 | int (*limited_pmc_event)(u64 event_id); |
37 | u32 flags; | 38 | u32 flags; |
39 | const struct attribute_group **attr_groups; | ||
38 | int n_generic; | 40 | int n_generic; |
39 | int *generic_events; | 41 | int *generic_events; |
40 | int (*cache_events)[PERF_COUNT_HW_CACHE_MAX] | 42 | int (*cache_events)[PERF_COUNT_HW_CACHE_MAX] |
@@ -109,3 +111,27 @@ extern unsigned long perf_instruction_pointer(struct pt_regs *regs); | |||
109 | * If an event_id is not subject to the constraint expressed by a particular | 111 | * If an event_id is not subject to the constraint expressed by a particular |
110 | * field, then it will have 0 in both the mask and value for that field. | 112 | * field, then it will have 0 in both the mask and value for that field. |
111 | */ | 113 | */ |
114 | |||
115 | extern ssize_t power_events_sysfs_show(struct device *dev, | ||
116 | struct device_attribute *attr, char *page); | ||
117 | |||
118 | /* | ||
119 | * EVENT_VAR() is same as PMU_EVENT_VAR with a suffix. | ||
120 | * | ||
121 | * Having a suffix allows us to have aliases in sysfs - eg: the generic | ||
122 | * event 'cpu-cycles' can have two entries in sysfs: 'cpu-cycles' and | ||
123 | * 'PM_CYC' where the latter is the name by which the event is known in | ||
124 | * POWER CPU specification. | ||
125 | */ | ||
126 | #define EVENT_VAR(_id, _suffix) event_attr_##_id##_suffix | ||
127 | #define EVENT_PTR(_id, _suffix) &EVENT_VAR(_id, _suffix).attr.attr | ||
128 | |||
129 | #define EVENT_ATTR(_name, _id, _suffix) \ | ||
130 | PMU_EVENT_ATTR(_name, EVENT_VAR(_id, _suffix), PME_PM_##_id, \ | ||
131 | power_events_sysfs_show) | ||
132 | |||
133 | #define GENERIC_EVENT_ATTR(_name, _id) EVENT_ATTR(_name, _id, _g) | ||
134 | #define GENERIC_EVENT_PTR(_id) EVENT_PTR(_id, _g) | ||
135 | |||
136 | #define POWER_EVENT_ATTR(_name, _id) EVENT_ATTR(PM_##_name, _id, _p) | ||
137 | #define POWER_EVENT_PTR(_id) EVENT_PTR(_id, _p) | ||
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index ea2a86e8ff95..2d0e1f5d8339 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h | |||
@@ -24,7 +24,7 @@ | |||
24 | * user_time and system_time fields in the paca. | 24 | * user_time and system_time fields in the paca. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING | 27 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE |
28 | #define ACCOUNT_CPU_USER_ENTRY(ra, rb) | 28 | #define ACCOUNT_CPU_USER_ENTRY(ra, rb) |
29 | #define ACCOUNT_CPU_USER_EXIT(ra, rb) | 29 | #define ACCOUNT_CPU_USER_EXIT(ra, rb) |
30 | #define ACCOUNT_STOLEN_TIME | 30 | #define ACCOUNT_STOLEN_TIME |
@@ -70,7 +70,7 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR) | |||
70 | 70 | ||
71 | #endif /* CONFIG_PPC_SPLPAR */ | 71 | #endif /* CONFIG_PPC_SPLPAR */ |
72 | 72 | ||
73 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING */ | 73 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
74 | 74 | ||
75 | /* | 75 | /* |
76 | * Macros for storing registers into and loading registers from | 76 | * Macros for storing registers into and loading registers from |
diff --git a/arch/powerpc/include/uapi/asm/socket.h b/arch/powerpc/include/uapi/asm/socket.h index eb0b1864d400..a26dcaece509 100644 --- a/arch/powerpc/include/uapi/asm/socket.h +++ b/arch/powerpc/include/uapi/asm/socket.h | |||
@@ -29,7 +29,7 @@ | |||
29 | #define SO_PRIORITY 12 | 29 | #define SO_PRIORITY 12 |
30 | #define SO_LINGER 13 | 30 | #define SO_LINGER 13 |
31 | #define SO_BSDCOMPAT 14 | 31 | #define SO_BSDCOMPAT 14 |
32 | /* To add :#define SO_REUSEPORT 15 */ | 32 | #define SO_REUSEPORT 15 |
33 | #define SO_RCVLOWAT 16 | 33 | #define SO_RCVLOWAT 16 |
34 | #define SO_SNDLOWAT 17 | 34 | #define SO_SNDLOWAT 17 |
35 | #define SO_RCVTIMEO 18 | 35 | #define SO_RCVTIMEO 18 |
@@ -77,4 +77,6 @@ | |||
77 | /* Instruct lower device to use last 4-bytes of skb data as FCS */ | 77 | /* Instruct lower device to use last 4-bytes of skb data as FCS */ |
78 | #define SO_NOFCS 43 | 78 | #define SO_NOFCS 43 |
79 | 79 | ||
80 | #define SO_LOCK_FILTER 44 | ||
81 | |||
80 | #endif /* _ASM_POWERPC_SOCKET_H */ | 82 | #endif /* _ASM_POWERPC_SOCKET_H */ |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 3d990d3bd8ba..ac057013f9fd 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -94,7 +94,7 @@ system_call_common: | |||
94 | addi r9,r1,STACK_FRAME_OVERHEAD | 94 | addi r9,r1,STACK_FRAME_OVERHEAD |
95 | ld r11,exception_marker@toc(r2) | 95 | ld r11,exception_marker@toc(r2) |
96 | std r11,-16(r9) /* "regshere" marker */ | 96 | std r11,-16(r9) /* "regshere" marker */ |
97 | #if defined(CONFIG_VIRT_CPU_ACCOUNTING) && defined(CONFIG_PPC_SPLPAR) | 97 | #if defined(CONFIG_VIRT_CPU_ACCOUNTING_NATIVE) && defined(CONFIG_PPC_SPLPAR) |
98 | BEGIN_FW_FTR_SECTION | 98 | BEGIN_FW_FTR_SECTION |
99 | beq 33f | 99 | beq 33f |
100 | /* if from user, see if there are any DTL entries to process */ | 100 | /* if from user, see if there are any DTL entries to process */ |
@@ -110,7 +110,7 @@ BEGIN_FW_FTR_SECTION | |||
110 | addi r9,r1,STACK_FRAME_OVERHEAD | 110 | addi r9,r1,STACK_FRAME_OVERHEAD |
111 | 33: | 111 | 33: |
112 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR) | 112 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR) |
113 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING && CONFIG_PPC_SPLPAR */ | 113 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE && CONFIG_PPC_SPLPAR */ |
114 | 114 | ||
115 | /* | 115 | /* |
116 | * A syscall should always be called with interrupts enabled | 116 | * A syscall should always be called with interrupts enabled |
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 127361e093f4..f77fa22754bc 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -143,7 +143,7 @@ EXPORT_SYMBOL_GPL(ppc_proc_freq); | |||
143 | unsigned long ppc_tb_freq; | 143 | unsigned long ppc_tb_freq; |
144 | EXPORT_SYMBOL_GPL(ppc_tb_freq); | 144 | EXPORT_SYMBOL_GPL(ppc_tb_freq); |
145 | 145 | ||
146 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 146 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE |
147 | /* | 147 | /* |
148 | * Factors for converting from cputime_t (timebase ticks) to | 148 | * Factors for converting from cputime_t (timebase ticks) to |
149 | * jiffies, microseconds, seconds, and clock_t (1/USER_HZ seconds). | 149 | * jiffies, microseconds, seconds, and clock_t (1/USER_HZ seconds). |
@@ -347,6 +347,7 @@ void vtime_account_system(struct task_struct *tsk) | |||
347 | if (stolen) | 347 | if (stolen) |
348 | account_steal_time(stolen); | 348 | account_steal_time(stolen); |
349 | } | 349 | } |
350 | EXPORT_SYMBOL_GPL(vtime_account_system); | ||
350 | 351 | ||
351 | void vtime_account_idle(struct task_struct *tsk) | 352 | void vtime_account_idle(struct task_struct *tsk) |
352 | { | 353 | { |
@@ -377,7 +378,7 @@ void vtime_account_user(struct task_struct *tsk) | |||
377 | account_user_time(tsk, utime, utimescaled); | 378 | account_user_time(tsk, utime, utimescaled); |
378 | } | 379 | } |
379 | 380 | ||
380 | #else /* ! CONFIG_VIRT_CPU_ACCOUNTING */ | 381 | #else /* ! CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
381 | #define calc_cputime_factors() | 382 | #define calc_cputime_factors() |
382 | #endif | 383 | #endif |
383 | 384 | ||
@@ -668,7 +669,7 @@ int update_persistent_clock(struct timespec now) | |||
668 | struct rtc_time tm; | 669 | struct rtc_time tm; |
669 | 670 | ||
670 | if (!ppc_md.set_rtc_time) | 671 | if (!ppc_md.set_rtc_time) |
671 | return 0; | 672 | return -ENODEV; |
672 | 673 | ||
673 | to_tm(now.tv_sec + 1 + timezone_offset, &tm); | 674 | to_tm(now.tv_sec + 1 + timezone_offset, &tm); |
674 | tm.tm_year -= 1900; | 675 | tm.tm_year -= 1900; |
diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig index 4730c953f435..63c67ec72e43 100644 --- a/arch/powerpc/kvm/Kconfig +++ b/arch/powerpc/kvm/Kconfig | |||
@@ -41,7 +41,7 @@ config KVM_BOOK3S_PR | |||
41 | 41 | ||
42 | config KVM_BOOK3S_32 | 42 | config KVM_BOOK3S_32 |
43 | tristate "KVM support for PowerPC book3s_32 processors" | 43 | tristate "KVM support for PowerPC book3s_32 processors" |
44 | depends on EXPERIMENTAL && PPC_BOOK3S_32 && !SMP && !PTE_64BIT | 44 | depends on PPC_BOOK3S_32 && !SMP && !PTE_64BIT |
45 | select KVM | 45 | select KVM |
46 | select KVM_BOOK3S_32_HANDLER | 46 | select KVM_BOOK3S_32_HANDLER |
47 | select KVM_BOOK3S_PR | 47 | select KVM_BOOK3S_PR |
@@ -56,7 +56,7 @@ config KVM_BOOK3S_32 | |||
56 | 56 | ||
57 | config KVM_BOOK3S_64 | 57 | config KVM_BOOK3S_64 |
58 | tristate "KVM support for PowerPC book3s_64 processors" | 58 | tristate "KVM support for PowerPC book3s_64 processors" |
59 | depends on EXPERIMENTAL && PPC_BOOK3S_64 | 59 | depends on PPC_BOOK3S_64 |
60 | select KVM_BOOK3S_64_HANDLER | 60 | select KVM_BOOK3S_64_HANDLER |
61 | select KVM | 61 | select KVM |
62 | ---help--- | 62 | ---help--- |
@@ -97,7 +97,7 @@ config KVM_BOOKE_HV | |||
97 | 97 | ||
98 | config KVM_440 | 98 | config KVM_440 |
99 | bool "KVM support for PowerPC 440 processors" | 99 | bool "KVM support for PowerPC 440 processors" |
100 | depends on EXPERIMENTAL && 44x | 100 | depends on 44x |
101 | select KVM | 101 | select KVM |
102 | select KVM_MMIO | 102 | select KVM_MMIO |
103 | ---help--- | 103 | ---help--- |
@@ -122,7 +122,7 @@ config KVM_EXIT_TIMING | |||
122 | 122 | ||
123 | config KVM_E500V2 | 123 | config KVM_E500V2 |
124 | bool "KVM support for PowerPC E500v2 processors" | 124 | bool "KVM support for PowerPC E500v2 processors" |
125 | depends on EXPERIMENTAL && E500 && !PPC_E500MC | 125 | depends on E500 && !PPC_E500MC |
126 | select KVM | 126 | select KVM |
127 | select KVM_MMIO | 127 | select KVM_MMIO |
128 | select MMU_NOTIFIER | 128 | select MMU_NOTIFIER |
@@ -137,7 +137,7 @@ config KVM_E500V2 | |||
137 | 137 | ||
138 | config KVM_E500MC | 138 | config KVM_E500MC |
139 | bool "KVM support for PowerPC E500MC/E5500 processors" | 139 | bool "KVM support for PowerPC E500MC/E5500 processors" |
140 | depends on EXPERIMENTAL && PPC_E500MC | 140 | depends on PPC_E500MC |
141 | select KVM | 141 | select KVM |
142 | select KVM_MMIO | 142 | select KVM_MMIO |
143 | select KVM_BOOKE_HV | 143 | select KVM_BOOKE_HV |
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c index aa2465e21f1a..fa476d50791f 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c | |||
@@ -1305,6 +1305,16 @@ static int power_pmu_event_idx(struct perf_event *event) | |||
1305 | return event->hw.idx; | 1305 | return event->hw.idx; |
1306 | } | 1306 | } |
1307 | 1307 | ||
1308 | ssize_t power_events_sysfs_show(struct device *dev, | ||
1309 | struct device_attribute *attr, char *page) | ||
1310 | { | ||
1311 | struct perf_pmu_events_attr *pmu_attr; | ||
1312 | |||
1313 | pmu_attr = container_of(attr, struct perf_pmu_events_attr, attr); | ||
1314 | |||
1315 | return sprintf(page, "event=0x%02llx\n", pmu_attr->id); | ||
1316 | } | ||
1317 | |||
1308 | struct pmu power_pmu = { | 1318 | struct pmu power_pmu = { |
1309 | .pmu_enable = power_pmu_enable, | 1319 | .pmu_enable = power_pmu_enable, |
1310 | .pmu_disable = power_pmu_disable, | 1320 | .pmu_disable = power_pmu_disable, |
@@ -1537,6 +1547,8 @@ int __cpuinit register_power_pmu(struct power_pmu *pmu) | |||
1537 | pr_info("%s performance monitor hardware support registered\n", | 1547 | pr_info("%s performance monitor hardware support registered\n", |
1538 | pmu->name); | 1548 | pmu->name); |
1539 | 1549 | ||
1550 | power_pmu.attr_groups = ppmu->attr_groups; | ||
1551 | |||
1540 | #ifdef MSR_HV | 1552 | #ifdef MSR_HV |
1541 | /* | 1553 | /* |
1542 | * Use FCHV to ignore kernel events if MSR.HV is set. | 1554 | * Use FCHV to ignore kernel events if MSR.HV is set. |
diff --git a/arch/powerpc/perf/power7-pmu.c b/arch/powerpc/perf/power7-pmu.c index 2ee01e38d5e2..b554879bd31e 100644 --- a/arch/powerpc/perf/power7-pmu.c +++ b/arch/powerpc/perf/power7-pmu.c | |||
@@ -51,6 +51,18 @@ | |||
51 | #define MMCR1_PMCSEL_MSK 0xff | 51 | #define MMCR1_PMCSEL_MSK 0xff |
52 | 52 | ||
53 | /* | 53 | /* |
54 | * Power7 event codes. | ||
55 | */ | ||
56 | #define PME_PM_CYC 0x1e | ||
57 | #define PME_PM_GCT_NOSLOT_CYC 0x100f8 | ||
58 | #define PME_PM_CMPLU_STALL 0x4000a | ||
59 | #define PME_PM_INST_CMPL 0x2 | ||
60 | #define PME_PM_LD_REF_L1 0xc880 | ||
61 | #define PME_PM_LD_MISS_L1 0x400f0 | ||
62 | #define PME_PM_BRU_FIN 0x10068 | ||
63 | #define PME_PM_BRU_MPRED 0x400f6 | ||
64 | |||
65 | /* | ||
54 | * Layout of constraint bits: | 66 | * Layout of constraint bits: |
55 | * 6666555555555544444444443333333333222222222211111111110000000000 | 67 | * 6666555555555544444444443333333333222222222211111111110000000000 |
56 | * 3210987654321098765432109876543210987654321098765432109876543210 | 68 | * 3210987654321098765432109876543210987654321098765432109876543210 |
@@ -307,14 +319,14 @@ static void power7_disable_pmc(unsigned int pmc, unsigned long mmcr[]) | |||
307 | } | 319 | } |
308 | 320 | ||
309 | static int power7_generic_events[] = { | 321 | static int power7_generic_events[] = { |
310 | [PERF_COUNT_HW_CPU_CYCLES] = 0x1e, | 322 | [PERF_COUNT_HW_CPU_CYCLES] = PME_PM_CYC, |
311 | [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = 0x100f8, /* GCT_NOSLOT_CYC */ | 323 | [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = PME_PM_GCT_NOSLOT_CYC, |
312 | [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = 0x4000a, /* CMPLU_STALL */ | 324 | [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = PME_PM_CMPLU_STALL, |
313 | [PERF_COUNT_HW_INSTRUCTIONS] = 2, | 325 | [PERF_COUNT_HW_INSTRUCTIONS] = PME_PM_INST_CMPL, |
314 | [PERF_COUNT_HW_CACHE_REFERENCES] = 0xc880, /* LD_REF_L1_LSU*/ | 326 | [PERF_COUNT_HW_CACHE_REFERENCES] = PME_PM_LD_REF_L1, |
315 | [PERF_COUNT_HW_CACHE_MISSES] = 0x400f0, /* LD_MISS_L1 */ | 327 | [PERF_COUNT_HW_CACHE_MISSES] = PME_PM_LD_MISS_L1, |
316 | [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = 0x10068, /* BRU_FIN */ | 328 | [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = PME_PM_BRU_FIN, |
317 | [PERF_COUNT_HW_BRANCH_MISSES] = 0x400f6, /* BR_MPRED */ | 329 | [PERF_COUNT_HW_BRANCH_MISSES] = PME_PM_BRU_MPRED, |
318 | }; | 330 | }; |
319 | 331 | ||
320 | #define C(x) PERF_COUNT_HW_CACHE_##x | 332 | #define C(x) PERF_COUNT_HW_CACHE_##x |
@@ -362,6 +374,57 @@ static int power7_cache_events[C(MAX)][C(OP_MAX)][C(RESULT_MAX)] = { | |||
362 | }, | 374 | }, |
363 | }; | 375 | }; |
364 | 376 | ||
377 | |||
378 | GENERIC_EVENT_ATTR(cpu-cycles, CYC); | ||
379 | GENERIC_EVENT_ATTR(stalled-cycles-frontend, GCT_NOSLOT_CYC); | ||
380 | GENERIC_EVENT_ATTR(stalled-cycles-backend, CMPLU_STALL); | ||
381 | GENERIC_EVENT_ATTR(instructions, INST_CMPL); | ||
382 | GENERIC_EVENT_ATTR(cache-references, LD_REF_L1); | ||
383 | GENERIC_EVENT_ATTR(cache-misses, LD_MISS_L1); | ||
384 | GENERIC_EVENT_ATTR(branch-instructions, BRU_FIN); | ||
385 | GENERIC_EVENT_ATTR(branch-misses, BRU_MPRED); | ||
386 | |||
387 | POWER_EVENT_ATTR(CYC, CYC); | ||
388 | POWER_EVENT_ATTR(GCT_NOSLOT_CYC, GCT_NOSLOT_CYC); | ||
389 | POWER_EVENT_ATTR(CMPLU_STALL, CMPLU_STALL); | ||
390 | POWER_EVENT_ATTR(INST_CMPL, INST_CMPL); | ||
391 | POWER_EVENT_ATTR(LD_REF_L1, LD_REF_L1); | ||
392 | POWER_EVENT_ATTR(LD_MISS_L1, LD_MISS_L1); | ||
393 | POWER_EVENT_ATTR(BRU_FIN, BRU_FIN) | ||
394 | POWER_EVENT_ATTR(BRU_MPRED, BRU_MPRED); | ||
395 | |||
396 | static struct attribute *power7_events_attr[] = { | ||
397 | GENERIC_EVENT_PTR(CYC), | ||
398 | GENERIC_EVENT_PTR(GCT_NOSLOT_CYC), | ||
399 | GENERIC_EVENT_PTR(CMPLU_STALL), | ||
400 | GENERIC_EVENT_PTR(INST_CMPL), | ||
401 | GENERIC_EVENT_PTR(LD_REF_L1), | ||
402 | GENERIC_EVENT_PTR(LD_MISS_L1), | ||
403 | GENERIC_EVENT_PTR(BRU_FIN), | ||
404 | GENERIC_EVENT_PTR(BRU_MPRED), | ||
405 | |||
406 | POWER_EVENT_PTR(CYC), | ||
407 | POWER_EVENT_PTR(GCT_NOSLOT_CYC), | ||
408 | POWER_EVENT_PTR(CMPLU_STALL), | ||
409 | POWER_EVENT_PTR(INST_CMPL), | ||
410 | POWER_EVENT_PTR(LD_REF_L1), | ||
411 | POWER_EVENT_PTR(LD_MISS_L1), | ||
412 | POWER_EVENT_PTR(BRU_FIN), | ||
413 | POWER_EVENT_PTR(BRU_MPRED), | ||
414 | NULL | ||
415 | }; | ||
416 | |||
417 | |||
418 | static struct attribute_group power7_pmu_events_group = { | ||
419 | .name = "events", | ||
420 | .attrs = power7_events_attr, | ||
421 | }; | ||
422 | |||
423 | static const struct attribute_group *power7_pmu_attr_groups[] = { | ||
424 | &power7_pmu_events_group, | ||
425 | NULL, | ||
426 | }; | ||
427 | |||
365 | static struct power_pmu power7_pmu = { | 428 | static struct power_pmu power7_pmu = { |
366 | .name = "POWER7", | 429 | .name = "POWER7", |
367 | .n_counter = 6, | 430 | .n_counter = 6, |
@@ -373,6 +436,7 @@ static struct power_pmu power7_pmu = { | |||
373 | .get_alternatives = power7_get_alternatives, | 436 | .get_alternatives = power7_get_alternatives, |
374 | .disable_pmc = power7_disable_pmc, | 437 | .disable_pmc = power7_disable_pmc, |
375 | .flags = PPMU_ALT_SIPR, | 438 | .flags = PPMU_ALT_SIPR, |
439 | .attr_groups = power7_pmu_attr_groups, | ||
376 | .n_generic = ARRAY_SIZE(power7_generic_events), | 440 | .n_generic = ARRAY_SIZE(power7_generic_events), |
377 | .generic_events = power7_generic_events, | 441 | .generic_events = power7_generic_events, |
378 | .cache_events = &power7_cache_events, | 442 | .cache_events = &power7_cache_events, |
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig index 02d02a09942d..92ab60a62711 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig | |||
@@ -277,7 +277,6 @@ config P5040_DS | |||
277 | 277 | ||
278 | config PPC_QEMU_E500 | 278 | config PPC_QEMU_E500 |
279 | bool "QEMU generic e500 platform" | 279 | bool "QEMU generic e500 platform" |
280 | depends on EXPERIMENTAL | ||
281 | select DEFAULT_UIMAGE | 280 | select DEFAULT_UIMAGE |
282 | help | 281 | help |
283 | This option enables support for running as a QEMU guest using | 282 | This option enables support for running as a QEMU guest using |
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platforms/85xx/p1022_ds.c index 7328b8d74129..e346edf7f157 100644 --- a/arch/powerpc/platforms/85xx/p1022_ds.c +++ b/arch/powerpc/platforms/85xx/p1022_ds.c | |||
@@ -215,13 +215,13 @@ static void p1022ds_set_monitor_port(enum fsl_diu_monitor_port port) | |||
215 | /* Map the global utilities registers. */ | 215 | /* Map the global utilities registers. */ |
216 | guts_node = of_find_compatible_node(NULL, NULL, "fsl,p1022-guts"); | 216 | guts_node = of_find_compatible_node(NULL, NULL, "fsl,p1022-guts"); |
217 | if (!guts_node) { | 217 | if (!guts_node) { |
218 | pr_err("p1022ds: missing global utilties device node\n"); | 218 | pr_err("p1022ds: missing global utilities device node\n"); |
219 | return; | 219 | return; |
220 | } | 220 | } |
221 | 221 | ||
222 | guts = of_iomap(guts_node, 0); | 222 | guts = of_iomap(guts_node, 0); |
223 | if (!guts) { | 223 | if (!guts) { |
224 | pr_err("p1022ds: could not map global utilties device\n"); | 224 | pr_err("p1022ds: could not map global utilities device\n"); |
225 | goto exit; | 225 | goto exit; |
226 | } | 226 | } |
227 | 227 | ||
@@ -416,14 +416,14 @@ void p1022ds_set_pixel_clock(unsigned int pixclock) | |||
416 | /* Map the global utilities registers. */ | 416 | /* Map the global utilities registers. */ |
417 | guts_np = of_find_compatible_node(NULL, NULL, "fsl,p1022-guts"); | 417 | guts_np = of_find_compatible_node(NULL, NULL, "fsl,p1022-guts"); |
418 | if (!guts_np) { | 418 | if (!guts_np) { |
419 | pr_err("p1022ds: missing global utilties device node\n"); | 419 | pr_err("p1022ds: missing global utilities device node\n"); |
420 | return; | 420 | return; |
421 | } | 421 | } |
422 | 422 | ||
423 | guts = of_iomap(guts_np, 0); | 423 | guts = of_iomap(guts_np, 0); |
424 | of_node_put(guts_np); | 424 | of_node_put(guts_np); |
425 | if (!guts) { | 425 | if (!guts) { |
426 | pr_err("p1022ds: could not map global utilties device\n"); | 426 | pr_err("p1022ds: could not map global utilities device\n"); |
427 | return; | 427 | return; |
428 | } | 428 | } |
429 | 429 | ||
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c index 04d9d317f741..d479d68fbb2b 100644 --- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c +++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c | |||
@@ -236,14 +236,14 @@ void mpc8610hpcd_set_pixel_clock(unsigned int pixclock) | |||
236 | /* Map the global utilities registers. */ | 236 | /* Map the global utilities registers. */ |
237 | guts_np = of_find_compatible_node(NULL, NULL, "fsl,mpc8610-guts"); | 237 | guts_np = of_find_compatible_node(NULL, NULL, "fsl,mpc8610-guts"); |
238 | if (!guts_np) { | 238 | if (!guts_np) { |
239 | pr_err("mpc8610hpcd: missing global utilties device node\n"); | 239 | pr_err("mpc8610hpcd: missing global utilities device node\n"); |
240 | return; | 240 | return; |
241 | } | 241 | } |
242 | 242 | ||
243 | guts = of_iomap(guts_np, 0); | 243 | guts = of_iomap(guts_np, 0); |
244 | of_node_put(guts_np); | 244 | of_node_put(guts_np); |
245 | if (!guts) { | 245 | if (!guts) { |
246 | pr_err("mpc8610hpcd: could not map global utilties device\n"); | 246 | pr_err("mpc8610hpcd: could not map global utilities device\n"); |
247 | return; | 247 | return; |
248 | } | 248 | } |
249 | 249 | ||
diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig index 2e7ff0c5cf42..53aaefeb3386 100644 --- a/arch/powerpc/platforms/cell/Kconfig +++ b/arch/powerpc/platforms/cell/Kconfig | |||
@@ -124,7 +124,7 @@ config CBE_CPUFREQ | |||
124 | 124 | ||
125 | config CBE_CPUFREQ_PMI_ENABLE | 125 | config CBE_CPUFREQ_PMI_ENABLE |
126 | bool "CBE frequency scaling using PMI interface" | 126 | bool "CBE frequency scaling using PMI interface" |
127 | depends on CBE_CPUFREQ && EXPERIMENTAL | 127 | depends on CBE_CPUFREQ |
128 | default n | 128 | default n |
129 | help | 129 | help |
130 | Select this, if you want to use the PMI interface | 130 | Select this, if you want to use the PMI interface |
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c index 25db92a8e1cf..49318385d4fa 100644 --- a/arch/powerpc/platforms/cell/spufs/sched.c +++ b/arch/powerpc/platforms/cell/spufs/sched.c | |||
@@ -24,6 +24,7 @@ | |||
24 | 24 | ||
25 | #include <linux/errno.h> | 25 | #include <linux/errno.h> |
26 | #include <linux/sched.h> | 26 | #include <linux/sched.h> |
27 | #include <linux/sched/rt.h> | ||
27 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
28 | #include <linux/mm.h> | 29 | #include <linux/mm.h> |
29 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig index 46b7f0232523..e87c19473973 100644 --- a/arch/powerpc/platforms/ps3/Kconfig +++ b/arch/powerpc/platforms/ps3/Kconfig | |||
@@ -48,7 +48,7 @@ config PS3_HTAB_SIZE | |||
48 | system will have optimal runtime performance. | 48 | system will have optimal runtime performance. |
49 | 49 | ||
50 | config PS3_DYNAMIC_DMA | 50 | config PS3_DYNAMIC_DMA |
51 | depends on PPC_PS3 && EXPERIMENTAL | 51 | depends on PPC_PS3 |
52 | bool "PS3 Platform dynamic DMA page table management" | 52 | bool "PS3 Platform dynamic DMA page table management" |
53 | default n | 53 | default n |
54 | help | 54 | help |
diff --git a/arch/powerpc/platforms/pseries/dtl.c b/arch/powerpc/platforms/pseries/dtl.c index a7648543c59e..0cc0ac07a55d 100644 --- a/arch/powerpc/platforms/pseries/dtl.c +++ b/arch/powerpc/platforms/pseries/dtl.c | |||
@@ -57,7 +57,7 @@ static u8 dtl_event_mask = 0x7; | |||
57 | */ | 57 | */ |
58 | static int dtl_buf_entries = N_DISPATCH_LOG; | 58 | static int dtl_buf_entries = N_DISPATCH_LOG; |
59 | 59 | ||
60 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 60 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE |
61 | struct dtl_ring { | 61 | struct dtl_ring { |
62 | u64 write_index; | 62 | u64 write_index; |
63 | struct dtl_entry *write_ptr; | 63 | struct dtl_entry *write_ptr; |
@@ -142,7 +142,7 @@ static u64 dtl_current_index(struct dtl *dtl) | |||
142 | return per_cpu(dtl_rings, dtl->cpu).write_index; | 142 | return per_cpu(dtl_rings, dtl->cpu).write_index; |
143 | } | 143 | } |
144 | 144 | ||
145 | #else /* CONFIG_VIRT_CPU_ACCOUNTING */ | 145 | #else /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
146 | 146 | ||
147 | static int dtl_start(struct dtl *dtl) | 147 | static int dtl_start(struct dtl *dtl) |
148 | { | 148 | { |
@@ -188,7 +188,7 @@ static u64 dtl_current_index(struct dtl *dtl) | |||
188 | { | 188 | { |
189 | return lppaca_of(dtl->cpu).dtl_idx; | 189 | return lppaca_of(dtl->cpu).dtl_idx; |
190 | } | 190 | } |
191 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING */ | 191 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
192 | 192 | ||
193 | static int dtl_enable(struct dtl *dtl) | 193 | static int dtl_enable(struct dtl *dtl) |
194 | { | 194 | { |
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index ca55882465d6..527e12c9573b 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -281,7 +281,7 @@ static struct notifier_block pci_dn_reconfig_nb = { | |||
281 | 281 | ||
282 | struct kmem_cache *dtl_cache; | 282 | struct kmem_cache *dtl_cache; |
283 | 283 | ||
284 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 284 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE |
285 | /* | 285 | /* |
286 | * Allocate space for the dispatch trace log for all possible cpus | 286 | * Allocate space for the dispatch trace log for all possible cpus |
287 | * and register the buffers with the hypervisor. This is used for | 287 | * and register the buffers with the hypervisor. This is used for |
@@ -332,12 +332,12 @@ static int alloc_dispatch_logs(void) | |||
332 | 332 | ||
333 | return 0; | 333 | return 0; |
334 | } | 334 | } |
335 | #else /* !CONFIG_VIRT_CPU_ACCOUNTING */ | 335 | #else /* !CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
336 | static inline int alloc_dispatch_logs(void) | 336 | static inline int alloc_dispatch_logs(void) |
337 | { | 337 | { |
338 | return 0; | 338 | return 0; |
339 | } | 339 | } |
340 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING */ | 340 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
341 | 341 | ||
342 | static int alloc_dispatch_log_kmem_cache(void) | 342 | static int alloc_dispatch_log_kmem_cache(void) |
343 | { | 343 | { |
diff --git a/arch/powerpc/sysdev/bestcomm/bestcomm.c b/arch/powerpc/sysdev/bestcomm/bestcomm.c index d9130630f7ef..81c331481336 100644 --- a/arch/powerpc/sysdev/bestcomm/bestcomm.c +++ b/arch/powerpc/sysdev/bestcomm/bestcomm.c | |||
@@ -414,7 +414,7 @@ static int mpc52xx_bcom_probe(struct platform_device *op) | |||
414 | goto error_sramclean; | 414 | goto error_sramclean; |
415 | } | 415 | } |
416 | 416 | ||
417 | if (!request_mem_region(res_bcom.start, sizeof(struct mpc52xx_sdma), | 417 | if (!request_mem_region(res_bcom.start, resource_size(&res_bcom), |
418 | DRIVER_NAME)) { | 418 | DRIVER_NAME)) { |
419 | printk(KERN_ERR DRIVER_NAME ": " | 419 | printk(KERN_ERR DRIVER_NAME ": " |
420 | "Can't request registers region\n"); | 420 | "Can't request registers region\n"); |