diff mbox

ARM: arch_timer: Don't expect both secure and nonsecure PPI IRQ info

Message ID 1358511830-7909-1-git-send-email-rnayak@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rajendra Nayak Jan. 18, 2013, 12:23 p.m. UTC
The current logic expects platforms to pass information about *both*
secure and nonsecure PPI IRQ. Make arch_timer work even when either one
of those are provided instead.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
 arch/arm/kernel/arch_timer.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Marc Zyngier Jan. 18, 2013, 1:13 p.m. UTC | #1
On 18/01/13 12:23, Rajendra Nayak wrote:

Hi Rajendra,

> The current logic expects platforms to pass information about *both*
> secure and nonsecure PPI IRQ. Make arch_timer work even when either one
> of those are provided instead.

I'm afraid this patch doesn't really solve the problem. The DT binding
cannot express having only the virtual interrupt, or only the non-secure
physical interrupt. This patch only works in the case where you only
have the secure physical interrupt.

I think the real fix should be to make all the interrupts mandatory in
the DT (they do exist in the HW), and make the code less tolerant of
broken DTs.

Cheers,

	M.
Rajendra Nayak Jan. 18, 2013, 1:28 p.m. UTC | #2
On Friday 18 January 2013 06:43 PM, Marc Zyngier wrote:
> I think the real fix should be to make all the interrupts mandatory in
> the DT (they do exist in the HW), and make the code less tolerant of
> broken DTs.

Got it, thanks Mark. Time for me to go fix the OMAP5 broken DT then.
diff mbox

Patch

diff --git a/arch/arm/kernel/arch_timer.c b/arch/arm/kernel/arch_timer.c
index c8ef207..59e1e26 100644
--- a/arch/arm/kernel/arch_timer.c
+++ b/arch/arm/kernel/arch_timer.c
@@ -495,7 +495,7 @@  int __init arch_timer_of_register(void)
 	if (!arch_timer_ppi[VIRT_PPI]) {
 		arch_timer_use_virtual = false;
 
-		if (!arch_timer_ppi[PHYS_SECURE_PPI] ||
+		if (!arch_timer_ppi[PHYS_SECURE_PPI] &&
 		    !arch_timer_ppi[PHYS_NONSECURE_PPI]) {
 			pr_warn("arch_timer: No interrupt available, giving up\n");
 			return -EINVAL;