diff options
Diffstat (limited to 'arch/x86/kernel/mpparse.c')
| -rw-r--r-- | arch/x86/kernel/mpparse.c | 34 | 
1 files changed, 17 insertions, 17 deletions
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index 70fd7e414c1..651c93b2886 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c @@ -17,6 +17,7 @@  #include <linux/acpi.h>  #include <linux/module.h>  #include <linux/smp.h> +#include <linux/pci.h>  #include <asm/mtrr.h>  #include <asm/mpspec.h> @@ -870,24 +871,17 @@ static  inline void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) {}  #endif /* CONFIG_X86_IO_APIC */ -static int check_slot(unsigned long mpc_new_phys, unsigned long mpc_new_length, -		      int count) +static int +check_slot(unsigned long mpc_new_phys, unsigned long mpc_new_length, int count)  { -	if (!mpc_new_phys) { -		pr_info("No spare slots, try to append...take your risk, " -			"new mpc_length %x\n", count); -	} else { -		if (count <= mpc_new_length) -			pr_info("No spare slots, try to append..., " -				"new mpc_length %x\n", count); -		else { -			pr_err("mpc_new_length %lx is too small\n", -				mpc_new_length); -			return -1; -		} +	int ret = 0; + +	if (!mpc_new_phys || count <= mpc_new_length) { +		WARN(1, "update_mptable: No spare slots (length: %x)\n", count); +		return -1;  	} -	return 0; +	return ret;  }  static int  __init replace_intsrc_all(struct mpc_table *mpc, @@ -946,7 +940,7 @@ static int  __init replace_intsrc_all(struct mpc_table *mpc,  		} else {  			struct mpc_intsrc *m = (struct mpc_intsrc *)mpt;  			count += sizeof(struct mpc_intsrc); -			if (!check_slot(mpc_new_phys, mpc_new_length, count)) +			if (check_slot(mpc_new_phys, mpc_new_length, count) < 0)  				goto out;  			assign_to_mpc_intsrc(&mp_irqs[i], m);  			mpc->length = count; @@ -963,11 +957,14 @@ out:  	return 0;  } -static int __initdata enable_update_mptable; +int enable_update_mptable;  static int __init update_mptable_setup(char *str)  {  	enable_update_mptable = 1; +#ifdef CONFIG_PCI +	pci_routeirq = 1; +#endif  	return 0;  }  early_param("update_mptable", update_mptable_setup); @@ -980,6 +977,9 @@ static int __initdata alloc_mptable;  static int __init parse_alloc_mptable_opt(char *p)  {  	enable_update_mptable = 1; +#ifdef CONFIG_PCI +	pci_routeirq = 1; +#endif  	alloc_mptable = 1;  	if (!p)  		return 0;  |