linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [RESEND PATCH 0/2] Distinguish percpu irq and percpu_devid irq
@ 2017-10-13 11:26 Julien Thierry
  2017-10-13 11:26 ` [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs Julien Thierry
  2017-10-13 11:26 ` [RESEND PATCH 2/2] arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq Julien Thierry
  0 siblings, 2 replies; 10+ messages in thread
From: Julien Thierry @ 2017-10-13 11:26 UTC (permalink / raw)
  To: linux-arm-kernel

[Resending with cover letter + better commit message for patch 1]

Hi,

Looking at the arm_pmu driver, it seems we are using irq_is_percpu when we
want to know if an irq must be configured individually on each cpu. But
this is not what irq_is_percpu does. The arm_pmu marking all its irqs as
PERCPU, driver attempts to enable the irq on each CPU even when it is not
needed.

This has not caused issue so far because enable_percpu_irq returns
immediatly if the provided irq is not PERCPU_DEVID.

* Patch 1 adds the function to identify PERCPU_DEVID irqs.
* Patch 2 replaces the irq_is_percpu calls with the new function

Cheers,

Julien

Julien Thierry (2):
  irqdesc: Add function to identify percpu_devid irqs
  arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq

 drivers/perf/arm_pmu.c          | 10 +++++-----
 drivers/perf/arm_pmu_platform.c |  4 ++--
 include/linux/irqdesc.h         |  8 ++++++++
 3 files changed, 15 insertions(+), 7 deletions(-)

--
1.9.1

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs
  2017-10-13 11:26 [RESEND PATCH 0/2] Distinguish percpu irq and percpu_devid irq Julien Thierry
@ 2017-10-13 11:26 ` Julien Thierry
  2017-10-13 16:53   ` Marc Zyngier
  2017-10-13 17:44   ` Mark Rutland
  2017-10-13 11:26 ` [RESEND PATCH 2/2] arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq Julien Thierry
  1 sibling, 2 replies; 10+ messages in thread
From: Julien Thierry @ 2017-10-13 11:26 UTC (permalink / raw)
  To: linux-arm-kernel

irq_is_percpu indicates whether an irq should only target a single cpu.
PERCPU_DEVID flag indicates that an irq can be configured differently on
each cpu it can target.

Provide a function to check whether an irq is PERCPU_DEVID.

Signed-off-by: Julien Thierry <julien.thierry@arm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Marc Zyngier <marc.zyngier@arm.com>
---
 include/linux/irqdesc.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 3e90a09..93960cf 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -244,6 +244,14 @@ static inline int irq_is_percpu(unsigned int irq)
 	return desc->status_use_accessors & IRQ_PER_CPU;
 }

