Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into fixes

+11 -11
-10
arch/arm/include/asm/pmu.h
··· 55 55 extern void 56 56 release_pmu(enum arm_pmu_type type); 57 57 58 - /** 59 - * init_pmu() - Initialise the PMU. 60 - * 61 - * Initialise the system ready for PMU enabling. This should typically set the 62 - * IRQ affinity and nothing else. The users (oprofile/perf events etc) will do 63 - * the actual hardware initialisation. 64 - */ 65 - extern int 66 - init_pmu(enum arm_pmu_type type); 67 - 68 58 #else /* CONFIG_CPU_HAS_PMU */ 69 59 70 60 #include <linux/err.h>
+10 -1
arch/arm/kernel/perf_event.c
··· 343 343 { 344 344 struct perf_event *sibling, *leader = event->group_leader; 345 345 struct pmu_hw_events fake_pmu; 346 + DECLARE_BITMAP(fake_used_mask, ARMPMU_MAX_HWEVENTS); 346 347 347 - memset(&fake_pmu, 0, sizeof(fake_pmu)); 348 + /* 349 + * Initialise the fake PMU. We only need to populate the 350 + * used_mask for the purposes of validation. 351 + */ 352 + memset(fake_used_mask, 0, sizeof(fake_used_mask)); 353 + fake_pmu.used_mask = fake_used_mask; 348 354 349 355 if (!validate_event(&fake_pmu, leader)) 350 356 return -ENOSPC; ··· 401 395 irq_handler_t handle_irq; 402 396 int i, err, irq, irqs; 403 397 struct platform_device *pmu_device = armpmu->plat_device; 398 + 399 + if (!pmu_device) 400 + return -ENODEV; 404 401 405 402 err = reserve_pmu(armpmu->type); 406 403 if (err) {
+1
arch/arm/kernel/pmu.c
··· 33 33 { 34 34 clear_bit_unlock(type, pmu_lock); 35 35 } 36 + EXPORT_SYMBOL_GPL(release_pmu);