]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
coresight: tmc-etf: Properly set AUX buffer head in snapshot mode
authorMathieu Poirier <mathieu.poirier@linaro.org>
Wed, 19 Jun 2019 17:29:07 +0000 (11:29 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jun 2019 18:29:13 +0000 (20:29 +0200)
Unify amongst sink drivers how the AUX ring buffer head is communicated
to user space.  That way the same algorithm in user space can be used to
determine where the latest data is and how much of it to access.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Tested-by: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hwtracing/coresight/coresight-tmc-etf.c

index 2527b5d3b65e96203f7a7c0387a34d4175ccb6c9..d026bd04a6afcfa1c17282e7bfd76472e84e7221 100644 (file)
@@ -542,11 +542,15 @@ static unsigned long tmc_update_etf_buffer(struct coresight_device *csdev,
                }
        }
 
-       /* In snapshot mode we have to update the head */
-       if (buf->snapshot) {
-               handle->head = (cur * PAGE_SIZE) + offset;
-               to_read = buf->nr_pages << PAGE_SHIFT;
-       }
+       /*
+        * In snapshot mode we simply increment the head by the number of byte
+        * that were written.  User space function  cs_etm_find_snapshot() will
+        * figure out how many bytes to get from the AUX buffer based on the
+        * position of the head.
+        */
+       if (buf->snapshot)
+               handle->head += to_read;
+
        CS_LOCK(drvdata->base);
 out:
        spin_unlock_irqrestore(&drvdata->spinlock, flags);