aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-10-03 11:58:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-10-03 11:58:35 -0400
commit7af8a0f8088831428051976cb06cc1e450f8bab5 (patch)
tree45289becbd10b1e421dc4b5a99ce6d7d90964c28 /arch/arm/kernel
parentc8d2bc9bc39ebea8437fd974fdbc21847bb897a3 (diff)
parentdb68f3e7594aca77632d56c449bd36c6c931d59a (diff)
Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 updates from Will Deacon: "It's a bit all over the place this time with no "killer feature" to speak of. Support for mismatched cache line sizes should help people seeing whacky JIT failures on some SoCs, and the big.LITTLE perf updates have been a long time coming, but a lot of the changes here are cleanups. We stray outside arch/arm64 in a few areas: the arch/arm/ arch_timer workaround is acked by Russell, the DT/OF bits are acked by Rob, the arch_timer clocksource changes acked by Marc, CPU hotplug by tglx and jump_label by Peter (all CC'd). Summary: - Support for execute-only page permissions - Support for hibernate and DEBUG_PAGEALLOC - Support for heterogeneous systems with mismatches cache line sizes - Errata workarounds (A53 843419 update and QorIQ A-008585 timer bug) - arm64 PMU perf updates, including cpumasks for heterogeneous systems - Set UTS_MACHINE for building rpm packages - Yet another head.S tidy-up - Some cleanups and refactoring, particularly in the NUMA code - Lots of random, non-critical fixes across the board" * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (100 commits) arm64: tlbflush.h: add __tlbi() macro arm64: Kconfig: remove SMP dependence for NUMA arm64: Kconfig: select OF/ACPI_NUMA under NUMA config arm64: fix dump_backtrace/unwind_frame with NULL tsk arm/arm64: arch_timer: Use archdata to indicate vdso suitability arm64: arch_timer: Work around QorIQ Erratum A-008585 arm64: arch_timer: Add device tree binding for A-008585 erratum arm64: Correctly bounds check virt_addr_valid arm64: migrate exception table users off module.h and onto extable.h arm64: pmu: Hoist pmu platform device name arm64: pmu: Probe default hw/cache counters arm64: pmu: add fallback probe table MAINTAINERS: Update ARM PMU PROFILING AND DEBUGGING entry arm64: Improve kprobes test for atomic sequence arm64/kvm: use alternative auto-nop arm64: use alternative auto-nop arm64: alternative: add auto-nop infrastructure arm64: lse: convert lse alternatives NOP padding to use __nops arm64: barriers: introduce nops and __nops macros for NOP sequences arm64: sysreg: replace open-coded mrs_s/msr_s with {read,write}_sysreg_s ...
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/perf_event_v7.c47
-rw-r--r--arch/arm/kernel/vdso.c2
2 files changed, 29 insertions, 20 deletions
diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c
index 15063851cd10..b9423491b9d7 100644
--- a/arch/arm/kernel/perf_event_v7.c
+++ b/arch/arm/kernel/perf_event_v7.c
@@ -596,12 +596,6 @@ static struct attribute_group armv7_pmuv1_events_attr_group = {
596 .attrs = armv7_pmuv1_event_attrs, 596 .attrs = armv7_pmuv1_event_attrs,
597}; 597};
598 598
599static const struct attribute_group *armv7_pmuv1_attr_groups[] = {
600 &armv7_pmuv1_events_attr_group,
601 &armv7_pmu_format_attr_group,
602 NULL,
603};
604
605ARMV7_EVENT_ATTR(mem_access, ARMV7_PERFCTR_MEM_ACCESS); 599ARMV7_EVENT_ATTR(mem_access, ARMV7_PERFCTR_MEM_ACCESS);
606ARMV7_EVENT_ATTR(l1i_cache, ARMV7_PERFCTR_L1_ICACHE_ACCESS); 600ARMV7_EVENT_ATTR(l1i_cache, ARMV7_PERFCTR_L1_ICACHE_ACCESS);
607ARMV7_EVENT_ATTR(l1d_cache_wb, ARMV7_PERFCTR_L1_DCACHE_WB); 601ARMV7_EVENT_ATTR(l1d_cache_wb, ARMV7_PERFCTR_L1_DCACHE_WB);
@@ -653,12 +647,6 @@ static struct attribute_group armv7_pmuv2_events_attr_group = {
653 .attrs = armv7_pmuv2_event_attrs, 647 .attrs = armv7_pmuv2_event_attrs,
654}; 648};
655 649
656static const struct attribute_group *armv7_pmuv2_attr_groups[] = {
657 &armv7_pmuv2_events_attr_group,
658 &armv7_pmu_format_attr_group,
659 NULL,
660};
661
662/* 650/*
663 * Perf Events' indices 651 * Perf Events' indices
664 */ 652 */
@@ -1208,7 +1196,10 @@ static int armv7_a8_pmu_init(struct arm_pmu *cpu_pmu)
1208 armv7pmu_init(cpu_pmu); 1196 armv7pmu_init(cpu_pmu);
1209 cpu_pmu->name = "armv7_cortex_a8"; 1197 cpu_pmu->name = "armv7_cortex_a8";
1210 cpu_pmu->map_event = armv7_a8_map_event; 1198 cpu_pmu->map_event = armv7_a8_map_event;
1211 cpu_pmu->pmu.attr_groups = armv7_pmuv1_attr_groups; 1199 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =
1200 &armv7_pmuv1_events_attr_group;
1201 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
1202 &armv7_pmu_format_attr_group;
1212 return armv7_probe_num_events(cpu_pmu); 1203 return armv7_probe_num_events(cpu_pmu);
1213} 1204}
1214 1205
@@ -1217,7 +1208,10 @@ static int armv7_a9_pmu_init(struct arm_pmu *cpu_pmu)
1217 armv7pmu_init(cpu_pmu); 1208 armv7pmu_init(cpu_pmu);
1218 cpu_pmu->name = "armv7_cortex_a9"; 1209 cpu_pmu->name = "armv7_cortex_a9";
1219 cpu_pmu->map_event = armv7_a9_map_event; 1210 cpu_pmu->map_event = armv7_a9_map_event;
1220 cpu_pmu->pmu.attr_groups = armv7_pmuv1_attr_groups; 1211 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =
1212 &armv7_pmuv1_events_attr_group;
1213 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
1214 &armv7_pmu_format_attr_group;
1221 return armv7_probe_num_events(cpu_pmu); 1215 return armv7_probe_num_events(cpu_pmu);
1222} 1216}
1223 1217
@@ -1226,7 +1220,10 @@ static int armv7_a5_pmu_init(struct arm_pmu *cpu_pmu)
1226 armv7pmu_init(cpu_pmu); 1220 armv7pmu_init(cpu_pmu);
1227 cpu_pmu->name = "armv7_cortex_a5"; 1221 cpu_pmu->name = "armv7_cortex_a5";
1228 cpu_pmu->map_event = armv7_a5_map_event; 1222 cpu_pmu->map_event = armv7_a5_map_event;
1229 cpu_pmu->pmu.attr_groups = armv7_pmuv1_attr_groups; 1223 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =
1224 &armv7_pmuv1_events_attr_group;
1225 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
1226 &armv7_pmu_format_attr_group;
1230 return armv7_probe_num_events(cpu_pmu); 1227 return armv7_probe_num_events(cpu_pmu);
1231} 1228}
1232 1229
@@ -1236,7 +1233,10 @@ static int armv7_a15_pmu_init(struct arm_pmu *cpu_pmu)
1236 cpu_pmu->name = "armv7_cortex_a15"; 1233 cpu_pmu->name = "armv7_cortex_a15";
1237 cpu_pmu->map_event = armv7_a15_map_event; 1234 cpu_pmu->map_event = armv7_a15_map_event;
1238 cpu_pmu->set_event_filter = armv7pmu_set_event_filter; 1235 cpu_pmu->set_event_filter = armv7pmu_set_event_filter;
1239 cpu_pmu->pmu.attr_groups = armv7_pmuv2_attr_groups; 1236 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =
1237 &armv7_pmuv2_events_attr_group;
1238 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
1239 &armv7_pmu_format_attr_group;
1240 return armv7_probe_num_events(cpu_pmu); 1240 return armv7_probe_num_events(cpu_pmu);
1241} 1241}
1242 1242
@@ -1246,7 +1246,10 @@ static int armv7_a7_pmu_init(struct arm_pmu *cpu_pmu)
1246 cpu_pmu->name = "armv7_cortex_a7"; 1246 cpu_pmu->name = "armv7_cortex_a7";
1247 cpu_pmu->map_event = armv7_a7_map_event; 1247 cpu_pmu->map_event = armv7_a7_map_event;
1248 cpu_pmu->set_event_filter = armv7pmu_set_event_filter; 1248 cpu_pmu->set_event_filter = armv7pmu_set_event_filter;
1249 cpu_pmu->pmu.attr_groups = armv7_pmuv2_attr_groups; 1249 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =
1250 &armv7_pmuv2_events_attr_group;
1251 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
1252 &armv7_pmu_format_attr_group;
1250 return armv7_probe_num_events(cpu_pmu); 1253 return armv7_probe_num_events(cpu_pmu);
1251} 1254}
1252 1255
@@ -1256,7 +1259,10 @@ static int armv7_a12_pmu_init(struct arm_pmu *cpu_pmu)
1256 cpu_pmu->name = "armv7_cortex_a12"; 1259 cpu_pmu->name = "armv7_cortex_a12";
1257 cpu_pmu->map_event = armv7_a12_map_event; 1260 cpu_pmu->map_event = armv7_a12_map_event;
1258 cpu_pmu->set_event_filter = armv7pmu_set_event_filter; 1261 cpu_pmu->set_event_filter = armv7pmu_set_event_filter;
1259 cpu_pmu->pmu.attr_groups = armv7_pmuv2_attr_groups; 1262 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =
1263 &armv7_pmuv2_events_attr_group;
1264 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
1265 &armv7_pmu_format_attr_group;
1260 return armv7_probe_num_events(cpu_pmu); 1266 return armv7_probe_num_events(cpu_pmu);
1261} 1267}
1262 1268
@@ -1264,7 +1270,10 @@ static int armv7_a17_pmu_init(struct arm_pmu *cpu_pmu)
1264{ 1270{
1265 int ret = armv7_a12_pmu_init(cpu_pmu); 1271 int ret = armv7_a12_pmu_init(cpu_pmu);
1266 cpu_pmu->name = "armv7_cortex_a17"; 1272 cpu_pmu->name = "armv7_cortex_a17";
1267 cpu_pmu->pmu.attr_groups = armv7_pmuv2_attr_groups; 1273 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =
1274 &armv7_pmuv2_events_attr_group;
1275 cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =
1276 &armv7_pmu_format_attr_group;
1268 return ret; 1277 return ret;
1269} 1278}
1270 1279
diff --git a/arch/arm/kernel/vdso.c b/arch/arm/kernel/vdso.c
index 994e971a8538..a0affd14086a 100644
--- a/arch/arm/kernel/vdso.c
+++ b/arch/arm/kernel/vdso.c
@@ -270,7 +270,7 @@ static bool tk_is_cntvct(const struct timekeeper *tk)
270 if (!IS_ENABLED(CONFIG_ARM_ARCH_TIMER)) 270 if (!IS_ENABLED(CONFIG_ARM_ARCH_TIMER))
271 return false; 271 return false;
272 272
273 if (strcmp(tk->tkr_mono.clock->name, "arch_sys_counter") != 0) 273 if (!tk->tkr_mono.clock->archdata.vdso_direct)
274 return false; 274 return false;
275 275
276 return true; 276 return true;