Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5451ddc5 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

x86: ioapic: Use irq_data->state



Use the state information in irq_data. That avoids a radix-tree lookup
from apic_ack_level() and simplifies setup_ioapic_dest().

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent c60eaf25
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -2431,7 +2431,7 @@ static void ack_apic_level(struct irq_data *data)
	irq_complete_move(cfg);
#ifdef CONFIG_GENERIC_PENDING_IRQ
	/* If we are moving the irq we need to mask it */
	if (unlikely(irq_to_desc(irq)->status & IRQ_MOVE_PENDING)) {
	if (unlikely(irqd_is_setaffinity_pending(data))) {
		do_unmask_irq = 1;
		mask_ioapic(cfg);
	}
@@ -3822,8 +3822,8 @@ int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity)
void __init setup_ioapic_dest(void)
{
	int pin, ioapic, irq, irq_entry;
	struct irq_desc *desc;
	const struct cpumask *mask;
	struct irq_data *idata;

	if (skip_ioapic_setup == 1)
		return;
@@ -3838,21 +3838,20 @@ void __init setup_ioapic_dest(void)
		if ((ioapic > 0) && (irq > 16))
			continue;

		desc = irq_to_desc(irq);
		idata = irq_get_irq_data(irq);

		/*
		 * Honour affinities which have been set in early boot
		 */
		if (desc->status &
		    (IRQ_NO_BALANCING | IRQ_AFFINITY_SET))
			mask = desc->irq_data.affinity;
		if (!irqd_can_balance(idata) || irqd_affinity_was_set(idata))
			mask = idata->affinity;
		else
			mask = apic->target_cpus();

		if (intr_remapping_enabled)
			ir_ioapic_set_affinity(&desc->irq_data, mask, false);
			ir_ioapic_set_affinity(idata, mask, false);
		else
			ioapic_set_affinity(&desc->irq_data, mask, false);
			ioapic_set_affinity(idata, mask, false);
	}

}