• M
    ARM: tegra: irq: fix buggy usage of irq_data irq field · 9a343b9e
    Marc Zyngier 提交于
    The crazy gic_arch_extn thing that Tegra uses contains multiple
    references to the irq field in struct irq_data, and uses this
    to directly poke hardware register.
    
    But irq is the *virtual* irq number, something that has nothing
    to do with the actual HW irq (stored in the hwirq field). And once
    we put the stacked domain code in action, the whole thing explodes,
    as these two values are *very* different:
    
    root@bacon-fat:~# cat /proc/interrupts
                CPU0       CPU1
     16:      25801       2075       GIC  29  twd
     17:          0          0       GIC  73  timer0
    112:          0          0      GPIO  58  c8000600.sdhci cd
    123:          0          0      GPIO  69  c8000200.sdhci cd
    279:       1126          0       GIC 122  serial
    281:          0          0       GIC  70  7000c000.i2c
    282:          0          0       GIC 116  7000c400.i2c
    283:          0          0       GIC 124  7000c500.i2c
    284:        300          0       GIC  85  7000d000.i2c
    [...]
    
    Just replacing all instances of irq with hwirq fixes the issue.
    Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
    Acked-by: NThierry Reding <treding@nvidia.com>
    Signed-off-by: NArnd Bergmann <arnd@arndb.de>
    9a343b9e
irq.c 6.9 KB