Commit 4d0b8298 authored by Samuel Holland's avatar Samuel Holland Committed by Marc Zyngier
Browse files

genirq: Return a const cpumask from irq_data_get_affinity_mask



Now that the irq_data_update_affinity helper exists, enforce its use
by returning a a const cpumask from irq_data_get_affinity_mask.

Since the previous commit already updated places that needed to call
irq_data_update_affinity, this commit updates the remaining code that
either did not modify the cpumask or immediately passed the modified
mask to irq_set_affinity.

Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
Reviewed-by: default avatarMichael Kelley <mikelley@microsoft.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220701200056.46555-8-samuel@sholland.org
parent 073352e9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -263,7 +263,7 @@ static int next_cpu_for_irq(struct irq_data *data)

#ifdef CONFIG_SMP
	int cpu;
	struct cpumask *mask = irq_data_get_affinity_mask(data);
	const struct cpumask *mask = irq_data_get_affinity_mask(data);
	int weight = cpumask_weight(mask);
	struct octeon_ciu_chip_data *cd = irq_data_get_irq_chip_data(data);

@@ -758,7 +758,7 @@ static void octeon_irq_cpu_offline_ciu(struct irq_data *data)
{
	int cpu = smp_processor_id();
	cpumask_t new_affinity;
	struct cpumask *mask = irq_data_get_affinity_mask(data);
	const struct cpumask *mask = irq_data_get_affinity_mask(data);

	if (!cpumask_test_cpu(cpu, mask))
		return;
+4 −3
Original line number Diff line number Diff line
@@ -230,17 +230,18 @@ void migrate_irqs(void)
		struct irq_data *data = irq_get_irq_data(irq);

		if (irq_data_get_node(data) == cpu) {
			struct cpumask *mask = irq_data_get_affinity_mask(data);
			const struct cpumask *mask = irq_data_get_affinity_mask(data);
			unsigned int newcpu = cpumask_any_and(mask,
							      cpu_online_mask);
			if (newcpu >= nr_cpu_ids) {
				pr_info_ratelimited("IRQ%u no longer affine to CPU%u\n",
						    irq, cpu);

				cpumask_setall(mask);
			}
				irq_set_affinity(irq, cpu_all_mask);
			} else {
				irq_set_affinity(irq, mask);
			}
		}
	}
}
#endif
+1 −1
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ static void hv_irq_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
	struct pci_dev *dev;
	struct hv_interrupt_entry out_entry, *stored_entry;
	struct irq_cfg *cfg = irqd_cfg(data);
	cpumask_t *affinity;
	const cpumask_t *affinity;
	int cpu;
	u64 status;

+4 −3
Original line number Diff line number Diff line
@@ -169,7 +169,7 @@ void migrate_irqs(void)

	for_each_active_irq(i) {
		struct irq_data *data = irq_get_irq_data(i);
		struct cpumask *mask;
		const struct cpumask *mask;
		unsigned int newcpu;

		if (irqd_is_per_cpu(data))
@@ -185,9 +185,10 @@ void migrate_irqs(void)
			pr_info_ratelimited("IRQ%u no longer affine to CPU%u\n",
					    i, cpu);

			cpumask_setall(mask);
		}
			irq_set_affinity(i, cpu_all_mask);
		} else {
			irq_set_affinity(i, mask);
		}
	}
}
#endif /* CONFIG_HOTPLUG_CPU */
+1 −1
Original line number Diff line number Diff line
@@ -194,7 +194,7 @@ hyperv_root_ir_compose_msi_msg(struct irq_data *irq_data, struct msi_msg *msg)
	u32 vector;
	struct irq_cfg *cfg;
	int ioapic_id;
	struct cpumask *affinity;
	const struct cpumask *affinity;
	int cpu;
	struct hv_interrupt_entry entry;
	struct hyperv_root_ir_data *data = irq_data->chip_data;
Loading