Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'irq_urgent_for_v6.13_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Borislav Petkov:

- Fix a /proc/interrupts formatting regression

- Have the BCM2836 interrupt controller enter power management states
properly

- Other fixlets

* tag 'irq_urgent_for_v6.13_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
irqchip/stm32mp-exti: CONFIG_STM32MP_EXTI should not default to y when compile-testing
genirq/proc: Add missing space separator back
irqchip/bcm2836: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND
irqchip/gic-v3: Fix irq_complete_ack() comment

+9 -5
+1 -1
drivers/irqchip/Kconfig
··· 415 config STM32MP_EXTI 416 tristate "STM32MP extended interrupts and event controller" 417 depends on (ARCH_STM32 && !ARM_SINGLE_ARMV7M) || COMPILE_TEST 418 - default y 419 select IRQ_DOMAIN_HIERARCHY 420 select GENERIC_IRQ_CHIP 421 help
··· 415 config STM32MP_EXTI 416 tristate "STM32MP extended interrupts and event controller" 417 depends on (ARCH_STM32 && !ARM_SINGLE_ARMV7M) || COMPILE_TEST 418 + default ARCH_STM32 && !ARM_SINGLE_ARMV7M 419 select IRQ_DOMAIN_HIERARCHY 420 select GENERIC_IRQ_CHIP 421 help
+3
drivers/irqchip/irq-bcm2836.c
··· 58 .name = "bcm2836-timer", 59 .irq_mask = bcm2836_arm_irqchip_mask_timer_irq, 60 .irq_unmask = bcm2836_arm_irqchip_unmask_timer_irq, 61 }; 62 63 static void bcm2836_arm_irqchip_mask_pmu_irq(struct irq_data *d) ··· 75 .name = "bcm2836-pmu", 76 .irq_mask = bcm2836_arm_irqchip_mask_pmu_irq, 77 .irq_unmask = bcm2836_arm_irqchip_unmask_pmu_irq, 78 }; 79 80 static void bcm2836_arm_irqchip_mask_gpu_irq(struct irq_data *d) ··· 90 .name = "bcm2836-gpu", 91 .irq_mask = bcm2836_arm_irqchip_mask_gpu_irq, 92 .irq_unmask = bcm2836_arm_irqchip_unmask_gpu_irq, 93 }; 94 95 static void bcm2836_arm_irqchip_dummy_op(struct irq_data *d)
··· 58 .name = "bcm2836-timer", 59 .irq_mask = bcm2836_arm_irqchip_mask_timer_irq, 60 .irq_unmask = bcm2836_arm_irqchip_unmask_timer_irq, 61 + .flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE, 62 }; 63 64 static void bcm2836_arm_irqchip_mask_pmu_irq(struct irq_data *d) ··· 74 .name = "bcm2836-pmu", 75 .irq_mask = bcm2836_arm_irqchip_mask_pmu_irq, 76 .irq_unmask = bcm2836_arm_irqchip_unmask_pmu_irq, 77 + .flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE, 78 }; 79 80 static void bcm2836_arm_irqchip_mask_gpu_irq(struct irq_data *d) ··· 88 .name = "bcm2836-gpu", 89 .irq_mask = bcm2836_arm_irqchip_mask_gpu_irq, 90 .irq_unmask = bcm2836_arm_irqchip_unmask_gpu_irq, 91 + .flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE, 92 }; 93 94 static void bcm2836_arm_irqchip_dummy_op(struct irq_data *d)
+1 -1
drivers/irqchip/irq-gic-v3.c
··· 817 * register state is not stale, as these may have been indirectly written 818 * *after* exception entry. 819 * 820 - * (2) Deactivate the interrupt when EOI mode 1 is in use. 821 */ 822 static inline void gic_complete_ack(u32 irqnr) 823 {
··· 817 * register state is not stale, as these may have been indirectly written 818 * *after* exception entry. 819 * 820 + * (2) Execute an interrupt priority drop when EOI mode 1 is in use. 821 */ 822 static inline void gic_complete_ack(u32 irqnr) 823 {
+4 -3
kernel/irq/proc.c
··· 501 502 seq_put_decimal_ull_width(p, " ", cnt, 10); 503 } 504 505 raw_spin_lock_irqsave(&desc->lock, flags); 506 if (desc->irq_data.chip) { 507 if (desc->irq_data.chip->irq_print_chip) 508 desc->irq_data.chip->irq_print_chip(&desc->irq_data, p); 509 else if (desc->irq_data.chip->name) 510 - seq_printf(p, " %8s", desc->irq_data.chip->name); 511 else 512 - seq_printf(p, " %8s", "-"); 513 } else { 514 - seq_printf(p, " %8s", "None"); 515 } 516 if (desc->irq_data.domain) 517 seq_printf(p, " %*lu", prec, desc->irq_data.hwirq);
··· 501 502 seq_put_decimal_ull_width(p, " ", cnt, 10); 503 } 504 + seq_putc(p, ' '); 505 506 raw_spin_lock_irqsave(&desc->lock, flags); 507 if (desc->irq_data.chip) { 508 if (desc->irq_data.chip->irq_print_chip) 509 desc->irq_data.chip->irq_print_chip(&desc->irq_data, p); 510 else if (desc->irq_data.chip->name) 511 + seq_printf(p, "%8s", desc->irq_data.chip->name); 512 else 513 + seq_printf(p, "%8s", "-"); 514 } else { 515 + seq_printf(p, "%8s", "None"); 516 } 517 if (desc->irq_data.domain) 518 seq_printf(p, " %*lu", prec, desc->irq_data.hwirq);