IA64: Use early_parm to handle mvec_name and nomca
I'm not sure of the worthiness of this idea, so please consider it an RFC. Its key merits are: * Reuse existing infrastructure * Greatly tightens up the parsing of nomca * Greatly simplifies the parsing of machvec Addition cleanup (moving setup_mvec() to machvec.c) by Ken Chen. Signed-Off-By: Horms <horms@verge.net.au> Signed-Off-By: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
39e18de810
commit
a5b00bb4fe
2 changed files with 27 additions and 28 deletions
|
@ -14,7 +14,15 @@
|
|||
struct ia64_machine_vector ia64_mv;
|
||||
EXPORT_SYMBOL(ia64_mv);
|
||||
|
||||
static struct ia64_machine_vector *
|
||||
static __initdata const char *mvec_name;
|
||||
static __init int setup_mvec(char *s)
|
||||
{
|
||||
mvec_name = s;
|
||||
return 0;
|
||||
}
|
||||
early_param("machvec", setup_mvec);
|
||||
|
||||
static struct ia64_machine_vector * __init
|
||||
lookup_machvec (const char *name)
|
||||
{
|
||||
extern struct ia64_machine_vector machvec_start[];
|
||||
|
@ -33,10 +41,13 @@ machvec_init (const char *name)
|
|||
{
|
||||
struct ia64_machine_vector *mv;
|
||||
|
||||
if (!name)
|
||||
name = mvec_name ? mvec_name : acpi_get_sysname();
|
||||
mv = lookup_machvec(name);
|
||||
if (!mv) {
|
||||
panic("generic kernel failed to find machine vector for platform %s!", name);
|
||||
}
|
||||
if (!mv)
|
||||
panic("generic kernel failed to find machine vector for"
|
||||
" platform %s!", name);
|
||||
|
||||
ia64_mv = *mv;
|
||||
printk(KERN_INFO "booting generic kernel on platform %s\n", name);
|
||||
}
|
||||
|
|
|
@ -389,6 +389,14 @@ check_for_logical_procs (void)
|
|||
}
|
||||
#endif
|
||||
|
||||
static __initdata int nomca;
|
||||
static __init int setup_nomca(char *s)
|
||||
{
|
||||
nomca = 1;
|
||||
return 0;
|
||||
}
|
||||
early_param("nomca", setup_nomca);
|
||||
|
||||
void __init
|
||||
setup_arch (char **cmdline_p)
|
||||
{
|
||||
|
@ -402,35 +410,15 @@ setup_arch (char **cmdline_p)
|
|||
efi_init();
|
||||
io_port_init();
|
||||
|
||||
parse_early_param();
|
||||
|
||||
#ifdef CONFIG_IA64_GENERIC
|
||||
{
|
||||
const char *mvec_name = strstr (*cmdline_p, "machvec=");
|
||||
char str[64];
|
||||
|
||||
if (mvec_name) {
|
||||
const char *end;
|
||||
size_t len;
|
||||
|
||||
mvec_name += 8;
|
||||
end = strchr (mvec_name, ' ');
|
||||
if (end)
|
||||
len = end - mvec_name;
|
||||
else
|
||||
len = strlen (mvec_name);
|
||||
len = min(len, sizeof (str) - 1);
|
||||
strncpy (str, mvec_name, len);
|
||||
str[len] = '\0';
|
||||
mvec_name = str;
|
||||
} else
|
||||
mvec_name = acpi_get_sysname();
|
||||
machvec_init(mvec_name);
|
||||
}
|
||||
machvec_init(NULL);
|
||||
#endif
|
||||
|
||||
if (early_console_setup(*cmdline_p) == 0)
|
||||
mark_bsp_online();
|
||||
|
||||
parse_early_param();
|
||||
#ifdef CONFIG_ACPI
|
||||
/* Initialize the ACPI boot-time table parser */
|
||||
acpi_table_init();
|
||||
|
@ -493,7 +481,7 @@ setup_arch (char **cmdline_p)
|
|||
#endif
|
||||
|
||||
/* enable IA-64 Machine Check Abort Handling unless disabled */
|
||||
if (!strstr(saved_command_line, "nomca"))
|
||||
if (!nomca)
|
||||
ia64_mca_init();
|
||||
|
||||
platform_setup(cmdline_p);
|
||||
|
|
Loading…
Reference in a new issue