plugins: new hwprofile plugin
commita622d64eea14ee0162621850093137a086c00ab5
authorAlex Bennée <alex.bennee@linaro.org>
Sat, 13 Feb 2021 13:03:05 +0000 (13 13:03 +0000)
committerAlex Bennée <alex.bennee@linaro.org>
Thu, 18 Feb 2021 08:16:55 +0000 (18 08:16 +0000)
tree5b2e6c2913fd3f81fe669af0257ef8b60cfc5c62
parentb853a79f6530fbccdb65639b6e5a94f71dcd5050
plugins: new hwprofile plugin

This is a plugin intended to help with profiling access to various
bits of system hardware. It only really makes sense for system
emulation.

It takes advantage of the recently exposed helper API that allows us
to see the device name (memory region name) associated with a device.

You can specify arg=read or arg=write to limit the tracking to just
reads or writes (by default it does both).

The pattern option:

  -plugin ./tests/plugin/libhwprofile.so,arg=pattern

will allow you to see the access pattern to devices, eg:

  gic_cpu @ 0xffffffc010040000
    off:00000000, 8, 1, 8, 1
    off:00000000, 4, 1, 4, 1
    off:00000000, 2, 1, 2, 1
    off:00000000, 1, 1, 1, 1

The source option:

  -plugin ./tests/plugin/libhwprofile.so,arg=source

will track the virtual source address of the instruction making the
access:

  pl011 @ 0xffffffc010031000
    pc:ffffffc0104c785c, 1, 4, 0, 0
    pc:ffffffc0104c7898, 1, 4, 0, 0
    pc:ffffffc010512bcc, 2, 1867, 0, 0

You cannot mix source and pattern.

Finally the match option allow you to limit the tracking to just the
devices you care about.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Robert Foley <robert.foley@linaro.org>
Reviewed-by: Robert Foley <robert.foley@linaro.org>
Message-Id: <20210213130325.14781-4-alex.bennee@linaro.org>
contrib/plugins/Makefile
contrib/plugins/hwprofile.c [new file with mode: 0644]
docs/devel/tcg-plugins.rst