Commit d4a930a0 authored by Marc Zyngier's avatar Marc Zyngier
Browse files

Merge branch irq/plic-masking into irq/irqchip-next



* irq/plic-masking:
  : .
  : SiFive PLIC optimisations from Samuel Holland:
  :
  : "This series removes the spinlocks and cpumask operations from the PLIC
  : driver's hot path. As far as I know, using the priority to mask
  : interrupts is an intended usage and will work on all existing
  : implementations. [...]"
  : .
  irqchip/sifive-plic: Separate the enable and mask operations
  irqchip/sifive-plic: Make better use of the effective affinity mask
  PCI: hv: Take a const cpumask in hv_compose_msi_req_get_cpu()
  genirq: Provide an IRQ affinity mask in non-SMP configs
  genirq: Return a const cpumask from irq_data_get_affinity_mask
  genirq: Add and use an irq_data_update_affinity helper
  genirq: Refactor accessors to use irq_data_get_affinity_mask
  genirq: Drop redundant irq_init_effective_affinity
  genirq: GENERIC_IRQ_EFFECTIVE_AFF_MASK depends on SMP
  genirq: GENERIC_IRQ_IPI depends on SMP
  irqchip/mips-gic: Only register IPI domain when SMP is enabled

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parents 828f5602 a1706a1c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ int irq_select_affinity(unsigned int irq)
		cpu = (cpu < (NR_CPUS-1) ? cpu + 1 : 0);
	last_cpu = cpu;

	cpumask_copy(irq_data_get_affinity_mask(data), cpumask_of(cpu));
	irq_data_update_affinity(data, cpumask_of(cpu));
	chip->irq_set_affinity(data, cpumask_of(cpu), false);
	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ config ARCH_HIP04
	select HAVE_ARM_ARCH_TIMER
	select MCPM if SMP
	select MCPM_QUAD_CLUSTER if SMP
	select GENERIC_IRQ_EFFECTIVE_AFF_MASK
	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
	help
	  Support for Hisilicon HiP04 SoC family

+1 −1
Original line number Diff line number Diff line
@@ -834,7 +834,7 @@ iosapic_unregister_intr (unsigned int gsi)
	if (iosapic_intr_info[irq].count == 0) {
#ifdef CONFIG_SMP
		/* Clear affinity */
		cpumask_setall(irq_get_affinity_mask(irq));
		irq_data_update_affinity(irq_get_irq_data(irq), cpu_all_mask);
#endif
		/* Clear the interrupt information */
		iosapic_intr_info[irq].dest = 0;
+2 −2
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ static char irq_redir [NR_IRQS]; // = { [0 ... NR_IRQS-1] = 1 };
void set_irq_affinity_info (unsigned int irq, int hwid, int redir)
{
	if (irq < NR_IRQS) {
		cpumask_copy(irq_get_affinity_mask(irq),
		irq_data_update_affinity(irq_get_irq_data(irq),
					 cpumask_of(cpu_logical_id(hwid)));
		irq_redir[irq] = (char) (redir & 0xff);
	}
+2 −2
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ static int ia64_set_msi_irq_affinity(struct irq_data *idata,
	msg.data = data;

	pci_write_msi_msg(irq, &msg);
	cpumask_copy(irq_data_get_affinity_mask(idata), cpumask_of(cpu));
	irq_data_update_affinity(idata, cpumask_of(cpu));

	return 0;
}
@@ -132,7 +132,7 @@ static int dmar_msi_set_affinity(struct irq_data *data,
	msg.address_lo |= MSI_ADDR_DEST_ID_CPU(cpu_physical_id(cpu));

	dmar_msi_write(irq, &msg);
	cpumask_copy(irq_data_get_affinity_mask(data), mask);
	irq_data_update_affinity(data, mask);

	return 0;
}
Loading