lkml.org 
[lkml]   [2018]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.17 145/336] drivers/perf: arm-ccn: dont log to dmesg in event_init
    Date
    4.17-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Mark Rutland <mark.rutland@arm.com>

    [ Upstream commit 1898eb61fbc9703efee886d3abec27a388cf28c3 ]

    The ARM CCN PMU driver uses dev_warn() to complain about parameters in
    the user-provided perf_event_attr. This means that under normal
    operation (e.g. a single invocation of the perf tool), a number of
    messages warnings may be logged to dmesg.

    Tools may issue multiple syscalls to probe for feature support, and
    multiple applications (from multiple users) can attempt to open events
    simultaneously, so this is not very helpful, even if a user happens to
    have access to dmesg. Worse, this can push important information out of
    the dmesg ring buffer, and can significantly slow down syscall fuzzers,
    vastly increasing the time it takes to find critical bugs.

    Demote the dev_warn() instances to dev_dbg(), as is the case for all
    other PMU drivers under drivers/perf/. Users who wish to debug PMU event
    initialisation can enable dynamic debug to receive these messages.

    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Pawel Moll <pawel.moll@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/perf/arm-ccn.c | 20 ++++++++++----------
    1 file changed, 10 insertions(+), 10 deletions(-)

    --- a/drivers/perf/arm-ccn.c
    +++ b/drivers/perf/arm-ccn.c
    @@ -736,7 +736,7 @@ static int arm_ccn_pmu_event_init(struct
    ccn = pmu_to_arm_ccn(event->pmu);

    if (hw->sample_period) {
    - dev_warn(ccn->dev, "Sampling not supported!\n");
    + dev_dbg(ccn->dev, "Sampling not supported!\n");
    return -EOPNOTSUPP;
    }

    @@ -744,12 +744,12 @@ static int arm_ccn_pmu_event_init(struct
    event->attr.exclude_kernel || event->attr.exclude_hv ||
    event->attr.exclude_idle || event->attr.exclude_host ||
    event->attr.exclude_guest) {
    - dev_warn(ccn->dev, "Can't exclude execution levels!\n");
    + dev_dbg(ccn->dev, "Can't exclude execution levels!\n");
    return -EINVAL;
    }

    if (event->cpu < 0) {
    - dev_warn(ccn->dev, "Can't provide per-task data!\n");
    + dev_dbg(ccn->dev, "Can't provide per-task data!\n");
    return -EOPNOTSUPP;
    }
    /*
    @@ -771,13 +771,13 @@ static int arm_ccn_pmu_event_init(struct
    switch (type) {
    case CCN_TYPE_MN:
    if (node_xp != ccn->mn_id) {
    - dev_warn(ccn->dev, "Invalid MN ID %d!\n", node_xp);
    + dev_dbg(ccn->dev, "Invalid MN ID %d!\n", node_xp);
    return -EINVAL;
    }
    break;
    case CCN_TYPE_XP:
    if (node_xp >= ccn->num_xps) {
    - dev_warn(ccn->dev, "Invalid XP ID %d!\n", node_xp);
    + dev_dbg(ccn->dev, "Invalid XP ID %d!\n", node_xp);
    return -EINVAL;
    }
    break;
    @@ -785,11 +785,11 @@ static int arm_ccn_pmu_event_init(struct
    break;
    default:
    if (node_xp >= ccn->num_nodes) {
    - dev_warn(ccn->dev, "Invalid node ID %d!\n", node_xp);
    + dev_dbg(ccn->dev, "Invalid node ID %d!\n", node_xp);
    return -EINVAL;
    }
    if (!arm_ccn_pmu_type_eq(type, ccn->node[node_xp].type)) {
    - dev_warn(ccn->dev, "Invalid type 0x%x for node %d!\n",
    + dev_dbg(ccn->dev, "Invalid type 0x%x for node %d!\n",
    type, node_xp);
    return -EINVAL;
    }
    @@ -808,19 +808,19 @@ static int arm_ccn_pmu_event_init(struct
    if (event_id != e->event)
    continue;
    if (e->num_ports && port >= e->num_ports) {
    - dev_warn(ccn->dev, "Invalid port %d for node/XP %d!\n",
    + dev_dbg(ccn->dev, "Invalid port %d for node/XP %d!\n",
    port, node_xp);
    return -EINVAL;
    }
    if (e->num_vcs && vc >= e->num_vcs) {
    - dev_warn(ccn->dev, "Invalid vc %d for node/XP %d!\n",
    + dev_dbg(ccn->dev, "Invalid vc %d for node/XP %d!\n",
    vc, node_xp);
    return -EINVAL;
    }
    valid = 1;
    }
    if (!valid) {
    - dev_warn(ccn->dev, "Invalid event 0x%x for node/XP %d!\n",
    + dev_dbg(ccn->dev, "Invalid event 0x%x for node/XP %d!\n",
    event_id, node_xp);
    return -EINVAL;
    }

    \
     
     \ /
      Last update: 2018-08-01 20:35    [W:2.848 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site