lkml.org 
[lkml]   [2019]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 080/413] perf test 6: Fix missing kvm module load for s390
    Date
    [ Upstream commit 53fe307dfd309e425b171f6272d64296a54f4dff ]

    Command

    # perf test -Fv 6

    fails with error

    running test 100 'kvm-s390:kvm_s390_create_vm' failed to parse
    event 'kvm-s390:kvm_s390_create_vm', err -1, str 'unknown tracepoint'
    event syntax error: 'kvm-s390:kvm_s390_create_vm'
    \___ unknown tracepoint

    when the kvm module is not loaded or not built in.

    Fix this by adding a valid function which tests if the module
    is loaded. Loaded modules (or builtin KVM support) have a
    directory named
    /sys/kernel/debug/tracing/events/kvm-s390
    for this tracepoint.

    Check for existence of this directory.

    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/20190604053504.43073-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/perf/tests/parse-events.c | 27 +++++++++++++++++++++++++++
    1 file changed, 27 insertions(+)

    diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
    index 4a69c07f4101..8f3c80e13584 100644
    --- a/tools/perf/tests/parse-events.c
    +++ b/tools/perf/tests/parse-events.c
    @@ -18,6 +18,32 @@
    #define PERF_TP_SAMPLE_TYPE (PERF_SAMPLE_RAW | PERF_SAMPLE_TIME | \
    PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD)

    +#if defined(__s390x__)
    +/* Return true if kvm module is available and loaded. Test this
    + * and retun success when trace point kvm_s390_create_vm
    + * exists. Otherwise this test always fails.
    + */
    +static bool kvm_s390_create_vm_valid(void)
    +{
    + char *eventfile;
    + bool rc = false;
    +
    + eventfile = get_events_file("kvm-s390");
    +
    + if (eventfile) {
    + DIR *mydir = opendir(eventfile);
    +
    + if (mydir) {
    + rc = true;
    + closedir(mydir);
    + }
    + put_events_file(eventfile);
    + }
    +
    + return rc;
    +}
    +#endif
    +
    static int test__checkevent_tracepoint(struct perf_evlist *evlist)
    {
    struct perf_evsel *evsel = perf_evlist__first(evlist);
    @@ -1642,6 +1668,7 @@ static struct evlist_test test__events[] = {
    {
    .name = "kvm-s390:kvm_s390_create_vm",
    .check = test__checkevent_tracepoint,
    + .valid = kvm_s390_create_vm_valid,
    .id = 100,
    },
    #endif
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-24 22:39    [W:4.088 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site