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

Commit de934103 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

x86: Move ioapic_ids_setup to x86_init_ops



32bit and also the numaq code have special requirements on the
ioapic_id setup. Convert it to a x86_init_ops function and get rid
of the quirks and #ifdefs

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent f4848472
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -177,12 +177,13 @@ extern int setup_ioapic_entry(int apic, int irq,
			      int polarity, int vector, int pin);
extern void ioapic_write_entry(int apic, int pin,
			       struct IO_APIC_route_entry e);
extern void setup_ioapic_ids_from_mpc(void);
#else  /* !CONFIG_X86_IO_APIC */
#define io_apic_assign_pci_irqs 0
#define setup_ioapic_ids_from_mpc x86_init_noop
static const int timer_through_8259 = 0;
static inline void ioapic_init_mappings(void)	{ }
static inline void ioapic_insert_resources(void) { }

static inline void probe_nr_irqs_gsi(void)	{ }
#endif

+0 −1
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ struct x86_quirks {
	void (*mpc_oem_pci_bus)(struct mpc_bus *m);
	void (*smp_read_mpc_oem)(struct mpc_oemtable *oemtable,
				unsigned short oemsize);
	int (*setup_ioapic_ids)(void);
};

extern void x86_quirk_intr_init(void);
+2 −0
Original line number Diff line number Diff line
@@ -4,9 +4,11 @@
/**
 * struct x86_init_mpparse - platform specific mpparse ops
 * @mpc_record:			platform specific mpc record accounting
 * @setup_ioapic_ids:		platform specific ioapic id override
 */
struct x86_init_mpparse {
	void (*mpc_record)(unsigned int mode);
	void (*setup_ioapic_ids)(void);
};

/**
+4 −7
Original line number Diff line number Diff line
@@ -2014,7 +2014,7 @@ void disable_IO_APIC(void)
 * by Matt Domsch <Matt_Domsch@dell.com>  Tue Dec 21 12:25:05 CST 1999
 */

static void __init setup_ioapic_ids_from_mpc(void)
void __init setup_ioapic_ids_from_mpc(void)
{
	union IO_APIC_reg_00 reg_00;
	physid_mask_t phys_id_present_map;
@@ -2023,9 +2023,8 @@ static void __init setup_ioapic_ids_from_mpc(void)
	unsigned char old_id;
	unsigned long flags;

	if (x86_quirks->setup_ioapic_ids && x86_quirks->setup_ioapic_ids())
	if (acpi_ioapic)
		return;

	/*
	 * Don't check I/O APIC IDs for xAPIC systems.  They have
	 * no meaning without the serial APIC bus.
@@ -3061,10 +3060,8 @@ void __init setup_IO_APIC(void)
	/*
         * Set up IO-APIC IRQ routing.
         */
#ifdef CONFIG_X86_32
	if (!acpi_ioapic)
		setup_ioapic_ids_from_mpc();
#endif
	x86_init.mpparse.setup_ioapic_ids();

	sync_Arb_IDs();
	setup_IO_APIC_irqs();
	init_IO_APIC_traps();
+1 −7
Original line number Diff line number Diff line
@@ -262,12 +262,6 @@ static void __init
	}
}

static int __init numaq_setup_ioapic_ids(void)
{
	/* so can skip it */
	return 1;
}

static struct x86_quirks numaq_x86_quirks __initdata = {
	.arch_pre_time_init		= numaq_pre_time_init,
	.arch_time_init			= NULL,
@@ -280,7 +274,6 @@ static struct x86_quirks numaq_x86_quirks __initdata = {
	.mpc_oem_bus_info		= mpc_oem_bus_info,
	.mpc_oem_pci_bus		= mpc_oem_pci_bus,
	.smp_read_mpc_oem		= smp_read_mpc_oem,
	.setup_ioapic_ids		= numaq_setup_ioapic_ids,
};

static __init void early_check_numaq(void)
@@ -299,6 +292,7 @@ static __init void early_check_numaq(void)
	if (found_numaq) {
		x86_quirks = &numaq_x86_quirks;
		x86_init.mpparse.mpc_record = numaq_mpc_record;
		x86_init.mpparse.setup_ioapic_ids = x86_init_noop;
	}
}

Loading