lkml.org 
[lkml]   [2020]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/16] coresight: stm: Support marked packet
    Date
    From: Tingwei Zhang <tingwei@codeaurora.org>

    STP_PACKET_MARKED is not supported by STM currently.
    Add STM_FLAG_MARKED to support marked packet in STM.

    Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org>
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    ---
    drivers/hwtracing/coresight/coresight-stm.c | 11 +++++++----
    include/uapi/linux/coresight-stm.h | 1 +
    2 files changed, 8 insertions(+), 4 deletions(-)

    diff --git a/drivers/hwtracing/coresight/coresight-stm.c b/drivers/hwtracing/coresight/coresight-stm.c
    index 673d2f56ed1e..2ba819a47cf6 100644
    --- a/drivers/hwtracing/coresight/coresight-stm.c
    +++ b/drivers/hwtracing/coresight/coresight-stm.c
    @@ -412,6 +412,7 @@ static ssize_t notrace stm_generic_packet(struct stm_data *stm_data,
    void __iomem *ch_addr;
    struct stm_drvdata *drvdata = container_of(stm_data,
    struct stm_drvdata, stm);
    + unsigned int stm_flags;

    if (!(drvdata && local_read(&drvdata->mode)))
    return -EACCES;
    @@ -421,8 +422,9 @@ static ssize_t notrace stm_generic_packet(struct stm_data *stm_data,

    ch_addr = stm_channel_addr(drvdata, channel);

    - flags = (flags == STP_PACKET_TIMESTAMPED) ? STM_FLAG_TIMESTAMPED : 0;
    - flags |= test_bit(channel, drvdata->chs.guaranteed) ?
    + stm_flags = (flags & STP_PACKET_TIMESTAMPED) ?
    + STM_FLAG_TIMESTAMPED : 0;
    + stm_flags |= test_bit(channel, drvdata->chs.guaranteed) ?
    STM_FLAG_GUARANTEED : 0;

    if (size > drvdata->write_bytes)
    @@ -432,7 +434,7 @@ static ssize_t notrace stm_generic_packet(struct stm_data *stm_data,

    switch (packet) {
    case STP_PACKET_FLAG:
    - ch_addr += stm_channel_off(STM_PKT_TYPE_FLAG, flags);
    + ch_addr += stm_channel_off(STM_PKT_TYPE_FLAG, stm_flags);

    /*
    * The generic STM core sets a size of '0' on flag packets.
    @@ -444,7 +446,8 @@ static ssize_t notrace stm_generic_packet(struct stm_data *stm_data,
    break;

    case STP_PACKET_DATA:
    - ch_addr += stm_channel_off(STM_PKT_TYPE_DATA, flags);
    + stm_flags |= (flags & STP_PACKET_MARKED) ? STM_FLAG_MARKED : 0;
    + ch_addr += stm_channel_off(STM_PKT_TYPE_DATA, stm_flags);
    stm_send(ch_addr, payload, size,
    drvdata->write_bytes);
    break;
    diff --git a/include/uapi/linux/coresight-stm.h b/include/uapi/linux/coresight-stm.h
    index 8847dbf24151..7ff3709c01b8 100644
    --- a/include/uapi/linux/coresight-stm.h
    +++ b/include/uapi/linux/coresight-stm.h
    @@ -5,6 +5,7 @@
    #include <linux/const.h>

    #define STM_FLAG_TIMESTAMPED _BITUL(3)
    +#define STM_FLAG_MARKED _BITUL(4)
    #define STM_FLAG_GUARANTEED _BITUL(7)

    /*
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-09-16 21:46    [W:3.948 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site