Skip to content

Commit 49b245e

Browse files
committed
Merge tag 'gic-fixes-4.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent
Pull GIC fixes from Marc for 4.5-rc4: - Two fixes addressing cascaded GICv1/GICv2 (affinity setting, EOImode) - One fix addressing possible missed interrupts on GICv3
2 parents 1a485f4 + 1a1ebd5 commit 49b245e

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

arch/arm64/include/asm/arch_gicv3.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ static inline u64 gic_read_iar_common(void)
103103
u64 irqstat;
104104

105105
asm volatile("mrs_s %0, " __stringify(ICC_IAR1_EL1) : "=r" (irqstat));
106+
dsb(sy);
106107
return irqstat;
107108
}
108109

drivers/irqchip/irq-gic.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -384,9 +384,6 @@ static struct irq_chip gic_chip = {
384384
.irq_unmask = gic_unmask_irq,
385385
.irq_eoi = gic_eoi_irq,
386386
.irq_set_type = gic_set_type,
387-
#ifdef CONFIG_SMP
388-
.irq_set_affinity = gic_set_affinity,
389-
#endif
390387
.irq_get_irqchip_state = gic_irq_get_irqchip_state,
391388
.irq_set_irqchip_state = gic_irq_set_irqchip_state,
392389
.flags = IRQCHIP_SET_TYPE_MASKED |
@@ -400,9 +397,6 @@ static struct irq_chip gic_eoimode1_chip = {
400397
.irq_unmask = gic_unmask_irq,
401398
.irq_eoi = gic_eoimode1_eoi_irq,
402399
.irq_set_type = gic_set_type,
403-
#ifdef CONFIG_SMP
404-
.irq_set_affinity = gic_set_affinity,
405-
#endif
406400
.irq_get_irqchip_state = gic_irq_get_irqchip_state,
407401
.irq_set_irqchip_state = gic_irq_set_irqchip_state,
408402
.irq_set_vcpu_affinity = gic_irq_set_vcpu_affinity,
@@ -443,7 +437,7 @@ static void gic_cpu_if_up(struct gic_chip_data *gic)
443437
u32 bypass = 0;
444438
u32 mode = 0;
445439

446-
if (static_key_true(&supports_deactivate))
440+
if (gic == &gic_data[0] && static_key_true(&supports_deactivate))
447441
mode = GIC_CPU_CTRL_EOImodeNS;
448442

449443
/*
@@ -1039,6 +1033,11 @@ static void __init __gic_init_bases(unsigned int gic_nr, int irq_start,
10391033
gic->chip.name = kasprintf(GFP_KERNEL, "GIC-%d", gic_nr);
10401034
}
10411035

1036+
#ifdef CONFIG_SMP
1037+
if (gic_nr == 0)
1038+
gic->chip.irq_set_affinity = gic_set_affinity;
1039+
#endif
1040+
10421041
#ifdef CONFIG_GIC_NON_BANKED
10431042
if (percpu_offset) { /* Frankein-GIC without banked registers... */
10441043
unsigned int cpu;

0 commit comments

Comments
 (0)