spin_lock_irqsave(&drvdata->spinlock, flags);
 
-       /* There is no point in reading a TMC in HW FIFO mode */
-       mode = readl_relaxed(drvdata->base + TMC_MODE);
-       if (mode != TMC_MODE_CIRCULAR_BUFFER) {
-               spin_unlock_irqrestore(&drvdata->spinlock, flags);
-               return -EINVAL;
-       }
-
        /* Re-enable the TMC if need be */
        if (drvdata->mode == CS_MODE_SYSFS) {
+               /* There is no point in reading a TMC in HW FIFO mode */
+               mode = readl_relaxed(drvdata->base + TMC_MODE);
+               if (mode != TMC_MODE_CIRCULAR_BUFFER) {
+                       spin_unlock_irqrestore(&drvdata->spinlock, flags);
+                       return -EINVAL;
+               }
                /*
                 * The trace run will continue with the same allocated trace
                 * buffer. As such zero-out the buffer so that we don't end