Commit db23954e authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'irq-core-2026-04-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull core irq updates from Thomas Gleixner:

 - Invoke add_interrupt_randomness() in handle_percpu_devid_irq() and
   cleanup the workaround in the Hyper-V driver, which would now invoke
   it twice on ARM64. Removing it from the driver requires to add it to
   the x86 system vector entry point

 - Remove the pointles cpu_read_lock() around reading CPU possible mask,
   which is read only after init

 - Add documentation for the interaction between device tree bindings
   and the interrupt type defines in irq.h

 - Delete stale defines in the matrix allocator and the equivalent in
   loongarch

* tag 'irq-core-2026-04-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  Drivers: hv: Move add_interrupt_randomness() to hypervisor callback sysvec
  genirq/chip: Invoke add_interrupt_randomness() in handle_percpu_devid_irq()
  genirq/affinity: Remove cpus_read_lock() while reading cpu_possible_mask
  genirq/matrix, LoongArch: Delete IRQ_MATRIX_BITS leftovers
  genirq: Document interaction between <linux/irq.h> and DT binding defines
parents 2ad332b0 e8be82c2
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ void spurious_interrupt(void);
 */
#define NR_VECTORS		256
#define NR_LEGACY_VECTORS	16
#define IRQ_MATRIX_BITS		NR_VECTORS

#define AVEC_IRQ_SHIFT		4
#define AVEC_IRQ_BIT		8
+2 −0
Original line number Diff line number Diff line
@@ -161,6 +161,8 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_callback)
	if (vmbus_handler)
		vmbus_handler();

	add_interrupt_randomness(HYPERVISOR_CALLBACK_VECTOR);

	if (ms_hyperv.hints & HV_DEPRECATING_AEOI_RECOMMENDED)
		apic_eoi();

+0 −3
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/random.h>
#include <linux/cpuhotplug.h>
#include <linux/reboot.h>
#include <asm/mshyperv.h>
@@ -445,8 +444,6 @@ void mshv_isr(void)
		mb();
		if (msg->header.message_flags.msg_pending)
			hv_set_non_nested_msr(HV_MSR_EOM, 0);

		add_interrupt_randomness(mshv_sint_vector);
	} else {
		pr_warn_once("%s: unknown message type 0x%x\n", __func__,
			     msg->header.message_type);
+0 −3
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@
#include <linux/ptrace.h>
#include <linux/sysfb.h>
#include <linux/efi.h>
#include <linux/random.h>
#include <linux/kernel.h>
#include <linux/syscore_ops.h>
#include <linux/dma-map-ops.h>
@@ -1361,8 +1360,6 @@ static void __vmbus_isr(void)

	vmbus_message_sched(hv_cpu, hv_cpu->hyp_synic_message_page);
	vmbus_message_sched(hv_cpu, hv_cpu->para_synic_message_page);

	add_interrupt_randomness(vmbus_interrupt);
}

static DEFINE_PER_CPU(bool, vmbus_irq_pending);
+4 −0
Original line number Diff line number Diff line
@@ -35,6 +35,10 @@ enum irqchip_irq_state;
 *
 * Bits 0-7 are the same as the IRQF_* bits in linux/interrupt.h
 *
 * Note that the first 6 definitions are shadowed by C preprocessor definitions
 * in include/dt-bindings/interrupt-controller/irq.h.  This is not an issue, as
 * the actual values must be the same, due to being part of the stable DT ABI.
 *
 * IRQ_TYPE_NONE		- default, unspecified type
 * IRQ_TYPE_EDGE_RISING		- rising edge triggered
 * IRQ_TYPE_EDGE_FALLING	- falling edge triggered
Loading