mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 04:21:09 -04:00
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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -115,13 +115,10 @@ unsigned int irq_calc_affinity_vectors(unsigned int minvec, unsigned int maxvec,
|
||||
if (resv > minvec)
|
||||
return 0;
|
||||
|
||||
if (affd->calc_sets) {
|
||||
if (affd->calc_sets)
|
||||
set_vecs = maxvec - resv;
|
||||
} else {
|
||||
cpus_read_lock();
|
||||
else
|
||||
set_vecs = cpumask_weight(cpu_possible_mask);
|
||||
cpus_read_unlock();
|
||||
}
|
||||
|
||||
return resv + min(set_vecs, maxvec - resv);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/kernel_stat.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/random.h>
|
||||
|
||||
#include <trace/events/irq.h>
|
||||
|
||||
@@ -929,6 +930,8 @@ void handle_percpu_devid_irq(struct irq_desc *desc)
|
||||
enabled ? " and unmasked" : "", irq, cpu);
|
||||
}
|
||||
|
||||
add_interrupt_randomness(irq);
|
||||
|
||||
if (chip->irq_eoi)
|
||||
chip->irq_eoi(&desc->irq_data);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ struct irq_matrix {
|
||||
|
||||
/**
|
||||
* irq_alloc_matrix - Allocate a irq_matrix structure and initialize it
|
||||
* @matrix_bits: Number of matrix bits must be <= IRQ_MATRIX_BITS
|
||||
* @matrix_bits: Number of matrix bits
|
||||
* @alloc_start: From which bit the allocation search starts
|
||||
* @alloc_end: At which bit the allocation search ends, i.e first
|
||||
* invalid bit
|
||||
|
||||
Reference in New Issue
Block a user