mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 20:02:10 -04:00
drm/i915/display: Zero-initialize frame/scanline counts in tracepoints
In an upcoming change, we will also add support for logging frame/scanline counts for pipe D in relevant tracepoints. In [1], Matt mentioned the possibility of having garbage in those counts for pipe D on a platform containing only 3 pipes. Indeed, it has been verified that the counts for the extra pipe would not be zero-initialized by the tracing system. Since it is also possible that the same would happen for a fused-off pipe, let's go ahead and add the logic to zero-initialize the arrays now. [1] https://lore.kernel.org/all/20240918224927.GU5091@mdroper-desk1.amr.corp.intel.com/ Cc: Matt Roper <matthew.d.roper@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241016135300.21428-3-gustavo.sousa@intel.com
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#if !defined(__INTEL_DISPLAY_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define __INTEL_DISPLAY_TRACE_H__
|
||||
|
||||
#include <linux/string.h>
|
||||
#include <linux/string_helpers.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/tracepoint.h>
|
||||
@@ -36,6 +37,10 @@ TRACE_EVENT(intel_pipe_enable,
|
||||
struct intel_display *display = to_intel_display(crtc);
|
||||
struct intel_crtc *it__;
|
||||
__assign_str(dev);
|
||||
memset(__entry->frame, 0,
|
||||
sizeof(__entry->frame[0]) * I915_MAX_PIPES);
|
||||
memset(__entry->scanline, 0,
|
||||
sizeof(__entry->scanline[0]) * I915_MAX_PIPES);
|
||||
for_each_intel_crtc(display->drm, it__) {
|
||||
__entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
|
||||
__entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
|
||||
@@ -65,6 +70,10 @@ TRACE_EVENT(intel_pipe_disable,
|
||||
struct intel_display *display = to_intel_display(crtc);
|
||||
struct intel_crtc *it__;
|
||||
__assign_str(dev);
|
||||
memset(__entry->frame, 0,
|
||||
sizeof(__entry->frame[0]) * I915_MAX_PIPES);
|
||||
memset(__entry->scanline, 0,
|
||||
sizeof(__entry->scanline[0]) * I915_MAX_PIPES);
|
||||
for_each_intel_crtc(display->drm, it__) {
|
||||
__entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
|
||||
__entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
|
||||
@@ -194,6 +203,10 @@ TRACE_EVENT(intel_memory_cxsr,
|
||||
TP_fast_assign(
|
||||
struct intel_crtc *crtc;
|
||||
__assign_str(dev);
|
||||
memset(__entry->frame, 0,
|
||||
sizeof(__entry->frame[0]) * I915_MAX_PIPES);
|
||||
memset(__entry->scanline, 0,
|
||||
sizeof(__entry->scanline[0]) * I915_MAX_PIPES);
|
||||
for_each_intel_crtc(display->drm, crtc) {
|
||||
__entry->frame[crtc->pipe] = intel_crtc_get_vblank_counter(crtc);
|
||||
__entry->scanline[crtc->pipe] = intel_get_crtc_scanline(crtc);
|
||||
|
||||
Reference in New Issue
Block a user