/* No start-stop filtering for ViewInst */
        config->vissctlr = 0x0;
+       config->vipcssctlr = 0x0;
 
        /* Disable seq events */
        for (i = 0; i < drvdata->nrseqstate-1; i++)
        config->addr_val[idx] = (u64)val;
        config->addr_type[idx] = ETM_ADDR_TYPE_START;
        config->vissctlr |= BIT(idx);
-       /* SSSTATUS, bit[9] - turn on start/stop logic */
-       config->vinst_ctrl |= BIT(9);
        spin_unlock(&drvdata->spinlock);
        return size;
 }
        config->addr_val[idx] = (u64)val;
        config->addr_type[idx] = ETM_ADDR_TYPE_STOP;
        config->vissctlr |= BIT(idx + 16);
-       /* SSSTATUS, bit[9] - turn on start/stop logic */
-       config->vinst_ctrl |= BIT(9);
        spin_unlock(&drvdata->spinlock);
        return size;
 }
 }
 static DEVICE_ATTR_RW(addr_exlevel_s_ns);
 
+static ssize_t vinst_pe_cmp_start_stop_show(struct device *dev,
+                                           struct device_attribute *attr,
+                                           char *buf)
+{
+       unsigned long val;
+       struct etmv4_drvdata *drvdata = dev_get_drvdata(dev->parent);
+       struct etmv4_config *config = &drvdata->config;
+
+       if (!drvdata->nr_pe_cmp)
+               return -EINVAL;
+       val = config->vipcssctlr;
+       return scnprintf(buf, PAGE_SIZE, "%#lx\n", val);
+}
+static ssize_t vinst_pe_cmp_start_stop_store(struct device *dev,
+                                            struct device_attribute *attr,
+                                            const char *buf, size_t size)
+{
+       unsigned long val;
+       struct etmv4_drvdata *drvdata = dev_get_drvdata(dev->parent);
+       struct etmv4_config *config = &drvdata->config;
+
+       if (kstrtoul(buf, 16, &val))
+               return -EINVAL;
+       if (!drvdata->nr_pe_cmp)
+               return -EINVAL;
+
+       spin_lock(&drvdata->spinlock);
+       config->vipcssctlr = val;
+       spin_unlock(&drvdata->spinlock);
+       return size;
+}
+static DEVICE_ATTR_RW(vinst_pe_cmp_start_stop);
+
 static ssize_t seq_idx_show(struct device *dev,
                            struct device_attribute *attr,
                            char *buf)
        &dev_attr_addr_ctxtype.attr,
        &dev_attr_addr_context.attr,
        &dev_attr_addr_exlevel_s_ns.attr,
+       &dev_attr_vinst_pe_cmp_start_stop.attr,
        &dev_attr_seq_idx.attr,
        &dev_attr_seq_state.attr,
        &dev_attr_seq_event.attr,