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

Commit 4afc51a8 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by H. Peter Anvin
Browse files

x86, ioapic: Simplify probe_nr_irqs_gsi.



Use the global gsi_end value now that all ioapics have
valid gsi numbers instead of a combination of acpi_probe_gsi
and walking all of the ioapics and couting their number of
entries by hand if acpi_probe_gsi gave us an answer we did
not like.

Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
LKML-Reference: <1269936436-7039-13-git-send-email-ebiederm@xmission.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
parent d464207c
Loading
Loading
Loading
Loading
+0 −6
Original line number Original line Diff line number Diff line
@@ -105,12 +105,6 @@ extern void mp_config_acpi_legacy_irqs(void);
struct device;
struct device;
extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level,
extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level,
				 int active_high_low);
				 int active_high_low);
extern int acpi_probe_gsi(void);
#else /* !CONFIG_ACPI: */
static inline int acpi_probe_gsi(void)
{
	return 0;
}
#endif /* CONFIG_ACPI */
#endif /* CONFIG_ACPI */


#define PHYSID_ARRAY_SIZE	BITS_TO_LONGS(MAX_APICS)
#define PHYSID_ARRAY_SIZE	BITS_TO_LONGS(MAX_APICS)
+0 −23
Original line number Original line Diff line number Diff line
@@ -876,29 +876,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
extern int es7000_plat;
extern int es7000_plat;
#endif
#endif


int __init acpi_probe_gsi(void)
{
	int idx;
	int gsi;
	int max_gsi = 0;

	if (acpi_disabled)
		return 0;

	if (!acpi_ioapic)
		return 0;

	max_gsi = 0;
	for (idx = 0; idx < nr_ioapics; idx++) {
		gsi = mp_gsi_routing[idx].gsi_end;

		if (gsi > max_gsi)
			max_gsi = gsi;
	}

	return max_gsi + 1;
}

static void assign_to_mp_irq(struct mpc_intsrc *m,
static void assign_to_mp_irq(struct mpc_intsrc *m,
				    struct mpc_intsrc *mp_irq)
				    struct mpc_intsrc *mp_irq)
{
{
+3 −14
Original line number Original line Diff line number Diff line
@@ -3850,22 +3850,11 @@ int __init io_apic_get_redir_entries (int ioapic)


void __init probe_nr_irqs_gsi(void)
void __init probe_nr_irqs_gsi(void)
{
{
	int nr = 0;
	int nr;

	nr = acpi_probe_gsi();
	if (nr > nr_irqs_gsi) {
		nr_irqs_gsi = nr;
	} else {
		/* for acpi=off or acpi is not compiled in */
		int idx;

		nr = 0;
		for (idx = 0; idx < nr_ioapics; idx++)
			nr += io_apic_get_redir_entries(idx);


	nr = gsi_end + 1;
	if (nr > nr_irqs_gsi)
	if (nr > nr_irqs_gsi)
		nr_irqs_gsi = nr;
		nr_irqs_gsi = nr;
	}


	printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi);
	printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi);
}
}