• Adrián Larumbe's avatar
    drm/panfrost: Add fdinfo support GPU load metrics · f11b0417
    Adrián Larumbe authored
    The drm-stats fdinfo tags made available to user space are drm-engine,
    drm-cycles, drm-max-freq and drm-curfreq, one per job slot.
    
    This deviates from standard practice in other DRM drivers, where a single
    set of key:value pairs is provided for the whole render engine. However,
    Panfrost has separate queues for fragment and vertex/tiler jobs, so a
    decision was made to calculate bus cycles and workload times separately.
    
    Maximum operating frequency is calculated at devfreq initialisation time.
    Current frequency is made available to user space because nvtop uses it
    when performing engine usage calculations.
    
    It is important to bear in mind that both GPU cycle and kernel time numbers
    provided are at best rough estimations, and always reported in excess from
    the actual figure because of two reasons:
     - Excess time because of the delay between the end of a job processing,
       the subsequent job IRQ and the actual time of the sample.
     - Time spent in the engine queue waiting for the GPU to pick up the next
       job.
    
    To avoid race conditions during enablement/disabling, a reference counting
    mechanism was introduced, and a job flag that tells us whether a given job
    increased the refcount. This is necessary, because user space can toggle
    cycle counting through a debugfs file, and a given job might have been in
    flight by the time cycle counting was disabled.
    
    The main goal of the debugfs cycle counter knob is letting tools like nvtop
    or IGT's gputop switch it at any time, to avoid power waste in case no
    engine usage measuring is necessary.
    
    Also add a documentation file explaining the possible values for fdinfo's
    engine keystrings and Panfrost-specific drm-curfreq-<keystr> pairs.
    Signed-off-by: default avatarAdrián Larumbe <adrian.larumbe@collabora.com>
    Reviewed-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: default avatarSteven Price <steven.price@arm.com>
    Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230929181616.2769345-3-adrian.larumbe@collabora.com
    f11b0417
panfrost_debugfs.h 306 Bytes