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-2026-01-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull misc irqchip fixes from Ingo Molnar:

- Fix an endianness bug in the gic-v5 irqchip driver

- Revert a broken commit from the riscv-imsic irqchip driver

* tag 'irq-urgent-2026-01-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
Revert "irqchip/riscv-imsic: Embed the vector array in lpriv"
irqchip/gic-v5: Fix gicv5_its_map_event() ITTE read endianness

+10 -4
+1 -1
drivers/irqchip/irq-gic-v5-its.c
··· 849 849 850 850 itte = gicv5_its_device_get_itte_ref(its_dev, event_id); 851 851 852 - if (FIELD_GET(GICV5_ITTL2E_VALID, *itte)) 852 + if (FIELD_GET(GICV5_ITTL2E_VALID, le64_to_cpu(*itte))) 853 853 return -EEXIST; 854 854 855 855 itt_entry = FIELD_PREP(GICV5_ITTL2E_LPI_ID, lpi) |
+8 -2
drivers/irqchip/irq-riscv-imsic-state.c
··· 477 477 lpriv = per_cpu_ptr(imsic->lpriv, cpu); 478 478 479 479 bitmap_free(lpriv->dirty_bitmap); 480 + kfree(lpriv->vectors); 480 481 } 481 482 482 483 free_percpu(imsic->lpriv); ··· 491 490 int cpu, i; 492 491 493 492 /* Allocate per-CPU private state */ 494 - imsic->lpriv = __alloc_percpu(struct_size(imsic->lpriv, vectors, global->nr_ids + 1), 495 - __alignof__(*imsic->lpriv)); 493 + imsic->lpriv = alloc_percpu(typeof(*imsic->lpriv)); 496 494 if (!imsic->lpriv) 497 495 return -ENOMEM; 498 496 ··· 510 510 /* Setup lazy timer for synchronization */ 511 511 timer_setup(&lpriv->timer, imsic_local_timer_callback, TIMER_PINNED); 512 512 #endif 513 + 514 + /* Allocate vector array */ 515 + lpriv->vectors = kcalloc(global->nr_ids + 1, sizeof(*lpriv->vectors), 516 + GFP_KERNEL); 517 + if (!lpriv->vectors) 518 + goto fail_local_cleanup; 513 519 514 520 /* Setup vector array */ 515 521 for (i = 0; i <= global->nr_ids; i++) {
+1 -1
drivers/irqchip/irq-riscv-imsic-state.h
··· 40 40 #endif 41 41 42 42 /* Local vector table */ 43 - struct imsic_vector vectors[]; 43 + struct imsic_vector *vectors; 44 44 }; 45 45 46 46 struct imsic_priv {