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

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

x86: Move pre_intr_init to x86_init_ops



Replace the quirk machinery by a x86_init_ops function which
defaults to the standard implementation. This is also a preparatory
patch for Moorestown support which needs to replace the default
init_ISA_irqs as well.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent b3f1b617
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -47,4 +47,6 @@ extern unsigned int do_IRQ(struct pt_regs *regs);
extern DECLARE_BITMAP(used_vectors, NR_VECTORS);
extern int vector_used_by_percpu_irq(unsigned int vector);

extern void init_ISA_irqs(void);

#endif /* _ASM_X86_IRQ_H */
+0 −1
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
struct x86_quirks {
	int (*arch_pre_time_init)(void);
	int (*arch_time_init)(void);
	int (*arch_pre_intr_init)(void);
	int (*arch_intr_init)(void);
	int (*arch_trap_init)(void);
};
+10 −0
Original line number Diff line number Diff line
@@ -43,6 +43,15 @@ struct x86_init_resources {
	char *(*memory_setup)(void);
};

/**
 * struct x86_init_irqs - platform specific interrupt setup
 * @pre_vector_init:		init code to run before interrupt vectors
 *				are set up.
 */
struct x86_init_irqs {
	void (*pre_vector_init)(void);
};

/**
 * struct x86_init_ops - functions for platform specific setup
 *
@@ -50,6 +59,7 @@ struct x86_init_resources {
struct x86_init_ops {
	struct x86_init_resources	resources;
	struct x86_init_mpparse		mpparse;
	struct x86_init_irqs		irqs;
};

extern struct x86_init_ops x86_init;
+0 −1
Original line number Diff line number Diff line
@@ -265,7 +265,6 @@ static void __init smp_read_mpc_oem(struct mpc_table *mpc)
static struct x86_quirks numaq_x86_quirks __initdata = {
	.arch_pre_time_init		= numaq_pre_time_init,
	.arch_time_init			= NULL,
	.arch_pre_intr_init		= NULL,
	.arch_intr_init			= NULL,
	.arch_trap_init			= NULL,
};
+2 −22
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ int vector_used_by_percpu_irq(unsigned int vector)
	return 0;
}

static void __init init_ISA_irqs(void)
void __init init_ISA_irqs(void)
{
	int i;

@@ -213,32 +213,12 @@ static void __init apic_intr_init(void)
#endif
}

/**
 * x86_quirk_pre_intr_init - initialisation prior to setting up interrupt vectors
 *
 * Description:
 *	Perform any necessary interrupt initialisation prior to setting up
 *	the "ordinary" interrupt call gates.  For legacy reasons, the ISA
 *	interrupts should be initialised here if the machine emulates a PC
 *	in any way.
 **/
static void __init x86_quirk_pre_intr_init(void)
{
#ifdef CONFIG_X86_32
	if (x86_quirks->arch_pre_intr_init) {
		if (x86_quirks->arch_pre_intr_init())
			return;
	}
#endif
	init_ISA_irqs();
}

void __init native_init_IRQ(void)
{
	int i;

	/* Execute any quirks before the call gates are initialised: */
	x86_quirk_pre_intr_init();
	x86_init.irqs.pre_vector_init();

	apic_intr_init();

Loading