The validate_event() was failing on valid event
        combinations. The function was assuming that if
        x86_schedule_event() returned 0, it meant error.
        But x86_schedule_event() returns the counter index
        and 0 is a perfectly valid value. An error is returned
        if the function returns a negative value.

        Furthermore, validate_event() was also failing for
        event groups because the event->pmu was not set until
        after hw_perf_pmu_init().
        
        Signed-off-by: Stephane Eranian <eran...@gmail.com>
--
 arch/x86/kernel/cpu/perf_event.c |    5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 2e20bca..d321ff7 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -2229,10 +2229,7 @@ validate_event(struct cpu_hw_events *cpuc, struct 
perf_event *event)
 {
        struct hw_perf_event fake_event = event->hw;
 
-       if (event->pmu != &pmu)
-               return 0;
-
-       return x86_schedule_event(cpuc, &fake_event);
+       return x86_schedule_event(cpuc, &fake_event) >= 0;
 }
 
 static int validate_group(struct perf_event *event)

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to