+static inline int irq_is_percpu_devid(unsigned int irq)
+{
+	struct irq_desc *desc;
+
+	desc = irq_to_desc(irq);
+	return desc->status_use_accessors & IRQ_PER_CPU_DEVID;
+}
+
 static inline void
 irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)
 {
--
1.9.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RESEND PATCH 2/2] arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq
  2017-10-13 11:26 [RESEND PATCH 0/2] Distinguish percpu irq and percpu_devid irq Julien Thierry
  2017-10-13 11:26 ` [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs Julien Thierry
@ 2017-10-13 11:26 ` Julien Thierry
  2017-10-13 16:47   ` Mark Rutland
  1 sibling, 1 reply; 10+ messages in thread
From: Julien Thierry @ 2017-10-13 11:26 UTC (permalink / raw)
  To: linux-arm-kernel

arm_pmu interrupts are maked as PERCPU even when these are not local
physical interrupts to a single CPU. When using non-local interrupts,
interrupts marked as PERCPU will not get freed not disabled properly
by the PMU driver.

Check if interrupts are local to a single CPU with PERCPU_DEVID since
this is what the PMU driver really needs to know.

Signed-off-by: Julien Thierry <julien.thierry@arm.com>
Will Deacon <will.deacon@arm.com>
Mark Rutland <mark.rutland@arm.com>
---
 drivers/perf/arm_pmu.c          | 10 +++++-----
 drivers/perf/arm_pmu_platform.c |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
index d14fc2e..7bc5eee 100644
--- a/drivers/perf/arm_pmu.c
+++ b/drivers/perf/arm_pmu.c
@@ -539,7 +539,7 @@ void armpmu_free_irq(struct arm_pmu *armpmu, int cpu)
 	if (!cpumask_test_and_clear_cpu(cpu, &armpmu->active_irqs))
 		return;

-	if (irq_is_percpu(irq)) {
+	if (irq_is_percpu_devid(irq)) {
 		free_percpu_irq(irq, &hw_events->percpu_pmu);
 		cpumask_clear(&armpmu->active_irqs);
 		return;
@@ -565,10 +565,10 @@ int armpmu_request_irq(struct arm_pmu *armpmu, int cpu)
 	if (!irq)
 		return 0;

-	if (irq_is_percpu(irq) && cpumask_empty(&armpmu->active_irqs)) {
+	if (irq_is_percpu_devid(irq) && cpumask_empty(&armpmu->active_irqs)) {
 		err = request_percpu_irq(irq, handler, "arm-pmu",
 					 &hw_events->percpu_pmu);
-	} else if (irq_is_percpu(irq)) {
+	} else if (irq_is_percpu_devid(irq)) {
 		int other_cpu = cpumask_first(&armpmu->active_irqs);
 		int other_irq = per_cpu(hw_events->irq, other_cpu);

@@ -649,7 +649,7 @@ static int arm_perf_starting_cpu(unsigned int cpu, struct hlist_node *node)

 	irq = armpmu_get_cpu_irq(pmu, cpu);
 	if (irq) {
-		if (irq_is_percpu(irq)) {
+		if (irq_is_percpu_devid(irq)) {
 			enable_percpu_irq(irq, IRQ_TYPE_NONE);
 			return 0;
 		}
@@ -667,7 +667,7 @@ static int arm_perf_teardown_cpu(unsigned int cpu, struct hlist_node *node)
 		return 0;

 	irq = armpmu_get_cpu_irq(pmu, cpu);
-	if (irq && irq_is_percpu(irq))
+	if (irq && irq_is_percpu_devid(irq))
 		disable_percpu_irq(irq);

 	return 0;
diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
index 4eafa7a..bbc64ee 100644
--- a/drivers/perf/arm_pmu_platform.c
+++ b/drivers/perf/arm_pmu_platform.c
@@ -126,7 +126,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)

 	if (num_irqs == 1) {
 		int irq = platform_get_irq(pdev, 0);
-		if (irq && irq_is_percpu(irq))
+		if (irq && irq_is_percpu_devid(irq))
 			return pmu_parse_percpu_irq(pmu, irq);
 	}

@@ -149,7 +149,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
 		if (WARN_ON(irq <= 0))
 			continue;

-		if (irq_is_percpu(irq)) {
+		if (irq_is_percpu_devid(irq)) {
 			pr_warn("multiple PPIs or mismatched SPI/PPI detected\n");
 			return -EINVAL;
 		}
--
1.9.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RESEND PATCH 2/2] arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq
  2017-10-13 11:26 ` [RESEND PATCH 2/2] arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq Julien Thierry
@ 2017-10-13 16:47   ` Mark Rutland
  2017-10-16  8:19     ` Julien Thierry
  0 siblings, 1 reply; 10+ messages in thread
From: Mark Rutland @ 2017-10-13 16:47 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Oct 13, 2017 at 12:26:45PM +0100, Julien Thierry wrote:
> arm_pmu interrupts are maked as PERCPU even when these are not local
> physical interrupts to a single CPU. When using non-local interrupts,
> interrupts marked as PERCPU will not get freed not disabled properly
> by the PMU driver.
> 
> Check if interrupts are local to a single CPU with PERCPU_DEVID since
> this is what the PMU driver really needs to know.
> 
> Signed-off-by: Julien Thierry <julien.thierry@arm.com>
> Will Deacon <will.deacon@arm.com>
> Mark Rutland <mark.rutland@arm.com>

