]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
drm/crc: Only report a single overflow when a CRC fd is opened
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Wed, 18 Apr 2018 12:51:21 +0000 (14:51 +0200)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Aug 2019 09:18:49 +0000 (11:18 +0200)
BugLink: https://bugs.launchpad.net/bugs/1839036
[ Upstream commit a012024571d98e2e4bf29a9168fb7ddc44b7ab86 ]

This reduces the amount of spam when you debug a CRC reading
program.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
[mlankhorst: Change bool overflow to was_overflow (Ville)]
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180418125121.72081-1-maarten.lankhorst@linux.intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/gpu/drm/drm_debugfs_crc.c
include/drm/drm_debugfs_crc.h

index acf86944fcd79fe0cb5b3a114efcba52bfddd438..b8be796be00f9fdf8f1e8471950a2f81f16a4286 100644 (file)
@@ -139,6 +139,7 @@ static int crtc_crc_data_count(struct drm_crtc_crc *crc)
 static void crtc_crc_cleanup(struct drm_crtc_crc *crc)
 {
        kfree(crc->entries);
+       crc->overflow = false;
        crc->entries = NULL;
        crc->head = 0;
        crc->tail = 0;
@@ -373,8 +374,14 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool has_frame,
        tail = crc->tail;
 
        if (CIRC_SPACE(head, tail, DRM_CRC_ENTRIES_NR) < 1) {
+               bool was_overflow = crc->overflow;
+
+               crc->overflow = true;
                spin_unlock(&crc->lock);
-               DRM_ERROR("Overflow of CRC buffer, userspace reads too slow.\n");
+
+               if (!was_overflow)
+                       DRM_ERROR("Overflow of CRC buffer, userspace reads too slow.\n");
+
                return -ENOBUFS;
        }
 
index 7d63b1d4adb9765a457feec02af2dcb9c4606ec6..b225eeb30d05fc5141a5aec10573daa4afee5b1b 100644 (file)
@@ -43,6 +43,7 @@ struct drm_crtc_crc_entry {
  * @lock: protects the fields in this struct
  * @source: name of the currently configured source of CRCs
  * @opened: whether userspace has opened the data file for reading
+ * @overflow: whether an overflow occured.
  * @entries: array of entries, with size of %DRM_CRC_ENTRIES_NR
  * @head: head of circular queue
  * @tail: tail of circular queue
@@ -52,7 +53,7 @@ struct drm_crtc_crc_entry {
 struct drm_crtc_crc {
        spinlock_t lock;
        const char *source;
-       bool opened;
+       bool opened, overflow;
        struct drm_crtc_crc_entry *entries;
        int head, tail;
        size_t values_cnt;