On 07/07/2015 04:41 AM, Chunyan Zhang wrote: > 'ctxid_val' array was used to store the value of ETM context ID comparator > which actually stores the process ID to be traced, so using 'ctxid_pid' as > its name instead make it easier to understand. Previous discussion with some ARM folks has led me to believe there isn't a guarantee that the Context ID Register will always have a PID. Why not allow filtering on thread group ID, session ID, cgroup related identifiers, etc.? > This patch also changes the ABI, it is normally not allowed, but > fortunately it is a testing ABI and very new for now. Nevertheless, > if you don't think it should be changed, we could always add an alias > for userspace. > > Signed-off-by: Chunyan Zhang <zhang.chunyan@xxxxxxxxxx> > Reviewed-by: Mark Brown <broonie@xxxxxxxxxx> > --- > .../ABI/testing/sysfs-bus-coresight-devices-etm4x | 2 +- > drivers/hwtracing/coresight/coresight-etm4x.c | 20 ++++++++++---------- > drivers/hwtracing/coresight/coresight-etm4x.h | 4 ++-- > 3 files changed, 13 insertions(+), 13 deletions(-) > > diff --git a/Documentation/ABI/testing/sysfs-bus-coresight-devices-etm4x b/Documentation/ABI/testing/sysfs-bus-coresight-devices-etm4x > index 2fe2e3d..2355ed8 100644 > --- a/Documentation/ABI/testing/sysfs-bus-coresight-devices-etm4x > +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-etm4x > @@ -249,7 +249,7 @@ KernelVersion: 4.01 > Contact: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> > Description: (RW) Select which context ID comparator to work with. > > -What: /sys/bus/coresight/devices/<memory_map>.etm/ctxid_val > +What: /sys/bus/coresight/devices/<memory_map>.etm/ctxid_pid > Date: April 2015 > KernelVersion: 4.01 > Contact: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> > diff --git a/drivers/hwtracing/coresight/coresight-etm4x.c b/drivers/hwtracing/coresight/coresight-etm4x.c > index 1312e99..9afbda5 100644 > --- a/drivers/hwtracing/coresight/coresight-etm4x.c > +++ b/drivers/hwtracing/coresight/coresight-etm4x.c > @@ -155,7 +155,7 @@ static void etm4_enable_hw(void *info) > drvdata->base + TRCACATRn(i)); > } > for (i = 0; i < drvdata->numcidc; i++) > - writeq_relaxed(drvdata->ctxid_val[i], > + writeq_relaxed(drvdata->ctxid_pid[i], > drvdata->base + TRCCIDCVRn(i)); > writel_relaxed(drvdata->ctxid_mask0, drvdata->base + TRCCIDCCTLR0); > writel_relaxed(drvdata->ctxid_mask1, drvdata->base + TRCCIDCCTLR1); > @@ -507,7 +507,7 @@ static ssize_t reset_store(struct device *dev, > > drvdata->ctxid_idx = 0x0; > for (i = 0; i < drvdata->numcidc; i++) > - drvdata->ctxid_val[i] = 0x0; > + drvdata->ctxid_pid[i] = 0x0; > drvdata->ctxid_mask0 = 0x0; > drvdata->ctxid_mask1 = 0x0; > > @@ -1815,7 +1815,7 @@ static ssize_t ctxid_idx_store(struct device *dev, > } > static DEVICE_ATTR_RW(ctxid_idx); > > -static ssize_t ctxid_val_show(struct device *dev, > +static ssize_t ctxid_pid_show(struct device *dev, > struct device_attribute *attr, > char *buf) > { > @@ -1825,12 +1825,12 @@ static ssize_t ctxid_val_show(struct device *dev, > > spin_lock(&drvdata->spinlock); > idx = drvdata->ctxid_idx; > - val = (unsigned long)drvdata->ctxid_val[idx]; > + val = (unsigned long)drvdata->ctxid_pid[idx]; > spin_unlock(&drvdata->spinlock); > return scnprintf(buf, PAGE_SIZE, "%#lx\n", val); > } > > -static ssize_t ctxid_val_store(struct device *dev, > +static ssize_t ctxid_pid_store(struct device *dev, > struct device_attribute *attr, > const char *buf, size_t size) > { > @@ -1850,11 +1850,11 @@ static ssize_t ctxid_val_store(struct device *dev, > > spin_lock(&drvdata->spinlock); > idx = drvdata->ctxid_idx; > - drvdata->ctxid_val[idx] = (u64)val; > + drvdata->ctxid_pid[idx] = (u64)val; > spin_unlock(&drvdata->spinlock); > return size; > } > -static DEVICE_ATTR_RW(ctxid_val); > +static DEVICE_ATTR_RW(ctxid_pid); > > static ssize_t ctxid_masks_show(struct device *dev, > struct device_attribute *attr, > @@ -1949,7 +1949,7 @@ static ssize_t ctxid_masks_store(struct device *dev, > */ > for (j = 0; j < 8; j++) { > if (maskbyte & 1) > - drvdata->ctxid_val[i] &= ~(0xFF << (j * 8)); > + drvdata->ctxid_pid[i] &= ~(0xFF << (j * 8)); > maskbyte >>= 1; > } > /* Select the next ctxid comparator mask value */ > @@ -2193,7 +2193,7 @@ static struct attribute *coresight_etmv4_attrs[] = { > &dev_attr_res_idx.attr, > &dev_attr_res_ctrl.attr, > &dev_attr_ctxid_idx.attr, > - &dev_attr_ctxid_val.attr, > + &dev_attr_ctxid_pid.attr, > &dev_attr_ctxid_masks.attr, > &dev_attr_vmid_idx.attr, > &dev_attr_vmid_val.attr, > @@ -2514,7 +2514,7 @@ static void etm4_init_default_data(struct etmv4_drvdata *drvdata) > } > > for (i = 0; i < drvdata->numcidc; i++) > - drvdata->ctxid_val[i] = 0x0; > + drvdata->ctxid_pid[i] = 0x0; > drvdata->ctxid_mask0 = 0x0; > drvdata->ctxid_mask1 = 0x0; > > diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h > index e08e983..1e8fb36 100644 > --- a/drivers/hwtracing/coresight/coresight-etm4x.h > +++ b/drivers/hwtracing/coresight/coresight-etm4x.h > @@ -265,7 +265,7 @@ > * @addr_type: Current status of the comparator register. > * @ctxid_idx: Context ID index selector. > * @ctxid_size: Size of the context ID field to consider. > - * @ctxid_val: Value of the context ID comparator. > + * @ctxid_pid: Value of the context ID comparator. > * @ctxid_mask0:Context ID comparator mask for comparator 0-3. > * @ctxid_mask1:Context ID comparator mask for comparator 4-7. > * @vmid_idx: VM ID index selector. > @@ -352,7 +352,7 @@ struct etmv4_drvdata { > u8 addr_type[ETM_MAX_SINGLE_ADDR_CMP]; > u8 ctxid_idx; > u8 ctxid_size; > - u64 ctxid_val[ETMv4_MAX_CTXID_CMP]; > + u64 ctxid_pid[ETMv4_MAX_CTXID_CMP]; > u32 ctxid_mask0; > u32 ctxid_mask1; > u8 vmid_idx; > -- Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html