Message ID | 20220204152403.71775-2-leo.yan@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | coresight: etm: Correct PID tracing for non-root namespace | expand |
Hi Leo On 04/02/2022 15:24, Leo Yan wrote: > Updates to the values and the index are protected via the spinlock. > Ensure we use the same lock to read the value safely. > > Signed-off-by: Leo Yan <leo.yan@linaro.org> > Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> > --- > drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > index 10ef2a29006e..2f3b4eef8261 100644 > --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > @@ -2111,7 +2111,9 @@ static ssize_t vmid_val_show(struct device *dev, > struct etmv4_drvdata *drvdata = dev_get_drvdata(dev->parent); > struct etmv4_config *config = &drvdata->config; > > + spin_lock(&drvdata->spinlock); > val = (unsigned long)config->vmid_val[config->vmid_idx]; > + spin_unlock(&drvdata->spinlock); > return scnprintf(buf, PAGE_SIZE, "%#lx\n", val); > } > I have queued this patch. For the rest, we would need to wait until the helper lands in the rc. Suzuki
Hi Suzuki, On Wed, Feb 09, 2022 at 05:47:24AM +0000, Suzuki Kuruppassery Poulose wrote: > Hi Leo > > On 04/02/2022 15:24, Leo Yan wrote: > > Updates to the values and the index are protected via the spinlock. > > Ensure we use the same lock to read the value safely. > > > > Signed-off-by: Leo Yan <leo.yan@linaro.org> > > Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> > > --- > > drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > > index 10ef2a29006e..2f3b4eef8261 100644 > > --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > > +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > > @@ -2111,7 +2111,9 @@ static ssize_t vmid_val_show(struct device *dev, > > struct etmv4_drvdata *drvdata = dev_get_drvdata(dev->parent); > > struct etmv4_config *config = &drvdata->config; > > + spin_lock(&drvdata->spinlock); > > val = (unsigned long)config->vmid_val[config->vmid_idx]; > > + spin_unlock(&drvdata->spinlock); > > return scnprintf(buf, PAGE_SIZE, "%#lx\n", val); > > } > > > I have queued this patch. Thanks! > For the rest, we would need to wait until the helper lands in the rc. The helper function patch has been landed on the mainline kernel, it would be safe to merge the rest patches. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d7e4f8545b497b3f5687e592f1c355cbaee64c8c BTW, I think you could pick another two refactoring patches: https://lore.kernel.org/lkml/20220204135051.60639-2-leo.yan@linaro.org/ https://lore.kernel.org/lkml/20220204135051.60639-3-leo.yan@linaro.org/ Thanks, Leo
Hi Leo On 09/02/2022 09:33, Leo Yan wrote: > Hi Suzuki, > > On Wed, Feb 09, 2022 at 05:47:24AM +0000, Suzuki Kuruppassery Poulose wrote: >> Hi Leo >> >> On 04/02/2022 15:24, Leo Yan wrote: >>> Updates to the values and the index are protected via the spinlock. >>> Ensure we use the same lock to read the value safely. >>> >>> Signed-off-by: Leo Yan <leo.yan@linaro.org> >>> Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> >>> --- >>> drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c >>> index 10ef2a29006e..2f3b4eef8261 100644 >>> --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c >>> +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c >>> @@ -2111,7 +2111,9 @@ static ssize_t vmid_val_show(struct device *dev, >>> struct etmv4_drvdata *drvdata = dev_get_drvdata(dev->parent); >>> struct etmv4_config *config = &drvdata->config; >>> + spin_lock(&drvdata->spinlock); >>> val = (unsigned long)config->vmid_val[config->vmid_idx]; >>> + spin_unlock(&drvdata->spinlock); >>> return scnprintf(buf, PAGE_SIZE, "%#lx\n", val); >>> } >> >> >> I have queued this patch. > > Thanks! > >> For the rest, we would need to wait until the helper lands in the rc. Sorry, that was not the exact argument, see below. > > The helper function patch has been landed on the mainline kernel, > it would be safe to merge the rest patches. > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d7e4f8545b497b3f5687e592f1c355cbaee64c8c The coresight queue is based on rc1 and we already created a stable tag for TRBE erratas, which was pulled into arm64. So, (correct me if I am wrong), AFAIU, we cannot rebase the queue on to rc2 where the patch landed. But happy to proceed, if there is a solution. Mathieu, what do you think ? Cheers Suzuki
Hey guys, On Wed, Feb 09, 2022 at 09:42:29AM +0000, Suzuki K Poulose wrote: > Hi Leo > > On 09/02/2022 09:33, Leo Yan wrote: > > Hi Suzuki, > > > > On Wed, Feb 09, 2022 at 05:47:24AM +0000, Suzuki Kuruppassery Poulose wrote: > > > Hi Leo > > > > > > On 04/02/2022 15:24, Leo Yan wrote: > > > > Updates to the values and the index are protected via the spinlock. > > > > Ensure we use the same lock to read the value safely. > > > > > > > > Signed-off-by: Leo Yan <leo.yan@linaro.org> > > > > Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> > > > > --- > > > > drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 2 ++ > > > > 1 file changed, 2 insertions(+) > > > > > > > > diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > > > > index 10ef2a29006e..2f3b4eef8261 100644 > > > > --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > > > > +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > > > > @@ -2111,7 +2111,9 @@ static ssize_t vmid_val_show(struct device *dev, > > > > struct etmv4_drvdata *drvdata = dev_get_drvdata(dev->parent); > > > > struct etmv4_config *config = &drvdata->config; > > > > + spin_lock(&drvdata->spinlock); > > > > val = (unsigned long)config->vmid_val[config->vmid_idx]; > > > > + spin_unlock(&drvdata->spinlock); > > > > return scnprintf(buf, PAGE_SIZE, "%#lx\n", val); > > > > } > > > > > > > > > I have queued this patch. > > > > Thanks! > > > > > For the rest, we would need to wait until the helper lands in the rc. > > Sorry, that was not the exact argument, see below. > > > > > The helper function patch has been landed on the mainline kernel, > > it would be safe to merge the rest patches. > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d7e4f8545b497b3f5687e592f1c355cbaee64c8c > > The coresight queue is based on rc1 and we already created a stable > tag for TRBE erratas, which was pulled into arm64. So, (correct me > if I am wrong), AFAIU, we cannot rebase the queue on to rc2 where > the patch landed. But happy to proceed, if there is a solution. > > Mathieu, what do you think ? Your assesment above is correct - because the commitIDs have been published and used in another tree we can't simply rebase to -rc2. Otherwise we would end up with the same patches with different commitIDs published in various trees. To deal with this we would "normally" ask Jakub Kicinski to prepare a pull request for us to use, after which Leo's patches could be applied. But in this case Catalin sent the arm64 part of the TRBE errata patchset to Linus as an -rc fix. As such those patches are already in Linus' tree with the same commitIDs we currently have in the coresight-next tree. Therefore you can simply rebase to rc2 (or rc3) and pile up Leo's patches on top of that. Thanks, Mathieu
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c index 10ef2a29006e..2f3b4eef8261 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c @@ -2111,7 +2111,9 @@ static ssize_t vmid_val_show(struct device *dev, struct etmv4_drvdata *drvdata = dev_get_drvdata(dev->parent); struct etmv4_config *config = &drvdata->config; + spin_lock(&drvdata->spinlock); val = (unsigned long)config->vmid_val[config->vmid_idx]; + spin_unlock(&drvdata->spinlock); return scnprintf(buf, PAGE_SIZE, "%#lx\n", val); }