ARM: imx6q: work around faulty PMU irq routing
Subsystems (3)
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU counter overflow has happened.
This causes the perf measurements to be less accurate and we can't really handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs with more than one core.
--- arch/arm/mach-imx/mach-imx6q.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-)
arch/arm/mach-imx/mach-imx6q.c +37 -1
@@ -16,6 +16,7 @@#include <linux/delay.h> #include <linux/export.h> #include <linux/init.h> +#include "linux/interrupt.h" #include <linux/io.h> #include <linux/irq.h> #include <linux/irqchip.h>
@@ -33,6 +34,7 @@#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> +#include "asm/pmu.h" #include <asm/system_misc.h> #include "common.h"
@@ -261,6 +263,39 @@ static void __init imx6q_axi_init(void) } } +/* +* The i.MX6 PMU has a design errata where the interrupts of all cores are +* wired together into a single irq line. To work around this we have to +* bounce the interrupt around all cores until we find the one where the PMU +* counter overflow has happened. +*/ +static irqreturn_t imx6q_pmu_handler (int irq,void *dev,irq_handler_t handler) +{ +irqreturn_t ret =handler (irq, dev); +int next; + +if (ret ==IRQ_NONE ) { +/* +* Kick the irq over to the next cpu, regardless of it's +* online status (it might have gone offline while we were busy +* bouncing the irq). +*/ + next = (smp_processor_id () +1 ) %num_present_cpus (); +irq_set_affinity (irq,cpumask_of (next)); + } + +return ret; +} + +struct arm_pmu_platdata imx6q_pmu_platdata = { + .handle_irq = imx6q_pmu_handler, +}; + +static struct of_dev_auxdata imx6q_auxdata_lookup[]__initdata = { +OF_DEV_AUXDATA ("arm,cortex-a9-pmu" ,0 ,"arm-pmu" , &imx6q_pmu_platdata), + {} +}; +static void __init imx6q_init_machine (void ) {struct device *parent;
@@ -276,7 +311,8 @@ static void __init imx6q_init_machine(void)imx6q_enet_phy_init (); -of_platform_populate (NULL , of_default_bus_match_table,NULL , parent); +of_platform_populate (NULL , of_default_bus_match_table, + imx6q_auxdata_lookup, parent);imx_anatop_init ();cpu_is_imx6q () ?imx6q_pm_init () :imx6dl_pm_init ();
Signature · 1 line
1.9.1
Fabio Estevam
reviewerPATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Quoted 2 lines · Lucas Stach
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to
Is there an erratum reference number for this, please?
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Quoted 5 lines · Fabio Estevam
Quoted 2 lines · Lucas Stach
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to
Is there an erratum reference number for this, please?
First, many thanks to Lucas for working on this! Up to now, it was my impression that the PMU on i.MX6 is completely useless for !single core SoCs. So maybe there is some hope, now :)
Regarding the erratum: To my knowledge there is no erratum. In 2013 I've had a discussion with the FSL support about this and got the answer:
-- cut --
This is the IC design issue, we have OR'ed the interrupt pin of the four PMU and provide one interrupt to the CPU. currently, we don't have the SW workaround available for it.
-- cut --
This is just what has been called as "braindead, broken system" in
http://lists.infradead.org/pipermail/linux-arm-kernel/2012-August/113802.html
Best regards
Dirk
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
In reply to Lucas StachQuoted 76 lines · Lucas Stach
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU counter overflow has happened.
This causes the perf measurements to be less accurate and we can't really handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs with more than one core.
Signed-off-by Lucas Stach <[email protected]>--- arch/arm/mach-imx/mach-imx6q.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-)arch/arm/mach-imx/mach-imx6q.c +35
-0@@ -16,6 +16,7 @@#include <linux/delay.h> #include <linux/export.h> #include <linux/init.h> +#include "linux/interrupt.h" #include <linux/io.h> #include <linux/irq.h> #include <linux/irqchip.h> @@ -33,6 +34,7 @@#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> +#include "asm/pmu.h" #include <asm/system_misc.h> #include "common.h" @@ -261,6 +263,39 @@ static void __init imx6q_axi_init(void) } } +/* +* The i.MX6 PMU has a design errata where the interrupts of all cores are +* wired together into a single irq line. To work around this we have to +* bounce the interrupt around all cores until we find the one where the PMU +* counter overflow has happened. +*/ +static irqreturn_t imx6q_pmu_handler (int irq,void *dev,irq_handler_t handler) +{ +irqreturn_t ret =handler (irq, dev); +int next; + +if (ret ==IRQ_NONE ) { +/* +* Kick the irq over to the next cpu, regardless of it's +* online status (it might have gone offline while we were busy +* bouncing the irq). +*/ + next = (smp_processor_id () +1 ) %num_present_cpus (); +irq_set_affinity (irq,cpumask_of (next)); + } + +return ret; +} + +struct arm_pmu_platdata imx6q_pmu_platdata = { + .handle_irq = imx6q_pmu_handler, +}; + +static struct of_dev_auxdata imx6q_auxdata_lookup[]__initdata = { +OF_DEV_AUXDATA ("arm,cortex-a9-pmu" ,0 ,"arm-pmu" , &imx6q_pmu_platdata), + {} +}; +static void __init imx6q_init_machine (void ) {struct device *parent;
arch/arm/mach-imx/mach-imx6q.c static void __init imx6q_init_machine(void) · line 318
Quoted 9 lines
arch/arm/mach-imx/mach-imx6q.c +2
-1@@ -276,7 +311,8 @@ static void __init imx6q_init_machine(void)imx6q_enet_phy_init (); -of_platform_populate (NULL , of_default_bus_match_table,NULL , parent); +of_platform_populate (NULL , of_default_bus_match_table, + imx6q_auxdata_lookup, parent);imx_anatop_init ();cpu_is_imx6q () ?imx6q_pm_init () :imx6dl_pm_init ();
Do you have anything like a test case which shows that it works (at least better) on a !single core with this patch? Compared to a non-patched system?
Many thanks
Dirk
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Am Freitag, den 25.04.2014, 07:37 +0200 schrieb Dirk Behme:
Quoted 84 lines · Lucas Stach
Quoted 83 lines
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU counter overflow has happened.
This causes the perf measurements to be less accurate and we can't really handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs with more than one core.
Signed-off-by Lucas Stach <[email protected]>--- arch/arm/mach-imx/mach-imx6q.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-)arch/arm/mach-imx/mach-imx6q.c +37
-1@@ -16,6 +16,7 @@#include <linux/delay.h> #include <linux/export.h> #include <linux/init.h> +#include "linux/interrupt.h" #include <linux/io.h> #include <linux/irq.h> #include <linux/irqchip.h> @@ -33,6 +34,7 @@#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> +#include "asm/pmu.h" #include <asm/system_misc.h> #include "common.h" @@ -261,6 +263,39 @@ static void __init imx6q_axi_init(void) } } +/* +* The i.MX6 PMU has a design errata where the interrupts of all cores are +* wired together into a single irq line. To work around this we have to +* bounce the interrupt around all cores until we find the one where the PMU +* counter overflow has happened. +*/ +static irqreturn_t imx6q_pmu_handler (int irq,void *dev,irq_handler_t handler) +{ +irqreturn_t ret =handler (irq, dev); +int next; + +if (ret ==IRQ_NONE ) { +/* +* Kick the irq over to the next cpu, regardless of it's +* online status (it might have gone offline while we were busy +* bouncing the irq). +*/ + next = (smp_processor_id () +1 ) %num_present_cpus (); +irq_set_affinity (irq,cpumask_of (next)); + } + +return ret; +} + +struct arm_pmu_platdata imx6q_pmu_platdata = { + .handle_irq = imx6q_pmu_handler, +}; + +static struct of_dev_auxdata imx6q_auxdata_lookup[]__initdata = { +OF_DEV_AUXDATA ("arm,cortex-a9-pmu" ,0 ,"arm-pmu" , &imx6q_pmu_platdata), + {} +}; +static void __init imx6q_init_machine (void ) {struct device *parent;@@ -276,7 +311,8 @@ static void __init imx6q_init_machine(void)imx6q_enet_phy_init (); -of_platform_populate (NULL , of_default_bus_match_table,NULL , parent); +of_platform_populate (NULL , of_default_bus_match_table, + imx6q_auxdata_lookup, parent);
Quoted 7 lines
arch/arm/mach-imx/mach-imx6q.c static void __init imx6q_init_machine(void) · line 318
Quoted 2 lines
arch/arm/mach-imx/mach-imx6q.c +0
-0imx_anatop_init ();cpu_is_imx6q () ?imx6q_pm_init () :imx6dl_pm_init ();Do you have anything like a test case which shows that it works (at least better) on a !single core with this patch? Compared to a non-patched system?
Without this patch, running perf top completely kills the system on i.MX6q, most likely because of the sheer number of spurious interrupts hitting the system from 4 cores. Even the spurious killer doesn't work sometimes, so perf is completely busted right now.
With this patch perf has to reduce the sample frequency in order to compensate the added irq latency, but at least we get some plausible numbers out. Though I won't take any blame if the amount of salt you have to apply while looking at those numbers is already a deadly dose. ;)
I don't yet have any numbers on how accurate the measurement is, but at least things didn't look completely off.
Regards,
Lucas
Signature · 2 lines
Pengutronix e.K. | Lucas Stach | Industrial Linux Solutions | http://www.pengutronix.de/ |
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Quoted 97 lines · Lucas Stach
Am Freitag, den 25.04.2014, 07:37 +0200 schrieb Dirk Behme:
Quoted 84 lines · Lucas Stach
Quoted 83 lines
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU counter overflow has happened.
This causes the perf measurements to be less accurate and we can't really handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs with more than one core.
Signed-off-by Lucas Stach <[email protected]>--- arch/arm/mach-imx/mach-imx6q.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-)arch/arm/mach-imx/mach-imx6q.c +37
-1@@ -16,6 +16,7 @@#include <linux/delay.h> #include <linux/export.h> #include <linux/init.h> +#include "linux/interrupt.h" #include <linux/io.h> #include <linux/irq.h> #include <linux/irqchip.h> @@ -33,6 +34,7 @@#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> +#include "asm/pmu.h" #include <asm/system_misc.h> #include "common.h" @@ -261,6 +263,39 @@ static void __init imx6q_axi_init(void) } } +/* +* The i.MX6 PMU has a design errata where the interrupts of all cores are +* wired together into a single irq line. To work around this we have to +* bounce the interrupt around all cores until we find the one where the PMU +* counter overflow has happened. +*/ +static irqreturn_t imx6q_pmu_handler (int irq,void *dev,irq_handler_t handler) +{ +irqreturn_t ret =handler (irq, dev); +int next; + +if (ret ==IRQ_NONE ) { +/* +* Kick the irq over to the next cpu, regardless of it's +* online status (it might have gone offline while we were busy +* bouncing the irq). +*/ + next = (smp_processor_id () +1 ) %num_present_cpus (); +irq_set_affinity (irq,cpumask_of (next)); + } + +return ret; +} + +struct arm_pmu_platdata imx6q_pmu_platdata = { + .handle_irq = imx6q_pmu_handler, +}; + +static struct of_dev_auxdata imx6q_auxdata_lookup[]__initdata = { +OF_DEV_AUXDATA ("arm,cortex-a9-pmu" ,0 ,"arm-pmu" , &imx6q_pmu_platdata), + {} +}; +static void __init imx6q_init_machine (void ) {struct device *parent;@@ -276,7 +311,8 @@ static void __init imx6q_init_machine(void)imx6q_enet_phy_init (); -of_platform_populate (NULL , of_default_bus_match_table,NULL , parent); +of_platform_populate (NULL , of_default_bus_match_table, + imx6q_auxdata_lookup, parent);Quoted 7 lines
arch/arm/mach-imx/mach-imx6q.c static void __init imx6q_init_machine(void) · line 318
Quoted 2 lines
arch/arm/mach-imx/mach-imx6q.c +0
-0imx_anatop_init ();cpu_is_imx6q () ?imx6q_pm_init () :imx6dl_pm_init ();Do you have anything like a test case which shows that it works (at least better) on a !single core with this patch? Compared to a non-patched system?
Without this patch, running perf top completely kills the system on i.MX6q, most likely because of the sheer number of spurious interrupts hitting the system from 4 cores. Even the spurious killer doesn't work sometimes, so perf is completely busted right now.
Quoted 8 lines
With this patch perf has to reduce the sample frequency in order to compensate the added irq latency, but at least we get some plausible numbers out. Though I won't take any blame if the amount of salt you have to apply while looking at those numbers is already a deadly dose. ;)
I don't yet have any numbers on how accurate the measurement is, but at least things didn't look completely off.
If it cannot provide correct/accurate data, I'd say let's not fake it to, and just let it be completely broken there, so that people can be aware of the brokenness, and not take inaccurate data as accurate one.
Shawn
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Am Dienstag, den 29.04.2014, 13:28 +0800 schrieb Shawn Guo:
Quoted 13 lines · Lucas Stach
Quoted 12 lines
Am Freitag, den 25.04.2014, 07:37 +0200 schrieb Dirk Behme:
Quoted 11 lines · Lucas Stach
Quoted 10 lines
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU counter overflow has happened.
This causes the perf measurements to be less accurate and we can't really handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs with more than one core.
[...]
Quoted 15 lines
Quoted 15 lines
Quoted 4 lines
Do you have anything like a test case which shows that it works (at least better) on a !single core with this patch? Compared to a non-patched system?
Without this patch, running perf top completely kills the system on i.MX6q, most likely because of the sheer number of spurious interrupts hitting the system from 4 cores. Even the spurious killer doesn't work sometimes, so perf is completely busted right now.
With this patch perf has to reduce the sample frequency in order to compensate the added irq latency, but at least we get some plausible numbers out. Though I won't take any blame if the amount of salt you have to apply while looking at those numbers is already a deadly dose. ;)
Quoted 7 lines
Quoted 2 lines
I don't yet have any numbers on how accurate the measurement is, but at least things didn't look completely off.
If it cannot provide correct/accurate data, I'd say let's not fake it to, and just let it be completely broken there, so that people can be aware of the brokenness, and not take inaccurate data as accurate one.
The data isn't bogus, it just isn't as accurate as it could be with a properly working PMU. I'll run some tests with a defined load on Solo/Quad to see how far the measurements are off. I'm fine with holding this patch until then.
But the thing is this patch also fixes a serious userspace triggerable DoS on i.MX6q. Just running perf top completely locks up the system because of the sheer number of stray irqs. This isn't the case anymore with this patch applied.
Maybe we can just print a warning into dmesg to make the users aware of the imprecise measurement.
Regards,
Lucas
Signature · 2 lines
Pengutronix e.K. | Lucas Stach | Industrial Linux Solutions | http://www.pengutronix.de/ |
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Quoted 42 lines · Lucas Stach
Am Dienstag, den 29.04.2014, 13:28 +0800 schrieb Shawn Guo:
Quoted 13 lines · Lucas Stach
Quoted 12 lines
Am Freitag, den 25.04.2014, 07:37 +0200 schrieb Dirk Behme:
Quoted 11 lines · Lucas Stach
Quoted 10 lines
The i.MX6 PMU has a design errata where the interrupts of all cores are wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU counter overflow has happened.
This causes the perf measurements to be less accurate and we can't really handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs with more than one core.
[...]
Quoted 15 lines
Quoted 15 lines
Quoted 4 lines
Do you have anything like a test case which shows that it works (at least better) on a !single core with this patch? Compared to a non-patched system?
Without this patch, running perf top completely kills the system on i.MX6q, most likely because of the sheer number of spurious interrupts hitting the system from 4 cores. Even the spurious killer doesn't work sometimes, so perf is completely busted right now.
With this patch perf has to reduce the sample frequency in order to compensate the added irq latency, but at least we get some plausible numbers out. Though I won't take any blame if the amount of salt you have to apply while looking at those numbers is already a deadly dose. ;)
Quoted 7 lines
Quoted 2 lines
I don't yet have any numbers on how accurate the measurement is, but at least things didn't look completely off.
If it cannot provide correct/accurate data, I'd say let's not fake it to, and just let it be completely broken there, so that people can be aware of the brokenness, and not take inaccurate data as accurate one.
The data isn't bogus, it just isn't as accurate as it could be with a properly working PMU. I'll run some tests with a defined load on Solo/Quad to see how far the measurements are off. I'm fine with holding this patch until then.
Quoted 7 lines
But the thing is this patch also fixes a serious userspace triggerable DoS on i.MX6q. Just running perf top completely locks up the system because of the sheer number of stray irqs. This isn't the case anymore with this patch applied.
Maybe we can just print a warning into dmesg to make the users aware of the imprecise measurement.
Yes, I think this sounds like a good compromise :)
Best regards
Dirk
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Quoted 54 lines · Dirk Behme
Quoted 53 lines · Lucas Stach
Am Dienstag, den 29.04.2014, 13:28 +0800 schrieb Shawn Guo:
Quoted 21 lines · Lucas Stach
Quoted 19 lines
Am Freitag, den 25.04.2014, 07:37 +0200 schrieb Dirk Behme:
Quoted 17 lines · Lucas Stach
Quoted 15 lines
The i.MX6 PMU has a design errata where the interrupts of all cores are
wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU
counter overflow has happened.This causes the perf measurements to be less accurate and we can't really
handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs
with more than one core.[...]
Quoted 16 lines
Quoted 16 lines
Quoted 5 lines
Do you have anything like a test case which shows that it works (at least better) on a !single core with this patch? Compared to a non-patched system?
Without this patch, running perf top completely kills the system on i.MX6q, most likely because of the sheer number of spurious interrupts hitting the system from 4 cores. Even the spurious killer doesn't work sometimes, so perf is completely busted right now.
With this patch perf has to reduce the sample frequency in order to compensate the added irq latency, but at least we get some plausible numbers out. Though I won't take any blame if the amount of salt you have to apply while looking at those numbers is already a deadly dose. ;)
Quoted 8 lines
Quoted 2 lines
I don't yet have any numbers on how accurate the measurement is, but at least things didn't look completely off.
If it cannot provide correct/accurate data, I'd say let's not fake it to, and just let it be completely broken there, so that people can be aware of the brokenness, and not take inaccurate data as accurate one.
The data isn't bogus, it just isn't as accurate as it could be with a properly working PMU. I'll run some tests with a defined load on Solo/Quad to see how far the measurements are off. I'm fine with holding this patch until then.
Quoted 4 lines
Quoted 4 lines
But the thing is this patch also fixes a serious userspace triggerable DoS on i.MX6q. Just running perf top completely locks up the system because of the sheer number of stray irqs. This isn't the case anymore with this patch applied.
I am very strange. Why PMU can work because below errata?
ERR006259 ARM: Debug/trace functions (PMU, PTM and ETB) are disabled with absence of JTAG_TCK clock after POR
Default it should no any PMU irqs happen.
best regards
Frank Li
Quoted 22 lines
Quoted 3 lines
Maybe we can just print a warning into dmesg to make the users aware of the imprecise measurement.
Yes, I think this sounds like a good compromise :)
Best regards
Dirk
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
PATCH 1/1 ARM: imx6q: work around faulty PMU irq routing
Am Dienstag, den 29.04.2014, 13:33 -0500 schrieb Frank Li:
Quoted 60 lines · Dirk Behme
Quoted 54 lines · Lucas Stach
Quoted 53 lines
Am Dienstag, den 29.04.2014, 13:28 +0800 schrieb Shawn Guo:
Quoted 21 lines · Lucas Stach
Quoted 19 lines
Am Freitag, den 25.04.2014, 07:37 +0200 schrieb Dirk Behme:
Quoted 17 lines · Lucas Stach
Quoted 15 lines
The i.MX6 PMU has a design errata where the interrupts of all cores are
wired together into a single irq line. To work around this we have to bounce the interrupt around all cores until we find the one where the PMU
counter overflow has happened.This causes the perf measurements to be less accurate and we can't really
handle the case where two cores fire a PMU irq at the same time. The implemented woraround makes perf at least somewhat useable on imx6 SoCs
with more than one core.[...]
Quoted 16 lines
Quoted 16 lines
Quoted 5 lines
Do you have anything like a test case which shows that it works (at least better) on a !single core with this patch? Compared to a non-patched system?
Without this patch, running perf top completely kills the system on i.MX6q, most likely because of the sheer number of spurious interrupts hitting the system from 4 cores. Even the spurious killer doesn't work sometimes, so perf is completely busted right now.
With this patch perf has to reduce the sample frequency in order to compensate the added irq latency, but at least we get some plausible numbers out. Though I won't take any blame if the amount of salt you have to apply while looking at those numbers is already a deadly dose. ;)
Quoted 8 lines
Quoted 2 lines
I don't yet have any numbers on how accurate the measurement is, but at least things didn't look completely off.
If it cannot provide correct/accurate data, I'd say let's not fake it to, and just let it be completely broken there, so that people can be aware of the brokenness, and not take inaccurate data as accurate one.
The data isn't bogus, it just isn't as accurate as it could be with a properly working PMU. I'll run some tests with a defined load on Solo/Quad to see how far the measurements are off. I'm fine with holding this patch until then.
Quoted 4 lines
Quoted 4 lines
But the thing is this patch also fixes a serious userspace triggerable DoS on i.MX6q. Just running perf top completely locks up the system because of the sheer number of stray irqs. This isn't the case anymore with this patch applied.
Quoted 6 lines
I am very strange. Why PMU can work because below errata?
ERR006259 ARM: Debug/trace functions (PMU, PTM and ETB) are disabled with absence of
JTAG_TCKclock after PORDefault it should no any PMU irqs happen.
Hm, I wasn't aware of this errata and I have to say it confuses me a bit, as contrary to what the errata claims the PMU is working just fine on imx6 without a JTAG_TCK connected. I've just tested this on 3 different boards (2 of them imx6q, 1 imx6dl) and you can clearly see the interrupt hitting.
Regards,
Lucas
Signature · 2 lines
Pengutronix e.K. | Lucas Stach | Industrial Linux Solutions | http://www.pengutronix.de/ |