• Thomas Richter's avatar
    perf test: Fix libpfm4 support (63) test error for nested event groups · 316a76a5
    Thomas Richter authored
    Compiling perf with make LIBPFM4=1 includes libpfm support and
    enables test case 63 'Test libpfm4 support'. This test reports an error
    on all platforms for subtest 63.2 'test groups of --pfm-events'.
    The reported error message is 'nested event groups not supported'
    
     # ./perf test -F 63
     63: Test libpfm4 support                                            :
     63.1: test of individual --pfm-events                               :
     Error:
     failed to parse event stereolab : event not found
     Error:
     failed to parse event stereolab,instructions : event not found
     Error:
     failed to parse event instructions,stereolab : event not found
      Ok
     63.2: test groups of --pfm-events                                   :
     Error:
     nested event groups not supported    <------ Error message here
     Error:
     failed to parse event {stereolab} : event not found
     Error:
     failed to parse event {instructions,cycles},{instructions,stereolab} :\
    	 event not found
     Ok
     #
    
    This patch addresses the error message 'nested event groups not supported'.
    The root cause is function parse_libpfm_events_option() which parses the
    event string '{},{instructions}' and can not handle a leading empty
    group notation '{},...'.
    
    The code detects the first (empty) group indicator '{' but does not
    terminate group processing on the following group closing character '}'.
    So when the second group indicator '{' is detected, the code assumes
    a nested group and returns an error.
    
    With the error message fixed, also change the expected event number to
    one for the test case to succeed.
    
    While at it also fix a memory leak. In good case the function does not
    free the duplicated string given as first parameter.
    
    Output after:
     # ./perf test -F 63
     63: Test libpfm4 support                                            :
     63.1: test of individual --pfm-events                               :
     Error:
     failed to parse event stereolab : event not found
     Error:
     failed to parse event stereolab,instructions : event not found
     Error:
     failed to parse event instructions,stereolab : event not found
      Ok
     63.2: test groups of --pfm-events                                   :
     Error:
     failed to parse event {stereolab} : event not found
     Error:
     failed to parse event {instructions,cycles},{instructions,stereolab} : \
    	 event not found
      Ok
     #
    Error message 'nested event groups not supported' is gone.
    Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
    Acked-By: default avatarIan Rogers <irogers@google.com>
    Acked-by: default avatarSumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Link: http://lore.kernel.org/lkml/20210517140931.2559364-1-tmricht@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    316a76a5
pfm.c 3.52 KB