I guess these should have been with prefixed 'Cc: '.

The patch itself looks good to me:

Acked-by: Mark Rutland <mark.rutland@arm.com>

I suspect we'll need to take both patches via the usual arm pmu tree, so
it'd be good if we could get an ack on patch 1.

Thanks,
Mark.

> ---
>  drivers/perf/arm_pmu.c          | 10 +++++-----
>  drivers/perf/arm_pmu_platform.c |  4 ++--
>  2 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
> index d14fc2e..7bc5eee 100644
> --- a/drivers/perf/arm_pmu.c
> +++ b/drivers/perf/arm_pmu.c
> @@ -539,7 +539,7 @@ void armpmu_free_irq(struct arm_pmu *armpmu, int cpu)
>  	if (!cpumask_test_and_clear_cpu(cpu, &armpmu->active_irqs))
>  		return;
> 
> -	if (irq_is_percpu(irq)) {
> +	if (irq_is_percpu_devid(irq)) {
>  		free_percpu_irq(irq, &hw_events->percpu_pmu);
>  		cpumask_clear(&armpmu->active_irqs);
>  		return;
> @@ -565,10 +565,10 @@ int armpmu_request_irq(struct arm_pmu *armpmu, int cpu)
>  	if (!irq)
>  		return 0;
> 
> -	if (irq_is_percpu(irq) && cpumask_empty(&armpmu->active_irqs)) {
> +	if (irq_is_percpu_devid(irq) && cpumask_empty(&armpmu->active_irqs)) {
>  		err = request_percpu_irq(irq, handler, "arm-pmu",
>  					 &hw_events->percpu_pmu);
> -	} else if (irq_is_percpu(irq)) {
> +	} else if (irq_is_percpu_devid(irq)) {
>  		int other_cpu = cpumask_first(&armpmu->active_irqs);
>  		int other_irq = per_cpu(hw_events->irq, other_cpu);
> 
> @@ -649,7 +649,7 @@ static int arm_perf_starting_cpu(unsigned int cpu, struct hlist_node *node)
> 
>  	irq = armpmu_get_cpu_irq(pmu, cpu);
>  	if (irq) {
> -		if (irq_is_percpu(irq)) {
> +		if (irq_is_percpu_devid(irq)) {
>  			enable_percpu_irq(irq, IRQ_TYPE_NONE);
>  			return 0;
>  		}
> @@ -667,7 +667,7 @@ static int arm_perf_teardown_cpu(unsigned int cpu, struct hlist_node *node)
>  		return 0;
> 
>  	irq = armpmu_get_cpu_irq(pmu, cpu);
> -	if (irq && irq_is_percpu(irq))
> +	if (irq && irq_is_percpu_devid(irq))
>  		disable_percpu_irq(irq);
> 
>  	return 0;
> diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
> index 4eafa7a..bbc64ee 100644
> --- a/drivers/perf/arm_pmu_platform.c
> +++ b/drivers/perf/arm_pmu_platform.c
> @@ -126,7 +126,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
> 
>  	if (num_irqs == 1) {
>  		int irq = platform_get_irq(pdev, 0);
> -		if (irq && irq_is_percpu(irq))
> +		if (irq && irq_is_percpu_devid(irq))
>  			return pmu_parse_percpu_irq(pmu, irq);
>  	}
> 
> @@ -149,7 +149,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
>  		if (WARN_ON(irq <= 0))
>  			continue;
> 
> -		if (irq_is_percpu(irq)) {
> +		if (irq_is_percpu_devid(irq)) {
>  			pr_warn("multiple PPIs or mismatched SPI/PPI detected\n");
>  			return -EINVAL;
>  		}
> --
> 1.9.1

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs
  2017-10-13 11:26 ` [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs Julien Thierry
@ 2017-10-13 16:53   ` Marc Zyngier
  2017-10-13 17:44   ` Mark Rutland
  1 sibling, 0 replies; 10+ messages in thread
From: Marc Zyngier @ 2017-10-13 16:53 UTC (permalink / raw)
  To: linux-arm-kernel

On 13/10/17 12:26, Julien Thierry wrote:
> irq_is_percpu indicates whether an irq should only target a single cpu.
> PERCPU_DEVID flag indicates that an irq can be configured differently on
> each cpu it can target.
> 
> Provide a function to check whether an irq is PERCPU_DEVID.
> 
> Signed-off-by: Julien Thierry <julien.thierry@arm.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  include/linux/irqdesc.h | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
> index 3e90a09..93960cf 100644
> --- a/include/linux/irqdesc.h
> +++ b/include/linux/irqdesc.h
> @@ -244,6 +244,14 @@ static inline int irq_is_percpu(unsigned int irq)
>  	return desc->status_use_accessors & IRQ_PER_CPU;
>  }
> 
> +static inline int irq_is_percpu_devid(unsigned int irq)
> +{
> +	struct irq_desc *desc;
> +
> +	desc = irq_to_desc(irq);
> +	return desc->status_use_accessors & IRQ_PER_CPU_DEVID;
> +}
> +
>  static inline void
>  irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)
>  {
> --
> 1.9.1
> 

Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>

	M.
-- 
Jazz is not dead. It just smells funny...

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs
  2017-10-13 11:26 ` [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs Julien Thierry
  2017-10-13 16:53   ` Marc Zyngier
@ 2017-10-13 17:44   ` Mark Rutland
  2017-10-24 14:46     ` Will Deacon
  1 sibling, 1 reply; 10+ messages in thread
From: Mark Rutland @ 2017-10-13 17:44 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Thomas,

Would you be happy for this patch to be taken via the arm64 tree?

The next patch [1] makes use of this in the arm_pmu driver, and we're
likely to have some other changes there shortly.

Thanks,
Mark

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-October/536532.html

On Fri, Oct 13, 2017 at 12:26:44PM +0100, Julien Thierry wrote:
> irq_is_percpu indicates whether an irq should only target a single cpu.
> PERCPU_DEVID flag indicates that an irq can be configured differently on
> each cpu it can target.
> 
> Provide a function to check whether an irq is PERCPU_DEVID.
> 
> Signed-off-by: Julien Thierry <julien.thierry@arm.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  include/linux/irqdesc.h | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
> index 3e90a09..93960cf 100644
> --- a/include/linux/irqdesc.h
> +++ b/include/linux/irqdesc.h
> @@ -244,6 +244,14 @@ static inline int irq_is_percpu(unsigned int irq)
>  	return desc->status_use_accessors & IRQ_PER_CPU;
>  }
> 
> +static inline int irq_is_percpu_devid(unsigned int irq)
> +{
> +	struct irq_desc *desc;
> +
> +	desc = irq_to_desc(irq);
> +	return desc->status_use_accessors & IRQ_PER_CPU_DEVID;
> +}
> +
>  static inline void
>  irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)
>  {
> --
> 1.9.1

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RESEND PATCH 2/2] arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq
  2017-10-13 16:47   ` Mark Rutland
@ 2017-10-16  8:19     ` Julien Thierry
  0 siblings, 0 replies; 10+ messages in thread
From: Julien Thierry @ 2017-10-16  8:19 UTC (permalink / raw)
  To: linux-arm-kernel



On 13/10/17 17:47, Mark Rutland wrote:
> On Fri, Oct 13, 2017 at 12:26:45PM +0100, Julien Thierry wrote:
>> arm_pmu interrupts are maked as PERCPU even when these are not local
>> physical interrupts to a single CPU. When using non-local interrupts,
>> interrupts marked as PERCPU will not get freed not disabled properly
>> by the PMU driver.
>>
>> Check if interrupts are local to a single CPU with PERCPU_DEVID since
>> this is what the PMU driver really needs to know.
>>
>> Signed-off-by: Julien Thierry <julien.thierry@arm.com>
>> Will Deacon <will.deacon@arm.com>
>> Mark Rutland <mark.rutland@arm.com>
>
> I guess these should have been with prefixed 'Cc: '.

Oops, yes they should've.

>
> The patch itself looks good to me:
>
> Acked-by: Mark Rutland <mark.rutland@arm.com>
>
> I suspect we'll need to take both patches via the usual arm pmu tree, so
> it'd be good if we could get an ack on patch 1.
>

Thanks!

> Thanks,
> Mark.
>
>> ---
>>   drivers/perf/arm_pmu.c          | 10 +++++-----
>>   drivers/perf/arm_pmu_platform.c |  4 ++--
>>   2 files changed, 7 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
>> index d14fc2e..7bc5eee 100644
>> --- a/drivers/perf/arm_pmu.c
>> +++ b/drivers/perf/arm_pmu.c
>> @@ -539,7 +539,7 @@ void armpmu_free_irq(struct arm_pmu *armpmu, int cpu)
>>      if (!cpumask_test_and_clear_cpu(cpu, &armpmu->active_irqs))
>>              return;
>>
>> -    if (irq_is_percpu(irq)) {
>> +    if (irq_is_percpu_devid(irq)) {
>>              free_percpu_irq(irq, &hw_events->percpu_pmu);
>>              cpumask_clear(&armpmu->active_irqs);
>>              return;
>> @@ -565,10 +565,10 @@ int armpmu_request_irq(struct arm_pmu *armpmu, int cpu)
>>      if (!irq)
>>              return 0;
>>
>> -    if (irq_is_percpu(irq) && cpumask_empty(&armpmu->active_irqs)) {
>> +    if (irq_is_percpu_devid(irq) && cpumask_empty(&armpmu->active_irqs)) {
>>              err = request_percpu_irq(irq, handler, "arm-pmu",
>>                                       &hw_events->percpu_pmu);
>> -    } else if (irq_is_percpu(irq)) {
>> +    } else if (irq_is_percpu_devid(irq)) {
>>              int other_cpu = cpumask_first(&armpmu->active_irqs);
>>              int other_irq = per_cpu(hw_events->irq, other_cpu);
>>
>> @@ -649,7 +649,7 @@ static int arm_perf_starting_cpu(unsigned int cpu, struct hlist_node *node)
>>
>>      irq = armpmu_get_cpu_irq(pmu, cpu);
>>      if (irq) {
>> -            if (irq_is_percpu(irq)) {
>> +            if (irq_is_percpu_devid(irq)) {
>>                      enable_percpu_irq(irq, IRQ_TYPE_NONE);
>>                      return 0;
>>              }
>> @@ -667,7 +667,7 @@ static int arm_perf_teardown_cpu(unsigned int cpu, struct hlist_node *node)
>>              return 0;
>>
>>      irq = armpmu_get_cpu_irq(pmu, cpu);
>> -    if (irq && irq_is_percpu(irq))
>> +    if (irq && irq_is_percpu_devid(irq))
>>              disable_percpu_irq(irq);
>>
>>      return 0;
>> diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
>> index 4eafa7a..bbc64ee 100644
>> --- a/drivers/perf/arm_pmu_platform.c
>> +++ b/drivers/perf/arm_pmu_platform.c
>> @@ -126,7 +126,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
>>
>>      if (num_irqs == 1) {
>>              int irq = platform_get_irq(pdev, 0);
>> -            if (irq && irq_is_percpu(irq))
>> +            if (irq && irq_is_percpu_devid(irq))
>>                      return pmu_parse_percpu_irq(pmu, irq);
>>      }
>>
>> @@ -149,7 +149,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
>>              if (WARN_ON(irq <= 0))
>>                      continue;
>>
>> -            if (irq_is_percpu(irq)) {
>> +            if (irq_is_percpu_devid(irq)) {
>>                      pr_warn("multiple PPIs or mismatched SPI/PPI detected\n");
>>                      return -EINVAL;
>>              }
>> --
>> 1.9.1

--
Julien Thierry
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs
  2017-10-13 17:44   ` Mark Rutland
@ 2017-10-24 14:46     ` Will Deacon
  2017-10-24 14:50       ` Thomas Gleixner
  0 siblings, 1 reply; 10+ messages in thread
From: Will Deacon @ 2017-10-24 14:46 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Thomas,

I was hoping to merge this one via arm64 since it now has Marc's
Reviewed-by, but I'd really like your Ack on it too, if you don't mind.

Could you take a look, please?

Thanks,

Will

On Fri, Oct 13, 2017 at 06:44:23PM +0100, Mark Rutland wrote:
> Would you be happy for this patch to be taken via the arm64 tree?
> 
> The next patch [1] makes use of this in the arm_pmu driver, and we're
> likely to have some other changes there shortly.
> 
> Thanks,
> Mark
> 
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-October/536532.html
> 
> On Fri, Oct 13, 2017 at 12:26:44PM +0100, Julien Thierry wrote:
> > irq_is_percpu indicates whether an irq should only target a single cpu.
> > PERCPU_DEVID flag indicates that an irq can be configured differently on
> > each cpu it can target.
> > 
> > Provide a function to check whether an irq is PERCPU_DEVID.
> > 
> > Signed-off-by: Julien Thierry <julien.thierry@arm.com>
> > Cc: Thomas Gleixner <tglx@linutronix.de>
> > Cc: Marc Zyngier <marc.zyngier@arm.com>
> > ---
> >  include/linux/irqdesc.h | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> > 
> > diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
> > index 3e90a09..93960cf 100644
> > --- a/include/linux/irqdesc.h
> > +++ b/include/linux/irqdesc.h
> > @@ -244,6 +244,14 @@ static inline int irq_is_percpu(unsigned int irq)
> >  	return desc->status_use_accessors & IRQ_PER_CPU;
> >  }
> > 
> > +static inline int irq_is_percpu_devid(unsigned int irq)
> > +{
> > +	struct irq_desc *desc;
> > +
> > +	desc = irq_to_desc(irq);
> > +	return desc->status_use_accessors & IRQ_PER_CPU_DEVID;
> > +}
> > +
> >  static inline void
> >  irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)
> >  {
> > --
> > 1.9.1

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs
  2017-10-24 14:46     ` Will Deacon
@ 2017-10-24 14:50       ` Thomas Gleixner
  2017-10-24 14:52         ` Will Deacon
  0 siblings, 1 reply; 10+ messages in thread
From: Thomas Gleixner @ 2017-10-24 14:50 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 24 Oct 2017, Will Deacon wrote:

> Hi Thomas,
> 
> I was hoping to merge this one via arm64 since it now has Marc's
> Reviewed-by, but I'd really like your Ack on it too, if you don't mind.
> 
> Could you take a look, please?

Reviewed-by: Thomas Gleixner <tglx@linutronix.de>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs
  2017-10-24 14:50       ` Thomas Gleixner
@ 2017-10-24 14:52         ` Will Deacon
  0 siblings, 0 replies; 10+ messages in thread
From: Will Deacon @ 2017-10-24 14:52 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Oct 24, 2017 at 04:50:19PM +0200, Thomas Gleixner wrote:
> On Tue, 24 Oct 2017, Will Deacon wrote:
> 
> > Hi Thomas,
> > 
> > I was hoping to merge this one via arm64 since it now has Marc's
> > Reviewed-by, but I'd really like your Ack on it too, if you don't mind.
> > 
> > Could you take a look, please?
> 
> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>

Brill, cheers.

Will

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-10-24 14:52 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-13 11:26 [RESEND PATCH 0/2] Distinguish percpu irq and percpu_devid irq Julien Thierry
2017-10-13 11:26 ` [RESEND PATCH 1/2] irqdesc: Add function to identify percpu_devid irqs Julien Thierry
2017-10-13 16:53   ` Marc Zyngier
2017-10-13 17:44   ` Mark Rutland
2017-10-24 14:46     ` Will Deacon
2017-10-24 14:50       ` Thomas Gleixner
2017-10-24 14:52         ` Will Deacon
2017-10-13 11:26 ` [RESEND PATCH 2/2] arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq Julien Thierry
2017-10-13 16:47   ` Mark Rutland
2017-10-16  8:19     ` Julien Thierry

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).