[PATCH] perf scripts python arm-cs-trace-disasm.py: Skip disasm if address continuity is broken
James Clark
james.clark at linaro.org
Thu Aug 8 02:21:24 PDT 2024
On 08/08/2024 8:42 am, Leo Yan wrote:
> On 8/8/2024 5:36 AM, Ganapatrao Kulkarni wrote:
>>
>> On 08-08-2024 12:50 am, Leo Yan wrote:
>>> On 8/7/2024 5:18 PM, Ganapatrao Kulkarni wrote:
>>>
>>>> Is below diff with force option looks good?
>>>>
>>>> diff --git a/tools/perf/scripts/python/arm-cs-trace-disasm.py
>>>> b/tools/perf/scripts/python/arm-cs-trace-disasm.py
>>>> index d973c2baed1c..efe34f308beb 100755
>>>> --- a/tools/perf/scripts/python/arm-cs-trace-disasm.py
>>>> +++ b/tools/perf/scripts/python/arm-cs-trace-disasm.py
>>>> @@ -36,7 +36,10 @@ option_list = [
>>>> help="Set path to objdump executable file"),
>>>> make_option("-v", "--verbose", dest="verbose",
>>>> action="store_true", default=False,
>>>> - help="Enable debugging log")
>>>> + help="Enable debugging log"),
>>>> + make_option("-f", "--force", dest="force",
>>>> + action="store_true", default=False,
>>>> + help="Force decoder to continue")
>>>> ]
>>>>
>>>> parser = OptionParser(option_list=option_list)
>>>> @@ -257,6 +260,12 @@ def process_event(param_dict):
>>>> print("Stop address 0x%x is out of range [ 0x%x .. 0x%x
>>>> ] for dso %s" % (stop_addr, int(dso_start), int(dso_end), dso))
>>>> return
>>>>
>>>> + if (stop_addr < start_addr):
>>>> + if (options.verbose == True or options.force):
>>>> + print("Packet Discontinuity detected [stop_add:0x%x start_addr:0x%x ] for dso %s" % (stop_addr, start_addr, dso))
The options.force for the print should be "options.verbose or not
options.force" I think? You want to print the error until the user adds
-f, then hide it. Unless verbose is on.
>>>> + if (options.force):
>>>> + return
Oops I had this one the wrong way around in my example. This way is correct.
>>>
>>> I struggled a bit for the code - it is confused that force mode bails out
>>> and the non-force mode continues to run. I prefer to always bail out for
>>> the discontinuity case, as it is pointless to continue in this case.
>>
>> Kept bail out with force option since I though it is not good to hide
>> the error in normal use, otherwise we never able to notice this error in
>> the future and it becomes default hidden. Eventually this error should
>> be fixed.
>
> As James said, the issue should be fixed in OpenCSD or Perf decoding flow.
>
> Thus, perf tool should be tolerant errors - report warning and drop
> discontinuous samples. This would be easier for developers later if face
> the same issue, they don't need to spend time to locate issue and struggle
> for overriding the error.
>
> If you prefer to use force option, it might be better to give reasoning and
> *suggestion* in one go, something like:
>
> if (stop_addr < start_addr):
> print("Packet Discontinuity detected [stop_add:0x%x start_addr:0x%x ] for dso %s" % (stop_addr, start_addr, dso))
> print("Use option '-f' following the script for force mode"
> if (options.force)
> return
>
> Either way is fine for me. Thanks a lot for taking time on the issue.
>
> Leo
>
But your diff looks good Ganapat, I think send a patch with Leo's extra
help message added and the first force flipped.
More information about the linux-arm-kernel
mailing list