diff mbox series

[v2,RESEND,1/4] coresight: etm4x: Add lock for reading virtual context ID comparator

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

Commit Message

Leo Yan Feb. 4, 2022, 3:24 p.m. UTC
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(+)

Comments

Suzuki K Poulose Feb. 9, 2022, 5:47 a.m. UTC | #1
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
Leo Yan Feb. 9, 2022, 9:33 a.m. UTC | #2
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
Suzuki K Poulose Feb. 9, 2022, 9:42 a.m. UTC | #3
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
Mathieu Poirier Feb. 9, 2022, 4:58 p.m. UTC | #4
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 mbox series

Patch

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);
 }